ルーターを超えるネットワーク通信で重要な役割を担う「ルーティングテーブル」。Windows OSのルーティングテーブルを変更しなければならない時、どうやって操作すればいいのか? 標準のコマンド「route」の基本的な使い方を解説する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
対象OS:Windows 8.1/Windows 10/Windows 11、Windows Server 2012/Windows Server 2012 R2/Windows Server 2016/Windows Server 2019/Windows Server 2022
※会員登録(無料)をすると、🔒の付いているセクションを読むことができます。
TCP/IPでは、IPアドレスに基づいてネットワークパケットのルーティングを行っている。このルーティング処理において重要な役割を持つのが「ルーティングテーブル」(ルートテーブル)である。
ルーティングテーブルには、宛先となるネットワークアドレス(とネットマスク)と使用するネットワークインタフェースなどを記録した情報(エントリ)が多数格納されている。
IPパケットのルーティング処理では、パケットの宛先IPアドレスがどのルーティングテーブルのエントリに合致するかを調べ、合致するものがあれば、指定されたネットワークインタフェースへと送出する。また、どのエントリにも合致しなければ、「デフォルトゲートウェイ」として指定されているルーターへとパケットが送られる。
このように、TCP/IPのルーティング処理では、ルーティングテーブルが重要な役割を担っている。
とはいっても、一般的な用途では、PCのルーティングテーブルを手動で変更する必要性は少ない。
だが、ルーターに頼ることなく、PCから同時に2カ所以上のネットワークへ接続しなければならないような場合には、そのルーティングテーブルをメンテナンスする必要がある。例えば、通常の社内ネットワークや一時的に構築されたローカルネットワーク、VPN回線、バックアップ用のインターネット回線などへ同時に接続する、といった状況が挙げられる。
本Tech TIPSでは、Windows OSにおけるルーティングテーブルの管理方法について簡単に解説する。ルーティングテーブルの操作には、どのWindows OSにも標準装備されている「route.exe」コマンドをコマンドプロンプト上で使用する(PowerShellやGUIでも操作は可能だが、本稿では触れない)。
現在のルーティングテーブルの状態を表示するには、「route print」コマンドを実行する(「netstat -r」コマンドでも全く同じ情報が得られる)。
ルーティングテーブル(ルートテーブル)は、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」コマンドを使用する。
route <オプション> add <宛先> mask <ネットマスク> <ゲートウェイ> metric <メトリック値> if <インタフェース番号>
その他の詳細については、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」コマンドを実行した場合、そのシステム(Windows OS)を再起動すると、追加したルートは消えてしまう。
再起動後も永続的に残したい場合は、「-p」オプションを付けて「route add」コマンドを実行する。
Copyright© Digital Advantage Corp. All Rights Reserved.