Hotelske mreže i konferencijski vatrozidi često prikazuju posebno polje za dopuštenje, i netko u njega upiše 47 očekujući da će PPTP raditi. Pravilo se stvara, tunel i dalje ne uspijeva, a sljedeći pokušaj koristi drugi broj. Pogreška je u samom paketu: IPv4 ima polje protokola koje imenuje što slijedi nakon IP zaglavlja, dok TCP i UDP imaju polja porta koja postoje samo kad ste unutar jednog od tih zaglavlja. To nisu dva zapisa iste dozvole.

IPv4 zaglavlje imenuje sljedeći protokol

Polje protokola jedan je bajt u IPv4 zaglavlju i sadrži broj koji opisuje korisni teret: 6 za TCP, 17 za UDP, 47 za GRE, 50 za ESP. Sve što filtrira pakete čita tu vrijednost prije nego pogleda dublje, jer dublje zaglavlje ima smisla tek kad je tip poznat. Promijenite port kasnije u razgovoru, a ovo se polje nije pomaknulo.

Pravilo napisano protiv protokola 47 stoga opisuje IP sloj. Nijedan port uopće ne sudjeluje u odluci.

Portovi postoje unutar TCP i UDP, nigdje drugdje

Portovi su šesnaestobitni identifikatori unutar TCP i UDP zaglavlja, a njihov je posao razdvojiti razgovore koji dijele jednu adresu. GRE zaglavlje nosi vrijednost tipa protokola, često EtherType, plus neobavezne ključeve za multipleksiranje. Zato izraz port 47 ne imenuje ništa s čime bi se GRE paket mogao podudarati.

Sučelja vatrozida razlikuju se po tome koliko toga otkrivaju. Neki prihvaćaju broj protokola, neki nude imenovani popis, a rijetki prihvaćaju samo TCP ili UDP s portovima.

PPTP koristi oba sloja istodobno

PPTP je najjasniji primjer jer namjerno dijeli svoj posao na dva sloja. Kontrolna veza je TCP sesija prema portu 1723, a putanja podataka je GRE, protokol 47, bez ikakva porta. Vatrozid koji dopušta 1723 i ništa drugo pušta pregovore da počnu, a zatim odbacuje korisni teret. Tunel izgleda kao da visi nakon autentifikacije umjesto da se ne uspije povezati, i zato se simptom često prijavljuje kao problem s lozinkom.

PathOuter protocolPort
Control channelTCP, protocol 61723
Data channelGRE, protocol 47None

Čitajte dva retka odvojeno kad pišete pravilo i provjerite svaki prema sintaksi proizvođača. Jedan redak zahtijeva port, drugi zahtijeva broj protokola, i nijedan pojedinačni unos ne pokriva oboje.

Zašto stranica za prosljeđivanje portova ne može izraziti GRE

Obrazac za prosljeđivanje koji prihvaća samo TCP i UDP ne može opisati GRE, kako god se obrazac zvao. Prevođenje adresa dodaje drugu poteškoću, jer GRE nema portove i prevoditelj mora umjesto toga pratiti identifikator poziva. Neki kućni routeri dolaze s pomoćnikom koji to rješava; mnogi ne dolaze, i nijedan dodatni TCP unos dopuštenja neće stvoriti takvo ponašanje.

Tamo gdje je suvremeni tunel stvarni zahtjev, odaberite dizajn koji namjerno koristi TCP ili UDP umjesto da se nadate da će prevoditelj točno pogoditi.

Enkapsulacija odlučuje što filtar vidi

Enkapsulacija mijenja vanjski paket, a vanjski paket je ono s čime se pravilo podudara. Izvorni ESP je protokol 50, dok NAT prolaz umata ESP unutar UDP 4500 da bi preživio prevođenje adresa. Filtar koji dopušta UDP 4500 nikada ne vidi protokol 50, a filtar napisan za protokol 50 nikada se ne podudara s umotanim oblikom.

Pitajte na kojoj su se enkapsulaciji klijent i gateway dogovorili, pa napišite pravilo za taj vanjski oblik i ništa više.

Napišite pravilo tako da ga netko može provjeriti

Izrazite svako pravilo kao obitelj adresa, vanjski protokol, transportne portove ako ih ima, smjer i oba kraja. Recenzent može usporediti tu rečenicu sa snimkom paketa i doći do presude. Uputu da se otvori 47 nitko ne može provjeriti, i zato ona godinama preživljava u priručnicima.

Dodajte test koji to dokazuje: povežite se dok snimate na vanjskom sučelju i potvrdite vanjski protokol i port koji se stvarno pojavljuju u tragu.

Povezani članci