背景
L2TP over IPsecをするとき、ipsec.confやxl2tpd.confを書くのは大変です。
Ubuntu Desktopには、NetworkManagerでVPN設定ができるパッケージがあります。
apt install network-manager-l2tp-gnome
Ubuntu ServerのCLI環境でもでもこれを使いたかった。
設定方法
# ネットワーク管理をNetworkManagerに任せる
# UbuntuDesktopはデフォルトでNetworkManagerが使われる。UbuntuServerはデフォルトでnetworkdが使われる。
vim /etc/netplan/50-cloud-init.yaml
50-cloud-init.yaml
network:
version: 2
renderer: NetworkManager
# ethernets:
# ens33:
# dhcp4: true
# 念のためサーバを再起動
reboot
# NetworkManager側でサーバのIPアドレス設定などをする
nmtui
# パッケージをインストールする
apt install network-manager-l2tp
systemctl restart NetworkManager
# L2TP over IPsecの設定をする
nmcli connection add connection.id <VPNName> con-name <ConnName> type VPN vpn-type l2tp ifname -- connection.autoconnect no ipv4.method auto vpn.data "gateway = <VPN_SERVER_IP>, ipsec-enabled = yes, ipsec-psk = <PSK>, ipsec-ike=<ProposalIKE>, ipsec-esp=aes256-sha1-modp2048, mru = 1400, mtu = 1400, password-flags = 0, refuse-chap = yes, refuse-mschap = yes, refuse-pap = yes, require-mppe = yes, user = <USER>" vpn.secrets password=<PASS>
<VPNName>: VPN接続ID.なんでもよい。
<ConnName>: コネクション名。後で使う。vpnなどにすると管理しやすい。
<VPN_SERVER_IP>:VPNサーバのIPアドレス OR FQDN
<PSK>:PreSharedKey。平文で入力
<ProposalIKE>:IKEのProposal。aes256-sha1-modp2048 などと入力
<ProposalESP>:ESPのProposal。aes256-sha1-modp2048 などと入力
<USER>:(多分PPPの)ユーザー名
<PASS>:(多分pppの)パスワード。平文で入力
ProposalIKE、ProposalESPの書き方は、次のURLを参照。
https://github.com/nm-l2tp/NetworkManager-l2tp#user-content-ipsec-ikev1-weak-legacy-algorithms-and-backwards-compatibility
# 生成されたファイルを確認
ls /etc/NetworkManager/system-connections/vpn
# なにか修正したい場合は直接編集して、リロードする
vim /etc/NetworkManager/system-connections/vpn
nmcli conn reload
接続します
nmcli conn up <ConnName>
#=> Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
#=> などと表示されたら成功
nmcli conn down <ConnName>
#=> Connection 'vpn' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
#=> などと表示されたら成功
ポイントは次。
- NetworkManager-L2TPをインストールする
- ネットワークの管理は、networkdをやめてNetworkManagerにする
- 設定ファイルを頑張って生成する
- ウィザードやtuiインタフェースは存在しない
- nmcliコマンドを使う
- ipsec.confやxl2tpd.confに相当するものは、次の場所に出力される
ls -l /run/nm-*
-rw------- 1 root root 230 Mar 14 10:13 nm-l2tp-ipsec-6c4228fa-a3b0-438c-b787-a6b6c7363ffa.conf
-rw-r--r-- 1 root root 268 Mar 14 10:13 nm-l2tp-ppp-options-6c4228fa-a3b0-438c-b787-a6b6c7363ffa
-rw-r--r-- 1 root root 288 Mar 14 10:13 nm-l2tp-xl2tpd-6c4228fa-a3b0-438c-b787-a6b6c7363ffa.conf
デバッグ方法
sudo killall -TERM nm-l2tp-service
sudo /usr/lib/NetworkManager/nm-l2tp-service --debug