EdgeOS を ver. 2.0.9 と l2tp-client が有効にならない備忘録です.
まず,結論ですが,
ver. 2.0.9 自体は安定して動いてはいます.しかし,新機能の L2TP VPN Client 機能がうまく動いてくれない……
状態です.私の環境が悪いのか設定がまずいのか良くわかりませんが,試したことを記しておきたいと思います.
ファームウェアのアップデート
ファームウェアとそのリリースノートは Ubiquiti のサイト
から参照できますが,今回は bug fix(かなり大量です)だけじゃなくて,以下の機能追加が行われていました.
- WebGUI にファームウェアの通知とアップグレード用のボタンが用意された.
- クラッシュ・トラフィックレポートの通知が初期状態では無効化された.
- WebGUI にFactory Reset ボタンが 用意された.
- Firmware の容量が削減された.
- パフォーマンスが少し改善した.
- L2TP VPN Client になれるようになった.
結構深刻な bug がいくつも修正されていますのでアップデートしないという選択肢はないと思います.実際のアップデートですが,前回
と同様,CLI からアップデートを行いました.WebGUIからアップデートもできますが,特にER-Xはストレージ容量に余裕がないので,CLIからストレージ容量をチェックしながらアップデートが実際 Ubiquiti からも推奨されています.
L2TP VPN Client 機能について
さて,今回のアップデートで付け加わった L2TP VPN Client 機能ですが,これはかなり珍しい機能なんじゃないかなと思います.実際,EdgeOS の(多分)元であろう VyOS にもこんな機能今のところ見当たりません.
以前から,EdgeOS には PPTP Client になれる機能はあるのは知っていて,実際試してみたことがありましたが,安定性に問題があったのと,いまだと PPTP はセキュリティ的な心配があったので,実用性については今ひとつだと判断していました.
しかし,今回は L2TP/ IPSec ですから,(速度はともかく)セキュリティ的にはそれなりな訳で,安定して使えるようなら面白そう,ということで試してみた訳ですが,いまのところ,
うまくいっていません.
試したことは以下の通りです.
L2TP VPN Client 機能の設定
実はいろいろ試してから気がついたのですが,設定方法自体は,Ubiquiti の Community の掲示板に投稿されている ver 2.0.9 のリリース概要に載せられていました.
まず,L2TP VPN Client のインターフェース l2tpc0 を以下の通り作成します.もちろん server-ip と user-id, password の値を自分の接続する L2TP Server のものに合わせなければなりません.
set interfaces l2tp-client l2tpc0 authentication user-id ubnt set interfaces l2tp-client l2tpc0 authentication password ubnt set interfaces l2tp-client l2tpc0 mtu 1400 set interfaces l2tp-client l2tpc0 server-ip 192.168.11.1 set interfaces l2tp-client l2tpc0 require-ipsec
なお,設定としては,暗号化なし(IPSec なし)の L2TP 接続にも対応しているようです(暗号化なしは危険だとの警告は出る).
次に,L2TP の通信を行う IPSec トンネルの設定を行います.
set vpn ipsec esp-group FOO0 pfs disable set vpn ipsec esp-group FOO0 mode transport set vpn ipsec esp-group FOO0 proposal 1 encryption aes256 set vpn ipsec esp-group FOO0 proposal 1 hash sha1 set vpn ipsec ike-group FOO0 dead-peer-detection action restart set vpn ipsec ike-group FOO0 proposal 1 encryption aes128 set vpn ipsec ike-group FOO0 proposal 1 hash sha1 set vpn ipsec site-to-site peer 192.168.11.1 authentication mode pre-shared-secret set vpn ipsec site-to-site peer 192.168.11.1 authentication pre-shared-secret ubnt set vpn ipsec site-to-site peer 192.168.11.1 ike-group FOO0 set vpn ipsec site-to-site peer 192.168.11.1 local-address default set vpn ipsec site-to-site peer 192.168.11.1 tunnel 1 esp-group FOO0 set vpn ipsec site-to-site peer 192.168.11.1 tunnel 1 local port l2tp set vpn ipsec site-to-site peer 192.168.11.1 tunnel 1 protocol udp set vpn ipsec site-to-site peer 192.168.11.1 tunnel 1 remote port l2tp
注意点としては,tranport モードでなければならないこと,あと,IKE と ESP の暗号化とハッシュの方式を接続先 L2TP Server が対応しているものに合わせなければならないことです.また,事前共有キーと site-to-site peer の部分にある接続先アドレスも自分の接続する L2TP Server のものにしておく必要があります.
なお,接続先 L2TP Server が対応しているIKEの暗号化の方式等については,ike-scan コマンドを用いて調べることができます(macOS だと brew install ike-scan とするだけで入る).対応方式をまとめて調べる方法については以下のページがわかりやすいと思います.
また,ファイアーウォールの内側から接続する場合は,さらに,
set vpn ipsec nat-traversal
の設定や,パケットに connmark を追加する設定
set vpn l2tp remote-access allow-multiple-clients-from-same-nat enable
も必要になってくるハズ……なのですが,どうにもうまくいきません.
いろいろ調べてみたところ,とりあえず,IPSec で IKE の(show vpn ipsec sa を見たり,sudo ipsec status の表示をみると)鍵交換はできているっぽい.しかし,L2TP Client インターフェース l2tpc0 がクラッシュしますし,そもそも Ubiquiti が指示している connmark の追加設定も L2TP の設定が出来ていないと出て有効化できません.
試しに,IPSec なしの L2TP 接続も試してみましたが,これもすぐにインターフェースがクラッシュしてしまいます.
他にもいろいろ試しましたが,正直,どうにも良く分からない.
まぁ,それ以前のそもそも論として,この機能,異様にハードルが高いです.一般的なクライアント OS の L2TP/IPSec 接続だと,ユーザー名とパスワードと事前共有鍵と接続先名入れれば(オプションで暗号化の方式を選ぶ等のことはあっても)良い形になっています.しかし,EdgeOS の場合は,IPSec のトンネルの設定と L2TP の設定を全く別のところで行わなければならず,はじめ見た時は,どこで事前共有鍵の設定をするのかも全くわかりませんでした.
まぁ,ルーターなので,利用者は L2TP/IPSec の仕組みくらいはキチンと把握しているとの前提で設計されているんでしょうね.確かに L2TP/IPSec がどんなものかの勉強にはなりました.
と言うことで,残念ですが,EdgeOS のこの機能,しばらく放置して,ファームウェアの次回アップデート時にでももう一度試してみたいと思います.
以上!