Jūs dirbate Linux nešiojamuoju kompiuteriu, tailscale status išvardija kitus kompiuterius, o NAS adresu 10.80.0.25 vis tiek baigiasi laiko limitu. Tailnet sveikas, potinklio maršrutizatorius prisijungęs, ir kliento išvestyje nieko nesako, kodėl už jo esantis LAN nepasiekiamas. Toliau pateiktas vadovas juda nuo šio simptomo į išorę: vėliavėlė šiame kliente, tada skelbimas maršrutizatoriuje, tada patvirtinimas, tada politika, ir tik tada pats tikslas. Kiekvieni vartai nepavyksta su tuo pačiu laiko limitu, todėl tvarka svarbesnė už komandas.

Ko Linux klientas atsisako diegti

Linux Tailscale klientai nepriima skelbiamų potinklio maršrutų, nebent jų paprašote. Be šio nustatymo klientas prisijungia prie tailnet ir pasiekia bendraamžių adresus, o kiekvienas maršrutizatoriaus skelbiamas priešdėlis lieka nenaudojamas. Numatytoji reikšmė yra tyčinė, todėl simptomas atrodo kaip sugedęs maršrutizatorius, o ne kaip vietinis sprendimas.

Čia dvi skirtingos dalys vadinamos maršrutizavimu, ir tik viena jų yra jūsų. Maršrutizatorius skelbia priešdėlį tailnet tinkle; jūsų kompiuteris sprendžia, ar jį įdiegti. Bet kurios iš jų gedimas duoda tą patį laiko limitą, todėl spėliojimas praranda popietę. Išsiaiškinkite, kuri pusė atsisako, prieš ką nors redaguodami.

Įjunkite maršrutų priėmimą šiam kompiuteriui

Nustatykite nuostatą kliente, tada pažiūrėkite, kas pasikeitė, o ne manykite, kad komanda suveikė. Dabartinė forma taiko nustatymą nekartodama prisijungimo eigos, o tai svarbu, kai esate sesijos viduryje.

sudo tailscale set --accept-routes
tailscale status
ip route show table 52

Tailscale Linux sistemoje priimtus maršrutus įdiegia į savo lentelę, todėl lentelėje 52 pasirodęs priešdėlis yra tiesioginis įrodymas, kad šis klientas įdiegė skelbimą. Jei jūsų diapazono toje lentelėje nėra, sustokite: problema vietinė ir joks darbas maršrutizatoriuje jos nepakeis.

Senesni klientai tą pačią nuostatą pateikia kaip prisijungimo komandos vėliavėlę, todėl sudo tailscale up --accept-routes yra atsarginis variantas, kai tailscale set nėra. Naudokite jį vietoj rankinio maršrutų redagavimo, nes demonas perrašo savo lentelę ir jūsų pakeitimas dingsta per kitą prisijungimą. Patikrinkite versiją prieš kopijuodami komandą iš senesnio straipsnio.

Tikrinkite skelbimą ir patvirtinimą atskirai

Potinklio maršrutizatoriuje priešdėlis turi būti skelbiamas, o branduolys turi persiųsti paketus tarp sąsajų. Skelbimas be persiuntimo duoda patvirtintą maršrutą, kuris tyliai numeta srautą, ir tai yra dažniausia nebaigta konfigūracija.

sudo tailscale up --advertise-routes=10.80.0.0/24
sysctl net.ipv4.ip_forward
ip -br addr

Palyginkite skelbiamą priešdėlį su adresu, kurį iš tikrųjų bandote pasiekti, po vieną simbolį. Maršrutizatorius, skelbiantis 10.70.0.0/24, nieko nesako apie NAS adresu 10.80.0.25, o neatitikimas nematomas jokioje būsenos išvestyje, nes abu skaičiai atrodo vienodai tikėtini. Dauguma pranešimų apie sugedusį maršrutą baigiasi čia. Pataisykite skelbimą prieš ką nors liesdami toliau.

Patvirtinimas yra kiti vartai, ir juos lengva praleisti, kai maršrutizatorius sukonfigūruotas iš apvalkalo. Skelbimas turi būti įjungtas tam įrenginiui administravimo konsolėje, prieš kitiems kompiuteriams jį naudojant. Maršrutų priėmimas kliente nieko nepatvirtina ir nepanaikina jokios prieigos taisyklės.

Pirmiau išbandykite privatų adresą, o ne mazgo vardą

Sėkmingas prisijungimas prie paties maršrutizatoriaus tailnet adreso įrodo, kad tailnet veikia, ką jau žinojote. Naudingas testas yra paslauga, kurios iš tikrųjų reikia, pirmiausia prie privataus adreso, kad DNS gedimas negalėtų apsimesti maršrutizavimo gedimu.

tailscale ping 10.80.0.1
ping -c 2 10.80.0.25
nc -vz 10.80.0.25 445
getent hosts nas.internal.example

Jei adresas atsako, o mazgo vardas ne, turite vardų sprendimo problemą ir turėtumėte nustoti ją laikyti maršruto problema. Jei neatsako nė vienas, grįžkite vienu skyriumi atgal ir patvirtinkite, kad skelbimas apima adresą. Abi gedimai iš programos atrodo vienodai ir taisomi skirtingose vietose.

Vienas vietinis patikrinimas vertas dėmesio prieš kaltinant tailnet. Kai dabartinis LAN naudoja tą patį priešdėlį kaip nuotolinis potinklis, branduolys teikia pirmenybę tiesiogiai prijungtam maršrutui ir srautas niekada nepalieka kompiuterio; tai nutinka, kai namai ir biuras abu pasirenka 192.168.1.0/24.

Kodėl kliento vėliavėlė nėra maršrutizatoriaus nustatymas

Tai skirtingi vaidmenys su skirtingais reikalavimais, o kliento vėliavėlės kopijavimas į maršrutizatorių yra būdas, kuriuo veikiantis tailnet įgyja kilpą. Kompiuteriui, skelbiančiam maršrutus, reikia persiuntimo, užkardos taisyklių, leidžiančių persiunčiamą srautą, ir sprendimo, kuriuos priešdėlius jis skelbia. Niekas iš to nėra implikuojama --accept-routes.

Potinklio maršrutizatorių dokumentacija perspėja neįjungti maršrutų priėmimo pertekliniams maršrutizatoriams, skelbiantiems vieną priešdėlį, nes budėjimo mazgas gali išstumti jau vietinį srautą per aktyvųjį. Jei naudojate HA porą, traktuokite tai kaip projektavimo apribojimą, o ne išnašą, ir nuspręskite, kuris mazgas valdo priešdėlį, prieš patvirtindami jį abiejuose. Viename maršrutizatoriuje tas pats įspėjimas skaitomas kaip priminimas, kad priėmimas priklauso klientams, o ne skelbiančiam kompiuteriui. Užsirašykite, kurie vartai buvo uždaryti.

Įprastam klientui seka baigiasi programos testu, kuris nepavyko pradžioje. Maršrutizatoriui peržiūrėkite persiuntimą, skelbimą, patvirtinimą ir užkardą ta tvarka, nes pirmasis trūkstamas sukuria būtent tą laiko limitą, su kuriuo pradėjote.

Susiję straipsniai