Tailscale Serve vai Funnel: kurš patiešām var atvērt saiti?
Serve koplieto pakalpojumu ar jūsu tailnet, bet Funnel to atklāj atvērtajā internetā. Salīdziniet auditoriju, identitātes galvenes un portus, ko atļauj Funnel.
Abas komandas publicē vietēju pakalpojumu ar Tailscale HTTPS nosaukumu, un no mašīnas, kas tās izpilda, tās izskatās gandrīz identiski. Atšķirība ir tajā, kas pēc tam var sasniegt URL, un šī atšķirība nosaka, kādas kontroles jūsu lietotnei vēl vajadzīgas. Serve patur auditoriju tailnet iekšpusē, bet Funnel pārvieto to uz atvērto internetu. Vispirms izvēlieties auditoriju un pēc tam komandu, kas tai atbilst.
Serve atbild uz jautājumu jūsu tailnet iekšpusē
Serve starpnieko vietējo portu vai apkalpo vietējo saturu jūsu tailnet ierīcēm, un tailnet piekļuves noteikumi joprojām attiecas uz katru pieprasījumu. Informācijas panelis portā 3000 kļūst pieejams HTTPS nosaukumā, ko var atrisināt un ar ko var savienoties tikai jūsu ierīces. Tas ir pareizais noklusējums iekšējiem rīkiem, jo auditorija jau ir autentificēta tailnet un jūs nepievienojat publisku virsmu. URL izskatās kā parasta vietne, un tieši tāpēc cilvēki to tādu arī uzskata.
Serve var arī pievienot identitātes galvenes, kas apraksta tailnet lietotāju, pārsūtītajiem pieprasījumiem. Ja jūsu lietotne uzticas šīm galvenēm kā autentifikācijai, piesaistiet backend localhost, lai nekas cits nevarētu tam tieši piekļūt; backend, kas klausās maršrutējamā adresē, var saņemt pieprasījumus, kuri nekad nav gājuši caur starpnieku.
Funnel maina auditoriju uz atvērto internetu
Funnel publicē izvēlētu pakalpojumu ikvienam, kam ir URL, un apmeklētājiem nav vajadzīgs klients, konts vai dalība jūsu tailnet. Tāpēc resursam ir vajadzīga autentifikācija, ātruma ierobežošana un ielāpi, ko jūs piemērotu jebkuram publiskam pakalpojumam. Publiskie pieprasījumi nenes Serve tailnet identitātes galvenes, tāpēc lietotnei, kas uz tām paļāvās, zem Funnel vispār nav lietotāja identitātes. Citādas publicēšanas komandas izvēle neatbild uz autentifikācijas jautājumu jūsu vietā.
Funnel ir arī ierobežojumi, ko vecākas versijas apmācība varētu neminēt. Tas pabeidz TLS ar sertifikātu, ko Tailscale iegūst nosaukumam, un atbalsta tikai noteiktus klausīšanās portus, kā apraksta Funnel dokumentācija. Ja jūsu pakalpojums vienā no šiem portiem gaida citu protokolu nekā HTTPS, Funnel ir nepareizais rīks, nevis konfigurācijas mīkla.
Lasiet režīmu no klienta, nevis no porta
Pirms kaut ko kopīgojat, pārbaudiet pašreizējo stāvokli, jo abus režīmus var konfigurēt vienam un tam pašam vietējam portam dažādos laikos. Statusa komandas ziņo, kas patiešām ir publicēts un kam. Neizdariet secinājumus par auditoriju no tā, ka URL atbild.
tailscale serve status
tailscale funnel status
tailscale status --json | head -40
Komandu sintakse ir mainījusies starp klienta versijām, tāpēc nokopēts izsaukums var izvēlēties citu režīmu, nekā bijāt iecerējis. Dodiet priekšroku dokumentētajai formai jūsu izpildītajai versijai un lasiet klienta izdrukāto apstiprinājumu, nevis pieņemiet to. Ja pastāv gan Serve, gan Funnel konfigurācija, atklāšanai svarīga ir publiskā. Atiestatiet konfigurāciju, kuru neesat domājis, nevis lieciet tai virsū vēl vienu.
Apstājieties un pārlasiet statusu, ja izvade nenosauc auditoriju. Publicēts URL bez norādītas auditorijas ir minējums, un minējumi ir tas ceļš, kā iekšējie informācijas paneļi nonāk atvērtajā internetā.
Testējiet ar auditoriju, kuru patiešām bijāt iecerējis
Testējiet no ārpuses tailnet, nevis no mašīnas, kas publicēja pakalpojumu. Pieprasījums no tailnet ierīces pierāda, ka starpnieks strādā, bet nepierāda, ka svešinieks ir izslēgts. Izmantojiet tīklu, kurā nav Tailscale klienta un nav maršruta uz 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
Iekšējam informācijas panelim ārējam pieprasījumam vajadzētu neizdoties savienojumā vai neizdoties autorizācijā, un iekšējam pieprasījumam vajadzētu izdoties ar gaidīto identitāti. Publiskam pakalpojumam ārējam pieprasījumam vajadzētu izdoties, un lietotnei vajadzētu pieprasīt savus akreditācijas datus. Pierakstiet, kuru no šiem diviem rezultātiem novērojāt, jo URL vien to nepasaka. Ja rezultāts ir pretējs nodomam, vispirms noņemiet publisko konfigurāciju un pēc tam izmeklējiet.
Pakalpojuma publicēšana arī nav tas pats lēmums kā izejas mezgla izvēle, kas kontrolē, kur iziet jūsu izejošā plūsma. Serve un Funnel atbild, kas var sasniegt to, ko jūs darbinat; izejas mezgls atbild, no kurienes it kā nāk jūsu paša savienojumi. Turiet abus jautājumus atsevišķi, un salīdzinājums paliek vienkāršs.