この記事を作った動機

 なんか、キャリアネットワークをデザリングを経由して使って、さらにVPN接続を介した通信のうち、HTTPとSSHだけが繋がらないということがあった。

 それで対策としてMTUを小さく設定することをしたのでそのことを記録するだけ。

 ちなみになぜMTUが大きすぎるとだめなのかわかっていないが、多分大きすぎるサイズのパケットはなんとなくどこかで落とされている気がする。

 VPNや多段NAT構成だとルーティングされているうちに、ヘッダが積み重なって、ネットワークのパケットのサイズが大きくなりすぎたりするのかもしれない。

ネットワークの構成

  1. サーバーやLAN内のルータ
  2. マンションのNAT
  3. キャリアネットワーク
  4. スマホ(デザリング)
  5. PCとか

状況

A ->

 キャリアネットワークのときで、直接マンションのNATを超えたとき

B ->

 キャリアネットワークのときで、VPSなどの固定IPを持ったサーバーを経由したとき

C ->

 光回線などの固定回線で、直接マンションのNATを超えたときと、VPSなどの固定IPを持ったサーバーを経由したときの両方について含まれる

状況別の表

A B C
Ping ✅ OK ✅ OK ✅ OK
SMB(ファイル共有) ✅ OK 確かめていない ✅ OK
DNS ✅ OK ✅ OK ✅ OK
SSH ❌ Failed ✅ OK ✅ OK
HTTP(HTTPS) ❌ Failed ❌ Failed ✅ OK

MTU設定方法(要管理者権限)

デフォルトで設定されているMTUのサイズ

1500

今回うまくいったMTUのサイズ

1000

一時的な設定(とりあえずすぐ設定したいとき)

ip コマンドを使う

sudo ip link set dev [ネットワークアダプタ名] mtu [設定したいMTUサイズ]

ip コマンドを使う例

# 例
# ip a
# ...
# 4: vpn_vpnhome: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
#     link/ether 5e:76:29:d3:1b:85 brd ff:ff:ff:ff:ff:ff
#     inet 192.168.1.203/24 scope global vpn_vpnhome
#        valid_lft forever preferred_lft forever

# sudo ip link set dev vpn_vpnhome mtu 1000

# ip a
# ...
# 4: vpn_vpnhome: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1000 qdisc fq_codel state UNKNOWN group default qlen 1000
#     link/ether 5e:76:29:d3:1b:85 brd ff:ff:ff:ff:ff:ff
#     inet 192.168.1.203/24 scope global vpn_vpnhome
#        valid_lft forever preferred_lft forever

永続化設定(networkmanagerを使っているとき)

sudo nmcli connection modify [ネットワークアダプタ名] 802-3-ethernet.mtu [設定したいMTUサイズ]

# vpn_vpnhome の MTU サイズを 1000 に変更
# sudo nmcli connection modify vpn_vpnhome 802-3-ethernet.mtu 1000

追記

2025年8月1日

 なんか何となくブックマークをあさっていたら、TU,MSS の計算と最適化の便利な手段をまとめるというサイトにたどり着いた。それで、さらにリンクをたどって、Visual packet size calculator — Daniil Baturinというところに行くと、こんな記述が目に止まった。

Notes

Knowing the encapsulation overhead of your protocol stack is important for configuring VPN tunnels. You need to set the tunnel interface MTU correctly, to avoid excessive packet fragmentation.

 私の解釈だと「VPNやら何かしらの通信のためにたくさんヘッダーが乗り、パケットサイズが大きすぎると、パケットが分割されて無駄が発生するから、MTUサイズをちゃんと計算しよう」的なことが書かれているように思った。

 それでさらに今回に話題につながる思いつきとしては、中途半端に通信ができなかったとき、MTUサイズを小さく変更することで通信できたのは、パケットサイズが大きすぎて分割が必要な時にどこかでできなかったからではないか?ということまでは見えてきた気がした。

参考にしたサイトとか