Izklopite izvorni NAT na usmerjevalniku podomrežja Tailscale in tunel deluje naprej, medtem ko povezave skozenj prenehajo. Zahteve prispejo na cilj z lastnim overlay naslovom oddaljenega odjemalca, kar je natanko smisel spremembe, in odgovori zdaj potrebujejo pot, ki je omrežje LAN ni nikoli potrebovalo poznati. Brez te poti paketi pristanejo, odgovori odidejo skozi običajno prehodno točko, napaka pa se kaže kot težava požarnega zidu, ki je ne pojasni nobeno pravilo. Tunel je zdrav; povratni krak manjka.

Kaj je SNAT skrival

Ob vklopljenem SNAT usmerjevalnik prepiše izvorni naslov v svoj lastni naslov LAN, preden ga posreduje v podomrežje, zato cilj odgovori gostitelju, do katerega že zna priti, in ničesar drugega ni treba nastaviti. Izklop ohrani prvotni vir, cilj pa nato vidi naslov znotraj obsega overlay, ne soseda na lastni žici. Ta naslov je resničen in usmerljiv po vsem tailnetu, vendar z omrežja LAN skozi privzeti prehod ni dosegljiv. Dokumentirano stikalo je --snat-subnet-routes=false, uporabljeno na samem Linux usmerjevalniku podomrežja.

To je trajna nastavitev in ne stikalo za vsak paket, zato mora povratna pot obstajati za vsako ciljno omrežje, ki ga ta usmerjevalnik oskrbuje. Zato je sprememba odločitev o uvedbi in ne potrditveno polje. Vse, kar ta usmerjevalnik oskrbuje, podeduje zahtevo v istem trenutku.

Kje lahko živi povratna pot

Tri postavitve so običajne in se razlikujejo po dosegu, ne po pravilnosti. Statična pot na ciljnem gostitelju je najbolj neposredna in najmanj razširljiva, saj vsaka naprava potrebuje svojo kopijo. Usmerjevalna tabela v VPC ali na usmerjevalniku lokacije pokrije celotno omrežje naenkrat, možnost DHCP z brezrazrednimi statičnimi potmi pa doseže odjemalce samodejno, a tiho odpove na napravah, ki jo ignorirajo.

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

Katero koli postavitev izberete, naslednji skok je naslov LAN usmerjevalnika in nikoli njegov naslov tailnet. Gostitelj v omrežju LAN ne more doseči overlaya, dokler nima te poti, zato je naslednji skok znotraj overlaya krožen in paketa ne pošlje nikamor. Prav ta ena napaka pojasni večino konfiguracij, ki izgledajo pravilne in vseeno odpovejo, in preživi vsak pregled, ki bere le tabelo samega usmerjevalnika. Zapišite, katero postavitev ste uporabili, sicer bo naslednja oseba preizkusila napačno.

Branje napake kot enosmernega prometa

Simptom je lažje prepoznati kot vzrok: storitev odgovarja na samem usmerjevalniku in molči z oddaljenega odjemalca. Zajem na cilju pokaže zahteve, ki prihajajo, in odgovore, ki odhajajo, kar je videti kot uspeh, dokler ne opazite, kam gredo ti odgovori. Gredo k privzetemu prehodu, kar pomeni, da je dohodni krak deloval, povratni pa ne.

Zajemajte raje na usmerjevalniku, ker vidi obe smeri ene izmenjave in pokaže, ali je odgovor sploh prispel. Če se odgovor pojavi na cilju, a nikoli na usmerjevalniku, pot na ciljni strani manjka ali je napačna. Če se pojavi na usmerjevalniku in se tam ustavi, je težava dlje in spada k drugi preiskavi.

sudo tcpdump -ni any host 100.64.0.5
ip route get 100.64.0.5

Ali je pravi naslov vreden poti

Ohranjanje SNAT ostaja preprostejši odgovor, kadar ciljnega omrežja ni mogoče prenastaviti, cena pa je, da je vsak odjemalec v dnevnikih in politiki cilja videti kot usmerjevalnik. Izklop je upravičen, ko aplikacija potrebuje pravi izvorni naslov ali ko mora omrežna politika razlikovati odjemalce, ki si delijo usmerjevalnik. Oba sta legitimna razloga in nobeden ni brezplačen. Korist mora biti vredna vzdrževanja poti v vsakem ciljnem omrežju, plus spodaj opisani pregled požarnega zidu.

Za en majhen LAN se zamenjava običajno izplača, za množico naprav, ki ne morejo sprejeti statične poti, pa običajno ne. Zapišite odločitev in razlog ob konfiguraciji usmerjevalnika, da bo naslednji skrbnik vedel, katero vedenje je namerno. Privzeta vrednost, ki je nihče ni zapisal, se ne razlikuje od spregleda.

Požarni zid, beleženje in dvojna vloga

Vsako pravilo, ki se je ujemalo z naslovom LAN usmerjevalnika, se zdaj ujema z drugim virom, vključno s pravili dovoljenja in vsakim poljem dnevnika, ki je usmerjevalnik beležilo kot odjemalca. Preberite ta pravila pred prvim preskusom, ne po prvi okvari, ker pravilo, ki dovoljuje samo naslov usmerjevalnika, novi vir povsem blokira. Zožite zamenjavo na odjemalce in vrata, ki jo potrebujejo, nato potrdite, da tiho ne spusti celega tailneta.

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

Eno vozlišče, ki služi hkrati kot izhodno vozlišče in kot usmerjevalnik podomrežja, je dokumentirana kombinacija, ki lahko po izklopu SNAT podomrežja izgublja navzgor usmerjen promet. Ločitev teh vlog na različna vozlišča odpravi to pridržnost in da vsaki poti in politiki požarnega zidu enega lastnika. Če morajo vloge ostati skupaj, pričakujte tako vedenje in ga preizkusite, preden obtožite odjemalca. Pot, nastavitev stikala in dodelitev vlog hranite v eni opombi, saj se berejo skupaj, ko naslednja povezava odpove.

Sorodni članki