9.4. 静的ルートおよびデフォルトゲートウェイ

静的ルートは、デフォルトゲートウェイを通過すべきでない、通過してはいけないトラフィックのためのものです。ルーティングは通常、ルーティングデバイスが処理するので、Red Hat Enterprise Linux サーバーやクライアントでは静的ルートの設定は多くの場合、必要ありません。例外は、暗号化 VPN トンネルの通過が必要なトラフィックや、より低コストのルートを通過すべきトラフィックなどです。デフォルトゲートウェイは、ローカルネットワークが宛先となっていないすべてのトラフィックのためのもので、これらのトラフィックのルーティングテーブルには優先ルートが指定されていません。デフォルトゲートウェイはこれまで、専用ネットワークルーターでした。

静的ルート

ip route コマンドを使って IP ルーティングテーブルを表示します。静的ルートが必要な場合は、ip route add コマンドでルーティングテーブルに追加でき、削除したい時は ip route del コマンドを使います。単一の IP アドレスなどのホストアドレスに静的ルートを追加するには、root で以下のコマンドを発行します。
ip route add X.X.X.X
X.X.X.X は、ドッド区切り表記のホストの IP アドレスになります。多くの IP アドレスを意味するネットワークに静的ルートを追加するには、root で以下のコマンドを発行します。
ip route add X.X.X.X/Y
X.X.X.X は、ドッド区切り表記のネットワークの IP アドレスになり、Y はネットワークのプレフィックスになります。ネットワークプレフィックスは、サブネットマスクで有効なビットの数です。ネットワークアドレスとスラッシュ、プレフィックスというこの長さのフォーマットは、CIDR 表記と呼ばれます。
静的ルート設定はインターフェースごとに、/etc/sysconfig/network-scripts/route-interface ファイルに格納されています。例えば、eth0 インターフェースの静的ルートは、/etc/sysconfig/network-scripts/route-eth0 ファイルに格納されています。route-interface ファイルには IP コマンド引数、およびネットワーク/ネットマスク指示文の 2 つの形式があり、これらは下記で説明されています。

デフォルトゲートウェイ

デフォルトゲートウェイは、GATEWAY 指示文で指定されており、グローバルかインターフェース特定の設定ファイルのどちらかで指定できます。ネットワークインターフェースが 1 つ以上ある場合は特に、デフォルトゲートウェイをグローバルで指定すると有利な点があります。継続的に適用された場合、障害発見を容易にすることができます。GATEWAYDEV 指示文もあり、これはグローバルのオプションです。複数のデバイスが GATEWAY を指定し、1 つのインターフェースが GATEWAYDEV 指示文を使用する場合、その指示文が優先することになります。このオプションは、インターフェースがダウンすると予想外の結果をもたらすことがあり、障害発見を複雑にしかねないので、推奨されません。
グローバルのデフォルトゲートウェイ設定は、/etc/sysconfig/network ファイルに格納されています。このファイルは、すべてのネットワークインターフェースのゲートウェイとホストの情報を指定します。このファイルとそれが使用できる指示文の詳細は、「/etc/sysconfig/network」 を参照してください。

IP コマンド引数形式

インターフェースごとの設定ファイルで必要な場合は、1 行目にデフォルトゲートウェイを定義します。これは、デフォルトゲートウェイが DHCP を介して設定されておらず、上記のようにグローバルに設定されていない場合のみに必要です。
default via X.X.X.X dev interface
X.X.X.X は、デフォルトゲートウェイの IP アドレスです。interface は、デフォルトゲートウェイに接続されているインターフェース、または到達可能なインターフェースです。 dev オプションは選択可能で、省略することもできます。
静的ルートを定義します。各行は個別のルートとして解析されます。
X.X.X.X/Y via X.X.X.X dev interface
X.X.X.X/Y は、静的ルートのネットワークアドレスとネットマスクです。X.X.X.Xinterface はそれぞれ、デフォルトゲートウェイの IP アドレスとインターフェースです。X.X.X.X アドレスは、デフォルトゲートウェイの IP アドレスである必要はありません。大半の場合、X.X.X.X は異なるサブネットの IP アドレスとなり、interface はそのサブネットに接続されたインターフェース、または到達可能なインターフェースです。必要な数の静的ルートを追加します。
以下は、IP コマンド引数形式を用いた route-eth0 ファイルのサンプルです。デフォルトゲートウェイは、192.168.0.1 でインターフェースは eth0 です。2 つの静的ルートは、10.10.10.0/24 と 172.16.1.0/24 の両ネットワークに対するものです
default via 192.168.0.1 dev eth0
10.10.10.0/24 via 192.168.0.1 dev eth0
172.16.1.0/24 via 192.168.0.1 dev eth0
静的ルートは、他のサブネットワークに対してのみ設定することをお勧めします。10.10.10.0/24 と 172.16.1.0/24 のネットワークに向かうパケットは、いずれにしてもデフォルトゲートウェイを使用するため、上記の例は必要ではありません。下記の例では、192.168.0.0/24 サブネットのマシン上での異なるサブネットへの静的ルートを設定しています。この例のマシンには、192.168.0.0/24 サブネットの eth0 インターフェースと 10.10.10.0/24 サブネットの eth1 インターフェース (10.10.10.1) があります。
10.10.10.0/24 via 10.10.10.1 dev eth1
終了インターフェースの特定は、オプションです。特定のインターフェースからトラフィックを強制的に締め出したい場合は、これが便利です。例えば VPN の場合、tun0 インターフェースが宛先ネットワークへの異なるサブネットにあったとしても、リモートネットワークへのトラフィックを強制的にこのインターフェース通過とすることができます。

重複したデフォルトゲートウェイ

デフォルトゲートウェイが DHCP から既に割り当てられている場合は、IP コマンド引数形式によっては、起動中、または ifup コマンドを使用してインターフェースを非アクティブの状態からアクティブにする時に、次の 2 つのエラーのどちらかが発生する可能性があります:「RTNETLINK answers: File existss (RTNETLINK の応答: ファイルが存在)」 または 「Error: either "to" is a duplicate, or "X.X.X.X" is a garbage (エラー: "to"が重複、または "X.X.X.X" が不要)」。X.X.X.X はゲートウェイか、または異なる IP アドレスです。こうしたエラーは、デフォルトゲートウェイを使用した別のネットワークへのルートが別にある場合にも発生することがあります。こうしたエラーは無視しても安全です。

ネットワーク/ネットマスク指示文の形式

route-interface ファイルに、ネットワーク/ネットマスク指示文の形式を使用することも可能です。以下は、ネットワーク/ネットマスク形式のテンプレートで、説明はその次をご覧ください:
 ADDRESS0=X.X.X.X NETMASK0=X.X.X.X GATEWAY0=X.X.X.X 
  • ADDRESS0=X.X.X.X は、静的ルートのネットワークアドレスです。
  • NETMASK0=X.X.X.X は、ADDRESS0=X.X.X.X で定義されているネットワークアドレス用のネットマスクです。
  • GATEWAY0=X.X.X.X はデフォルトゲートウェイ、または ADDRESS0=X.X.X.X に到達するために使用可能な IP アドレスです。
以下は、ネットワーク/ネットマスク指示文の形式を使用した route-eth0 ファイルのサンプルです。デフォルトゲートウェイは 192.168.0.1、インターフェースは eth0 です。2 つの静的ルートは、10.10.10.0/24 及び 172.16.1.0/24 のネットワークに対するものです。しかし、前述したとおり 10.10.10.0/24 及び 172.16.1.0/24 のネットワークはいずれにしてもデフォルトゲートウェイを使用するため、この例は必要ではありません:
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.1
ADDRESS1=172.16.1.0
NETMASK1=255.255.255.0
GATEWAY1=192.168.0.1
後続する静的ルートは、順番に番号付けされる必要があり、いずれの値もスキップしてはいけません。例えば、ADDRESS0ADDRESS1ADDRESS2 というようになります。
以下は、192.168.0.0/24 サブネットのマシン上で異なるサブネットへの静的ルートを設定する例です。この例のマシンには、192.168.0.0/24 サブセットの eth0 インターフェースと、10.10.10.0/24 サブネットの eth1 インターフェース (10.10.10.1) があります。
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=10.10.10.1
DHCP を使用すると、これらの設定を自動的に割り当てることに注意してください。