IP、ルーティング、IPv6

MacのMTUの問題

MTUは、インターフェイスが送信する最大のパケットサイズです。経路上のどこかが小さいパケットしか通さないと、大きな転送が止まることがあります。

対象:「システム設定」の手順はmacOS 13 Ventura以降。ターミナルのコマンドは現在のすべてのmacOSバージョンで使えます。確認日:2026年10月29日

症状

  • 一部のサイトが読み込みを始めて、途中で止まる。
  • 小さなリクエストは通るが、アップロードや大きなダウンロードが止まる。
  • VPNをオンにしたときだけ、または特定のネットワークでだけ問題が起きる。

考えられる原因

  • MTUが小さいリンク。PPPoE、VPNトンネル、一部のモバイル回線は、1500バイトを使う標準のEthernetより小さいパケットしか運びません。
  • ICMPメッセージがブロックされている。ICMPをブロックするファイアウォールがあると、パケットが大きすぎることをMacが知ることができません。
  • 手動のMTU設定。手動で設定した値が、このネットワークには大きすぎたり小さすぎたりすることがあります。

確認方法

  1. 各ネットワークポートのデバイス名を調べます。たとえばWi-Fiならen0です。

    networksetup -listallhardwareports
  2. インターフェイスのMTUを表示します。

    networksetup -getMTU en0
  3. Don't Fragmentビットを設定して、データ部1472バイトのpingを送ります。28バイトのヘッダと合わせて1500バイトになります。

    ping -D -s 1472 -c 3 1.1.1.1
  4. 応答が返らない場合は、サイズを小さくして試します。応答がある最大のサイズを見つけ、28を足します。

    ping -D -s 1464 -c 3 1.1.1.1
  5. インターフェイスが受け付けるMTUの範囲を表示します。

    networksetup -listValidMTURange en0

解決方法

  1. MTUは、プロバイダや管理者から指示があった場合か、上のテストを行ったあとにだけ変更してください。

  2. アップルメニュー >「システム設定」>「ネットワーク」を選択します。サービスをクリックし、「詳細」をクリックしてから、「ハードウェア」をクリックします。

  3. 「構成」を「手動」に設定し、MTUを入力します。

  4. またはターミナルで設定します。この例では、PPPoEでよく使われる1492を使います。

    networksetup -setMTU en0 1492

    管理者パスワードが必要です。

  5. MTUを自動に戻すには、次のコマンドを使います。

    networksetup -setMTUAndMediaAutomatically en0

    管理者パスワードが必要です。

  6. VPNの場合は、VPNアプリにMTUの設定があれば、そこで変更します。

よくある質問

1472で1500になるのはなぜですか?

IPv4のpingパケットには、20バイトのIPヘッダと8バイトのICMPヘッダがあります。データ部1472バイトに28バイトのヘッダを足すと1500になります。

PPPoEで1492なのはなぜですか?

PPPoEは、Ethernetフレームの中に独自のヘッダを追加します。RFC 2516では、PPPoEのMRUは1492バイトまでと定められています。

出典

出典は2026年10月29日に確認しました。manページはmacOSに付属のものです。「ターミナル」でman <name>を実行すると開けます。