VPN (part 2)

  • 投稿日:
  • by
  • カテゴリ:
前回に引き続き、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で接続