Administraatorikonsoolis kinnitamine näib viimase sammuna, kuid seda see pole. Kõigepealt aegub rakendus, ja alles seejärel avastate, et ruuter on võrgus ja marsruut kinnitatud. Kinnitamine on jaotamise samm, mitte luba ja mitte edastamise garantii. Neli etappi peavad ühtima, enne kui pakett jõuab alamvõrgu ruuteri taga oleva hostini, ja igaüks neist võib õnnestuda, samal ajal kui järgmine ebaõnnestub. Käige need järjekorras läbi ja peatuge esimesel etapil, mis ei pea.

Neli etappi, üks tõrge

Ruuter kuulutab välja prefiksi, tailnet kinnitab selle kuulutuse, klient võtab vastu saadud marsruudi ja juurdepääsupoliitika lubab konkreetse ühenduse. Need on neli eraldi otsust, mille teevad kolm erinevat komponenti. Kinnitatud marsruut ütleb seega ainult seda, et võrk on nüüd tailneti marsruutimistabeli osa.

Neljas etapp on see, mis kõige sagedamini vahele jääb, sest kolm esimest annavad nähtava oleku. Lubadus, mis katab ruuteri enda tailneti aadressi, ei kata automaatselt selle taga olevat privaatset alamvõrku. Need on erinevad sihtkohad ja poliitikat hinnatakse iga sihtkoha kaupa.

Linuxis on kolmandal etapil ka vaikeväärtus, mis inimesi üllatab: alamvõrgu marsruutide vastuvõtmine on valikuline. Mitmed graafilise liidesega kliendid võtavad kuulutatud marsruute vaikimisi vastu, nii et segatud masinapark võib näidata üht tõrkuvat masinat, samal ajal kui ülejäänud töötavad.

Kinnitage säte tõrkuval masinal, mitte ärge eeldage platvormi. Marsruut ei olnud kunagi töötavatel masinatel puuduv tükk, seega laske neil tõestada, et tailneti pool on terve. Tailscale’i dokumentatsioon alamvõrgu ruuterite kohta katab kinnitamise, kliendi marsruudivastuvõtu ja poliitikaetapi.

Kontrollige marsruuti seal, kus klient töötab

Alustage kliendist, mis tõrkub, mitte ruuterist. Kinnitage, et marsruut on olemas ja et kliendi säte üldse lubab marsruute vastu võtta.

tailscale status
tailscale debug prefs | grep -i route
ip route get 10.20.0.42

Esimene käsk näitab partnerite loendit ja seda, kas alamvõrgu ruuter on kättesaadav, teine trükib kliendi sätted, sealhulgas marsruudivastuvõtu lipu, ja kolmas küsib tuumalt, millist liidest see kasutaks alamvõrgus asuva päris hosti jaoks. Kui viimane käsk nimetab füüsilist liidest Tailscale’i liidese asemel, ei jõudnud marsruut kunagi tabelisse. Puuduv marsruut on kliendipoolne probleem, mitte kinnitamise probleem. Parandage see enne poliitika vaatamist.

Marsruutide vastuvõtmiseks Linuxis ühenduge uuesti lipuga, mitte ärge eeldage, et see on seatud: tailscale up --accept-routes. Teiste lippudega liitunud klient hoiab neid seni, kuni need muudetakse, seega kontrollige praegust sätet enne veel ühe lisamist. Esimese käsu uuesti käivitamine pärast muudatust peaks marsruudi tabelis näitama.

Tõestage edastamine ja tagasitee

Kinnitamine ei sea ruuterit pakette edastama ega korralda vastust. Mõlemad on hosti tasandi küsimused ruuteri LAN-poolel. Testige neid ruuteril, mitte kliendil.

sysctl net.ipv4.ip_forward
iptables -t nat -L POSTROUTING -n -v
tcpdump -ni any host 10.20.0.42 and port 443

Esimene käsk peab teatama 1, muidu viskab tuum edastatud paketi kõrvale. Teine näitab, kas alamvõrgu marsruudi maskeerimine kirjutab allika ümber, mis on vaikekäitumine ja tavaliselt see, mida soovite. Kolmas näitab, kas päring jõuab sihtkohta ja kas midagi tuleb tagasi; vastuseta päring on tagasitee probleem, mitte kinnitamise probleem. Lugege kolme tulemust koos enne, kui mõnda neist muudate.

Kui maskeerimine on välja lülitatud, vajab sihtvõrk marsruuti tagasi tailneti aadressidele ja iga vahepealne hüpe peab seda teadma. Maskeerimise uuesti sisselülitamine on ühe teenuse jaoks kiirem lahendus, aga selle hinnaga, et sihtkoha eest varjatakse kliendi algne aadress. See kompromiss loeb, kui sihtkoht logib auditiks allikaaadresse, seega otsustage see teadlikult, mitte ärge keerake lippu intsidendi ajal. Dokumenteerige, millise valiku tegite, sest järgmine inimene näeb ainult ühte kahest käitumisest.

Lugege ressursi juurdepääsureeglit

Kui marsruut on olemas ja edastamine tõestatud, on järelejäänud kahtlusalune poliitika. Lugege lubadust, mis peaks ühenduse võimaldama, ja kontrollige selle sihtkohta, mitte ainult allikat. Ka kliendi enda identiteet peab poliitika selektoriga sobima, seega jäädvustage see samalt masinalt, mis tõrkub.

tailscale status --json | head -40
tailscale ping <router-name-or-tailnet-ip>
ping -c 3 10.20.0.42

Olekuväljund tuvastab kliendi enda aadressid ja partnerid, keda see näeb, ning poliitika allikaselektor peab sellega sobima. tailscale ping tõestab tailneti tee kuni alamvõrgu ruuterini endani; see lahendab partnerite nimesid ja tailneti aadresse, mitte hoste kuulutatud alamvõrgus. Kolmas käsk saadab alamvõrgu marsruudi kaudu tavalise ICMP kaja, seega kirjeldab selle tulemus sihtkohta, mitte ruuterit. Tailneti tasandi keeldumine tuleb tavaliselt tagasi keeldumisena, samal ajal kui pakett, mis lahkub ega naase kunagi, aegub.

Tõrkuv nimi on teine küsimus kui tõrkuv aadress; lahendage host otse, enne kui marsruuti süüdistate. Kirjutage lubadus tegeliku ressursinõude järgi, mitte kogu alamvõrgu järgi. Terve /24 avamine, et üks rakendus töötaks, on viis, kuidas kitsast päringust saab lai luba, mida hiljem keegi ei julge eemaldada.

Kui eesmärk oli interneti väljapääs, mitte privaatne alamvõrk, on õige komponent väljapääsusõlm, mitte alamvõrgu ruuter, ning poliitika ja marsruutimine erinevad vastavalt. Kontrollige seda otsust enne lubaduse laiendamist. Väljapääsusõlm muudab vaikemarsruuti; alamvõrgu ruuter kuulutab ainult prefiksi.

Seotud artiklid