Molemmat komennot julkaisevat paikallisen palvelun Tailscalen HTTPS-nimen kautta, ja niitä ajavalta koneelta ne näyttävät lähes identtisiltä. Ero on siinä, kuka voi myöhemmin tavoittaa URL:n, ja tämä ero ratkaisee, mitä kontrolleja sovelluksesi vielä tarvitsee. Serve pitää yleisön tailnetin sisällä, Funnel siirtää sen avoimeen internetiin. Valitse ensin yleisö ja sitten komento, joka sopii siihen.

Serve vastaa kysymykseen tailnetisi sisällä

Serve välittää paikallista porttia tai tarjoaa paikallista sisältöä tailnetisi laitteille, ja tailnetin käyttösäännöt pätevät edelleen jokaiseen pyyntöön. Portin 3000 kojelauta tulee saataville HTTPS-nimellä, jonka vain laitteesi voivat selvittää ja johon ne voivat yhdistää. Tämä on oikea oletus sisäisille työkaluille, koska yleisö on jo tailnetin todentama etkä lisää julkista pintaa. URL näyttää tavalliselta verkkosivustolta, ja juuri siksi ihmiset pitävät sitä sellaisena.

Serve voi myös liittää välittämiinsä pyyntöihin identiteettiotakirjat, jotka kuvaavat tailnetin käyttäjää. Jos sovelluksesi luottaa näihin otakirjoihin todentamisena, sido taustapalvelu localhostiin, jotta mikään muu ei pääse siihen suoraan; reititettävällä osoitteella kuunteleva taustapalvelu voi vastaanottaa pyyntöjä, jotka eivät ole koskaan kulkeneet välityspalvelimen kautta.

Funnel muuttaa yleisön avoimeksi internetiksi

Funnel julkaisee valitun palvelun kaikille, joilla on URL, eivätkä vierailijat tarvitse asiakasta, tiliä tai jäsenyyttä tailnetissäsi. Resurssi tarvitsee siksi todentamisen, nopeuden rajoittamisen ja korjaukset, jotka kohdistaisit mihin tahansa julkiseen palveluun. Julkiset pyynnöt eivät kanna Serven tailnet-identiteettiotakirjoja, joten sovelluksella, joka luotti niihin, ei ole Funnelissa lainkaan käyttäjäidentiteettiä. Toisen julkaisukomennon valitseminen ei vastaa todentamiskysymykseen puolestasi.

Funnelissa on myös rajoituksia, joita vanhemman julkaisun opas ei välttämättä mainitse. Se päättää TLS:n varmenteella, jonka Tailscale hankkii nimelle, ja tukee vain tiettyjä kuunteluportteja, kuten Funnelin dokumentaatio kuvaa. Jos palvelusi odottaa jotain muuta protokollaa kuin HTTPS yhdellä näistä porteista, Funnel on väärä työkalu eikä konfiguraatioarvoitus.

Lue tila asiakkaasta, älä portista

Tarkista nykytila ennen kuin jaat mitään, koska molemmat tilat voidaan määrittää samalle paikalliselle portille eri aikoina. Tilakomennot kertovat, mitä on todella julkaistu ja kenelle. Älä päättele yleisöä siitä, että URL vastaa.

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

Komentojen syntaksi on muuttunut asiakasversioiden välillä, joten kopioitu kutsu voi valita eri tilan kuin tarkoitit. Suosi dokumentoitua muotoa käyttämällesi versiolle ja lue asiakkaan tulostama vahvistus sen sijaan, että olettaisit sen. Jos sekä Serve- että Funnel-konfiguraatio on olemassa, julkinen on se, jolla on merkitystä altistumiselle. Palauta konfiguraatio, jota et tarkoittanut, sen sijaan että lisäisit toisen sen päälle.

Pysähdy ja lue tila uudelleen, jos tuloste ei nimeä yleisöä. Julkaistu URL ilman ilmoitettua yleisöä on arvaus, ja arvaukset ovat se tapa, jolla sisäiset kojelaudat päätyvät avoimeen internetiin.

Testaa yleisöllä, jota todella tarkoitit

Testaa tailnetin ulkopuolelta, älä koneelta, joka julkaisi palvelun. Pyyntö tailnet-laitteesta todistaa, että välityspalvelin toimii; se ei todista, että ulkopuolinen on suljettu pois. Käytä verkkoa, jossa ei ole Tailscale-asiakasta eikä reittiä tailnetiin.

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

Sisäisen kojelaudan kohdalla ulkoisen pyynnön pitäisi epäonnistua yhteydessä tai valtuutuksessa, ja sisäisen pyynnön pitäisi onnistua odottamallasi identiteetillä. Julkisen palvelun kohdalla ulkoisen pyynnön pitäisi onnistua ja sovelluksen pitäisi pyytää omat tunnuksensa. Kirjaa, kumpi näistä kahdesta tuloksesta havaitsit, koska pelkkä URL ei kerro sitä. Jos tulos on tarkoituksen vastainen, poista ensin julkinen konfiguraatio ja tutki sitten.

Palvelun julkaiseminen ei myöskään ole sama päätös kuin poistumissolmun valinta, joka ohjaa sitä, mistä lähtevä liikenteesi poistuu. Serve ja Funnel vastaavat siihen, kuka voi tavoittaa jotain, mitä ajat; poistumissolmu vastaa siihen, mistä omat yhteytesi näyttävät tulevan. Pidä kaksi kysymystä erillään, niin vertailu pysyy yksinkertaisena.

Aiheeseen liittyvät artikkelit