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

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


注:2010/1更新: MacのOS”Mojave”ではうまくIPSec通信できないことが分かりました。
もしかしたらどこか設定がよくないかもです。

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できるようにしました。

関連記事


Linux debianでRAID(ミラーリング)構築。mdadmとpartedで
mdadmによるRAID (ミラーリング)構成手順です。ディスクが1台壊れたのでRAIDを組み直しました。環境はLinux Debian 9.11 (stretch) partedやmdadmコマンドで構築します。

Postfixメールサーバー:送信不可のユーザーを設定する
メールサーバーPostfixにて、送受信ができないユーザーを設定をする方法です。Linux、debian環境です。特定のメールアドレスを送受信不可にします。メールを許可しないLinuxユーザーを作るときに有効です。

Web開発・Web制作のツールや用語を初心者向けに大量紹介。これだけ知っておけば安心。
Webページ製作やWebのシステム開発ではいろんなツールやテクニック、用語を使いますが、全体像がなかなか掴みにくいと思ったので、初心者向けに用語をたくさんまとめました。これさえ押さえておけば業界の常識用語はだいたい網羅できると思います。

KVM仮想マシンをWebからアクセスできるKimchiをdebianにインストール
自宅サーバーにてKVMの仮想マシンを動かしていますが、外からでもリモートで操作できるようにkimchiを導入しました。 GitHub – kimchi-project/kimchi: An HTML5 man …

Linuxの権限について解説。setuidとかsetgidとかスティッキービットとか
setuidとかsetgidとかスティッキービットの解説です。Linuxのこれらの機能については考え方が難しいですが、setuidは「一般ユーザーがroot権限で動かすことができる仕組み」です。setgidはそのグループ版です。詳細なメカニズムを解説します。

コメントを残す

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