Pingovi prolaze, veliki prenosi se zaglave, a tunel se prijavljuje kao zdrav. Neko snizi MTU interfejsa, neko drugi podesi MSS, i povremeno problem nestane iz razloga koje niko ne zapiše. Ta dva broja opisuju različite objekte, pa promjena pogrešnog daje popravku koja izgleda kao sreća. Evo postupka: prepoznajte sloj, primijenite odgovarajuće podešavanje, pa testirajte na novoj vezi.

Dva broja, dva objekta

MTU pripada vezi ili interfejsu: to je najveći paket koji se može prenijeti bez dijeljenja. MSS pripada TCP-u: to je najveća količina TCP sadržaja koju segment može nositi, a isključuje i TCP i IP zaglavlja. Na običnoj Ethernet vezi sa IPv4, MTU od 1500 bajtova daje poznati MSS od 1460 bajtova. Ti brojevi opisuju različite slojeve i razmjenjuju se različitim mehanizmima. Lako ih je pobrkati jer se oba mjere u bajtovima i oba su blizu 1500.

Jedan dolazi kao postavka interfejsa. Drugi dolazi kao opcija unutar SYN segmenta, dogovorena između krajnjih tačaka koje nikad ne vide vaš interfejs.

Gdje završi vanjski dodatni teret

VPN stavlja unutrašnji paket unutar drugog, a vanjski paket mora stati na fizičku putanju. Zaglavlja enkapsulacije, vanjsko IP zaglavlje, transportno zaglavlje i bilo koja oznaka provjere autentičnosti troše bajtove koje unutrašnji paket ne može koristiti. Ostavite tunelski interfejs na 1500 i vanjski paket redovno prelazi ono što putanja može prenijeti. Uz postavljen bit 'ne fragmentiraj', ruter ga odbacuje i treba da pošalje ICMP grešku; ako se ta greška filtrira, pošiljalac to nikad ne sazna.

Zato kvar izgleda selektivno. Mali zahtjevi završe, a sve što ispuni segment zapne, jer se odbacuju samo veliki paketi. Tunel koji propušta ping nije tunel koji nosi podatke.

Podešavanje MSS-a i gdje se primjenjuje

Podešavanje MSS-a prepisuje vrijednost u SYN segmentu dok prelazi odabranu tačku, pa obje strane biraju manji sadržaj a da nijedna ne zna zašto. Na Linuxu je to meta u mangle tabeli koju primjenjuje izričito pravilo, i mora pogoditi SYN pakete u smjeru koji želite. Ograničite ga na tunelski interfejs i raspon adresa, jer široko pravilo mijenja ponašanje saobraćaja koji nikad ne ulazi u tunel.

Učinak je samo na TCP. UDP aplikacija, QUIC sesija i svaki protokol koji gradi vlastite datagrame ostaju netaknuti.

Dijagnostikujte na fiksnoj putanji

Držite jednu promjenljivu odjednom. Testirajte paketom čiju veličinu sami birate, i postavite zastavicu 'ne fragmentiraj' da jezgro prijavi rezultat umjesto da ga sakrije.

Zabilježite gdje kvar počinje: unutar tunela, na tunelskom interfejsu ili na fizičkoj putanji nakon enkapsulacije. Zatim promijenite jedan broj i ponovite isti test, a ne drugi. Postojeće veze zadržavaju MSS koji su dogovorile, pa je promjena politike vidljiva samo na novoj vezi, zbog čega keširana stranica ne dokazuje ništa ni u jednu stranu. Ako jedan veliki prenos počne raditi, naučili ste o toj putanji, a ne o svakom protokolu na njoj.

Šta svaka promjena ne rješava

Snižavanje MTU-a interfejsa ne mijenja MSS sesije koja je već uspostavljena. Podešavanje MSS-a ne pomaže UDP toku i ne popravlja putanju na kojoj se ICMP greške filtriraju samo u jednom smjeru. Svaka promjena rješava jednu klasu problema, a ostale ostavlja tačno kakve su bile.

Zapišite koju ste prilagodbu primijenili, gdje i koji je test pokazao razliku, jer inače sljedeći inženjer primijeni obje i izgubi sposobnost da kaže koja je bila važna. Ako je ograničenje stvarno i trajno, radije odaberite tunelski MTU koji ga odražava nego podešavanje koje ga skriva. Ako morate podešavati, ostavite pravilo suženog obima i s komentarom, jer neobjašnjeno mangle pravilo po pravilu postaje trajno.

Povezani članci