ゆきのぶ日記
2010/02/12(Fri) [長年日記]
■ [iPhone]PoptopでiPhoneのためのVPNサーバを作る
LinuxをiPhoneのためのVPNサーバにしたので、メモ。
動機
出先のWiFiを安心して使うことを目指す。
iPhoneを契約して気がついてみると、BBモバイルポイントやlivedoor WirelessなどのWiFiサービスを無料で使える状態になっていた。これらのサービスはスピードが速くて良いんだけど、セキュリティ的に不安が残る。
iPhoneがWiFiでどんな通信をしているのかは調べてないけど多分、契約者固有IDや、ウェブサービスのセッションIDやパスワードが飛び交っているんだろう。そう考えると、そう言う情報を誰でも見られる*1WiFiを安心して使うことはできない。少なくともTwitterのような、認証を伴うサービスを利用するのは怖すぎる。そこで、自宅までをVPNで接続し、全ての通信をVPN経由にすることで、自宅程度の安全性で通信できるようにしようと思った。
ソフトウェア
PPTPに対応したPoptopをrpmでインストールした。
サーバの設定
Poptopをインストール後、次の設定をした。
/etc/pptpd.conf
localip 192.168.10.1 remoteip 192.168.10.11-200
IPアドレスに関する設定。使っていないIPアドレスを適当に割り振る。
/etc/ppp/options.pptpd
ms-dns 192.168.0.1 ms-wins 192.168.0.1
こちらで用意したDNSサーバをに誘導。WINSは要らないかも知れないけど一応。
/etc/ppp/chap-secrets
OLn5QsekjoOp pptpd "mAjh5QRcCyOs8WlF" *
ユーザを追加。わが家のポリシーでは、ユーザ名もランダム文字列。上記に例示したアカウントは、実際のものとは別。
iptables周り
iptables -A INPUT -i ppp+ -s 192.168.10.0/24 -j ACCEPT iptables -A FORWARD -i ppp+ -s 192.168.10.0/24 -o eth0 -d 192.168.0.0/24 -j ACCEPT
LAN内へのアクセスを許可。
iptables -A FORWARD -i ppp+ -o ppp0 -s 192.168.10.0/24 -j ACCEPT iptables -A FORWARD -i ppp0 -o ppp+ -d 192.168.10.0/24 -j ACCEPT iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.10.0/24 -j SNAT --to-source 61.192.163.51
インターネットに出ていくための設定。
/var/named/chroot/etc/named.conf
acl "internal" { localhost; 192.168.0.0/24; 192.168.10.0/24; };
DNSサーバのACLにも、忘れずに追加。
iPhone側の設定
今回の目的を達するには、「すべての通信を送信」をオンにするのがポイント。
*1 WEPなどでの暗号化は、利用者間でキーが共有されているので無意味。ほかに偽APの問題もある。メールアプリなどアプリ単位で暗号通信をサポートしているものは安心して使えるけれど、よくわからないものも多いので、低いレイヤーで全部暗号化してしまうのが一番。