Hatena::ブログ(Diary)

ちくわストロガノフ

2011-01-26 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.iPhoneVPNを設定

iPhoneVPNを設定します。僕はここを参考にさせてもらいました。

iPhone 3G回線と自鯖をVPN接続

注意点ですが、ここで「RSA SecurID」をオンにして設定を保存するとアウトですルーター側がRSA SecurIDに対応していなければ接続に失敗するようになるのは当然ですが、「RSA SecurID」をオフに戻して設定を保存しても適用されず、内部的にはオンになったままになるようです。

f:id:kusaret:20110126212804j:image:h300

ここでハマりました。パケットキャプチャを設定して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接続に成功しません。

Connection: close