Arch LinuxでL2TP/IPSecのVPNに接続するのにかなりハマったのでメモ

接続先がYAMAHAのルーター(自分の場合はRTX1200)の場合苦労するらしい

NetworkManagerのバージョン #

最近のNetworkManagerはVPNのルーティングに問題があるようなので1.34.0にダウングレードする。

networkmanager-l2tpとlibreswanを使う #

strongswanではうまくいかないようなので、networkmanager-l2tpとlibreswanをインストールする。

libreswanはAURにあります。

yay -S networkmanager-l2tp libreswan

ipsecデーモンを起動するときのエラー #

mkdir -p /var/lib/ipsec/nssをすると起動するようにする。

xl2tpdではなくkl2tpdを使う #

xl2tpdではbad packetとなってしまい切断されるのでGoLang製のkl2tpdを使う。

https://github.com/katalix/go-l2tp

$ git clone https://github.com/katalix/go-l2tp
$ cd go-l2tp/cmd/kl2tpd
$ go build
$ sudo cp kl2tpd /usr/local/sbin

networkmanager-l2tpはkl2tpdを優先的に使うようになっているので、/usr/local/sbinにコピーするだけで使える。

IPSecの設定 #

ipsec-set

Remote IDはサーバーVPNインターフェースのIPアドレスや0.0.0.0を指定しないと接続できない場合がある。

Phase1 AlgorithmsPhase2 Algorithmsは自分の場合はこれで接続できた。

https://github.com/nm-l2tp/NetworkManager-l2tp/wiki/Known-Issues#querying-vpn-server-for-its-ikev1-algorithm-proposalsの方法で、VPNサーバーで使えるアルゴリズムを調べることもできる。