Red Hat Training

A Red Hat training course is available for RHEL 8

22.3. レガシーネットワークスクリプトを使用して、特定のサブネットから別のデフォルトゲートウェイにトラフィックをルーティング

本セクションでは、デフォルトで、デフォルトルートを使用して、すべてのトラフィックをインターネットプロバイダー A にルーティングするルーターとして RHEL を構成する方法を説明します。RHEL は、ポリシーベースのルーティングを使用して、内部ワークステーションのサブネットから受信したトラフィックをプロバイダー B にルーティングします。

重要

network-scripts パッケージが提供する従来のネットワークスクリプトを使用したネットワークの設定は、RHEL 8 では非推奨になりました。このセクションの手順は、ホストで NetworkManager ではなく、レガシーネットワークスクリプトを使用している場合に限り行います。NetworkManager を使用してネットワーク設定を管理する場合は、「NetworkManager を使用した特定のサブネットから別のデフォルトゲートウェイへのトラフィックのルーティング」を参照してください。

この手順では、次のネットワークトポロジを想定しています。

policy based routing

注記

従来のネットワークスクリプトは、設定ファイルをアルファベット順に処理します。したがって、他のインターフェースのルールとルートで使用されるインターフェースが、依存するインターフェースが必要とするときに確実に稼働するように、構成ファイルに名前を付ける必要があります。正しい順序を達成するために、この手順では ifcfg-* ファイル、route-* ファイル、および rules-* ファイルの番号を使用します。

前提条件

  • NetworkManager パッケージがインストールされていないか、NetworkManager サービスが無効になります。
  • network-scripts パッケージがインストールされている。
  • この手順で設定する 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. 以下の内容で /etc/sysconfig/network-scripts/ifcfg-1_Provider-A ファイルを作成して、ネットワークインターフェースの設定をプロバイダー A に追加します。

    TYPE=Ethernet
    IPADDR=198.51.100.1
    PREFIX=30
    GATEWAY=198.51.100.2
    DNS1=198.51.100.200
    DEFROUTE=yes
    NAME=1_Provider-A
    DEVICE=enp7s0
    ONBOOT=yes
    ZONE=external

    以下の一覧は、設定ファイルで使用されるパラメーターについて説明しています。

    • TYPE=Ethernet - 接続タイプがイーサネットであることを定義します。
    • IPADDR=IP_address - IPv4 アドレスを設定します。
    • PREFIX=subnet_mask - サブネットマスクを設定します。
    • GATEWAY=IP_address - デフォルトのゲートウェイアドレスを設定します。
    • DNS1=IP_of_DNS_server - DNS サーバーの IPv4 アドレスを設定します。
    • DEFROUTE=yes|no - 接続がデフォルトルートであるかどうかを定義します。
    • NAME=connection_name - 接続プロファイルの名前を設定します。混乱を避けるために、わかりやすい名前を使用してください。
    • DEVICE=network_device - ネットワークインターフェースを設定します。
    • ONBOOT=yes - システムの起動時に RHEL がこの接続を開始することを定義します。
    • zone=firewalld_zone - 定義した firewalld ゾーンにネットワークインターフェースを割り当てます。firewalld は、外部 ゾーンに割り当てられたマスカレードインターフェースを自動的に有効にすることに注意してください。
  2. プロバイダー B にネットワークインターフェースの設定を追加します。

    1. 以下の内容で /etc/sysconfig/network-scripts/ifcfg-2_Provider-B ファイルを作成します。

      TYPE=Ethernet
      IPADDR=192.0.2.1
      PREFIX=30
      DEFROUTE=no
      NAME=2_Provider-B
      DEVICE=enp1s0
      ONBOOT=yes
      ZONE=external

      このインターフェースの設定ファイルには、デフォルトのゲートウェイ設定が含まれていないことに注意してください。

    2. 2_Provider-B 接続のゲートウェイを別のルーティングテーブルに割り当てます。したがって、以下の内容で /etc/sysconfig/network-scripts/route-2_Provider-B ファイルを作成します。

      0.0.0.0/0 via 192.0.2.2 table 5000

      このエントリーは、このゲートウェイを経由するすべてのサブネットからのゲートウェイおよびトラフィックをテーブル 5000 に割り当てます。

  3. 内部ワークステーションサブネットへのネットワークインターフェースの設定を作成します。

    1. 以下の内容で /etc/sysconfig/network-scripts/ifcfg-3_Internal-Workstations ファイルを作成します。

      TYPE=Ethernet
      IPADDR=10.0.0.1
      PREFIX=24
      DEFROUTE=no
      NAME=3_Internal-Workstations
      DEVICE=enp8s0
      ONBOOT=yes
      ZONE=internal
    2. 内部ワークステーションサブネットのルーティングルール設定を追加します。したがって、以下の内容で /etc/sysconfig/network-scripts/rule-3_Internal-Workstations ファイルを作成します。

      pri 5 from 10.0.0.0/24 table 5000

      この設定では、優先度 5 のルーティングルールを定義します。これは、すべてのトラフィックを 10.0.0.0/24 サブネットからテーブル 5000 にルーティングします。値が小さいほど優先度が高くなります。

    3. 以下の内容を含む /etc/sysconfig/network-scripts/route-3_Internal-Workstations ファイルを作成し、ID 5000 のルーティングテーブルに静的ルートを追加します。

      10.0.0.0/24 via 192.0.2.1 table 5000

      この静的ルートは、RHEL が、ローカルネットワークインターフェースの IP への 10.0.0.0/24 サブネットから、プロバイダー B (192.0.2.1) にトラフィックを送信することを定義します。このインターフェースは、ルーティングテーブル 5000 に対するものであり、ネクストホップとして使用されます。

  4. 以下の内容で /etc/sysconfig/network-scripts/ifcfg-4_Servers ファイルを作成して、ネットワークインターフェースの設定をサーバーのサブネットに追加します。

    TYPE=Ethernet
    IPADDR=203.0.113.1
    PREFIX=24
    DEFROUTE=no
    NAME=4_Servers
    DEVICE=enp9s0
    ONBOOT=yes
    ZONE=internal
  5. ネットワークを再起動します。

    # systemctl restart network

検証手順

  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

    デフォルトでは、RHEL には、local テーブル、main テーブル、および default テーブルのルールが含まれます。

  2. テーブル 5000 のルートを表示します。

    # ip route list table 5000
    default via 192.0.2.2 dev enp1s0
    10.0.0.0/24 via 192.0.2.1 dev enp1s0
  3. インターフェースとファイアウォールゾーンを表示します。

    # firewall-cmd --get-active-zones
    external
      interfaces: enp1s0 enp7s0
    internal
      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
      ...

関連情報