OpenVPNに接続したときに、接続が不安定になる問題を解消する(かもしれない)方法
OpenVPNのVPNに接続するとなぜか接続が不安定になるときがありますよね。その原因の一つにMTUやMSSが影響している場合があります。
間違ったMTUの症状
- 通信速度が遅い
- ブラウザがずっとぐるぐるで進まない
- HTTP経由のリソースがちゃんとダウンロードされない
- CSSやJSが部分的にしか読み込まれない
正しいMTUを特定する
正しいMTUを発見するのは簡単で、下記のping
コマンドを使います。
MacOS
ping -D -v -s 1500 -c 1 www.example.com
Windows
ping -n 1 -l 1500 -f www.example.com
Linux
ping -M do -s 1500 -c 1 www.example.com
pingが成功するまで1500を10ずつ減らしてください。
ping失敗例
packet lossに100%なります。
❯ ping -D -v -s 1500 -c 1 www.example.com
PING www.example.com (93.184.216.34): 1500 data bytes
ping: sendto: Message too long
^C
--- www.example.com ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss
❯ ping -D -v -s 1450 -c 1 www.example.com
PING www.example.com (93.184.216.34): 1450 data bytes
556 bytes from ntt.setup (192.168.1.1): frag needed and DF set (MTU 1454)
Vr HL TOS Len ID Flg off TTL Pro cks Src Dst
4 5 00 c605 dc0f 0 0000 40 01 61a1 192.168.1.3 93.184.216.34
^C
--- www.example.com ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss
ping成功例
packet lossが0%になります。
❯ ping -D -v -s 1420 -c 1 www.example.com
PING www.example.com (93.184.216.34): 1420 data bytes
1428 bytes from 93.184.216.34: icmp_seq=0 ttl=57 time=112.735 ms
--- www.example.com ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 112.735/112.735/112.735/0.000 ms
OpenVPNのMSSの設定を修正する
OpenVPNでは、MSSと呼ばれる値を設定する必要があります。MSSは、MTUから40を引いた値です。
たとえば、MTUが1340の場合、MSSは1300です。
MSS = MTU - 40
MSS = 1340 - 40
MSS = 1300
.ovpnファイルを開き、最後の行に下記設定を一行追加する。
mssfix 1300
で設定を再読み込みしてVPNに接続すると安定する(かもしれない)