こんにちは、アリシィです。
先日、OCIの無料インスタンスにWireGuardのContainerを構築しました。
スマホからは問題なく接続できたのですが、Mac(Monterey2台)からの接続が不安定な状態でした。色々試した結果改善したので、記録しておきます。
症状
症状は以下のとおりです
- Chrome,FirefoxからWebサイトが閲覧できない(まれに閲覧できるページがあったりもする)
- 接続は確立できている
- VPNサーバのローカルエリアネットワーク宛ping通る
- 1.1.1.1等の外へのpingも通る(1350Byte程度までOK)
- tracerouteを実行すると、VPNを通った経路で接続できている
- Mac以外(スマホ)からは問題なくWebサイトの閲覧ができる
- サーバからcurlを用いて目的のWebページが取得できる
原因
原因は、Client側に作成されたTunnelインタフェースのMTUの設定でした。
MTUとは、パケットに流すペイロードのサイズを設定するもので、基本的にはMAX1500Byteとなっています。しかし、VPN等で何かしらのカプセル化をする際は外側に付加情報が付与されるため、流せるペイロードが小さくなります。
何も指定していない状態でifconfigを使いMTUサイズを確認すると1500になっていました。
解決方法
WireGuardのconfの[INTERFACE]項目にMTUの設定を加えました。
環境差異はあるかもしれませんが、私の場合は1364が適切かなといった具合です。
(ネット回線をDS-Lite接続しているので、そのせいでペイロードが小さいのかもしれません)
計測結果を載せておきます。
[Server]
大阪 OCI ARM 4Core 24GB 4Gbps
[Client]
関東 楽天ひかり MacBookPro 2019 WiFi (実測値400Mbps程度)
[Client]
関東 auひかり Proxmox-Windows(仮想マシン) 1Gb有線(実測値950Mbps程度)
コメント