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 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 હજી ઉકેલે છે, અને ફક્ત બ્રાઉઝર નહીં પણ એક મહત્ત્વની એપ્લિકેશન ચકાસો.
ડ્યુઅલ-સ્ટેક ક્લાયન્ટ પોતાનો મૂળ IPv6 માર્ગ વાપરવાનું ચાલુ રાખી શકે છે જ્યારે IPv4 ZeroTier દ્વારા બહાર જાય છે. જો ધ્યેય બધો ટ્રાફિક છુપાવવો કે નિયંત્રિત કરવો હોય, તો અલગ ::/0 રૂટ અને એક્ઝિટ પર IPv6 ફોરવર્ડિંગ જરૂરી છે, અને IPv4 પરીક્ષણ તેમના વિશે કંઈ કહેતું નથી.
Linuxનું રિવર્સ-પાથ ફિલ્ટરિંગ પણ ક્લાયન્ટ પર માન્ય એક્ઝિટ ટ્રાફિક કાઢી શકે છે. ZeroTier ભાગ લેતા સભ્યો માટે rp_filter વિચારણા દસ્તાવેજ કરે છે; એ સેટિંગ જાણી જોઈને અને ફક્ત રૂટ અને NAT ની ખાતરી પછી બદલો, પ્રથમ પ્રયોગ તરીકે નહીં.
જો જરૂરિયાત NAS કે એક ઓફિસ સબનેટ સુધીની પહોંચ હોય, તો એ પ્રીફિક્સ માટે મેનેજ્ડ રૂટ સંપૂર્ણ એક્ઝિટ કરતાં નાનો અને સુરક્ષિત ફેરફાર છે. બધું બ્રાઉઝિંગ બીજા ઉપકરણ દ્વારા મોકલવું એ એક ખાનગી સંસાધન સુધી પહોંચવાથી અલગ નિર્ણય છે, અને તે અલગ સમીક્ષાને પાત્ર છે.