net.ipv4.conf.default.forwarding tun0 کو کیوں نہیں چھوتا
default.forwarding صرف نئے انٹرفیس بوتی ہے، کوئی زندہ ٹنل نہیں۔ ip_forward، ٹیمپلیٹ اور انٹرفیس کا اس namespace میں موازنہ کریں جو اس کا مالک ہے۔
آپ نے net.ipv4.conf.default.forwarding=1 سیٹ کیا، VPN دوبارہ چلایا، اور ٹنل اب بھی وہ پیکٹ گرا رہی ہے جو گیٹ وے کو روٹ کرنے چاہئیں۔ فائل میں سیٹنگ درست دکھائی دیتی ہے، اور انٹرفیس اب بھی بتاتا ہے کہ فارورڈنگ بند ہے۔ کچھ ٹوٹا نہیں: آپ نے وہ قدر بدلی جو آئندہ انٹرفیس ورثے میں لیں گے، وہ نہیں جو زندہ ٹنل استعمال کر رہی ہے۔
یہ اس ہوسٹ پر دیکھیں جو ٹنل کا مالک ہے، اس نیٹ ورک namespace میں جہاں ٹنل واقعی موجود ہے۔ کوئی کنٹینر یا نیٹ ورک namespace انٹرفیس رکھ سکتا ہے جبکہ ہوسٹ دوسرے اعداد دکھاتا ہے۔
تینوں قدریں اکٹھی پڑھیں
گیٹ وے بھر کے سوئچ، نئے انٹرفیس کے لیے ٹیمپلیٹ اور آپ کے لیے اہم انٹرفیس کا موازنہ کر کے شروع کریں۔ tun0 کی جگہ اصل اِن گریس انٹرفیس رکھیں، اور واپسی والا انٹرفیس بھی پڑھیں، کیونکہ فارورڈنگ اسی مقام پر جانچی جاتی ہے جہاں پیکٹ پہنچتا ہے۔
sysctl net.ipv4.ip_forward
sysctl net.ipv4.conf.default.forwarding
sysctl net.ipv4.conf.tun0.forwardingعام نتیجہ یہ ہوتا ہے کہ ip_forward = 0، default.forwarding = 1 اور tun0.forwarding = 0۔ پہلے دو ہوسٹ کے کردار پر متفق نہیں، اور تیسرا دکھاتا ہے کہ انٹرفیس واقعی کیا کر رہا ہے۔ یہ امتزاج ایسے ہوسٹ سے میل کھاتا ہے جو کبھی روٹر کے طور پر کنفیگر نہیں ہوا، صرف ٹیمپلیٹ قدر ملی۔ تینوں اعداد ایک دوسرے سے متصادم نہیں؛ وہ تین مختلف سوالوں کے جواب دیتے ہیں۔ ٹیمپلیٹ قدر لکھنا بھی ہوسٹ کا کردار طے نہیں کرتا۔
کیوں عالمی سوئچ ہی حرکت کرتا ہے
net.ipv4.ip_forward گیٹ وے بھر کا کنٹرول ہے۔ اسے بدلنے سے اسی کارروائی کے حصے کے طور پر فی انٹرفیس فارورڈنگ سیٹنگز اپ ڈیٹ ہوتی ہیں، اسی لیے ایک ہی تحریر موجودہ ٹنل کو فارورڈ کرنا شروع کروا سکتی ہے۔ default.forwarding صرف وہ انٹرفیس بوتا ہے جو بعد میں شروع ہوں، لہٰذا پہلے سے موجود ٹنل وہی قدر رکھتی ہے جس کے ساتھ وہ پیدا ہوئی۔
کرنل کی دستاویزات ip_forward کو ایک متعلقہ وجہ سے خاص بتاتی ہیں: اسے بدلنے سے دیگر کئی IPv4 پیرامیٹرز ہوسٹ یا روٹر ڈیفالٹ پر ری سیٹ ہو جاتے ہیں۔ یہ اسے ایک بھدا اوزار بنا دیتا ہے۔ گیٹ وے کردار قائم کرنے کے حصے کے طور پر اسے ایک بار سیٹ کرنا ٹھیک ہے؛ ڈی بگنگ کی ترکیب کے طور پر بار بار ٹوگل کرنا اس کنفیگریشن کو خاموشی سے دوبارہ لکھ سکتا ہے جسے درست کرنے میں آپ نے وقت لگایا۔
فی انٹرفیس قدریں بھی ایک وجہ سے ہیں۔ جان بوجھ کر منظم گیٹ وے ایسے انٹرفیس پر فارورڈنگ بند رکھ سکتا ہے جسے کبھی روٹ نہیں کرنا چاہیے، چاہے ہوسٹ کہیں اور فارورڈ کر رہا ہو۔ اسی لیے زندہ انٹرفیس پڑھنا اہم ہے اور اسی لیے صرف عالمی قدر پورا جواب نہیں۔ ایسی استثنا کو جان بوجھ کر لیا گیا فیصلہ سمجھیں، اور لکھیں کہ وہ انٹرفیس کیوں مختلف ہے۔ ورنہ اگلا انجینئر اسے بھلائی سے "ٹھیک" کر دے گا۔
سیٹنگ کو درست جگہ پر مستقل بنائیں
ایک کامیاب ایک بار کی sysctl -w ثابت کرتی ہے کہ کرنل وہ قدر قبول کرتا ہے۔ یہ ری بوٹ کے بعد نہیں رہتی، اور ایسے نیٹ ورک مینیجر کے بعد بھی نہیں رہتی جو دوبارہ جڑنے پر انٹرفیس کنفیگریشن کے بارے میں اپنا تصور دوبارہ لاگو کرتا ہے۔ گیٹ وے کردار کو sysctl کنفیگریشن فائل میں یا ہوسٹ کا مالک نیٹ ورک مینیجر میں رکھیں، پھر اسے لاگو کرنے والی سروس دوبارہ چلائیں۔
ٹنلوں میں ترتیب اہم ہے۔ اگر مینیجر بوٹ پر انٹرفیس بناتا ہے اور فارورڈنگ بعد میں لاگو کرتا ہے، تو انٹرفیس پرانی ڈیفالٹ ورثے میں لے سکتا ہے۔ ٹنل کو دوبارہ بنانے والا سروس ری اسٹارٹ بھی ایک تخلیقی واقعہ ہے، اور یونٹ صحت مند دکھنے پر اسے چھوڑ دینا آسان ہے۔ صرف آخری فائل مواد نہیں، ترتیب بھی جانچیں۔
VPN کے دوبارہ جڑنے کے بعد اور پھر ری بوٹ کے بعد وہی تین قدریں دوبارہ پڑھیں۔ نئی بنی ٹنل نیا انٹرفیس ہے، اور نیا انٹرفیس تخلیق کے لمحے نافذ ڈیفالٹ لیتا ہے۔ اگر ان واقعات میں اعداد بدلیں، تو کنفیگریشن کوئی ایسی چیز لاگو کر رہی ہے جسے آپ نے ابھی شناخت نہیں کیا۔
اسے غلط اوزار سے ٹھیک نہ کریں
جب فارورڈنگ ٹوٹی ہوئی دکھی، تو فائر وال فلش کرنے یا masquerading شامل کرنے کا لالچ ہوتا ہے۔ دونوں میں سے کوئی فارورڈنگ سوئچ کو حل نہیں کرتا۔ فارورڈنگ حالت، فارورڈ کرنے کی اجازت، منزل کے لیے روٹ اور واپسی راستہ چار الگ الگ تقاضے ہیں، اور صرف پہلا sysctl ہے۔
درست بہاؤ کے ساتھ بھی جانچیں۔ خود گیٹ وے پر کی گئی درخواست فارورڈنگ کی ذرا مشق نہیں کرتی؛ وہ مقامی طور پر پیدا شدہ ٹریفک ہے۔ سوال یہ ہے کہ VPN کلائنٹ یا LAN ہوسٹ سے آنے والا پیکٹ قبول ہو کر آگے روٹ ہوتا ہے یا نہیں، اس لیے ٹیسٹ گیٹ وے کے پیچھے سے شروع ہونا چاہیے۔
IPv6 معاملے کو الگ رکھیں
یہاں سب کچھ IPv4 ہے۔ IPv6 فارورڈنگ، روٹر اعلانات اور accept_ra رویے کے اپنے کنٹرول ہیں، اور ipv4 راستے کو ipv6 سیٹنگ میں کاپی کرنے سے ایسی فائل بنتی ہے جو قابلِ اعتماد دکھتی ہے مگر مفید کچھ نہیں کرتی۔ دوہرے اسٹیک والے گیٹ وے کو دونوں سیٹ جان بوجھ کر کنفیگر کرنے ہوں گے۔
آخری جانچ: قدریں مل جانے کے بعد تصدیق کریں کہ ٹنل کا روٹ منزل کے لیے منتخب ہو رہا ہے اور واپسی راستہ موجود ہے۔ بغیر روٹ والے انٹرفیس پر فعال فارورڈنگ پھر بھی سیاہ شگاف ہے، اور وہ ناکامی کلائنٹ کی طرف سے یکساں دکھتی ہے۔