サーバーOSをCentOS8からRocky Linux9に切り替えたのですが、ルーティングに関する仕様が変更されていましたので備忘録として設定方法を記載します。
CentOS8では、ネットワーク設定が/etc/sysconfig/network-scripts/にif-cfg形式で保存されていました。
ところがRHEL9では、設定ファイル保存場所が/etc/NetworkManager/system-connections/に変わり、ファイル記述形式もkeyfileフォーマットに一新されています。
keyfileの中身を見ると、以下の通り複雑化していますので手動作成は困難です。
# cd /etc/NetworkManager/system-connections # ls ens160.nmconnection # cat ens160.nmconnection [connection] id=ens160 uuid=3419124e-3315-3ae3-a141-3b2dd6fd1da1 type=ethernet autoconnect-priority=-999 interface-name=ens160 timestamp=1691814156 [ethernet] [ipv4] method=auto [ipv6] addr-gen-mode=eui64 method=auto [proxy]
またCentOS8までは、if-cfgファイルの書き換えでもルーティング設定は出来ていましたが、RHEL9ではif-cfgファイルがデフォルトで存在しなくなりました。
したがって、RHEL9のルーティング設定はnmcliコマンドを用いた設定が得策と思われますので、以下に手順を示します。
(手順1)ネットワークインタフェース情報を確認する
ネットワークデバイスのインタフェース名を調べるには「nmcli d」コマンドを使います。
nmcli dのdはデバイス(device)を示し、nmcli c のcはコネクション(connection)を示します。
nmcliコマンドの使い方は、Linuxであればどのバージョンであってもほぼ同じです。
[root@localhost]$ nmcli d DEVICE TYPE STATE CONNECTION ens160 ethernet 接続済み ens160 lo loopback 接続済み (外部) lo [root@localhost]$ nmcli c NAME UUID TYPE DEVICE ens160 3419124e-3315-3ae3-a141-3b2dd6fd1da1 ethernet ens160 lo 61275aa5-5ecb-4d10-9d27-54ea270a3c3b loopback lo
上述の例では、DEVICE名がens160、コネクション名がens160となります。
DEVICE名とコネクション名は、自動で付与されますので、特段の意識をしなくても大丈夫です。
(手順2)ルーティング情報を確認する
ルーティング情報は、「ip route」 と「netstat -nr」で表示することが出来ます。
[root@localhost system-connections]$ ip route default via 192.168.50.2 dev ens160 proto dhcp src 192.168.50.130 metric 100 192.168.50.0/24 dev ens160 proto kernel scope link src 192.168.50.130 metric 100 [root@localhost system-connections]$ netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default _gateway 0.0.0.0 UG 0 0 0 ens160 192.168.50.0 0.0.0.0 255.255.255.0 U 0 0 0 ens160
上述の例では、物理ネットワークインタフェースはens160の1つだけで、ルーティングは以下の設定になっています。
- IP address: DHCP(192.168.50.2)
- DHCP Server: 192.168.50.130(Windows上のVMware WorkstationのDHCPサーバーとなります)
(手順3)ルーティングテーブルを追加する
ルーティングテーブルの追加はnmcliコマンド(管理者権限)で行います。
以下のルーティング設定を行ってみます。
- ホッピングアドレス:192.168.10.0/24
- ネクストゲートウェイ:172.10.30.254
192.168.10.0のIPアドレスを、172.10.30.254のゲートウェイにルーティングする設定をいれます。
# nmcli conn mod eth0 +ipv4.routes "192.168.10.0/24 172.10.30.254"
Linuxは複数の物理NICインタフェースを積んでいても、defalt gatewayは1つのみとなりますので、2つ目以降のNICに対してgatewayを設定する場合は、static routeを記載する必要があります。
(手順4)ネットワーク設定を反映
設定反映方法はsystemctlでNetworkManagerを指定して行います。
ネットワーク設定を変更するときは、systemctl restartで設定反映が出来ない場合も多々あります。
その時はnmcliによるNICのdown/upを使うとうまくいきます。NICのdown/upでも操作していることは全く同じです。
CentOS8, RHEL9(Rocky Linux9) # systemctl restart NetworkManager systemctlでも変更されない場合は以下を実施 # nmcli con down <interface名> # nmcli con up <interface名>
NetworkManagerは、RHEL8(CentOS8)から変更されています。
CentOS7までの"systemctl restart network"ではネットワーク設定が変更できませんので、注意が必要です。
最後にルーティングテーブルを確認し、反映ができていることを確認し、pingで疎通確認が取れれば作業終了です。
root@localhost system-connections]$ netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.50.2 0.0.0.0 UG 0 0 0 ens160 172.10.30.254 0.0.0.0 255.255.255.255 UH 0 0 0 ens160 192.168.10.0 172.10.30.254 255.255.255.0 UG 0 0 0 ens160 192.168.50.0 0.0.0.0 255.255.255.0 U 0 0 0 ens160 [root@localhost system-connections]$ ip route default via 192.168.50.2 dev ens160 proto dhcp src 192.168.50.130 metric 100 172.10.30.254 dev ens160 proto static scope link metric 100 192.168.10.0/24 via 172.10.30.254 dev ens160 proto static metric 100 192.168.50.0/24 dev ens160 proto kernel scope link src 192.168.50.130 metric 100
注意事項
リモートデスクトップやSSHなどのネットワーク接続で設定している場合、nmcli con downをすると接続が切れ、設定にミスがあると再接続できなくなってしまいます。
nmcliでインタフェース再起動を行う場合は、必ず物理コンソールにアクセスできる環境で行うように心がけてください。