route 〜ルーティングテーブルの表示/設定を行う 加地眞也 2001/11/1 |
目的と用途 |
routeコマンドは、IPパケットをルーティングするためのルーティングテーブルの内容表示と設定を行う。ルーティングテーブルは、おもにOSが管理するルーティング情報を保管したメモリテーブルだ。テーブルのエントリーが経路を表している。経路はネットワークまたはホストへ到達するために通過する必要のあるゲートウェイを表している。
ここで、ルーティングテーブルの管理とは、
- ルーティングテーブルの表示と確認
- ルーティングテーブルへの経路の追加、削除、変更
を意味する。
書式 |
●Windowsの場合
route[ -f][ -p][ PRINT| ADD| DELETE| CHANGE[ 宛先IPアドレス][ MASK サブネットマスクアドレス[ ゲートウェイIPアドレス][ METRIC メトリック数][ IF インターフェイス名]]
-f
|
ルーティングテーブルのすべての経路情報をクリアする |
-p
|
ADD(追加)時に指定すると、追加した経路は次回以降のOS起動時にも自動的に追加される。指定しない場合は今回限りの設定となる。PRINT(表示)時に指定すると、このオプションで追加した経路のみを表示する*1 |
PRINT
|
ルーティングテーブルを表示する |
ADD
|
経路を追加する |
DELETE
|
経路を削除する |
CHANGE
|
すでに登録されている経路を変更する |
MASK
|
経路が使用するサブネットマスクアドレスを指定する |
ゲートウェイIPアドレス
|
経路が使用するゲートウェイIPアドレスを指定する |
METRIC
|
経路のメトリック値を1〜9999までの範囲で指定する |
IF
|
経路が割り当てられるインターフェースを指定する。インターフェイス名は「route PRINT」で表示される「Interface List」の16進値を指定する。省略されるとゲートウェイIPアドレスから最適と考えられるインターフェイスを自動選択する |
|
●Linuxの場合
――ルーティングテーブルの表示
route[ -n][ -v][ -e| -ee][ -F][ -C][ -A アドレスファミリ名]
――経路の追加
route[ -v][ -F] add{ -host| -net} 宛先IPアドレス[/プレフィックス][ gw ゲートウェイIPアドレス][ metric メトリック数][ netmask サブネットマスクアドレス][ mss MSSサイズ][ window TCPウィンドウサイズ][ irtt 初期ラウンドトリップ時間][ mod][ dyn][ reinstate][[dev] インターフェイス名]
――拒否経路の追加
route[ -v][ -F] add{ -host| -net} 宛先IPアドレス[/プレフィックス][ metric メトリック数] reject
――経路の削除
route[ -v][ -F] del{ -host| -net} 宛先IPアドレス[/プレフィックス][ gw ゲートウェイIPアドレス][ metric メトリッ ク数][[dev] インターフェイス名]
――バージョン情報の表示
route{ -V| --version}
――ヘルプの表示
route{ -h| --help}[ -A アドレスファミリ名]
-n
|
出力をIPアドレスのみに抑制する(DNS逆引きを行わない) |
-v
|
詳細モード |
-e
|
netstatと同様のフォーマットで表示する。-eeはnetstat形式のデータも含めた詳細情報を表示する |
-F
|
FIB(Forwarding Information Base:Linuxにおけるルーティングテーブルの実装方式。宛先IPアドレスをキーに経路情報を効率的に配置して性能の向上を図っている)テーブルを用いる。デフォルト |
-C
|
カーネルキャッシュでの情報を表示する |
-A
|
プロトコル種別。デフォルトは「inet(IPv4)」。ほかに「ipx(IPX)」「inet6(IPv6)」などが使用できる |
add
|
経路を追加する |
del
|
経路を削除する。削除する経路は宛先IPアドレスなど追加時に指定したパラメータが一致する経路である |
-host
|
ホストのための経路情報として登録する |
-net
|
ネットワーク(サブネット)のための経路情報として登録する |
宛先IPアドレス
|
経路の宛先IPアドレス |
gw
|
経路が使用するゲートウェイIPアドレスを指定する |
metric
|
経路のメトリック値を指定する |
netmask
|
経路が使用するサブネットマスクアドレスを指定する |
mss
|
経路におけるMSS(Maximum Segment Size:TCPパケットの最大データサイズ)を指定する。デフォルトはインターフェイスのMTU(ifconfigコマンドで指定)から導かれる。単位はバイト |
window
|
TCPにおけるwindowサイズを指定する。windowsサイズはTCPコネクションにおける最大連続転送サイズである。単位はバイト |
irtt
|
経路におけるTCPの初期ラウンドトリップ時間を指定する。ラウンドトリップ時間はTCPコネクションにおける通信途絶を判断するまでのタイムアウト時間である。単位はミリ秒。1〜12000の範囲で指定する |
mod/dyn/reinstate
|
ダイナミックルーティング時などに利用される診断用フラグを設定する |
dev
|
経路が割り当てられるインターフェイス名を指定する。インターフェイス名の指定がすべてのパラメータの最後である場合にはdevキーワードは省略できる |
reject
|
ルーティングを拒否する経路を指定する。デフォルトゲートウェイより優先するので、このホストで簡易に特定のネットワークへのルーティングを禁止したい場合には便利だ |
-V
|
バージョン情報を表示する |
-h
|
ヘルプを表示する |
使用方法 |
■ルーティングテーブルを確認する
Windowsでは「route PRINT」、Linuxでは「route」で現在のルーティングテーブルを確認できる。それぞれ細かな点で出力内容が異なるが、経路情報に関する基本は完全に同じだ。
●Windowsでの使用例 | |
|
●Linuxでの使用例 | |
|
上記の例は最も簡単な、つまりインターフェイスを1つだけ設定している場合だ。ホストのIPアドレスは「192.168.1.10(ホスト名:host1)」を設定している。実はほとんどの場合、自身が持つインターフェイスに関する経路はOSが自動的に登録してくれる。そのため、上記は自動設定の結果に過ぎない。Windowsでは、ブロードキャストアドレスへの経路(「192.168.1.255」「255.255.255.255」)やマルチキャストへの経路(「224.0.0.0」)なども追加されて経路数が増えているものの、内容はどちらもほぼ同じだ。
インターフェイス1つにつき、最低限でも「(a) 自身(ホスト)への経路」「(b) 自身の所属するネットワークへの経路」「(c) ローカルループバックへの経路」の3つは必ず必要になる。このうち「ローカルループバックへの経路」は、仮想インターフェイスのための経路だ。たとえインターフェイスが1つもなくとも、必ず自動的に設定される。
共通したルーティングテーブル列は以下のとおりだ。
(1) 宛先IPアドレス
(2) サブネットマスクアドレス
(3) ゲートウェイIPアドレス
(4) インターフェイス
(5) メトリック
「宛先IPアドレス」が、それぞれのサブネットにおける経路となる。このネットワークや、そこに所属するホスト向けのパケットは、経路として設定されたインターフェイスからゲートウェイへと転送されることになる。またサブネットマスクは、「宛先IPアドレスがネットワークを意味しているのか」「ホストなのか」を判断するのに使用される。この例では、「192.168.1.0」への経路は、サブネットマスクから導かれるホスト番号(下位8ビット)が0であることから、ネットワークへの経路であると分かる。Linuxでは、ゲートウェイが「*」の場合には、実際にゲートウェイを使用するのではなく、自身のインターフェイスから転送可能である(つまりルーティングを必要としない)ことを意味している。Windowsでも、ゲートウェイが自身のインターフェイスの場合は同様だ。
(d)はデフォルトゲートウェイの指定を意味している。この例では、「192.168.1.254」がデフォルトゲートウェイだ。経路は自身と自身の所属するネットワークしか登録されていないので、それ以外のすべてのルーティングは「192.168.1.254」へ送られることになる。
また、WindowsとLinuxでは固有の情報も表示されている。Windowsの「Interface List」は、設置されているインターフェイスの一覧だ。一番左の番号(16進数)はインターフェース個々の番号だ。Linuxでの「Flags」は経路の種類を示している。「U」は有効、「H」はホスト、「G」はゲートウェイを意味している。そのほか、ダイナミックルーティングを行っている場合には、固有のフラグが追加されることもある。また、「Ref」は経路が参照された回数、「Use」は経路が実際に使用された(ルーティングされた)回数を表している。
■経路の追加と変更を行うには
●経路の追加
経路をルーティングテーブルに追加するには、Windows/Linuxともに「route add」コマンドを用いる。
●Windowsでの使用例 |
●Linuxでの使用例 |
上記では、ネットワーク「192.168.10.0/24」への経路(ゲートウェイ「192.168.1.254」)を追加している。「192.168.10.0/24」はゲートウェイの先にあるので、メトリックは1となる。インターフェイスは省略することもできる。この場合は、ゲートウェイアドレスなどから最も適切と考えられるインターフェイスが自動的に選ばれる。
多くの場合、経路を追加するのは、インターフェイス(NIC)を追加したり、デフォルトゲートウェイだけでは対処できないネットワークが新たに追加された、などの場合だろう。例えば、以下の図1のような構成でのホストXからホストYへのルーティングでは、ホストZがネットワーク「192.168.99.0/24」を知らなければ、ルーティングは行えないので、ホストZに対して以下のような経路を追加するとよい。
図1 経路追加が必要なネットワーク構成例 |
●Linuxでの使用例 | |
|
|
赤字の部分が追加された経路
|
なお、この例のように、ほかのホストからのIPパケットを、インターフェイスから別のインターフェイスへと転送することを「IPフォワーディング」と呼ぶ。この機能は通常、デフォルトでは不可となっているので、使用する場合には明示的に使用を許可しなくてはならない。
Linuxでは「/etc/sysconfig/network」ファイルで
FORWARD_IPV4="no"
を「yes」に変更する。またはRedHat 6.2以降などでは、「/etc/sysctl.conf」の
net.ipv4.ip_forward = 0
を「1」に変更することで許可する場合もある。
Windows 2000ではレジストリを設定するか*2、またはRRAS(Routing and Remote Access Service)を使用したほうが無難だろう。
|
●継続的な経路の追加
これらのコマンドで追加された経路は一時的なもので、ホストをリブートすると無効になってしまう。そこで、Windowsでは「-p」オプションを追加することで、OSブート時に再設定される経路(Persistent
Routes)を追加できる。再設定される経路は「route PRINT」コマンドで「Persistent Routes」に表示される。Linuxではrouteコマンドでは行えないが、「/etc/sysconfig/static-routes」ファイルに経路を記述しておけば、OSブート時に再設定される。
●Windowsでの使用例 | |
|
|
赤字の部分が追加された再設定経路
|
●Linuxでの使用例 | |
|
●拒否経路の追加
Linuxでは拒否経路を追加することもできる。拒否経路には、そのホストでルーティングしない宛先を指定する。デフォルトゲートウェイを設定している環境で、ルーティングしたくないネットワークやホストがある場合に追加する。
●Linuxでの使用例 | |
|
|
「Flags」が「!」の経路が拒否経路
|
●経路の削除と変更
経路の削除は、Windowsは「route DELETE」コマンド、Linuxは「route del」コマンドで行う。
●Windowsでの使用例 | |
|
●Linuxでの使用例 | |
|
Windowsでは経路の変更は「route CHANGE」コマンドで行えるが、Linuxでは変更は行えない。「route del」と「route add」を組み合わせる必要がある。
■ルーティングにまつわるトラブルをいかに解決するか
●トラブル解決の第一歩は現状の把握から
ルーティングのトラブルは、ネットワーク障害において最もやっかいな部類に入る。まず、必ずしも自身のホストにおける問題でないことが多い。ほかの場所にあるルータや、中継に使っているホストのルーティング設定ミスが問題だとすると、すぐには原因がつかみにくい。また影響範囲が大きく、深刻な問題を起こしやすい。ダイナミックルーティングを使っていると、設定ミスがほかの機器に伝播してしまうこともある。
問題を早急に収束させるためにも、普段からネットワーク構成がどうなっているか、本来どのようにルーティングさせるべきとしているか、きちんとまとめて把握しておくようにしよう。あるべき理想の姿と、現状の障害の様子を比較することは、原因調査の第一歩である。
経路情報は非常に複雑なので、経路図を覚えるのも無理がある。経路の設計書など資料を管理するのはもちろんだが、ルータや中継ホストのルーティングテーブルを正常に稼動している際にダンプして保存し、障害時に比較できるようにしているケースもある。台数が多いと逆に煩雑になるだけだが、ネットワークの根幹に設置しているなど、ポイントとなる機器のみを対象にしてもいいだろう。単純だが実は意外に効果がある方法だ。いずれにせよ、普段からの準備が解決の速度を決めると心がけよう。
●ネットワークコマンドで状況を探る
ルーティングの状態を確認するには、まずは「traceroute(tracert)」コマンドを用いるのがベストだ。もっとも、traceroute(tracert)コマンドはある特定ホストから別のホスト間の経路についてだけ表示するものだともいえる。ただ1つの経路で調査するだけでなく、複数のホストから調査を行って比較する必要もある。もし複数の調査結果が同じルータやホストを示していれば、ほぼ原因は絞れる。
●有効なサブネットマスク/ゲートウェイが使用されているか?
原因となるルータやホストが特定できたら、そこで使用されているルーティングテーブルが適切かどうかの判断を行うわけだが、意外に多いミスはサブネットマスクの間違いだ。すでに述べたように、サブネットマスクはサブネットのネットワーク番号を決定するのに使われる。つまり、宛先IPアドレスがマッチしないと判断されて、別のゲートウェイに転送されたり破棄されてICMPエラーになっているかも知れない。ゲートウェイの設定ミスでも、もちろん同じ現象を引き起こす。
また、デフォルトゲートウェイの設定も見落としがちだ。便利なために必要がなくともつい設定してしまい、設定間違いからルーティングミスにつながる場合もある。デフォルトゲートウェイは、ほかのすべてのネットワークを意味する「ワイルドカード」でしかない。決して最適なゲートウェイということではないので注意しよう。
●メトリックは適切か?
特定ホストに対して複数の経路があり得る場合、その経路選択の判断に使用されるのがメトリックだ。このメトリックは、ダイナミックルーティングを使用している場合には動的に更新されるため、実際に運用してみると設計時の想定動作と異なる、という場合もある。
もっとも、動的に変更された距離(ホップ数)や回線品質によって経路を変更できるのがダイナミックルーティングのメリットなので、それで問題ないということでもいいが、RIP/RIP2ではその経路が何らかの問題で使用不可だと判断すると、メトリックを非常に大きな数値にして使用しないようにしてしまう。実際に稼働しているシステムでのメトリックの変化にも着目するようにしよう。
●不用意にRIP/RIP2が使用されていないか?
ダイナミックルーティング、特にRIP/RIP2の場合、ネットワーク内に予想外のroutedなどが稼働していると、自動的にその情報を受け取り、ルーティングテーブルが混乱してしまうことがある。特に、送出されたルーティングテーブルがテスト用など不適切なものだと、間違ったルーティングテーブルがネットワーク全体にあっという間に広まってしまう。復旧するには、予定外のroutedを停止し、混乱したルータやホストのルーティングテーブルを修正して回るなどしかない。非常に危険なミスなのだが、実際に多いケースでもある。
これを防ぐためには、根幹となるルータやホストではスタティックにルーティングテーブルを設定し、routedは受信不可/送信のみ可能とする、などの方法が考えられる。
関連記事 | |
ルーティングの設定は正しいか? ルーティングの仕組みを理解して設定を見直す |
|
関連ネットワーク・コマンド/ツール | |
route 〜ルーティングテーブルの設定/表示 |
|
traceroute(tracert) 〜ネットワークの経路を調査する |
|
ネットワークトラブル解決法
|
ネットワークコマンド使い方
|
ネットワーク・コマンドでトラブル解決
トラブルシューティングに便利な各種コマンド/ツール事典。各ツールの活用法をまとめたTipsも順次アップデート!
- 第1回 つながらないネットワークの原因を特定する!
- 第2回 ネットワークトラブル、まずはホストの設定を見直そう!
- 第3回 ルーティングのトラブル、まずはその仕組みから理解!
- 第4回 イーサネットの通信は正しく行えているか?
- 第5回 TCP/UDPの接続ステータスを確認しよう!
- 第6回 DHCPの自動設定機能をうまく使いこなすコツは?
- 第7回 DNSの設定と動作は正しいか?
コマンドを使ってトラブルシューティング
社内のPCが突然、メールを受信できなくなり、Webも見られない環境になってしまった。そんなとき、どのように対処するべきか
- 第1回 LANから外に出られない!?
- 第2回 どうして課長だけプリントできない?
- 第3回 ネットワークに同じIPアドレスが2つある?
- 第4回 同じメールしか受信できない!?
- 第5回 ファイルがアップロードできない?
- 第6回 私だけネットワークにつながらない!?
- 第7回 特定のサイトにだけアクセスできない
- 第8回 無線LANでメールがたまに受信できない?
- 第9回 外部を勝手に攻撃しているのは誰?
- 第10回 夜になるとネットワークが遅くなる?
- 最終回 怪しいサイトに飛ばされるんだけど
ツールを使ってネットワーク管理
名前しか知らない後輩君がやってきた。彼によると、コマンドはすでに古くツールがクールだという。ならば教えてもらおうではないか
- 第1回 後輩のツール君曰く、コマンドはもう古い!?
- 第2回 勝手にネットにつないでるマシンを探せ!
- 第3回 私用メールする子にお仕置きを
- 第4回 OSやアプリケーションの箱がなくなっても大丈夫?
- 第5回 俺の「パスワード:*****」って何でしたっけ?
- 第6回 ユーザー名と同じ安易なパスワードを撲滅せよ!
- 第7回 いきなりナウでヤングなWebサイトを管理しろって……
- 第8回 「POPFile」でスパムと無駄な時間は除去じゃ!
- 第9回 それはスパムか否か、POPFileの振り分けを鍛える
- 第10回 情報漏洩防止のためにPC監視!?「WatchYourPC」
- 第11回 とにかく社内でWinnyの起動をやめさせたい
- 第12回 USBでコピーデータを家に持ち帰らせたくない
- 第13回 パスワード、記憶に頼っていて大丈夫?
- 第14回 サーバ異常をメールで知らせる統合監視ツール
- 第15回 メールサーバがいっぱいですよ、と警告されたら
- 第16回 出張中のメール送信にご用心!
- 第17回 安いホスティングに引っ越しって簡単にいうけど
- 第18回 WebサーバにFTPできないんですけど……
- 第19回 PC環境の移行。あなたならどうする?
- 第20回 サーバのリモートバックアップをさせたい
「Master of IP Network総合インデックス」 |
TechTargetジャパン
- デュアルスタック環境での名前解決(前編) (2013/8/26)
これまでの回で構築してきたデュアルスタック環境でIPv6ステートレス自動構成とDNSの関係を確認します - 肥大化、複雑化するWeb、高速化のポイントは? (2013/8/12)
テクノロジとビジネスの両面から、これから必要とされるWebサービスのカタチについてひも解きます - 5分で絶対に分かるSDN (2013/8/5)
仮想化技術の普及にともない「物理的な箱」の形で構築されてきたネットワークにも新しい変化が。そのキーワード「SDN」とは? - IPv4とIPv6のデュアルスタック環境を構築(後編) (2013/7/18)
前回に続き、コンピュータ側のIPv6アドレスの割り当て方法や仕組みについて学習します
|
|
- 来年は「U-50」大会も? シニアの血も沸く夏の戦い
- Hyper-Vの仮想マシンをインポートする
- 現実は「ソーシャル・ネットワーク」ではない
- HTML5開発者に送る3つの未来予測6つの脆弱性対策
- スナップ状態で画面レイアウトを切り替えるには?
- 膨大なビルド・テストで泣かないための継続的統合/CI
- クラウド時代にインシデント対応を軽視できない理由
- アプリをソーシャルにGoogle Play Game Services
- いまさら聞けないOpenStackコンポーネント
- 業務アプリ開発者が活用すべき開発技術&サービス
- ITエンジニアとしての声をお聞かせください
- 第380話 51歳のfacebook活用
キャリアアップ
- - PR -
イベントカレンダー
- - PR -
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
「ITmedia マーケティング」新着記事
動画広告がテレビCMを凌駕する日
リアルタイム入札(RTB)やリターゲティング、レコメンデーションといった「プログラマテ...
Yahoo!アプリエンジン――企業のモバイルアプリマーケティングを支援する
Yahoo!アプリエンジンは、iPhone/Android用のアプリ開発/運用を支援するコンテンツマネ...
メールマーケティングがうまくいかない3つの理由
依然としてメールマーケティグはマーケティング戦略の一翼を担っている。ClickZ.comに掲...