ZeroTier-udgangsnode virker ikke? Tjek rute, NAT og klient
En 0.0.0.0/0-rute i klienten er ikke en udgang. Noden skal videresende og oversætte, netværket skal annoncere ruten, og klienten skal acceptere den.
Rutetabellen viser en standardrute gennem ZeroTier-grænsefladen, netværket rapporterer online, og en browser forlader stadig den lokale ISP-adresse. Den kombination er almindelig, og det er ikke en fejl i klienten. En standardrute siger kun, hvor pakkerne skal hen; noget skal videresende og oversætte dem i den anden ende. Tre separate dele skal være sande, før en udgangsnode virker.
Ruten findes, men intet går ud
Tjek først klientens rutetabel. En linje som default via 10.147.20.5 dev zt0 beviser, at ruten blev installeret, ikke at destinationen accepterer trafikken. Næste hop skal være et medlem, der er villigt og i stand til at videresende den.
Hvis den samme anmodning stadig forlader gennem den fysiske grænseflade, installerede klienten ikke ruten, eller den installerede den med en metrik, der tabte til den lokale standardrute. Hvis anmodningen forsvinder, efter ruten er installeret, modtager udgangsmedlemmet pakker og undlader at videresende eller oversætte dem. En klient, der beholder den fysiske standardrute, sender slet ingen pakke til udgangen.
Den forskel afgør, hvor der skal arbejdes. At sammenligne en offentlig adresse før og efter ændringen adskiller en rute, der aldrig blev brugt, fra en der blev brugt og droppet, og det kræver én kommando i stedet for en gennemgang af hele konfigurationen. Foretag sammenligningen, før du ændrer noget andet, så begge resultater kommer fra samme starttilstand.
Tre dele, der alle skal være sande
En udgang er en kæde, og det svageste led sætter symptomet. Tabellen nedenfor viser leddene i den rækkefølge, de normalt fejler.
| 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 række er den, som indstillingens navn skjuler. Et medlem bliver først en udgang, når dets kerne videresender pakker mellem ZeroTier-grænsefladen og den internetvendte grænseflade, og når svarvejen oversættes tilbage til tunnelen. Uden den videresendelse er medlemmet en peer, ikke en gateway.
Kontrollerens række er autorisation, ikke konfiguration. Annoncering af 0.0.0.0/0 gennem et medlem fortæller hver klient, hvor udgangen er; det gør ikke medlemmet i stand til at bære trafikken. Det verificerer heller ikke, at medlemmet har en fungerende vej til internettet. ZeroTiers dokumentation om udgangsnode dækker samme opdeling mellem node, rute og klient.
Konfigurer udgangsnoden til at videresende og oversætte
Aktivér IPv4-videresendelse permanent, og tilføj derefter kilde-NAT for trafik, der forlader WAN-grænsefladen. Filterreglerne skal tillade den videresendte strøm i begge retninger, fordi videresendelse og oversættelse er adskilt fra tilladelse:
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 ACCEPTErstat zt0 og eth0 med navnene på værten; en regel gemt til en eksempelgrænseflade følger ikke pakker på en rigtig. Gør ændringerne permanente gennem den firewall-manager, der ejer reglerne, fordi en kommando i en interaktiv skal forsvinder ved næste genstart.
Hvis værten kører en firewall-manager som UFW eller firewalld, tilføj reglerne gennem den manager i stedet for at stable iptables-linjer ved siden af. To ejere, der redigerer de samme kæder, giver en politik, der afhænger af opstartsrækkefølgen. Rækkefølgen betyder noget, når manageren genererer sine egne kæder. Test fra en klient efter genindlæsning af manageren, ikke før.
Annoncér ruten, og accepter den på klienten
Tilføj på netværkscontrolleren en administreret rute for 0.0.0.0/0, hvis næste hop er udgangsmedlemmets ZeroTier-adresse. Tillad derefter på det medlem, der skal bruge den, tilsidesættelsen for det netværk. Tilladelsen er lokal: den omkonfigurerer ikke andre medlemmer og ændrer ikke controlleren.
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1Den sidste kommando bør rapportere ZeroTier-grænsefladen og udgangsmedlemmets adresse. Hvis den stadig rapporterer den fysiske grænseflade, mangler ruten, eller en konkurrerende standardrute har en bedre metrik.
Hold indstillingen begrænset til det netværk, der har brug for den. At aktivere accept af standardrute globalt eller på et netværk, der kun skal levere et privat subnet, sender trafik gennem en udgang, der aldrig blev dimensioneret til det.
Bekræft udgangen, og tjek de andre adressefamilier
Bed om en offentlig adresse fra en tjeneste, der rapporterer kilden, og sammenlign den med udgangsnodens WAN-adresse. Indlæs derefter et navngivet websted for at bekræfte, at DNS stadig opløses, og test en applikation, der betyder noget, i stedet for kun en browser.
En klient med dobbelt stak kan fortsætte med at bruge sin oprindelige IPv6-vej, mens IPv4 går ud gennem ZeroTier. Hvis målet er at skjule eller kontrollere al trafik, kræves en separat ::/0-rute og IPv6-videresendelse på udgangen, og en IPv4-test siger intet om dem.
Linux' omvendte rute-filtrering kan også droppe gyldig udgangstrafik på klienten. ZeroTier dokumenterer en rp_filter-overvejelse for deltagende medlemmer; ændr den indstilling bevidst og kun efter ruten og NAT er bekræftet, ikke som det første eksperiment.
Hvis kravet er adgang til en NAS eller et kontorsubnet, er en administreret rute for det præfiks en mindre og sikrere ændring end en fuld udgang. At sende al browsing gennem en anden enhed er en anden beslutning end at nå en privat ressource, og det fortjener en separat gennemgang.