前回に引き続き、VPNサーバの構築。
今回は、Openswan と xl2tpd を使って、L2TP/IPsec のVPNをやってみた。
インストールはこんな感じ。
$ sudo yum --enablerepo=epel install openswan xl2tpd
xl2tpd の設定。
$ sudo vi /etc/xl2tpd/xl2tpd.conf
[global]
[lns default]
ip range = 192.168.10.128-192.168.10.254
local ip = 192.168.10.1
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
$ sudo vi /etc/ppp/chap-secrets
(ユーザー名) * "(パスワード)" *
$ sudo vi /etc/ppp/options.xl2tpd
ipcp-accept-local
ipcp-accept-remote
ms-dns 8.8.8.8
ms-dns 8.8.4.4
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
logfile /var/log/xl2tpd.l2tp-ipsec.log
で、xl2tpd を起動。
$ sudo service xl2tpd start
ついで、openswanの設定。
$ sudo vi /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
$ sudo vi /etc/ipsec.secrets
: PSK "(共有キー)"
$ sudo vi /etc/ipsec.d/l2tp-psk.conf
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
#forceencaps=yes
dpddelay=15
dpdtimeout=30
dpdaction=clear
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=(EC2のIPアドレス)
leftid=(EC2に割り当てたElasticIPのIPアドレス)
leftprotoport=17/1701
right=%any
rightprotoport=17/0
conn passthrough-for-non-l2tp
type=passthrough
left=(EC2のIPアドレス)
leftid=(EC2に割り当てたElasticIPのIPアドレス)
leftnexthop=(EC2のデフォルトゲートウェイ)
right=0.0.0.0
rightsubnet=0.0.0.0/0
auto=route
ネットワーク周りの設定。
$ sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
$ sudo sysctl -p
$ sudo iptables --table nat --append POSTROUTING --jump MASQUERADE
openswan の起動。
$ sudo service ipsec start
動作状況の確認。
$ sudo ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path [OK]
Linux Openswan U2.6.37/K3.2.38-5.48.amzn1.x86_64 (netkey)
Checking for IPsec support in kernel [OK]
SAref kernel support [N/A]
NETKEY: Testing XFRM related proc values [OK]
[OK]
[OK]
Checking that pluto is running [OK]
Pluto listening for IKE on udp 500 [OK]
Pluto listening for NAT-T on udp 4500 [OK]
Checking for 'ip' command [OK]
Checking /bin/sh is not /bin/dash [WARNING]
Checking for 'iptables' command [OK]
Opportunistic Encryption Support [DISABLED]
で、いけた模様。
いくつか抜けてたところがあって、ちょっとハマったけどなんとか繋がっている。
当初の目的通り、クライアントからVPN張ってVPNサーバ経由で通信ができるようになったので
しばらくこれで試してみる。
外出先から通信する際はこれで少しは安全になるかな。
(参考URL)
suz-lab - blog: EC2 & L2TP/IPsec & iPhone
できないSEのメモ帳 - OpenVPN [10_VPN] - tech wiki
Debian GNU/Linux で L2TP / IPsec を使用する VPN サーバを設定する (サーバ側で NAPT する場合) - Open the Next
Ken's Memo: andoridから自宅へのVPN
Ken's Memo: iPhoneから自宅のLinuxサーバにL2TP/IPSecで接続