IP、ルーティング、IPv6
MacのMTUの問題
MTUは、インターフェイスが送信する最大のパケットサイズです。経路上のどこかが小さいパケットしか通さないと、大きな転送が止まることがあります。
症状
- 一部のサイトが読み込みを始めて、途中で止まる。
- 小さなリクエストは通るが、アップロードや大きなダウンロードが止まる。
- VPNをオンにしたときだけ、または特定のネットワークでだけ問題が起きる。
考えられる原因
- MTUが小さいリンク。PPPoE、VPNトンネル、一部のモバイル回線は、1500バイトを使う標準のEthernetより小さいパケットしか運びません。
- ICMPメッセージがブロックされている。ICMPをブロックするファイアウォールがあると、パケットが大きすぎることをMacが知ることができません。
- 手動のMTU設定。手動で設定した値が、このネットワークには大きすぎたり小さすぎたりすることがあります。
確認方法
各ネットワークポートのデバイス名を調べます。たとえばWi-Fiなら
en0です。networksetup -listallhardwareportsインターフェイスのMTUを表示します。
networksetup -getMTU en0Don't Fragmentビットを設定して、データ部1472バイトのpingを送ります。28バイトのヘッダと合わせて1500バイトになります。
ping -D -s 1472 -c 3 1.1.1.1応答が返らない場合は、サイズを小さくして試します。応答がある最大のサイズを見つけ、28を足します。
ping -D -s 1464 -c 3 1.1.1.1インターフェイスが受け付けるMTUの範囲を表示します。
networksetup -listValidMTURange en0
解決方法
MTUは、プロバイダや管理者から指示があった場合か、上のテストを行ったあとにだけ変更してください。
アップルメニュー >「システム設定」>「ネットワーク」を選択します。サービスをクリックし、「詳細」をクリックしてから、「ハードウェア」をクリックします。
「構成」を「手動」に設定し、MTUを入力します。
またはターミナルで設定します。この例では、PPPoEでよく使われる1492を使います。
networksetup -setMTU en0 1492管理者パスワードが必要です。
MTUを自動に戻すには、次のコマンドを使います。
networksetup -setMTUAndMediaAutomatically en0管理者パスワードが必要です。
VPNの場合は、VPNアプリにMTUの設定があれば、そこで変更します。
よくある質問
1472で1500になるのはなぜですか?
IPv4のpingパケットには、20バイトのIPヘッダと8バイトのICMPヘッダがあります。データ部1472バイトに28バイトのヘッダを足すと1500になります。
PPPoEで1492なのはなぜですか?
PPPoEは、Ethernetフレームの中に独自のヘッダを追加します。RFC 2516では、PPPoEのMRUは1492バイトまでと定められています。
出典
- networksetup(8)、macOS 27.2に付属のmanページ
- ping(8)、macOS 27.2に付属のmanページ
- Appleサポート:Macでハードウェア設定を変更する
- RFC 2516:A Method for Transmitting PPP Over Ethernet (PPPoE)
出典は2026年10月29日に確認しました。manページはmacOSに付属のものです。「ターミナル」でman <name>を実行すると開けます。