スタティックルートを追加する。
環境
内容
nmcliコマンドを使って、スタティックルートを設定する手順をまとめます。
ネットワーク設定は以下のようになっているとします。
Device | Connection | IP |
---|---|---|
enp0s3 | enp0s3 | 10.0.2.15/24 |
enp0s8 | System enp0s8 | 192.168.33.101/24 |
enp0s9 | System enp0s9 | 192.168.34.101/24 |
# nmcli enp0s3: connected to enp0s3 "Intel 82540EM Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)" ethernet (e1000), 08:00:27:11:AD:D2, hw, mtu 1500 ip4 default inet4 10.0.2.15/24 inet6 fe80::d927:d646:dfa1:fcbb/64 enp0s8: connected to System enp0s8 "Intel 82540EM Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)" ethernet (e1000), 08:00:27:B6:92:7D, hw, mtu 1500 inet4 192.168.33.101/24 inet6 fe80::a00:27ff:feb6:927d/64 enp0s9: connected to System enp0s9 "Intel 82540EM Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)" ethernet (e1000), 08:00:27:39:D9:95, hw, mtu 1500 inet4 192.168.34.101/24 inet6 fe80::a00:27ff:fe39:d995/64 lo: unmanaged "lo" loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536 DNS configuration: servers: 10.0.2.3 domains: example.com interface: enp0s3 Use "nmcli device show" to get complete information about known devices and "nmcli connection show" to get an overview on active connection profiles. Consult nmcli(1) and nmcli-examples(5) manual pages for complete usage details.
今回、以下のようなルーティングを追加してみます。
宛先 | ゲートウェイ |
---|---|
192.168.100.0/24 | 192.168.33.254 |
192.168.200.0/24 | 192.168.33.254 |
事前確認
ルーティング
まず、現状のルーティングテーブルを確認します。
# ip route default via 10.0.2.2 dev enp0s3 proto static metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 192.168.33.0/24 dev enp0s8 proto kernel scope link src 192.168.33.101 metric 100 192.168.34.0/24 dev enp0s9 proto kernel scope link src 192.168.34.101 metric 100
ディフォルトゲートウェイ以外、スタティックルートは存在していな状態です。
設定ファイル
設定ファイルの作成状況も確認しておきます。
スタティックルートに関する設定ファイルは存在していません。
# ls -l /etc/sysconfig/network-scripts/route-* ※何も表示されない※
ルーティングの追加
それでは、ルーティングの設定を追加してみます。
今回は、「192.168.100.0/24」宛の通信を「192.168.33.254」へルーティングするので、インタフェース「enp0s8」に紐づく設定として追加する必要があります。
ルーティングを追加する際のnmcliコマンドは、以下のような書式となります。
nmcli connection modify Connection名 ipv4.routes "宛先アドレス ゲートウェイ"
ただ、nmcliコマンドでの設定は即時反映されませんので、注意が必要です。
nmcliコマンドで設定を行った後、設定反映するのを忘れないようにしましょう。
実際にコマンドを実行すると、以下のような感じになります。
設定ファイルは、自動的に作成されていましたが、ルーティングテーブルには反映されていない状態です。
# nmcli connection modify "System enp0s8" ipv4.routes "192.168.100.0/24 192.168.33.254" # ls -l /etc/sysconfig/network-scripts/route-* -rw-r--r--. 1 root root 70 Jun 15 02:32 /etc/sysconfig/network-scripts/route-enp0s8 # cat /etc/sysconfig/network-scripts/route-enp0s8 ADDRESS0=192.168.100.0 NETMASK0=255.255.255.0 GATEWAY0=192.168.33.254 # ip route default via 10.0.2.2 dev enp0s3 proto static metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 192.168.33.0/24 dev enp0s8 proto kernel scope link src 192.168.33.101 metric 100 192.168.34.0/24 dev enp0s9 proto kernel scope link src 192.168.34.101 metric 100
ルーティング設定を反映する。
この状態から、ルーティング設定を反映にするには2つの方法があります。
1つはNICの再起動、もう一つは ipコマンドによる即時反映です。
順番に見ていきましょう。
NICの再起動
今回、ルーティングを設定したNIC(Connection)を再起動することで、ルーティング設定が読み込まれます。
# nmcli connection down "System enp0s8" Connection 'System enp0s8' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2) # nmcli connection up "System enp0s8" Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4) # ip route default via 10.0.2.2 dev enp0s3 proto static metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 192.168.33.0/24 dev enp0s8 proto kernel scope link src 192.168.33.101 metric 100 192.168.34.0/24 dev enp0s9 proto kernel scope link src 192.168.34.101 metric 100 192.168.100.0/24 via 192.168.33.254 dev enp0s8 proto static metric 100
こちらの方法だと、再起動の際にネットワークの接続が切れてしまいます。
サービストラフィックが流れているような環境では、注意が必要です。
ただ、設定ファイルから読み込んで設定されるため、サーバが再起動した際に正しく設定されるのかの確認にもなります。
可能であればこちらの方法で反映するほうがいいと思います。
ipコマンドによる即時反映
通信が切れてしまうのは許容できない、といった場合には、ipコマンドで即時反映することもできます。
コマンドは以下のような感じになります。
実際にコマンドを実行してみましょう。
nmcliコマンドでルーティングを追加してから、NICを再起動していない想定となります。
# ip route default via 10.0.2.2 dev enp0s3 proto static metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 192.168.33.0/24 dev enp0s8 proto kernel scope link src 192.168.33.101 metric 100 192.168.34.0/24 dev enp0s9 proto kernel scope link src 192.168.34.101 metric 100 # ip route add 192.168.100.0/24 via 192.168.33.254 dev enp0s8 # ip route default via 10.0.2.2 dev enp0s3 proto static metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 192.168.33.0/24 dev enp0s8 proto kernel scope link src 192.168.33.101 metric 100 192.168.34.0/24 dev enp0s9 proto kernel scope link src 192.168.34.101 metric 100 192.168.100.0/24 via 192.168.33.254 dev enp0s8 proto static metric 100
ルーティングの追加(2つ目)
1つのNIC(Connection)に複数のルーティングを設定する場合は、少し注意が必要です。
1つ目のルーティングを追加した際と同じコマンドを使うと、2つ目のルーティングのみが有効になり、元のルーティングは上書きされてしまいます。
試してみましょう。
1つ目と同じコマンドで宛先アドレスだけを変えて実行してみると、元の設定(192.168.200.0/24 192.168.33.254)が消えて新しいものだけが残っている状態になります。
NICを再起動してみても、当然ながらルーティングは新しいほうの1つしか存在しません。
# nmcli connection modify "System enp0s8" ipv4.routes "192.168.200.0/24 192.168.33.254" # cat /etc/sysconfig/network-scripts/route-enp0s8 ADDRESS0=192.168.200.0 NETMASK0=255.255.255.0 GATEWAY0=192.168.33.254 # nmcli connection down "System enp0s8" Connection 'System enp0s8' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2) # nmcli connection up "System enp0s8" Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4) # ip route default via 10.0.2.2 dev enp0s3 proto static metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 192.168.33.0/24 dev enp0s8 proto kernel scope link src 192.168.33.101 metric 100 192.168.34.0/24 dev enp0s9 proto kernel scope link src 192.168.34.101 metric 100 192.168.200.0/24 via 192.168.33.254 dev enp0s8 proto static metric 100
設定を上書きすることなく、追加するには、引数に付与する設定項目の前に「+」を付けます。
具体的には、以下のようになります。
nmcli connection modify "System enp0s8" +ipv4.routes "192.168.200.0/24 192.168.33.254"
コマンドを実行すると、こんな感じです。
ルーティングが2つ、ちゃんと設定されていますね。
# nmcli connection modify "System enp0s8" +ipv4.routes "192.168.200.0/24 192.168.33.254" # cat /etc/sysconfig/network-scripts/route-enp0s8 ADDRESS0=192.168.100.0 NETMASK0=255.255.255.0 GATEWAY0=192.168.33.254 ADDRESS1=192.168.200.0 NETMASK1=255.255.255.0 GATEWAY1=192.168.33.254 # nmcli connection down "System enp0s8" Connection 'System enp0s8' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2) # nmcli connection up "System enp0s8" Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4) # ip route default via 10.0.2.2 dev enp0s3 proto static metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 192.168.33.0/24 dev enp0s8 proto kernel scope link src 192.168.33.101 metric 100 192.168.34.0/24 dev enp0s9 proto kernel scope link src 192.168.34.101 metric 100 192.168.100.0/24 via 192.168.33.254 dev enp0s8 proto static metric 100 192.168.200.0/24 via 192.168.33.254 dev enp0s8 proto static metric 100
反対に、複数の設定の中から1つだけ消したい場合は、「-」を付けます。
こんな感じです。
nmcli connection modify "System enp0s8" -ipv4.routes "192.168.200.0/24 192.168.33.254"
実際に試してみると、以下のような感じになります。
192.168.200.0/24に関するルーティングが設定ファイルから消えています。
# nmcli connection modify "System enp0s8" -ipv4.routes "192.168.200.0/24 192.168.33.254" # cat /etc/sysconfig/network-scripts/route-enp0s8 ADDRESS0=192.168.100.0 NETMASK0=255.255.255.0 GATEWAY0=192.168.33.254