![]() |
Top > Master of Network > route - ルーティングテーブルの表示/設定を行う |
routeコマンドは、IPパケットをルーティングするためのルーティングテーブルの内容表示と設定を行う。ルーティングテーブルは、おもにOSが管理するルーティング情報を保管したメモリテーブルだ。テーブルのエントリーが経路を表している。経路はネットワークまたはホストへ到達するために通過する必要のあるゲートウェイを表している。 ここで、ルーティングテーブルの管理とは、
を意味する。
●Windowsの場合
■ルーティングテーブルを確認するWindowsでは「route PRINT」、Linuxでは「route」で現在のルーティングテーブルを確認できる。それぞれ細かな点で出力内容が異なるが、経路情報に関する基本は完全に同じだ。
上記の例は最も簡単な、つまりインターフェイスを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アドレス 「宛先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での使用例 |
![]() |
上記では、ネットワーク「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) 〜ネットワークの経路を調査する | |
![]() |
「連載 ネットワーク・コマンドでトラブル解決」 |
![]() |
![]() 一歩進んだ 企業ネットワークを ★OCN VPN Solution★ ![]() □□フォーラム開催□□ 様々な導入事例をご紹介 □無料事前登録受付中□ |
![]() |
![]() |
![]() プレゼント◆MCA対応 書籍+受験チケット ![]() 実録キャリア相談: 損保系プロマネ31歳 | ||||
◆OracleWorldのすべて 見せます、教えます! ◆高速PDF生成ツール 「biz-Stream」紹介 ◆数値化不可能なデータ を検索可能にするSPSS ◆シスコシステムズ: 緊急インタビュー! ◆必見!オラクル主催 技術者向け1Dayセミナー ◆ANA導入担当者が語る PDF活用/成功のカギ! ◆NTTコミュニケーション ズ:緊急インタビュー! ◆MCP資格をスキルの 土台作りに生かす方法
|
|
|
|
||||||||
@IT
新着記事![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||||||||||
Copyright(c) 2000-2002 atmarkIT 著作権はアットマーク・アイティまたはその記事の筆者に属します @ITに掲載されている記事や画像などの無断転載を禁止します 弊社へのご連絡は「@ITへのお問い合わせ」をご覧ください |