「route」コマンドでWindows OSのルーティングテーブルを操作するTech TIPS

ルーターを超えるネットワーク通信で重要な役割を担う「ルーティングテーブル」。Windows OSのルーティングテーブルを変更しなければならない時、どうやって操作すればいいのか? 標準のコマンド「route」の基本的な使い方を解説する。

» 2022年10月19日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Tech TIPS」のインデックス

連載目次

Windows OSのルーティングテーブルってどうやって変える?

対象OS:Windows 8.1/Windows 10/Windows 11、Windows Server 2012/Windows Server 2012 R2/Windows Server 2016/Windows Server 2019/Windows Server 2022


Windows PCの「ルーティングテーブル」を変えたい!

 TCP/IPでは、IPアドレスに基づいてネットワークパケットのルーティングを行っている。このルーティング処理において重要な役割を持つのが「ルーティングテーブル」(ルートテーブル)である。

 ルーティングテーブルには、宛先となるネットワークアドレス(とネットマスク)と使用するネットワークインタフェースなどを記録した情報(エントリ)が多数格納されている。

 IPパケットのルーティング処理では、パケットの宛先IPアドレスがどのルーティングテーブルのエントリに合致するかを調べ、合致するものがあれば、指定されたネットワークインタフェースへと送出する。また、どのエントリにも合致しなければ、「デフォルトゲートウェイ」として指定されているルーターへとパケットが送られる。

 このように、TCP/IPのルーティング処理では、ルーティングテーブルが重要な役割を担っている。

 とはいっても、一般的な用途では、PCのルーティングテーブルを手動で変更する必要性は少ない。

 だが、ルーターに頼ることなく、PCから同時に2カ所以上のネットワークへ接続しなければならないような場合には、そのルーティングテーブルをメンテナンスする必要がある。例えば、通常の社内ネットワークや一時的に構築されたローカルネットワーク、VPN回線、バックアップ用のインターネット回線などへ同時に接続する、といった状況が挙げられる。

 本Tech TIPSでは、Windows OSにおけるルーティングテーブルの管理方法について簡単に解説する。ルーティングテーブルの操作には、どのWindows OSにも標準装備されている「route.exe」コマンドをコマンドプロンプト上で使用する(PowerShellやGUIでも操作は可能だが、本稿では触れない)。

「route print」コマンドで現在のルーティングテーブルを表示させる

 現在のルーティングテーブルの状態を表示するには、「route print」コマンドを実行する(「netstat -r」コマンドでも全く同じ情報が得られる)。

「route print」コマンドで現在のルーティングテーブルを表示させる 「route print」コマンドで現在のルーティングテーブルを表示させる

 ルーティングテーブル(ルートテーブル)は、IPv4とIPv6それぞれに存在する。以下では主にIPv4を例に挙げて説明していく。

 この画面で押さえておくべきポイントを幾つか説明しておこう。

●「メトリック」とは?

 「メトリック」(Metric。距離という意味)の値は、同じルートが複数存在する場合、どれを優先するかを決めるために使われる。

 数値が小さいほうが優先される。ただし数値の大小関係だけが意味を持ち、絶対的な値には無関係だ。例えばメトリックが「1」と「20」の2通りのエントリがあると、「1」のルートの方が優先されることになる。

●「インターフェイス」とは?

 これはネットワークインタフェース(ネットワークカード、NIC)を指していて、イーサネットや無線LAN、携帯通信アダプタなどのインタフェースが該当する。

 route printによって出力される「インターフェイス一覧」枠には各ネットワークインタフェースが列挙され、その左端に識別用の番号(ここでは<インタフェース番号>とする)が表示される。後述する「route add」コマンドで特定のインタフェースを指定する場合には、「IF <インタフェース番号>」と指定する必要がある。

●デフォルトルートはどれ?

 IPv4のルーティングテーブルの一番上に表示されている「ネットワーク宛先」「ネットマスク」がどちらも「0.0.0.0」の行が、デフォルトルートを表している。

 この行の意味は、「デフォルトゲートウェイは、インタフェース『172.16.80.146』のネットワークにつながっている『172.16.64.1』というルーターである」という意味である。

「route add」コマンドで新しいルートを追加する

 以下のような環境や状況では、ルーティングテーブルに対して新しいエントリを追加する必要がある。

  • LAN上に2つ以上のルーターが存在し、それぞれ異なるネットワークへ接続している
  • または、特別なネットワーク環境を構築したので、ある特定のルートだけを別のルーターへ迂回(うかい)させたい

 新しいルートを追加するには、「route add」コマンドを使用する。

route <オプション> add <宛先> mask <ネットマスク> <ゲートウェイ> metric <メトリック値> if <インタフェース番号>



  • <オプション>には「-f」と「-p」がある。「-p」を付けると、追加したルート情報が、次回の再起動後からもずっと有効になる。デフォルトでは、システムを再起動すると、ここで追加した情報は失われる。「-f」を付けると、ルートを追加する前に、現在のゲートウェイの全エントリを削除する
  • <宛先>には、ルーティングの宛先となるネットワークアドレスを指定する
  • <ネットマスク>には、宛先ネットワークのネットマスクを指定する。省略した場合は「255.255.255.255」になる
  • <ゲートウェイ>には、ゲートウェイ(ルーター)のIPアドレスを指定する
  • 前述のメトリック値を手動で指定したい場合は<メトリック値>を指定する。省略すると自動的に決定される。複数のインタフェースのうち、特定のものの優先度を上げたい場合にはこれを指定することがある
  • 特定のインタフェースを指定したい場合は<インタフェース番号>を指定する

 その他の詳細については、routeコマンドのヘルプを参照していただきたい(単に「route」とだけ入力して実行すると表示される)。

 route addのようにルーティングテーブルを操作するコマンドを実行するには、管理者アカウントの権限が必要だ。そのため、以下の例を試す際には、必ず管理者権限でコマンドプロンプトを起動すること。

 さて、例えば「10.0.0.0/8」のネットワークへのルーターが「172.16.80.1」ならば、次のようなコマンドラインを実行すればよい。

route add 10.0.0.0 mask 255.0.0.0 172.16.80.1



 宛先のネットワークアドレスだけではなく、ネットマスクも忘れずに指定しよう。これを付け忘れると(省略すると)、それはネットワークではなく、「10.0.0.0」というただ1つだけのIPアドレスを表すことになる。

 特定の1つのIPアドレスだけへのルートを設定するならそれでもかまわないが、このような指定はめったに使うことはない。一般的には「255.255.255.255」以外のネットマスクを使い、ネットワーク全体を指すのが普通である。

 ルート情報を追加したら、必ずroute printコマンドで再確認しよう。

「route add」コマンドで新しいルートを追加する 「route add」コマンドで新しいルートを追加する

「route add -p」コマンドで永続的なルートを追加する

 特にオプションを指定せずに「route add」コマンドを実行した場合、そのシステム(Windows OS)を再起動すると、追加したルートは消えてしまう。

 再起動後も永続的に残したい場合は、「-p」オプションを付けて「route add」コマンドを実行する。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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