18.11. network RHEL システムロールを使用して、特定のサブネットから別のデフォルトゲートウェイにトラフィックをルーティングする
ポリシーベースのルーティングを使用して、特定のサブネットからのトラフィックに対して別のデフォルトゲートウェイを設定できます。たとえば、RHEL をルーターとして設定し、デフォルトルートを使用してすべてのトラフィックをインターネットプロバイダー A にデフォルトでルーティングできます。一方、内部ワークステーションのサブネットから受信したトラフィックは、プロバイダー B にルーティングできます。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用して、ルーティングテーブルやルールを含む接続プロファイルを設定できます。
この手順では、次のネットワークトポロジーを想定しています。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
管理対象ノードは、NetworkManager および
firewalldサービスを使用します。 設定する管理対象ノードには、次の 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ネットワークインターフェイスに割り当てます。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
table: <value>-
table変数と同じリストエントリーのルートを、指定のルーティングテーブルに割り当てます。 routing_rule: <list>- 指定のルーティングルールの優先度と、接続プロファイルからルールの割り当て先のルーティングテーブルを定義します。
zone: <zone_name>-
接続プロファイルから指定の
firewalldゾーンにネットワークインターフェイスを割り当てます。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy 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 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.2 (192.0.2.2) 0.884 ms 1.066 ms 1.248 ms ...
# 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.2 (192.0.2.2) 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 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 ...
# 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 システムロールを使用して設定した RHEL ルーターで、次の手順を実行します。
ルールのリストを表示します。
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 default
# 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 デフォルトでは、RHEL には、
localテーブル、mainテーブル、およびdefaultテーブルのルールが含まれます。テーブル
5000のルートを表示します。ip route list table 5000 0.0.0.0/0 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
# ip route list table 5000 0.0.0.0/0 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 102Copy to Clipboard Copied! Toggle word wrap Toggle overflow インターフェイスとファイアウォールゾーンを表示します。
firewall-cmd --get-active-zones external interfaces: enp1s0 enp7s0 trusted interfaces: enp8s0 enp9s0
# firewall-cmd --get-active-zones external interfaces: enp1s0 enp7s0 trusted interfaces: enp8s0 enp9s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow externalゾーンでマスカレードが有効になっていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow