犬でも分かる犬でも分かるLinuxネットワーク設定(5):定義ファイルの修正

RHEL系のOSでネットワーク設定を最初から行うのであれば、nmcliコマンドを使ったほうが絶対に良いのですが、ちょっとした変更をするなら、設定ファイルを修正したほうが簡単なときもあります。今回は、設定ファイル(*.nmconnection)を修正してネットワーク設定を変更する方法を解説します。

ネットワークの設定ファイルはどこにある?

IPアドレスやデフォルトゲートウェイのようなネットワーク設定は、コネクション(という概念)に紐付けられて管理されています。コネクションに設定した情報は、RHEL系OSのバージョン9以降であれば、/etc/Network/Manager/system-connections/ 配下に「<コネクション名>.nmconnection」という名前で保存されています。
例えば、以下の図の仮想マシンは、3つのネットワークインターフェースを持っていて、それぞれに固定のIPアドレス(192.168.122.204, 192.168.1.204, 192.168.2.204 )が割り当てられているとします。

このとき、/etc/NetworkManager/system-connections/ 配下には、以下のファイルが存在しています。

# ls -l /etc/NetworkManager/system-connections/
合計 12
-rw-------. 1 root root 258 12月 15 17:21 enp1s0.nmconnection
-rw-------. 1 root root 287 12月 15 17:58 enp2s0.nmconnection
-rw-------. 1 root root 240 12月 15 18:10 enp3s0.nmconnection

ちなみに、RHEL系OSのバージョン8までは、上記のファイルではなく、/etc/sysconfig/network-scripts/ 配下の ifcfg-* ファイルとなります。

ネットワーク設定ファイルを修正してシステムに反映する

この例における enp2s0.nmconnection ファイルの中身は以下の通りとなっています。

[connection]
id=enp2s0
uuid=4b0e9bc8-b365-3d02-9404-ab74d02fb888
type=ethernet
autoconnect-priority=-999
interface-name=enp2s0
timestamp=1724550496

[ethernet]

[ipv4]
address1=192.168.1.204/24,192.168.1.1
dns=192.168.1.1
method=manual

[ipv6]
addr-gen-mode=eui64
method=ignore

[proxy]

今回のテーマに則して、ネットワーク設定ファイルを修正することで、enp2s0に設定したIPアドレス 192.168.1.204 を 192.168.1.203 に変更してみたいと思います。手順は以下の通りとなります。

① ネットワークデバイスを切断する

# nmcli device disconnect enp2s0
デバイス 'enp2s0' が正常に切断されました。

ここで指定する enp2s0 はコネクション名ではなく、デバイス名であることに注意してください(今回の例ではコネクション名とデバイス名が同じ)。デバイス名は nmcli connection show で確認して下さい。

② 設定ファイル enp2s0.nmconnection を修正する。
IPアドレスを192.168.1.203に変更するなら、以下の通りに修正します。

address1=192.168.1.203/24,192.168.1.1

③ 設定ファイルをロードする

# nmcli connection load /etc/NetworkManager/system-connections/enp2s0.nmconnection

④ ネットワークデバイスを再接続する

# nmcli device connect enp2s0
デバイス 'enp2s0' が '4b0e9bc8-b365-3d02-9404-ab74d02fb888' で正常にアクティベートされました。

ここで指定する enp2s0 もデバイス名です。
再接続の後、ip a show <デバイス名> を実行すると、IPアドレスが変わっていることが確認できます。

# ip a show enp2s0
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000     link/ether 52:54:00:f3:0a:88 brd ff:ff:ff:ff:ff:ff     inet 192.168.1.203/24 brd 192.168.1.255 scope global noprefixroute enp2s0

いろいろなパターンがある

方法1

上記の例は、以下の手順で実行しました。

① nmcli device disconnect <デバイス名> で切断
② <コネクション名>.nmconnection を修正
③ nmcli connection load <設定ファイル> で設定ファイルの内容を反映
④ nmcli device connect <デバイス名> で再接続

方法2

RHELのページでは④の代わりに、コネクションをupして再接続する方法が書かれています。この方法でももちろんOKでした。

① nmcli device disconnect <デバイス名> で切断
② <コネクション名>.nmconnection を修正
③ nmcli connection load <設定ファイル> で設定ファイルの内容を反映
④ nmcli connection up filename <設定ファイル> で再接続

方法3

①の切断、④の再接続をコネクションのdown, upで操作してもOKでした。

① nmcli connection down <コネクション名> で切断
② <コネクション名>.nmconnection を修正
③ nmcli connection load <設定ファイル> で設定ファイルの内容を反映
④ nmcli connection up <コネクション名> で再接続

方法4

③の設定ファイルの内容を反映するときに、全ての設定ファイルを反映する方法もあります。複数の設定ファイルを修正した場合は、こちらのほうが便利かもしれません。

③ nmcli connection reload で全ての設定ファイルの内容を反映

あとは、雑な方法ではありますが、②で設定ファイルを修正したあと、③④の代わりに、「systemctl restart NetworkManager」でネットワークマージャ自体を再起動する方法もあります。もっと雑な方法として、設定ファイルを修正して、①③④の代わりにシステムを再起動するという方法もあります(笑い)。当然、次に起動するときには、設定ファイルの通りでシステムのネットワーク設定が行われます。
まあ、もともと再起動の予定があるのなら、この方法は全然アリです。

ダメな方法

設定ファイルの内容を load または reload しただけでは、ネットワーク設定は変更されません(ip a で確認すると、変更内容が反映されていないことが分かります)。nmcli connection up または nmcli device connect の操作で接続を行うことで初めてシステムに反映されるので、この操作を忘れないようにしましょう。

それから、ネットワーク設定変更の操作の前には、nmcli connection down または nmcli device disconnect の操作で切断した状態にすることをお勧めします。
切断せずに、ネットワーク設定ファイルの修正、ネットワーク設定ファイルの反映(nmcli connection load)、ネットワークの接続(nmcli connection up) をしたときは、正常にシステムに反映することができました。しかし、
切断せずに、ネットワーク設定ファイルの修正、systemctl restart NetworkManager でネットワークマネージャを再起動、を行ったときに、コネクションに2つのIPアドレスが付いている変な状態になりました(笑)。

設定ファイルを修正してネットワーク設定を行うのはどんなとき?

初めにも書きましたが、ネットワーク設定を最初から行うのであれば、nmcliコマンドを使ったほうが絶対に良いです。なぜなら、設定ファイルに必要十分な記述を自動的に書き込んでくれますし、システム内で一意なコネクションID(uuid)も付けてくれます。

ネットワーク設定の一部を修正するなら、ネットワーク設定ファイルを修正するほうが楽な場合があります。楽というよりも、nmcliコマンドの文法を思い出すのが面倒なだけなんですけどね。。
後は、同じ構成のサーバが他にあって、IPアドレスだけ変更するようなケースなら、既存のサーバから設定ファイルをコピーしてきて、IPアドレスだけ変更するという操作のほうがミスなく設定ができます。コネクションIDは同じになりますが、同一システム内で重複がなければ問題はありません。

広告主へのリンク

オイラが今回のテストに使っているのは、高価なサーバではなくて、安価なミニPC MINISFORUM GK41 というマシンです。LANポートが2つ付いているので、PXEブートのテストにも便利です。


更に、このMINISFORUM GK41のUSBポートに以下のUSB-LAN変換アダプタを付けて、LANポートを合計3つにして運用しています。




このブログにおける関連リンク

犬でも分かるLinuxネットワーク
犬でも分かるLinuxネットワーク設定(1): nmcliコマンドの使い方
犬でも分かるLinuxネットワーク設定(2): ボンディング(bonding)
犬でも分かるLinuxネットワーク設定(3): 仮想ブリッジ
犬でも分かるLinuxネットワーク設定(4): ボンディング+仮想ブリッジ
犬でも分かるLinuxネットワーク設定(5):定義ファイルの修正
犬でも分かるLinuxネットワーク設定(6): ルーティングとNAT
犬でも分かるLinuxネットワーク設定(7):firewalldによるアクセス制限
犬でも分かるLinuxネットワーク設定(8):VLAN
犬でも分かるLinuxネットワーク設定(9):IPエイリアス
犬でも分かるLinuxネットワーク設定(10):outboundのアクセス制限
犬でも分かるLinuxネットワーク設定(11):NATポリシーにアクセス制限を設定する

コメント

タイトルとURLをコピーしました