ગયા મહિને બે લોકોએ મારી પાસે વિરોધી પરિણામો માંગ્યા: એક ઈચ્છતો હતો કે IPv6 VPN હેઠળ આવે, બીજો ઈચ્છતો હતો કે ઓફિસનું પ્રિન્ટર કામ કરતું રહે. એક જ રૂટ ::/0 બંને એકલાથી આપી શકતો નથી. એ રૂટ ટનલની અંદર આવે છે કે નહીં તે ત્રણ શરતો પર આધાર રાખે છે, અને પહેલી શરત મોટાભાગના વ્યાપારી એક્ઝિટ માટે તેને બાદ કરે છે. જો એક્ઝિટ IPv6 વહન કરતું ન હોય, તો ડિફોલ્ટ રૂટને તેમાં મોકલવાથી તમારો ટ્રાફિક એવી ટનલમાં છુપાય છે જ્યાં તેને મોકલવાની કોઈ જગ્યા નથી.

ત્રણ શરતો જવાબ નક્કી કરે છે

ડિફોલ્ટ રૂટ એક લીટી છે, ::/0, અને તે વધુ ચોક્કસ રૂટ વગરના કોઈપણ IPv6 ગંતવ્ય સાથે મેળ ખાય છે (RFC 4291). તેને સ્થાપિત કરવું સરળ છે. તમારે તે કરવું જોઈએ કે નહીં તે નક્કી કરવું ત્રણ શરતો પર આવે છે.

શરત એક: જે એક્ઝિટ સાથે તમે જોડાઓ છો ત્યાં કામ કરતું IPv6 છે અને તેને આગળ મોકલવા તૈયાર છે. શરત બે: તમારો ક્લાયન્ટ ટનલના એન્ડપોઇન્ટ સુધીનો માર્ગ રાખી શકે છે, જે સામાન્ય રીતે તમે રૂટ કરવા જઈ રહ્યા છો તે શ્રેણીની અંદર હોય છે. શરત ત્રણ: તમે એ સ્થાનિક IPv6 ગંતવ્યોના નામ આપી શકો છો જે ટનલની બહાર રહેવા જોઈએ.

દરેક શરત પોતાની રીતે નિષ્ફળ જાય છે, એટલે અનુમાન કરવું આખી સાંજ ખર્ચે છે. નિષ્ફળ શરત એક તમને મૌન અને સાચું દેખાતું રૂટ ટેબલ આપે છે. નિષ્ફળ શરત બે શરૂ થયાના થોડા સેકન્ડમાં હેન્ડશેક મારી નાખે છે. નિષ્ફળ શરત ત્રણ કામ કરતી ટનલ અને પ્રિન્ટર પાસે અસંતુષ્ટ સહકર્મી છોડી દે છે.

What you seeDecision
Exit answers IPv6 probes, no local IPv6 devices to protectRoute ::/0 into the tunnel
Exit answers IPv6 probes, printer or NAS reachable by a global addressRoute ::/0, then give those prefixes a route of their own
Exit is IPv4-only inside the tunnelDo not route ::/0; block IPv6 on the client
Endpoint is reached over IPv6 and sits inside ::/0Install a host route for the endpoint first

એક્ઝિટ ખરેખર IPv6 વહન કરે છે?

IPv6 સરનામું ધરાવતું ટનલ ઇન્ટરફેસ બીજી બાજુ વિશે કંઈ સાબિત કરતું નથી. ઘણા વ્યાપારી પ્રોફાઇલ અંદરથી માત્ર IPv4 છે: સર્વર તમને v4 સરનામું આપે છે અને બાકીનું બધું કાઢી નાખે છે. તેની ઉપર AllowedIPs તરફથી ડિફોલ્ટ રૂટ મૂકો અને કર્નલ IPv6 ને આનંદથી એવા ઇન્ટરફેસમાં મોકલશે જેનો સાથી તેને કદી જોતો નથી.

ટનલ ચાલુ હોય ત્યારે ક્લાયન્ટ તરફથી પરીક્ષણ કરો. ping -6 -c 3 2001:4860:4860::8888 અને ip -6 route get 2001:4860:4860::8888 જુદા જુદા પ્રશ્નોના જવાબ આપે છે: જવાબ પાછો આવે છે કે નહીં, અને કર્નલે કયું ઉપકરણ પસંદ કર્યું. જ્યારે બીજું તમારી ટનલનું નામ લે અને પહેલું કંઈ પાછું ન આપે, ત્યારે સમસ્યા રૂટમાં નહીં, એક્ઝિટમાં છે.

જો તમે જાતે એક્ઝિટ ચલાવો છો, તો ક્લાયન્ટ પરીક્ષણ પાસ થઈ શકે છે અને માર્ગ તો પણ બંધ રસ્તે પૂરો થઈ શકે છે. ગેટવે પર net.ipv6.conf.all.forwarding=1 છે અને તેનું ફાયરવોલ ટનલમાંથી ફોરવર્ડ થતા પેકેટ સ્વીકારે છે તેની ખાતરી કરો. રિલે કરવાનો ઇનકાર કરતા એક્ઝિટમાં યોગ્ય રીતે રૂટ કરેલું પેકેટ ક્લાયન્ટની બાજુથી બરાબર રૂટિંગ બગ જેવું લાગે છે.

ક્લાયન્ટ એન્ડપોઇન્ટ સુધીનો માર્ગ રાખી શકે છે?

આ એ જ કિસ્સો છે જેણે મને માત્ર IPv6 WireGuard એન્ડપોઇન્ટવાળા લેપટોપ પર પકડ્યો. એન્ડપોઇન્ટનું સરનામું સામાન્ય વૈશ્વિક સરનામું છે, એટલે તે ::/0 ની અંદર આવે છે. આખું પ્રીફિક્સ ઇન્ટરફેસમાં રૂટ કરો અને હેન્ડશેક પેકેટ પોતાને એ ટનલમાં હાંકશે જે તેઓ હજી બનાવવાનો પ્રયાસ કરી રહ્યા છે. ટનલ કદી ઉપર આવતી નથી, અને ક્લાયન્ટના આઉટપુટમાં કંઈ કહેતું નથી કે કેમ.

wg-quick Linux પર આ સંભાળે છે. તે AllowedIPs તરફથી રૂટ મેળવે છે, તેમને પોતાના ટેબલમાં સ્થાપિત કરે છે અને પોલિસી નિયમ ઉમેરે છે જેથી એન્ડપોઇન્ટ તરફનો ટ્રાફિક પહેલા મુખ્ય ટેબલ દ્વારા ઉકેલાય: suppress_prefixlength 0 નિયમ જે તમને ip -6 rule માં મળે છે. તેથી wg-quick up ત્યાં સફળ થાય છે જ્યાં હાથે લખેલો ip -6 route add default dev wg0 તમને કાપી નાખે છે.

ટનલ ઉપર લેતા પહેલા અને પછી, બંને સ્થિતિ ip -6 route get <endpoint-v6> વડે તપાસો. જો જવાબ તમારા ટનલ ઉપકરણ તરફ બદલાય, તો તમે ટનલને જરૂરી માર્ગ દૂર કર્યો છે. જ્યારે તમે રૂટ જાતે લખો, ત્યારે મૂળ ગેટવે દ્વારા એન્ડપોઇન્ટ માટે હોસ્ટ રૂટ ઉમેરો, અથવા IPv4 દ્વારા એન્ડપોઇન્ટ સાથે જોડાઓ અને IPv6 પેલોડ પર છોડી દો.

ટનલની બહાર શું રહેવું જોઈએ?

વધુ ચોક્કસ રૂટ ડિફોલ્ટને હરાવે છે, એટલે લિંક પરનું પ્રીફિક્સ અથવા પોતાના રૂટવાળી ULA શ્રેણી વધારાના પ્રયાસ વગર કામ કરતી રહે છે. એ જ શાંત કારણ છે કે આટલા બધા પૂર્ણ-ટનલ IPv4 સેટઅપ ટકી રહે છે: LAN પ્રીફિક્સ ડિફોલ્ટ કરતાં વધુ ચોક્કસ છે અને કદી ટનલમાં પ્રવેશતા નથી.

તે ત્યારે તૂટે છે જ્યારે સ્થાનિક ઉપકરણ વૈશ્વિક સરનામાથી પહોંચી શકાય તેવું હોય, જે પ્રિન્ટર માટે સામાન્ય છે જેને એ જ રાઉટરે જાહેર પ્રીફિક્સ આપ્યું હોય, NAS અથવા ટેલિવિઝન માટે. એ સરનામાં ::/0 સાથે મેળ ખાય છે અને બીજું કંઈ નહીં, એટલે તેઓ બાકીની બધી વસ્તુ સાથે ટનલમાં જાય છે અને અદૃશ્ય થઈ જાય છે.

ગંતવ્ય પ્રમાણે નક્કી કરો, પ્રોટોકોલ પ્રમાણે નહીં. જો બે કે ત્રણ સ્થાનિક હોસ્ટ મહત્વના હોય, તો તેમના પ્રીફિક્સને ભૌતિક ઇન્ટરફેસ દ્વારા બહાર જવાનો રૂટ આપો, અથવા વાટાઘાટ કરેલા સેટમાંથી કાઢી નાખો. જો યાદી વધતી રહે, તો પ્રામાણિક જવાબ એ છે કે લેખિત અપવાદ-યાદી સાથે IPv6 માટે સ્પ્લિટ ટનલિંગ, તમે સતત પેચ કરો છો તેવો ડિફોલ્ટ નહીં.

જવાબ ના હોય તો તેને બ્લોક કરો

IPv6 ને રૂટ વગર છોડવું એ તેને એકલું છોડવા જેવું નથી. કામ કરતું IPv6 ડિફોલ્ટ ધરાવતું હોસ્ટ ટનલ IPv4 વહન કરે ત્યારે પણ તેનો ઉપયોગ ચાલુ રાખે છે, એટલે ટ્રાફિક VPNની બાજુમાંથી નીકળે છે અને IPv6 ને પ્રાધાન્ય આપતી દરેક સેવા તમારું સાચું સરનામું જુએ છે. તે લીક છે, સ્પ્લિટ ટનલ નથી.

એક પસંદ કરો અને તમે કયું પસંદ કર્યું તે લખો. ડિફોલ્ટ રૂટ કરો અને ઉપરના સમાધાન સ્વીકારો, અથવા ટનલ જેટલું સમય ચાલે ત્યાં સુધી IPv6 બંધ કરો. માત્ર AllowedIPs માંથી પ્રીફિક્સ છોડી દેવું પૂરતું નથી, કારણ કે ઓપરેટિંગ સિસ્ટમ પોતાનું ડિફોલ્ટ રાખે છે. Linux પર સ્થૂળ સંસ્કરણ sysctl -w net.ipv6.conf.all.disable_ipv6=1 છે; વધુ સૂક્ષ્મ સંસ્કરણ ફાયરવોલ નિયમ સાથે IPv6 ને ટનલની બહાર પાડી દે છે. ફોન ક્લાયન્ટમાં સ્પષ્ટ IPv6 બ્લોક ટૉગલ હોય છે જે એ જ કામ કરે છે.

લીકની જેમ ચકાસો

ટનલ ઉપર લો અને ટૉગલ પર ભરોસો કરવાને બદલે સ્થિતિ વાંચો. ip -6 route show default એક ડિફોલ્ટ બતાવવો જોઈએ, અને તમારા LAN ની બહારના ગંતવ્ય માટે ip -6 route get એ ટનલ ઉપકરણનું નામ આપવું જોઈએ. ડિસ્કનેક્શન પછી બંનેને પુનરાવર્તિત કરો: ટનલથી વધુ ટકતો ડિફોલ્ટ એ જ બગ છે જે તમે શોધતા હતા.

પછી બીજી દિશા ચકાસો. સ્થાનિક નેટવર્કના હોસ્ટથી, ક્લાયન્ટને તેના સ્થાનિક IPv6 સરનામા પર પહોંચો. જો તે કામ કરવાનું બંધ કરે, તો શરત ત્રણ કદી પૂરી થઈ નહોતી, તે સમયે રૂટ ટેબલ શું કહેતું હોય તે પછી.

પરિણામ ત્યાં લખો જ્યાં આગલી વ્યક્તિને તે મળે: કયા પ્રીફિક્સ સ્થાનિક રહે છે, કેમ, અને ડિસ્કનેક્શન પછી ક્લાયન્ટ શું કરે છે. runbook માં બે લીટીઓ આગલા એન્જિનિયરને મધ્યરાત્રે એન્ડપોઇન્ટ લૂપ ફરી શોધવાથી બચાવે છે.

સંબંધિત લેખો