IX2015を通してiPhoneでVPNを張る
IX2015を通して、自宅LAN内のPPTPサーバーと、3G回線上のiPhoneとでVPNを張りました。その際、ハマってえらく苦労したので、メモ書きを残しておきます。
1.PPTPサーバーの用意
WindowsでもLinuxでもいいので、PPTPサーバーを用意します。
Linux(CentOS)での環境構築は、ここを参考にさせてもらいました。
CentOS 5.3 で PPTP-VPN サーバーを構築してみる
2.IX2015にポートフォワードを設定
PPPoEを設定しているインターフェースに、NAPTでポート番号1723とGREプロトコルにポートフォワードを設定します。例としてPPTサーバーのIPアドレスを192.168.5.30とすると、インターフェースの設定は以下のようになります。
interface FastEthernet0/1.1
encapsulation pppoe
auto-connect
ppp binding sonet
ip address ipcp
ip napt enable
ip napt static 192.168.5.30 47
ip napt static 192.168.5.30 tcp 1723
no shutdown
3.iPhoneでVPNを設定
iPhoneのVPNを設定します。僕はここを参考にさせてもらいました。
注意点ですが、ここで「RSA SecurID」をオンにして設定を保存するとアウトです。ルーター側がRSA SecurIDに対応していなければ接続に失敗するようになるのは当然ですが、「RSA SecurID」をオフに戻して設定を保存しても適用されず、内部的にはオンになったままになるようです。
ここでハマりました。パケットキャプチャを設定してGREパケットのやりとりを観察したところ、設定を元に戻しても、iPhoneが無茶な開始要求をPPTPサーバーに送って、PPTPサーバーに蹴られるようです。改めてiPhone側で新しい接続設定を作ったら、あっさり繋がりました。僕の環境では、必ず再現します(iOSのバージョンは4.2.1)。
追記:12/03/19
注意点:
GREプロトコルをVPNサーバーにポートフォワードしてしまうと、このVPNサーバーしか、他所のVPNサーバーへの接続ができなくなってしまうようです。上記の例だと、たとえば192.168.5.X系のマシンが192.168.12.XのVPNサーバーに接続したいといった場合、192.168.5.30のマシンしかVPN接続に成功しません。