対象OS:Windows NT/Windows 2000 Professional/Windows XP Professional/Windows XP Home Edition/Windows 2000 Server/Windows 2000 Advanced Server
TCP/IPでは、IPアドレスに基づいてネットワーク・パケットのルーティングを行っている。このルーティング処理において重要な役割を持つのが「ルーティング・テーブル」である。
ルーティング・テーブルには、あて先となるネットワーク・アドレス(とネットマスク)と使用するネットワーク・インターフェイスなどを記録した情報(エントリ)が多数格納されている。
IPパケットのルーティング処理では、パケットのあて先IPアドレスがどのルーティング・テーブルのエントリにマッチするかを調べ、合致するものがあれば、指定されたネットワーク・インターフェイスへと送出する。また、どのエントリにもマッチしなければ、「デフォルト・ゲートウェイ」として指定されているルータへとパケットが送られる。
このように、TCP/IPのルーティング処理では、ルーティング・テーブルが重要な役割を担っている。
だが、多数のネットワーク・インターフェイスを装備して、ルーティング作業を専門に行うルータだけでなく、たった1つのインターフェイスしか持たないクライアントPCなどでもこの重要性は変わらない。
たとえインターフェイスが1つでも、TCP/IPプロトコル・スタックの中には、ローカル・ループバック・アドレスや自インターフェイスのIPアドレス、マルチキャスト・アドレス、ブロードキャスト・アドレス、そしてデフォルト・ゲートウェイなど、パケットのあて先は複数存在しているからである。内部ではやはりルーティング・テーブルを作成してルーティング処理を行っている。
一般的な用途では、このルーティング・テーブルの内容をユーザー自身が変更する必要性は少ない。
だが、同時に2カ所以上のネットワークへ接続しなければならないような場合には(例:通常の社内ネットワークや一時的に構築されたローカル・ネットワーク、VPN回線、バックアップ用のインターネット回線などへ同時に接続するなど)、ユーザー自身がルーティング・テーブルをメンテナンスする必要がある。
ここでは、Windows 2000やWindows XPにおけるルーティング・テーブルの管理方法について簡単に解説する。
ルーティング・テーブルを操作するには、コマンド・プロンプト上で「route.exe」コマンドを使用する。Windows 2000 Serverなどでは、「ルーティングとリモート アクセス(R&RAS)」を使ってGUIベースで管理することもできる。もっとも、内部的にはコマンド・プロンプト上で手動で操作するのと同じである。
ぜひともrouteコマンドを使いこなせるようになっておいていただきたい。
現在の状態を表示するには、「route print」コマンド(もしくは「netstat -r」)を利用する。これを実行すると、例えばWindows XPでは次のように表示される(これはDHCPでIPアドレスが割り当てられた場合の例)。
※Windows XPの例(DHCPクライアントの場合)
C:\>route print
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 90 cc 01 d7 f1 ...... VIA PCI 10/100Mb Fast Ethernet Adapter
===========================================================================
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.11 192.168.1.104 20 ……デフォルト・ルート
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.1.0 255.255.255.0 192.168.1.104 192.168.1.104 20
192.168.1.104 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.1.255 255.255.255.255 192.168.1.104 192.168.1.104 20
224.0.0.0 240.0.0.0 192.168.1.104 192.168.1.104 20
255.255.255.255 255.255.255.255 192.168.1.104 192.168.1.104 1
Default Gateway: 192.168.1.11
===========================================================================
Persistent Routes:
None ……「route -p add」で追加した恒常的なルート
Windows 2000の場合もほぼ同様であるが、以下のように、「Metric」の値がすべて「1」となっている点だけが異なる。
※Windows 2000の例(DHCPクライアントの場合)
C:\>route print
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 90 cc 01 d7 f1 ...... VIA PCI 10/100Mb Fast Ethernet Adapter
===========================================================================
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.11 192.168.1.104 1 ……デフォルト・ルート
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.1.0 255.255.255.0 192.168.1.104 192.168.1.104 1
192.168.1.104 255.255.255.255 127.0.0.1 127.0.0.1 1
192.168.1.255 255.255.255.255 192.168.1.104 192.168.1.104 1
224.0.0.0 224.0.0.0 192.168.1.104 192.168.1.104 1
255.255.255.255 255.255.255.255 192.168.1.104 192.168.1.104 1
Default Gateway: 192.168.1.11
===========================================================================
Persistent Routes:
None
「Metric(メトリック。距離という意味)」の値は、同じルートが複数存在する場合、どれを優先するかを決めるために使われる。数値が小さいほうが優先されるので(数値の大小関係だけが意味を持ち、絶対的な値には無関係)、例えばMetricが「1」と「20」の2通りのエントリがあると、「1」のルートの方が優先されることになる。
いずれの例でもアクティブなエントリとして、7つの行が表示されている。一番上に表示されている「Network Destination」が0.0.0.0で「Netmask」が0.0.0.0の行がデフォルト・ルートを表している。この行の意味は、「デフォルト・ゲートウェイは、インターフェイス192.168.1.104のLANにつながっている、192.168.1.11というルータである」という意味である。
LAN上に2つ以上のルータが存在し、それぞれ異なるネットワークへ接続されていたり、特別なネットワーク環境を構築したので、ある特定のルートだけを別のルータへ迂回させたいというような場合には、ルーティング・テーブルに対して新しいエントリを追加する必要がある。
また、(何らかの事情により)現在のデフォルト・ルート(デフォルト・ゲートウェイ)を変更したい場合にも、ルーティング・テーブルに対して新しいエントリを追加する必要がある。
ただしWindows 2000でこの操作を行う場合は、あらかじめ定義されているデフォルト・ルートを削除しておいてから、改めて新しいルートを追加する必要がある。そうでないと、同じMetricを持つルート(デフォルト・ルート)のエントリが2つできてしまい、意図したとおりに動作しない可能性があるからだ。
Windows XPの場合は、Metric指定なしでデフォルト・ルートを追加すると、デフォルトのMetric(20)よりも小さい、1がMetricとして使用される。
新しいルートを追加するには、「route add」コマンドを使用する。一般的には、次のような形式で利用する。
route [オプション] add ネットワーク mask マスク ゲートウェイ
このコマンドを使って、例えばデフォルト・ゲートウェイを「192.168.1.250」に変更するには、次のようにする。
route -f add 0.0.0.0 mask 0.0.0.0 192.168.1.250
「0.0.0.0 mask 0.0.0.0」は、あて先のネットワーク・アドレスもネットマスクも共に0.0.0.0にするための指定であり、これデフォルト・ルートを表している。
ネットマスクも忘れずに指定しておいていただきたい。これを付け忘れると(省略すると)、それはデフォルト・ルートではなく、0.0.0.0というただ1つだけのIPアドレスを表すことになる。特定の1つのIPアドレスだけへのルートを設定するならそれでもかまわないが(このような指定はめったに使うことはないが)、一般的には255.255.255.255以外のネットマスクを使い、ネットワーク全体を指すのが普通である。
先頭に-fを付けているのは、ルート情報の新規追加に先立って、現在のデフォルト・ルート情報を削除するためである(「route -f」だけでも実行できる)。これがないと、現在のデフォルト・ルート・エントリに加えて、もう1つのデフォルト・ルートのエントリが追加されることになり、正しくルーティングが行われるなくなる。
ただしWindows XPの場合は、デフォルトMetricとして1が使われるので、最初からあるルート(Metric 20)とは競合しない。だがWindows 2000では、最初からあるルートも新しく追加するルートもMetricが1なので競合が起こることになる。間違いを防ぐためにも、必ず-fを付けてroute addを実行するか、先に手動でデフォルト・ルートを削除するようにしよう。
そしてルート情報を追加/削除したら、必ずroute printコマンドで再確認するようにして欲しい。
デフォルト・ルート以外を追加したいのなら、ネットワークとネットマスク、そしてそのネットワークへのルーティングを仲介するルータのIPアドレスを指定する。例えば「10.0.0.0/8」のネットワークへのルータが「192.168.1.21」ならば、次のように指定すればよい。
route add 10.0.0.0 mask 255.0.0.0 192.168.1.21
特定のルート・エントリだけを削除するには、次のコマンドを使用する。
route delete ネットワーク [mask マスク]
このコマンドにより、指定されたルートだけが削除される。ネットマスクの値を指定しないと、「ネットワーク」部が合致するエントリがすべて削除される。同じネットワークに対して複数のルートがあり、その中の特定のエントリだけを削除したい場合は、ネットマスク(やゲートウェイ、インターフェイスなど)を指定するとよい。
route delete 10.0.0.0
このコマンドにより、先ほど追加したルート情報が削除される。ルートを削除したら、やはりroute printコマンドと使って再確認を忘れないようにしていただきたい。
■関連記事(Windows Server Insider)
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.