RHELサーバで複数のネットワークインターフェース(NIC)にそれぞれデフォルトゲートウェイを設定する方法について4ステップで解説します。
※下記、図の「デフォルトゲートウェイ(GW)の設定が2つ」の設定を解説
この設定は、異なるネットワークセグメントに属する複数のインターフェースがあり、それぞれのセグメントを越えて通信を行う場合に非常に重要です。
片方のインターフェースにのみデフォルトゲートウェイを設定すると、もう片方のインターフェースは同セグメント内でしか通信できないという問題が発生します。
「keyfile」形式でネットワーク設定する場合はこちらを参照くだい
■サーバ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設定を行います。
ifcfgファイルでデフォルトゲートウェイの設定を行いません。
※以下の設定では、デフォルトゲートウェイを指定しますが、DEFROUTE=noとなっているため、この段階ではデフォルトゲートウェイは有効になりません。
※「GATEWAY」と「DEFROUTE」の行を削除した状態と同様の設定となります。
■ifcfg-enp0s3の設定
DEVICE=enp0s3
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.1.1.10
PREFIX=24
GATEWAY=10.1.1.1
DEFROUTE=no
/etc/sysconfig/network-scripts/ifcfg-enp0s3
■ifcfg-enp0s8 の設定
DEVICE=enp0s8
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.10.10.10
PREFIX=24
GATEWAY=10.10.10.1
DEFROUTE=no
/etc/sysconfig/network-scripts/ifcfg-enp0s8
ステップ2.複数のデフォルトゲートウェイを永続的に設定する方法
複数のデフォルトゲートウェイを永続的に設定するために、ポリシールーティングを使用します。
これにより、各インターフェースに適切なルーティングルールを設定できます。
■ルーティングテーブルの追加
/etc/iproute2/rt_tablesファイルに新しいルーティングテーブルを追加します。
vi /etc/iproute2/rt_tables
以下の行を追加します:
100 rt2
200 rt3
■ルーティングルールの設定
ルーティングルールを設定するために、以下のファイルを作成・編集します。
/etc/sysconfig/network-scripts/rule-enp0s3
from 10.1.1.0/24 table rt2
/etc/sysconfig/network-scripts/route-enp0s3
default via 10.1.1.1 dev enp0s3 table rt2
/etc/sysconfig/network-scripts/rule-enp0s8
from 10.10.10.0/24 table rt3
/etc/sysconfig/network-scripts/route-enp0s8
default via 10.10.10.1 dev enp0s8 table rt3
ステップ3.NetworkManager-dispatcher-routing-rulesのインストール
■インストール理由
サーバの起動時、NetWorkManagerサービス再起動時に
/etc/sysconfig/network-scripts/rule-enpXXX
/etc/sysconfig/network-scripts/route-enpXXX
に設定したルーティングルールが自動的に反映されるようになります。
このパッケージがインストールされていない場合、これらの設定は起動時に反映されません。
■インストール方法
dnf install NetworkManager-dispatcher-routing-rules
ステップ4.デフォルトゲートウェイの確認方法
■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」コマンドを使用してルーティングの確認を行ってください。
まとめ
以上の手順で、複数のネットワークインターフェースを持つRHELサーバに対して、各インターフェースにデフォルトゲートウェイを設定する方法を説明しました。
ポリシールーティングとカスタムスクリプトの設定により、柔軟なルーティングを実現し、ネットワークの冗長性と効率性を向上させることができます。
設定の際には、適切なルーティングルールを適用し、必要に応じて永続化することを忘れずに行ってください。
■まとめポイント
- DEFROUTE=noとするとifcfgファイルに「GATEWAY」設定をしても有効にならない
- 永続的に複数のデフォルトゲートウェイを設定する場合は
「rt_tables」ファイル・「rule-XXX」ファイルと「route-XXX」ファイルでルーティング設定を定義する - NetworkManager-dispatcher-routing-rulesパッケージのインストール
- 今回の設定方法は、「ifcfg-XXX」ファイルでのネットワーク設定で有効であり、keyfile設定では利用できません。
コメント