今回は、Linuxのルーティングテーブルに対して、スタティック(静的)ルートを追加する方法をいくつかご紹介します。
と言うのも、場合によってはコマンドがなかったり、設定した結果が思うように返ってこないこともあるので、どのような状況にも対応できるように、知っていても損はないと思います。
スタティック(静的)ルートとは?
スタティックルートとは、管理者が宛先ネットワークへの最適なルートを手動で設定したルートのことで、ネットワークの状態に変化があった場合でも、他に有効な宛先ルートがあっても、自動的にそのルートに切り替わることはありません。
ルーティングについてはじめから解説。 スタティックルーティングとは - www.infraexpert.com |
設定内容の確認方法
ip
コマンドを利用して、ルーティングの設定内容を確認します。
ip r(route)
すると、このように表示されます。
default via 192.168.100.254 dev ens160 proto static metric 100
192.168.100.0/24 dev ens160 proto kernel scope link src 192.168.100.10 metric 100
192.168.100.0/24 via 192.168.100.254 dev ens160 proto static metric 101
上の2行はデフォルトで設定されているものですね。
3行目のルーティング設定例を見ると、以下のように設定されています。
- IPアドレス:192.168.100.0
- サブネット:255.255.255.0
- ゲートウェイ:192.168.100.254
- インターフェース:ens160
- メトリック:101
次に、以下のネットワークデバイスの情報を見てみましょう。
ip a
このように表示されるはずです。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
1: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:11:22:33:4a:5b brd ff:ff:ff:ff:ff:ff
inet 192.168.100.10/24 brd 192.168.100.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet6 ab12::cd34:ef56:ab78:cd90/64 scope link noprefixroute
valid_lft forever preferred_lft forever
これを見れば、IPアドレスとそれに紐付くインターフェースが確認できます。
一時的なスタティックルートの追加
スタティックルートの追加は、OSやネットワークサービスを再起動すると消えてしまう一時的な設定と、永続的(恒常的)に反映される2種類の設定方法があります。
ipコマンドを使う
基本的には、ip route add
コマンドで追加することができます。
ip route add [アドレス]/[サブネット] via [ゲートウェイ]
例)
ip route add 192.168.100.0/24 via 192.168.100.254
しかし、インターフェースが複数ある場合は、オプションを使用して明示的に指定することもできます。
ip route add [アドレス]/[サブネット] via [ゲートウェイ] dev [インターフェース]
例)
ip route add 192.168.100.0/24 via 192.168.100.254 dev ens160
もし前述した通り、メトリックも含めた設定内容の確認と同じ結果を望むのであれば、単純に頭にip route add
コマンドをつければ良いです。
ip route add 192.168.100.0/24 via 192.168.100.254 dev ens160 proto static metric 101
一時的に追加する場合は、この方法が最善だと思われます。
routeコマンドを使う
こちらも同じように、route add -net
コマンドで追加します。
REHL 7以降はroute
コマンドが非推奨になっていますので、どうしても使いたい場合はyum
で追加する必要があります。
route add -net [アドレス] netmask [サブネット] gw [ゲートウェイ]
例)
route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.100.254
route
コマンドには、メトリックを指定する方法がないようですが、インターフェースを指定するとこのようになります。
route add -net [アドレス] netmask [サブネット] gw [ゲートウェイ] [インターフェース]
例)
route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.100.254 ens160
ただし、メトリックは表示されませんので、意図する結果になっているか疑問です。
一時的な追加の注意点
著者が行った検証結果では、どちらもインターフェースやメトリックを指定しなくても意図した動きになりますが、ルーティングテーブルには表示されないので気持ち悪いです。
ip a
コマンドの結果のように、上から順にインターフェースを見ているのか、ゲートウェイから判断しているのか謎です。
なので上記のように、ip route add
コマンドを使って、全部指定する方法がベストだと思います。
永続的(恒常的)なスタティックルートの追加
前述の通り、永続的(恒常的)なスタティックルートの設定を追加するには、ネットワークの再起動が必要になりますが、一度設定すると消えることがないので、本来ならこちらの設定をお勧めします。
route設定ファイルを作成する
まずは、network-scripts
フォルダに移動します。
cd /etc/sysconfig/network-scripts/
その直下に、route-[インターフェース]
ファイルを作成します。
インターフェースは、ip a
で確認した通りです。
これまでの例で「route-ens160
」というファイル名になります。
vi route-ens160
書き方は以下の2パターンありますので、お好きな方で記述してください。
ただし、混在はできません。
書き方1
以下は、1つのルーティング設定を1行で書く方法です。
3つほど例を記載します。
192.168.100.0/24 via 192.168.100.254
172.16.100.0/24 via 192.168.100.254
10.10.100.0/24 via 192.168.100.254
・・・
非常にスッキリとして分かりやすいですね!
ちなみに、インターフェースはファイル名に書いてあるから指定しなくても大丈夫なんだと思います。(メトリックは…知らねw)
書き方2
次に、1つのルーティング設定を3行で書く方法です。
ADDRESS0=192.168.100.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.100.254
ADDRESS1=172.16.100.0
NETMASK1=255.255.255.0
GATEWAY1=192.168.100.254
ADDRESS2=10.10.100.0
NETMASK2=255.255.255.0
GATEWAY2=192.168.100.254
・・・
どちらも結果は同じですが、こちらは見づらいですね。
上記のように複数のルーティングを設定する場合は、必ず0から始まり、〜0、〜1、〜2…と追加するルールになっております。
反映させるには、下記のいずれかのコマンドでネットワークを再起動します。
systemctl restart network
または、
/etc/init.d/network restart
これでスタティックルートの設定は完了です。
再びip r
コマンドで確認してみてください。
nmcliコマンドを使う
最後にnmcli
コマンドでの追加方法です。
このコマンドを実行すると、上記と同じroute設定ファイルが書き方1で作成されます。
nmcli c m [インターフェース] +ipv4.routes "[アドレス]/[サブネット] [ゲートウェイ]" ipv4.route-metric [メトリック]
例)
nmcli c m ens160 +ipv4.routes "192.168.100.0/24 192.168.100.254" ipv4.route-metric 101
設定が完了したら、こちらもnmcli
コマンドでネットワークを再起動してあげます。
nmcli c down ens160; nmcli c up ens160
ちなみに、nmcli
コマンドでの確認方法もご紹介しておきます。
nmcli d show ens160
IP4.ROUTE[〜]
が追加されているはずです。
【余談】削除も同じ
一時的にスタティックルートを削除したい場合は、コマンドのadd
の部分をdel
に変更すると削除ができます。
永続的(恒常的)に削除したい場合は、route設定ファイルから設定を削除する必要があります。
The post RHEL 7でスタティック(静的)ルートを追加する4つの方法 first appeared on Minory.
- Original:https://minory.org/linux-static-route.html
- Source:Minory
- Author:管理者