IP、路由與 IPv6

Mac 上的 MTU 問題

MTU 是介面送出的最大封包大小。如果路徑上有某段連結只接受較小的封包,大型傳輸就可能停滯。

適用於:「系統設定」的步驟適用於 macOS 13 Ventura 以上版本。終端機指令適用於所有目前的 macOS 版本。檢查日期:2026年10月29日

症狀

  • 有些網站開始載入後就停住了。
  • 小請求正常,但上傳或大型下載會停滯。
  • 只有在開啟 VPN 時,或只在某個網路上才會出問題。

可能原因

  • MTU 較小的連結。PPPoE、VPN 通道和部分行動網路連結傳送的封包,比使用 1500 位元組的標準乙太網路小。
  • ICMP 訊息被阻擋。阻擋 ICMP 的防火牆會讓 Mac 無法得知封包過大。
  • 手動設定的 MTU。手動設定的值對這個網路來說可能太大或太小。

如何檢查

  1. 找出每個網路連接埠的裝置名稱,例如 Wi-Fi 是 en0。

    networksetup -listallhardwareports
  2. 顯示介面的 MTU。

    networksetup -getMTU en0
  3. 送出含 1472 個資料位元組、並設定「不分段」(Don't Fragment)位元的 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 App 有此設定,請在 App 中更改 MTU。

常見問題

為什麼 1472 會變成 1500?

IPv4 ping 封包有 20 位元組的 IP 標頭和 8 位元組的 ICMP 標頭。1472 個資料位元組加上 28 個標頭位元組,就是 1500。

為什麼 PPPoE 是 1492?

PPPoE 會在乙太網路訊框內加上自己的標頭。RFC 2516 將 PPPoE 的 MRU 限制為 1492 位元組。

資料來源

資料來源檢查日期:2026年10月29日。man 頁面為 macOS 內建版本;在終端機中用 man <name> 開啟。