TCP MSS podešavanje na Linux IPsec gatewayu: šta ono rješava
Mali zahtjevi rade, a veliki odgovori se zaglave. Provjerite je li MSS pravilo na unutrašnjoj TCP stazi pravo rješenje i gdje mora stajati.
Ping radi, SSH radi, mala stranica se učita, a onda svaki veliki odgovor visi dok ne istekne vrijeme. Klasičan obrazac upućuje na veličinu paketa, a ne na dostupnost: put nosi rukovanje i prvih nekoliko kilobajta, a zatim segment pune veličine nestane. Na Linux IPsec gatewayu TCP MSS pravilo je često rješenje, ali samo ako razumijete šta mijenja i gdje se paket koji dotiče zapravo nalazi. Redoslijed ispod prati paket od simptoma do postavljanja pravila, tako da možete stati čim objašnjenje prestane odgovarati.
Simptom koji upućuje na MSS
TCP se pri rukovanju dogovara o najvećoj veličini segmenta. Ako je ta vrijednost veća od onoga što put može prenijeti nakon enkapsulacije, pošiljalac nastavlja stvarati segmente koji nikada ne stignu, a veza se zaglavi nakon prvog kruga. Mali odgovori prolaze; veliki ne.
ICMP povratna informacija može spasiti vezu kroz otkrivanje MTU puta, a firewall koji odbacuje te poruke pretvara zastoj u tihu crnu rupu. Zato isti tunel radi za jednu aplikaciju, a ne uspijeva za drugu bez ikakve očigledne razlike u konfiguraciji.
Šta TCPMSS pravilo radi, a šta ne radi
Pravilo prepisuje MSS opciju u TCP paketima rukovanja dok prolaze. Ono ne postavlja MTU tunelskog interfejsa, ne mijenja IPsec politiku, a na savremenim kernelima samo snižava objavljenu vrijednost umjesto da podiže onu koja je već manja. Takođe dira samo TCP; UDP korisni tereti, ponašanje DNS-a i dogovoreni selektori saobraćaja su izvan njegovog domašaja.
Pošto se promjena dešava tokom rukovanja, postojeća veza uspostavljena prije pravila zadržava staru vrijednost. Testirajte novom vezom i očekujte da će prvi pokušaj nakon promjene biti onaj koji vam nešto kaže. Ništa u pravilu ne dopire do veze koja je već otvorena. Zato ispravka primijenjena usred incidenta može izgledati kao da nije učinila baš ništa.
Stavite pravilo na unutrašnju TCP stazu
Na Linux gatewayu zasnovanom na politici, proslijeđeni paket i dalje izgleda kao običan TCP kada ga firewall vidi. IPsec politika odlučuje da će paket biti zaštićen; firewall ne vidi ESP zaglavlje za unutrašnji tok, pa upoređivanje sa ESP-om ovdje opisuje potpuno drugi paket. Taj nesklad je razlog zašto neka pravila izgledaju ispravno i nikada se ne poklapaju.
U terminima iptablesa pravilo pripada mangle tabeli na putu prosljeđivanja, ograničeno na pakete rukovanja: iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1270. Broj je primjer, a ne univerzalna konstanta; izvedite ga iz troškova enkapsulacije i stvarnog MTU-a puta. nftables ekvivalent postavlja najveću veličinu segmenta u forward ili postrouting lancu.
Držite vanjska pravila osluškivanja za IKE i ESP odvojeno od unutrašnjih pravila prosljeđivanja. Jedno pravilo koje pokušava autorizovati i tok aplikacije i vanjski protokol na kraju se pouzdano ne poklapa ni sa jednim.
Poštujte vlasnika firewalla i red NAT-a
Ako UFW upravlja firewallom hosta, dodajte mangle i promjene prosljeđivanja kroz njegovu podržanu trajnu konfiguraciju, umjesto kucanjem komande koja nestaje pri sljedećem ponovnom učitavanju. Pravilo umetnuto u pogrešnu tabelu ili poslije terminalnog pravila nema efekta, a aktivna tabela to skriva od vas.
Prevođenje izvora je odvojena odluka koja se često prepliće sa ovom. Izuzeće postavljeno prije općeg masquerade pravila sprječava da zaštićeni saobraćaj izgubi izvor koji njegova politika zahtijeva; ono ne popravlja problem veličine, a pravilo veličine ne popravlja problem prevođenja.
Provjerite usko, pa stanite
Otvorite novu vezu prema servisu koji ne uspijeva i posmatrajte i aplikaciju i brojače pravila. Ako zastoj nestane, imate dokaz o toj TCP stazi s tom enkapsulacijom. Nemate dokaz da se svaki VPN protokol uklapa, da je svaka UDP aplikacija popravljena ili da je određeni uzvodni servis bio prvobitni uzrok.
Ostavite ICMP povratnu informaciju o veličini da radi gdje politika dozvoljava, i pažljivo tretirajte automatsko ograničavanje zasnovano na MTU rute kada vanjska IPsec staza nije predstavljena unutrašnjom rutom. Što je zaključak uži, sljedeći incident je lakše dijagnostikovati.