Většina lidí čte AllowedIPs jako seznam oprávnění, množinu adres, které se smějí připojit k partnerovi, podobně jako pravidlo firewallu napsané pro tunel. To není pravda. Pole je směrovací tabulka pracující oběma směry: vybírá partnera pro odchozí paket a ověřuje zdroj příchozího. Čtení jako seznamu přístupů vytváří konfigurace, které směrují provoz, o který nikdo nežádal.

Jedno pole, dva čtenáři: volba odchozího a kontrola zdroje

U klienta prefixy rozhodují, které cíle putují k tomuto partnerovi a které zůstávají v běžné síti. Záznam pro 0.0.0.0/0 proto zachytí každý cíl IPv4, a proto import profilu plného tunelu posílá běžné prohlížení přes vzdálený stroj. Úzké záznamy dělají opak: směrují jen sítě, které jste uvedli, a vše ostatní nechávají tam, kde bylo. Sekce o směrování kryptoklíčů v dokumentaci WireGuard uvádí oba úkoly na jednom místě: volbu odchozího partnera a ověření příchozího zdroje.

Na serveru totéž pole popisuje, které zdrojové adresy smí každý partner používat. Je to kryptografická kontrola, ne filtr paketů: paket, jehož vnitřní zdroj neodpovídá seznamu partnera, je zahozen uvnitř WireGuardu dřív, než ho uvidí jakýkoli firewall hostitele. Oba úkoly sdílejí jeden seznam, a právě proto se seznam zkopírovaný odjinud chová špatně na místě, které jste nezvážili.

Klientský blok je místo, kde začíná většina tohoto zmatku. Rozdělený tunel uvádí vzdálené sítě a plný tunel je totéž pole s výchozím prefixem:

[Peer]
# split tunnel: only these networks
AllowedIPs = 10.77.0.0/24, 192.168.30.0/24

[Peer]
# full tunnel: everything, both families
AllowedIPs = 0.0.0.0/0, ::/0

Obě podoby jsou samy o sobě úplné a jsou to alternativy, ne kroky. První posílá tunelem jen ty dvě sítě; druhá posílá každý cíl, přičemž záznam ::/0 přidává IPv6 k výchozímu IPv4. Ať zvolíte kteroukoli, tyto prefixy jsou celé rozhodnutí o směrování pro tohoto partnera, jakmile wg-quick začne instalovat trasy.

Rozbočovač potřebuje jiný seznam

Rozbočovač uvádí adresu tunelu každého klienta jako prefix hostitele a k tomu každou síť, která za tímto klientem skutečně stojí. Kopírování širokého seznamu klienta na každého partnera rozbočovače říká rozbočovači, že mnoho partnerů může mít stejné adresy jako zdroj, což není plán adres. Pole Endpoint patří zcela jiné vrstvě: uvádí vnější adresu a port partnera, nikdy cíl uvnitř tunelu.

[Peer]
# laptop: tunnel address 10.77.0.2, office LAN behind it
AllowedIPs = 10.77.0.2/32, 192.168.30.0/24

Prefix hostitele nese adresu tunelu a síťový prefix nese to, co stojí za klientem, a oba jsou potřeba. Bez prefixu hostitele nemůže rozbočovač vrátit vlastní provoz klienta a bez síťového prefixu zůstává LAN za ním nedostupná; partner, za kterým nic není, dostane jen prefix hostitele.

Přeskočení instalace tras zanechává mezeru

wg-quick, pomocník, který zvedá rozhraní z konfiguračního souboru, instaluje adresy rozhraní a trasy jako součást této práce. Nastavení Table = off říká pomocníkovi, aby práci s trasami přeskočil, což neinstaluje náhrady a nečiní privátní síť dostupnou. Když automatické trasy už práci dělají, uvedení potřebných prefixů je jasnější konfigurace. Vypnout správu tras a nechat náhradu nenapsanou není návrh, je to opomenutí.

Základní nástroj wg se chová jinak: konfiguruje rozhraní a tras se nikdy nedotýká, takže nastavení postavené přímo na něm potřebuje vlastní příkazy pro trasy. Pokyny napsané pro jeden nástroj mohou vypadat špatně, když se dodržují u druhého. Úspěšný ping je také slabý důkaz, protože prověřuje jednu cestu, a ne každou cestu aplikace, kterou potřebujete.

DNS a IPv6 se rozhodují odděleně

Zkontrolujte adresu serveru DNS, kterou tunel inzeruje, a potvrďte, že přes zvolené prefixy existuje trasa k této adrese. Nastavení překladače nečiní překladač dostupným a zúžení tunelu může tiše odebrat trasu, která k němu dřív vedla. Prohlédněte IPv6 i samostatně, protože správné rozdělení IPv4 nic neříká o výchozí trase IPv6, která stále míří na fyzické spojení. Tři samostatná rozhodnutí se mohou změnit najednou, když upravíte jeden blok partnera.

Pak otevřete jeden soukromý zdroj a jeden běžný web ze známé výchozí konfigurace. Pokud zdroj odpovídá a prohlížení stále vychází přes místní připojení, rozdělení dělá, co jste žádali. Pokud se prohlížení ve stejnou chvíli rozbije, tunel převzal výchozí trasu a seznam prefixů je místo, kde hledat.

Související články