Tailscale ішкі желісінің маршрутизаторында бастапқы NAT-ты өшіріңіз, туннель жұмысын жалғастырады, бірақ ол арқылы өтетін қосылымдар тоқтайды. Сұраныстар межелі жерге қашықтағы клиенттің өз overlay мекенжайымен жетеді, бұл өзгерістің мәні, және жауаптарға енді LAN ешқашан білмеуі тиіс жол қажет. Ол жол болмаса пакеттер қонады, жауаптар кәдімгі шлюз арқылы шығады, ал ақау ешбір firewall ережесі түсіндірмейтін firewall мәселесі ретінде көрінеді. Туннель сау; қайтару бөлігі жоқ.

SNAT нені жасырды

SNAT қосулы кезде маршрутизатор ішкі желіге жібермес бұрын бастапқы мекенжайды өзінің LAN мекенжайына қайта жазады, сондықтан межелі жер өзіне қалай жетуді бұрыннан білетін хостқа жауап береді және басқа ештеңе конфигурациялаудың қажеті жоқ. Оны өшіру бастапқы көзді сақтайды, ал межелі жер өз сымындағы көршінің орнына overlay ауқымындағы мекенжайды көреді. Бұл мекенжай нақты және tailnet бойынша маршрутталады, бірақ LAN-нан әдепкі шлюз арқылы оған жету мүмкін емес. Құжатталған ауыстырып-қосқыш — --snat-subnet-routes=false, ол Linux ішкі желісінің маршрутизаторының өзіне қолданылады.

Бұл әр пакетке арналған қосқыш емес, тұрақты параметр, сондықтан қайтару жолы сол маршрутизатор қызмет көрсететін әрбір межелі желі үшін болуы керек. Дәл осы өзгерісті құсбелгі емес, орналастыру шешіміне айналдырады. Сол маршрутизатор қызмет көрсететіннің бәрі талапты сол сәтте мұраға алады.

Қайтару жолы қайда болуы мүмкін

Үш орналасу кең таралған, олар дұрыстықта емес, қамтуда ерекшеленеді. Межелі хосттағы статикалық маршрут ең тікелей және ең аз масштабталатын, өйткені әр құрылғыға өз көшірмесі қажет. VPC-тегі немесе сайт маршрутизаторындағы маршруттар кестесі бүкіл желіні бірден қамтиды, ал тапсырмасыз статикалық маршруттарды тасымалдайтын DHCP опциясы клиенттерге автоматты түрде жетеді, бірақ оны елемейтін құрылғыларда үнсіз сәтсіздікке ұшырайды.

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

Қай орналасуды таңдасаңыз да, келесі секірус — маршрутизатордың LAN мекенжайы, ешқашан оның tailnet мекенжайы емес. LAN хосты бұл маршрут болмайынша overlay-ге жете алмайды, сондықтан overlay ішіндегі келесі секірус шеңберлі және пакетті еш жерге жібермейді. Осы бір қате дұрыс көрінетін, бірақ бәрібір сәтсіздікке ұшырайтын конфигурациялардың көбін түсіндіреді және тек маршрутизатордың өз кестесін оқитын кез келген тексеруден өтеді. Қай орналасуды қолданғаныңызды жазып қойыңыз, әйтпесе келесі адам дұрыс емесін тексереді.

Ақауды бір бағытты трафик ретінде оқу

Белгісін себебінен гөрі тану оңай: қызмет маршрутизатордың өзінде жауап береді, ал қашықтағы клиенттен үнсіз қалады. Межелі жердегі түсірілім сұраныстардың келе жатқанын және жауаптардың шығып бара жатқанын көрсетеді, бұл сол жауаптардың қайда бет алғанын байқамайынша табыс сияқты көрінеді. Олар әдепкі шлюзге барады, яғни кіру бөлігі жұмыс істеді, ал қайтару бөлігі істемеді.

Оның орнына маршрутизаторда түсіріңіз, өйткені ол бір айырбастың екі бағытын да көреді және жауаптың тіпті келгенін көрсетеді. Егер жауап межелі жерде көрініп, маршрутизаторда ешқашан көрінбесе, маршрут межелі жақта жоқ немесе қате. Егер ол маршрутизаторда көрініп, сол жерде тоқтаса, мәселе әрі қарай және басқа тергеуге жатады.

sudo tcpdump -ni any host 100.64.0.5
ip route get 100.64.0.5

Нақты мекенжай маршрутқа тұрарлық па

Межелі желіні қайта конфигурациялау мүмкін болмаған кезде SNAT-ты сақтау қарапайым жауап болып қалады, ал құны — әр клиент межелі жердің журналдары мен саясатында маршрутизаторға ұқсайды. Оны өшіру қолданбаға нақты бастапқы мекенжай қажет болғанда немесе желі саясаты бір маршрутизаторды бөлісетін клиенттерді ажыратуға тиіс болғанда негізді. Екеуі де заңды себеп және ешқайсысы тегін емес. Пайда әр межелі желіде маршрутты ұстауға, оған қоса төменде сипатталған firewall шолуына тұрарлық болуы керек.

Бір шағын LAN үшін бұл айырбас әдетте өтеледі, ал статикалық маршрутты қабылдай алмайтын құрылғылардың көптігі үшін әдетте өтелмейді. Шешім мен себепті маршрутизатор конфигурациясының қасына жазыңыз, келесі әкімші қай мінез-құлық әдейі екенін білсін. Ешкім жазбаған әдепкі мән абайсыздықтан ажыратылмайды.

Firewall, журналдау және қос рөл

Маршрутизатордың LAN мекенжайымен сәйкес келген әр ереже енді басқа көзге сәйкес келеді, оған рұқсат ережелері және маршрутизаторды клиент ретінде жазған кез келген журнал өрісі кіреді. Ол ережелерді бірінші сынақтан бұрын оқыңыз, бірінші сәтсіздіктен кейін емес, өйткені тек маршрутизатор мекенжайына рұқсат беретін ереже жаңа көзді толық бөгейді. Ауыстыруды қажет клиенттер мен порттарға дейін тарылтыңыз, содан кейін оның бүкіл tailnet-ті үнсіз жібермейтінін растаңыз.

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

Бір торап бір уақытта шығу торабы да, ішкі желі маршрутизаторы да болатын болса, бұл құжатталған үйлесім ішкі желі SNAT өшірілгеннен кейін жоғары ағынды трафикті тастауы мүмкін. Бұл рөлдерді әртүрлі тораптарға бөлу ескертуді жояды және әр маршрут пен firewall саясатына бір иесін береді. Егер рөлдер бірге қалуы керек болса, бұл мінез-құлықты күтіңіз және клиентті кінәламас бұрын оны сынаңыз. Маршрутты, қосқыш параметрін және рөлдер бөлінісін бір жазбада ұстаңыз, өйткені келесі қосылым сәтсіз болғанда олар бірге оқылады.

Қатысты мақалалар