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アドレスを表示する。名前解決しないので表示は速い |
| -e | netstat形式で表示する |
| -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の場合はデフォルトゲートウェイを示す) |
| Flags | U:経路が有効 |
| 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