Výstupní uzel ZeroTier nefunguje? Zkontrolujte trasu, NAT a klienta
Trasa 0.0.0.0/0 v klientovi není výstup. Uzel musí předávat a překládat, síť musí trasu inzerovat a klient ji musí přijmout.
Tabulka tras ukazuje výchozí trasu přes rozhraní ZeroTier, síť hlásí stav online a prohlížeč přesto vychází z místní adresy poskytovatele. Taková kombinace je běžná a není to chyba klienta. Výchozí trasa jen říká, kam mají pakety jít; na druhém konci je musí někdo předat a přeložit. Než výstupní uzel začne fungovat, musí platit tři samostatné části.
Trasa existuje, ale nic nevychází
Nejdřív zkontrolujte tabulku tras klienta. Řádek jako default via 10.147.20.5 dev zt0 dokazuje, že trasa byla nainstalována, ne že cíl provoz přijme. Další skok musí být člen, který je ochotný a schopný ji předat.
Pokud stejný požadavek stále vychází fyzickým rozhraním, klient trasu nenainstaloval, nebo ji nainstaloval s metrikou, která prohrála s místní výchozí trasou. Pokud požadavek po instalaci trasy zmizí, výstupní člen pakety přijímá a nedokáže je předat ani přeložit. Klient, který si ponechá fyzickou výchozí trasu, nepošle výstupu vůbec žádný paket.
Tento rozdíl určuje, kde pracovat. Porovnání veřejné adresy před změnou a po ní oddělí trasu, která se nikdy nepoužila, od trasy, která se použila a byla zahozena, a vyžaduje jeden příkaz místo procházení celé konfigurace. Porovnání proveďte dřív, než změníte cokoli dalšího, aby oba výsledky vycházely ze stejného počátečního stavu.
Tři části, které musí platit všechny
Výstup je řetěz a nejslabší článek určuje příznak. Tabulka níže uvádí články v pořadí, v jakém obvykle selhávají.
| Part | Where it lives | What a failure looks like |
|---|---|---|
| Forwarding and NAT | Exit node kernel and firewall | Traffic arrives, no reply |
| Managed default route | ZeroTier network controller | No default via the tunnel on the member |
| Client acceptance | Member's per-network setting | Route offered but not installed |
| DNS behavior | Client resolver configuration | Pages fail by name, IP works |
První řádek je to, co název volby skrývá. Člen se stane výstupem jen tehdy, když jeho jádro předává pakety mezi rozhraním ZeroTier a rozhraním obráceným do internetu a když se cesta odpovědi přeloží zpět do tunelu. Bez tohoto předávání je člen partnerem, ne branou.
Řádek kontroleru je oprávnění, ne konfigurace. Inzerování 0.0.0.0/0 přes člena říká každému klientovi, kde výstup je; neznamená, že tento člen provoz unese. Ani neověřuje, že člen má funkční cestu do internetu. Dokumentace ZeroTier k výstupnímu uzlu pokrývá stejné rozdělení mezi uzel, trasu a klienta.
Nastavte výstupní uzel tak, aby předával a překládal
Trvale zapněte předávání IPv4 a poté přidejte zdrojový NAT pro provoz opouštějící rozhraní WAN. Pravidla filtru musí povolit předávaný tok v obou směrech, protože předávání a překlad jsou oddělené od povolení:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o zt0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTNahraďte zt0 a eth0 názvy na hostiteli; pravidlo uložené pro ukázkové rozhraní nebude sledovat pakety na skutečném. Změny zaveďte trvale přes správce firewallu, který pravidla vlastní, protože příkaz v interaktivní skořápce zmizí při dalším restartu.
Pokud hostitel používá správce firewallu, například UFW nebo firewalld, přidejte pravidla přes tohoto správce místo vrstvení řádků iptables vedle něj. Dva vlastníci upravující stejné řetězce vytvářejí politiku závislou na pořadí spouštění. Pořadí je důležité, když správce generuje vlastní řetězce. Testujte z klienta po znovunačtení správce, ne před ním.
Inzerujte trasu a přijměte ji na klientovi
Na síťovém kontroleru přidejte spravovanou trasu pro 0.0.0.0/0, jejíž další skok je adresa ZeroTier výstupního člena. Potom na členu, který ji má používat, povolte přepsání pro tuto síť. Oprávnění je místní: nenakonfiguruje ostatní členy a nemění kontroler.
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1Poslední příkaz by měl hlásit rozhraní ZeroTier a adresu výstupního člena. Pokud stále hlásí fyzické rozhraní, trasa chybí nebo má konkurenční výchozí trasa lepší metriku.
Nastavení držte omezené na síť, která ho potřebuje. Povolení přijímání výchozí trasy globálně nebo v síti, která má poskytovat jen privátní podsíť, posílá provoz přes výstup, který na to nebyl nikdy dimenzován.
Ověřte výstup a zkontrolujte ostatní rodiny adres
Požádejte o veřejnou adresu u služby, která hlásí zdroj, a porovnejte ji s WAN adresou výstupního uzlu. Potom načtěte stránku podle názvu a potvrďte, že DNS stále řeší, a otestujte jednu důležitou aplikaci, ne jen prohlížeč.
Klient s duálním zásobníkem může dál používat svou nativní cestu IPv6, zatímco IPv4 vychází přes ZeroTier. Pokud je cílem skrýt nebo řídit veškerý provoz, je potřeba samostatná trasa ::/0 a předávání IPv6 na výstupu, a test IPv4 o nich nic neříká.
Opačné filtrování cesty v Linuxu může na klientovi zahodit i platný výstupní provoz. ZeroTier dokumentuje úvahu o rp_filter pro zúčastněné členy; toto nastavení měňte vědomě a až po potvrzení trasy a NAT, ne jako první experiment.
Pokud je požadavkem přístup k NAS nebo jedné kancelářské podsíti, spravovaná trasa pro tento prefix je menší a bezpečnější změna než úplný výstup. Posílat celé prohlížení přes jiné zařízení je jiné rozhodnutí než dosáhnout jednoho privátního zdroje a zaslouží si samostatnou revizi.