Isahang-daan na trapiko matapos patayin ang SNAT ng subnet ng Tailscale
Patayin ang SNAT sa isang router ng subnet ng Tailscale at hihinto ang pagdating ng mga sagot. Nananatili ang tunay na address ng pinagmulan, kaya kailangan ng LAN ng rutang pabalik sa 100.64.0.0/10.
Patayin ang source NAT sa isang router ng subnet ng Tailscale at patuloy na gumagana ang tunnel habang humihinto ang mga koneksyon sa loob nito. Dumarating ang mga kahilingan sa destinasyon taglay ang sariling overlay address ng malayong kliyente, na siyang layunin ng pagbabago, at kailangan na ng mga sagot ng landas na hindi kailanman kailangang malaman ng LAN. Kung wala ang landas na iyon, lumalapag ang mga packet, lumalabas ang mga sagot sa karaniwang gateway, at lumilitaw ang pagkasira bilang problema sa firewall na walang tuntunin ang makapagpapaliwanag. Malusog ang tunnel; nawawala ang pabalik na bahagi.
Ano ang itinago ng SNAT
Kapag nakabukas ang SNAT, muling isinusulat ng router ang address ng pinagmulan sa sarili nitong LAN address bago ipasa sa subnet, kaya sumasagot ang destinasyon sa host na alam na nito kung paano maabot at wala nang iba pang kailangang i-configure. Kapag pinatay ito, nananatili ang orihinal na pinagmulan, at makikita ng destinasyon ang isang address sa loob ng saklaw ng overlay sa halip na isang kapitbahay sa sarili nitong kawad. Totoong address iyon at naruruta sa buong tailnet, ngunit hindi ito maabot mula sa LAN sa pamamagitan ng default na gateway. Ang dokumentadong switch ay --snat-subnet-routes=false, inilalapat sa mismong Linux subnet router.
Ito ay permanenteng setting at hindi switch sa bawat packet, kaya dapat na umiiral ang pabalik na landas para sa bawat destinasyong network na pinaglilingkuran ng router na iyon. Ito ang dahilan kung bakit ang pagbabago ay desisyon sa deployment at hindi checkbox. Ang lahat ng pinaglilingkuran ng router na iyon ay nagmamana ng pangangailangan sa parehong sandali.
Saan maaaring manirahan ang pabalik na landas
Tatlong puwesto ang karaniwan, at nagkakaiba sila sa abot, hindi sa kawastuhan. Ang static na ruta sa destinasyong host ang pinakadirekta at pinakamahirap palawakin, dahil kailangan ng bawat aparato ang sariling kopya. Ang talahanayan ng ruta sa VPC o sa router ng site ay sumasaklaw sa buong network nang sabay-sabay, at ang opsyon sa DHCP na nagdadala ng classless static na ruta ay umaabot sa mga kliyente nang awtomatiko ngunit tahimik na nabibigo sa mga aparatong hindi ito pinapansin.
ip route add 100.64.0.0/10 via 192.168.1.10
ip route get 100.64.0.5
Anuman ang puwestong piliin mo, ang susunod na hop ay ang LAN address ng router at hindi kailanman ang tailnet address nito. Hindi maabot ng LAN host ang overlay hanggang sa magkaroon ito ng rutang ito, kaya ang susunod na hop sa loob ng overlay ay paikot at hindi nagpapadala ng packet kahit saan. Ang nag-iisang pagkakamaling iyon ang nagpapaliwanag sa karamihan ng configuration na mukhang tama ngunit nabibigo pa rin, at nakakaligtas ito sa bawat pagsusuri na nagbabasa lamang ng sariling talahanayan ng router. Isulat kung aling puwesto ang ginamit mo, kung hindi ay susubukan ng susunod na tao ang mali.
Pagbasa ng pagkasira bilang isahang-daan na trapiko
Mas madaling makilala ang sintomas kaysa sa dahilan: sumasagot ang serbisyo sa router mismo at nananahimik mula sa malayong kliyente. Ang paghuli sa destinasyon ay nagpapakita ng mga kahilingang dumarating at mga sagot na umaalis, na mukhang tagumpay hanggang mapansin mo kung saan patungo ang mga sagot na iyon. Patungo ang mga ito sa default na gateway, na nangangahulugang gumana ang papasok na bahagi at hindi ang pabalik.
Hulihin sa router sa halip, dahil nakikita nito ang dalawang direksyon ng isang palitan at ipinapakita kung may dumating na sagot. Kung lumitaw ang sagot sa destinasyon ngunit hindi kailanman sa router, nawawala o mali ang ruta sa panig ng destinasyon. Kung lumitaw ito sa router at huminto roon, mas malayo ang problema at kabilang ito sa ibang imbestigasyon.
sudo tcpdump -ni any host 100.64.0.5
ip route get 100.64.0.5
Karapat-dapat ba ang tunay na address sa isang ruta
Nananatiling pinakasimpleng sagot ang pananatili ng SNAT sa tuwing hindi maaaring i-configure muli ang destinasyong network, at ang halaga ay mukhang router ang bawat kliyente sa mga log at patakaran ng destinasyon. May katwiran ang pagpatay nito kapag kailangan ng aplikasyon ang tunay na address ng pinagmulan o kapag kailangang ipagkaiba ng patakaran ng network ang mga kliyenteng nagbabahagi ng router. Pareho silang lehitimong dahilan at wala sa kanila ang libre. Dapat na sulit ang pakinabang sa pagpapanatili ng ruta sa bawat destinasyong network, kasama ang pagsusuri sa firewall na inilarawan sa ibaba.
Para sa isang maliit na LAN, kadalasang sulit ang palitan, samantalang para sa maraming kagamitang hindi makapagpatupad ng static na ruta, kadalasan ay hindi. Itala ang desisyon at dahilan sa tabi ng configuration ng router, upang malaman ng susunod na administrator kung aling pag-uugali ang sinadya. Ang default na walang nakasulat ay hindi maipagkaiba sa kapabayaan.
Firewall, pag-log at ang dobleng tungkulin
Ang bawat tuntuning tumugma sa LAN address ng router ay tumutugma na ngayon sa ibang pinagmulan, kabilang ang mga tuntunin ng pagpapahintulot at anumang field ng log na nagtala sa router bilang kliyente. Basahin ang mga tuntuning iyon bago ang unang pagsubok at hindi pagkatapos ng unang kabiguan, dahil ang tuntuning nagpapahintulot lamang sa address ng router ay ganap na humaharang sa bagong pinagmulan. Paikliin ang kapalit sa mga kliyente at port na nangangailangan nito, pagkatapos ay tiyakin na hindi ito tahimik na tumatanggap sa buong tailnet.
sudo nft list ruleset | grep -n '100\.64'
sudo iptables-save | grep -n '100\.64'
Ang isang node na nagsisilbi bilang exit node at subnet router nang sabay ay dokumentadong kombinasyon na maaaring magpabagsak ng upstream na trapiko kapag napatay ang SNAT ng subnet. Ang paghihiwalay ng mga tungkuling iyon sa magkaibang node ay nag-aalis ng paalalang iyon at nagbibigay sa bawat ruta at patakaran ng firewall ng iisang may-ari. Kung kailangang manatiling magkasama ang mga tungkulin, asahan ang ganoong pag-uugali at subukan ito bago sisihin ang isang kliyente. Itago ang ruta, setting ng switch at pagtatalaga ng tungkulin sa isang tala, dahil sabay na binabasa ang mga ito kapag nabigo ang susunod na koneksyon.