El node de sortida de ZeroTier no funciona? Reviseu la ruta, el NAT i el client
Una ruta 0.0.0.0/0 al client no és una sortida. El node ha de reenviar i traduir, la xarxa ha d’anunciar la ruta i el client ha d’acceptar-la.
La taula de rutes mostra una ruta per defecte per la interfície ZeroTier, la xarxa es mostra en línia i el navegador encara surt per l’adreça local del proveïdor. Aquesta combinació és habitual i no és un error del client. Una ruta per defecte només diu on han d’anar els paquets; algú els ha de reenviar i traduir a l’altre extrem. Tres parts separades han de ser certes abans que una sortida funcioni.
La ruta existeix, però no en surt res
Primer reviseu la taula de rutes del client. Una línia com default via 10.147.20.5 dev zt0 demostra que la ruta es va instal·lar, no que la destinació accepti el trànsit. El següent salt ha de ser un membre disposat i capaç de reenviar-lo.
Si la mateixa petició encara surt per la interfície física, el client no va instal·lar la ruta, o la va instal·lar amb una mètrica que va perdre davant la ruta per defecte local. Si la petició desapareix després d’instal·lar la ruta, el membre de sortida rep paquets i no els pot reenviar ni traduir. Un client que conserva la ruta per defecte física no envia cap paquet a la sortida.
Aquesta distinció decideix on cal treballar. Comparar una adreça pública abans i després del canvi separa una ruta que no es va fer servir mai d’una que es va fer servir i es va descartar, i només cal una ordre en lloc de revisar tota la configuració. Feu la comparació abans de canviar res més, perquè tots dos resultats surtin del mateix estat inicial.
Tres parts que han de ser certes alhora
Una sortida és una cadena, i l’enllaç més feble marca el símptoma. La taula de sota llista els enllaços en l’ordre en què solen fallar.
| 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 |
La primera fila és la que amaga el nom de l’opció. Un membre es converteix en sortida només quan el seu nucli reenvia paquets entre la interfície ZeroTier i la interfície orientada a internet, i quan la ruta de resposta es tradueix de tornada al túnel. Sense aquest reenviament, el membre és un igual, no una porta d’enllaç.
La fila del controlador és autorització, no configuració. Anunciar 0.0.0.0/0 a través d’un membre diu a cada client on és la sortida; no fa que aquell membre sigui capaç de portar el trànsit. Tampoc verifica que el membre tingui un camí funcional a internet. La documentació de node de sortida de ZeroTier cobreix la mateixa separació entre node, ruta i client.
Configureu el node de sortida perquè reenviï i tradueixi
Activeu el reenviament IPv4 de manera persistent i després afegiu NAT d’origen per al trànsit que surt de la interfície WAN. Les regles de filtre han de permetre el flux reenviat en les dues direccions, perquè el reenviament i la traducció són independents del permís:
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 ACCEPTSubstituïu zt0 i eth0 pels noms de l’amfitrió; una regla desada per a una interfície d’exemple no segueix els paquets en una de real. Feu els canvis persistents a través del gestor de tallafocs que posseeix les regles, perquè una ordre en una línia d’ordres interactiva desapareix al proper reinici.
Si l’amfitrió executa un gestor de tallafocs com UFW o firewalld, afegiu les regles a través d’aquest gestor en lloc d’apilar línies d’iptables al costat. Dos propietaris editant les mateixes cadenes produeixen una política que depèn de l’ordre d’arrencada. L’ordre importa quan el gestor genera les seves pròpies cadenes. Proveu des d’un client després de recarregar el gestor, no abans.
Anuncieu la ruta i accepteu-la al client
Al controlador de la xarxa, afegiu una ruta gestionada per a 0.0.0.0/0 el següent salt de la qual sigui l’adreça ZeroTier del membre de sortida. Després, al membre que l’ha de fer servir, permeteu la substitució per a aquella xarxa. El permís és local: no reconfigura altres membres ni canvia el controlador.
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1L’última ordre hauria d’informar de la interfície ZeroTier i de l’adreça del membre de sortida. Si encara informa de la interfície física, falta la ruta o una ruta per defecte competidora té millor mètrica.
Mantingueu el paràmetre limitat a la xarxa que el necessita. Activar l’acceptació de la ruta per defecte globalment, o en una xarxa que només ha de proporcionar una subxarxa privada, envia el trànsit per una sortida que mai no es va dimensionar per a això.
Verifiqueu la sortida i reviseu les altres famílies d’adreces
Demaneu una adreça pública a un servei que informi de l’origen i compareu-la amb l’adreça WAN del node de sortida. Després carregueu un lloc pel nom per confirmar que el DNS encara resol, i proveu una aplicació important en lloc de només el navegador.
Un client de doble pila pot continuar fent servir el seu camí IPv6 natiu mentre IPv4 surt per ZeroTier. Si l’objectiu és amagar o controlar tot el trànsit, cal una ruta ::/0 separada i reenviament IPv6 a la sortida, i una prova IPv4 no diu res sobre això.
El filtratge de ruta inversa de Linux també pot descartar trànsit de sortida vàlid al client. ZeroTier documenta una consideració sobre rp_filter per als membres que hi participen; canvieu aquest paràmetre deliberadament i només després de confirmar la ruta i el NAT, no com a primer experiment.
Si el requisit és accedir a un NAS o a una subxarxa d’oficina, una ruta gestionada per a aquell prefix és un canvi més petit i segur que una sortida completa. Enviar tota la navegació per un altre dispositiu és una decisió diferent d’arribar a un recurs privat, i mereix una revisió a part.