Tailscale Serve või Funnel: kes saab lingi tegelikult avada?
Serve jagab teenust sinu tailnetiga, Funnel aga paljastab selle avatud internetti. Võrdle sihtrühma, identiteedipealkirju ja porte, mida Funnel lubab.
Mõlemad käsud avaldavad kohaliku teenuse Tailscale'i HTTPS-nime kaudu ja neid käivitava masina pealt vaadates näevad need peaaegu identsed välja. Erinevus on selles, kes pääseb hiljem URL-ile ligi, ja see erinevus otsustab, milliseid kontrolle sinu rakendus veel vajab. Serve hoiab sihtrühma tailneti sees, Funnel viib selle avatud internetti. Vali esmalt sihtrühm ja seejärel käsk, mis sellega sobib.
Serve vastab küsimusele sinu tailneti sees
Serve teeb puhverserveri kohalikule pordile või serveerib kohalikku sisu sinu tailneti seadmetele ning tailneti juurdepääsureeglid kehtivad endiselt iga päringu kohta. Juhtpaneel pordil 3000 muutub kättesaadavaks HTTPS-nimel, mille saavad lahendada ja millega saavad ühenduda ainult sinu seadmed. See on õige vaikevalik sisemiste tööriistade jaoks, sest sihtrühm on tailneti poolt juba autenditud ja sa ei lisa avalikku pinda. URL näeb välja nagu tavaline veebisait ja just seetõttu peavad inimesed seda selleks.
Serve võib edastatavatele päringutele lisada ka identiteedipealkirju, mis kirjeldavad tailneti kasutajat. Kui sinu rakendus usaldab neid pealkirju autentimisena, seo taustaprogramm localhosti külge, et miski muu ei pääseks sellele otse ligi; marsruuditaval aadressil kuulav taustaprogramm võib vastu võtta päringuid, mis pole kunagi puhverserverist läbi käinud.
Funnel muudab sihtrühma avatud internetiks
Funnel avaldab valitud teenuse kõigile, kellel on URL, ja külastajad ei vaja klienti, kontot ega sinu tailneti liikmelisust. Seega vajab ressurss autentimist, kiiruspiirangut ja paiku, mida rakendaksid igale avalikule teenusele. Avalikud päringud ei kanna Serve'i tailneti identiteedipealkirju, nii et rakendusel, mis neile lootis, pole Funneli all üldse kasutajaidentiteeti. Teise avaldamiskäsu valimine ei vasta autentimisküsimusele sinu eest.
Funnelil on ka piiranguid, mida vanema väljalaske õpetus ei pruugi mainida. See lõpetab TLS-i sertifikaadiga, mille Tailscale nime jaoks hangib, ja toetab ainult kindlaid kuulamisporte, nagu kirjeldab Funneli dokumentatsioon. Kui sinu teenus ootab ühel neist portidest muud protokolli kui HTTPS, on Funnel vale tööriist, mitte konfiguratsioonimõistatus.
Loe režiimi kliendist, mitte pordist
Kontrolli praegust olekut enne millegi jagamist, sest kahte režiimi saab samale kohalikule pordile erinevatel aegadel seadistada. Olekukäsud teatavad, mis on tegelikult avaldatud ja kellele. Ära tuleta sihtrühma sellest, et URL vastab.
tailscale serve status
tailscale funnel status
tailscale status --json | head -40
Käskude süntaks on kliendiversioonide vahel muutunud, nii et kopeeritud väljakutse võib valida teistsuguse režiimi, kui kavatsesid. Eelista dokumenteeritud vormi sinu kasutatava versiooni jaoks ja loe kliendi trükitud kinnitust selle asemel, et seda eeldada. Kui olemas on nii Serve'i kui ka Funneli konfiguratsioon, loeb paljastamise seisukohast avalik. Lähtesta konfiguratsioon, mida sa ei mõelnud, selle asemel et laduda selle peale veel üks.
Peatu ja loe olek uuesti, kui väljund ei nimeta sihtrühma. Avaldatud URL ilma nimetatud sihtrühmata on oletus ja oletused on viis, kuidas sisemised juhtpaneelid avatud internetti jõuavad.
Testi sihtrühmaga, mida tegelikult mõtlesid
Testi väljastpoolt tailneti, mitte masinalt, mis teenuse avaldas. Päring tailneti seadmest tõestab, et puhverserver töötab, kuid ei tõesta, et kõrvaline isik on välja jäetud. Kasuta võrku, kus pole Tailscale'i klienti ja pole marsruuti tailneti.
curl -sI https://host.tailnet-name.ts.net
curl -sI https://host.tailnet-name.ts.net --resolve host.tailnet-name.ts.net:443:203.0.113.10
Sisemise juhtpaneeli puhul peaks väline päring ühendumises või autoriseerimises ebaõnnestuma ning sisemine päring peaks õnnestuma oodatud identiteediga. Avaliku teenuse puhul peaks väline päring õnnestuma ja rakendus peaks küsima omaenda volitusi. Pane kirja, kumba neist kahest tulemusest sa jälgisid, sest üksnes URL ei ütle seda. Kui tulemus on kavatsusele vastupidine, eemalda esmalt avalik konfiguratsioon ja seejärel uuri asja.
Teenuse avaldamine ei ole ka sama otsus kui väljumissõlme valimine, mis juhib seda, kust sinu väljuv liiklus lahkub. Serve ja Funnel vastavad, kes pääseb ligi millelegi, mida sa käitad; väljumissõlm vastab, kust sinu enda ühendused näivad tulevat. Hoia need kaks küsimust lahus ja võrdlus jääb lihtsaks.