
我無法訪問一些網站,例如 slack.com。於是我搜尋了一下,發現我的Ubuntu 16.04系統有一些與MTU有關的問題。在嘗試了一些 ping 請求後,我發現大小為 1497 或更大的資料包沒有被發送。因此,為了重新配置 MTU,我使用了
sudo ifconfig enp7s0 mtu 1497
但是,一旦我執行此命令,我的互聯網連接就會斷開並且無法進一步連接。我正在使用 DSL 連線。
請就如何解決此問題提出一些建議。
答案1
重新啟動以恢復原始 MTU 大小 (1500)...或嘗試使用 sudo ifconfig enp7s0 mtu 1500
...設定它以恢復網路存取。
除非您有一些不受支援/配置錯誤的 VLAN 設置,否則 MTU 不應成為問題。 MTU 是在網路中的每組電腦和路由器之間協商的,並且套件的大小適合正在進行的 MTU。
答案2
您的問題出在 DSL 連線的 MTU 設定上。
Ubuntu 的網路配置中有一個 MTU 設置,路由器中有一個 WAN MTU 設定。
對於 DSL,常見的 MTU 設定是 1492。
若要確定正確的設置,請從所有 MTU 設定 = 1500 和 VPN = 關閉開始。 (VPN 需要不同的測試)。
在終端機中:
ping [-c count] [-M do] [-s packet_size] [host]
使用的選項是:
c count
: ping 的次數M hint
:選擇路徑MTU發現策略。可以是do
(禁止分段,甚至本地分段)、want
(進行 PMTU 發現,當資料包大小較大時在本地分段)或dont
(不設定 DF 標誌)。s packet_size
:指定要傳送的資料位元組數。
您應該始終從 1472 開始,每次遞減 10。一旦收到回复,就加 1,直到收到碎片資料包。取該值(最後一個有效值)並將該值加上 28 以考慮各種 TCP/IP 標頭。例如。假設 1452 是正確的封包大小(您首先收到對 ping 的 ICMP 回覆)。實際 MTU 大小為 1480,這是我們正在使用的網路的最佳值。
ping -c 4 -M do -s 1472 8.8.8.8 # this will probably show fragmentation
ping -c 4 -M do -s 1462 8.8.8.8 # may show fragmentation
ping -c 4 -M do -s 1452 8.8.8.8 # no fragmentation?
ping -c 4 -M do -s 1453 8.8.8.8 # still no fragmentation?