Izhodno vozlišče ZeroTier ne deluje? Preverite pot, NAT in odjemalca
Pot 0.0.0.0/0 v odjemalcu še ni izhod. Vozlišče mora posredovati in prevajati, omrežje mora pot oglaševati, odjemalec pa jo mora sprejeti.
Tabela poti prikazuje privzeto pot skozi vmesnik ZeroTier, omrežje se javlja kot povezano, brskalnik pa še vedno izhaja z lokalnega naslova ponudnika. Ta kombinacija je pogosta in ni napaka odjemalca. Privzeta pot samo pove, kam naj gredo paketi; na drugi strani jih mora nekaj posredovati in prevesti. Preden izhodno vozlišče deluje, morajo veljati tri ločene stvari.
Pot obstaja, a nič ne izhaja
Najprej preverite tabelo poti odjemalca. Vrstica, kot je default via 10.147.20.5 dev zt0, dokazuje, da je bila pot nameščena, ne da bo cilj sprejel promet. Naslednji skok mora biti član, ki je pripravljen in sposoben posredovati.
Če ista zahteva še vedno izhaja skozi fizični vmesnik, odjemalec poti ni namestil ali pa jo je namestil z metriko, ki je izgubila proti lokalni privzeti. Če zahteva po namestitvi poti izgine, izhodni član prejema pakete in jih ne uspe posredovati ali prevesti. Odjemalec, ki ohrani fizično privzeto pot, ne pošlje nobenega paketa na izhod.
Ta razlika odloči, kje delati. Primerjava javnega naslova pred spremembo in po njej loči pot, ki ni bila nikoli uporabljena, od poti, ki je bila uporabljena in nato zavržena, in zahteva en ukaz namesto pregleda celotne konfiguracije. Primerjavo opravite, preden spremenite karkoli drugega, da bosta oba rezultata iz istega začetnega stanja.
Trije deli, ki morajo vsi veljati
Izhod je veriga in najšibkejši člen določa simptom. Tabela spodaj navaja člene v vrstnem redu, v katerem običajno odpovedo.
| 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 |
Prva vrstica je tista, ki jo ime možnosti skriva. Član postane izhod šele, ko njegovo jedro posreduje pakete med vmesnikom ZeroTier in vmesnikom, obrnjenim v internet, in ko se povratna pot prevede nazaj v tunel. Brez tega posredovanja je član enakopraven, ne prehod.
Vrstica krmilnika je dovoljenje, ne konfiguracija. Oglaševanje 0.0.0.0/0 prek člana pove vsakemu odjemalcu, kje je izhod; to člana ne naredi sposobnega nositi promet. Prav tako ne preveri, ali ima član delujočo pot v internet. Dokumentacija ZeroTier o izhodnem vozlišču pokriva enako delitev med vozliščem, potjo in odjemalcem.
Nastavite izhodno vozlišče za posredovanje in prevajanje
Trajno omogočite posredovanje IPv4, nato dodajte izvorni NAT za promet, ki zapušča vmesnik WAN. Pravila filtra morajo dovoliti posredovani tok v obe smeri, ker sta posredovanje in prevajanje ločena od dovoljenja:
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 ACCEPTZamenjajte zt0 in eth0 z imeni na gostitelju; pravilo, shranjeno za primer vmesnika, ne sledi paketom na resničnem. Spremembe naredite trajne prek upravitelja požarnega zidu, ki ima pravila v lasti, ker ukaz v interaktivni lupini izgine ob naslednjem zagonu.
Če gostitelj poganja upravitelja požarnega zidu, kot sta UFW ali firewalld, dodajte pravila prek tega upravitelja, namesto da zlagate vrstice iptables ob njem. Dva lastnika, ki urejata iste verige, ustvarita politiko, odvisno od vrstnega reda zagona. Vrstni red je pomemben, ko upravitelj ustvarja svoje verige. Preizkusite z odjemalca po ponovnem nalaganju upravitelja, ne prej.
Oglasite pot in jo sprejmite na odjemalcu
Na omrežnem krmilniku dodajte upravljano pot za 0.0.0.0/0, katere naslednji skok je naslov ZeroTier izhodnega člana. Nato na članu, ki naj bi jo uporabljal, dovolite prepis za to omrežje. Dovoljenje je lokalno: ne prekonfigurira drugih članov in ne spremeni krmilnika.
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1Zadnji ukaz bi moral poročati vmesnik ZeroTier in naslov izhodnega člana. Če še vedno poroča fizični vmesnik, pot manjka ali ima konkurenčna privzeta pot boljšo metriko.
Nastavitev omejite na omrežje, ki jo potrebuje. Omogočanje sprejemanja privzete poti globalno ali v omrežju, ki naj bi zagotavljalo le zasebno podomrežje, pošilja promet skozi izhod, ki za to ni bil nikoli dimenzioniran.
Preverite izhod in preglejte druge družine naslovov
Zaprosite za javni naslov pri storitvi, ki poroča vir, in ga primerjajte z naslovom WAN izhodnega vozlišča. Nato naložite stran po imenu, da potrdite, da DNS še vedno razrešuje, in preizkusite eno pomembno aplikacijo, ne le brskalnika.
Odjemalec z dvojnim skladom lahko še naprej uporablja svojo izvorno pot IPv6, medtem ko IPv4 izhaja skozi ZeroTier. Če je cilj skriti ali nadzorovati ves promet, sta potrebna ločena pot ::/0 in posredovanje IPv6 na izhodu, test IPv4 pa o njima ne pove ničesar.
Povratno filtriranje poti v Linuxu lahko na odjemalcu zavrže tudi veljaven izhodni promet. ZeroTier dokumentira premislek o rp_filter za sodelujoče člane; to nastavitev spremenite zavestno in šele po potrditvi poti in NAT, ne kot prvi poskus.
Če je zahteva dostop do NAS ali enega pisarniškega podomrežja, je upravljana pot za to predpono manjša in varnejša sprememba kot popoln izhod. Pošiljanje vsega brskanja skozi drugo napravo je drugačna odločitev kot doseganje enega zasebnega vira in si zasluži ločen pregled.