🐢

WireGuard VPN通信が遅いときに確認すべきこと

に公開

こんなことありませんか?

カフェなどにある公共のWi-Fiに接続してWireGuardでVPN通信を行う際、
通信がとんでもなく遅いときがあります。

「自宅からならサクサク動くのになんでだろ? カフェの通信設備が悪いのかな?」

確かに、カフェWi-Fiの混雑具合によってはそんな場合もあるでしょう。
ただ、VPN接続する前は速いのにVPNに接続した途端遅くなる、といった場合は要注意です。

なぜか通信が遅い

MTUの設定を疑おう

そんな時は WireGuard クライアントの設定で MTU が設定されているかを確認してみてください。

MTU はIP通信における1パケットの最大サイズ(バイト)です。
Ethernetの場合、この値は1500なのですが、公共Wi-Fiなどの場合、経路中にこの値よりも小さいパケットしか通さない機器が存在することがあります。

経路中にこのような機器が存在する場合、経路中のルーターや送信側のクライアントが小さなパケットに分割して再送信しようとしますが、これが遅さの原因になったり、場合によっては再送信できない場合も発生します。これがいわゆるパケづまりの状態です。

さらにWireGuardなどでVPNを使用する場合、
WireGuardはUDP上に暗号化パケットを載せるため、通常通信よりもヘッダが増え、実効MTUが小さくなり、パケづまりが通常通信よりも発生しやすくなります。

パケづまり

MTU=1280 を使う

MTUの値 1280 はIPv6で規定されている1パケットの最小サイズです。

つまり、どんな機器でも1280バイトのパケットは必ず通せるようにしなさいよ、という規定です。

そのため、MTUを 1280 に設定しておけば、公共Wi-Fiなどの通信経路が不安定な場所でも、
パケ詰まりが起きにくい、ということになります。

実際には 1340 などもう少し大きい値にしても問題が解消することもありますが、使う場所によっていちいち設定を変更するのも面倒ですし、最初から 1280 にしておいた方が無難です。

以下にWireGuardクライアントでの設定例を挙げます。

WireGuard設定例
MTU = 1280とする(その他の値は例示用サンプル)

まとめ

経路中でフラグメント(パケット分割)が発生しても、
通信が遅くなるだけで、我慢できないほどではないときもあります。

そのため、なかなか気づきにくかったりしますが、、、
この記事で説明したようにMTUが原因の場合もありますので、
最初から MTU = 1280 に設定しておいた方が無難 だと筆者は考えます。

最後にGoogle Gemini(歌:Lyria)で作成した「MTUの歌」をお送りして、
この稿を締めたいと思います。

https://www.youtube.com/watch?v=s9YfAMCYJOg

それではまた次の記事でお会いしましょう。
じゃあね、バイバイ♪😊

Discussion