Prosljeđivanje portova i trigeriranje portova stoje u istom meniju na većini kućnih rutera, pa se zato tretiraju kao dva načina da se obavi jedan posao. Prosljeđivanje je statično pravilo: dolazna veza na WAN port prevodi se na fiksnu unutrašnju adresu i port, bez obzira na to da li se još nešto dešava. Trigeriranje je uslovno: ruter prati odlazni saobraćaj i otvara dolazno mapiranje tek nakon što izađe odgovarajuća veza. VPN server čeka da se prvo neko drugi poveže, pa je upravo taj uslov jedina stvar koju nikada ne može ispuniti.

Dva pravila s različitim životnim ciklusima

IPv4 NAT čuva stanje. Kada unutrašnji host pošalje paket napolje, ruter stvara mapiranje da bi odgovori našli put nazad; dolazni paket koji ne odgovara nijednom mapiranju se odbacuje, i to je ponašanje koje neažuriran desktop drži van interneta. Prosljeđivanje je trajni zapis prevođenja koji se dodaje ručno. Trigeriranje je privremena rupa koju čuva obrazac saobraćaja.

Praktična razlika je vrijeme. Prosljeđivanje postoji od trenutka kada se sačuva dok ga neko ne izbriše. Trigerirano mapiranje postoji nakon što se trigger aktivira i zatvara se na tajmeru mirovanja, mjerenom u minutama na potrošačkom hardveru, ili odmah pri restartu.

Nijedno nije sigurnije u apstraktnom smislu. Prosljeđivanje izlaže jedan port neprekidno; trigger ga izlaže samo nakon određenog odlaznog saobraćaja. Za servis koji mora prihvatiti prvi paket od stranca, samo jedno od toga odgovara poslu.

Zašto trigeriranje neće objaviti server

VPN server je pasivan po dizajnu. Partner, bio to laptop u kafiću ili telefon na mobilnim podacima, šalje prvi paket, a ruter za njega nema mapiranje. Ništa unutra nije pokrenulo saobraćaj ka trigger portu, pa se pravilo nikada ne aktivira i veza umire prije nego što rukovanje počne.

Tamo gdje trigeriranje izgleda kao da radi, nešto drugo stvara saobraćaj na trigger portu: klijent na LAN-u, sonda za nadzor ili serverove vlastite odlazne provjere. Mapiranje se tada otvara za taj jedan host i zatvara kada saobraćaj prestane, pa sljedeći vanjski partner ponovo ne uspije, dok prvi uspjeh stoji u dnevniku i izgleda kao dokaz.

Trigeriranje je takođe obično jednoznačno po hostu. Mnoge implementacije dopuštaju samo jednom unutrašnjem uređaju da drži mapiranje u datom trenutku, što je potpuno pogrešno za server koji treba da odgovori na nekoliko partnera. Funkcija je napravljena za aplikacije koje otvaraju kontrolnu vezu napolje i očekuju dolazne podatke na drugom portu, i još uvijek odgovara tom obliku.

Šta prosljeđivanje zapravo mapira

Prosljeđivanje je jedan zapis prevođenja: WAN port i protokol na unutrašnju adresu i port. Potreban mu je slušalac koji već radi na drugoj strani, i potrebno je da unutrašnja adresa ostane na mjestu. DHCP zakup koji se preseli na drugu mašinu tiho šalje svaki tunel na pogrešan host, pa napravite rezervaciju prije pravila.

RuleOpens whenCloses whenFits a VPN listener
Port forwardSaved, at bootYou delete itYes
Port triggerMatching outbound trafficIdle timeout or rebootNo

Protokol je važniji nego što forma sugeriše. OpenVPN preko UDP-a traži UDP prosljeđivanje, WireGuard traži UDP, a IPsec podaci dolaze kao ESP, IP protokol 50, koji uopšte nema portove. Forma za prosljeđivanje koja prima samo TCP ili UDP to ne može izraziti, pa IPsec traži passthrough ili statično mapiranje jedan-na-jedan umjesto pravila za port.

Sloj iznad vašeg rutera

Prosljeđivanje kontroliše samo prevođenje koje posjedujete. Ako WAN adresa nije vaša, što je slučaj iza NAT-a kod operatera gdje pretplatnici dijele 100.64.0.0/10 kako je opisano u RFC 6598, dolazna veza nikada ne stiže do vašeg rutera jer je provajder prvi preveo. Nijedno pravilo na vašem uređaju ne može ispraviti taj redoslijed.

Dvostruki NAT je isti problem u malom. Vaš ruter prosljeđuje ka ISP ruteru, koji nema odgovarajuće pravilo i odbacuje paket. Ili dodajte pravilo na vanjskom uređaju, ili prebacite vanjski uređaj u bridge način i pustite vašem da drži javnu adresu.

Zato test mora doći spolja. Test iz istog LAN-a preko javne adrese zavisi od podrške za hairpin NAT i može proći ili pasti iz razloga nepovezanih s pravilom; telefon na mobilnim podacima, ili prijatelj na drugoj mreži, čistija je provjera.

Ograničite pravilo, pa provjerite obje polovine

Proslijedite jedan port na jednu adresu. Opseg dodan zato što su prvi pokušaji propali je način na koji upravljački interfejsi završe na internetu, a VPN slušaocu ne treba objavljena administratorska stranica rutera pored njega.

Zadržite sve što je već štitilo taj slušalac: identitet po certifikatu ili ključu, host firewall, aktuelne verzije paketa. Prosljeđivanje propušta paket; autentifikacija odlučuje da li paket postaje tunel, i to su dva odvojena kvara kada nešto pođe po zlu.

Provjera ima dvije polovine. Rukovanje mora biti završeno sa vanjske mreže, a zatim privatni resurs iza servera mora odgovoriti kroz tunel. Prosljeđivanje propušta vezu tunela i ništa više; rutiranje i autorizacija za 10.8.0.0/24 je druga postavka na drugom ekranu.

Odlučite pomoću tri pitanja

Tri pitanja rješavaju izbor brže od bilo koje tabele poređenja:

  • Da li se nešto spaja spolja, kao prvi paket? Onda koristite prosljeđivanje, ili relej. Trigeriranje se ne može otvoriti bez odlaznog saobraćaja kojeg nikada neće biti.
  • Mora li rupa nadživjeti vrijeme mirovanja? Onda koristite prosljeđivanje, jer se trigerirano mapiranje zatvara po vlastitom rasporedu.
  • Da li je WAN adresa vaša za objavljivanje? Ako nije, popravite sloj iznad prije nego uredite bilo koje pravilo.

Ako je odgovor na sva tri pitanja ne, što je slučaj za laptop koji sam zove komercijalnog provajdera, nijedno pravilo nije potrebno. Klijent iza NAT-a radi jer sam stvara mapiranje sa stanjem, i to pokriva većinu ljudi koji čitaju stranicu o prosljeđivanju portova u ponoć.

Povezani članci