ZeroTier-utgangsnode virker ikke? Sjekk rute, NAT og klient
En 0.0.0.0/0-rute i klienten er ikke en utgang. Noden må videresende og oversette, nettverket må annonsere ruten, og klienten må godta den.
Rutetabellen viser en standardrute gjennom ZeroTier-grensesnittet, nettverket rapporterer online, og en nettleser går fortsatt ut fra den lokale ISP-adressen. Den kombinasjonen er vanlig, og det er ikke en feil i klienten. En standardrute sier bare hvor pakkene skal gå; noe må videresende og oversette dem i andre enden. Tre separate deler må være sanne før en utgangsnode virker.
Ruten finnes, men ingenting går ut
Sjekk rutetabellen til klienten først. En linje som default via 10.147.20.5 dev zt0 beviser at ruten ble installert, ikke at målet godtar trafikken. Neste hopp må være et medlem som er villig og i stand til å videresende den.
Hvis den samme forespørselen fortsatt går ut gjennom det fysiske grensesnittet, installerte ikke klienten ruten, eller den installerte den med en metrikk som tapte mot den lokale standardruten. Hvis forespørselen forsvinner etter at ruten er installert, mottar utgangsmedlemmet pakker og klarer ikke å videresende eller oversette dem. En klient som beholder den fysiske standardruten, sender ikke en eneste pakke til utgangen.
Den forskjellen avgjør hvor det skal jobbes. Å sammenligne en offentlig adresse før og etter endringen skiller en rute som aldri ble brukt fra en som ble brukt og forkastet, og det krever én kommando i stedet for en gjennomgang av hele konfigurasjonen. Gjør sammenligningen før du endrer noe annet, slik at begge resultatene kommer fra samme starttilstand.
Tre deler som alle må være sanne
En utgang er en kjede, og det svakeste leddet bestemmer symptomet. Tabellen nedenfor lister leddene i den rekkefølgen de vanligvis svikter.
| 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 |
Den første raden er den som innstillingens navn skjuler. Et medlem blir først en utgang når kjernen videresender pakker mellom ZeroTier-grensesnittet og grensesnittet som vender mot internett, og når returveien oversettes tilbake til tunnelen. Uten den videresendingen er medlemmet en peer, ikke en gateway.
Kontrollerraden er autorisasjon, ikke konfigurasjon. Å annonsere 0.0.0.0/0 gjennom et medlem forteller hver klient hvor utgangen er; det gjør ikke medlemmet i stand til å bære trafikken. Det verifiserer heller ikke at medlemmet har en fungerende vei til internett. ZeroTiers dokumentasjon om utgangsnode dekker samme oppdeling mellom node, rute og klient.
Konfigurer utgangsnoden til å videresende og oversette
Aktiver IPv4-videresending varig, og legg deretter til kilde-NAT for trafikk som forlater WAN-grensesnittet. Filterreglene må tillate den videresendte strømmen i begge retninger, fordi videresending og oversetting er adskilt fra tillatelse:
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 ACCEPTErstatt zt0 og eth0 med navnene på verten; en regel lagret for et eksempelgrensesnitt følger ikke pakker på et ekte. Gjør endringene varige gjennom brannmurbehandleren som eier reglene, fordi en kommando i et interaktivt skall forsvinner ved neste omstart.
Hvis verten kjører en brannmurbehandler som UFW eller firewalld, legg til reglene gjennom den behandleren i stedet for å stable iptables-linjer ved siden av. To eiere som redigerer de samme kjedene lager en policy som avhenger av oppstartsrekkefølgen. Rekkefølgen betyr noe når behandleren genererer sine egne kjeder. Test fra en klient etter at behandleren er lastet inn på nytt, ikke før.
Annonser ruten og godta den på klienten
På nettverkskontrolleren legger du til en administrert rute for 0.0.0.0/0 der neste hopp er utgangsmedlemmets ZeroTier-adresse. Deretter, på medlemmet som skal bruke den, tillater du overstyringen for det nettverket. Tillatelsen er lokal: den konfigurerer ikke andre medlemmer på nytt og endrer ikke kontrolleren.
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1Den siste kommandoen bør rapportere ZeroTier-grensesnittet og utgangsmedlemmets adresse. Hvis den fortsatt rapporterer det fysiske grensesnittet, mangler ruten, eller en konkurrerende standardrute har bedre metrikk.
Hold innstillingen begrenset til nettverket som trenger den. Å aktivere godtakelse av standardrute globalt, eller på et nettverk som bare skal tilby et privat subnett, sender trafikk gjennom en utgang som aldri ble dimensjonert for det.
Bekreft utgangen og sjekk de andre adressefamiliene
Be om en offentlig adresse fra en tjeneste som rapporterer kilden, og sammenlign den med WAN-adressen til utgangsnoden. Last deretter inn et navngitt nettsted for å bekrefte at DNS fortsatt løser, og test én viktig applikasjon i stedet for bare en nettleser.
En klient med dobbel stabel kan fortsette å bruke sin egen IPv6-vei mens IPv4 går ut gjennom ZeroTier. Hvis målet er å skjule eller kontrollere all trafikk, kreves en separat ::/0-rute og IPv6-videresending på utgangen, og en IPv4-test sier ingenting om dem.
Linux' omvendte rute-filtrering kan også droppe gyldig utgangstrafikk på klienten. ZeroTier dokumenterer en rp_filter-vurdering for deltakende medlemmer; endre den innstillingen bevisst og bare etter at ruten og NAT er bekreftet, ikke som det første eksperimentet.
Hvis kravet er tilgang til en NAS eller ett kontorsubnett, er en administrert rute for det prefikset en mindre og sikrere endring enn en full utgang. Å sende all nettsurfing gjennom en annen enhet er en annen beslutning enn å nå én privat ressurs, og det fortjener en egen gjennomgang.