});目的と用途routeコマンドは、IPパケットをルーティングするためのルーティングテーブルの内容表示と設定を行う。ルーティングテーブルは、おもにOSが管理するルーティング情報を保管したメモリテーブルだ。テーブルのエントリーが経路を表している。経路はネットワークまたはホストへ到達するために通過する必要のあるゲートウェイを表している。ここで、ルーティングテーブルの管理とは、ルーティングテーブルの表示と確認ルーティングテーブルへの経路の追加、削除、変更を意味する。ADD(追加)時に指定すると、追加した経路は次回以降のOS起動時にも自動的に追加される。指定しない場合は今回限りの設定となる。経路が割り当てられるインターフェースを指定する。List」の16進値を指定する。netstatと同様のフォーマットで表示する。Base:Linuxにおけるルーティングテーブルの実装方式。宛先IPアドレスをキーに経路情報を効率的に配置して性能の向上を図っている)テーブルを用いる。デフォルトは「inet(IPv4)」。Size:TCPパケットの最大データサイズ)を指定する。デフォルトはインターフェイスのMTU(ifconfigコマンドで指定)から導かれる。TCPにおけるwindowサイズを指定する。windowsサイズはTCPコネクションにおける最大連続転送サイズである。経路におけるTCPの初期ラウンドトリップ時間を指定する。ラウンドトリップ時間はTCPコネクションにおける通信途絶を判断するまでのタイムアウト時間である。経路が割り当てられるインターフェイス名を指定する。ルーティングを拒否する経路を指定する。PRINT」、Linuxでは「route」で現在のルーティングテーブルを確認できる。それぞれ細かな点で出力内容が異なるが、経路情報に関する基本は完全に同じだ。<--(d)上記の例は最も簡単な、つまりインターフェイスを1つだけ設定している場合だ。ホストのIPアドレスは「192.168.1.10(ホスト名:host1)」を設定している。実はほとんどの場合、自身が持つインターフェイスに関する経路はOSが自動的に登録してくれる。そのため、上記は自動設定の結果に過ぎない。Windowsでは、ブロードキャストアドレスへの経路(「192.168.1.255」「255.255.255.255」)やマルチキャストへの経路(「224.0.0.0」)なども追加されて経路数が増えているものの、内容はどちらもほぼ同じだ。ローカルループバックへの経路」の3つは必ず必要になる。このうち「ローカルループバックへの経路」は、仮想インターフェイスのための経路だ。インターフェイスが1つもなくとも、必ず自動的に設定される。共通したルーティングテーブル列は以下のとおりだ。メトリック「宛先IPアドレス」が、それぞれのサブネットにおける経路となる。このネットワークや、そこに所属するホスト向けのパケットは、経路として設定されたインターフェイスからゲートウェイへと転送されることになる。サブネットマスクは、「宛先IPアドレスがネットワークを意味しているのか」「ホストなのか」を判断するのに使用される。この例では、「192.168.1.0」への経路は、サブネットマスクから導かれるホスト番号(下位8ビット)が0であることから、ネットワークへの経路であると分かる。Linuxでは、ゲートウェイが「*」の場合には、実際にゲートウェイを使用するのではなく、自身のインターフェイスから転送可能である(つまりルーティングを必要としない)ことを意味している。Windowsでも、ゲートウェイが自身のインターフェイスの場合は同様だ。(d)はデフォルトゲートウェイの指定を意味している。この例では、「192.168.1.254」がデフォルトゲートウェイだ。経路は自身と自身の所属するネットワークしか登録されていないので、それ以外のすべてのルーティングは「192.168.1.254」へ送られることになる。WindowsとLinuxでは固有の情報も表示されている。List」は、設置されているインターフェイスの一覧だ。左の番号(16進数)はインターフェース個々の番号だ。Linuxでの「Flags」は経路の種類を示している。「U」は有効、「H」はホスト、「G」はゲートウェイを意味している。そのほか、ダイナミックルーティングを行っている場合には、固有のフラグが追加されることもある。「Ref」は経路が参照された回数、「Use」は経路が実際に使用された(ルーティングされた)回数を表している。add」コマンドを用いる。上記では、ネットワーク「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に対して以下のような経路を追加するとよい。lo赤字の部分が追加された経路なお、この例のように、ほかのホストからのIPパケットを、インターフェイスから別のインターフェイスへと転送することを「IPフォワーディング」と呼ぶ。この機能は通常、デフォルトでは不可となっているので、使用する場合には明示的に使用を許可しなくてはならない。Linuxでは「/etc/sysconfig/network」ファイルでFORWARD_IPV4="no"を「yes」に変更する。0を「1」に変更することで許可する場合もある。Service)を使用したほうが無難だろう。\IPEnableRouterに「1」をセットする●継続的な経路の追加これらのコマンドで追加された経路は一時的なもので、ホストをリブートすると無効になってしまう。Routes)を追加できる。Routes」に表示される。Linuxではrouteコマンドでは行えないが、「/etc/sysconfig/static-routes」ファイルに経路を記述しておけば、OSブート時に再設定される。192.168.10.253:●拒否経路の追加Linuxでは拒否経路を追加することもできる。拒否経路には、そのホストでルーティングしない宛先を指定する。デフォルトゲートウェイを設定している環境で、ルーティングしたくないネットワークやホストがある場合に追加する。del」コマンドで行う。CHANGE」コマンドで行えるが、Linuxでは変更は行えない。add」を組み合わせる必要がある。■ルーティングにまつわるトラブルをいかに解決するか●トラブル解決の第一歩は現状の把握からルーティングのトラブルは、ネットワーク障害において最もやっかいな部類に入る。自身のホストにおける問題でないことが多い。ほかの場所にあるルータや、中継に使っているホストのルーティング設定ミスが問題だとすると、すぐには原因がつかみにくい。影響範囲が大きく、深刻な問題を起こしやすい。ダイナミックルーティングを使っていると、設定ミスがほかの機器に伝播してしまうこともある。問題を早急に収束させるためにも、普段からネットワーク構成がどうなっているか、本来どのようにルーティングさせるべきとしているか、きちんとまとめて把握しておくようにしよう。あるべき理想の姿と、現状の障害の様子を比較することは、原因調査の第一歩である。経路情報は非常に複雑なので、経路図を覚えるのも無理がある。経路の設計書など資料を管理するのはもちろんだが、ルータや中継ホストのルーティングテーブルを正常に稼働している際にダンプして保存し、障害時に比較できるようにしているケースもある。台数が多いと逆に煩雑になるだけだが、ネットワークの根幹に設置しているなど、ポイントとなる機器のみを対象にしてもいいだろう。単純だが実は意外に効果がある方法だ。いずれにせよ、普段からの準備が解決の速度を決めると心がけよう。●ネットワークコマンドで状況を探るルーティングの状態を確認するには、まずは「traceroute(tracert)」コマンドを用いるのがベストだ。traceroute(tracert)コマンドはある特定ホストから別のホスト間の経路についてだけ表示するものだともいえる。1つの経路で調査するだけでなく、複数のホストから調査を行って比較する必要もある。複数の調査結果が同じルータやホストを示していれば、ほぼ原因は絞れる。●有効なサブネットマスク/ゲートウェイが使用されているか?原因となるルータやホストが特定できたら、そこで使用されているルーティングテーブルが適切かどうかの判断を行うわけだが、意外に多いミスはサブネットマスクの間違いだ。述べたように、サブネットマスクはサブネットのネットワーク番号を決定するのに使われる。宛先IPアドレスがマッチしないと判断されて、別のゲートウェイに転送されたり破棄されてICMPエラーになっているかもしれない。ゲートウェイの設定ミスでも、もちろん同じ現象を引き起こす。デフォルトゲートウェイの設定も見落としがちだ。便利なために必要がなくともつい設定してしまい、設定間違いからルーティングミスにつながる場合もある。デフォルトゲートウェイは、ほかのすべてのネットワークを意味する「ワイルドカード」でしかない。最適なゲートウェイということではないので注意しよう。●メトリックは適切か?特定ホストに対して複数の経路があり得る場合、その経路選択の判断に使用されるのがメトリックだ。このメトリックは、ダイナミックルーティングを使用している場合には動的に更新されるため、実際に運用してみると設計時の想定動作と異なる、という場合もある。動的に変更された距離(ホップ数)や回線品質によって経路を変更できるのがダイナミックルーティングのメリットなので、それで問題ないということでもいいが、RIP/RIP2ではその経路が何らかの問題で使用不可だと判断すると、メトリックを非常に大きな数値にして使用しないようにしてしまう。実際に稼働しているシステムでのメトリックの変化にも着目するようにしよう。●不用意にRIP/RIP2が使用されていないか?ダイナミックルーティング、特にRIP/RIP2の場合、ネットワーク内に予想外のroutedなどが稼働していると、自動的にその情報を受け取り、ルーティングテーブルが混乱してしまうことがある。送出されたルーティングテーブルがテスト用など不適切なものだと、間違ったルーティングテーブルがネットワーク全体にあっという間に広まってしまう。復旧するには、予定外のroutedを停止し、混乱したルータやホストのルーティングテーブルを修正して回るなどしかない。非常に危険なミスなのだが、実際に多いケースでもある。これを防ぐためには、根幹となるルータやホストではスタティックにルーティングテーブルを設定し、routedは受信不可/送信のみ可能とする、などの方法が考えられる。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。