Երկու հրամաններն էլ տեղական ծառայությունը հրապարակում են Tailscale HTTPS անվան միջոցով, և այն մեքենայից, որտեղ դրանք աշխատում են, դրանք գրեթե նույնական են երևում։ Տարբերությունն այն է, թե ով կարող է հետո հասնել URL-ին, և այդ տարբերությունը որոշում է, թե ձեր հավելվածին դեռ ինչ հսկողություններ են պետք։ Serve-ը լսարանը պահում է tailnet-ի ներսում, իսկ Funnel-ը տեղափոխում է այն բաց ինտերնետ։ Սկզբում ընտրեք լսարանը, ապա՝ դրան համապատասխանող հրամանը։

Serve-ը պատասխանում է հարցի ձեր tailnet-ի ներսում

Serve-ը վստահված միջնորդ է տեղական պորտի համար կամ տեղական բովանդակություն է մատուցում ձեր tailnet-ի սարքերին, և tailnet-ի մուտքի կանոնները դեռ գործում են յուրաքանչյուր հարցման համար։ 3000 պորտի վրա գտնվող վահանակը հասանելի է դառնում HTTPS անվան վրա, որը կարող են լուծել և որին կարող են միանալ միայն ձեր սարքերը։ Սա ճիշտ լռելյայն է ներքին գործիքների համար, որովհետև լսարանն արդեն նույնականացված է tailnet-ի կողմից, և դուք հանրային մակերևույթ չեք ավելացնում։ URL-ը նման է սովորական կայքի, և հենց դրա համար են մարդիկ այն ընդունում որպես այդպիսին։

Serve-ը կարող է նաև ինքնության վերնագրեր, որոնք նկարագրում են tailnet-ի օգտատիրոջը, կցել այն հարցումներին, որոնք փոխանցում է։ Եթե ձեր հավելվածը վստահում է այդ վերնագրերին որպես նույնականացում, կապեք backend-ը localhost-ին, որպեսզի ուրիշ ոչինչ չկարողանա ուղղակիորեն հասնել դրան, քանի որ երթուղվող հասցեով լսող backend-ը կարող է ստանալ հարցումներ, որոնք երբեք չեն անցել վստահված միջնորդով։

Funnel-ը լսարանը դարձնում է բաց ինտերնետ

Funnel-ը ընտրված ծառայությունը հրապարակում է բոլորի համար, ով ունի URL-ը, և այցելուներին պետք չեն հաճախորդը, հաշիվը կամ ձեր tailnet-ի անդամակցությունը։ Ուստի ռեսուրսին պետք են այն նույնականացումը, արագության սահմանափակումը և կարկատանները, որոնք կկիրառեիք ցանկացած հանրային ծառայության վրա։ Հանրային հարցումները չեն կրում Serve-ի tailnet-ի ինքնության վերնագրերը, ուստի այն հավելվածը, որը հենվել էր դրանց վրա, Funnel-ի տակ ընդհանրապես օգտատիրոջ ինքնություն չունի։ Այլ հրապարակման հրաման ընտրելը ձեր փոխարեն չի պատասխանում նույնականացման հարցին։

Funnel-ն ունի նաև սահմանափակումներ, որոնք հին թողարկման ձեռնարկը կարող է չհիշատակել։ Այն ավարտում է TLS-ը անվան համար Tailscale-ի ստացած վկայագրով և աջակցում է միայն որոշակի լսող պորտերի, ինչպես նկարագրում է Funnel-ի փաստաթղթերը։ Եթե ձեր ծառայությունը այդ պորտերից մեկում սպասում է HTTPS-ից տարբեր արձանագրության, Funnel-ը սխալ գործիք է, ոչ թե կարգավորման հանելուկ։

Կարդացեք ռեժիմը հաճախորդից, ոչ թե պորտից

Նախքան ինչ-որ բան կիսելը ստուգեք ընթացիկ վիճակը, քանի որ երկու ռեժիմները կարող են տարբեր ժամանակներում կարգավորվել նույն տեղական պորտի համար։ Վիճակի հրամանները հաղորդում են, թե ինչ է իրականում հրապարակվել և ում համար։ Մի՛ ենթադրեք լսարանը այն փաստից, որ URL-ը պատասխանում է։

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

Հրամանների շարահյուսությունը փոխվել է հաճախորդի տարբերակների միջև, ուստի պատճենված կանչը կարող է ընտրել ձեր նախատեսածից տարբեր ռեժիմ։ Նախընտրեք ձեր գործարկած տարբերակի փաստաթղթավորված ձևը և կարդացեք հաճախորդի տպած հաստատումը՝ ենթադրելու փոխարեն։ Եթե գոյություն ունեն և՛ Serve-ի, և՛ Funnel-ի կարգավորումներ, բացահայտման համար կարևորը հանրայինն է։ Վերակայեք այն կարգավորումը, որը չէիք նախատեսել, փոխարենը դրա վրա ևս մեկը դնելու։

Կանգ առեք և նորից կարդացեք վիճակը, եթե արտածումը չի անվանում լսարանը։ Առանց հայտարարված լսարանի հրապարակված URL-ը ենթադրություն է, և ենթադրություններն են այն ուղին, որով ներքին վահանակները հայտնվում են բաց ինտերնետում։

Փորձարկեք այն լսարանի հետ, որը իրականում նախատեսել էիք

Փորձարկեք tailnet-ից դուրս, ոչ թե այն մեքենայից, որը հրապարակել է ծառայությունը։ Tailnet-ի սարքից եկած հարցումը ապացուցում է, որ վստահված միջնորդն աշխատում է, բայց չի ապացուցում, որ անծանոթը բացառված է։ Օգտագործեք ցանց, որտեղ Tailscale հաճախորդ չկա և 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

Ներքին վահանակի համար արտաքին հարցումը պետք է ձախողվի միանալիս կամ ձախողվի լիազորելիս, իսկ ներքին հարցումը պետք է հաջողվի ձեր սպասած ինքնությամբ։ Հանրային ծառայության համար արտաքին հարցումը պետք է հաջողվի, և հավելվածը պետք է պահանջի իր սեփական հավատարմագրերը։ Գրանցեք, թե այդ երկու արդյունքներից որն եք դիտել, որովհետև միայն URL-ը դա չի ասում։ Եթե արդյունքը հակառակ է մտադրությանը, նախ հեռացրեք հանրային կարգավորումը, ապա հետաքննեք։

Ծառայության հրապարակումը նաև նույն որոշումը չէ, ինչ ելքի հանգույց ընտրելը, որը վերահսկում է, թե որտեղից է դուրս գալիս ձեր ելքային տրաֆիկը։ Serve-ը և Funnel-ը պատասխանում են, թե ով կարող է հասնել ձեր գործարկած ինչ-որ բանին, իսկ ելքի հանգույցը պատասխանում է, թե որտեղից են կարծես գալիս ձեր սեփական կապերը։ Առանձին պահեք երկու հարցերը, և համեմատությունը կմնա պարզ։

Առնչվող հոդվածներ