RHELサーバで複数のネットワークインターフェース(NIC)にそれぞれデフォルトゲートウェイを設定する方法について3ステップで解説します。
※下記、図の「デフォルトゲートウェイ(GW)の設定が2つ」の設定を解説
特に、ネットワークインターフェースの設定が「keyfile」形式(RHEL9より採用)の場合、異なるネットワークセグメントに属する複数のインターフェースがあり、それぞれのセグメントを越えて通信を行う場合に非常に重要です。
片方のインターフェースにのみデフォルトゲートウェイを設定すると、もう片方のインターフェースは同セグメント内でしか通信できないという問題が発生します。
「ifcfg-xxx」形式でネットワーク設定する場合はこちらを参照ください。
■サーバAの通信可能なセグメント(範囲)
デフォルトゲートウェイ(GW)の設定が1つ
通信可能:
10.1.1.0/24
172.16.0.0/24
10.10.10.0/24
通信不可:
192.168.1.0/24
デフォルトゲートウェイ(GW)の設定が2つ
通信可能:
10.1.1.0/24
172.16.0.0/24
10.10.10.0/24
192.168.1.0/24
通信不可:
なし
ステップ1.ネットワークインターフェースの設定
それぞれのNICに対して基本的なIP設定を行います。
keyfileでデフォルトゲートウェイの設定を行いません。
※以下の設定では、デフォルトゲートウェイを指定しますが、never-default=trueとなっているため、この段階ではデフォルトゲートウェイは有効になりません。
※「gateway」と「never-default」の行を削除した状態と同様の設定となります。
■enp0s3.nmconnectionの設定
[connection]
id=enp0s3
uuid=YYYYY~
type=ethernet
interface-name=enp0s3
[ipv4]
method=manual
addresses=10.1.1.10/24
gateway=10.1.1.1
never-default=true
/etc/NetworkManager/system-connections/enp0s3.nmconnection
■enp0s8.nmconnectionの設定
[connection]
id=enp0s8
uuid=ZZZZZ~
type=ethernet
interface-name=enp0s8
[ipv4]
method=manual
addresses=10.10.10.10/24
gateway=10.10.10.1
never-default=true
/etc/NetworkManager/system-connections/enp0s8.nmconnection
■keyfileのネットワーク設定ファイルのサンプル
ステップ2.複数のデフォルトゲートウェイを永続的に設定する方法
複数のデフォルトゲートウェイを永続的に設定するために、カスタムスクリプトを作成します。
このスクリプトは、NetworkManagerがインターフェースを有効化した際に自動的に呼び出され、各インターフェースに適切なルーティングルールを設定します。
■ルーティングテーブルの追加
/etc/iproute2/rt_tablesファイルに新しいルーティングテーブルを追加します。
vi /etc/iproute2/rt_tables
以下の行を追加します:
100 rt2
200 rt3
■ルーティングルールのカスタムスクリプトの設定
vi /etc/NetworkManager/dispatcher.d/10-custom-routes.sh
スクリプトの内容:
#!/bin/bash
if [ "$2" == "up" ]; then
case "$1" in
enp0s3)
ip rule add from 10.1.1.0/24 table rt2
ip route add default via 10.1.1.1 dev enp0s3 table rt2
;;
enp0s8)
ip rule add from 10.10.10.0/24 table rt3
ip route add default via 10.10.10.1 dev enp0s8 table rt3
;;
esac
fi
スクリプトに実行権限を付与:
chmod +x /etc/NetworkManager/dispatcher.d/10-custom-routes.sh
「keyfile」形式でのネットワーク設定を実施した場合
「ifcfg-xxx」形式のように「NetworkManager-dispatcher-routing-rules」のインストールは不要です。
また、/etc/sysconfig/network-scripts/配下に「rule-enpXXX」と「route-enpXXX」ファイルを作成してルーティング設定はできません。
※「keyfile」形式ではファイルを読み込みされません。
ステップ3.デフォルトゲートウェイの確認方法
■ip rule listコマンド
現在設定されているルーティングポリシールールを一覧表示します。
ip rule list
■ip route list tableコマンド
特定のルーティングテーブルを表示します。
ip route list table main
ip route list table rt2
ip route list table rt3
■すべてのルーティングテーブルを表示
ip route list table all
---コマンド実行結果---
「netstat -rn」コマンドでは、main(ip rule listコマンドで確認)のルーティングテーブルのみが表示されます。
ポリシールーティングを使用している場合は、必ず「ip rule list」と「ip route list table」コマンドを使用してルーティングの確認を行ってください。
まとめ
以上の手順で、keyfile形式で設定された複数のネットワークインターフェースを持つRHELサーバに対して、各インターフェースにデフォルトゲートウェイを設定する方法を説明しました。
カスタムスクリプトを使用したポリシールーティングの設定により、柔軟なルーティングを実現し、ネットワークの冗長性と効率性を向上させることができます。
設定の際には、適切なルーティングルールを適用し、必要に応じて永続化することを忘れずに行ってください。
■まとめポイント
- 今回の設定方法は、RHEL9より採用された「keyfile」のネットワーク設定で有効
- 永続的に複数のデフォルトゲートウェイを設定する場合は
「rt_tables」ファイルと「/etc/NetworkManager/dispatcher.d/10-custom-routes.sh」のスクリプトを利用してルーティング設定を定義する
※「ifcfg-XXX」でネットワーク設定するときとルーティング設定方法は異なる - never-default=trueとするとkeyfileに「gateway」設定をしても有効にならない
- NetworkManager-dispatcher-routing-rulesパッケージのインストールは不要
※「ifcfg-XXX」でネットワーク設定するときは必要
コメント