Oba ukaza objavita lokalno storitev prek imena HTTPS Tailscale in s stroja, ki ju izvaja, se zdita skoraj enaka. Razlika je v tem, kdo lahko pozneje doseže URL, in ta razlika odloča, katere kontrole vaša aplikacija še potrebuje. Serve ohranja občinstvo znotraj tailneta, Funnel pa ga premakne na odprti internet. Najprej izberite občinstvo, nato pa ukaz, ki se z njim ujema.

Serve odgovori na vprašanje znotraj vašega tailneta

Serve posreduje lokalna vrata ali streže lokalno vsebino napravam v vašem tailnetu, in pravila dostopa tailneta še vedno veljajo za vsako zahtevo. Nadzorna plošča na vratih 3000 postane dosegljiva na imenu HTTPS, ki ga lahko razrešijo in se nanj povežejo samo vaše naprave. To je prava privzeta nastavitev za notranja orodja, ker je občinstvo že overjeno s strani tailneta in ne dodajate javne površine. URL je videti kot običajna spletna stran, in prav zato ga ljudje imajo za tako.

Serve lahko posredovanim zahtevam priloži tudi glave identitete, ki opisujejo uporabnika tailneta. Če vaša aplikacija tem glavam zaupa kot overjanju, privežite backend na localhost, da se nič drugega ne more neposredno dotakniti; backend, ki posluša na usmerljivem naslovu, lahko prejme zahteve, ki nikoli niso šle skozi posrednik.

Funnel spremeni občinstvo v odprti internet

Funnel objavi izbrano storitev vsakomur, ki ima URL, in obiskovalci ne potrebujejo odjemalca, računa ali članstva v vašem tailnetu. Vir zato potrebuje overjanje, omejevanje hitrosti in popravke, ki bi jih uporabili pri vsaki javni storitvi. Javne zahteve ne nosijo glav identitete tailneta od Serve, zato aplikacija, ki se je nanje zanašala, pod Funnelom nima nobene uporabniške identitete. Izbira drugega ukaza za objavo ne odgovori na vprašanje overjanja namesto vas.

Funnel ima tudi omejitve, ki jih vadnica iz starejše različice morda ne omenja. Zaključi TLS s potrdilom, ki ga Tailscale pridobi za ime, in podpira le določena vrata za poslušanje, kot opisuje dokumentacija Funnel. Če vaša storitev na enih od teh vrat pričakuje protokol, ki ni HTTPS, je Funnel napačno orodje in ne uganka s konfiguracijo.

Način preberite pri odjemalcu, ne pri vratih

Preden kar koli delite, preverite trenutno stanje, ker je mogoče oba načina konfigurirati za ista lokalna vrata ob različnih časih. Statusni ukazi poročajo, kaj je dejansko objavljeno in za koga. Občinstva ne sklepajte iz dejstva, da se URL odziva.

tailscale serve status
tailscale funnel status
tailscale status --json | head -40

Skladnja ukazov se je med različicami odjemalca spremenila, zato lahko kopiran klic izbere drugačen način od želenega. Prednost dajte dokumentirani obliki za različico, ki jo izvajate, in preberite potrditev, ki jo izpiše odjemalec, namesto da bi jo predpostavljali. Če obstajata konfiguracija Serve in Funnel, je za izpostavljenost pomembna javna. Ponastavite konfiguracijo, ki je niste nameravali, namesto da bi čeznjo polagali še eno.

Ustavite se in znova preberite stanje, če izhod ne poimenuje občinstva. Objavljen URL brez navedenega občinstva je ugibanje, ugibanja pa so pot, po kateri notranje nadzorne plošče končajo na odprtem internetu.

Preizkusite z občinstvom, ki ste ga res nameravali

Preizkusite od zunaj tailneta, ne s stroja, ki je storitev objavil. Zahteva z naprave v tailnetu dokazuje, da posrednik deluje; ne dokazuje, da je tujec izključen. Uporabite omrežje brez odjemalca Tailscale in brez poti v tailnet.

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

Za notranjo nadzorno ploščo bi zunanja zahteva morala spodleteti pri povezavi ali spodleteti pri avtorizaciji, notranja zahteva pa bi morala uspeti z identiteto, ki jo pričakujete. Za javno storitev bi zunanja zahteva morala uspeti in aplikacija bi morala zahtevati svoje poverilnice. Zabeležite, kateri od teh dveh izidov ste opazili, ker samo URL tega ne pove. Če je izid nasproten nameri, najprej odstranite javno konfiguracijo in nato raziščite.

Objava storitve tudi ni ista odločitev kot izbira izhodnega vozlišča, ki nadzoruje, od kod zapusti vaš odhodni promet. Serve in Funnel odgovarjata, kdo lahko doseže nekaj, kar izvajate; izhodno vozlišče odgovarja, od kod naj bi prihajale vaše lastne povezave. Dve vprašanji držite ločeno in primerjava ostane preprosta.

Sorodni članki