Tailscale ички тармагынын SNAT өчүрүлгөндөн кийинки бир багыттуу трафик
Tailscale ички тармагынын маршрутизаторунда SNAT өчүрүңүз, ошондо жооптор келүүнү токтотот. Чыныгы булак дареги сакталат, ошондуктан LAN 100.64.0.0/10 тарапка кайтуу маршрутун талап кылат.
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 саясатына бир ээсин берет. Эгер ролдор бирге калышы керек болсо, бул жүрүм-турумду күтүңүз жана кардарды күнөөлөөдөн мурун аны сынаңыз. Маршрутту, которуштуруу жөндөөсүн жана ролдордун бөлүштүрүлүшүн бир жазууда сактаңыз, анткени кийинки байланыш ийгиликсиз болгондо алар бирге окулат.