有線LANと無線LANの優先度を切り替える
会社でノートPCを使っていると、無線LANと有線LANを使い分けたいことがあります。
イントラネットには無線でしかアクセスできないけど、
運用LANには有線でしかアクセスできないみたいなパターンですね。
こんな時、PCのルーティングテーブルが適切に設定されていないと、
無線で通信するべきネットワークに有線でつないだり、その逆の事態が生じたりします。
これを解消するのがrouteコマンドです。
クライアントOSはWindows 7、ネットワーク構成は以下の前提で説明していきます。
まず、route printコマンドでPCの現在のルーティングテーブルを確認します。
C:\Users\u123456>route print =========================================================================== インターフェイス一覧 11...f0 de f1 ** ** ** ......Intel(R) 82579LM Gigabit Network Connection 12...10 0b a9 ** ** ** ......Intel(R) Centrino(R) Advanced-N 6205 1...........................Software Loopback Interface 1 =========================================================================== IPv4 ルート テーブル =========================================================================== アクティブ ルート: ネットワーク宛先 ネットマスク ゲートウェイ インターフェイス メトリック 0.0.0.0 0.0.0.0 10.192.1.254 10.192.1.100 20 10.192.1.0 255.255.255.0 リンク上 10.192.1.100 266 10.192.1.100 255.255.255.255 リンク上 10.192.1.100 266 10.192.1.255 255.255.255.255 リンク上 10.192.1.100 266 127.0.0.0 255.0.0.0 リンク上 127.0.0.1 306 127.0.0.1 255.255.255.255 リンク上 127.0.0.1 306 127.255.255.255 255.255.255.255 リンク上 127.0.0.1 306 224.0.0.0 240.0.0.0 リンク上 127.0.0.1 306 224.0.0.0 240.0.0.0 リンク上 10.192.1.100 266 255.255.255.255 255.255.255.255 リンク上 127.0.0.1 306 255.255.255.255 255.255.255.255 リンク上 10.192.1.100 266 =========================================================================== 固定ルート: なし
この構成だと、有線LANでしか接続できないネットワークや
社内のプロキシでブラックリストに登録されているサイトにアクセスできません。
ここに有線LANを接続します。
C:\Users\u123456>route print =========================================================================== インターフェイス一覧 11...f0 de f1 ** ** ** ......Intel(R) 82579LM Gigabit Network Connection 12...10 0b a9 ** ** ** ......Intel(R) Centrino(R) Advanced-N 6205 1...........................Software Loopback Interface 1 =========================================================================== IPv4 ルート テーブル =========================================================================== アクティブ ルート: ネットワーク宛先 ネットマスク ゲートウェイ インターフェイス メトリック 0.0.0.0 0.0.0.0 10.192.1.254 10.192.1.100 20 10.192.1.0 255.255.255.0 リンク上 10.192.1.100 266 10.192.1.100 255.255.255.255 リンク上 10.192.1.100 266 10.192.1.255 255.255.255.255 リンク上 10.192.1.100 266 127.0.0.0 255.0.0.0 リンク上 127.0.0.1 306 127.0.0.1 255.255.255.255 リンク上 127.0.0.1 306 127.255.255.255 255.255.255.255 リンク上 127.0.0.1 306 192.168.1.0 255.255.255.0 リンク上 192.168.1.100 261 192.168.1.100 255.255.255.255 リンク上 192.168.1.100 261 192.168.1.255 255.255.255.255 リンク上 192.168.1.100 261 224.0.0.0 240.0.0.0 リンク上 127.0.0.1 306 224.0.0.0 240.0.0.0 リンク上 192.168.1.100 261 224.0.0.0 240.0.0.0 リンク上 10.192.1.100 266 255.255.255.255 255.255.255.255 リンク上 127.0.0.1 306 255.255.255.255 255.255.255.255 リンク上 192.168.1.100 261 255.255.255.255 255.255.255.255 リンク上 10.192.1.100 266 =========================================================================== 固定ルート: なし
有線LANに接続しているので有線LAN向けの通信ができそうですが、デフォゲが無線LANルータの方を向いているので、
宛先ノードが自分と同じネットワークに存在しない場合、
パケットが無線LANルータの方に行ってしまいます。
かといって、すべてのパケットを有線LAN経由にすると、今度は無線LANでしか
通信できないネットワークと通信できなくなってしまいます。
案1
要件を以下のように定めます。
- 無線LAN経由でしか通信できないネットワーク宛のパケットは必ず無線LANルータ経由にする。
- 宛先が自分と同じネットワークに存在しないパケットは、
- PCにLANケーブルが接続されている時はそっち経由にする。
- 接続されていない時は無線LANルータ経由にする。
実行するコマンドは以下の通りです。
C:\Users\u123456>route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.254 metric 10
デフォルトルートを有線LANルータ宛に設定。メトリックが無線LANルータよりも小さくなるように。
-pは再起動後もルートを維持するオプション。
C:\Users\u123456>route -p add 10.240.0.0 mask 255.255.0.0 10.192.1.254
イントラネット宛の通信は必ず無線LANルータ経由にする。
メトリックは省略すると1になる。
なお、不幸にも有線LANと無線LANでネットワークアドレスが重複してしまう場合は、
route printコマンドの一番上に出てくるインタフェースを番号で指定します。(今回は不要です)
C:\Users\u123456>route -p add 10.240.0.0 mask 255.255.0.0 10.192.1.254 if 12
これで完成となりますが、実はこの設定だと以下の問題があって実用性に乏しいです。
- DNSの名前解決が有線LAN経由になるため、社内システムのホスト名を解決できない。
案2
上記の問題を解決するために、仕様を以下のように変更します。
- 基本は無線LANルータ経由で通信する。
- 有線LANで接続したいネットワークだけroute addで追加する。
コマンドは次のとおりです。
C:\Users\u123456>route delete 0.0.0.0 C:\Users\u123456>route delete 10.240.0.0
先程登録したルートを削除します。
C:\Users\u123456>route -p add 0.0.0.0 mask 0.0.0.0 10.192.1.254 metric 20
デフォルトゲートウェイを無線LANルータにします。
C:\Users\u123456>route -p add 173.194.38.96 mask 255.255.255.240 192.168.1.254
有線LANで接続したいルートを個別に登録します。
ブラウザで閲覧する時はプロキシの例外設定を忘れないようにしてください。
ルーティングテーブルの最終形は次のようになります。
C:\Users\u123456>route print =========================================================================== インターフェイス一覧 11...f0 de f1 ** ** ** ......Intel(R) 82579LM Gigabit Network Connection 12...10 0b a9 ** ** ** ......Intel(R) Centrino(R) Advanced-N 6205 1...........................Software Loopback Interface 1 =========================================================================== IPv4 ルート テーブル =========================================================================== アクティブ ルート: ネットワーク宛先 ネットマスク ゲートウェイ インターフェイス メトリック 0.0.0.0 0.0.0.0 10.192.1.254 10.192.1.100 20 10.192.1.0 255.255.255.0 リンク上 10.192.1.100 266 10.192.1.100 255.255.255.255 リンク上 10.192.1.100 266 10.192.1.255 255.255.255.255 リンク上 10.192.1.100 266 127.0.0.0 255.0.0.0 リンク上 127.0.0.1 306 127.0.0.1 255.255.255.255 リンク上 127.0.0.1 306 127.255.255.255 255.255.255.255 リンク上 127.0.0.1 306 173.194.38.96 255.255.255.240 192.168.1.254 192.168.1.100 6 192.168.1.0 255.255.255.0 リンク上 192.168.1.100 261 192.168.1.100 255.255.255.255 リンク上 192.168.1.100 261 192.168.1.255 255.255.255.255 リンク上 192.168.1.100 261 224.0.0.0 240.0.0.0 リンク上 127.0.0.1 306 224.0.0.0 240.0.0.0 リンク上 192.168.1.100 261 224.0.0.0 240.0.0.0 リンク上 10.192.1.100 266 255.255.255.255 255.255.255.255 リンク上 127.0.0.1 306 255.255.255.255 255.255.255.255 リンク上 192.168.1.100 261 255.255.255.255 255.255.255.255 リンク上 10.192.1.100 266 =========================================================================== 固定ルート: ネットワーク アドレス ネットマスク ゲートウェイ アドレス メトリック 0.0.0.0 0.0.0.0 10.168.195.254 20 173.194.38.96 255.255.255.240 192.168.1.254 1 ===========================================================================
その他
今回はWindowsのrouteコマンドをご紹介しましたが、Linuxにもrouteコマンドがあります。
書き方は異なりますが、基本的な動作は同じだと思われるので、詳しいことは以下のサイトなどをご覧ください。
Linuxコマンド集 - 【 route 】 ルーティング・テーブルを表示・設定する:ITpro
課題
案1で、名前解決だけを無線LAN経由にできれば問題は解決できたのではないかと思いますが、その方法が分かりませんでした。
分かり次第追記しますが、ご存知の方がいればご教示ください。