Izslēdziet avota NAT Tailscale apakštīkla maršrutētājā, un tunelis turpina darboties, kamēr savienojumi caur to apstājas. Pieprasījumi nonāk galamērķī ar attālā klienta paša overlay adresi, kas ir tieši pārmaiņas jēga, un atbildēm tagad vajag ceļu, kas LAN nekad nebija jāzina. Bez šī ceļa paketes nolaižas, atbildes iziet caur parasto vārteju, un kļūme izskatās kā ugunsmūra problēma, ko neizskaidro neviens ugunsmūra noteikums. Tunelis ir vesels; atgriešanās posms trūkst.

Ko slēpa SNAT

Kad SNAT ir ieslēgts, maršrutētājs pirms pārsūtīšanas apakštīklā pārraksta avota adresi uz savu LAN adresi, tāpēc galamērķis atbild uz hostu, kuru jau prot sasniegt, un vairs nekas nav jākonfigurē. Izslēgšana saglabā sākotnējo avotu, un galamērķis tad redz adresi overlay diapazonā, nevis kaimiņu savā vadā. Šī adrese ir īsta un maršrutējama visā tailnet, taču no LAN caur noklusējuma vārteju tā nav sasniedzama. Dokumentētais slēdzis ir --snat-subnet-routes=false, kas piemērots pašam Linux apakštīkla maršrutētājam.

Tas ir pastāvīgs iestatījums, nevis slēdzis katram paketei, tāpēc atgriešanās ceļam jābūt katram galamērķa tīklam, ko apkalpo šis maršrutētājs. Tieši tāpēc pārmaiņa ir izvietošanas lēmums, nevis atzīmēšanas rūtiņa. Viss, ko apkalpo šis maršrutētājs, manto prasību tajā pašā mirklī.

Kur var atrasties atgriešanās ceļš

Trīs izvietojumi ir izplatīti, un tie atšķiras pēc tvēruma, nevis pareizības. Statisks maršruts galamērķa hostā ir vistiešākais un vismazāk mērogojamais, jo katrai ierīcei vajag savu kopiju. Maršrutu tabula VPC vai vietas maršrutētājā aptver visu tīklu uzreiz, un DHCP opcija ar bezklašu statiskajiem maršrutiem klientus sasniedz automātiski, bet klusi neizdodas ierīcēs, kas to ignorē.

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

Lai kuru izvietojumu izvēlētos, nākamais lēciens ir maršrutētāja LAN adrese un nekad tā tailnet adrese. LAN hosts nevar sasniegt overlay, kamēr tam nav šī maršruta, tāpēc nākamais lēciens overlay iekšienē ir cirkulārs un paketi nekur nesūta. Šī vienīgā kļūda izskaidro lielāko daļu konfigurāciju, kas izskatās pareizas un tomēr neizdodas, un tā pārdzīvo jebkuru pārbaudi, kas lasa tikai paša maršrutētāja tabulu. Pierakstiet, kuru izvietojumu izmantojāt, jo citādi nākamais cilvēks pārbaudīs nepareizo.

Kļūmes lasīšana kā vienvirziena trafiks

Simptomu ir vieglāk atpazīt nekā cēloni: pakalpojums atbild pašā maršrutētājā un klusē no attāla klienta. Uzņemšana galamērķī rāda pienākošus pieprasījumus un izejošas atbildes, kas izskatās pēc panākumiem, līdz pamanāt, kur šīs atbildes dodas. Tās dodas uz noklusējuma vārteju, kas nozīmē, ka ieejas posms strādāja, bet atgriešanās posms ne.

Uzņemiet tā vietā maršrutētājā, jo tas redz abus viena apmaiņas virzienus un parāda, vai atbilde vispār pienāca. Ja atbilde parādās galamērķī, bet nekad maršrutētājā, maršruts galamērķa pusē trūkst vai ir nepareizs. Ja tā parādās maršrutētājā un tur apstājas, problēma ir tālāk un pieder citai izmeklēšanai.

sudo tcpdump -ni any host 100.64.0.5
ip route get 100.64.0.5

Vai īstā adrese ir maršruta vērta

SNAT saglabāšana paliek vienkāršākā atbilde, kad galamērķa tīklu nevar pārkonfigurēt, un izmaksas ir tādas, ka katrs klients galamērķa žurnālos un politikā izskatās kā maršrutētājs. To izslēgt ir pamatoti, ja lietojumprogrammai vajag īsto avota adresi vai ja tīkla politikai ir jāatšķir klienti, kas dala maršrutētāju. Abi iemesli ir likumīgi un neviens nav bez maksas. Ieguvumam jābūt vērtam maršruta uzturēšanai katrā galamērķa tīklā, plus tālāk aprakstītajai ugunsmūra pārbaudei.

Vienam mazam LAN darījums parasti atmaksājas, bet ierīču kopumam, kas nevar pieņemt statisku maršrutu, parasti ne. Pierakstiet lēmumu un iemeslu pie maršrutētāja konfigurācijas, lai nākamais administrators zinātu, kura uzvedība ir apzināta. Noklusējums, ko neviens nav pierakstījis, nav atšķirams no nolaidības.

Ugunsmūris, žurnalēšana un dubultā loma

Katrs noteikums, kas atbilda maršrutētāja LAN adresei, tagad atbilst citam avotam, tostarp atļaujas noteikumi un jebkurš žurnāla lauks, kas reģistrēja maršrutētāju kā klientu. Lasiet šos noteikumus pirms pirmā testa, nevis pēc pirmās kļūmes, jo noteikums, kas atļauj tikai maršrutētāja adresi, pilnībā bloķē jauno avotu. Sašauriniet aizstāšanu līdz klientiem un portiem, kuriem tā vajadzīga, pēc tam pārliecinieties, ka tā klusi neielaiž visu tailnet.

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

Viens mezgls, kas vienlaikus kalpo gan kā izejas mezgls, gan kā apakštīkla maršrutētājs, ir dokumentēta kombinācija, kas var nomest augšupējo trafiku pēc tam, kad apakštīkla SNAT ir izslēgts. Šo lomu atdalīšana dažādos mezglos novērš šo piezīmi un dod katram maršrutam un ugunsmūra politikai vienu īpašnieku. Ja lomām jāpaliek kopā, gaidiet šādu uzvedību un pārbaudiet to pirms klienta vainošanas. Turiet maršrutu, slēdža iestatījumu un lomu piešķiršanu vienā piezīmē, jo tās lasa kopā, kad neizdodas nākamais savienojums.

Saistītie raksti