VPN接続中に特定ホストやネットワークへの通信をVPNを経由せずに行いたい
これは何
VPN接続中にローカルネットワーク上のファイルサーバーやSSHホストに接続したい場合がある。
winならroute add
で経路を明示的に設定することでこれを設定できる
対象ネットワークの情報を集める
ローカルネットワーク上の対象マシン(VPNを経由せずアクセスしたいマシン)を10.1.1.1とする。
サブネットマスク
現在接続しているネットワークのサブネットマスクを調べる。
コントロール パネル\ネットワークとインターネット\ネットワーク接続
から対象NICのプロパティを開き確認する。ipconfigなどを使いコマンドラインから調べることもできる
デフォルトゲートウェイ
現在接続しているネットワークのデフォルトゲートウェイを調べる。
先ほどと同じようにNICの詳細を確認し、IPv4 デフォルトゲートウェイ
と書かれた項目があるのでこの値をメモしておく
ネットワークアドレス
対象ホストだけでなく、対象のネットワークを指定して通信先を成業する場合はそのネットワークアドレスも調べる。
10.10.0.1/16の場合は、10.10.0.0がネットワークアドレスとなる。
以下のようなサイトを使っても良いが、自分で計算することもできる
NICの情報を集める
ローカルネットワークと接続しているNICの番号を調べる。
ipconfig /all
で対象NICのMACアドレスを調べてメモしておく
( ここでは E0-2E-0B-3B-CA-59 となっている )
次にroute print
を実行し先頭にインターフェイス一覧
という項目がある
このリストの中から先ほどのNICを探し、その先頭の番号をメモしておく
ここで表示される項目名は先ほどの名前と違う(ここではNICのデバイス名)ので、MACアドレスを頼りに対象のものを見つける
( ここでは 12...e2 2e 0b 3b ca 59 ......Microsoft Wi-Fi Direct Virtual Adapter #2
となる。番号は先頭の12 )
経路を設定する
ip route
コマンドを実行しローカルネットワーク上のマシンに接続するための経路を設定する
筆者はwin環境にgsudoを導入しているので先頭にsudoをつけているが、導入せずにターミナルを管理者権限で開き、sudo以降のコマンドを実行してもいい
-p オプションはPermanentの略。再起動後もこの経路情報を保存する
10.1.1.1
はローカルネットワーク上の対象マシンのIP
default_gateway_ip
はデフォルトゲートウェイのIPに置き換える
metric 1
宛先ネットワークが複数ある場合の優先度を表す値。小さい方が優先される
if 21
ネットワークインターフェースを指定する。先ほど調べたNICの番号を入れる
# SSH先マシンだけを対象に
sudo route -p add 10.1.1.1 mask 255.255.255.255 default_gateway_ip metric 1 if 21
# 対象マシンのネットワークを指定する
sudo route -p add 10.1.0.0 mask 255.255.0.0 default_gateway_ip metric 1 if 21
参考にした資料