Linuxコマンド辞典 routeコマンド(ネットワーク)

ルーティングテーブルを表示/設定する「route」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

ルーティングテーブルとは、別のネットワークに配置された端末と通信するために必要な経路リスト。他のネットワークの端末と通信するために通らなければいけない経路を「デフォルトゲートウェイ」と呼びます。特定の端末にデータを送信するために、デフォルトゲートウェイと異なる経路を通る必要がある場合は、routeを使ってルーティングテーブルを追加設定します。この経路リストを参照してカーネルはデータをあるべき経路に送信します。routeはオプションや引数を指定せずに実行すると、設定されているルーティングテーブルを表示します。ルーティングテーブルに経路を追加/削除する場合は、対象アドレスとゲートウェイ(出口となるホスト)アドレスなどを指定します。routeを実行して経路をルーティングテーブルに追加してもシステムを再起動した後は手動で追加したテーブルが消えてしまいます。システム起動にデフォルトゲートウェイ以外の経路を設定することもできます。

CentOS7では、「/etc/sysconfig/network-scripts/route-<NIC名>」、Debian系では「/etc/network/interfaces」等に記述するとシステム起動時に有効なルーティングテーブルを設定できます。

ディストリビューション設定方法
Red Hat系/etc/sysconfig/以下に「route-インターフェイス」ファイルを作成して指定する
Debian系/etc/network/interfacesでup、downコマンドを使用する

routeコマンドは将来使われなく見込みなのでIPコマンドを使用したほうがよい。

経路の表示

書式

$ route [オプション1] 

オプション1

-Cカーネルがキャッシュしているルーティングテーブルを表示する
-n表示する経路ホストの名前解決をせずにIPアドレスを表示する。名前解決しないので表示は速い
-enetstat形式で表示する
-eeすべての経路情報を1行で表示する

経路の追加

書式

$ route [オプション2] add [-net | -host] ターゲット [オプション3] 

オプション2

-A アドレスファミリプロトコルの種別(IPv4はinet4、IPv6はinet6)を指定する

オプション3

netmask ネットマスク値ネットマスクを指定する(例:255.255.255.0)
gw ゲートウェイアドレス宛先にパケットを送る際のゲートウェイアドレスを指定する
dev インターフェイス名インターフェイス名を指定する(例:eth0)

経路の削除

書式

$ route [オプション2] del [-net | -host] ターゲット [オプション3] 

オプション2

-A アドレスファミリプロトコルの種別(IPv4はinet4、IPv6はinet6)を指定する

オプション3

netmask ネットマスク値ネットマスクを指定する(例:255.255.255.0)
gw ゲートウェイアドレス宛先にパケットを送る際のゲートウェイアドレスを指定する
dev インターフェイス名インターフェイス名を指定する(例:eth0)

ルーティングテーブルを表示する

$ route -n

実行結果

[rin@centos ~]$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
[rin@centos ~]$ 

ルーティングテーブルの主な項目

項目説明
Destination対象ネットワーク/ホスト
Gatewayゲートウェイアドレス
Genmask対象ネットワークのネットマスク値(例:255.255.255.255の場合は対象がホスト、0.0.0.0の場合はデフォルトゲートウェイを示す)
FlagsU:経路が有効
H:対象がホスト
G:ゲートウェイを経由する
C:キャッシュエントリ
!:拒否経路
Metric対象までのホップ(通過する経路)の数
Refルートの参照数
Use経路参照回数
Iface経路として利用するネットワークインタフェース

IPv6ルーティングテーブルを表示する

$ route -A inet6

実行結果

[rin@centos ~]$ route -A inet6
Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
localhost/128                  [::]                       U    256 1      0 lo
fe80::/64                      [::]                       U    1024 1      0 eth0
[::]/0                         [::]                       !n   -1  1      0 lo
localhost/128                  [::]                       Un   0   3      0 lo
centos/128                     [::]                       Un   0   2      0 eth0
ff00::/8                       [::]                       U    256 3      0 eth0
[::]/0                         [::]                       !n   -1  1      0 lo
[rin@centos ~]$ 

静的ルーティングテーブルを追加設定する

$ route add -net IPアドレス netmask サブネットマスク gw ゲートウェイ

実行結果

#172.16.0.0/16のネットワークへの経路は、10.0.0.254をゲートウェイとする
[root@centos ~]# route add -net 172.16.0.0 netmask 255.255.0.0 gw 10.0.0.254
#172.16.1.1のホストへの経路は、10.0.0.254をゲートウェイとする
[root@centos ~]# route add -net 172.16.1.1 netmask 255.255.0.0 gw 10.0.0.254

デフォルトゲートウェイを設定する

$ route add default gw IPアドレス

実行結果

#デフォルトゲートウェイを10.0.0.1に設定する
[root@centos ~]# route add default gw 10.0.0.1