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 パケットが飛んでいる様子が確認できた。