Vlákno podpory končí verdiktom „symetrický NAT, VPN tu fungovať nebude“ a klient sa potom trikrát zbytočne preinštaluje. Nálepka škodí, pretože odpovedá na otázku, ktorú nikto nepoložil. Klient, ktorý sa pripája von k pevnému serveru, vytvorí mapovanie v okamihu, keď odošle prvý paket, a odpoveď sa nechá prejsť späť podľa pravidiel, ktoré zavádza takmer každá sieť. Čo mapovanie závislé od koncového bodu skutočne komplikuje, sú dvaja partneri, ktorí sa snažia dostať k sebe súčasne, a to je iný test.

Za jednou nálepkou sa skrývajú dve otázky

Prvá otázka je, či hostiteľ za touto sieťou môže otvoriť reláciu k známej verejnej adrese a portu. Pre klienta tunela je to bežný prípad a odpoveď je takmer vždy áno. Router zaznamená vnútorný zdroj, pridelí vonkajší port a pustí odpoveď, pretože patrí relácii, ktorá začala zvnútra.

Druhá otázka je, či dvaja hostitelia za rôznymi sieťami dokážu nájsť spoločnú cestu a posielať si navzájom bez servera v strede. To závisí od toho, ako každá sieť prideľuje tie vonkajšie porty, a to je jediné miesto, kde na správaní mapovania záleží.

Zámena oboch dáva klasickú chybnú diagnózu: funkcia medzi partnermi zlyhá, niekto spustí test typu NAT, uvidí najhoršiu kategóriu a usúdi, že ani bežný tunel nemôže fungovať. Tunel nikdy nebol to, čo zlyhalo.

Mapovanie a filtrovanie sú dve oddelené vlastnosti

Terminológia RFC je presnejšia než názvy, ktoré používajú výrobcovia, a vyplatí sa ju preniesť do tiketu, pretože ukončuje hádky. Mapovanie je spôsob, akým sa prideľuje vonkajší port. Filtrovanie je to, ktoré prichádzajúce pakety sa pustia. Sieť môže byť prísna v jednom a benevolentná v druhom, a práve táto kombinácia je to, čo musí protokol medzi partnermi prežiť.

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

Tretí riadok je to, čo väčšina domácich routerov a mobilných operátorov myslí slovom symetrický. Všimnite si, že nálepka opisuje len prideľovanie. Sieť s takým mapovaním a benevolentným filtrovaním môže stále prijímať prichádzajúce pakety na port, ktorý práve pridelila, a preto dierovanie dier na niektorých uspeje a na iných nie.

Filtrovanie má svoje tri prípady a svoj názov pre každý z nich. Napísať do tiketu „symetrický NAT“, keď máte na mysli „filtrovanie závislé od adresy a portu“, pošle ďalšieho človeka do nesprávnej kapitoly príručky. Oba sa pri teste správajú inak, takže chyba nie je akademická.

Mapovanie merajte, namiesto toho, aby ste ho pomenúvali

Pridelený port môžete pozorovať priamo zo strany servera akejkoľvek UDP služby, ktorú ovládate. Spustite zachytávanie na verejnom hostiteľovi, odošlite z klienta a prečítajte zdrojový port, s ktorým paket dorazil:

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

Riadok koncového bodu je najužitočnejší z troch, pretože WireGuard zaznamenáva poslednú adresu a port, ktoré prijal od každého partnera. Porovnajte tento port s tým, ktorý klient považuje za svoj. Budú sa líšiť vždy, keď prebieha akýkoľvek preklad, a dôležitá otázka je, či hodnota zostáva stabilná.

Zopakujte pozorovanie voči druhému cieľovému portu alebo druhému serveru a znova porovnajte. Ak sa vonkajší port mení podľa cieľa, mapovanie závisí od adresy a portu. Ak zostáva rovnaký, sieť vám dáva jediné mapovanie a zisťovanie má šancu.

Nástroje založené na STUN hlásia rovnakú klasifikáciu v jednom kroku a možno ich použiť, keď sieť povoľuje odchádzajúci UDP k verejnému STUN serveru. Keď to nepovoľuje, vyššie uvedená metóda zachytávania stále funguje a nevyžaduje nič iné než hostiteľa, ktorého už ovládate.

Zvoľte opravu, ktorá zodpovedá poruche

Ak zlyhávajúcou funkciou je spojenie medzi partnermi, podporované odpovede sú relay, služba stretnutia, ku ktorej sa dostanú obaja partneri, alebo iná topológia. TURN existuje práve preto a produkt, ktorý dodáva vlastný relay, vám hovorí, že očakáva niektoré siete nepriateľské.

Ak zlyhávajúcou funkciou je bežný tunel, správanie mapovania nie je váš problém a nič z vyššie uvedeného neplatí. Skontrolujte, či klient skutočne odosiela, či server paket vidí a či sa odpoveď vracia. Táto postupnosť sú tri pozorovania a nevyžaduje vedieť nič o kategórii NAT routera.

Čo nefunguje, je rozhadzovanie zmien miestneho portu, kým sa niečo nepripojí. Zmena zdrojového portu klienta nemení to, ako sieť prideľuje mapovania. Náhodný úspech na piaty pokus je falošne pozitívny a mesiace sa bude citovať ako oprava.

Zaznamenajte architektúru, nie verdikt

Užitočná poznámka hovorí, ktorý protokol, ktorým smerom relácia začína, či je na ceste relay a čo sa pozorovalo na drôte. „symetrický NAT, nefunguje“ je nepoužiteľné, pretože je zároveň chybné ohľadne tunela a neinformatívne ohľadne cesty medzi partnermi.

Ak ste ich testovali, uveďte nameranú stabilitu portu a správanie filtrovania. Tieto dva údaje umožnia niekomu inému predpovedať, či nová funkcia bude v tej sieti fungovať, bez opakovania celého vyšetrovania. Tiež starnú lepšie než kategória výrobcu, ktorá na každej stránke pomoci znamená niečo trochu iné.

Nakoniec majte pri písaní poruke terminológiu RFC 4787. Používanie presných termínov stojí jednu vetu a zabráni ďalšiemu čitateľovi zopakovať tú istú chybnú diagnózu, a to je celý zmysel písania poznámky.

Súvisiace články