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

IPv4 zaglavlje imenuje sljedeći protokol

Polje protokola je jedan 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 polje se nije pomjerilo.

Pravilo napisano protiv protokola 47 stoga opisuje IP sloj. Nijedan port uopšte ne učestvuje u odluci.

Portovi postoje unutar TCP i UDP, nigdje drugdje

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

Firewall sučelja se razlikuju po tome koliko toga otkrivaju. Neki prihvataju broj protokola, neki nude imenovanu listu, a rijetki prihvataju samo TCP ili UDP s portovima.

PPTP koristi oba sloja istovremeno

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 ikakvog porta. Firewall koji dozvoljava 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 reda odvojeno kad pišete pravilo i provjerite svaki prema sintaksi proizvođača. Jedan red zahtijeva port, drugi zahtijeva broj protokola, i nijedan jedini unos ne pokriva oboje.

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

Obrazac za prosljeđivanje koji prihvata 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 prevodilac 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 dozvole neće stvoriti takvo ponašanje.

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

Enkapsulacija odlučuje šta filter vidi

Enkapsulacija mijenja vanjski paket, a vanjski paket je ono s čime se pravilo poklapa. Izvorni ESP je protokol 50, dok NAT prolaz umotava ESP unutar UDP 4500 da bi preživio prevođenje adresa. Filter koji dozvoljava UDP 4500 nikada ne vidi protokol 50, a filter napisan za protokol 50 nikada se ne poklapa 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 neko može provjeriti

Izrazite svako pravilo kao porodicu adresa, vanjski protokol, transportne portove ako ih ima, smjer i oba kraja. Recenzent može uporediti tu rečenicu sa snimkom paketa i doći do presude. Uputu da se otvori 47 niko 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 interfejsu i potvrdite vanjski protokol i port koji se stvarno pojavljuju u tragu.

Povezani članci