Zakaj odobrena pot podomrežja Tailscale še vedno poteče
Odobritev poti le razširi pot podomrežja. Če storitev še vedno poteče, preverite sprejem poti v odjemalcu, posredovanje in pravilo dostopa zanjo.
Odobritev v skrbniški konzoli je videti kot zadnji korak, pa ni. Najprej aplikacija poteče, in šele nato ugotovite, da je usmerjevalnik na spletu in pot odobrena. Odobritev je korak razširjanja, ne dovoljenje in ne jamstvo za posredovanje. Štiri stopnje se morajo ujemati, preden paket doseže gostitelja za usmerjevalnikom podomrežja, in vsaka lahko uspe, medtem ko naslednja spodleti. Pojdite skoznje po vrsti in ustavite se pri prvi stopnji, ki se ne obdrži.
Štiri stopnje, ena napaka
Usmerjevalnik oglašuje predpono, tailnet to objavo odobri, odjemalec sprejme prejeto pot, dostopna politika pa dovoli konkretno povezavo. To so štiri ločene odločitve, ki jih sprejmejo tri različne komponente. Odobrena pot torej pove le, da je omrežje zdaj del usmerjevalne tabele tailneta.
Četrta stopnja je najpogosteje izpuščena, ker prve tri dajo vidno stanje. Dovoljenje, ki pokriva lastni naslov usmerjevalnika v tailnetu, ne pokrije samodejno zasebnega podomrežja za njim. To so različni cilji, politika pa se ocenjuje za vsak cilj posebej.
V Linuxu ima tretja stopnja tudi privzeto vedenje, ki preseneti: sprejemanje poti podomrežij je neobvezno. Več odjemalcev z grafičnim vmesnikom privzeto sprejme oglaševane poti, zato lahko mešana flota pokaže en stroj, ki spodleti, medtem ko drugi delujejo.
Nastavitev potrdite na stroju, ki spodleti, namesto da bi predpostavili platformo. Pot ni bila nikoli manjkajoči del na delujočih strojih, zato pustite njim, da dokažejo, da je stran tailneta zdrava. Dokumentacija Tailscale o usmerjevalnikih podomrežij pokriva odobritev, sprejem poti v odjemalcu in stopnjo politike.
Preverite pot tam, kjer teče odjemalec
Začnite pri odjemalcu, ki spodleti, ne pri usmerjevalniku. Potrdite, da pot obstaja in da nastavitev odjemalca sploh dovoljuje sprejemanje poti.
tailscale status
tailscale debug prefs | grep -i route
ip route get 10.20.0.42
Prvi ukaz pokaže seznam partnerjev in ali je usmerjevalnik podomrežja dosegljiv, drugi izpiše nastavitve odjemalca vključno z zastavico za sprejem poti, tretji pa vpraša jedro, kateri vmesnik bi uporabilo za resničnega gostitelja v podomrežju. Če zadnji ukaz navede fizični vmesnik namesto vmesnika Tailscale, pot ni nikoli prišla v tabelo. Manjkajoča pot je težava na strani odjemalca, ne odobritve. Popravite jo, preden pogledate politiko.
Za sprejemanje poti v Linuxu se znova povežite z zastavico, namesto da bi predpostavili, da je nastavljena: tailscale up --accept-routes. Odjemalec, ki se je pridružil z drugimi zastavicami, jih obdrži, dokler se ne spremenijo, zato pred dodajanjem še ene preverite trenutno nastavitev. Ponovni zagon prvega ukaza po spremembi bi moral pokazati pot v tabeli.
Dokažite posredovanje in povratno pot
Odobritev ne nastavi usmerjevalnika za posredovanje paketov in ne poskrbi za odgovor. Oboje so zadeve na ravni gostitelja na strani LAN usmerjevalnika. Preizkusite jih na usmerjevalniku, ne na odjemalcu.
sysctl net.ipv4.ip_forward
iptables -t nat -L POSTROUTING -n -v
tcpdump -ni any host 10.20.0.42 and port 443
Prvi ukaz mora poročati 1, sicer jedro posredovani paket zavrže. Drugi pokaže, ali maskiranje poti podomrežja prepisuje vir, kar je privzeto vedenje in običajno tisto, kar želite. Tretji pokaže, ali zahteva doseže cilj in ali se kaj vrne; zahteva brez odgovora je težava povratne poti, ne odobritve. Preberite vse tri rezultate skupaj, preden katerega spremenite.
Če je maskiranje izklopljeno, ciljno omrežje potrebuje pot nazaj na naslove tailneta in vsak vmesni skok jo mora poznati. Ponovni vklop maskiranja je najhitrejša poprava za eno storitev, a za ceno skritja izvirnega naslova odjemalca pred ciljem. Ta kompromis je pomemben, ko cilj beleži izvorne naslove za revizijo, zato se zanj odločite zavestno, namesto da zastavico obrnete med incidentom. Dokumentirajte, katero možnost ste izbrali, ker bo naslednja oseba videla le eno od dveh vedenj.
Preberite dostopno pravilo za vir
Ko je pot prisotna in je posredovanje dokazano, je preostali osumljenec politika. Preberite dovoljenje, ki naj bi povezavo omogočilo, in preverite njegov cilj, ne le vir. Tudi identiteta odjemalca mora ustrezati selektorju politike, zato jo zabeležite na istem stroju, ki spodleti.
tailscale status --json | head -40
tailscale ping <router-name-or-tailnet-ip>
ping -c 3 10.20.0.42
Izhod stanja opredeli lastne naslove odjemalca in partnerje, ki jih vidi, in s tem se mora ujemati selektor vira politike. tailscale ping dokaže pot tailneta do samega usmerjevalnika podomrežja; razrešuje imena partnerjev in naslove tailneta, ne gostiteljev znotraj oglaševanega podomrežja. Tretji ukaz pošlje običajen odmev ICMP po poti podomrežja, zato njegov rezultat opisuje cilj in ne usmerjevalnika. Zavrnitev na ravni tailneta se običajno vrne kot zavrnitev, medtem ko paket, ki odide in se nikoli ne vrne, poteče.
Neuspešno ime je drugo vprašanje kot neuspešen naslov; razrešite gostitelja neposredno, preden krivite pot. Dovoljenje pišite glede na dejansko potrebo vira in ne glede na celotno podomrežje. Odpreti celo /24, da ena aplikacija deluje, je pot, po kateri ozka zahteva postane široko dovoljenje, ki si ga pozneje nihče ne upa odstraniti.
Če je bil cilj izhod v internet in ne zasebno podomrežje, je pravilna komponenta izhodno vozlišče, ne usmerjevalnik podomrežja, politika in usmerjanje pa se ustrezno razlikujeta. Preverite to odločitev, preden razširite dovoljenje. Izhodno vozlišče spremeni privzeto pot; usmerjevalnik podomrežja le oglašuje predpono.