Dve lokality na mobilných spojeniach majú rovnaký problém v oboch smeroch: ani jedna nemôže prijať nevyžiadané IPv4 spojenie, takže ani jedna nemôže hrať rolu servera v priamom tuneli. Architektúra, ktorá funguje, stavia doprostred dostupnú tretiu stranu: každá lokalita sa pripája von a stred preposiela len prevádzku, ktorú schválite. Tým stredom môže byť smerovač, ktorý prevádzkujete, alebo produkt, ktorý zoznamuje partnerov, a to nie je to isté. Kroky nižšie sú zoradené tak, aby každý priniesol dôkaz skôr, než na ňom bude závisieť nasledujúci.

Na ani jednu lokalitu sa nedá zavolať, preto obe musia volať von

Potvrďte obmedzenie skôr, než okolo neho navrhnete riešenie. Ak operátor pridelí WAN rozhraniu súkromnú adresu, žiadne presmerovanie portu na vlastnom smerovači lokality ho nedostupným neurobí, pretože preklad sa deje vyššie. Verejná adresa IPv6 môže existovať na tom istom spoji a úplne zmeniť návrh, preto kontrola pokrýva obe rodiny. Zapíšte odpoveď pre každú lokalitu, pretože dve málokedy majú rovnaké obmedzenia, aj keď zdieľajú operátora.

Bežný mobilný prípad vyzerá ako adresa z operátorovho preloženého rozsahu s predvolenou trasou cez ňu. To nie je porucha na opravu; to je dôvod, prečo rozbočovač existuje. Hľadáte akúkoľvek adresu, ku ktorej sa tretia strana dostane bez toho, aby lokalita prehovorila prvá.

Dva príkazy odpovedajú na otázku adresovania lokality, pred ktorou stojíte. Spustite ich na smerovači lokality, nie na notebooku za ním:

ip -4 addr show scope global
ip -6 addr show scope global

Kto zoznamuje partnerov a kto nesie pakety

Zoznamovanie a prenos sú oddelené úlohy, ktoré produkty často spájajú bez toho, aby ukázali hranicu. Mechanizmus stretnutia pomáha dvom partnerom nájsť kandidátsku cestu; relé nesie ich pakety, keď priama cesta neexistuje. Kúpa služby, ktorá zoznamuje partnerov, vám nedá smerovač, a ten rozdiel rozhoduje, či návrh vôbec potrebuje rozbočovač.

Prechádzanie má vlastný slovník a slová opisujú roly, nie záruky. Špecifikácia ICE opisuje kandidátov a kontroly konektivity, STUN opisuje jeden spôsob, ako zistiť preklad adries, a TURN opisuje prenášanú prevádzku cez relé pre aplikácie, ktoré ho implementujú. Žiadny z týchto mechanizmov sa v bežnej bráne neobjaví, pretože ste ju nasmerovali na adresu zisťovania. Overte prechádzanie ako schopnosť produktu a predpokladajte relé, kým test neukáže opak.

Jedna trasa na lokalitu, vo vlastníctve partnera

Rozbočovač potrebuje jeden tunel na lokalitu, samostatný prefix LAN za každou a trasu pre každý prefix, ktorá pomenuje jeho vlastníka. V príklade je rozbočovač 10.61.0.1, lokalita A je 10.61.0.11 s LAN 10.60.10.0/24 a lokalita B je 10.61.0.12 s LAN 10.60.20.0/24. Každá trasa nižšie ukazuje na partnera, ktorý prefix vlastní, nie na rozhranie tunela:

ip route add 10.60.10.0/24 via 10.61.0.11 dev wg0
ip route add 10.60.20.0/24 via 10.61.0.12 dev wg0
sysctl net.ipv4.ip_forward
ip route get 10.60.20.55 from 10.60.10.77

Preposielanie musí byť zapnuté, inak sa pakety zastavia na rozbočovači bez chyby, ktorá by ukázala príčinu. Posledný príkaz odpovedá na skutočnú otázku, pretože sa pýta, akou cestou by paket išiel z LAN lokality A na LAN lokality B so zdrojom zahrnutým v hľadaní. Hľadanie, ktoré pomenuje rozhranie tunela, berte ako dôkaz a to, ktoré padne na predvolenú trasu, ako chýbajúcu trasu, nie ako záhadu. Potom transit zámerne obmedzte, pretože rozbočovač, ktorý preposiela medzi každým partnerom, mení dve lokality na plochú sieť a zásady prístupu, o ktorých ste si mysleli, že ich máte, prestanú platiť.

Rozhodnite aj, kde sa šifrovanie končí. Keď rozbočovač drží oba konce tunela, operátor toho stroja a jeho pracovná záťaž vstupujú do modelu dôvery a dostupnosti a jeho šírka pásma sa stáva súčasťou cesty.

Udržujte každé mapovanie živé cez operátora

Každá lokalita iniciuje svoj tunel a každá musí udržiavať mapovanie prekladu živé, inak ho operátor zabudne. Správa na udržanie spojenia na iniciujúcej strane zachováva toto mapovanie medzi podaniami rúk. Obmedzte povolené prefixy na adresu rozbočovača a vzdialenú LAN, aby kompromitovaný partner nemohol nárokovať prefix, ktorý nevlastní:

[Peer]
PublicKey = <hub public key>
Endpoint = 192.0.2.10:51820
AllowedIPs = 10.61.0.1/32, 10.60.20.0/24
PersistentKeepalive = 25

Zrkadlite blok na druhej lokalite s jej vlastným vzdialeným prefixom a odolajte pokušeniu povoliť celý rozsah tunela. Podanie rúk, ktoré sa zastaví a obnoví z nového zdrojového portu, je podpisom vypršaného mapovania a časové značky podania rúk sú dôkazom, že sa to stalo. Interval kratší ako operátorov časový limit vypršaniu predchádza, namiesto toho aby ho neskôr opravoval. Keď operátor zmení správanie prekladu, očakávajte, že sa tieto časy zmenia s ním.

Dokážte oba smery, potom dokážte obnovu

Overovanie je smerové, takže ping z A do B dokazuje polovicu návrhu a nič o spiatočnej trase. Overte cestu odpovede tým istým vyhľadaním citlivým na zdroj na rozbočovači, potom test zopakujte z opačnej strany. Čerstvé podania rúk tiež patria k dôkazom, pretože tunel nečinný hodinu môže testovať staré mapovanie:

wg show wg0 latest-handshakes
ping -c 3 10.60.20.55
traceroute -n 10.60.20.55

Potom testujte zlyhanie, ktoré očakávate, nie úspech, ktorý chcete. Reštartujte spoj jednej lokality a potvrďte, že tunel sa vráti bez toho, aby človek siahol na ktorýkoľvek koniec, pretože návrh, ktorý po každej zmene u operátora potrebuje operátora, nie je hotový. Zapíšte primárnu cestu, alternatívu IPv6, keď existuje, a správanie, keď je rozbočovač nedostupný. Rozbočovač je teraz súčasťou vášho modelu dostupnosti, preto to zapíšte namiesto odhaľovania počas výpadku.

Súvisiace články