nmcliコマンドでネットワーク接続を設定する方法|静的IP・DHCP・接続追加・削除の手順も

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, ネットワーク管理コマンド > nmcliコマンドでネットワーク接続を設定する方法|静的IP・DHCP・接続追加・削除の手順も
「nmcliコマンドを打ったけど、オプションが多すぎて何をすればいいか分からない」
「静的IPを設定したいのに、変更が反映されない」

NetworkManagerをコマンドラインで操作する nmcli は、RHEL系・Ubuntu系問わず現代Linuxのネットワーク管理に欠かせないコマンドです。
ifconfigやnetstatが非推奨になった今、現場では nmcli が事実上の標準になっています。

この記事では、nmcliコマンドの基本的な使い方から、静的IP設定・DHCP切り替え・接続の追加と削除まで、実務でよく使う操作を体系的に解説します。
RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済みです。

この記事のポイント

・nmcli connection show でネットワーク接続を一覧確認できる
・静的IPはnmcli connection modifyで変更し、up/downで反映する
・接続の追加はnmcli connection add、削除はnmcli connection deleteで行う
・nmcli device status でNICの状態とIPアドレスをすぐ確認できる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

nmcliとは何か?ifconfigとの違い

nmcliは「Network Manager Command Line Interface」の略で、NetworkManagerデーモンをコマンドラインから操作するツールです。

従来の ifconfig・route・netstat コマンドは iproute2 パッケージの ip・ss コマンドに置き換わりましたが、設定の永続化まで担う nmcli はさらに上位の存在です。

ifconfig:アドレスを一時的に変更するだけ(再起動で消える)
ip addr add:同じく一時変更のみ
nmcli:設定ファイル(/etc/NetworkManager/system-connections/)に書き込み、再起動後も設定が残る

本番サーバーのネットワーク設定を変更するなら nmcli が正解です。
設定は /etc/NetworkManager/system-connections/接続名.nmconnection に保存されます。このファイルを直接編集することも可能ですが、nmcli を使うほうが確実です(直接編集後は nmcli connection reload が必要)。

nmcliの基本構文と主要サブコマンド

nmcliの基本構文は次のとおりです。

# 基本構文 nmcli [オプション] サブコマンド [サブコマンドの操作] [引数] # 主要なサブコマンド nmcli general # 全体のステータス確認 nmcli connection # 接続プロファイルの管理 nmcli device # ネットワークデバイス(NIC)の管理 nmcli networking # ネットワーク機能の有効/無効

サブコマンドは省略形が使えます。connectioncondevicedev と入力しても動作します。

トラブル時にまず確認すべきコマンドが nmcli general status です。NetworkManagerが動いているか・インターネット到達性があるかを一目で把握できます。

# NetworkManager全体の状態を確認する nmcli general status # 出力例(正常時) STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled

STATEconnectedCONNECTIVITYfull であれば正常です。

現在のネットワーク状態を確認する

1. NIC名(インターフェース名)を確認する

nmcliのコマンドでは NIC名(インターフェース名)を頻繁に指定します。NIC名はサーバーや環境によって異なり、ens3eth0enp3s0 などさまざまです。作業前に ip link show で実際のNIC名を確認してください。

# NIC名(インターフェース名)を確認する ip link show # 出力例 1: lo: mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens3: mtu 1500 qdisc fq_codel state UP link/ether fa:16:3e:4a:8b:c2 brd ff:ff:ff:ff:ff:ff

上記の例では ens3 がイーサネットNICです。以降の手順ではこのNIC名を使います。

2. デバイスの状態を確認する

まず現在のNICとIPアドレスを確認します。

# デバイス一覧と状態を表示 nmcli device status # または省略形 nmcli dev status

実サーバーでの出力例:

DEVICE TYPE STATE CONNECTION ens3 ethernet connected ens3 lo loopback unmanaged --

STATE が connected であれば正常に接続されています。disconnectedunavailable の場合は物理リンクやケーブルを確認してください。

3. 接続プロファイルの一覧を確認する

# 接続プロファイルの一覧 nmcli connection show # または省略形 nmcli con show

実サーバーでの出力例:

NAME UUID TYPE DEVICE ens3 a1b2c3d4-e5f6-7890-abcd-ef1234567890 ethernet ens3

4. 特定の接続プロファイルの詳細を確認する

# 接続名を指定して詳細を表示 nmcli connection show ens3 # IPアドレス関連の設定だけ抽出 nmcli connection show ens3 | grep -E "ipv4\.(address|gateway|dns|method)"

実サーバーでの出力例:

ipv4.method: manual ipv4.dns: 192.168.1.1 ipv4.addresses: 192.168.xxx.yyy/24 ipv4.gateway: 192.168.xxx.1

ipv4.methodmanual なら静的IP、auto ならDHCPです。
Linux ポート確認の全コマンドと組み合わせると、ネットワーク状態の全体像を素早く把握できます。

静的IPアドレスを設定する

1. IPアドレス・ゲートウェイ・DNSを設定する

静的IPを設定する基本コマンドは次のとおりです。

# 静的IPアドレスを設定(サブネットマスク付き) nmcli connection modify ens3 ipv4.addresses 192.168.1.100/24 # デフォルトゲートウェイを設定 nmcli connection modify ens3 ipv4.gateway 192.168.1.1 # DNSサーバーを設定(複数ある場合はスペースで区切る) nmcli connection modify ens3 ipv4.dns "8.8.8.8 8.8.4.4" # 設定方式をDHCPから静的に変更 nmcli connection modify ens3 ipv4.method manual

2. 設定を反映させる

modify を実行しただけでは反映されません。接続を再起動して設定を有効にします。

# 接続をいったん切断してから再接続(設定反映) nmcli connection down ens3 && nmcli connection up ens3 # または再起動せずにNetworkManagerへ再読み込みを指示 nmcli connection reload nmcli connection up ens3

down を実行するとSSH接続が切断されます。リモート作業の場合は、down && up を1行で実行することで再接続できる可能性が高まります。

設定反映後は ip addr show で実際に割り当てられたIPアドレスを確認してください。

# 設定が反映されたか確認 ip addr show ens3 # 出力例(正常に設定されている場合) 2: ens3: mtu 1500 qdisc fq_codel state UP link/ether fa:16:3e:4a:8b:c2 brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global noprefixroute ens3 valid_lft forever preferred_lft forever # ルーティングテーブルも確認する ip route show

inet 192.168.1.100/24 の行が表示されれば設定は正常に反映されています。
Linux DNS 設定の基本も合わせて確認すると、DNSの設定が正しく反映されているか確認できます。

DHCPに切り替える

静的IPからDHCPへ変更したい場合は、method を auto に切り替えます。

# DHCPに変更 nmcli connection modify ens3 ipv4.method auto # 静的IP設定を削除(DHCPと静的の両方が残ると競合する) nmcli connection modify ens3 ipv4.addresses "" ipv4.gateway "" ipv4.dns "" # 設定を反映 nmcli connection down ens3 && nmcli connection up ens3

静的IPの設定を残したままmethodをautoにすると、DHCPで取得したアドレスと静的アドレスが両方有効になることがあります。切り替え時は必ず addresses・gateway・dns も空にしてください。

DHCP環境でもDNSサーバーだけ固定したい場合は、DHCPのDNS自動設定を無効にして手動DNSを追加します。

# DHCPのDNS自動設定を無効にして手動DNSを使う nmcli connection modify ens3 ipv4.ignore-auto-dns yes nmcli connection modify ens3 ipv4.dns "8.8.8.8 8.8.4.4" nmcli connection down ens3 && nmcli connection up ens3

新しい接続プロファイルを追加する

1. イーサネット接続を新規作成する

# DHCPでイーサネット接続を追加 nmcli connection add type ethernet con-name myconn ifname ens4 ipv4.method auto # 静的IPでイーサネット接続を追加(1コマンドで全オプションを指定) nmcli connection add \ type ethernet \ con-name myconn-static \ ifname ens4 \ ipv4.method manual \ ipv4.addresses 10.0.0.10/24 \ ipv4.gateway 10.0.0.1 \ ipv4.dns "10.0.0.1 8.8.8.8"

con-name は接続プロファイルの名前(任意)、ifname はNIC名(物理デバイス名)です。

2. 作成した接続を有効にする

# 接続を起動 nmcli connection up myconn-static # 設定が正しく反映されたか確認 nmcli connection show myconn-static | grep -E "ipv4\.(address|gateway|dns|method)"

3. 既存の接続に複数のIPアドレスを追加する

1枚のNICに複数のIPアドレスを割り当てたい場合は、+ipv4.addresses(+ プレフィックス付き)で既存設定に追記します。

# 既存の接続にIPアドレスを追加する(+ で追記モード) nmcli connection modify ens3 +ipv4.addresses 10.0.0.50/8 # 設定を反映 nmcli connection down ens3 && nmcli connection up ens3 # 割り当て結果を確認 ip addr show ens3

+ プレフィックスなしの ipv4.addresses で指定すると既存のIPが上書きされます。追加したい場合は必ず +ipv4.addresses を使ってください。削除する場合は -ipv4.addresses IPアドレス/マスク です。

接続プロファイルを削除する

# 接続プロファイルを削除 nmcli connection delete myconn-static # 接続中の場合は自動的に切断されてから削除される # 削除後に確認 nmcli connection show

削除した設定は /etc/NetworkManager/system-connections/ から該当の .nmconnection ファイルも削除されます。復元するにはバックアップが必要なので、削除前にコピーを取る習慣をつけましょう。

トラブルシュート・エラー対処

「Error: unknown connection」が出る時

接続名を間違えている可能性があります。nmcli connection show で正確な接続名を確認してください。

# 接続名の一覧を確認(NAME列が接続名) nmcli connection show

接続名にスペースが含まれている場合は、接続名を引用符で囲むか、UUID列の値を使うとより確実です。

# 接続名にスペースがある場合は引用符で囲む nmcli connection show "my connection name" # UUIDで指定することもできる nmcli connection modify a1b2c3d4-e5f6-7890-abcd-ef1234567890 ipv4.method manual

変更しても設定が反映されない時

NetworkManagerのサービスが停止している可能性があります。

# NetworkManagerのステータス確認 systemctl status NetworkManager # 停止していた場合は起動 systemctl start NetworkManager # 自動起動が無効になっていれば有効化 systemctl enable NetworkManager

静的IPを設定したのにDHCPのアドレスが残る時

前述のとおり、ipv4.method を manual に変更した後も古いDHCPリース情報が残ることがあります。

# デバイスの現在のアドレス一覧を確認 ip addr show ens3 # 不要なアドレスが残っている場合は一時削除(再起動で消える) ip addr del 192.168.1.50/24 dev ens3 # NetworkManagerを再起動して設定を確実に再読み込み systemctl restart NetworkManager

nmcliが「NetworkManager is not running」と言う時

# サービスを起動 systemctl start NetworkManager # 起動後に一般ステータス確認 nmcli general status

本記事のまとめ

nmcliコマンドの主要な操作をまとめます。
やりたいこと コマンド
NetworkManager全体の状態を確認する nmcli general status
NIC名(インターフェース名)を確認する ip link show
デバイスの状態を確認する nmcli device status
接続プロファイルを一覧表示する nmcli connection show
接続の詳細を確認する nmcli connection show 接続名
静的IPアドレスを設定する nmcli connection modify 接続名 ipv4.addresses IP/マスク
ゲートウェイを設定する nmcli connection modify 接続名 ipv4.gateway GW_IP
DNSサーバーを設定する nmcli connection modify 接続名 ipv4.dns "DNS1 DNS2"
静的IP設定に切り替える nmcli connection modify 接続名 ipv4.method manual
DHCPに切り替える nmcli connection modify 接続名 ipv4.method auto
DHCP環境でDNSだけ固定する nmcli connection modify 接続名 ipv4.ignore-auto-dns yes
接続を再起動して設定を反映する nmcli connection down 接続名 && nmcli connection up 接続名
新しい接続プロファイルを追加する nmcli connection add type ethernet con-name 名前 ifname デバイス
IPアドレスを追加する(複数IP) nmcli connection modify 接続名 +ipv4.addresses IP/マスク
接続プロファイルを削除する nmcli connection delete 接続名
nmcliは最初に覚えるオプションが多く感じますが、「show(確認)→ modify(変更)→ down/up(反映)」の3ステップを身につけるだけで、現場の大半のネットワーク作業をこなせるようになります。
Linux DNS 設定の基本Linux ポート確認の全コマンドも組み合わせると、ネットワークトラブルの切り分けがさらにスムーズになります。

ネットワーク設定を含めた、安定したサーバー運用の基礎を固めませんか?

nmcliによるネットワーク設定はサーバー運用の基礎の一つですが、ユーザー管理・ファイアウォール・ログ監視と合わせて体系的に身につけることで、現場で頼られる存在になれます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

<PR>手元に置いて学びを深める1冊

Linux教科書 LPICレベル1 Version5.0対応

nmcliなどLinuxネットワーク設定がLPIC試験範囲に含まれ、まず無料メルマガで学ぶのが第一歩。体系的な知識定着には手元に置きたい1冊。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。