Lülitage Tailscale'i alamvõrgu marsruuteril lähte-NAT välja ja tunnel töötab edasi, samal ajal kui läbi selle käivad ühendused lakkavad. Päringud jõuavad sihtkohta kaugkliendi enda overlay-aadressiga, mis ongi muudatuse mõte, ja vastused vajavad nüüd teed, mida LAN ei pidanud kunagi teadma. Ilma selle teeta maanduvad paketid, vastused lahkuvad tavalisest lüüsist ja rike näib tulemüüri probleemina, mida ükski tulemüürireegel ei seleta. Tunnel on terve; tagasitee puudub.

Mida SNAT varjas

Kui SNAT on lubatud, kirjutab marsruuter lähteaadressi enne alamvõrku edastamist ümber oma LAN-aadressiks, nii et sihtkoht vastab hostile, kuhu see juba teab teed, ja midagi muud ei pea seadistama. Selle keelamine säilitab algse lähte ja sihtkoht näeb seejärel overlay-vahemikus olevat aadressi, mitte naabrit oma juhtmel. See aadress on tegelik ja tailneti ulatuses marsruuditav, kuid LAN-ist pole see vaikelüüsi kaudu kättesaadav. Dokumenteeritud lüliti on --snat-subnet-routes=false, mida rakendatakse Linuxi alamvõrgu marsruuterile endale.

See on püsiseade, mitte iga paketi lüliti, seega peab tagasitee olemas olema iga sihtvõrgu jaoks, mida see marsruuter teenindab. Just see teeb muudatusest juurutamisotsuse, mitte märkeruudu. Kõik, mida see marsruuter teenindab, pärib nõude samal hetkel.

Kus tagasitee paikneda võib

Levinud on kolm paigutust ja need erinevad ulatuse, mitte õigsuse poolest. Staatiline marsruut sihtkoha hostil on kõige otsesem ja kõige vähem skaleeruv, sest iga seade vajab oma koopiat. Marsruutimistabel VPC-s või koha marsruuteris katab korraga terve võrgu ning klassita staatilisi marsruute kandev DHCP-valik jõuab klientideni automaatselt, kuid ebaõnnestub vaikselt seadmetes, mis seda eiravad.

ip route add 100.64.0.0/10 via 192.168.1.10
ip route get 100.64.0.5

Ükskõik millise paigutuse valite, järgmine hüpe on marsruuteri LAN-aadress ja mitte kunagi selle tailneti-aadress. LAN-host ei pääse overlay'sse enne, kui tal on see marsruut, seega on järgmine hüpe overlay sees ringikujuline ega saada paketti kuhugi. See üks viga seletab enamikku seadistusi, mis näevad õiged välja ja ikka ebaõnnestuvad, ning see elab üle iga kontrolli, mis loeb ainult marsruuteri enda tabelit. Kirjutage üles, millist paigutust kasutasite, sest muidu testib järgmine inimene vale oma.

Rikke lugemine ühesuunalise liiklusena

Sümptomit on lihtsam ära tunda kui põhjust: teenus vastab marsruuteril endal ja jääb kaugkliendi jaoks vaikseks. Sihtkoha püünis näitab saabuvaid päringuid ja lahkuvaid vastuseid, mis näib õnnestumisena, kuni märkate, kuhu need vastused lähevad. Need lähevad vaikelüüsi poole, mis tähendab, et sissetulev osa töötas ja tagasitee mitte.

Püüdke hoopis marsruuteril, sest see näeb ühe vahetuse mõlemat suunda ja näitab, kas vastus üldse saabus. Kui vastus ilmub sihtkohas, kuid mitte kunagi marsruuteril, on marsruut sihtkoha poolel puudu või vale. Kui see ilmub marsruuteril ja peatub seal, on probleem kaugemal ja kuulub teise uurimise juurde.

sudo tcpdump -ni any host 100.64.0.5
ip route get 100.64.0.5

Kas tegelik aadress on marsruuti väärt

SNAT-i hoidmine jääb lihtsamaks vastuseks alati, kui sihtvõrku ei saa ümber seadistada, ja hind on see, et iga klient näeb sihtkoha logides ja poliitikas marsruuterina. Selle väljalülitamine on õigustatud, kui rakendus vajab tegelikku lähteaadressi või kui võrgupoliitika peab eristama kliente, kes jagavad marsruuterit. Mõlemad on legitiimsed põhjused ja kumbki pole tasuta. Kasu peab olema väärt marsruudi haldamist igas sihtvõrgus, pluss allpool kirjeldatud tulemüüri ülevaatus.

Ühe väikese LAN-i puhul tasub vahetus tavaliselt ära, seadmete hulga puhul, mis ei saa staatilist marsruuti võtta, tavaliselt mitte. Kirjutage otsus ja põhjus marsruuteri seadistuse kõrvale, et järgmine administraator teaks, milline käitumine on tahtlik. Vaikimisi käitumist, mida keegi kirja ei pannud, ei erista tähelepanuta jätmisest.

Tulemüür, logimine ja kahekordne roll

Iga reegel, mis sobis marsruuteri LAN-aadressiga, sobib nüüd teise lähtega, sealhulgas lubamisreeglid ja iga logiväli, mis registreeris marsruuteri kliendina. Lugege neid reegleid enne esimest katset, mitte pärast esimest ebaõnnestumist, sest ainult marsruuteri aadressi lubav reegel blokeerib uue lähte täielikult. Kitsendage asendus klientidele ja portidele, mida see vajab, seejärel kinnitage, et see ei lase vaikselt kogu tailneti sisse.

sudo nft list ruleset | grep -n '100\.64'
sudo iptables-save | grep -n '100\.64'

Üks sõlm, mis töötab korraga väljumissõlmena ja alamvõrgu marsruuterina, on dokumenteeritud kombinatsioon, mis võib pärast alamvõrgu SNAT-i keelamist ülesvoolu liiklust kaotada. Nende rollide eraldamine eri sõlmedele kõrvaldab selle hoiatuse ja annab igale marsruudile ja tulemüüripoliitikale ühe omaniku. Kui rollid peavad koos püsima, oodake sellist käitumist ja testige seda enne kliendi süüdistamist. Hoidke marsruut, lüliti seade ja rollide määramine ühes märkmes, sest neid loetakse koos, kui järgmine ühendus ebaõnnestub.

Seotud artiklid