ZeroTier-uitgangsnodus werk nie? Kontroleer roete, NAT en kliënt
'n 0.0.0.0/0-roete in die kliënt is nie 'n uitgang nie. Die nodus moet aanstuur en vertaal, die netwerk moet die roete adverteer, en die kliënt moet dit aanvaar.
Die roetetabel wys 'n verstekroete deur die ZeroTier-koppelvlak, die netwerk rapporteer aanlyn, en 'n blaaier verlaat steeds via die plaaslike ISP-adres. Daardie kombinasie is algemeen en dit is nie 'n fout in die kliënt nie. 'n Verstekroete sê net waar pakkette moet heen; iets moet hulle aan die ander kant aanstuur en vertaal. Drie afsonderlike dele moet waar wees voordat 'n uitgangsnodus werk.
Die roete bestaan, maar niks gaan uit nie
Kontroleer eers die kliënt se roetetabel. 'n Reël soos default via 10.147.20.5 dev zt0 bewys dat die roete geïnstalleer is, nie dat die bestemming die verkeer sal aanvaar nie. Die volgende sprong moet 'n lid wees wat gewillig en in staat is om dit aan te stuur.
As dieselfde versoek steeds deur die fisiese koppelvlak vertrek, het die kliënt nie die roete geïnstalleer nie, of het dit met 'n metriek geïnstalleer wat teen die plaaslike verstek verloor het. As die versoek verdwyn nadat die roete geïnstalleer is, ontvang die uitgangslid pakkette en versuim om hulle aan te stuur of te vertaal. 'n Kliënt wat die fisiese verstek behou, stuur glad nie 'n pakket na die uitgang nie.
Daardie onderskeid bepaal waar om te werk. Deur 'n publieke adres voor en ná die verandering te vergelyk, skei jy 'n roete wat nooit gebruik is van een wat gebruik en laat vaar is, en dit neem een opdrag eerder as 'n deurslag van die hele konfigurasie. Doen die vergelyking voordat jy enigiets anders verander, sodat albei resultate uit dieselfde begintoestand kom.
Drie dele wat almal waar moet wees
'n Uitgang is 'n ketting, en die swakste skakel bepaal die simptoom. Die tabel hieronder lys die skakels in die volgorde waarin hulle gewoonlik faal.
| 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 |
Die eerste ry is die een wat die opsienaam verberg. 'n Lid word eers 'n uitgang wanneer sy kern pakkette tussen die ZeroTier-koppelvlak en die internetgerigte koppelvlak aanstuur, en wanneer die antwoordpad terug na die tonnel vertaal word. Sonder daardie aansturing is die lid 'n eweknie, nie 'n poort nie.
Die kontroleerderry is magtiging, nie konfigurasie nie. Om 0.0.0.0/0 deur 'n lid te adverteer, vertel elke kliënt waar die uitgang is; dit maak nie daardie lid in staat om die verkeer te dra nie. Dit verifieer ook nie dat die lid 'n werkende pad na die internet het nie. ZeroTier se dokumentasie oor uitgangsnodusse dek dieselfde verdeling tussen nodus, roete en kliënt.
Stel die uitgangsnodus op om aan te stuur en te vertaal
Aktiveer IPv4-aansturing blywend, en voeg dan bron-NAT by vir verkeer wat die WAN-koppelvlak verlaat. Die filterreëls moet die aangestuurde vloei in albei rigtings toelaat, want aansturing en vertaling is apart van toestemming:
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 ACCEPTVervang zt0 en eth0 met die name op die gasheer; 'n reël wat vir 'n voorbeeldkoppelvlak gestoor is, volg nie pakkette op 'n regte een nie. Maak die veranderinge blywend deur die vuurmuurbeheerder wat die reëls besit, want 'n opdrag in 'n interaktiewe skulp verdwyn by die volgende herbegin.
As die gasheer 'n vuurmuurbeheerder soos UFW of firewalld laat loop, voeg die reëls deur daardie beheerder by in plaas daarvan om iptables-reëls daarlangs te stapel. Twee eienaars wat dieselfde kettings wysig, lewer 'n beleid wat van die opstartorde afhang. Orde maak saak wanneer die beheerder sy eie kettings genereer. Toets van 'n kliënt nadat die beheerder herlaai is, nie voor nie.
Adverteer die roete en aanvaar dit op die kliënt
Voeg op die netwerkkontroleerder 'n bestuurde roete vir 0.0.0.0/0 by waarvan die volgende sprong die uitgangslid se ZeroTier-adres is. Laat dan, op die lid wat dit moet gebruik, die oorheersing vir daardie netwerk toe. Die toestemming is plaaslik: dit herkonfigureer nie ander lede nie en dit verander nie die kontroleerder nie.
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1Die laaste opdrag behoort die ZeroTier-koppelvlak en die uitgangslid se adres te rapporteer. As dit steeds die fisiese koppelvlak rapporteer, ontbreek die roete of het 'n mededingende verstek 'n beter metriek.
Hou die instelling beperk tot die netwerk wat dit nodig het. Om verstekroete-aanvaarding globaal toe te laat, of op 'n netwerk wat net 'n privaat subnet moet verskaf, stuur verkeer deur 'n uitgang wat nooit daarvoor beplan is nie.
Verifieer die uitgang en kontroleer die ander adresfamilies
Vra 'n publieke adres by 'n diens wat die bron rapporteer, en vergelyk dit met die uitgangsnodus se WAN-adres. Laai dan 'n genoemde webwerf om te bevestig dat DNS steeds oplos, en toets een toepassing wat saak maak eerder as net 'n blaaier.
'n Dubbelstapelkliënt kan sy eie IPv6-pad bly gebruik terwyl IPv4 deur ZeroTier uitgaan. As die doel is om alle verkeer te verberg of te beheer, is 'n aparte ::/0-roete en IPv6-aansturing op die uitgang nodig, en 'n IPv4-toets sê niks oor hulle nie.
Linux se tru-roete-filtrering kan ook geldige uitgangsverkeer op die kliënt laat val. ZeroTier dokumenteer 'n rp_filter-oorweging vir deelnemende lede; verander daardie instelling doelbewus en eers nadat die roete en NAT bevestig is, nie as die eerste eksperiment nie.
As die vereiste toegang tot 'n NAS of een kantoorsubnet is, is 'n bestuurde roete vir daardie voorvoegsel 'n kleiner en veiliger verandering as 'n volledige uitgang. Om alle blaaiery deur 'n ander toestel te stuur, is 'n ander besluit as om een privaat hulpbron te bereik, en dit verdien 'n aparte hersiening.