ZeroTierin ulostulosolmu ei toimi? Tarkista reitti, NAT ja asiakas
Asiakkaan 0.0.0.0/0-reitti ei ole ulostulo. Solmun on välitettävä ja käännettävä, verkon on mainostettava reittiä ja asiakkaan hyväksyttävä se.
Reititystaulu näyttää oletusreitin ZeroTier-rajapinnan kautta, verkko ilmoittaa olevansa verkossa ja selain lähtee silti paikallisesta ISP-osoitteesta. Yhdistelmä on tavallinen eikä se ole asiakkaan vika. Oletusreitti kertoo vain, minne pakettien pitäisi mennä; toisessa päässä jonkin on välitettävä ja käännettävä ne. Kolmen erillisen osan on oltava totta ennen kuin ulostulosolmu toimii.
Reitti on olemassa, mutta mitään ei lähde ulos
Tarkista ensin asiakkaan reititystaulu. Rivi kuten default via 10.147.20.5 dev zt0 todistaa, että reitti asennettiin, ei sitä että kohde hyväksyy liikenteen. Seuraavan hypyn on oltava jäsen, joka on halukas ja kykenevä välittämään sen.
Jos sama pyyntö lähtee edelleen fyysisen rajapinnan kautta, asiakas ei asentanut reittiä tai asensi sen metriikalla, joka hävisi paikalliselle oletusreitille. Jos pyyntö katoaa reitin asentamisen jälkeen, ulostulojäsen vastaanottaa paketteja eikä onnistu välittämään tai kääntämään niitä. Asiakas, joka säilyttää fyysisen oletusreitin, ei lähetä ulostulolle yhtään pakettia.
Tämä ero ratkaisee, missä työ tehdään. Julkisen osoitteen vertaaminen ennen muutosta ja sen jälkeen erottaa reitin, jota ei koskaan käytetty, reitistä jota käytettiin ja joka pudotettiin, ja se vaatii yhden komennon koko kokoonpanon läpikäynnin sijaan. Tee vertailu ennen kuin muutat mitään muuta, jotta molemmat tulokset tulevat samasta lähtötilasta.
Kolme osaa, joiden kaikkien on oltava totta
Ulostulo on ketju, ja heikoin lenkki määrää oireen. Alla oleva taulukko luettelee lenkit siinä järjestyksessä, jossa ne yleensä pettävät.
| 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 |
Ensimmäinen rivi on se, jonka vaihtoehdon nimi kätkee. Jäsenestä tulee ulostulo vasta, kun sen ydin välittää paketteja ZeroTier-rajapinnan ja internetiin päin olevan rajapinnan välillä ja kun vastauspolku käännetään takaisin tunneliin. Ilman tätä välitystä jäsen on vertaisjäsen, ei yhdyskäytävä.
Ohjaimen rivi on valtuutus, ei kokoonpano. 0.0.0.0/0:n mainostaminen jäsenen kautta kertoo jokaiselle asiakkaalle, missä ulostulo on; se ei tee jäsenestä kykenevää kantamaan liikennettä. Se ei myöskään varmista, että jäsenellä on toimiva polku internettiin. ZeroTierin ulostulosolmun dokumentaatio käsittelee saman jaon solmun, reitin ja asiakkaan välillä.
Määritä ulostulosolmu välittämään ja kääntämään
Ota IPv4-välitys käyttöön pysyvästi ja lisää sitten lähde-NAT WAN-rajapinnasta lähtevälle liikenteelle. Suodatinsääntöjen on sallittava välitetty virta molempiin suuntiin, koska välitys ja käännös ovat erillisiä luvasta:
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 ACCEPTKorvaa zt0 ja eth0 isännän nimillä; esimerkkirajapinnalle tallennettu sääntö ei seuraa paketteja oikealla rajapinnalla. Tee muutokset pysyviksi sen palomuurinhallinnan kautta, joka omistaa säännöt, koska interaktiivisessa kuoressa annettu komento katoaa seuraavassa uudelleenkäynnistyksessä.
Jos isäntä ajaa palomuurinhallintaa kuten UFW tai firewalld, lisää säännöt sen hallinnan kautta sen sijaan että pinoaisit iptables-rivejä sen viereen. Kaksi omistajaa, jotka muokkaavat samoja ketjuja, tuottavat käynnistysjärjestyksestä riippuvan käytännön. Järjestys on tärkeä, kun hallinta luo omat ketjunsa. Testaa asiakkaasta hallinnan uudelleenlatauksen jälkeen, ei ennen sitä.
Mainosta reitti ja hyväksy se asiakkaassa
Lisää verkko-ohjaimeen hallittu reitti 0.0.0.0/0:lle, jonka seuraava hyppy on ulostulojäsenen ZeroTier-osoite. Salli sitten jäsenellä, jonka pitäisi käyttää sitä, ohitus kyseiselle verkolle. Lupa on paikallinen: se ei uudelleenmääritä muita jäseniä eikä muuta ohjainta.
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1Viimeisen komennon pitäisi raportoida ZeroTier-rajapinta ja ulostulojäsenen osoite. Jos se raportoi edelleen fyysisen rajapinnan, reitti puuttuu tai kilpailevalla oletusreitillä on parempi metriikka.
Pidä asetus rajattuna verkkoon, joka sitä tarvitsee. Oletusreitin hyväksymisen ottaminen käyttöön maailmanlaajuisesti tai verkossa, jonka pitäisi tarjota vain yksityinen aliverkko, lähettää liikenteen ulostulon kautta, jota ei koskaan mitoitettu siihen.
Varmista ulostulo ja tarkista muut osoiteperheet
Pyydä julkinen osoite palvelulta, joka raportoi lähteen, ja vertaa sitä ulostulosolmun WAN-osoitteeseen. Lataa sitten nimetty sivusto varmistaaksesi, että DNS vielä ratkeaa, ja testaa yhtä tärkeää sovellusta eikä vain selainta.
Kaksoispinon asiakas voi jatkaa natiivin IPv6-polun käyttöä, kun IPv4 lähtee ZeroTierin kautta. Jos tavoitteena on piilottaa tai hallita kaikki liikenne, tarvitaan erillinen ::/0-reitti ja IPv6-välitys ulostulossa, eikä IPv4-testi kerro niistä mitään.
Linuxin käänteinen polunsuodatus voi myös pudottaa kelvollista ulostuloliikennettä asiakkaassa. ZeroTier dokumentoi rp_filter-huomion osallistuville jäsenille; muuta sitä asetusta harkitusti ja vasta kun reitti ja NAT on vahvistettu, ei ensimmäisenä kokeena.
Jos vaatimus on pääsy NASiin tai yhteen toimiston aliverkkoon, hallittu reitti sille etuliitteelle on pienempi ja turvallisempi muutos kuin täysi ulostulo. Koko selailun lähettäminen toisen laitteen kautta on eri päätös kuin yhden yksityisen resurssin saavuttaminen, ja se ansaitsee erillisen tarkastelun.