Hər iki əmr yerli xidməti Tailscale HTTPS adı vasitəsilə yayımlayır və onları işə salan maşından demək olar ki, eyni görünürlər. Fərq sonradan URL-ə kimin çata bilməsidir və bu fərq tətbiqinizin hələ hansı nəzarətlərə ehtiyacı olduğunu müəyyən edir. Serve auditoriyanı tailnet daxilində saxlayır, Funnel onu açıq internetə köçürür. Əvvəlcə auditoriyanı seçin, sonra ona uyğun əmri seçin.

Serve tailnet daxilində bir suala cavab verir

Serve yerli portu proksiləşdirir və ya yerli məzmunu tailnet-dəki cihazlara təqdim edir və tailnet-in giriş qaydaları hər sorğuya tətbiq olunmağa davam edir. 3000 portundakı idarə paneli yalnız cihazlarınızın həll edə və qoşula biləcəyi HTTPS adı ilə əlçatan olur. Bu, daxili alətlər üçün düzgün standartdır, çünki auditoriya artıq tailnet tərəfindən identifikasiya olunub və siz açıq səth əlavə etmirsiniz. URL adi vebsayt kimi görünür və insanların onu elə saymasının səbəbi də məhz budur.

Serve həmçinin ötürdüyü sorğulara tailnet istifadəçisini təsvir edən identifikasiya başlıqları əlavə edə bilər. Tətbiqiniz bu başlıqlara autentifikasiya kimi güvənirsə, backend-i localhost-a bağlayın ki, başqa heç nə ona birbaşa çata bilməsin, marşrutlaşdırıla bilən ünvanda dinləyən backend heç vaxt proksidən keçməmiş sorğular ala bilər.

Funnel auditoriyanı açıq internetə dəyişir

Funnel seçilmiş xidməti URL-ə sahib olan hər kəsə yayımlayır və ziyarətçilərə müştəri, hesab və ya tailnet üzvlüyü lazım deyil. Buna görə resurs hər hansı açıq xidmətə tətbiq edəcəyiniz autentifikasiya, sorğu məhdudlaşdırması və yeniləmələrə ehtiyac duyur. Açıq sorğular Serve-in tailnet identifikasiya başlıqlarını daşımır, ona görə onlara güvənən tətbiqin Funnel altında heç bir istifadəçi identifikasiyası yoxdur. Fərqli bir yayım əmri seçmək autentifikasiya sualına sizin əvəzinizə cavab vermir.

Funnel-in köhnə buraxılışdan olan təlimatın qeyd etməyə biləcəyi məhdudiyyətləri də var. O, TLS-i Tailscale-in ad üçün aldığı sertifikatla sonlandırır və yalnız müəyyən dinləmə portlarını dəstəkləyir, bunu Funnel sənədləri təsvir edir. Xidmətiniz həmin portlardan birində HTTPS-dən başqa protokol gözləyirsə, Funnel konfiqurasiya tapmacası deyil, yanlış alətdir.

Rejimi portdan deyil, müştəridən oxuyun

Bir şey paylaşmazdan əvvəl cari vəziyyəti yoxlayın, çünki iki rejim eyni yerli port üçün müxtəlif vaxtlarda konfiqurasiya edilə bilər. Status əmrləri həqiqətən nəyin və kimə yayımlandığını bildirir. Auditoriyanı URL-in cavab verməsi faktından çıxarmayın.

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

Əmr sintaksisi müştəri versiyaları arasında dəyişib, ona görə kopyalanmış çağırış nəzərdə tutduğunuzdan fərqli rejim seçə bilər. İşlətdiyiniz versiya üçün sənədləşdirilmiş formaya üstünlük verin və fərziyyə etmək əvəzinə müştərinin çap etdiyi təsdiqi oxuyun. Həm Serve, həm də Funnel konfiqurasiyası varsa, məruz qalma baxımından əhəmiyyətli olan açıq olandır. Nəzərdə tutmadığınız konfiqurasiyanı üstünə başqasını qoymaq əvəzinə sıfırlayın.

Çıxış auditoriyanı adlandırmırsa dayanın və statusu yenidən oxuyun. Auditoriyası göstərilməyən yayımlanmış URL bir təxmindir və təxminlər daxili idarə panellərinin açıq internetə düşmə üsuludur.

Həqiqətən nəzərdə tutduğunuz auditoriya ilə sınaqdan keçirin

Tailnet-dən kənardan sınaqdan keçirin, xidməti yayımlayan maşından deyil. Tailnet cihazından gələn sorğu proksinin işlədiyini sübut edir, kənar şəxsin kənarda qaldığını sübut etmir. Tailscale müştərisi və tailnet-ə marşrutu olmayan şəbəkədən istifadə edin.

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

Daxili idarə paneli üçün xarici sorğu qoşulmada və ya avtorizasiyada uğursuz olmalı, daxili sorğu isə gözlədiyiniz identifikasiya ilə uğurlu olmalıdır. Açıq xidmət üçün xarici sorğu uğurlu olmalı və tətbiq öz etimad məlumatlarını tələb etməlidir. Bu iki nəticədən hansını müşahidə etdiyinizi qeyd edin, çünki yalnız URL bunu demir. Nəticə niyyətin əksi olarsa, əvvəlcə açıq konfiqurasiyanı silin, sonra araşdırın.

Xidmət yayımlamaq, gedən trafikinizin haradan çıxdığını idarə edən çıxış qovşağını seçmək qərarı ilə eyni deyil. Serve və Funnel işlətdiyiniz bir şeyə kimin çata biləcəyini cavablandırır, çıxış qovşağı isə öz bağlantılarınızın haradan gəldiyi görünəcəyini cavablandırır. İki sualı ayrı saxlayın və müqayisə sadə qalır.

Əlaqəli məqalələr