特定の接続のみ VPN 経由させる方法。「すべてのトラフィックを VPN 経由で接続」にチェックは不要。
ネットワークから VPN 接続構成を作成し、難なく VPN 接続はできたのだけど、サーバーにつながらない。原因は ネットワーク > 詳細 > オプション > セッションオプション の「すべてのトラフィックをVPN経由で接続」にチェックが入っていなかったから。
まぁここに到達するまで大変だったけども、無事にサーバーには接続できた。
できたのはいいけど、このままだと態々 VPN でファイルアップして、表示の確認するときは、VPN を切って確認するというあまりにも面倒なことになる。
VPN の接続優先度を下げておき、特定のアドレスだけ VPN 接続できるように経路を追加する
- VPN接続の優先度を普段の接続方法の優先度より下げておく(図1)
- ネットワーク > 該当のVPN接続の詳細 > オプション > セッションオプション の「すべてのトラフィックをVPN経由で接続」のチェックを外す(図2)
と、下準備をした上で、VPN で接続。そのあとターミナルから以下コマンドを実行して、特定の接続先のみ VPN で接続するように設定を行う。
$ sudo route add -net xxx.xxx.xxx.xxx -interface ppp0
または
$ sudo route add -host hoge.example.com -interface ppp0
interface 名の確認方法は、VPN 接続をした上で以下で確認できる。
$ ifconfig
で、ppp0 というのがあればそれ。(複数PPPoE接続のインターフェースがあった場合、0の数字が違う場合がある?)
この状態で、VPN 接続を維持しながら指定したサーバーへアクセスしつつ、ウェブサイトの閲覧などが出来るようになった!
ただ、VPN 接続を切るとコマンドで追加したルーティング設定は無くなるので、VPN の接続を確立させる度に、コマンドを実行する必要があるのでちょっと面倒。(とはいえターミナルで↑キーを押下すれば履歴が出てくるから頻繁でなければ気にならないかな?)
- [mac] 特定の接続先のみVPN経由で接続する : レピカグループの技術者ブログ
- route – ルーティングテーブルの表示/設定を行う
- ifconfig – (IP)ネットワーク環境の確認/設定を行う
シェルスクリプトによる自動化
も出来るらしいのだけれども、そこまではやってない。
- Mac OS XでVPN張ったときに経路を自動で追加できるようにした | ytsuboi’s blog
- lllnorikolll@online » MacOS 10.6 SnowLeopard で 特定の接続先のみVPN経由する設定
※ Mac OS 10.9 Mavericks