Искључите изворни NAT на рутеру подмреже Tailscale и тунел наставља да ради док везе кроз њега престају. Захтеви стижу до одредишта са сопственом overlay адресом удаљеног клијента, што је управо смисао промене, и одговорима је сада потребан пут који LAN никада није морао да зна. Без тог пута пакети слећу, одговори излазе кроз уобичајени гејтвеј, а квар се појављује као проблем заштитног зида који ниједно правило не објашњава. Тунел је здрав; повратна деоница недостаје.

Шта је 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 док не буде имао ову руту, зато је следећи хоп унутар overlaya кружан и не шаље пакет нигде. Та једна грешка објашњава већину конфигурација које изгледају исправно и ипак отказују, и преживљава сваку проверу која чита само сопствену табелу рутера. Запишите који сте смештај користили, иначе ће следећа особа тестирати погрешан.

Читање квара као једносмерног саобраћаја

Симптом је лакше препознати од узрока: услуга одговара на самом рутеру и ћути од удаљеног клијента. Снимак на одредишту показује захтеве који пристижу и одговоре који одлазе, што изгледа као успех док не приметите куда ти одговори иду. Иду ка подразумеваном гејтвеју, што значи да је улазна деоница радила, а повратна није.

Снимајте на рутеру уместо тога, јер он види оба смера једне размене и показује да ли је одговор икада стигао. Ако се одговор појави на одредишту, али никада на рутеру, рута недостаје или је погрешна на одредишној страни. Ако се појави на рутеру и ту се заустави, проблем је даље и припада другом испитивању.

sudo tcpdump -ni any host 100.64.0.5
ip route get 100.64.0.5

Вреди ли права адреса руте

Задржавање SNAT-а остаје једноставнији одговор када одредишна мрежа не може поново да се конфигурише, а цена је да сваки клијент изгледа као рутер у евиденцији и политици одредишта. Искључивање је оправдано када апликацији треба права изворна адреса или када мрежна политика мора да разликује клијенте који деле рутер. Оба су легитимни разлози и ниједан није бесплатан. Корист мора да вреди одржавања руте у свакој одредишној мрежи, уз преглед заштитног зида описан ниже.

За један мали LAN размена се обично исплати, док се за мноштво уређаја који не могу да приме статичну руту обично не исплати. Запишите одлуку и разлог поред конфигурације рутера, да би следећи администратор знао које понашање је намерно. Подразумевано стање које нико није записао не разликује се од пропуста.

Заштитни зид, евидентирање и двострука улога

Свако правило које се поклапало са LAN адресом рутера сада се поклапа са другим извором, укључујући правила дозволе и свако поље евиденције које је бележило рутер као клијента. Прочитајте та правила пре првог теста, а не после првог неуспеха, јер правило које дозвољава само адресу рутера потпуно блокира нови извор. Сузите замену на клијенте и портове којима је потребна, а затим потврдите да тихо не пропушта цео tailnet.

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

Један чвор који истовремено служи као излазни чвор и као рутер подмреже је документована комбинација која може да одбаци узлазни саобраћај када се SNAT подмреже искључи. Раздвајање тих улога на различите чворове уклања ту напомену и даје свакој рути и политици заштитног зида једног власника. Ако улоге морају да остану заједно, очекујте такво понашање и тестирајте га пре него што оптужите клијента. Држите руту, подешавање прекидача и доделу улога у једној белешци, јер се читају заједно када следећа веза не успе.

Повезани чланци