第12章 代替ルートを定義するためのポリシーベースのルーティングの設定
デフォルトでは、RHEL のカーネルは、ルーティングテーブルを使用して宛先アドレスに基づいてネットワークパケットを転送する場所を決定します。ポリシーベースのルーティングにより、複雑なルーティングシナリオを設定できます。たとえば、送信元アドレス、パケットメタデータ、プロトコルなどのさまざまな基準に基づいてパケットをルーティングできます。
本セクションでは、NetworkManager を使用してポリシーベースのルーティングを設定する方法を説明します。
注記
NetworkManager を使用するシステムでは、
nmcli ユーティリティーのみがルーティングルールの設定と、特定のテーブルへのルートの割り当てをサポートします。
12.1. 特定のサブネットから異なるデフォルトゲートウェイへのトラフィックのルーティング リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、デフォルトで、デフォルトルートを使用して、すべてのトラフィックをインターネットプロバイダー A にルーティングするルーターとして RHEL を設定する方法を説明します。RHEL は、ポリシーベースのルーティングを使用して、内部ワークステーションのサブネットから受信したトラフィックをプロバイダー B にルーティングします。
この手順では、次のネットワークトポロジーを想定しています。
図12.1 接続のアクティブ化
前提条件
- この手順で設定する RHEL ルーターには、4 つのネットワークインターフェイスがあります。
enp7s0インターフェイスはプロバイダー A のネットワークに接続されています。プロバイダーのネットワークのゲートウェイ IP は198.51.100.2で、ネットワークは/30ネットワークマスクを使用します。enp1s0インターフェイスはプロバイダー B のネットワークに接続されています。プロバイダーのネットワークのゲートウェイ IP は192.0.2.2 で、ネットワークは/30ネットワークマスクを使用します。enp8s0インターフェイスは、内部ワークステーションで 10.0.0.0/24サブネットに接続されています。enp9s0インターフェイスは、会社のサーバーを使用して 203.0.113.0/24サブネットに接続されています。
- 内部ワークステーションのサブネット内のホストは、デフォルトゲートウェイとして
10.0.0.1を使用します。この手順では、この IP アドレスをルーターのenp8s0ネットワークインターフェイスに割り当てます。 - サーバーサブネット内のホストは、デフォルトゲートウェイとして
203.0.113.1を使用します。この手順では、この IP アドレスをルーターのenp9s0ネットワークインターフェイスに割り当てます。 firewalldサービスは有効でアクティブです(これがデフォルトです)。
手順
- プロバイダー A へのネットワークインターフェイスを設定します。
nmcli connection add type ethernet con-name Provider-A ifname enp7s0 ipv4.method manual ipv4.addresses 198.51.100.1/30 ipv4.gateway 198.51.100.2 ipv4.dns 198.51.100.200 connection.zone external
# nmcli connection add type ethernet con-name Provider-A ifname enp7s0 ipv4.method manual ipv4.addresses 198.51.100.1/30 ipv4.gateway 198.51.100.2 ipv4.dns 198.51.100.200 connection.zone externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow nmcli connection add コマンドは、NetworkManager 接続プロファイルを作成します。次のリストでは、コマンドのオプションを説明します。type ethernet: 接続タイプがイーサネットであることを定義します。con-name connection_name: プロファイルの名前を設定します。混乱を避けるために、わかりやすい名前を使用してください。ifname network_device: ネットワークインターフェイスを設定します。ipv4.method manual: 静的 IP アドレスを設定できるようにします。ipv4.addresses IP_address/subnet_mask: IPv4 アドレスとサブネットマスクを設定します。ipv4.gateway IP_address: デフォルトゲートウェイアドレスを設定します。ipv4.dns IP_of_DNS_server: DNS サーバーの IPv4 アドレスを設定します。connection.zone firewalld_zone: 定義されたfirewalldゾーンにネットワークインターフェイスを割り当てます。firewalldは、external ゾーンに割り当てられたマスカレードインターフェイスを自動的に有効にすることに注意してください。
- プロバイダー B へのネットワークインターフェイスを設定します。
nmcli connection add type ethernet con-name Provider-B ifname enp1s0 ipv4.method manual ipv4.addresses 192.0.2.1/30 ipv4.routes "0.0.0.0/1 192.0.2.2 table=5000, 128.0.0.0/1 192.0.2.2 table=5000" connection.zone external
# nmcli connection add type ethernet con-name Provider-B ifname enp1s0 ipv4.method manual ipv4.addresses 192.0.2.1/30 ipv4.routes "0.0.0.0/1 192.0.2.2 table=5000, 128.0.0.0/1 192.0.2.2 table=5000" connection.zone externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、デフォルトゲートウェイを設定するipv4パラメーターを使用します。これは、この接続のデフォルトゲートウェイをデフォルトとは異なるルーティングテーブル(5000)に割り当てるために必要です。NetworkManager は、接続がアクティブになると、この新しいルーティングテーブルを自動的に作成します。.gateway の代わりに ipv4.routes注記nmcliユーティリティーは、ipv4.gateway のデフォルトゲートウェイに0.0.0.0/0を使用することに対応していません。この問題を回避するには、0.0.0.0/1 との両方のサブネットに個別のルートを作成します。これは、完全な IPv4 アドレス空間に対応します。128.0.0.0/1 - 内部ワークステーションサブネットへのネットワークインターフェイスを設定します。
nmcli connection add type ethernet con-name Internal-Workstations ifname enp8s0 ipv4.method manual ipv4.addresses 10.0.0.1/24 ipv4.routes "10.0.0.0/24 src=192.0.2.1 table=5000" ipv4.routing-rules "priority 5 from 10.0.0.0/24 table 5000" connection.zone trusted
# nmcli connection add type ethernet con-name Internal-Workstations ifname enp8s0 ipv4.method manual ipv4.addresses 10.0.0.1/24 ipv4.routes "10.0.0.0/24 src=192.0.2.1 table=5000" ipv4.routing-rules "priority 5 from 10.0.0.0/24 table 5000" connection.zone trustedCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、ipv4.routesパラメーターを使用して、ID が 5000 のルーティングテーブルに静的ルートを追加します。10.0.0.0/24サブネットのこの静的ルートは、プロバイダー B (192.0.2.1)へのローカルネットワークインターフェイスの IP を次のホップとして使用します。さらに、このコマンドはipv4.routing-rulesパラメーターを使用して、優先度 5 のルーティングルールを追加します。このルーティングルールは、トラフィックを10.0.0.0/24サブネットからテーブル 5000 にルーティングします。値が小さいほど優先度が高くなります。ipv4.routing-rulesパラメーターの構文は ip route add コマンドと同じですが、ipv4.routing-rulesは常に優先度を指定する必要があります。 - サーバーサブネットへのネットワークインターフェイスを設定します。
nmcli connection add type ethernet con-name Servers ifname enp9s0 ipv4.method manual ipv4.addresses 203.0.113.1/24 connection.zone trusted
# nmcli connection add type ethernet con-name Servers ifname enp9s0 ipv4.method manual ipv4.addresses 203.0.113.1/24 connection.zone trustedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
- 内部ワークステーションサブネットの RHEL ホストで、以下を行います。
- traceroute パッケージをインストールします。
yum install traceroute
# yum install tracerouteCopy to Clipboard Copied! Toggle word wrap Toggle overflow tracerouteユーティリティーを使用して、インターネット上のホストへのルートを表示します。traceroute redhat.com
# traceroute redhat.com traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 10.0.0.1 (10.0.0.1) 0.337 ms 0.260 ms 0.223 ms 2 192.0.2.1 (192.0.2.1) 0.884 ms 1.066 ms 1.248 ms ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの出力には、ルーターがプロバイダー B のネットワークである192.0.2.1を介してパケットを送信することが表示されます。
- サーバーのサブネットの RHEL ホストで、以下を行います。
- traceroute パッケージをインストールします。
yum install traceroute
# yum install tracerouteCopy to Clipboard Copied! Toggle word wrap Toggle overflow tracerouteユーティリティーを使用して、インターネット上のホストへのルートを表示します。traceroute redhat.com
# traceroute redhat.com traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 203.0.113.1 (203.0.113.1) 2.179 ms 2.073 ms 1.944 ms 2 198.51.100.2 (198.51.100.2) 1.868 ms 1.798 ms 1.549 ms ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの出力には、ルーターがプロバイダー A のネットワークである198.51.100.2を介してパケットを送信することが表示されます。
トラブルシューティングの手順
RHEL ルーターで以下を行います。
- ルールのリストを表示します。
ip rule list
# ip rule list 0: from all lookup local 5: from 10.0.0.0/24 lookup 5000 32766: from all lookup main 32767: from all lookup defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow - テーブル 5000 のルートを表示します。
ip route list table 5000
# ip route list table 5000 0.0.0.0/1 via 192.0.2.2 dev enp1s0 proto static metric 100 10.0.0.0/24 dev enp8s0 proto static scope link src 192.0.2.1 metric 102 128.0.0.0/1 via 192.0.2.2 dev enp1s0 proto static metric 100Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイアウォールゾーンに割り当てられているインターフェイスを表示します。
firewall-cmd --get-active-zones
# firewall-cmd --get-active-zones external interfaces: enp1s0 enp7s0 trusted interfaces: enp8s0 enp9s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 外部 ゾーンでマスカレードが有効になっていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
- nmcli connection add コマンドに設定できる
ipv4.*パラメーターの詳細は、nm-settings(5) man ページの 『IPv4 settings』 セクションを参照してください。 - nmcli connection add コマンドに設定できる
connection.*パラメーターの詳細は、nm-settings(5) man ページの 『Connection settings』 セクションを参照してください。 - nmcli を使用した NetworkManager 接続の管理の詳細は、nmcli(1) man ページの 『Connection management commands』 セクションを参照してください。