रुट तालिकाले 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 फर्वार्डिङ स्थायी रूपमा सक्षम गर्नुहोस्, त्यसपछि 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 ACCEPT

zt0 र 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 वा एउटा अफिस सबनेटमा पहुँच हो भने, त्यो प्रिफिक्सका लागि व्यवस्थित रुट पूर्ण एक्जिटभन्दा सानो र सुरक्षित परिवर्तन हो। सबै ब्राउजिङ अर्को उपकरणबाट पठाउनु एउटा निजी स्रोतमा पुग्नुभन्दा फरक निर्णय हो, र यो अलग समीक्षाको योग्य छ।

सम्बन्धित लेखहरू