Raspberry PiでL2TPのVPNサーバーを立ててみた
VPSを解約してしまったので以前の立てたOpenVPNは使えなくなってしまいました。
そこで、今回はL2TPとIPsecを使ったVPNサーバーを立てることにしたのです。使うのはRaspberry Pi Bモデルのメモリ512MB版です。
以下設定メモ
パッケージ導入
まずはopenswanとxl2tpdのパッケージを導入します。
# apt-get install openswan xl2tpd
パケットフォワードの設定
sysctl.confを編集してパケットのフォワードを許可する設定をして、内容を反映させます。
# nano -w /etc/sysctl.conf
net.ipv4.ip_forward = 1 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0 net.ipv4.conf.eth0.accept_redirects = 0 net.ipv4.conf.lo.send_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0
# sysctl -p
IPsecの設定
続いてIPsecを設定します。
# nano -w /etc/ipsec.conf
内容はprotostack=netkeyとすることと末尾に
include /etc/ipsec.d/*.conf
を追加しました。
今回は設定ファイルを外部に持たせていますが、直接ipsec.confに書き込んでもいいようです。
設定ファイルを作成して編集します。
# touch /etc/ipsec.d/l2tp-ipsec.conf # nano -w /etc/ipsec.d/l2tp-ipsec.conf
conn L2TP-PSK-NAT rightsubnet=0.0.0.0/0 also=L2TP-PSK-noNAT conn L2TP-PSK-noNAT forceencaps=yes authby=secret pfs=no auto=add keyingtries=3 ike=aes-sha1;modp3072 phase2=esp phase2alg=aes-sha1;modp3072 rekey=no ikelifetime=8h keylife=1h type=transport left=%サーバーのIPアドレス% leftprotoport=17/1701 right=%any rightprotoport=17/%any dpddelay=40 dpdtimeout=130 dpdaction=clear
ipsec.secretsに事前共有鍵を設定します。
# nano -w /etc/ipsec.secrets
%サーバーのIPアドレス% %any: PSK "%事前共有鍵%"
ここでIPsecを再起動して動作を確認します。
# /etc/init.d/ipsec restart # ipsec verify
Failedが出なければ大丈夫なようです。
xl2tpdの設定
xl2tpdの設定ファイルを編集します。
最初は[global]と[lns default]もコメントアウトされていますが、この2行のコメントアウトも解除しないとちゃんと動作しないかもしれません。
# nano -w /etc/xl2tpd/xl2tpd.conf
[global] debug avp = yes debug network = yes debug packet = yes debug state = yes debug tunnel = yes [lns default] ip range = %クライアントに割り当てるIPアドレスの範囲% local ip = %サーバーのIPアドレス% require chap = yes require authentication = yes name = %サーバーのホストネーム% pppoptfile = /etc/ppp/options.xl2tpd.lns length bit = yes
指定したpppoptfileを編集します。
# nano -w /etc/ppp/options.xl2tpd.lns
name rpi2 refuse-pap refuse-chap refuse-mschap require-mschap-v2 ms-dns %DNSサーバーのIPアドレス% proxyarp nodefaultroute lock nobsdcomp mtu 1280 mru 1280
MTUとMRUは値を変える事で接続のスピードが変わるかもしれません。
ユーザー認証に使うchapの設定ファイルを編集します。
# nano -w /etc/ppp/chap-secrets
%ユーザーID% * %パスワード% *
ここでxl2tpdを再起動します。
# /etc/init.d/xl2tpd restart
スタートした旨表示されればOKです。
その他
# update-rc.d xl2tpd defaults # update-rc.d ipsec defaults
ここまで来たらルーターのUDP/500、UDP/4500をL2TPのサーバーに向けてポートを開くなり、VPNパススルーを使うなりの設定をすればOKのはずです。
この設定で自宅のRaspberry Piを設定し、会社のWindows7と持ち歩いてるiPhone5でRaspberry Piへの接続に成功しました。
後はMacBook Airも外部から自宅にVPN接続できるようにすれば各種公共無線LANを使ってインターネットに接続するときに今までよりは安全性が高くなった、かもしれません。