RaspberryPIをVPN(L2TP)サーバにして、スマートフォンからVPN接続
スマートフォンからRaspberryPIに対してVPN接続し、家のローカルネットワークにつなぎます。
VPNは、PPTPだと設定等が非常に楽なんですが、docomoのSPモードだと接続できないし、PPTPはセキュリティ的にも緩いらしいので、やや難し目のL2TP使います。
最近ではスマートフォンにOpenVPNクライアントをインストールすれば使えるらしいですが、Android,iPhone標準で使えるL2TPがやはりいいと思います。
注意点として、auの場合は、回線(CDMA2000)の仕様上、通話着信があるとVPNが切断されます。
※以下は記憶を元に書いているので抜けがあるかもしれません
VPNサーバのアドレス
固定IPアドレス契約をしていればいいですが、していない場合は、IPアドレスがころころ変わっていまい、外出先からVPN接続できなくなるため、適当なDDNSサービスに登録しておきます。
(MyDNSがオススメ)
RaspberryPIに対する設定
まずはopenswanとxl2tpdをインストールします。
IPアドレスやID,パスワード等は、自分の環境に置き換えてください。
sudo apt-get install openswan xl2tpd ppp lsof
xl2tpdの設定を行います。
/etc/xl2tpd/xl2tpd.conf
[global] port = 1701 ;使用ポート [lns default] ip range = 192.168.1.230-192.168.1.240 ; VPNクライアントに割り当てるIPアドレス local ip = 192.168.1.20 ; RasPI自身のIPアドレス require chap = yes ; * Require CHAP auth. by peer refuse pap = yes ; * Refuse PAP authentication require authentication = yes ; * Require peer to authenticate name = pi ; * Report this as our hostname ppp debug = yes ; * Turn on PPP debugging pppoptfile = /etc/ppp/options.xl2tpd.lns; * ppp options file length bit = yes
次にopenswanの設定を行います
/etc/ipsec.conf
version 2.0 config setup nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12 oe=off protostack=netkey include /etc/ipsec.d/*.conf
共有鍵の設定
同じものをスマートフォンにも入力します。
(iPhoneの場合には"シークレット"という項目,Androidの場合はIPSec事前共有鍵)
/etc/ipsec.secrets
: PSK "password"
/etc/ppp/options.xl2tpd.lns
mtu 1410 mru 1410 ms-dns 8.8.8.8 ms-dns 8.8.4.4 lcp-echo-interval 3 lcp-echo-failure 8 nodeflate noproxyarp netmask 255.255.255.0 lock
スマートフォンからアクセスするときのID,パスワード設定
同じものをスマートフォンに入力します。
/etc/ppp/chap-secrets
# Secrets for authentication using CHAP # client server secret IP addresses "id" * "password" *
以下のリダイレクトの設定を追加
/etc/sysctl.conf
net.ipv4.conf.eth0.accept_redirects = 0 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.lo.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0
自動起動の設定と、再起動
sudo sysv-rc-conf xl2tpd on
sudo sysv-rc-conf ipsec on
/etc/init.d/xl2tpd restart
/etc/init.d/xl2tpd restart