作者:上村崇 フリーランスのIT系エンジニア
twitter:@uemera facebook:uemura

L2TP / IPSecでVPNサーバーを構築した。Linux Debian9 ( stretch )


Debian version 9 ( Stretch )でVPNサーバーを構築しました。L2TP over IPSecのVPNです。
VPSサーバーはローカルLAN内に設置しているので、ルーターのポートフォワーディングの設定もしました。

概略図
Screen Shot 2018-01-30 at 17.16.33

IPSecの設定は、とにかく設定しないといけないファイルが多くてめげそうになりました。
しかも一発で動かないし…
これだけのファイルについて設定します。
Screen Shot 2018-01-30 at 18.44.50

インストール

# apt-get install strongswan xl2tpd
strongswanは、openswanの後継?のIPSecパッケージなのかな?
なのでopenswanよりもstrongswanを使った方がいいみたい。

/etc/xl2tpd/xl2tpd.conf

ip range でVPS接続するクライアントに割り当てるIPアドレス帯を設定します。
local ip は自サーバーのIPアドレスです。

/etc/ppp/chap-secrets

VPN接続をするときのユーザー/パスワードを設定します。
上記はユーザー”hogeuser”、パスワード”hogepass”で接続できるようにする例です。
ファイルの所有権は root 、パーミッションは 600にしておいた方が良い。

/etc/ppp/options.l2tpd.lns

ms-dnsはDNSサーバーのIPアドレスを設定します。
mtuはサーバーによって異なりますので各自最適な値を設定してください。
ここを参考にしました。Linux – MTU 最適値の導出!
logfileで指定したログファイルをtouchコマンドで作成しておきます。
# touch /var/log/xl2tpd.log

/etc/ipsec.conf

left=192.168.0.101 は自サーバーのIPアドレスを設定してください。

/etc/ipsec.secrets

この例では“AAA”というシークレットキーを定義しています。
ファイルの所有権は root 、パーミッションは 600にしておいた方が良い。

/etc/strongswan.conf

デフォルトの状態ではもともとなかった記述dns1とdns2の2行を追加しました。

/etc/sysctl.conf

カーネルパラメータの設定です。

eth0とかeth1とかの設定は必要なのかなぁ…よく分からんけどこれで動いたので。
ちなみに私のネットワーク環境はeth0の代わりにbr0とかbr1とかの名前になっててこれにIPアドレスが紐ついているんで、実際は上記eth0の記述は要らないのかも知れません。

上記の設定の反映は
# sysctl -p
コマンドで行ないます。

サービスの起動

# /etc/init.d/ipsec start
# /etc/init.d/xl2tpd start

以下のコマンドでもいいかも知れない。(違いがよく分かってない)
# systemctl start strongswan.service
# systemctl start xl2tpd.service

NATの設定

ルータのポートマッピング設定は以下のポートをVPNサーバーへ向けることで通信できました。
udp 500 (IKE)
udp 1701 (L2TPパケットの最初の待ち受け)
udp 4500 (IPsec NAT-T)
udp 50 (ESP)
tcp 50 (ESP)

ログで確認

# journalctl -u strongswan -f -l
以下のログも使えます。
/var/log/xl2tpd.log
/var/log/syslog

また、xl2tpdを
# /usr/sbin/xl2tpd -D
として起動すると詳細ログが出ます。

僕は、設定エラーをsyslogのログで指摘されて、それを修正したらうまく動くようになりました。

# ipsec status
コマンドは、見方がよく分からんかったです。

# ipsec verify
コマンドは、「そんなコマンドは無い」ていうエラーが出ました。(strongswanじゃなくてopenswanのコマンド?)

クライアントの設定

iPhone

iPhone X iOS version 11.1 での設定
タイプは”L2TP”で設定します。
IMG_4499

Mac OS X (Sierra)

VPN Typeは”L2TP over IPSec” で設定します。
Screen Shot 2018-01-30 at 17.29.19

参考にした記事

xl2tpd + strongswan でVPN構築し、iPhone6から接続 (今のところ同一LAN以外では接続できない。) – Qiita
strongSwan + xl2tpd でVPN(L2TP/IPsec)を構築する – Qiita
linuxでVPNサーバ – Qiita
Debian GNU/Linux Wheezy で StrongSwan にてL2TP / IPsec サーバ設定の備忘録 | Open the Next
DebianでL2TP/IPSecなVPNサーバ | ねころくぶろぐ

備考

そもそも、YamahaルータNVR500にPPTPのVPN機能が備わっていたのでそれを使っていたのですが、2016年にリリースされたMac OS 10.12(Sierra)からPPTPはサポートされなくなったので、仕方なくL2TP oveer IPsecでVPNできるようにしました。

CATEGORYカテゴリーLinux

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です