静的ルーティング

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Static routing and the translation is 100% complete.
Other languages:

ルート (route) とは、特定のネットワーク (または単一のホスト) に到達するために、どの物理ネットワークインターフェースやゲートウェイが必要かを判定するのに使用される、カーネル内に設定されるルールです。ルーティング対象プロトコルには複数の種類がありますが、この記事では Linux カーネルでの IP プロトコルのルーティングについて取り扱います。

IP ルートはカーネル内に保持されていますが、以下の例で説明するようにユーザ空間ツールによって変更することが可能です。

ルートを表示する

iproute2 を使用してルーティングテーブルを表示します:

user $ip route
default via 192.168.1.1 dev wlan1 metric 1
192.168.50.0/24 dev lan proto kernel scope link src 192.168.50.1
127.0.0.0/8 via 127.0.0.1 dev lo 
192.168.1.0/24 dev wlan1 proto kernel scope link src 192.168.1.1

または、sys-apps/net-tools を使用してルーティングテーブルを表示します:

user $netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.50.0    0.0.0.0         255.255.255.0   U     0      0        0 lan
192.168.1.0     0.0.0.0         255.255.255.0   U     2000   0        0 wlan1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         192.168.1.1     0.0.0.0         UG    2000   0        0 wlan1

静的ルートを追加する

静的ルートを追加する前に必要な前提情報は、IP アドレス、サブネットマスク (CIDR) と、ゲートウェイです。

この例では、サブネットマスク 255.255.255.0 を持つネットワーク 10.10.10.0 を、ゲートウェイ 192.168.1.50 へとルート設定します。sys-apps/iproute2 パッケージのコマンド (ip) を使用してルートを追加するときには、CIDR スタイルのネットマスクが必要です。次の例では 10.10.10.0/24 ルートを追加します:

root #ip route add 10.10.10.0/24 via 192.168.1.50

ip route コマンドを使用してルーティングテーブルを表示します:

user $ip route
default via 192.168.1.1 dev wlan1 metric 1
10.10.10.0/24 dev wlan1 via 192.168.1.50 src 10.10.10.1
192.168.50.0/24 dev lan proto kernel scope link src 192.168.50.1
127.0.0.0/8 via 127.0.0.1 dev lo 
192.168.1.0/24 dev wlan1 proto kernel scope link src 192.168.1.1

古いシステムには、上の例で使用した ip コマンドが無く、netstat または route コマンド (sys-apps/net-tools) しか無いということがあるかもしれません。

route コマンドを使用して、上の説明と同じ静的ルートを追加します:

root #route add -net 10.10.10.0 netmask 255.255.255.0 gw 192.168.1.50

netstat (sys-apps/net-tools) を使用してルーティングテーブルを表示してください:

user $netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.10.0      192.168.1.50    255.255.255.0   UG    0      0        0 wlan1
192.168.50.0    0.0.0.0         255.255.255.0   U     0      0        0 lan
192.168.1.0     0.0.0.0         255.255.255.0   U     2000   0        0 wlan1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         192.168.1.1     0.0.0.0         UG    2000   0        0 wlan1

ルーティングテーブルは、特化したルートから一般的なルートへという順でソートされます。これはルーティングプロセスがテーブルをどう読むかでもあります。最長プレフィックス一致は、最小のネットワーク、言い換えると最大のネットマスクを持つネットワーク、または最も特化したルート 255.255.255.255 が、ルーティングテーブルの最初の位置に来るという意味です。

永続的な静的ルートを追加する

netifrc スクリプト (OpenRC の標準のネットワークツール) を利用している場合は、好きなテキストエディタで /etc/conf.d/net を開いてファイルを修正することで、永続的な静的ルートを追加することができます。

参考のために、現在のルーティングテーブルを参照してください。

ファイル /etc/conf.d/net
routes_wlan1="10.10.10.0/24 via 192.168.1.50
    default via 192.168.1.1"

ネットワークマネージャとして dhcpcd を使う場合は、静的ルートは代わりに /etc/dhcpcd.conf に設定します。

上の 2 行の意味は次の通りです:

  1. 10.10.10.0/24 ネットワーク宛ての IP パケットは 192.168.1.50 に送信されます。
  2. 他のすべてのネットワーク (0.0.0.0/0) 宛ての IP パケットは 192.168.1.1 に送信されます。
メモ
0.0.0.0/0 はプレフィックス (サブネットマスク) が無く、他のすべてのネットワーク、デフォルトルートを意味します。

デフォルトルート 0.0.0.0/0 は以下の場合に使用されます:

  • ホストがターゲットネットワークセグメント内に物理または論理 IP インターフェースを持たない場合。
  • ホストが自身のネットワークセグメントの外に IP パケットを送る必要があり、ルーティングテーブルに、ターゲット IP ネットワークのために特化したルートが見つからない場合。

関連項目

  • iproute2 — a tool developed to unify network interface configuration, routing, and tunneling for Linux systems.
  • Network management — describes possibilities for managing the network stack.

外部資料