2019年09月18日更新
Windowsのroute addコマンドで新しいルート追加!コマンド操作方法を解説!
route addコマンドを実行してIPアドレスを設定すれば、Windowsのルーティングテーブルに新しい通信ルートを追加することが出来ます。Windowsでのroute addコマンドの操作方法や、ネットワーク障害発生時の対処法などをまとめました。
目次
- 1Windowsのroute addコマンドとは?
- ・クライアントPCやサーバーなどに設定できるコマンド
- ・デフォルトゲートウェイと異なるゲートウェイのIPアドレスを取得できる
- ・特定の宛先をルーティングテーブルに追加できる
- 2Windowsのroute addコマンドでルーティングテーブルを表示する方法
- ・ルーティングテーブルとは?
- ・route printコマンドを使って表示する
- 3【Windowsのroute addコマンドの操作方法】追加
- ・route addコマンドを使って新しいルートを追加
- ・route addコマンドの書式を解説
- 4【Windowsのroute addコマンドの操作方法】削除
- ・route deleteコマンドを使ってルートを削除
- ・route deleteコマンドの書式を解説
- 5Windowsのroute addコマンドでのルーティングテーブルの構成例
- ・継続的な経路を追加した場合
- ・拒否経路を追加した場合
- ・経路を変更した場合
- 6Windowsのroute addコマンドで問題が発生した場合は?
- ・ルーティングテーブルの設定を確認しよう
- ・ネットワークコマンドを使って問題の原因を特定しよう
- ・サブネットマスクやゲートウェイが正しいか確認しよう
- ・適切なメトリックかどうかを確認しよう
- ・RIPやRIP2の取り扱いが正しいかを確認しよう
- 7Windowsのroute addコマンドを使って操作してみよう
Windowsのroute addコマンドとは?
今やコンピュータは現代社会の情報通信をつかさどるインフラの一つです。Windows PCやスマートフォンなどのコンピュータがなければ、私たちの生活は成り立たないと言っても過言ではありません。
人間がコンピュータを効率的に操作するためには、インターフェイス(画面)の仕様が非常に重要です。コンピュータのインターフェイスは「CUI」と「GUI」に大別され、それぞれ以下の表のような特徴があります。
CUI (Character User Interface) |
キーボードを使って文字を打ち込みながらコンピュータを論理的に操作するコマンド入力方式のインターフェイス |
---|---|
GUI (Graphical User Interface) |
キーボードやマウスなどの入力機器を使ってウィンドウ・アイコン等をクリックしながらコンピュータを感覚的に操作できるインターフェイス |
プログラミングで挫折しそうになったら挫折してもいいんだよ。
— よこやま良平 (@_RYOHEIY) September 17, 2019
C言語からやったら絶対挫けるからHTMLとかPHPとかGUIで確認できる言語がおすすめだ!
GUIって簡単に言うとイメージ見ながら確認できるやつね。
CUIはコマンドだけの黒い画面のやつ。
きっと戻って来られるよ。
Windows OSはGUIを採用していますが、コマンドプロンプトを立ち上げればCUI操作も可能です。そしてWindowsのコマンドプロンプトには、GUI操作では実現できない高度なネットワーク制御を行えるメリットがあります。
Windowsのコマンドプロンプト画面は、以下の方法で表示させることが出来ます。(管理者権限で実行モード。)
- WindowsロゴキーとRキーを押す
- 「ファイル名を指定して実行」ダイアログに「cmd」と入力する
- ShiftキーとCtrlキーを押しながらEnterキーを押す
route addは、インターネットのライトユーザーなら全く使う機会のないコマンドです。しかし、別のネットワークのサーバーとの通信を確立する時など、高度なネットワーク制御を行う際には必須となる重要なコマンドでもあります。
ここでは、route addコマンドの特徴について解説していきます。
クライアントPCやサーバーなどに設定できるコマンド
route addとは、簡単にいえばネットワークを介して情報を送信する際の「経路」を追加するコマンドです。
ただし、ルータなどのネットワーク機器の設定をカスタマイズするためのコマンドではありません。クライアントPCやサーバーなどのOSにアクセスして、経路制御を直接行える強力な権限を持ったコマンドです。
デフォルトゲートウェイと異なるゲートウェイのIPアドレスを取得できる
route addの理解を深めるために、ネットワークの仕組みについて簡単に説明しておきます。
あるコンピュータから別のコンピュータにデータを送信するためには、転送する情報を細かく分割した「パケット」を何らかのルートで伝送しなければなりません。
このルートの決め方にはいろいろな方法がありますが、特別な理由がない場合、「デフォルトゲートウェイ」を経由したデフォルトルートが選ばれます。
ちなみにデフォルトゲートウェイとは、簡単に言えば異なるネットワークへ繋ぐルータのことです。情報受信側のIPアドレス(ネットワーク上の住所のようなもの)が送信端末側と異なるネットワークに所属するものであっても、デフォルトゲートウェイのおかげでデータを届けることが可能です。
[デフォルトゲートウェイ]
— IT用語BOT (@it_yogo_bot) September 13, 2019
所属するネットワークの外のコンピュータへアクセスする際に使用する「出入り口」の代表となるコンピュータやルータなどの機器。
基本的にデフォルトゲートウェイのIPアドレスはWindowsによって自動的に設定されていますが、ネットワーク接続のプロパティから手動で設定することも可能です。(ただしデフォルトゲートウェイの設定を間違えると通信不能に陥るリスクがあるので要注意。)
また、コンピュータはデフォルトゲートウェイとは異なるIPアドレスのゲートウェイを指定した転送ルート情報を複数持つことができます。これを「スタティックルート(Static Route)」または「固定ルート」と呼びます。
デフォルトゲートウェイもスタティックルートの一種であり、スタティックルートの追加・変更・確認等の操作を行う際に用いられるのがroute系のコマンドというわけです。
特定の宛先をルーティングテーブルに追加できる
データを目的地まで確実に送信するためには、ネットワーク上のデータ伝送ルートをコントロールする「ルーティング(経路制御)」が欠かせません。
Windows PCやサーバはルーティング情報を格納した「ルーティングテーブル」という表データを保存しており、データ転送はこのルーティングテーブルに沿って実行されます。
- デフォルトゲートウェイだけでは通信要件を満たせない
- デフォルトゲートウェイのルータが一時的に制御不能に陥っている
- 同時に2か所以上のネットワークに接続する必要がある
上記のようなルーティングに起因したネットワークの問題がある場合にのみ、コマンドプロンプトからroute addを実行してルーティングテーブルの調整を行うことになります。
Windowsのroute addコマンドでルーティングテーブルを表示する方法
route addはWindowsのコマンドプロンプトから実行するコマンドなので、CUIに慣れていない方は操作方法に戸惑うかもしれません。
ここでは、Windowsのコマンドプロンプトを操作してルーティングテーブルの内容を表示・確認する方法について解説していきます。
ルーティングテーブルとは?
ルーティングテーブルとは、PCやルーターなどネットワークに接続されたコンピュータに保管されているルーティング(経路制御)情報のデータベースです。データを送信する宛先への経路一覧が記録されています。
- ルーティングテーブルのエントリ(情報)を参照し、パケットの宛先IPアドレスと合致するものがあれば指定ルートのネットワークインターフェイスにパケットを送信する
- どのエントリにも合致しなければ、デフォルトゲートウェイとして指定されているルータにパケットを送信する
- route addコマンドを実行してコンピュータのルーティングテーブルに新規ルートを追加すれば、デフォルトゲートウェイを介さない別のネットワークで情報を送信できるようになる
いわば、ルーティングテーブルはコンピュータネットワークをつかさどる「地図」のようなものだと考えれば良いでしょう。
route printコマンドを使って表示する
TCP/IP(インターネットの標準通信プロトコル)をサポートしたシステムには、必ずルーティングテーブルが存在します。ユーザーはコマンドプロンプトを使えば、いつでも好きな時にルーティングテーブルの情報を確認することが出来ます。
Windowsでルーティングテーブルを表示したい場合、コマンドプロンプトを管理者として実行し、「route print」と入力してEnterキーを押すだけでOKです。
すると、現在設定されているルーティングテーブルがコマンドプロンプト上に表示されます。
route printコマンドで表示した結果の見方
難解な専門用語が並んでいて意味が分からないという方もいることでしょう。route printコマンドを使って表示したルーティングテーブルの見方を簡単にまとめると、以下の表のようになります。
Interface List (インターフェイス一覧) |
データの送信に使用されるインターフェイス一覧
|
---|---|
Network Destination (ネットワーク宛先) |
送信先ネットワークのIPアドレス |
Netmask (ネットマスク) |
送信先ネットワークのサブネットマスク(ネットワークの範囲を定義したもの) |
Gateway (ゲートウェイ) |
ゲートウェイのIPアドレス |
Interface (インターフェイス) |
パケットを送信するインターフェイスのIPアドレス |
Metric (メトリック) |
メトリック値(同じ経路が複数ある場合、メトリック値の低いルートが優先される) |
注意すべきポイント
Network Destination(ネットワーク宛先)とNetmask(ネットマスク)が共に0.0.0.0となっているルートがデフォルトゲートウェイを表しています。(諸事情により画像ではIPアドレスを黒塗り。)
普段意識することはありませんが、デフォルトゲートウェイはルーティング(経路制御)において重要な存在です。自分の使っているWindowsのデフォルトゲートウェイのIPアドレスを正確に把握しておきましょう。
【Windowsのroute addコマンドの操作方法】追加
route addコマンドを使えば、ルーティンテーブルに新規経路を追加することが出来ます。
それでは実際にコマンドプロンプトを起動して、route addコマンドの操作方法を見ていきましょう。
route addコマンドを使って新しいルートを追加
ここでは例として、宛先ネットワーク(IPアドレス:172.16.20.0、サブネットマスク:255.255.255.0)に対して、デフォルトゲートウェイとは異なるIPアドレスのゲートウェイ(192.168.0.1)を指定したルートを追加してみましょう。
コマンドプロンプトを管理者として実行し、「route -p add 172.16.20.0 mask 255.255.255.0 192.168.0.1 metric 1 if 4」と入力してEnterキーを押せば設定が完了します。Windows PCの再起動は必要ありません。
route printコマンドを使えば、先程まで無かった新しいルートが追加されていることを確認できるはずです。
route addコマンドの書式を解説
上記のroute addコマンドを例に、route addコマンドの書式について見ていきましょう。
route addコマンドは、「route [オプション] add [ネットワーク] mask [マスク] [ゲートウェイ] [オプション]」という構文になっています。
route -p add |
|
---|---|
ネットワーク (172.16.20.0) |
宛先ネットワークのIPアドレス |
マスク (255.255.255.0) |
宛先ネットワークのサブネットマスク |
ゲートウェイ (192.168.0.1) |
ゲートウェイのIPアドレス |
metric 1 | メトリック値が1のルートを追加するオプション設定(省略可能) |
if 4 | パケットを送信するインターフェイス番号を指定するオプション設定(省略可能) |
【Windowsのroute addコマンドの操作方法】削除
route deleteコマンドを使えば、route addコマンドで追加したスタティックルートをルーティングテーブルから削除することが出来ます。データ送信の妨げになる恐れがある不要なルートは、route deleteで消していきましょう。
それでは実際にコマンドプロンプトを起動して、route deleteコマンドの操作方法を見ていきましょう。
route deleteコマンドを使ってルートを削除
ここでは例として、先程追加した宛先ネットワーク(IPアドレス:172.16.20.0、サブネットマスク:255.255.255.0)への追加ルートを削除してみましょう。
コマンドプロンプトを管理者として実行し、「route delete 172.16.20.0」と入力してEnterキーを押せば設定が完了します。Windows PCの再起動は必要ありません。
route printコマンドを使えば、対象のルートがルーティングテーブルから削除されていることを確認できるはずです。
route deleteコマンドの書式を解説
上記のroute deleteコマンドを例に、route deleteコマンドの書式について見ていきましょう。
route deleteコマンドは、「route delete [ネットワーク] mask [マスク]」という構文になっています。
ネットワーク (172.16.20.0) |
削除したいルートの宛先ネットワークIPアドレスを指定する |
---|---|
mask | サブネットマスクに関するオプション設定 (maskの入力を省略した場合、ネットワーク部分が一致するルート情報が全て削除される) |
Windowsのroute addコマンドでのルーティングテーブルの構成例
route系のコマンドを活用すれば、様々なルートを追加してネットワーク環境を最適化することが可能です。Windowsにおけるルーティングテーブルの構成例を3つ見ていきましょう。
継続的な経路を追加した場合
通常、route addコマンドで追加したルートは、システムの再起動後に無効になってしまいます。しかし、route addに「-p」のオプションコマンドを加えることで、リブート後も対象のルート情報が保持されるようになります。
route printコマンドを使用すると、継続的な経路がウィンドウ下部の「Persistent Routes(固定ルート)」欄に表示されていることが分かるはずです。
「-p」を付け忘れると、対象のルート情報が消失してネットワーク障害の原因になることがあります。この操作方法をしっかり覚えておきましょう。
拒否経路を追加した場合
これはWindowsのコンピュータでは出来ない機能ですが、Linuxではroute addコマンドで「拒否経路」を追加することが可能です。拒否経路に設定したルートは、そのホストでルーティングされなくなります。
ここでは例として、宛先ネットワーク(IPアドレス:172.16.20.0、サブネットマスク:255.255.255.0)に対して拒否経路を追加してみましょう。
「route add -net 172.16.20.0 netmask 255.255.255.0 reject」と入力してコマンドを実行すれば設定が完了します。
Linuxで「route」コマンドを実行した際、「Flags」の欄に「!」と表示されていれば拒否経路が設定されています。
経路を変更した場合
ルーティングテーブルに追加したルートのIPアドレス等を変更したい場合は、一度route deleteで対象のルートを削除してからroute addで新規ルートを追加します。
しかし「route change」コマンドを使えば、すでにルーティングテーブルに追加してあるルート情報を直接書き換えることが出来ます。
例えば、「route change 0.0.0.0 mask 0.0.0.0 192.168.0.1」と入力したコマンドを実行すると、デフォルトゲートウェイのIPアドレスを192.168.0.1に変更することが可能です。ルーティングの手間を簡略化したい時は、この操作方法を活用しましょう。
Windowsのroute addコマンドで問題が発生した場合は?
ルーティングテーブルの設定操作は初心者には難しく、経験者でもケアレスミスをすることが珍しくありません。
実際、route addコマンドを実行する際に「-p」を付け忘れたせいで、システム再起動後に通信障害が発生してしまったというケースがしばしば話題になっています。
JP1管理サーバーで指定する経路で、 (Windowsなら) route add で -p しなかった、(Linuxなら)route add しかしなかった、だから再起動したら消えてAgentと通信出来ずジョブが進まず、という夏らしい怪談。 / みずほ証券6月の障害 再起動したら情報消えた:日本経済新聞 https://t.co/woUvZF99NY
— Arichika TANIGUCHI ♻ (@arichika) August 8, 2018
routeコマンドを正しく使用しなければ、ネットワークの不具合の原因になる可能性があります。Windows環境において、ルーティングのトラブルを迅速に解決する5つの方法・ポイントを見ていきましょう。
ルーティングテーブルの設定を確認しよう
ネットワーク障害を解決するために最初に行うべき行動は、原因の究明です。
しかしルーティングテーブルは複数の中継機器で設定できるため、通信障害が発生してからルーティングの詳細を調べ始めると、正確な原因の所在を突き止めるまでに多大な時間がかかってしまう恐れがあります。
日頃から自分の利用しているネットワークの構成やルーティングテーブルの設定を保存して、障害発生時に参照・比較できるようにしておくと良いでしょう。
ネットワークコマンドを使って問題の原因を特定しよう
ルーティングの異常をチェックしたい時は、特定ホストから別のホストまでの経路情報をトレースできる「traceroute(tracert)」というコマンドが非常に役立ちます。
例えば「tracert www.yahoo.co.jp」と入力したコマンドを実行すれば、宛先Yahoo!Japanまでに経由するホップ数・順序・レスポンス時間などのルート情報を確認することが出来ます。
複数回試してみて、同一の箇所で極端に長いレスポンス時間が観測されれば、そのルーター間がネットワークのボトルネックであると判断できます。
サブネットマスクやゲートウェイが正しいか確認しよう
ネットワーク障害の原因となっているホストを特定出来たら、そのルート情報のサブネットマスクやゲートウェイの設定を確認しましょう。
入力したIPアドレスが間違っていると、別のゲートウェイに転送されたり破棄されたりしてICMPエラーを引き起こします。一文字たりとも間違えないように細心の注意を払ってください。
適切なメトリックかどうかを確認しよう
サブネットマスクやゲートウェイだけでなく、メトリック値にも注意しましょう。特定ホストに対して複数の経路がある場合、メトリック値の小さいルートが優先されます。
しかし、ダイナミックルーティングのネットワークの場合、メトリック値が動的に変化して予想外の動作を示す可能性があります。実質、メトリック値の変更だけでルーティング作業が済む場合もあるので、メトリック値の変化には十分に気を配ってください。
RIPやRIP2の取り扱いが正しいかを確認しよう
RIP(Routing Information Protocol)は、ダイナミックルーティングの最適化に重宝する通信プロトコルです。しかし、間違ったルーティングテーブルの設定がネットワーク全体に伝播して通信障害の原因になるケースもあり、利用時には注意が必要です。
この事態を防ぐためにも、システムの根幹となるルーターやホストではルーティングテーブルをスタティックに設定した方が安全です。
Windowsのroute addコマンドを使って操作してみよう
今回は、route addコマンドの使い方やルーティングテーブルの操作方法、ネットワーク障害発生時の対処方法などをご紹介いたしました。最後に本記事の要点をまとめると、以下の5点が挙げられます。
- route addは、クライアントPCやサーバーなどに新規通信ルートを追加設定するコマンド
- route addコマンドを使用することで、デフォルトゲートウェイの不具合時などに別のスタティックルートを利用できるようになる
- route addに「-p」や「-f」などのオプションコマンドを付けることで、システム再起動後もルート情報を保持させたり他のルート情報を一括消去させたりすることが出来る
- 「route print」は現在のルーティングテーブルの確認、「route delete」は不要なスタティックルートの削除に使われるコマンド
- ネットワーク障害発生時には、「traceroute(tracert)」コマンドを使うと簡単にネットワークのボトルネックを探し出せる
普段CUI操作を行わない方にとってルーティングはハードルの高い作業のように思えますが、一度やり方を覚えてしまえばそれほど苦労はしないでしょう。
ルーティングテーブルの変更を行いたい方は、ぜひ本記事を参考にしてroute add系コマンドを使いこなせるようになってください。