VPS とLAN共有

結局、VPS にlibreswan の IPSec/L2TPをインストールしたが、pppd でエラーが出て、2分程で切れてしまうという現象が出た。

google でこのログ情報を元に調べると、どうやら次の現象らしい。

情報源: L2TP/IPSecトンネルの崩壊と戦った話 | セキュリティブログ | 脆弱性診断(セキュリティ診断)のイエラエセキュリティ

パケットが分割されてシーケンス番号がズレると、pppd が順番のシーケンス番号のパケット待ちをしてる為、接続が崩壊してしまうと。

これに関して色々調べると、pppd のシーケンス番号処理は腐ってるようで、pppol2tp プラグインなるものが pppd に組み込まれていたら、UDPで送られてくる順番が違っているパケットの並べ替えを指定タイムアウト値内だったらやってくれる。

現状はUbuntu 20.04標準のパッケージのpppdは、pppol2tpプラグインが組み込まれておらず、タイムアウト0なので、順番が狂ったら即アウトという事で、こりゃ使えんなという感じ。

【追記】
調べてみると、linux-modules-extra-5.4.0-88-generic が入ってないだけだったが、これを入れて、/etc/ppp/options.xl2tpd に pppol2tp_reorderto 30 を設定しても同じエラーが出てダメだった。
【/追記】

昔ならソースゴリゴリやって、カスタムプログラムで解決してた所だが、もはや徹夜でソースゴリゴリやる体力が無い。

どうにか、indigo VPSにVPNで繋いだ端末から家のLANに接続する方法は無いものかと試行錯誤してる内に、VPSにPPTPサーバー入れてテストしてみると、安定してVPNを維持できる事が分かった。

で、家のPCでテストしてたけど、よくよく考えると、わしの使ってるルータのBUFFALO BHR-4GRVは、PPTP client機能があるではないか。

早速繋いでみると、ちゃんと繋がって、VPSのPPTP serverは 192.168.20.0/24 のIPアドレスを配布するようになっているので、

# iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -j MASQUERADE
# route add -net 192.168.11.0 netmask 255.255.255.0 gw 192.168.20.2 ppp0

と設定する事で、VPS上から、家のLAN上のマシンにsshできるようになった。
これで、VPSにpptpでVPN張れたら、家のLANが如くアクセス可能になった。

しかし、今はBHR-4GRVのWANはグローバルIPだが、これをLAN上のホームサーバーのIPアドレスにしたらどうなるかは不明。

あー携帯電話ってVPNパススルー無い気がするな。

【追記】
色々面倒なので、Amazon UKで TP-Link Archer MR600 v2 £136.19(約20,804円)ポチったわ。

これだと、SIM直挿しで、VPN機能もついてるので、BHR-4GRVを置き換えるだけで済むんだな。
【追記】
TP-Link Archer MR600 v2 ってVPN Client機能が無いみたいだから、置き換えできんな。
結局は、BHR-4GRVのPPTP client接続を VPN Pass Throughで通してやるしかないみたい。
【/追記】
【/追記】