eth0:0 ایک لیبل ہے، ڈیوائس نہیں: SNAT میچ درست کریں
صفر کاؤنٹر کا مطلب ہے کہ اصول ایسے انٹرفیس کا نام دیتا ہے جو وجود نہیں رکھ سکتا۔ اصل ڈیوائس پڑھیں، -o میچ درست کریں اور پھر ترجمہ شدہ پتہ جان بوجھ کر منتخب کریں۔
ایک 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 میچوں والے دو اصول پڑھنے اور جانچنے کے قابل ہیں؛ فرضی ڈیوائس والا ایک اصول دونوں نہیں۔ ہر اصول کو تبصرہ دیں جو پول کا نام لے، کیونکہ چھ ماہ بعد سابقہ اکیلا کسی کو نہیں بتائے گا کہ وہ وہاں کیوں ہے۔
وہ روٹ دیکھیں جس نے ڈیوائس چنا
Postrouting 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 سے ڈیوائس، ہلا ہوا کاؤنٹر، اور وہ ماخذ جو دور کے پہلو نے دیکھا۔ وہ ریکارڈ لیبل کی الجھن دہرائے بغیر اگلی رپورٹ کا جواب دیتا ہے۔