Linuxカーネルのルーティングテーブルを表示・設定するには、routeコマンドを使用します。本稿では、このコマンドの基本的な使い方から詳細なオプション設定までを解説します。
ルーティングテーブルの表示
routeコマンドを引数なしで実行すると、現在のルーティングテーブルが表示されます。$ route
カーネルIPルーティングテーブル
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
出力項目の説明
| 項目 | 説明 |
|---|---|
| Destination | 宛先ネットワークまたはホストのIPアドレス |
| Gateway | ゲートウェイアドレス。'*'は同一ネットワーク内を示す |
| Genmask | ネットマスク |
| Flags | ルートの状態を示すフラグ |
| Metric | ルートのコスト値(現在のLinuxカーネルでは未使用) |
| Ref | ルート参照回数(現在のLinuxカーネルでは未使用) |
| Use | ルート検索回数 |
| Iface | 使用するネットワークインターフェース |
フラグの詳細
| フラグ | 意味 |
|---|---|
| U | ルートがアクティブ |
| H | 宛先がホスト |
| G | ゲートウェイを経由するルート |
| R | 動的ルート復元 |
| D | デーモンによる動的インストール |
| M | デーモンによる変更 |
| ! | ルートが無効 |
ルーティングの種類
ホストルート
特定のIPアドレス宛てのルートです。Flagsに'H'が付与されます。Destination Gateway Genmask Flags Metric Ref Use Iface
----------- ------- ------- ----- ------ --- --- -----
10.0.0.10 192.168.1.1 255.255.255.255 UH 0 0 0 eth0
ネットワークルート
ネットワーク全体へのルートです。Flagsに'N'が付与されます。Destination Gateway Genmask Flags Metric Ref Use Iface
----------- ------- ------- ----- ----- --- --- -----
192.19.12 192.168.1.1 255.255.255.0 UN 0 0 0 eth0
デフォルトルート
一致するルートがない場合に 사용할されるルートです。Destination Gateway Genmask Flags Metric Ref Use Iface
----------- ------- ------- ----- ------ --- --- -----
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
静的ルートの設定
routeコマンドの基本構文
# route [add|del] [-net|-host] 宛先 [netmask ネットマスク] [gw ゲートウェイ] [dev インターフェース]
| オプション | 説明 |
|---|---|
| add | ルート追加 |
| del | ルート削除 |
| -net | 宛先がネットワーク |
| -host | 宛先がホスト |
| netmask | ネットマスク指定 |
| gw | ゲートウェイ指定 |
| dev | ネットワークインターフェース指定 |
ホストへのルート追加
# route add -host 192.168.1.2 dev enp0s3
# route add -host 10.20.30.148 gw 10.20.30.40
ネットワークへのルート追加
# route add -net 10.20.30.40 netmask 255.255.255.248 enp0s3
# route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
# route add -net 192.168.1.0/24 enp0s1
デフォルトルートの追加
# route add default gw 192.168.1.1
ルートの削除
# route del -host 192.168.1.2 dev enp0s3
# route del -host 10.20.30.148 gw 10.20.30.40
# route del -net 10.20.30.40 netmask 255.255.255.248 enp0s3
# route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
# route del -net 192.168.1.0/24 enp0s1
# route del default gw 192.168.1.1
IP転送の有効化
Linuxをルーターとして動作させるには、IP転送機能を有効にする必要があります。# sysctl -w net.ipv4.ip_forward=1
この設定はシステムが再起動するとリセットされます。永続化するには、/etc/sysctl.confに以下を追加します。
# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
現在の設定を確認するには、次のコマンドを実行します。
# sysctl net.ipv4.ip_forward
routeコマンドの詳細仕様
コマンド書式
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]
主要オプション
| オプション | 説明 |
|---|---|
| -c | 詳細情報を表示 |
| -n | ホスト名解決を行わない(高速表示) |
| -v | 詳細な処理情報を表示 |
| -F | FIBルーティング情報を表示 |
| -C | ルーティングキャッシュを表示 |
| -f | すべてのゲートウェイエントリを削除 |
| -p | ルートを永続化(add使用时) |
実践的な使用例
ルーティングテーブルの表示(名前解決なし)
$ route -n
カーネルIPルーティングテーブル
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.120.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.0.0 192.168.120.1 255.255.0.0 UG 0 0 0 eth0
10.0.0.0 192.168.120.1 255.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.120.240 0.0.0.0 UG 0 0 0 eth0
マルチキャストルートの追加
# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
| 状態 | 説明 |
|---|---|
| Up (U) | ルートが有効 |
| Host (H) | ゲートウェイがホスト |
| Gateway (G) | ゲートウェイがルーター |
| Reject (!) | ルートが無効 |
特定ネットワークのブロック
# route add -net 224.0.0.0 netmask 240.0.0.0 reject
デフォルトゲートウェイの変更
# route del default gw 192.168.120.240
# route add default gw 192.168.120.240
ルートの優先順位
ルーティングテーブルは上から順に評価されます。最初に一致したルートが使用され、一致するルートがない場合はデフォルトルートが使用されます。$ route -n
カーネルIPルーティングテーブル
Destination Gateway Genmask Flags Metric Ref Use Iface
10.147.9.0 * 255.255.255.0 U 1 0 0 eth0
192.168.1.0 * 255.255.255.0 U 2 0 0 wlan0
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
link-local * 255.255.0.0 U 1000 0 0 eth0
192.168.0.0 192.168.1.1 255.255.0.0 UG 0 0 0 wlan0
default 10.147.9.1 0.0.0.0 UG 0 0 0 eth0
ルート追加・削除の例
# route add -net 192.168.62.0 netmask 255.255.255.0 gw 192.168.1.1
# route del -net 192.168.122.0 netmask 255.255.255.0
永続的ルートの設定
routeコマンドで追加したルートは、システム再起動後に失われます。永続的に設定するには、以下のファイルを編集します。/etc/rc.local への追加
route add -net 192.168.3.0/24 dev eth0
route add -net 192.168.2.0/24 gw 192.168.3.254
/etc/sysconfig/network への追加
GATEWAY=192.168.1.254
/etc/sysconfig/static-router への追加
any net 10.0.0.0/24 gw 192.168.1.1
重要な注意点
routeコマンドで静的に追加したルートは、ネットワークインターフェース再起動やシステム再起動により消失します。永続的な設定が必要な場合は、rc.localやnetwork設定ファイルにコマンドを記述してください。5月13日 11:32 投稿