MTUの確認方法は、見たいものによって2つに分かれます。端末に設定された値は、Windowsなら「netsh interface ipv4 show subinterfaces」、Linuxなら「ip link show」が確認のコマンドです。通り道全体で通せる大きさは、分割禁止を付けたpingで調べます。イーサネットの標準は1500バイトです。
この記事でわかること
- MTUの意味と、1500・1492・1280などの代表的な値
- Windows・Linux・Mac・Ciscoで設定されたMTUを確認するコマンド
- 通り道全体の経路MTUを確かめる方法(IPv4・IPv6)
- MTUが合わないときに起きる症状と原因
- MTUの変更と、MSSで調整する方法
一次情報: RFC 1191「Path MTU Discovery」(参照)/RFC 8200「Internet Protocol, Version 6 (IPv6) Specification」(参照)/RFC 8201「Path MTU Discovery for IP version 6」(参照)/RFC 2516「PPPoE」(参照)/RFC 879「The TCP Maximum Segment Size」(参照)/Microsoft Learn「ping」(参照)※2026年10月時点
MTUとMSSの関係は、CCNAの試験範囲にも入っている基本の知識です。CCNAの受験料・勉強時間と、取得後に求人の見え方がどう変わるかは別の記事にまとめました。
MTUとは?1回で送れるパケットの最大サイズ
MTUとは、1つのインターフェースが1回で送れるIPパケットの最大サイズ(バイト)のことです。イーサネットでは1500バイトが標準で、多くのPCやサーバーはこの値のまま使われています。
確認するときに分けて考えたいのが、次の2つです。
| 確認したいもの | 中身 | 確かめ方 |
|---|---|---|
| インターフェースのMTU | その端末・機器に設定された値 | OSや機器の表示コマンド |
| 経路MTU | 相手までの通り道で一番小さいMTU | 分割禁止を付けたping、tracepath |
端末が1500でも、途中にVPNやPPPoEの区間があれば、そこで通せる大きさは小さくなります。通信のトラブルで効くのは、たいてい経路MTUのほうです。
| 値(バイト) | 場面 | 根拠 |
|---|---|---|
| 1500 | イーサネットの標準 | 多くのNIC・機器の既定値 |
| 1492 | PPPoEの回線 | RFC 2516(PPPoEのヘッダー6+PPPの2バイトのぶん小さい) |
| 1280 | IPv6で全リンクに求められる最小値 | RFC 8200 |
| 9000前後 | ジャンボフレーム | 機器ごとに上限が違う。区間の全機器で揃える |
回線事業者やVPNの製品によっては、1500や1492よりさらに小さい値を推奨していることがあります。その場合は、契約先や製品の資料にある値が優先です。
MSSはMTUからヘッダーを引いた値
MSSは、TCPが1回で運ぶデータ部分の最大サイズです。RFC 879では、MTUからTCPとIPのヘッダーの大きさを引いて求めると定められています。IPv4のヘッダー20バイトとTCPのヘッダー20バイトを引くので、MTU 1500ならMSSは1460です。
端末・機器のMTUを確認するコマンド
設定されたMTUは、OSや機器ごとに確かめ方が違います。どれも表示するだけのコマンドで、設定は変わりません。
| 環境 | コマンド | 見るところ |
|---|---|---|
| Windows(コマンドプロンプト) | netsh interface ipv4 show subinterfaces | 左端のMTUの列 |
| Windows(IPv6) | netsh interface ipv6 show subinterfaces | 同上 |
| Windows(PowerShell) | Get-NetIPInterface | NlMtuの列 |
| Linux | ip link show | 「mtu 1500」の部分 |
| Mac | ifconfig en0 | 「mtu 1500」の部分 |
| Cisco IOS | show interfaces GigabitEthernet0/1 | 「MTU 1500 bytes」 |
| Cisco IOS(IPのMTU) | show ip interface GigabitEthernet0/1 | 「MTU is 1500 bytes」 |
Windowsのnetshでは、次のように表示されます。
MTU MediaSenseState バイト イン バイト アウト インターフェイス
---------- --------------- ------------ ------------ -------------
4294967295 1 0 51200 Loopback Pseudo-Interface 1
1500 1 8123456789 1234567890 Wi-Fi
ループバックの大きな数字は、PCの中だけで使う仮のインターフェースの値なので気にしなくて大丈夫です。実際の通信に使うWi-Fiやイーサネットの行を見ます。
Cisco機器は2種類のMTUがある
Cisco IOSでは、show interfacesの「MTU」はインターフェース自体の値、show ip interfaceの「MTU is」はIPパケットに使う値です。ふだんは同じですが、トンネルやサブインターフェースでIPのMTUだけを下げていると食い違います。トンネルの設定を見るときは、両方を確かめておくと安心です。
経路MTUを確かめる|分割禁止のpingで探す
通り道全体のMTUは、分割禁止(DF)を付けたpingで、通る最大のサイズを探して求めます。手順と計算表は、pingコマンドの使い方の記事に詳しくまとめてあるので、あわせてご覧ください。ここでは要点とIPv6の違いを押さえます。
ping -f -l 1472 192.0.2.10 (Windows・IPv4)
ping -M do -s 1472 192.0.2.10 (Linux・IPv4)
tracepath 192.0.2.10 (Linux。pmtuの値が出る)
アドレスは説明用の値です。IPv4では、通った最大のデータサイズに28(IPヘッダー20+ICMPヘッダー8)を足すと経路MTUになります。1472が通れば1500です。
IPv6は「-f」を使わず、48を足す
Microsoftの資料のとおり、Windowsのpingの-fはIPv4でしか使えません。IPv6では、もともとルーターがパケットを分割しないためです。RFC 8200にも、IPv6の分割は送信元だけが行うと書かれています。
ping -6 -l 1452 2001:db8::10
IPv6のヘッダーは40バイト、ICMPv6のヘッダーは8バイトなので、足すのは48です。1452が通れば経路MTUは1500になります。
MTUが合わないときに起きること
経路MTUより大きいパケットを送ると、IPv4では途中のルーターが「分割が必要だがDFが立っている」というICMPを送り返します。RFC 1191の経路MTU探索は、この知らせを受けて送るサイズを下げるしくみです。IPv6でも、RFC 8201の「Packet Too Big」が同じ役割を担います。
問題は、途中のファイアウォールがこのICMPを止めている場合です。知らせが届かないため、大きいパケットだけが黙って捨てられ続けます。
知らせのICMPが届かないと、大きいパケットだけが消える
- 送信元が1500バイトで送り、途中に1400の区間がある場合
- 1ルーターが通せずに捨てるDFが立っているので分割もできない
- 2「小さくして」とICMPで知らせるIPv4はFragmentation needed、IPv6はPacket Too Big
- 3途中で止められると、送信元は気づけない同じ大きさで送り直し続け、通信が止まって見える
小さいpingは通るのに、Webや転送だけ止まるときはこの形を疑う。
図:経路MTU探索は、途中から返るICMPが届いて初めて働く
| 症状 | 起きていること |
|---|---|
| pingは通るのに、一部のWebページが途中で止まる | 小さいパケットは通り、大きい応答だけ落ちている |
| HTTPSだけつながらない、または途中で切れる | 証明書を含む大きなパケットが届かない |
| VPNにつないだ後だけ、ファイル共有や転送が止まる | VPNのヘッダーのぶん、通せる大きさが減っている |
| SSHのログインはできるが、大きな出力で固まる | 長い結果だけが通り道で捨てられている |
MTUを変更する・MSSで調整する
原因がMTUだと分かったら、直し方は2通りです。端末のMTUを下げる方法と、ルーターでMSSを書き換える方法があります。
| 環境 | コマンドの例 |
|---|---|
| Windows | netsh interface ipv4 set subinterface “イーサネット” mtu=1400 store=persistent |
| Linux(一時的) | sudo ip link set dev eth0 mtu 1400 |
| Cisco IOS(トンネルなど) | ip mtu 1400 と ip tcp adjust-mss 1360 |
Windowsの””の中には、netshの一覧に出たインターフェース名を入れてください。Linuxのip linkでの変更は再起動で戻るので、残すにはネットワークの設定ファイル側で指定します。
端末より、ルーターでMSSを合わせるほうが早い
利用者のPCを1台ずつ変えるのは現実的ではありません。そこで現場では、VPNやトンネルの入口のルーターで、TCPの接続を始めるときのMSSを小さく書き換える方法がよく使われます。Cisco IOSの「ip tcp adjust-mss」がその設定です。
MSSは「MTU−40」で決めます。トンネルのMTUを1400にしたなら、MSSは1360です。TCPの通信はこれで大きいパケットを作らなくなり、端末側の設定を触らずに済みます。UDPの通信にはMSSが無いので、別に考える必要があります。
よくある質問
MTUの最適な値はいくつですか?
ふつうのイーサネットなら、既定の1500のままで問題ありません。PPPoEの回線なら1492が上限で、VPNを通す区間はそれより小さくなります。回線事業者や製品が値を示している場合は、その値に合わせるのが確実です。
MTUとMSSは何が違いますか?
MTUはIPパケット全体の最大サイズ、MSSはTCPが1回で運ぶデータ部分の最大サイズです。MSSはMTUからIPとTCPのヘッダーを引いた値で、IPv4ならMTU 1500に対してMSS 1460になります。
pingで「パケットの断片化が必要ですが、DF が設定されています。」と出ました
指定したサイズが、手元か途中の区間のMTUを超えているという意味です。サイズを少しずつ下げて、このメッセージが出なくなる境目を探してください。通った最大値に28を足した数が、IPv4の経路MTUです。
ジャンボフレームにすると速くなりますか?
大きなデータをまとめて送る区間では、ヘッダーの割合が減って効率が上がります。ただし、その区間のNIC・スイッチ・相手の機器まで全部が同じ値に対応していないと、逆に通信が止まります。サーバーとストレージの間など、範囲を決めて揃える使い方が基本です。
IPv6のpingで-fを付けるとエラーになります
Windowsのpingの-fはIPv4専用です。IPv6ではルーターが分割をしないので、-fを付けなくても分割されません。「ping -6 -l 1452 相手」のようにサイズだけを指定して試します。
まとめ
- MTUの確認は「設定された値」と「通り道全体の経路MTU」の2つに分けて考える
- 設定値はWindowsのnetsh・Get-NetIPInterface、Linuxのip link、Ciscoのshow interfacesで見る
- 経路MTUはDF付きのpingで探す。IPv4は+28、IPv6は+48
- 小さいpingは通るのに大きい通信だけ止まるなら、ICMPが止められたMTUの問題を疑う
- 直すときは、ルーターのMSS調整(MTU−40)で端末を触らずに済ませる方法が早い
MTUの問題は、症状が「一部だけおかしい」形で出るので、気づくまでに時間がかかりがちです。pingのサイズ指定で早めに当たりをつけ、必要ならtcpdumpで大きいパケットの再送を確かめると、原因を短い時間で確定できます。
MTUのような「一部だけ通らない」障害を切り分けられる力は、運用保守の現場で頼られます。構築から運用保守へ移る転職の成功パターンと失敗パターンを整理した記事です。
免責事項
※本記事はRFC・Microsoftの公式ドキュメントなどの公開情報をもとに整理したものです。コマンドの表示や挙動は、OSや機器のバージョン・環境によって変わる場合があります。業務で使う機器では、所属先の手順と各製品・回線事業者の最新資料をあわせてご確認ください。

