ZeroTier chiqish tuguni ishlamayapti? Marshrut, NAT va mijozni tekshiring
Mijozdagi 0.0.0.0/0 marshrut hali chiqish emas. Tugun yo'naltirishi va tarjima qilishi, tarmoq marshrutni e'lon qilishi, mijoz esa uni qabul qilishi kerak.
Marshrutlar jadvali ZeroTier interfeysi orqali standart marshrutni ko'rsatadi, tarmoq onlayn deb xabar beradi, ammo brauzer baribir mahalliy ISP manzilidan chiqadi. Bu birikma keng tarqalgan va bu mijoz xatosi emas. Standart marshrut faqat paketlar qayerga borishini aytadi; boshqa uchda ularni yo'naltiruvchi va tarjima qiluvchi narsa bo'lishi kerak. Chiqish tuguni ishlashi uchun uchta alohida qism to'g'ri bo'lishi kerak.
Marshrut bor, lekin hech narsa chiqmaydi
Avval mijozning marshrutlar jadvalini tekshiring. default via 10.147.20.5 dev zt0 kabi satr marshrut o'rnatilganini isbotlaydi, manzil trafikni qabul qilishini emas. Keyingi sakrash uni yo'naltirishga tayyor va qodir a'zo bo'lishi kerak.
Agar xuddi shu so'rov baribir jismoniy interfeys orqali chiqsa, mijoz marshrutni o'rnatmagan yoki mahalliy standartdan yutqazgan metrika bilan o'rnatgan. Marshrut o'rnatilgandan keyin so'rov yo'qolsa, chiqish a'zosi paketlarni qabul qilmoqda, lekin ularni yo'naltira yoki tarjima qila olmayapti. Jismoniy standartni saqlaydigan mijoz chiqishga umuman paket yubormaydi.
Bu farq qayerda ishlash kerakligini belgilaydi. O'zgarishdan oldin va keyin ommaviy manzilni taqqoslash hech qachon ishlatilmagan marshrutni ishlatilib tashlab yuborilganidan ajratadi va butun konfiguratsiyani ko'zdan kechirish o'rniga bitta buyruq talab qiladi. Boshqa narsani o'zgartirishdan oldin taqqoslashni bajaring, ikkala natija ham bir xil boshlang'ich holatdan kelsin.
Barchasi to'g'ri bo'lishi kerak bo'lgan uch qism
Chiqish zanjirdir va eng zaif bo'g'in simptomni belgilaydi. Quyidagi jadval bo'g'inlarni odatda muvaffaqiyatsiz bo'ladigan tartibda sanaydi.
| Part | Where it lives | What a failure looks like |
|---|---|---|
| Forwarding and NAT | Exit node kernel and firewall | Traffic arrives, no reply |
| Managed default route | ZeroTier network controller | No default via the tunnel on the member |
| Client acceptance | Member's per-network setting | Route offered but not installed |
| DNS behavior | Client resolver configuration | Pages fail by name, IP works |
Birinchi satr — variant nomi yashirgan qism. A'zo faqat yadrosi ZeroTier interfeysi bilan internetga qaragan interfeys orasida paketlarni yo'naltirganda va javob yo'li tunnelga qaytarib tarjima qilinganda chiqishga aylanadi. Bunday yo'naltirishsiz a'zo sherik, darvoza emas.
Kontroller satri ruxsat, konfiguratsiya emas. 0.0.0.0/0 ni a'zo orqali e'lon qilish har bir mijozga chiqish qayerdaligini aytadi; bu a'zoni trafikni ko'tarishga qodir qilmaydi. A'zoning internetga ishlaydigan yo'li borligini ham tekshirmaydi. ZeroTierning chiqish tuguni hujjati tugun, marshrut va mijoz orasidagi xuddi shu bo'linishni qamrab oladi.
Chiqish tugunini yo'naltirish va tarjimaga sozlang
IPv4 yo'naltirishni doimiy yoqing, so'ng WAN interfeysidan chiqadigan trafik uchun manba NAT qo'shing. Filtr qoidalari yo'naltirilgan oqimga ikki yo'nalishda ruxsat berishi kerak, chunki yo'naltirish va tarjima ruxsatdan alohida:
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 ACCEPTzt0 va eth0 ni xostdagi nomlar bilan almashtiring; namuna interfeys uchun saqlangan qoida haqiqiy interfeysda paketlarni kuzatmaydi. O'zgarishlarni qoidalarga egalik qiluvchi firewall menejeri orqali doimiy qiling, chunki interaktiv qobiqdagi buyruq keyingi qayta yuklashda yo'qoladi.
Agar xost UFW yoki firewalld kabi firewall menejerini ishga tushirsa, iptables satrlarini yoniga uyib qo'yish o'rniga qoidalarni o'sha menejer orqali qo'shing. Bir xil zanjirlarni tahrirlayotgan ikki egasi yuklanish tartibiga bog'liq siyosat yaratadi. Menejer o'z zanjirlarini yaratganda tartib muhim. Menejerni qayta yuklagandan keyin mijozdan sinab ko'ring, oldin emas.
Marshrutni e'lon qiling va mijozda qabul qiling
Tarmoq kontrollerida 0.0.0.0/0 uchun boshqariladigan marshrut qo'shing, uning keyingi sakrashi chiqish a'zosining ZeroTier manzili bo'lsin. So'ngra undan foydalanishi kerak bo'lgan a'zoda o'sha tarmoq uchun qayta yozishga ruxsat bering. Ruxsat mahalliy: u boshqa a'zolarni qayta sozlamaydi va kontrollerni o'zgartirmaydi.
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1Oxirgi buyruq ZeroTier interfeysi va chiqish a'zosining manzilini xabar qilishi kerak. Agar u hali ham jismoniy interfeysni xabar qilsa, marshrut yo'q yoki raqib standartning metrikasi yaxshiroq.
Sozlamani faqat unga muhtoj tarmoq bilan cheklang. Standart marshrutni qabul qilishni global miqyosda yoki faqat shaxsiy subnet taqdim etishi kerak bo'lgan tarmoqda yoqish trafikni buning uchun hech qachon o'lchanmagan chiqish orqali yuboradi.
Chiqishni tekshiring va boshqa manzil oilalarini ko'ring
Manbani xabar qiluvchi xizmatdan ommaviy manzil so'rang va uni chiqish tugunining WAN manzili bilan taqqoslang. So'ngra DNS hali ham hal qilishini tasdiqlash uchun nomli sayt yuklang va faqat brauzer emas, muhim bir ilovani sinab ko'ring.
Ikki stekli mijoz IPv4 ZeroTier orqali chiqayotganda o'zining tabiiy IPv6 yo'lidan foydalanishda davom etishi mumkin. Maqsad butun trafikni yashirish yoki nazorat qilish bo'lsa, alohida ::/0 marshruti va chiqishda IPv6 yo'naltirishi talab qilinadi, IPv4 sinovi esa ular haqida hech narsa demaydi.
Linuxning teskari yo'l filtri mijozda haqiqiy chiqish trafikini ham tashlab yuborishi mumkin. ZeroTier ishtirok etuvchi a'zolar uchun rp_filter haqida hujjatlashtiradi; bu sozlamani ataylab va faqat marshrut va NAT tasdiqlangandan keyin o'zgartiring, birinchi tajriba sifatida emas.
Talab NAS yoki bitta ofis subnetiga kirish bo'lsa, o'sha prefiks uchun boshqariladigan marshrut to'liq chiqishdan kichikroq va xavfsizroq o'zgarishdir. Butun ko'rishni boshqa qurilma orqali o'tkazish bitta shaxsiy resursga yetishdan boshqacha qaror va u alohida ko'rib chiqishga loyiq.