ZeroTier एक्झिट नोड काम करत नाही? रूट, NAT आणि क्लायंट तपासा
क्लायंटमधील 0.0.0.0/0 रूट म्हणजे एक्झिट नाही. नोडने पुढे पाठवले पाहिजे आणि अनुवादित केले पाहिजे, नेटवर्कने रूट जाहीर केला पाहिजे, आणि क्लायंटने तो स्वीकारला पाहिजे.
रूट तक्ता ZeroTier इंटरफेसद्वारे डीफॉल्ट रूट दाखवतो, नेटवर्क ऑनलाइन असल्याचे सांगते, आणि ब्राउझर अजूनही स्थानिक ISP पत्त्यावरून बाहेर जातो. हे संयोजन सामान्य आहे आणि ही क्लायंटची चूक नाही. डीफॉल्ट रूट फक्त पॅकेट कुठे जावेत हे सांगतो; दुसऱ्या टोकाला कुणीतरी ते पुढे पाठवले पाहिजे आणि अनुवादित केले पाहिजे. एक्झिट नोड काम करण्यापूर्वी तीन स्वतंत्र भाग बरोबर असले पाहिजेत.
रूट आहे पण काहीच बाहेर जात नाही
आधी क्लायंटचा रूट तक्ता तपासा. default via 10.147.20.5 dev zt0 सारखी ओळ रूट इंस्टॉल झाला हे सिद्ध करते, गंतव्य ट्रॅफिक स्वीकारेल हे नाही. पुढील हॉप तो पुढे पाठवण्यास तयार आणि सक्षम असलेला सदस्य असला पाहिजे.
जर तीच विनंती अजूनही भौतिक इंटरफेसवरून बाहेर जात असेल, तर क्लायंटने रूट इंस्टॉल केला नाही, किंवा स्थानिक डीफॉल्टकडून हरलेल्या मेट्रिकसह इंस्टॉल केला. रूट इंस्टॉल झाल्यानंतर विनंती गायब झाल्यास, एक्झिट सदस्य पॅकेट घेत आहे आणि ते पुढे पाठवण्यात किंवा अनुवादित करण्यात अपयशी ठरत आहे. भौतिक डीफॉल्ट ठेवणारा क्लायंट एक्झिटला एकही पॅकेट पाठवत नाही.
हा फरक कुठे काम करायचे हे ठरवतो. बदलापूर्वी आणि नंतर सार्वजनिक पत्त्याची तुलना केल्यास कधीही न वापरलेला रूट वापरून टाकून दिलेल्या रूटपासून वेगळा होतो, आणि संपूर्ण कॉन्फिगरेशनच्या पुनरावलोकनाऐवजी एकच आदेश लागतो. दुसरे काही बदलण्यापूर्वी तुलना करा, जेणेकरून दोन्ही निकाल एकाच सुरुवातीच्या स्थितीतून येतील.
तीन भाग जे सर्व बरोबर असले पाहिजेत
एक्झिट ही साखळी आहे, आणि सर्वात कमकुवत दुवा लक्षण ठरवतो. खालील तक्ता दुवे सामान्यतः अपयशी होणाऱ्या क्रमाने देतो.
| 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 |
पहिली ओळ ती आहे जी पर्यायाचे नाव लपवते. सदस्य तेव्हाच एक्झिट होतो जेव्हा त्याचे कर्नेल ZeroTier इंटरफेस आणि इंटरनेटकडे असलेल्या इंटरफेस दरम्यान पॅकेट पुढे पाठवते, आणि जेव्हा प्रतिसादाचा मार्ग बोगद्यात परत अनुवादित होतो. त्या फॉरवर्डिंगशिवाय सदस्य सहकारी आहे, गेटवे नाही.
कंट्रोलरची ओळ अधिकृती आहे, कॉन्फिगरेशन नाही. सदस्याद्वारे 0.0.0.0/0 ची जाहिरात प्रत्येक क्लायंटला एक्झिट कुठे आहे ते सांगते; त्यामुळे तो सदस्य ट्रॅफिक वाहून नेण्यास सक्षम होत नाही. सदस्याला इंटरनेटपर्यंत कार्यरत मार्ग आहे का हेही ते तपासत नाही. ZeroTierचे एक्झिट नोड दस्तऐवज नोड, रूट आणि क्लायंटमधील तोच विभाजन समाविष्ट करते.
एक्झिट नोड पुढे पाठवणे आणि अनुवाद करण्यासाठी सेट करा
IPv4 फॉरवर्डिंग कायमस्वरूपी सक्षम करा, नंतर WAN इंटरफेस सोडणाऱ्या ट्रॅफिकसाठी स्रोत NAT जोडा. फिल्टर नियमांनी फॉरवर्ड केलेला प्रवाह दोन्ही दिशांनी परवानगी दिली पाहिजे, कारण फॉरवर्डिंग आणि अनुवाद परवानगीपासून वेगळे आहेत:
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 आणि eth0 च्या जागी होस्टवरील नावे ठेवा; उदाहरण इंटरफेससाठी जतन केलेला नियम खऱ्या इंटरफेसवर पॅकेटचा मागोवा घेत नाही. नियमांचे मालक असलेल्या फायरवॉल व्यवस्थापकाद्वारे बदल कायमस्वरूपी करा, कारण परस्परसंवादी शेलमधील आदेश पुढील रीबूटमध्ये नाहीसा होतो.
होस्ट 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 अजूनही सोडवतो याची खात्री करा, आणि फक्त ब्राउझर नाही तर एक महत्त्वाचे अनुप्रयोग तपासा.
दुहेरी स्टॅकचा क्लायंट IPv4 ZeroTierमधून बाहेर जात असताना आपला मूळ IPv6 मार्ग वापरत राहू शकतो. ध्येय सर्व ट्रॅफिक लपवणे किंवा नियंत्रित करणे असेल, तर स्वतंत्र ::/0 रूट आणि एक्झिटवर IPv6 फॉरवर्डिंग आवश्यक आहे, आणि IPv4 चाचणी त्यांच्याबद्दल काहीच सांगत नाही.
Linuxचे उलट-मार्ग फिल्टरिंग क्लायंटवर वैध एक्झिट ट्रॅफिकही टाकून देऊ शकते. ZeroTier सहभागी सदस्यांसाठी rp_filter विचार नोंदवते; ते सेटिंग जाणीवपूर्वक आणि रूट व NAT निश्चित झाल्यानंतरच बदला, पहिला प्रयोग म्हणून नाही.
गरज NAS किंवा एका ऑफिस सबनेटपर्यंत पोहोचणे असेल, तर त्या प्रीफिक्ससाठी व्यवस्थापित रूट पूर्ण एक्झिटपेक्षा लहान आणि सुरक्षित बदल आहे. सर्व ब्राउझिंग दुसऱ्या उपकरणातून पाठवणे एका खाजगी संसाधनापर्यंत पोहोचण्यापेक्षा वेगळा निर्णय आहे, आणि तो स्वतंत्र पुनरावलोकनास पात्र आहे.