ZeroTier til et LAN: UFW-ruteregler, ikke en porttilladelse
At tillade en port på gatewayen er ikke det samme som at videresende til en vært bag den. Sæt den administrerede rute, aktivér gennemgang, og vælg en returvej.
At nå en printer på kontorets LAN gennem et ZeroTier-medlem lyder som én regel, men det er faktisk tre beslutninger tre forskellige steder. Overlayet skal vide, hvor LAN'et er, Linux-værten skal være villig til at videresende pakker, og LAN'et skal vide, hvordan svaret sendes tilbage. En indgående regel, der åbner en port på gatewayen, rører ikke ved nogen af dem. Det er det forkerte værktøj anvendt på den rigtige vært.
Tre opgaver, tre ejere
Den administrerede rute hører til ZeroTier-netværkskonfigurationen. Den fortæller medlemmerne, at et præfiks kan nås gennem en bestemt medlemsadresse.
Videresendelse hører til Linux-kernen og til den, der ejer dens firewallpolitik. Den afgør, om en pakke, der ankommer på overlayet, igen forlader den fysiske grænseflade. En vært, der ikke videresender, vil lydløst kassere pakken, efter at den har accepteret den. Afsenderen ser en timeout, og der dukker intet op i tjenesteloggen.
Returvejen hører til LAN'et. Dets værter og dets router skal vide, at overlay-præfikset kan nås gennem din gateways LAN-adresse, eller også skal noget oversætte trafikken, så spørgsmålet aldrig opstår.
Hver af disse kan være korrekt, mens de andre svigter, og derfor beviser en test, der kun pinger gatewayen, intet om tjenesten bag den.
Ret den administrerede rute mod medlemmet
Tilføj en rute for det tilsigtede LAN-præfiks gennem gatewayens overlay-adresse, ikke gennem dens LAN-adresse. Overlay-adressen er den, andre medlemmer kan nå; LAN-adressen giver kun mening på kablet.
Medlemmerne skal acceptere administrerede ruter, for at designet virker, og deres egne lokale netværk må ikke allerede bruge det præfiks, du annoncerer. En fjern laptop, der derhjemme ligger på 192.168.60.0/24, kan heller ikke route 192.168.60.0/24 gennem overlayet.
Hold det annoncerede præfiks så smalt, som opgaven tillader. At annoncere et større aggregat for at påvirke præferencen kan også gøre krav på adresseplads, du ikke ejer, og den resulterende konflikt viser sig på de enheder, der er forbundet til begge netværk. Det kan også få et medlem til at foretrække en vej, der fører ingen steder hen. Hold ruten ærlig, og lad politikken gøre resten.
Skriv præfikset og medlemsadressen i samme note som firewallreglerne, for den mest almindelige fejl er en rute, der peger på det forkerte medlem.
Aktivér gennemgang i kernen
Læs den kørende videresendelsesværdi, før du ændrer noget, og gør derefter indstillingen permanent gennem den mekanisme, dit system allerede bruger, ikke gennem en engangskommando, der forsvinder ved genstart.
Hvis UFW ejer politikken, udtrykker dens ruteregler videresendelse for et par af kilde, destination og grænseflade. De er adskilt fra indgående regler, der åbner en tjeneste på selve gatewayen:
sysctl net.ipv4.ip_forward
sudo ufw route allow in on zt3f2a1c9d out on eth0 proto tcp to 192.168.60.20 port 443
sudo ufw status verbose
Grænsefladenavnet er den faktiske overlay-enhed på den vært, som du kan læse med ip link; det er ikke en fast streng på tværs af installationer. Hvis værten videresender som standard, og UFW ikke er i vejen, ignoreres rutereglen, og det er kerneindstillingerne, der betyder noget.
Vælg, hvordan svar kommer tilbage
Med kildebevaring ser LAN-tjenesten den rigtige overlay-adresse og svarer på den. Det kræver en rute på LAN-værten eller på dens router, der peger overlay-præfikset mod din gateway, og det er en ændring uden for Linux-boksen.
Når den rute ikke kan tilføjes, får afgrænset kildeoversættelse anmodningen til at se ud, som om den kom fra gatewayen på LAN'et. Svar vender så tilbage lokalt, og der er ingen grund til at ændre LAN-routing, men prisen er, at den oprindelige kilde forsvinder fra tjenesteloggen.
Afgræns oversættelsen til overlay-kilden og den specifikke LAN-destination. At oversætte alt, der forlader LAN-grænsefladen, er den brede version, som senere overrasker enhver, der læser reglerne, og den skjuler også trafik, der burde have været blokeret.
Ingen af valgene giver uopfordret adgang fra LAN'et tilbage til vilkårlige overlay-medlemmer. Hvis det er ønsket, er det en separat regel med sin egen gennemgang.
Test fra et rigtigt medlem
Forbind fra et andet medlem, ikke fra gatewayen, og anmod om én tilladt tjeneste. Prøv derefter en tjeneste, der skal forblive lukket, og gentag begge tests efter en genopkobling og efter en genstart af gatewayen.
Et medlem, der rapporterer ONLINE, eller et vellykket ping til gatewayens overlay-adresse, validerer ikke ruten, videresendelsesreglen eller returvejen:
zerotier-cli listnetworks
ip -4 route get 192.168.60.20
sudo ufw status numbered
Den anden kommando viser, hvilken grænseflade pakken ville bruge til LAN-værten, og den tredje viser, om rutereglen findes i den form, du havde tænkt. Hvis begge ser rigtige ud, og tjenesten stadig timer ud, er returvejen den resterende mistænkte.