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

Երթուղին կա, բայց ոչինչ դուրս չի գալիս

Նախ ստուգեք հաճախորդի երթուղիների աղյուսակը։ default via 10.147.20.5 dev zt0-ի նման տողը ապացուցում է, որ երթուղին տեղադրվել է, ոչ թե այն, որ նպատակակետը կընդունի երթևեկությունը։ Հաջորդ թռիչքը պետք է լինի անդամ, որը պատրաստ է և ընդունակ այն փոխանցելու։

Եթե նույն հարցումը դեռ դուրս է գալիս ֆիզիկական միջերեսով, ապա հաճախորդը չի տեղադրել երթուղին, կամ տեղադրել է այն չափիչով, որը պարտվել է տեղական լռելյայնին։ Եթե երթուղին տեղադրելուց հետո հարցումը անհետանում է, ելքի անդամը ստանում է փաթեթներ և չի կարողանում դրանք փոխանցել կամ թարգմանել։ Հաճախորդը, որը պահում է ֆիզիկական լռելյայնը, ընդհանրապես փաթեթ չի ուղարկում ելքին։

Այդ տարբերությունը որոշում է, թե որտեղ աշխատել։ Հանրային հասցեն փոփոխությունից առաջ և հետո համեմատելը տարանջատում է երբեք չօգտագործված երթուղին օգտագործված և դեն նետվածից, և պահանջում է մեկ հրաման՝ ամբողջ կարգավորումը վերանայելու փոխարեն։ Կատարեք համեմատությունը նախքան որևէ այլ բան փոխելը, որպեսզի երկու արդյունքներն էլ գան նույն սկզբնական վիճակից։

Երեք մասեր, որոնք բոլորը պետք է ճշմարիտ լինեն

Ելքը շղթա է, և ամենաթույլ օղակը սահմանում է ախտանիշը։ Ստորև բերված աղյուսակը թվարկում է օղակները այն հերթականությամբ, որով դրանք սովորաբար ձախողվում են։

PartWhere it livesWhat a failure looks like
Forwarding and NATExit node kernel and firewallTraffic arrives, no reply
Managed default routeZeroTier network controllerNo default via the tunnel on the member
Client acceptanceMember's per-network settingRoute offered but not installed
DNS behaviorClient resolver configurationPages fail by name, IP works

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

Կարգավարի տողը թույլտվություն է, ոչ կարգավորում։ 0.0.0.0/0-ը անդամի միջոցով հայտարարելը յուրաքանչյուր հաճախորդի ասում է, թե որտեղ է ելքը. դա այդ անդամին ընդունակ չի դարձնում կրելու երթևեկությունը։ Այն նաև չի ստուգում, որ անդամն ունի ինտերնետ աշխատող ուղի։ ZeroTier-ի ելքի հանգույցի փաստաթղթերը նույն տարանջատումն են լուսաբանում հանգույցի, երթուղու և հաճախորդի միջև։

Կարգավորեք ելքի հանգույցը փոխանցելու և թարգմանելու համար

Մշտապես միացրեք IPv4-ի փոխանցումը, ապա ավելացրեք աղբյուրի NAT WAN-ի միջերեսը լքող երթևեկության համար։ Զտիչ կանոնները պետք է թույլ տան փոխանցված հոսքը երկու ուղղություններով, քանի որ փոխանցումը և թարգմանումը տարանջատված են թույլտվությունից.

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o zt0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Փոխարինեք zt0-ը և eth0-ը հոսթի անուններով. օրինակի միջերեսի համար պահված կանոնը չի հետևում փաթեթներին իրականի վրա։ Դարձրեք փոփոխությունները մշտական այն firewall-կառավարչի միջոցով, որը տիրապետում է կանոններին, քանի որ ինտերակտիվ shell-ում տրված հրամանը անհետանում է հաջորդ վերագործարկման ժամանակ։

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

Հայտարարեք երթուղին և ընդունեք այն հաճախորդի վրա

Ցանցի կարգավարում ավելացրեք կառավարվող երթուղի 0.0.0.0/0-ի համար, որի հաջորդ թռիչքը ելքի անդամի ZeroTier-ի հասցեն է։ Այնուհետև այն անդամի վրա, որը պետք է օգտագործի այն, թույլատրեք վերագրանցումը այդ ցանցի համար։ Թույլտվությունը տեղական է. այն չի վերակարգավորում այլ անդամների և չի փոխում կարգավարը։

zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1

Վերջին հրամանը պետք է հաղորդի ZeroTier-ի միջերեսը և ելքի անդամի հասցեն։ Եթե այն դեռ հաղորդում է ֆիզիկական միջերեսը, երթուղին բացակայում է, կամ մրցակից լռելյայնն ավելի լավ չափիչ ունի։

Պահեք կարգավորումը սահմանափակված այն ցանցով, որին այն պետք է։ Լռելյայն երթուղու ընդունումը համաշխարհային մակարդակով միացնելը, կամ ցանցում, որը պետք է տրամադրի միայն մասնավոր ենթացանց, երթևեկությունն ուղարկում է ելքով, որը երբեք դրա համար չափված չի եղել։

Ստուգեք ելքը և դիտեք հասցեների մյուս ընտանիքները

Հանրային հասցե խնդրեք ծառայությունից, որը հաղորդում է աղբյուրը, և համեմատեք այն ելքի հանգույցի WAN-ի հասցեի հետ։ Այնուհետև բեռնեք անունով կայք՝ հաստատելու, որ DNS-ը դեռ լուծում է, և փորձարկեք մեկ կարևոր հավելված, ոչ միայն դիտարկիչ։

Կրկնակի կույտով հաճախորդը կարող է շարունակել օգտագործել իր բնիկ IPv6-ի ուղին, մինչ IPv4-ը դուրս է գալիս ZeroTier-ով։ Եթե նպատակը ամբողջ երթևեկությունը թաքցնելն է կամ կառավարելը, ապա անհրաժեշտ են առանձին ::/0 երթուղի և IPv6-ի փոխանցում ելքի վրա, և IPv4-ի փորձարկումը դրանց մասին ոչինչ չի ասում։

Linux-ի հակադարձ ուղու զտումը կարող է նաև վավեր ելքի երթևեկություն գցել հաճախորդի վրա։ ZeroTier-ը փաստագրում է rp_filter-ի նկատառում մասնակից անդամների համար. փոխեք այդ կարգավորումը դիտավորյալ և միայն երթուղու և NAT-ի հաստատումից հետո, ոչ որպես առաջին փորձ։

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

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