Redhat Enterprise Linux8でルーティングを追加・永続化する方法をまとめました。
※RHEL8のルーティング設定に関して以下のRedHat公式サイトを参考にしています。
RHEL8のネットワーク設定保存場所
RHEL8では以下のディレクトリにネットワークの設定が保存されます。
/etc/sysconfig/network-scripts/
以下の手順で保存されているネットワークの設定を確認できます。
まずは以下のコマンドを実行します。
# cd /etc/sysconfig/network-scripts/
# ls -la
ls -laで確認したファイルに対してcatコマンドで中身を確認します。
コネクション名の確認
以下いずれかのコマンドでコネクション名を確認できます。
nmcli device
nmcli connection
追加したスタティックルートの確認
追加したスタティックルートは以下のコマンドで確認できます。
ip route show
netstat -nr
RHEL8にスタティックルートを永続的に設定する方法
RHEL8でスタティックルートを設定するには以下のコマンドを使用することができます。
nmcli connection modify connection_name ipv4.routes "ip[/prefix] [next_hop] [metric] [attribute=value] [attribute=value] ..."
ホストアドレス(特定の一意のIPアドレス)へのスタティックルート追加
上記のコマンドで、RHEL8でスタティックルートを追加するには以下のコマンドを使用します。
nmcli connection modify connection_name +ipv4.routes "<route>"
例えばenp0s8に対して192.168.10.1へのスタティックルートをゲートウェイ192.168.20.254で追加するには以下のコマンドを実行します。
nmcli connection modify enp0s8 +ipv4.routes "192.168.10.1 192.168.20.254"
ネットワークアドレス(特定の複数のIPアドレス)へのスタティックルート追加
ネットワークアドレスへのスタティックルートの永続的な設定も同様のコマンドで行います。例えばenp0s8に対して192.168.10.0/24(ネットワークアドレス)へのスタティックルートをゲートウェイ192.168.20.254で追加するには以下のコマンドを実行します。
nmcli connection modify enp0s8 +ipv4.routes "192.168.10.0/24 192.168.20.254"
追加したルーティング設定を反映させる
以下は追加したルーティング設定の反映例です。enp0s8は環境ごとに異なります。
# nmcli connection up enp0s8
RHEL8に設定したスタティックルートを永続的に削除する方法
RHEL8でスタティックルートを削除するには以下のコマンドを使用します。スタティックルートを追加した際の「ipv4」の前の記号を+(プラス)から-(マイナス)に変えます。
nmcli connection modify connection_name -ipv4.routes "<route>"
以下実行例です。
nmcli connection modify enp0s8 -ipv4.routes "192.168.10.1 192.168.20.254"
一時的にルーティング設定を追加する
以下のコマンドを実行することで一時的にルーティング設定を追加することができます。このやり方の場合、再起動など実施した場合に設定したルーティングが削除されます。
ip route add <宛先ネットワークアドレス>/<プレフィックス> via <ルータIPアドレス> dev <ネットワークデバイス名>
# ip route add 192.168.100.0/24 via 192.168.100.254 dev enp0s8
使用可能なオプション
以下のオプションを設定可能です。
このコマンドは、次のルート属性に対応します。
cwnd=n: パケット数で定義された輻輳ウィンドウ (CWND) サイズを設定します。
lock-cwnd=true|false: カーネルが CWND 値を更新できるかどうかを定義します。
lock-mtu=true|false: カーネルが MTU をパス MTU ディスカバリーに更新できるかどうかを定義します。
lock-window=true|false: カーネルが TCP パケットの最大ウィンドウサイズを更新できるかどうかを定義します。
mtu=n: 宛先へのパスに沿って使用する最大転送単位 (MTU) を設定します。
onlink=true|false: ネクストホップがどのインターフェイス接頭辞とも一致しない場合でも、このリンクに直接接続されるかどうかを定義します。
scope=n: IPv4 ルートの場合、この属性は、ルート 接頭辞によってカバーされる宛先の範囲を設定します。値を整数 (0〜255) として設定します。
src=address: ルート接頭辞の対象となる宛先にトラフィックを送信するときに優先する送信元アドレスを設定します。
table=table_id: ルートを追加するテーブルの ID を設定します。このパラメーターを省略すると、NetworkManager は main テーブルを使用します。
tos= <type_of_service_key> : サービスタイプ (TOS) キーを設定します。値を整数 (0〜255) として設定します。
type= <route_type> : ルートタイプを設定します。NetworkManager は、unicast、local、blackhole、unreachable、prevent、および throw ルートタイプをサポートします。デフォルトは unicast です。
window=n: これらの宛先にアドバタイズする TCP の最大ウィンドウサイズをバイト単位で設定します。
参照:https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/how-to-use-the-nmcli-command-to-configure-a-static-route_configuring-static-routes
RHEL9との違い
RHEL9でのルーティング設定のやり方は以下の記事でまとめています。