SoftEtherVPN L2TP 実験メモ
ソースコードのダウンロードと構築
git clone https://github.com/SoftEtherVPN/SoftEtherVPN/
commit 001fd910fedfd0ef1690a9d3c50c1a28d1680d1d
./configure
1
1
make
特権ポートの bind 許可 (root で)
setcap CAP_NET_BIND_SERVICE=ep ./bin/vpnserver/vpnserver
VPN Server 開始と停止
開始: ./bin/vpnserver/vpnserver start
停止: ./bin/vpnserver/vpnserver stop
ログは bin/vpnserver/server_log/vpn_20140124.log に保存されている (20140124 は日付)。日本語の場合 UTF-8 になっている。
しばらく動かした後だと stop が Stopping SoftEther VPN Server Service...と表示したまま止まってしまう。killall -9 vpnserver で停止させることができる。
管理
./bin/vpncmd/vpncmd
バックスクロールがたくさん欲しくなるので emacs -f shell などの中で実行するとよい。
仮想 HUB "a" を作り、SecureNAT を有効化、ユーザー foo を作成しパスワードを設定し、IPSec を有効化する。NAT と DHCP の設定はデフォルト。変更する場合は NatSet, SecureNatHostSet や DhcpSet などのコマンドを使う。
HubCreate
a
Hub a
SecureNatEnable
UserCreate
foo
UserPasswordSet
IPsecEnable /L2TP:yes /L2TPRAW:yes /ETHERIP:no /PSK:hoge /DEFAULTHUB:DEFAULT
設定ファイル
./bin/vpnserver/vpn_server.config というところに保存されているようだ。また、bin/vpnserver/backup.vpn_server.config/ というディレクトリーが作られていて、その中に古い設定が残されるようだ。
Android から接続テスト
L2TP/IPSec PSK VPN は下の設定で。L2TP VPN (暗号化なし) の場合は IPSec 事前共有鍵の設定がいらない以外は同じ。
VPN 名: 適当に
VPN サーバーの設定: VPN Server の IP アドレスを設定 (名前解決できればホスト名でもよさそう)
IPSec 事前共有鍵の設定: hoge
L2TP セキュリティ保護: 無効
DNS 検索ドメイン: お好きに
接続の際にユーザー名とパスワードを入力する。ユーザー名は VPN Server のユーザー名の後ろに @ をつけてその後ろに仮想 HUB の名前をつける。ここでは foo@a となる。パスワードは VPN Server のパスワードを入れる。
L-04C で無線 LAN 経由でテストしたところ、暗号化あり・なしのいずれも動作した。LAN 上のホストに SSH でログインし、ログイン元の IP アドレスを確認することで、VPN 経由で接続していることが確認できた。また、tcpdump コマンドにより、L2TP パケットが飛んでいる様子が確認できた。