ルーティングテーブルの設定をテストするには? routeコマンドネットワーク管理の基本Tips

ルーティングテーブルの設定を一時的に変更し、内容を確認する際にはrouteコマンドを使います。

» 2015年08月25日 05時00分 公開
[海上忍@IT]

バックナンバー

連載バックナンバー

 本連載では、ネットワーク管理の基本コマンドを順を追って紹介していきます。基本書式と用法、主要なオプション、用例サンプルを示しますので、manやhelp代わりに通読し、各コマンドでできることを順次おさらいしてみてください。今回は、一時的なルーティングテーブル(IP経路テーブル)の変更に利用する「route」コマンドを紹介します。

 なお、本連載では、執筆時点の最新版「Red Hat Enterprise Linux(RHEL)」および「CentOS」環境で動作を確認しています。また、用法事例はIPv4(Internet Protocol version 4)ネットワークを前提にしています。コマンドのサンプルなどで一部環境に依存した出力例となる場合がありますので、その際には適宜ご自身の環境に合わせて読み替えてください。

 IP通信の経路情報を静的に設定するときには、「route」コマンドを利用するとルーティングテーブルを手動で編集できます。複数のネットワークインターフェースカード(NIC)を装備したLinuxマシンをルーターとして運用する場合などで、恒久的なルーティングを行う場合のテスト目的に利用できるコマンドです。

ルーティングテーブルを操作する書式

書式1:ルーティングテーブルを表示/設定する場合

route [オプション] [ターゲット]


書式2:ルーティングテーブルを設定する場合(経路の追加)

route add -net [宛先IP] netmask [サブネット] gw [GW IP] [NIC]


書式3:ルーティングテーブルを削除する場合(経路の削除)

route del [宛先IP/サブネット]


※[ ]は省略可能な引数を示しています。


routeコマンドとは?

 routeコマンドは、ルーティングテーブルの表示/設定を行います。特定の宛先ネットワークに対し、デフォルトとは異なるゲートウエイのIPアドレスを指定するときや、一時的にスタティックルート(静的ルート)を設定する際などに利用します。

 routeコマンドを引数なしで実行すると現在のルーティングテーブルが表示されます(書式1)。オプションに「add」を指定すると新しいルーティングテーブルが作成され(書式2)、「del」を指定すると既存のルーティングテーブルが削除されます(書式3)。なお、現在のルーティングテーブルの内容は一般ユーザーでも表示できますが、ルーティングテーブルの操作にはroot権限が必要です。

 routeコマンドを利用したルーティング設定は一時的なもので、ネットワークサービスあるいはシステムを再起動するとクリアされます。恒久的にルーティング設定を残す場合は、システム起動時に実行されるスクリプト(CentOSの場合、「/etc/sysconfig/network-scripts/route-<デバイス名>」)に記述を行う必要があります。

 なお、Linuxマシンをルーターとして使用する場合は、異なるネットワーク間のパケット転送(IPフォワード)を許可するために、「/proc/sys/net/ipv4/ip_forward」の値を「1」に設定しておく必要があります。また、恒久的なスタティックルーティングを行う場合は、routeコマンドではなく、「/etc/sysconfig/network-scripts/route-<デバイス名>」(CentOSの場合)や「/etc/sysconfig/network」(Red Hat Enterprise Linuxの場合)などのファイルを直接編集します。


routeコマンドの主なオプション

 routeコマンドの主なオプションは次の通りです。

表1 routeコマンドの主なオプション
オプション 意味
-A 指定したアドレスファミリーを使う
-C Linuxカーネルが持つルーティングテーブルを使う
-e netstatコマンドのフォーマットで表示する
-n ホスト名の名前解決を行わない(IPアドレスのまま表示)
-v 詳細な情報を出力する
add 経路を追加する
del 経路を削除する
gw ゲートウエイを指定する
netmask 経路を追加するときにサブネットマスクを指定する
target 対象とするネットワーク/ホストを指定する
-net ターゲットをネットワークとする
-host ターゲットをホストとする

 routeコマンドで出力される各項目の意味・内容は次の通りです。

表2 ルーティングテーブルに表示される項目の意味
項目 意味
Destination 宛先ネットワークまたは宛先ホスト
Gateway ゲートウエイのIPアドレス
Genmask 宛先のサブネットマスク(デフォルトゲートウエイの場合「0.0.0.0」)
Flags 経路の状態(U:経路が有効、H:宛先はホスト、G:ゲートウエイを使用、!:経路は無効)
MSS Max Segment Size(一度に送信できるパケットの最大長)
Window 一度に転送するデータサイズ
irtt TCP接続の初期ラウンドトリップ時間
Metric 宛先までのメトリック値(宛先までの距離)
Use 経路の参照回数
Iface 宛先経路を使うネットワークインターフェース

現在のルーティングテーブルの設定を確認するには?

 現在のルーティングテーブルの設定を確認する場合は、引数を与えずrouteコマンドを実行します。netstatコマンドと同じフォーマットで表示したい場合は、オプションに「-e」を指定します。さらに「-n」オプションを指定すると、ホスト名の名前解決を行わず、「netstat -rn」を実行したときとほぼ同じ出力が得られます。

$ route -en
Kernel IP routing table
Destination    Gateway      Genmask   Flags MSS Window irtt Iface
default        router       0.0.0.0   UG    0   0      0    eth0
※出力表示が崩れる場合はこちらをご覧ください。

参考記事「netstatコマンドとは?」(@IT)




ルーティングテーブルに新しい経路を追加するには?

 ルーティングテーブルに新たにスタティックルートを追加する場合は、「add」に加えて「-net」オプションで宛先ネットワークを、「netmask」に続けてサブネットマスクを、「gw」に続けてゲートウエイのIPアドレスを指定し、引数として「eth1」などのネットワークデバイス名を与えます(実行には管理者権限が必要です)。

 下のコマンド実行例の一行目は、「192.168.12.0/24」ネットワーク(サブネットマスク「255.255.255.0」)宛の通信のゲートウエイを「192.168.40.1」に設定しています。三行目のコマンドでは「-e」「-n」オプションを組み合わせて、netstatコマンド実行時のように設定内容を確認しています。

$ sudo route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.40.1 eth1
Password:
$ route -en
Kernel IP routing table
Destination    Gateway       Genmask        Flags MSS Window irtt Iface
default        router        0.0.0.0        UG    0   0      0    eth0
192.168.12.0   0.0.0.0       255.255.255.0  U     0   0      0    eth0
192.168.40.0   192.168.40.1  255.255.255.0  U     0   0      0    eth1
※出力表示が崩れる場合はこちらをご覧ください。

ホスト単位で経路情報を追加するには?

 ホスト単位でルーティング情報を設定する場合は、サブネットマスクを「255.255.255.255」(/32=サブネットマスクによるIP割り当てが1つのみ)とすればよいので、前述の「route add -net」でも設定できますが、「route add -host」を使用する方法もあります。

 下のコマンド実行例では「192.168.40.254/32」に宛てた通信のゲートウエイを「192.168.39.254」に設定しています。

$ sudo route add -host 192.168.40.254 gw 192.168.39.254 eth1

「ネットワーク管理の基本Tips」バックナンバー

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。