CentOS 6.x で StrongSwan を使った L2TP over IPsec 環境を作る
Openswan(IPSec VPN)がiPhoneから繋がらなくなった! 等に記載がありますが、CentOS 6.x 系では OpenSwan に問題があり、iPhone や OS X から IPsec 出来なくなっているそうです(出来なくなっていました)。そこで、今回は OpenSwan では無く、StrongSwan で L2TP over IPsec 環境を作ってみます。
今回の環境
以下の環境で作業を行いました。
- さくら VPS
- さくら VPS の標準 OS(※ 現時点では CentOS 6.6 x86_64)
- ファイアウォール(iptables)は「全通し」
- SELinux は無効化
パラメータ
主なパラメータは以下の通りです。
項目 |
値 |
グローバルアドレス |
AAA.BBB.CCC.DDD |
PSK |
PSK |
IPsec クライアントに割り当てるアドレス範囲 |
172.16.1.100 〜 172.16.1.200 |
IPsec サーバのアドレス |
172.16.1.1 |
L2TP 認証用のユーザは以下の通りです。2 ユーザ作成しました。
ユーザ名 |
パスワード |
user1 |
secret1 |
user2 |
secret2 |
実際のインターネット環境で設定する際は「もっと複雑なパスワードを設定する」「iptables で必要なポートだけを許可する」等、セキュリティに配慮します。
パッケージのインストール
StrongSwan と xl2tpd をインストールします。
| yum -y install strongswan xl2tpd
|
設定ファイルの修正
/etc/strongswan/ipsec.conf
IPsec に関連する設定を行います。今回は以下のように設定しました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | config setup
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
conn l2tp
keyexchange=ikev1
left=AAA.BBB.CCC.DDD # IPSec を Listen するグローバルアドレスを指定
leftsubnet=0.0.0.0/0
leftprotoport=17/1701
authby=secret
leftfirewall=no
right=%any
rightprotoport=17/%any
type=transport
auto=add
|
/etc/strongswan/ipsec.secrets
IPsec で利用する事前共有鍵(PSK)を設定します。
| # ipsec.secrets - strongSwan IPsec secrets file
: PSK "PSK"
|
/etc/xl2tpd/xl2tpd.conf
L2TP に関連する設定を行います。今回は以下のように設定しました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | [global]
listen-addr = AAA.BBB.CCC.DDD
[lns default]
ip range = 172.16.1.100-172.16.1.200
local ip = 172.16.1.1
assign ip = yes
;refuse chap = yes
;refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
|
/etc/ppp/options.xl2tpd
PPP に関連する設定を行います。今回は以下のように設定しました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | 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
name xl2tpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
persist
logfile /var/log/xl2tpd.log
|
/etc/ppp/chap-secrets
| # Secrets for authentication using CHAP
# client server secret IP addresses
"user1" "xl2tpd" "secret1" *
"user2" "xl2tpd" "secret2" *
|
/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
|
完了したら修正内容を反映しておきます。
デーモンの再起動(起動)
デーモンを再起動(場合によっては起動)します。
| # service strongswan restart
Stopping strongswan: Stopping strongSwan IPsec...
Starting strongswan: Starting strongSwan 5.2.0 IPsec [starter]...
[ OK ]
# service xl2tpd restart
Stopping xl2tpd: [ OK ]
Starting xl2tpd: [ OK ]
|
VPN 接続テスト
あとは OS X から VPN 接続をテストするだけです。問題がある場合は以下のログ等を確認します。
- /var/log/secure
- /var/log/xl2tpd.log