「静的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アドレスをすぐ確認できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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 # ネットワーク機能の有効/無効
connection は con、device は dev と入力しても動作します。トラブル時にまず確認すべきコマンドが
nmcli general status です。NetworkManagerが動いているか・インターネット到達性があるかを一目で把握できます。# NetworkManager全体の状態を確認する nmcli general status # 出力例(正常時) STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled
STATE が connected、CONNECTIVITY が full であれば正常です。現在のネットワーク状態を確認する
1. NIC名(インターフェース名)を確認する
nmcliのコマンドでは NIC名(インターフェース名)を頻繁に指定します。NIC名はサーバーや環境によって異なり、ens3・eth0・enp3s0 などさまざまです。作業前に 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 --
connected であれば正常に接続されています。disconnected や unavailable の場合は物理リンクやケーブルを確認してください。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.method が manual なら静的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
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
# 接続名にスペースがある場合は引用符で囲む 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 接続名 |
Linux DNS 設定の基本やLinux ポート確認の全コマンドも組み合わせると、ネットワークトラブルの切り分けがさらにスムーズになります。
ネットワーク設定を含めた、安定したサーバー運用の基礎を固めませんか?
nmcliによるネットワーク設定はサーバー運用の基礎の一つですが、ユーザー管理・ファイアウォール・ログ監視と合わせて体系的に身につけることで、現場で頼られる存在になれます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
<PR>手元に置いて学びを深める1冊
Linux教科書 LPICレベル1 Version5.0対応
nmcliなどLinuxネットワーク設定がLPIC試験範囲に含まれ、まず無料メルマガで学ぶのが第一歩。体系的な知識定着には手元に置きたい1冊。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 次のページへ:ausearchコマンドでLinuxの監査ログを検索・分析する方法|aureportでのレポート生成と実務活用も
- 前のページへ:blkidコマンドでブロックデバイスのUUIDとラベルを確認する方法|fstabへの応用まで
- この記事の属するカテゴリ:Linuxtips・ネットワーク管理コマンドへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます