無法通過 PPPoE 訪問 Linux 上的選定 https 站點
我的網際網路連接曾經是與我的提供商的直接 LAN 連接。那時,一切都可以在 Windows 和 Ubuntu(雙啟動)上正常載入。然而,不久前他們開始需要我使用使用者名和密碼撥號(PPPoE)。網關、子網遮罩、IP、DNS 伺服器都保持不變。但從那時起,我就無法在 Ubuntu 上瀏覽某些網站,即使在 Windows 上沒有出現此類問題。一些範例網站是 - Ovi 的登錄頁面(儘管 share.ovi.com 載入正常,nokia.com 載入正常)、Live Mail(適用於 Chrome(ium) 和 Opera,但不適用於 Firefox(3.6 和 4))Mozilla外掛網站和其他隨機網站。
一些不載入的網站顯示超時消息,對於一些網站(如 moz 外掛),瀏覽器將繼續嘗試載入而沒有結束(我已經這樣離開了幾個小時但沒有註意到任何不同發生)。
我嘗試將 DNS 伺服器更改為公共伺服器。我什至嘗試過從 Fedora LiveCD 啟動,然後將 DNS 更改為那些(甚至是 OpenDNS 的),但發生了完全相同的事情。導致此問題的 Linux 本身的某些配置本身可能存在什麼問題?
有誰知道為什麼會發生這種情況以及如何解決?
注意:此問題已在 SU 上交叉發布,但未得到任何回复。
更新:剛剛在這裡看到其他人遇到了類似的問題,並通過將NetworkManager.conf文件放入
/etc/NetworkManager
. 該文件中需要包含什麼內容?
您有MTU問題的症狀:一些 TCP 連接凍結,對於給定的命令或 URL 或多或少可重現,但沒有容易辨別的整體模式。一個明顯的症狀是互動式 ssh 會話執行良好,但文件傳輸幾乎總是失敗。此外,pppoe 是家庭使用者 MTU 問題的第一大罪魁禍首。所以我開了一個 MTU 檢查。
它是什麼?****最大傳輸單位是****網路鏈路上數據包的最大大小 。MTU 因傳輸介質而異,例如有線乙太網和 wifi (802.11) 具有不同的 MTU,而ATM鏈路(構成大部分長途基礎設施)各有自己的 MTU。 PPPOE是一種封裝協議,這意味著每個數據包都由幾個字節的標頭組成,然後是底層數據包——因此它將最大數據包大小降低了標頭的大小。 如果路由器檢測到數據包對於下一跳來說太大,IP允許路由器將數據包分段,但這並不總是有效。理論上應該找到合適的 MTU自動,但這也並不總是有效。特別是Google搜尋表明網路管理器並不總是正確地處理從 MTU 發現獲得的 MTU 資訊,但我不知道哪些版本受到影響或有問題的案例是什麼。
如何測量它。 如果您有
tracepath
來自 Linux 的iputils,請執行tracepath 8.8.8.8
以通過 Google 的 DNS 伺服器的路徑查看 MTU。如果您的版本traceroute
有--mtu
選項,請執行traceroute -n --mtu 8.8.8.8
. 有關更多選項,請參閱發現我和目標 IP 之間的 MTU 。缺乏自動化工具,您可以手動測量。嘗試將給定大小的 ping 數據包發送到響應它們的外部主機,例如
ping -c 1 -s 42 8.8.8.8
(在 Linux 上;在其他系統上,查找ping
命令的文件)。您的數據包應該通過足夠小的 42 值(如果 42 不起作用,則某些東西正在阻塞 ping。)。對於較大的值,數據包將無法通過。如果基礎設施的限制部分是您的本地乙太網網路,則 1464 是一個典型的最大值。如果幸運的話,當您發送的數據包過大時,您會看到類似Frag needed and DF set (mtu = 1492)
. 如果您不走運,請繼續嘗試該值,直到找到最大值,然後添加 28(-s
指定有效負載大小,除此之外還有 28 個字節的標頭)。也可以看看如何在 Ubuntu 論壇上使用 MTU 和 RWIN 優化您的 Internet 連接。如何設置(將 1454 替換為您確定的 MTU,以及
eth0
您的網路介面的名稱)
- 作為一次性(Linux):執行
ifconfig eth0 mtu 1454
- 永久(Debian 和 Ubuntu 等衍生產品,如果不使用網路管理器):編輯
/etc/network/interfaces
. 就在您的網路介面條目之後(在iface eth0 …
指令之後),添加一行帶有pre-up ifconfig $IFACE mtu 1454
. 或者,如果您的 IP 地址是靜態的,您可以將mtu 1454
參數添加到iface eth0 inet static
指令中。- 永久(Debian 和 Ubuntu 等衍生產品,帶或不帶網路管理器):創建一個呼叫
/etc/network/if-pre-up.d/mtu
以下內容的腳本並使其成為全球執行檔 (chmod a+rx
):#!/bin/sh ifconfig $IFACE mtu 1454
更多資源
- 如何診斷可靠不可靠的連接?(尤其是Mike Pennington 的回答)如果此處描述的簡單測量和限制方法不起作用,可能會有所幫助。