部分網站無法存取

部分網站無法存取

我無法訪問一些網站,例如 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?

參考:如何使用 ICMP ping 確定正確的 MTU 大小

相關內容