IP、路由與 IPv6
Mac 上的 MTU 問題
MTU 是介面送出的最大封包大小。如果路徑上有某段連結只接受較小的封包,大型傳輸就可能停滯。
症狀
- 有些網站開始載入後就停住了。
- 小請求正常,但上傳或大型下載會停滯。
- 只有在開啟 VPN 時,或只在某個網路上才會出問題。
可能原因
- MTU 較小的連結。PPPoE、VPN 通道和部分行動網路連結傳送的封包,比使用 1500 位元組的標準乙太網路小。
- ICMP 訊息被阻擋。阻擋 ICMP 的防火牆會讓 Mac 無法得知封包過大。
- 手動設定的 MTU。手動設定的值對這個網路來說可能太大或太小。
如何檢查
找出每個網路連接埠的裝置名稱,例如 Wi-Fi 是
en0。networksetup -listallhardwareports顯示介面的 MTU。
networksetup -getMTU en0送出含 1472 個資料位元組、並設定「不分段」(Don't Fragment)位元的 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 App 有此設定,請在 App 中更改 MTU。
常見問題
為什麼 1472 會變成 1500?
IPv4 ping 封包有 20 位元組的 IP 標頭和 8 位元組的 ICMP 標頭。1472 個資料位元組加上 28 個標頭位元組,就是 1500。
為什麼 PPPoE 是 1492?
PPPoE 會在乙太網路訊框內加上自己的標頭。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 乙太網路 (PPPoE)
資料來源檢查日期:2026年10月29日。man 頁面為 macOS 內建版本;在終端機中用 man <name> 開啟。