4.5. ifcfg ファイルでの静的ルートの設定

コマンドプロンプトで ip コマンドを使用して設定した静的ルートは、システムがシャットダウンまたは再起動すると失われます。静的ルートの設定を、システムを再起動した後も持続するようにするには、/etc/sysconfig/network-scripts/ ディレクトリーに保存されているインターフェース別の設定ファイルに追加する必要があります。ファイル名は、route-interface の形式にする必要があります。設定ファイルで使用するコマンドの種類は 2 つあります。

IP コマンド引数形式を使用した静的ルート

インターフェースごとの設定ファイル、たとえば /etc/sysconfig/network-scripts/route-eth0 で必要な場合は、1 行目でデフォルトゲートウェイへのルートを定義します。これは、ゲートウェイが DHCP 経由で設定されておらず、かつ /etc/sysconfig/network ファイルでグローバルに設定されていない場合にのみ必要となります。
default via 192.168.1.1 dev interface
ここでの 192.168.1.1 は、デフォルトゲートウェイの IP アドレスになります。interface は、デフォルトゲートウェイに接続されている、または到達可能なインターフェースになります。dev オプションは省略可能なオプションです。この設定は、/etc/sysconfig/network ファイル内の設定に優先することに注意してください。
リモートネットワークへのルートが必要な場合は、静的ルートは以下のように指定できます。各行は、個別のルートとして解析されます。
10.10.10.0/24 via 192.168.1.1 [dev interface]
ここでの 10.10.10.0/24 は、リモートもしくは宛先ネットワークのネットワークアドレスおよびプレフィックス長です。アドレス 192.168.1.1 は、リモートネットワークに続く IP アドレスです。ネクストホップアドレス の方が好ましいですが、出口インターフェースのアドレスでも機能します。ネクストホップとは、ゲートウェイやルーターなどリンクのリモート側を意味します。dev オプションを使うと出口インターフェース interface を指定できますが、これは必須ではありません。必要に応じた数の静的ルートを追加してください。
以下は、ip コマンド引数形式を使用した route-interface ファイルの例です。デフォルトゲートウェイは 192.168.0.1 で、インターフェースは eth0、また専用回線または WAN 接続が 192.168.0.10 で利用可能です。2 つの静的ルートは、10.10.10.0/24 ネットワークおよび 172.16.1.10/32 ホストに到達するためのものです。
default via 192.168.0.1 dev eth0
10.10.10.0/24 via 192.168.0.10 dev eth0
172.16.1.10/32 via 192.168.0.10 dev eth0
上記の例では、ローカルの 192.168.0.0/24 ネットワークに向かうパケットはそのネットワークに接続されているインターフェースに移動します。10.10.10.0/24 ネットワークおよび 172.16.1.10/32 ホストに向かうパケットは、192.168.0.10 に移動します。既知でないリモートネットワークに向かうパケットはデフォルトゲートウェイを使用するので、デフォルトルートが適切でない場合は、静的ルートはリモートネットワークもしくはホスト用のみに設定すべきです。ここでのリモートとは、システムに直接繋がれていないネットワークやホストを指します。
IPv6 設定で、ip route 形式の route6-interface ファイルの例は、以下のようになります。
2001:db8:1::/48 via 2001:db8::1 metric 2048
2001:db8:2::/48
出口インターフェースの指定は、オプションです。特定のインターフェースからトラフィックを強制的に締め出したい場合は、これが便利です。たとえば VPN の場合、tun0 インターフェースが宛先ネットワークにつながる別のサブネットにあったとしても、リモートネットワークへのトラフィックを強制的にこのインターフェース経由とさせることができます。
ip route の形式を使用して、送信元アドレスを指定できます。以下に例を示します。
10.10.10.0/24 via 192.168.0.10 src 192.168.0.2
複数のルーティングテーブルを指定する既存のポリシーベースのルーティング設定を定義するには、「ポリシールーティングについて」を参照してください。

重要

DHCP がすでにデフォルトゲートウェイを割り当てており、設定ファイル内でこの同一ゲートウェイが同一メトリクスで指定されている場合、起動時またはインターフェースをアクティベートする際にエラーが発生します。"RTNETLINK answers: File exists" というエラーメッセージが表示される可能性がありますが、これは無視して構いません。

Network または Netmask のディレクティブ形式を使用した静的ルート

ネットワーク/ネットマスクディレクティブの形式を route-interface ファイルに使用することも可能です。以下は、ネットワーク/ネットマスク形式のテンプレートで、後に説明が続きます。
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.1.1
  • ADDRESS0=10.10.10.0 は、到達するリモートネットワークまたはホストのネットワークアドレスです。
  • NETMASK0=255.255.255.0 は、ADDRESS0=10.10.10.0 で定義されているネットワークアドレスのネットマスクです。
  • GATEWAY0=192.168.1.1 は、ADDRESS0=10.10.10.0 への到達に使用可能なデフォルトゲートウェイまたは IP アドレスです。
以下は、ネットワーク/ネットマスクディレクティブの形式を使用した route-interface ファイルの例です。デフォルトゲートウェイは 192.168.0.1 ですが、専用回線または WAN 接続が 192.168.0.10 で利用可能です。2 つの静的ルートは、10.10.10.0/24 および 172.16.1.0/24 のネットワークに到達するためのものです。
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.10
ADDRESS1=172.16.1.10
NETMASK1=255.255.255.0
GATEWAY1=192.168.0.10
後に続く静的ルートは、順番に番号付けされる必要があり、いずれの値もスキップしてはいけません。たとえば、ADDRESS0ADDRESS1ADDRESS2 というようになります。
デフォルトでは、パケットをあるインターフェースから別のインターフェースに転送することや、同じインターフェースから外部に送信することは、セキュリティー上の理由から無効になっています。これにより、システムが外部トラフィックのルーターとして機能するのを防ぐことができます。システムに外部トラフィックをルーティングさせる必要がある場合は (たとえば、接続を共有する場合や、VPN サーバーを設定する場合)、IP フォワーディングを有効にする必要があります。詳細は『Red Hat Enterprise Linux 7 セキュリティーガイド』を参照してください。

4.5.1. ポリシールーティングについて

ポリシールーティング は、ソースルーティングとも呼ばれ、より柔軟なルーティング設定のためのメカニズムです。ルーティングの決定は、通常、パッケージの宛先 IP アドレスに基づいて行われます。ポリシールーティング では、送信元 IP アドレス、送信元ポート、プロトコルタイプなど、その他のルーティングプロパティーをより柔軟に選択できます。ルーティングテーブルは、ネットワークに関するルート情報を保存します。これは、数値または名前で識別され、/etc/iproute2/rt_tables ファイルで設定できます。デフォルトテーブルは 254 で識別されます。policy-routing を使用する場合は、ルールも必要になります。ルールは、ルーティングテーブルを選択するために使用され、パケットの特定のプロパティーに基づいています。
initscript の場合、ルーティングテーブルは、テーブルの引数から設定できるルートのプロパティーになります。ip route 形式は、既存のポリシーベースのルーティング設定を定義するために使用できます。これは、複数のルーティングテーブルを指定します。
10.10.10.0/24 via 192.168.0.10 table 1
10.10.10.0/24 via 192.168.0.10 table 2
initscript でルーティングルールを指定するには、IPv4/etc/sysconfig/network-scripts/rule-eth0 ファイル、または、IPv6/etc/sysconfig/network-scripts/rule6-eth0 ファイルで、その指定を編集します。
NetworkManager はポリシールーティングをサポートしますが、ルートはサポートされていません。ルールは、カスタムスクリプトを実行して設定する必要があります。手動の静的なルート 1 つに対して、ルーティングテーブルを 1 つ選択できます。
  • IPv4 の場合は ipv4.route-table
    ならびに
  • IPv6 の場合は ipv6.route-table
特定テーブルにルートを設定するには、DHCPautoconf6DHCP6 からのルートをすべて、その特定テーブルに追加します。また、アドレスをすでに設定しているサブネットのルートはすべて、対応するルーティングテーブルに追加します。たとえば、192.168.1.10/24 アドレスを設定する場合は、ipv4.route-table に 192.168.1.0/24 サブネットを追加します。
policy-routing ルールの詳細は、man ページの ip-rule(8) を参照してください。ルーティングテーブルは、man ページの ip-route(8) を参照してください。