Dvě místa na mobilních spojích mají stejný problém v obou směrech: ani jedno nemůže přijmout nevyžádané IPv4 spojení, takže ani jedno nemůže hrát roli serveru v přímém tunelu. Architektura, která funguje, staví doprostřed dosažitelnou třetí stranu: každé místo se spojuje ven a střed přeposílá jen provoz, který schválíte. Tím středem může být směrovač, který provozujete, nebo produkt, který seznamuje protějšky, a to není totéž. Kroky níže jsou seřazeny tak, aby každý přinesl důkaz dřív, než na něm bude následující záviset.

Na ani jedno místo nelze volat, takže obě musí volat ven

Potvrďte omezení dřív, než kolem něj navrhnete síť. Pokud operátor přidělí WAN rozhraní soukromou adresu, žádné přesměrování portu na vlastním směrovači místa ho dostupným neudělá, protože překlad probíhá výše. Veřejná IPv6 adresa může na stejném spoji existovat a návrh úplně změnit, a proto kontrola pokrývá obě rodiny. Zapište odpověď pro každé místo, protože obě málokdy mají stejná omezení, i když sdílejí operátora.

Běžný mobilní případ vypadá jako adresa z operátorova přeloženého rozsahu s výchozí trasou přes něj. To není závada k opravě; to je důvod, proč rozbočovač existuje. Hledáte jakoukoli adresu, kterou třetí strana dosáhne, aniž by místo mluvilo první.

Dva příkazy odpovídají na otázku adresování pro místo, před kterým stojíte. Spusťte je na směrovači místa, ne na notebooku za ním:

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

Kdo seznamuje protějšky a kdo nese pakety

Seznamování a přenos jsou oddělené úlohy, které produkty často slučují, aniž by hranici ukázaly. Mechanismus setkání pomáhá dvěma protějškům najít kandidátskou cestu; relé nese jejich pakety, když přímá cesta neexistuje. Koupením služby, která seznamuje protějšky, nezískáte směrovač, a ten rozdíl rozhoduje, zda návrh vůbec rozbočovač potřebuje.

Procházení má svůj slovník a slova popisují role, ne záruky. Specifikace ICE popisuje kandidáty a kontroly konektivity, STUN popisuje jeden způsob, jak zjistit překlad adres, a TURN popisuje přenášený provoz přes relé pro aplikace, které ho implementují. Žádný z těchto mechanismů se v běžné bráně neobjeví, protože jste ji nasměrovali na adresu zjišťování. Ověřte procházení jako schopnost produktu a předpokládejte relé, dokud test neukáže opak.

Jedna trasa na místo, vlastněná protějškem

Rozbočovač potřebuje jeden tunel na místo, samostatný prefix LAN za každým a trasu pro každý prefix, která pojmenuje jeho vlastníka. V příkladu je rozbočovač 10.61.0.1, místo A je 10.61.0.11 s LAN 10.60.10.0/24 a místo B je 10.61.0.12 s LAN 10.60.20.0/24. Každá trasa níže ukazuje na protějšek, který prefix vlastní, ne na rozhraní tunelu:

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

Přeposílání musí být zapnuté, jinak se pakety zastaví na rozbočovači bez chyby, která by ukázala příčinu. Poslední příkaz odpovídá na skutečnou otázku, protože se ptá, jakou cestu by paket vzal z LAN místa A na LAN místa B se zahrnutým zdrojem v dotazu. Dotaz, který pojmenuje rozhraní tunelu, berte jako důkaz a dotaz, který spadne na výchozí trasu, jako chybějící trasu, ne jako záhadu. Potom transit záměrně omezte, protože rozbočovač, který přeposílá mezi každým protějškem, mění dvě místa v plochou síť a zásady přístupu, které jste si mysleli, že máte, přestanou platit.

Rozhodněte také, kde šifrování končí. Když rozbočovač drží obě zakončení tunelu, operátor toho stroje a jeho zátěž vstupují do modelu důvěry a dostupnosti a jeho šířka pásma se stává součástí cesty.

Udržujte každé mapování živé přes operátora

Každé místo iniciuje svůj tunel a každé musí udržovat mapování překladu živé, jinak ho operátor zapomene. Zpráva pro udržení spojení na iniciující straně uchovává toto mapování mezi výměnami handshake. Omezte povolené prefixy na adresu rozbočovače a vzdálenou LAN, aby kompromitovaný protějšek nemohl nárokovat prefix, který 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

Zrcadlete blok na druhém místě s jeho vlastním vzdáleným prefixem a odolejte pokušení povolit celý rozsah tunelu. Handshake, který se zastaví a obnoví z nového zdrojového portu, je podpisem vypršelého mapování a časové značky handshake jsou důkazem, že se to stalo. Interval kratší než operátorovo časové omezení vypršení předchází, místo aby ho později opravoval. Když operátor změní chování překladu, čekejte, že se tato časování změní s ním.

Prokažte oba směry, pak prokažte obnovu

Ověřování je směrové, takže ping z A do B dokazuje polovinu návrhu a nic o zpáteční trase. Ověřte cestu odpovědi stejným dotazem citlivým na zdroj na rozbočovači, pak test zopakujte z opačné strany. Čerstvé handshake patří také do důkazů, protože tunel nečinný hodinu může testovat staré mapování:

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

Pak testujte selhání, které očekáváte, ne úspěch, který chcete. Restartujte spoj jednoho místa a potvrďte, že se tunel vrátí, aniž by člověk sáhl na kterýkoli konec, protože návrh, který po každé změně u operátora potřebuje operátora, není hotový. Zapište primární cestu, alternativu IPv6, když existuje, a chování, když je rozbočovač nedostupný. Rozbočovač je teď součástí vašeho modelu dostupnosti, tak to zapište, místo abyste to objevovali během výpadku.

Související články