Linuxでipコマンドで設定したネットワークが再起動後に消えた日の話|ifconfigからnmcliへの移行で変わった設定の型

HOME > リナックスマスター.JP 公式ブログ > Linux学習ガイド > Linuxでipコマンドで設定したネットワークが再起動後に消えた日の話|ifconfigからnmcliへの移行で変わった設定の型
宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
「Linuxのネットワーク設定を ip addr add コマンドで変えたのに、サーバーを再起動したら元に戻っていた。何が違うんだろう?」

この疑問、セミナーで何度も受けてきました。そして私自身、CentOS 7 が本格普及し始めた時期にまったく同じ体験をしています。

この記事では、20年以上Linuxサーバーを運用してきた現役講師の立場から、SE時代から使い続けてきた ifconfig から ip コマンドへの移行で経験した「設定が再起動後に消える」落とし穴と、NetworkManager(nmcli)を使った永続化の方法を実体験をもとに解説します。RHEL 9 / AlmaLinux 9 / Ubuntu 22.04 LTS で動作確認済みです。

この記事のポイント

・ip コマンドの変更はメモリ上のみ ── 再起動で消えるのが正常な動作
・永続化するには nmcli(NetworkManager)か接続設定ファイルを使う
・ifconfig から ip コマンドへの対応関係を知るとスムーズに移行できる
・RHEL 9 系では nmcli connection modify が最も確実な永続化手段


Linuxでipコマンドで設定したネットワークが再起動後に消えた日の話|ifconfigからnmcliへの移行で変わった設定の型
「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

SE時代、私は ifconfig と route コマンドで「完結」していた

私が Linux エンジニアとして現場で仕事を始めた 2001 年当時、ネットワーク確認のコマンドといえば ifconfig と route の2本でした。

IPアドレスを確認したければ ifconfig eth0、デフォルトゲートウェイを見たければ route -n。設定変更も ifconfig eth0 192.168.1.10 netmask 255.255.255.0 と打てば即座に反映される。この手順が完全に身体に染みついていました。

この方程式が崩れたのは、2013 年に CentOS 7 の先行評価環境を触ったときです。

なんと ifconfig が動かない。

正確には、最小インストール状態では net-tools パッケージが入っておらず、ifconfig コマンド自体が存在しなかったのです。代わりに推奨されたのが ip コマンドでした。「また新しいコマンドを覚えなければいけないのか」という正直な気持ちと一緒に、ip コマンドを調べ始めたのを今でも覚えています。

最初に試したのは仮想マシンのIPアドレスを変更する作業でした。

# ip addr add 192.168.1.100/24 dev ens3 # ip route add default via 192.168.1.1

コマンドは通った。確認しても正しいIPが表示されていた。「ip コマンドも案外シンプルだな」と思い、そのまま作業を続けたのですが ── 翌朝、サーバーを再起動したら設定が消えていました。

ip コマンドとは何か ── ifconfig との根本的な違い

ip コマンドは iproute2 パッケージに含まれるネットワーク設定ツールで、RHEL 7 / CentOS 7 以降から標準となりました。ifconfig・route・arp コマンドの機能を統合した「後継コマンド群」です。

しかし、ifconfig と ip の最も重要な違いは機能の豊富さではありません。「設定の永続性」に対する設計思想の違いです。

・ifconfig での変更:カーネルのネットワーク設定をメモリ上で直接書き換える。再起動で消える。
・ip コマンドでの変更:同じく一時的。再起動で消える。

実は両者とも「再起動で消える」点は同じです。では、なぜ ifconfig 時代はそれほど問題にならなかったのか?

それは当時、設定ファイル(/etc/sysconfig/network-scripts/ifcfg-eth0 等)に永続設定を書く運用が徹底されていたからです。ベテランエンジニアはコマンドで一時設定してから設定ファイルに反映する手順を当然のように行っていました。

CentOS 7 以降では NetworkManager(nmcli)がネットワーク設定の管理を一元的に担うようになり、設定ファイルの場所も構造も変わりました。この変化を知らないまま ip コマンドだけを使うと、「設定したのに消えた」という現象に必ず出合うことになります。

ip コマンドの基本的な使い方 ── ifconfig との対応で理解する

1. ネットワークインターフェースの状態を確認する

最もよく使う確認操作です。

# ip addr show # ip addr show ens3 # ip link show # ip route show

ip addr show ens3 の実際の出力例(一部マスク)はこのようになります。

2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
link/ether 52:54:00:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.x.x/24 brd 192.168.x.255 scope global dynamic ens3

ifconfig に慣れた目には情報量が多く感じますが、inet 192.168.x.x/24 の行が現在のIPアドレスです。scope global は「このNIC全体で有効なアドレス」を意味します。

2. 一時的にIPアドレスを追加・削除する

テスト用やVIP用に一時的にIPを付与したいケースに使います。

# ip addr add 192.168.1.100/24 dev ens3 # ip addr show ens3 | grep inet inet 192.168.1.100/24 scope global secondary ens3 # ip addr del 192.168.1.100/24 dev ens3

注意:この設定は再起動で消えます。 これが私が最初に「消えた」と感じた正体です。

3. ルーティングを確認・追加する

# ip route show default via 192.168.1.1 dev ens3 proto dhcp metric 100 192.168.1.0/24 dev ens3 proto kernel scope link src 192.168.1.10 # ip route add default via 192.168.1.1

これも同様に一時的な変更です。再起動で消えます。

「再起動後に設定が消える」エラーが出た時の対処法

ip コマンドでの設定が再起動後に消える場合、解決策は「NetworkManager(nmcli)を使って永続化する」ことです。

問題1:nmcli を知らずに ip コマンドだけで設定しようとする

原因:ip コマンドはカーネルのネットワーク設定をメモリ上で変更するだけで、NetworkManager の設定データベースには書き込みません。

対処:現在の接続名(Connection Name)を確認してから nmcli で永続設定します。

# nmcli connection show NAME UUID TYPE DEVICE ens3 a1b2c3d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx ethernet ens3 # nmcli connection modify ens3 ipv4.addresses "192.168.1.100/24" # nmcli connection modify ens3 ipv4.gateway "192.168.1.1" # nmcli connection modify ens3 ipv4.dns "8.8.8.8" # nmcli connection modify ens3 ipv4.method manual # nmcli connection up ens3

nmcli connection up ens3 で接続を再起動すると設定が即時反映されます。この設定は再起動後も維持されます。

問題2:ip コマンドと nmcli を混在させて設定が二重になる

原因:ip コマンドで一時設定した状態で nmcli による永続設定を追加すると、NIC 上に複数のIPアドレスが乗ってしまい通信が不安定になる場合があります。

対処:設定前に ip addr del で一時アドレスを削除してから nmcli で設定し直すか、または最初から nmcli だけで操作する。

# ip addr del 192.168.1.100/24 dev ens3 # nmcli connection modify ens3 ipv4.addresses "192.168.1.100/24" # nmcli connection up ens3 # ip addr show ens3

【要注意】 ip コマンドと nmcli を混在させない、がネットワーク設定の現場鉄則です。これは私がセミナー受講生の実機で何度も見てきたトラブルです。

問題3:nmcli connection modify 後に反映されない

nmcli connection modify だけでは設定はデータベースに書き込まれますが、現在の接続には反映されません。必ず nmcli connection up 接続名 を実行するか、nmcli の変更を即時適用するオプションを使います。

# nmcli connection show ens3 | grep -E "ipv4\.(addresses|gateway|dns)" ipv4.addresses: 192.168.1.100/24 ipv4.gateway: 192.168.1.1 ipv4.dns: 8.8.8.8 # nmcli connection up ens3 Connection successfully activated (D-Bus active path: ...)

設定反映後は ping -c 3 ゲートウェイIP で疎通確認するのが習慣化のポイントです。

NetworkManager を理解してから変わった設定変更の「型」

ip コマンドは「現状確認」と「一時的なテスト」に使う。永続的な変更は必ず nmcli で行う。この認識が定着してから、私のネットワーク設定作業は格段に確実になりました。

以前の私は「ip addr add が通った = 設定完了」と判断していました。今は「nmcli connection show で意図した設定が出ている」「再起動後も ping が通る」まで確認して初めて設定完了と判断しています。

セミナーで3,100名以上を指導してきた中で気づいたことがあります。ip コマンドの使い方は正確に知っているのに、「なぜ再起動後に消えるのか」「永続化のために何が必要か」を理解していない受講生が多い。ifconfig から ip への移行は完了しているのに、設定の「一時性と永続性の区別」が曖昧なまま使っているケースです。

・ip コマンドの変更 = カーネルのネットワーク設定をメモリ上で変える(再起動で消える)
・nmcli / 設定ファイルの変更 = NetworkManager の設定データベースを更新する(再起動後も維持)

この2つを意識的に使い分けることが、ネットワーク設定ミスを防ぐ最も効果的な習慣です。特に本番サーバーのネットワーク変更作業では、「ip コマンドでテスト → 問題なければ nmcli で永続化 → 再起動して確認」の3ステップを型として守ることを強くお勧めします。

まとめ ── ifconfig から ip コマンドへの移行対応表

よく使うネットワーク操作を旧コマンドと ip コマンドで対比させてまとめます。
操作内容 ifconfig / route (旧) ip コマンド (現行)
インターフェース一覧確認 ifconfig -a ip addr show
特定 NIC の IP 確認 ifconfig eth0 ip addr show ens3
一時的に IP アドレスを追加 ifconfig eth0 192.168.1.10 netmask 255.255.255.0 ip addr add 192.168.1.10/24 dev ens3
デフォルト GW の確認 route -n ip route show
永続的な IP 設定(RHEL 9 系) ifcfg ファイルを直接編集 nmcli connection modify 接続名 ...
接続の再起動(設定反映) service network restart nmcli connection up 接続名
ip コマンドは「設定が消える欠陥品」ではなく、「一時的なネットワーク設定ツール」です。その性質を正しく理解した上で、永続化には nmcli を使う。この使い分けが習慣になれば、ネットワーク設定ミスの多くは防げます。

関連記事:
・LinuxのDNS設定方法|resolv.confとnmcliを使った設定と確認手順
・systemctlコマンドの使い方|chkconfigからの完全移行ガイド
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、

「Linuxサーバー構築入門マニュアル(図解60P)」を無料でプレゼントしています。ネットワーク設定の永続化を含む、サーバー構築から運用まで体系的に解説。3,100名以上が受け取ったマニュアルを今すぐ手に入れてください。

>> 無料マニュアルを受け取る(メルマガ登録)

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

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

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

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

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

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

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

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

この記事を書いた人

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

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

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