એક NAT નિયમ જે એક VPN ક્લાયન્ટ પૂલને તેનું પોતાનું જાહેર સરનામું આપવાનો હતો, શૂન્ય પેકેટ પર બેસી રહ્યો છે, જ્યારે એ જ પૂલ ખોટા સ્રોત સાથે બહાર જતું રહે છે. નિયમ સામાન્ય રીતે સરનામા વિશે ભૂલ કરતો નથી; તે ઇન્ટરફેસ વિશે ભૂલ કરે છે. -o eth0:0 એવા ઉપકરણ તરફ ઇશારો કરે છે જે અસ્તિત્વમાં નથી, કારણ કે eth0:0 એ લેબલ છે જે સરનામા સાથે જોડાયેલું છે, અને એ સરનામાનું ઉપકરણ eth0. કાઉન્ટર જોવું એ આને ખાતરી કરવાનો સૌથી ઝડપી રસ્તો છે, અને સુધારો તપાસ સૂચવે છે તેના કરતાં નાનો છે.

કર્નલ ઉપકરણને શું કહે છે તે તપાસો

કંઈપણ બદલતા પહેલા બંને દૃશ્યો અલગ અલગ વાંચો:

ip link show
ip address show dev eth0
ip route get 203.0.113.20

લિંકની યાદી ઇન્ટરફેસ દર્શાવે છે. સરનામાની યાદી બીજું IPv4 સરનામું દર્શાવી શકે છે જે લેબલ ધરાવે છે eth0:0, અને એ સરનામાનું ઉપકરણ હજી પણ eth0. iproute2નું સરનામા પુસ્તિકા લેબલને સરનામાનું નામ ગણે છે, બીજી લિંક નહીં, અને આખી સમસ્યા એ જ ભેદ પર ઊભી છે.

ઇતિહાસ ગૂંચવણ સમજાવે છે. જૂનું ifconfig eth0:0 સિન્ટેક્સ ખરેખર નવા ઇન્ટરફેસ જેવું લાગતું હતું, અને એ જમાનાની સ્ક્રિપ્ટો હજી પણ એકનો ઉલ્લેખ કરે છે. આજના સિસ્ટમમાં એલિયાસ એ સરનામા પરનું લેબલ છે, અને રૂટિંગ કે netfilter માર્ગમાં કંઈ પણ તેને અલગ એગ્રેસ બિંદુ તરીકે ગણતું નથી.

નિયમ ખરેખર શેના સાથે મેળ ખાધો તે તપાસો

કાઉન્ટર યાદશક્તિમાંથી નહીં, નિયમોની યાદી સાથે વાંચો:

iptables -t nat -L POSTROUTING -v -n --line-numbers

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

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

ઉપકરણ પસંદ કરનારો રૂટ તપાસો

પોસ્ટરૂટિંગ NAT રૂટ પહેલેથી આઉટપુટ ઇન્ટરફેસ પસંદ કરી લીધા પછી ચાલે છે, તેથી નિયમમાંનું ઇન્ટરફેસ એ જ હોવું જોઈએ જે રૂટે પસંદ કર્યું હતું. કર્નલને સીધો પ્રશ્ન કરો ip route get વડે પ્રતિનિધિ ક્લાયન્ટ સરનામા માટે, અને તે જે ઉપકરણ અને સ્રોત બતાવે તે બંને વાંચો.

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

અનુવાદિત સ્રોત જાણી જોઈને પસંદ કરો

એક વાર ઉપકરણ સાચું થાય, પછી સ્રોત સરનામું અલગ નિર્ણય છે. આ ફક્ત દૃષ્ટાંતરૂપ IPv4 પૂલ અને ઉદાહરણ સરનામું છે:

iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 \
  -j SNAT --to-source 203.0.113.20

સરનામું --to-source માં લખવાથી કોઈ તેને તમારા તરફ પાછું રૂટ કરતું નથી. અપસ્ટ્રીમ પ્રદાતા કે સરનામાના માલિકે એ સરનામા માટેના જવાબો આ હોસ્ટ સુધી પહોંચાડવા પડે, અને સરનામું એવું હોવું જોઈએ જેનો ઉપયોગ કરવાની તમને અધિકૃતતા હોય. જો ન હોય, તો નિયમ મેળ ખાશે અને અનુવાદ કરશે અને જવાબો તો બીજે જ જશે.

સ્રોત સરનામું બદલવું એ અપલિંક બદલવા જેવું નથી. જ્યારે ખરી જરૂરિયાત બીજો ભૌતિક માર્ગ હોય, ત્યારે રૂટિંગ નીતિએ પહેલા એ માર્ગ પસંદ કરવો પડે; પછી SNAT નીતિએ પસંદ કરેલા જે ઉપકરણ પર હોય તેના પર સ્રોત ફરી લખે છે. વધુ લેબલ eth0 પર ઉમેરવાથી ન તો રૂટ મળે છે ન તો અધિકાર.

તમે હમણાં ખોલેલા કનેક્શનથી ચકાસો

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

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

સંબંધિત લેખો