Mac OS X 10.8.4 で VPNを使うときに知っておきたいこと

Mac OS X 10.8.4 で VPNを使ったときに、DNSによる名前解決がうまくいかなくて困りました。ということで調べてみると、色々と知っておきたいことがあるようです。

PPTPによるVPN接続をしていたのですが、VPN接続した後にVPN内のWebサーバへアクセスしようとしたところつながりませんでした。そこで、digコマンドを使ってみたところ、DNSによる名前解決ができていませんでした。

ということで「VPN接続したときに参照するDNSを設定で追加しないといけないのか」とシステム環境設定のネットワークでVPNの詳細を開いてDNSタブでDNSサーバと検索するドメインにVPNで使う値を追加しました。このタイミングでは「単純なミスだな」と思ってました。

さて、改めてVPN接続をしてみると、なんということでしょう、やはりWebサーバへアクセスできません。困りました。Google検索で調べてみたところ、どうやらオプションタブで「すべてのトラフィックをVPN接続経由で送信」のチェックを入れないといけないようです。VPNに接続するということは、そこのLAN内にPCを持っていってネットワーク接続をするということなので、いろいろな安全性を考えると、チェックを入れた方が安全なのかもしれませんが、必要なパケットだけVPN経由としたいので、調べました。

結論としては、指定していたDNSサーバは接続先VPNのDMZにおいてあって、そこへのルーティングができていないことが問題でした。ということで、VPN接続をしたら、下記コマンドでルーティングを追加することにしました。192.168.100.0のネットワークがDMZになっていて、VPN内のネットワークのデフォルトゲートウェイが 192.168.1.254 という環境です。

$ sudo /sbin/route add -net 192.168.100.0 192.168.1.254

これで192.168.100.0のネットワークへのパケットは192.168.1.254のゲートウェイへ投げられるようになります。自分のマシンは192.168.1.0のネットワークにVPNでつながっているので、192.168.1.0のネットワーク向けのパケットは自動的に流れるようにルートが追加されています。ただ、192.168.100.0のネットワークへのパケットはルートを設定しないと自分のマシンのデフォルトゲートウェイ(たとえば自分のマシンが192.168.0.0のネットワークに接続しているとしたら192.168.0.1とかがデフォルトゲートウェイになっているはずなので、そのIP)へ流れてしまいます。それを、ルートを追加することで、192.168.1.254へ流れるようにするわけです。192.168.1.254のルータは192.168.100.0のネットワークへパケットを流せるので、パケットを受け取ったらきちんと192.168.100.0のネットワークへ流してくれます。

以上で「すべてのトラフィックをVPN接続経由で送信」のチェックをいれなくてもVPN内のDNSサーバへのリクエストができるようになって、VPN内のWebサーバへアクセスできるようになりました。めでたし、めでたし。

同じタグの記事: Mountain Lion
同じタグの記事: VPN
同じカテゴリの記事: Mac