Moje internetové připojení bývalo přímým LAN připojením k mému poskytovateli. Tehdy by se vše načítalo v pořádku na Windows i Ubuntu (duální spouštění). Před chvílí však začali potřebovat, abych vytočil (PPPoE) pomocí uživatelského jména a hesla. Brána, maska podsítě, IP, DNS servery zůstaly stejné. Ale od té doby jsem nemohl procházet určité webové stránky na Ubuntu, i když ve Windows žádné takové problémy nebyly. Některé příklady webových stránek jsou – přihlašovací stránka Ovi (ačkoli share.ovi.com se načítá dobře a nokia.com dobře), Live Mail (funguje na Chrome(ium) a Opeře, ale ne na Firefoxu (3.6 i 4)) Mozilla Webové stránky doplňků a další náhodné webové stránky.
Některé weby, které se nenačtou, zobrazují zprávy o vypršení časového limitu a u některých webů (jako je ten moz addons) se prohlížeč bude snažit načíst bez konce (nechal jsem to tak i celé hodiny, ale nevšiml jsem si ničeho jiného stane).
Zkoušel jsem změnit servery DNS na veřejné. Dokonce jsem zkusil bootovat z Fedora LiveCD a pak změna DNS na ty (a dokonce na ty z OpenDNS), ale stane se přesně to samé. Co by mohlo být ze své podstaty špatné na nějaké konfiguraci v samotném Linuxu, která způsobuje tento problém?
Ví někdo, proč se to děje a jak to lze opravit?
Poznámka:Tato otázka byla zveřejněna na SU, ale nedostala žádnou odpověď.
Aktualizace: Právě jsem viděl, že někdo jiný má podobný problém, a vyřešil to vložením souboru NetworkManager.conf soubor v /etc/NetworkManager
. Co musí být v tomto souboru?
Přijatá odpověď:
Máte příznaky MTU problém:některá TCP spojení zamrznou, víceméně reprodukovatelně pro daný příkaz nebo URL, ale bez snadno rozpoznatelného celkového vzoru. Výmluvným příznakem je, že interaktivní relace ssh fungují dobře, ale přenos souborů téměř vždy selže. Kromě toho je pppoe hlavním nositelem problému MTU pro domácí uživatele. Takže předepisuji kontrolu MTU.
Co to je? m axim t výkupné u nit je maximální velikost paketu přes síťové spojení. MTU se liší od transportního média k transportnímu médiu, např. kabelový Ethernet a wifi (802.11) mají různé MTU a spoje ATM (které tvoří většinu infrastruktury na dlouhé vzdálenosti) mají každý svou vlastní MTU. PPPOE je zapouzdřený protokol, což znamená, že každý paket se skládá z několika bajtů hlavičky následovaných základním paketem – takže maximální velikost paketu se snižuje o velikost hlavičky. IP umožňuje směrovačům fragmentovat pakety, pokud zjistí, že jsou příliš velké pro další skok, ale ne vždy to funguje. Teoreticky by měla být správná MTU objevena automaticky, ale také to vždy nefunguje. Zejména googlování naznačuje, že Network Manager ne vždy správně jedná na základě informací o MTU získaných při zjišťování MTU, ale nevím, které verze jsou ovlivněny nebo jaké jsou problematické případy použití.
Související:Linux – Preferovaná/idiomatická metoda pro povolení systemd.service z instalace balíčku Debian?
Jak to změřit. Pokud máte tracepath
z linuxových iputils spusťte tracepath 8.8.8.8
abyste viděli MTU přes cestu k serveru DNS společnosti Google.
Pokud je vaše verze traceroute
má --mtu
spusťte traceroute -n --mtu 8.8.8.8
.
Další možnosti naleznete v části Zjistit MTU mezi mnou a cílovou IP.
Bez automatizovaných nástrojů můžete měřit ručně. Zkuste odeslat ping pakety dané velikosti externím hostitelům, kteří na ně odpoví, např. ping -c 1 -s 42 8.8.8.8
(na Linuxu; na jiných systémech vyhledejte dokumentaci k vašemu ping
příkaz). Vaše pakety by měly projít pro dostatečně malé hodnoty 42 (pokud 42 nefunguje, něco blokuje pingy.). U větších hodnot paket neprojde. 1464 je typická maximální hodnota, pokud je limitující částí infrastruktury vaše místní ethernetová síť. Pokud budete mít štěstí, když odešlete příliš velký paket, zobrazí se zpráva jako Frag needed and DF set (mtu = 1492)
. Pokud nebudete mít štěstí, pokračujte v experimentování s hodnotou, dokud nezjistíte, jaké je maximum, a pak přidejte 28 (-s
určuje velikost užitečného zatížení a kromě toho je zde 28 bajtů záhlaví).
Viz také Jak optimalizovat připojení k internetu pomocí MTU a RWIN na fórech Ubuntu.
Jak to nastavit (nahraďte 1454 MTU, kterou jste určili, a eth0
podle názvu vašeho síťového rozhraní)
- Jako jednorázové (Linux):
spusťteifconfig eth0 mtu 1454
- Trvale (Debian a odvozeniny, jako je Ubuntu, pokud nepoužíváte Správce sítě):
Upravit/etc/network/interfaces
. Hned za záznam pro vaše síťové rozhraní (zaiface eth0 …
direktiva), přidejte řádek spre-up ifconfig $IFACE mtu 1454
. Případně, pokud je vaše IP adresa statická, můžete přidatmtu 1454
parametr doiface eth0 inet static
směrnice. -
Trvale (Debian a odvozeniny, jako je Ubuntu, s nebo bez Správce sítě):
Vytvořte skript s názvem/etc/network/if-pre-up.d/mtu
s následujícím obsahem a udělejte jej světově spustitelným (chmod a+rx
):#!/bin/sh ifconfig $IFACE mtu 1454
Další zdroje
- Jak diagnostikovat spolehlivě nespolehlivé připojení? (zejména odpověď Mikea Penningtona) může být nápomocná, pokud zde popsaný jednoduchý přístup měření a limitů nefunguje.