こんにちは、岡野です。
特に問題なく接続できたのですが手順を共有します。
前提条件
VPN: L2TP
VPS: Ubuntu 20.04、ufwで通信制限中(incoming & outgoing)
接続手順
-
VPNサーバの対応アルゴリズムを調べる
にあるシェルスクリプトを保存後、以下を実行。VPNサーバの対応アルゴリズムが表示される。
$ chmod +x ike-scan.sh
$ sudo ./ike-scan.sh <VPNサーバのIP> | grep SA=
抜粋
SA=(Enc=AES Hash=SHA1 Auth=PSK Group=2:modp1024 KeyLength=256 LifeType=Seconds LifeDuration(4)=0x00007080)
-
VPSのネットワーク設定を確認する
さくらインターネットで設定済みのネットワーク設定を確認。あとで使用する。
$ cat /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
ens3:
addresses: [***.***.***.***/23]
gateway4: ***.***.***.***
nameservers:
addresses: [***.***.***.***, ***.***.***.***]
-
L2TPソフトウェアをインストールする
$ sudo apt install network-manager-l2tp
-
NetworkManager管理に切り替える
$ sudo vi /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: NetworkManager
# 残りは削除
$ sudo reboot
-
NetworkManagerの接続情報を設定する
以下、VPSコンソールから実施。
$ sudo nmtui
# 「2. VPSのネットワーク設定を確認する」の内容を設定する
$ sudo reboot
-
VPNの接続情報を設定する
VPN接続情報を以下の通り設定する。IKE対応アルゴリズムには「1. VPNの対応アルゴリズムを調べる」で調べた中で、より強力なものを使用する(例:aes256-sha1-modp1024)。
$ sudo nmcli connection add \
type vpn \
con-name <接続名、適当に。例:vpn> \
autoconnect no \
ifname -- \
ipv4.method auto \
vpn-type l2tp \
vpn.secrets password=<パスワード> \
vpn.data \
"password-flags = 0, require-mppe = yes, user = <ユーザ名>, refuse-chap = yes, refuse-mschap = yes, gateway = <VPNサーバのIP>, refuse-pap = yes, ipsec-enabled = yes, ipsec-psk = <共有鍵>, ipsec-ike=<IKE対応アルゴリズム>, ipsec-esp=aes128-sha1"
-
VPN接続する
ログを表示しながらVPN接続を試みる。
$ journalctl -f &
$ sudo nmcli conn up vpn
以下の様なエラーが出力されるため
Jul 19 09:04:16 *** kernel: [148247.538797] [UFW BLOCK] IN= OUT=ens3 SRC=***.***.***.*** DST=***.***.***.*** LEN=268 TOS=0x00 PREC=0x00 TTL=64 ID=13477 DF PROTO=UDP SPT=500 DPT=500 LEN=248
ufwで解除設定しながらsudo nmcli conn up vpn
を繰り返す。具体的には以下の様なufw設定になる。
$ sudo ufw status
***.***.***.*** 500/udp ALLOW OUT Anywhere # vpn (ipsec)
***.***.***.*** 1701/udp ALLOW OUT Anywhere # vpn (l2tp)
***.***.***.***/esp ALLOW OUT Anywhere # vpn (esp)
必要に応じてルーティング設定も行う。
-
VPN切断する
VPN切断は以下。
$ sudo nmcli conn down vpn