LoginSignup
16
17

More than 5 years have passed since last update.

route コマンドにおける小ネタいくつか

Last updated at Posted at 2016-06-14

経路制御テーブルを操作する、route コマンドの指定に関する小ネタです。

C:\>route /?

ネットワーク ルーティング テーブルを操作します。

ROUTE [-f] [-p] [-4|-6] command [destination]
      [MASK netmask]  [gateway] [METRIC metric]  [IF interface]

(中略)
  command      次のいずれかです:
                 PRINT     ルートを印刷します。
                 ADD       ルートを追加します。
                 DELETE    ルートを削除します。
                 CHANGE    既存のルートを変更します。
  destination  ホストを指定します。
  MASK         次のパラメーターが 'netmask' の値であることを指定します。
  netmask      このルート エントリのサブネット マスクの値を指定します。
               指定されない場合、既定値は 255.255.255.255 です。
  gateway      ゲートウェイを指定します。
  interface    指定されたルートのインターフェイス番号です。
  METRIC       宛先のコストなどのメトリックを指定します。

destination では CIDR 指定も可能

route add 192.168.2.0 mask 255.255.255.0 172.16.1.9

という指定は、

route add 192.168.2.0/24 172.16.1.9

のように簡略化して書けます。

「インターフェイス番号」とは

IF オプションで指定する「指定されたルートのインターフェイス番号」の調べ方です。たとえば、以下のようなホストがあるとします。いくつか項目を省略しています。

PS C:\> ipconfig /all

Windows IP Configuration
(中略)
Ethernet adapter Ethernet 2:

   Description . . . . . . . . . . . : AWS PV Network Device #1
   Physical Address. . . . . . . . . : 0A-2B-8D-29-FD-9D
   Link-local IPv6 Address . . . . . : fe80::edd3:771b:4e7d:fb8d%15(Preferred)
   IPv4 Address. . . . . . . . . . . : 172.16.1.12(Preferred)
(中略)
Ethernet adapter Ethernet:

   Description . . . . . . . . . . . : AWS PV Network Device #0
   Physical Address. . . . . . . . . : 0A-2B-E4-AE-FE-35
   IPv4 Address. . . . . . . . . . . : 172.16.1.9(Preferred)
(以下略)

このホストには元々1個のインターフェイス(AWS PV Network Device #0)があり、プライベートアドレスとして 172.16.1.9 を指定しています。その後インターフェイスを追加して 172.16.1.12 を割り当てました。後から追加したほうが "AWS PV Network Device #1" です。

次に、経路テーブルを表示します。

PS C:\> route print
===========================================================================
Interface List
 15...0a 2b 8d 29 fd 9d ......AWS PV Network Device #1
 12...0a 2b e4 ae fe 35 ......AWS PV Network Device #0
  1...........................Software Loopback Interface 1
 14...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
===========================================================================

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0       172.16.1.1       172.16.1.9     10
          0.0.0.0          0.0.0.0       172.16.1.1      172.16.1.12     10
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    306
(以下略)

IPv4 Route Table(日本語OSでは「IPv4 ルートテーブル」)上では Interface 欄は IP アドレスで表示されるので、ちょっと戸惑います。

Interface List(日本語OSでは「インターフェイス一覧」)により、"AWS PV Network Device #0" のインターフェイス番号は 12、"AWS PV Network Device #1" は 15 であることがわかります。

メトリック指定の罠

たとえばインターフェイス #1(172.16.1.12) のメトリック値を減らして優先度を上げようと、10 より少ない 5 を指定してみました。

route change 0.0.0.0 172.16.1.1 if 15 metric 5

ところが、これだと 10 から 15 に増えてしまいました。

どうも自動メトリック機能により、インターフェイス速度が 200Mbps 以上の場合は 10 がデフォルトとして設定され、コマンドラインの指定はそれに対する相対値になってしまうようです。かといって負の値を指定するとエラーで弾かれます。

しかたがないので、#0(172.16.1.9) のメトリック値を増やす事で、結果的に #1 の優先度を上げることができました。

route change 0.0.0.0 172.16.1.1 if 12 metric 2

ゲートウェイとして On-link(リンク上) を指定したい

Gateway 欄に On-link (日本語OSでは「リンク上」)とあるのは、そのインターフェイスに直結していることを示しています。直結していることを指定したい場合、ゲートウェイとして 0.0.0.0 を指定します。例)

route add 172.16.0.0/24 0.0.0.0
16
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
17