Podrška završava presudom „simetrični NAT, VPN ovdje neće raditi”, a klijent se zatim triput preinstalira bez razloga. Etiketa šteti jer odgovara na pitanje koje nitko nije postavio. Klijent koji se spaja prema van na fiksni poslužitelj stvara preslikavanje u trenutku kad pošalje prvi paket, a odgovor se propušta natrag po pravilima koja primjenjuje gotovo svaka mreža. Ono što preslikavanje ovisno o krajnjoj točki doista komplicira jesu dva vršnjaka koji pokušavaju doći jedan do drugoga istodobno, a to je drugi test.

Dva pitanja skrivaju se iza jedne etikete

Prvo pitanje je može li host iza te mreže otvoriti sesiju prema poznatoj javnoj adresi i portu. Za klijenta tunela to je uobičajen slučaj i odgovor je gotovo uvijek da. Usmjerivač bilježi unutarnji izvor, dodjeljuje vanjski port i propušta odgovor jer pripada sesiji koja je počela iznutra.

Drugo pitanje je mogu li dva hosta iza različitih mreža otkriti zajednički put i slati jedan drugome bez poslužitelja u sredini. To ovisi o tome kako svaka mreža dodjeljuje te vanjske portove i to je jedino mjesto gdje ponašanje preslikavanja ima važnost.

Miješanje dvaju pitanja daje klasičnu pogrešnu dijagnozu: značajka ravnopravnih veza zakaže, netko pokrene test vrste NAT-a, vidi najgoru kategoriju i zaključi da ni obični tunel ne može raditi. Tunel nikada nije bio ono što je zakazalo.

Preslikavanje i filtriranje odvojena su svojstva

Terminologija RFC-a preciznija je od naziva koje rabe dobavljači i vrijedi je prenijeti u karticu jer rješava rasprave. Preslikavanje je način na koji se dodjeljuje vanjski port. Filtriranje je koje se ulazne pakete propušta. Mreža može biti stroga u jednome i popustljiva u drugome, a kombinacija je ono što protokol ravnopravnih veza mora preživjeti.

BehaviourWhat it meansEffect on a direct peer path
Endpoint-independent mappingOne external port for every destinationDiscovery works if the port is advertised
Address-dependent mappingNew port per remote addressWorks only if both sides probe the same pair
Address-and-port-dependentNew port per remote address and portUsually needs a relay

Treći redak je ono što većina potrošačkih usmjerivača i mobilnih operatera misli pod simetrično. Imajte na umu da etiketa opisuje samo dodjelu. Mreža s takvim preslikavanjem i popustljivim filtriranjem još uvijek može prihvaćati ulazne pakete na port koji je upravo dodijelila, zato probijanje rupa uspijeva na jednima, a na drugima ne.

Filtriranje ima svoja tri slučaja i svoj naziv za svaki. Napisati „simetrični NAT” u kartici kad mislite na „filtriranje ovisno o adresi i portu” šalje sljedeću osobu na pogrešno poglavlje priručnika. Njih se dvoje različito ponaša na testu, pa pogreška nije akademska.

Izmjerite preslikavanje umjesto da ga imenujete

Dodijeljeni port možete promatrati izravno sa strane poslužitelja bilo koje UDP usluge kojom upravljate. Pokrenite snimanje na javnom hostu, pošaljite s klijenta i pročitajte izvorni port s kojim je paket stigao:

sudo tcpdump -ni eth0 -c 10 'udp port 51820'
sudo wg show wg0 endpoints
sudo conntrack -L -p udp --dport 51820

Redak krajnje točke najkorisniji je od triju, jer WireGuard bilježi posljednju adresu i port koje je primio od svakog vršnjaka. Usporedite taj port s onim za koji klijent misli da ga rabi. Razlikovat će se kad god se događa bilo kakvo prevođenje, a važno je pitanje ostaje li vrijednost stabilna.

Ponovite promatranje prema drugom odredišnom portu ili drugom poslužitelju i usporedite ponovno. Ako se vanjski port mijenja po odredištu, preslikavanje ovisi o adresi i portu. Ako ostane isti, mreža vam daje jedno preslikavanje i otkrivanje ima šansu.

Alati zasnovani na STUN-u prijavljuju istu klasifikaciju u jednom koraku i njima se smije služiti kad mreža dopušta odlazni UDP prema javnom STUN poslužitelju. Kad ne dopušta, gornja metoda snimanja i dalje radi i ne zahtijeva ništa osim hosta koji već kontrolirate.

Odaberite popravak koji odgovara kvaru

Ako je značajka koja zakaže ravnopravna veza, podržani su odgovori relej, usluga susreta do koje oba vršnjaka mogu doći ili drukčija topologija. TURN postoji upravo zato, a proizvod koji isporučuje vlastiti relej kaže vam da očekuje da će neke mreže biti neprijateljske.

Ako je značajka koja zakaže obični tunel, ponašanje preslikavanja nije vaš problem i ništa od navedenoga ne vrijedi. Provjerite šalje li klijent doista, vidi li poslužitelj paket i vraća li se odgovor. Taj slijed tri su promatranja i ne zahtijeva znanje o NAT kategoriji usmjerivača.

Ono što ne radi jest rasipanje promjena lokalnog porta dok se nešto ne poveže. Promjena izvornog porta klijenta ne mijenja to kako mreža dodjeljuje preslikavanja. Slučajan uspjeh iz petog pokušaja lažno je pozitivan i mjesecima će se citirati kao popravak.

Zabilježite arhitekturu, a ne presudu

Korisna bilješka kaže koji protokol, u kojem smjeru počinje sesija, je li relej na putu i što je opaženo na žici. „simetrični NAT, ne radi” neupotrebljivo je jer je istodobno pogrešno o tunelu i neinformativno o putu vršnjaka.

Uključite izmjerenu stabilnost porta i ponašanje filtriranja ako ste ih testirali. Te dvije činjenice drugome omogućuju da predvidi hoće li nova značajka raditi na toj mreži bez ponavljanja cijele istrage. One i stare bolje od dobavljačke kategorije koja na svakoj stranici pomoći znači nešto malo drukčije.

Naposljetku, držite pri ruci terminologiju RFC 4787 kad to budete zapisivali. Uporaba preciznih naziva stoji jednu rečenicu i sprječava sljedećeg čitatelja da ponovi istu pogrešnu dijagnozu, a to je i cijeli smisao pisanja bilješke.

Povezani članci