第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 サービスは有効でアクティブです(これがデフォルトです)。

手順

  1. プロバイダー 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 コマンドは、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 ゾーンに割り当てられたマスカレードインターフェイスを自動的に有効にすることに注意してください。
  2. プロバイダー 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
    このコマンドは、デフォルトゲートウェイを設定する ipv4 .gateway の代わりに ipv4. routes パラメーターを使用します。これは、この接続のデフォルトゲートウェイをデフォルトとは異なるルーティングテーブル(5000)に割り当てるために必要です。NetworkManager は、接続がアクティブになると、この新しいルーティングテーブルを自動的に作成します。
    注記
    nmcli ユーティリティーは、ipv4.gateway のデフォルトゲートウェイに 0.0.0.0/0 を使用することに対応していません。この問題を回避するには、0.0.0. 0/1 と 128. 0.0.0/1 の両方のサブネットに個別のルートを作成します。これは、完全な IPv4 アドレス空間に対応します。
  3. 内部ワークステーションサブネットへのネットワークインターフェイスを設定します。
    # 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
    このコマンドは、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 は常に優先度を指定する必要があります。
  4. サーバーサブネットへのネットワークインターフェイスを設定します。
    # nmcli connection add type ethernet con-name Servers ifname enp9s0 ipv4.method manual ipv4.addresses 203.0.113.1/24 connection.zone trusted

検証手順

  1. 内部ワークステーションサブネットの RHEL ホストで、以下を行います。
    1. traceroute パッケージをインストールします。
      # yum install traceroute
    2. 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.1 (192.0.2.1)   0.884 ms  1.066 ms  1.248 ms
       ...
      コマンドの出力には、ルーターがプロバイダー B のネットワークである 192.0.2.1 を介してパケットを送信することが表示されます。
  2. サーバーのサブネットの RHEL ホストで、以下を行います。
    1. traceroute パッケージをインストールします。
      # yum install traceroute
    2. 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
       ...
      コマンドの出力には、ルーターがプロバイダー A のネットワークである 198.51.100.2 を介してパケットを送信することが表示されます。

トラブルシューティングの手順

RHEL ルーターで以下を行います。
  1. ルールのリストを表示します。
    # 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
  2. テーブル 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 100
  3. ファイアウォールゾーンに割り当てられているインターフェイスを表示します。
    # firewall-cmd --get-active-zones
    external
      interfaces: enp1s0 enp7s0
    trusted
      interfaces: enp8s0 enp9s0
  4. 外部 ゾーンでマスカレードが有効になっていることを確認します。
    # firewall-cmd --info-zone=external
    external (active)
      target: default
      icmp-block-inversion: no
      interfaces: enp1s0 enp7s0
      sources:
      services: ssh
      ports:
      protocols:
      masquerade: yes
      ...

関連情報

  • 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』 セクションを参照してください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.