Tailscale Serve eller Funnel: kven kan eigentleg opne lenkja?
Serve deler ei teneste med tailnettet ditt, medan Funnel eksponerer ho på det opne internettet. Samanlikn publikumet, identitetshovuda og portane Funnel tillèt.
Båe kommandoane publiserer ei lokal teneste gjennom eit Tailscale HTTPS-namn, og frå maskinen som køyrer dei ser dei nesten identiske ut. Skilnaden er kven som kan nå URL-en etterpå, og den skilnaden avgjer kva kontrollar applikasjonen din framleis treng. Serve held publikumet inne i tailnettet, medan Funnel flyttar det ut på det opne internettet. Vel publikumet fyrst, og vel deretter kommandoen som passar til det.
Serve svarar på eit spørsmål inne i tailnettet ditt
Serve proxyar ein lokal port eller leverer lokalt innhald til einingar på tailnettet ditt, og tilgangsreglane til tailnettet gjeld framleis for kvar førespurnad. Eit dashbord på port 3000 blir tilgjengeleg på eit HTTPS-namn som berre einingane dine kan slå opp og kople til. Dette er rett standard for interne verktøy, fordi publikumet allereie er autentisert av tailnettet og du legg ikkje til ei offentleg flate. URL-en ser ut som eit vanleg nettstad, og det er nettopp difor folk tek han for å vere eitt.
Serve kan òg leggje ved identitetshovud som skildrar tailnet-brukaren på førespurnadene han sender vidare. Viss applikasjonen din stolar på desse hovuda som autentisering, bind backend-en til localhost slik at ingenting anna kan nå han direkte; ein backend som lyttar på ei ruterbar adresse kan ta imot førespurnader som aldri har gått gjennom proxyen.
Funnel endrar publikumet til det opne internettet
Funnel publiserer ei vald teneste til alle som har URL-en, og vitjande treng ikkje klienten, ein konto eller medlemskap i tailnettet ditt. Ressursen treng difor autentiseringa, hastigheitsavgrensinga og oppdateringane du ville brukt på kva som helst offentleg teneste. Offentlege førespurnader ber ikkje Servens tailnet-identitetshovud, så ein applikasjon som stolte på dei, har ingen brukaridentitet i det heile under Funnel. Å velje ein annan publiseringskommando svarar ikkje på autentiseringsspørsmålet for deg.
Funnel har òg avgrensingar som ei rettleiing frå ein eldre versjon kanskje ikkje nemner. Han avsluttar TLS med eit sertifikat Tailscale skaffar for namnet, og han støttar berre bestemte lyttportar, slik Funnel-dokumentasjonen skildrar. Viss tenesta di ventar eit anna protokoll enn HTTPS på ein av desse portane, er Funnel feil verktøy og ikkje eit konfigurasjonspuslespel.
Les modusen frå klienten, ikkje frå porten
Kontroller gjeldande tilstand før du deler noko, fordi dei to modusane kan konfigurerast for same lokale port på ulike tidspunkt. Statuskommandoane rapporterer kva som faktisk er publisert og for kven. Ikkje drag slutninga om publikumet frå at ein URL svarar.
tailscale serve status
tailscale funnel status
tailscale status --json | head -40
Kommandosyntaksen har endra seg mellom klientversjonar, så eit kopiert kall kan velje ein annan modus enn den du meinte. Føretrekk den dokumenterte forma for versjonen du køyrer, og les stadfestinga klienten skriv ut i staden for å gå ut frå ho. Viss både ein Serve- og ein Funnel-konfigurasjon finst, er den offentlege den som tel for eksponering. Nullstill konfigurasjonen du ikkje meinte, i staden for å leggje endå ein oppå.
Stopp og les statusen på nytt viss utdata ikkje namngjev publikumet. Ein publisert URL utan oppgjeve publikum er ei gissing, og gissingar er måten interne dashbord hamnar på det opne internettet.
Test med publikumet du faktisk meinte
Test utanfrå tailnettet, ikkje frå maskinen som publiserte tenesta. Ein førespurnad frå ei eining i tailnettet provar at proxyen verkar; han provar ikkje at ein framand er utelukka. Bruk eit nettverk utan Tailscale-klient og utan rute inn i tailnettet.
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
For eit internt dashbord bør den eksterne førespurnaden mislykkast i å kople til eller mislykkast i autorisasjon, og den interne førespurnaden bør lukkast med identiteten du ventar. For ei offentleg teneste bør den eksterne førespurnaden lukkast, og applikasjonen bør be om sine eigne legitimasjonar. Noter kva av desse to utfalla du observerte, fordi URL-en åleine ikkje fortel deg det. Viss resultatet er det motsette av hensikta, fjern den offentlege konfigurasjonen fyrst og undersøk etterpå.
Å publisere ei teneste er heller ikkje same avgjerd som å velje ein exit node, som styrer kvar den utgåande trafikken din forlèt. Serve og Funnel svarar på kven som kan nå noko du køyrer; ein exit node svarar på kvar dine eigne tilkoplingar ser ut til å kome frå. Hald dei to spørsmåla frå kvarandre, og samanlikninga held seg enkel.