ہک پہلی بار کام کرتا ہے، اور تین بار دوبارہ جڑنے کے بعد زنجیر میں اسی اصول کی تین نقلیں رہ جاتی ہیں۔ کچھ بھی بلند آواز میں ناکام نہیں ہوا؛ اسکرپٹ ہر بار چلنے پر صرف وہی کرتی تھی جو اسے بتایا گیا تھا۔ VPN ہک ایک ترتیبی کارروائی ہے جو ایک سے زیادہ بار چل سکتی ہے، اس لیے اسے ایک مالک، ایک مطلوبہ حالت اور ایک ترتیب شدہ تبدیلی درکار ہے۔ اسی ترتیب سے چلیں، اور نقلیں رک جائیں گی۔

کوئی بھی اصول لکھنے سے پہلے اصولوں کو مالک دیں

ایک بھی اصول لکھنے سے پہلے طے کریں کہ یہ انضمام کس زنجیر یا جدول کا مالک ہے۔ ہک جو مخصوص زنجیر بناتا اور خالی کرتا ہے وہ ملکیت کی واضح ترین صورت ہے، کیونکہ صفائی پھر اس زنجیر کو کسی اور کی پالیسی کو چھوئے بغیر ہٹا سکتی ہے۔ اگر آپ کو مشترکہ زنجیر میں اصول شامل کرنے ہی پڑیں تو ان پر تبصرہ لگائیں تاکہ بعد کی تلاش ٹھیک آپ کے اصول ڈھونڈ سکے۔ ملکیت ہی انہدام کو محفوظ بناتی ہے، اور انہدام ہی وہ حصہ ہے جو خاموشی سے ناکام ہوتا ہے۔

iptables -N VPN_HOOK 2>/dev/null || true
iptables -C INPUT -j VPN_HOOK 2>/dev/null || iptables -I INPUT -j VPN_HOOK
iptables -S VPN_HOOK

یہاں تبصرہ آرائش نہیں ہے۔ یہ آپ کے اصول کو ہٹانے اور اتفاقاً ملتے جلتے اصول کو ہٹانے کے درمیان فرق ہے، اور یہ محفوظ شدہ اصولوں کے مجموعے میں باقی رہتا ہے۔ تبصرہ ایک بار کسی متغیر میں لکھیں اور شامل کرنے، جانچنے یا حذف کرنے والے ہر حکم میں وہی متن استعمال کریں۔

دوبارہ شامل کرنے کے بجائے مطلوبہ حالت کی جانچ کریں

لکھیں کہ سرنگ کے فعال رہنے کے دوران کیا موجود ہونا چاہیے: کون سے انٹرفیس، کون سا ماخذ اور منزل، کون سا پروٹوکول اور کون سا پورٹ۔ پھر ہر اصول کو ایک جانچ اور اس کے بعد داخل کرنے کے طور پر بیان کریں، تاکہ دوسری بار چلنے پر اصول مل جائے اور کچھ نہ ہو۔ اصول موجود ہونے پر جانچ کا حکم صفر کے ساتھ نکلتا ہے، اور اسکرپٹ کو ٹھیک یہی اشارہ درکار ہے۔ iptables کا حوالہ یہاں استعمال ہونے والی جانچ، اضافے اور داخل کرنے کی صورتیں دستاویزی کرتا ہے۔

iptables -C VPN_HOOK -i tun0 -p tcp --dport 443 -j ACCEPT ||
  iptables -A VPN_HOOK -i tun0 -p tcp --dport 443 -j ACCEPT

مقام کے بارے میں محتاط رہیں۔ اصول کی جانچ کرکے شروع میں داخل کرنا پہلے آنے والی دانستہ نفی سے پہلے اجازت کو سرکا سکتا ہے، اس لیے دوسری بار چلنا کچھ شامل کیے بغیر بھی رویہ بدل دیتا ہے۔ اپنی زنجیر کے اندر آخر میں شامل کریں، اور ترتیب کو اس جگہ سے کنٹرول کریں جہاں اس زنجیر کی طرف چھلانگ ہے۔ اگر زنجیر کے اندر ترتیب اہم ہو تو اصول بہ اصول پیوند لگانے کے بجائے کسی معلوم فہرست سے زنجیر دوبارہ بنائیں۔

اگر مطلوبہ اصول ایک مستحکم جانچ کے طور پر بیان نہ ہو سکے تو رک جائیں۔ عام طور پر اس کا مطلب یہ ہے کہ مطلوبہ حالت ابھی مبہم ہے۔

ٹکنے کی امید کے بجائے تبدیلی کو ترتیب دیں

ہک کی دو ندائیں ایک دوسرے پر چڑھ سکتی ہیں، اور دونوں کسی کے شامل کرنے سے پہلے اصول کی عدم موجودگی دیکھ سکتی ہیں۔ xtables کا انتظار کا اختیار ایک حکم کو تالے کا انتظار کرواتا ہے، مگر دو حکموں میں جانچ-پھر-شامل کی ترتیب کو جوہری نہیں بناتا۔ پوری کارروائی کو اپنے تالے سے ترتیب دیں، یا ایسا منتظم استعمال کریں جو اعلان شدہ بیچ کو ایک لین دین کے طور پر لاگو کرے۔ nftables بعد والا کر سکتا ہے، اور یہ ان میزبانوں پر اسے ترجیح دینے کی ایک وجہ ہے جہاں یہ دستیاب ہے۔

flock /run/vpn-hook.lock /usr/local/sbin/vpn-firewall-apply
nft -f /etc/nftables/vpn-hook.nft

آپ کوئی بھی طریقہ کار منتخب کریں، نازک حصے کو مختصر رکھیں اور اسے دوبارہ داخلے کے قابل بنائیں: آدھے راستے میں ناکام ہونے والا ہک دوبارہ چلانے کے لیے محفوظ ہونا چاہیے۔ نتیجہ لاگ کریں تاکہ بار بار چلنا اصولوں کی گنتی سے اندازہ لگانے کے بجائے جرنل میں نظر آئے۔ اگر دو مختلف نگران ہک کو بلا سکتے ہیں تو پہلے وہی درست کریں؛ کوئی تالا دو مالکوں کو درست نہیں کرتا۔

صرف اپنی چیز کا انہدام کریں

انہدام کو متبادل رابطے کو اس رابطے سے الگ پہچاننا چاہیے جسے اس نے ریٹائر کیا، اور اسے ایسے واقعے کا سامنا کرنا چاہیے جسے کبھی مہذب صفائی نہیں ملتی۔ انہی شناخت کنندگان سے حذف کریں جو شامل کرنے کے لیے استعمال کیے، اور صفائی آسان بنانے کے لیے کبھی مشترکہ زنجیر خالی نہ کریں۔ سخت توقف کے بعد، نیچے والا ہک چلا فرض کرنے کے بجائے اگلی شروعات میں مفاہمت کا دور چلائیں۔

iptables -D VPN_HOOK -i tun0 -p tcp --dport 443 -j ACCEPT
iptables -F VPN_HOOK
ip -brief link show type tun

انٹرفیس کی عمر بھی ڈیزائن کا حصہ ہے۔ دوبارہ جڑنا مختلف نام کا آلہ بنا سکتا ہے، اس لیے دوسری سرنگ کا نام سخت کوڈ کرنے والا اصول درست دکھتے ہوئے بھی پرانا ہو جاتا ہے۔ وہ شناخت ترجیح دیں جو رابطہ خود ظاہر کرتا ہے، اور ہر بار چلنے پر اسے دوبارہ پڑھیں۔ تینوں واقعات الگ الگ جانچیں: دہرایا گیا رابطہ، متبادل رابطہ اور بندش۔ اجازت شدہ ٹریفک تینوں کو بغیر نقل کے عبور کرے، اور غیر متعلقہ خدمات اچھوتی رہیں۔

یہ سفر اُس وقت مکمل ہوتا ہے جب ہک کے پاس ایک مالک، ہر شامل کردہ اصول کے لیے جانچ، ایک ترتیب شدہ راستہ اور صرف اپنی حالت ہٹانے والا انہدام ہو۔ دو بار چلانے کے لیے محفوظ ہک ایک بار ہوشیار ہک سے زیادہ قیمتی ہے۔

متعلقہ مضامین