Linux路由表管理:routeコマンド完全ガイド

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詳細な処理情報を表示
-FFIBルーティング情報を表示
-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設定ファイルにコマンドを記述してください。

タグ: linux routing route-command network-configuration static-route

5月13日 11:32 投稿