連載
» 2003年01月11日 00時00分 UPDATE

Tech TIPS:Windowsでルーティングテーブルを操作する

TCP/IPではルーティング・テーブルに基づいてIPパケットをルーティングしている。ルーティング・テーブルの表示にはroute print、ルート情報の追加にはroute add、削除にはroute deleteの各コマンドを使う。

[打越浩幸,デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象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 マスク ゲートウェイ

  • オプションには「-f」と「-p」がある。-fを付けると、ルートを追加する前に、現在のデフォルト・ルートを削除する。デフォルト・ゲートウェイを変更する場合に利用するとよい。-pを付けると、追加したルート情報が、次回の再起動後からもずっと有効になる。デフォルトでは、システムを再起動するとここで追加した情報は失われる。
  • ネットワークには、ルーティングのあて先となるネットワーク・アドレスを指定する。
  • マスクには、ルーティングのあて先となるネットワークのネットマスクを指定する。省略すると255.255.255.255。
  • ゲートウェイには、ゲートウェイ(ルータ)のIPアドレスを指定する
  • これ以外にもMetricや使用するインターフェイスを明示的に指定することも可能である。詳細についてはrouteコマンドのヘルプを参照のこと(単にrouteとだけ入力すると表示される)

 このコマンドを使って、例えばデフォルト・ゲートウェイを「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コマンドのヘルプを参照のこと

 このコマンドにより、指定されたルートだけが削除される。ネットマスクの値を指定しないと、「ネットワーク」部が合致するエントリがすべて削除される。同じネットワークに対して複数のルートがあり、その中の特定のエントリだけを削除したい場合は、ネットマスク(やゲートウェイ、インターフェイスなど)を指定するとよい。

route delete 10.0.0.0



 このコマンドにより、先ほど追加したルート情報が削除される。ルートを削除したら、やはりroute printコマンドと使って再確認を忘れないようにしていただきたい。

■関連記事(Windows Server Insider)


「Tech TIPS」のインデックス

Tech TIPS

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

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

メールマガジン登録

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