صرف ایک نیند ہک VPN کو واپس نہیں لائے گا
صفر کے ساتھ باہر نکلنے والا ہک صرف یہ ثابت کرتا ہے کہ اسکرپٹ چلی۔ اسے نیٹ ورک کے بعد رکھیں، درست شناخت استعمال کریں اور دیکھیں کہ پروفائل مستحق ہے بھی یا نہیں۔
نیند کے ہک میں دوبارہ جڑنے کا حکم رکھیں اور مسئلہ حل شدہ لگتا ہے۔ یہ صرف اسی وقت حل ہوتا ہے جب ہک نیٹ ورک موجود ہونے کے بعد چلے، ایسی شناخت کے طور پر جسے کلائنٹ پہچانتا ہے، اور ایسے راستے سے جسے کلائنٹ واقعی نافذ کرتا ہے۔ دوبارہ بیداری کے بعد زیادہ تر ناکامیاں ان تین میں سے ایک ہوتی ہیں، اور ان میں سے کوئی بھی ہک میں ہی غلطی کے طور پر ظاہر نہیں ہوتی۔ ہک بہرحال کامیابی واپس دیتا ہے۔
صفر کے ساتھ باہر نکلنے والی اسکرپٹ نے آپ کو یہ نہیں بتایا کہ کوئی سرنگ واپس آئی یا نہیں۔
ہک چلتا ہے، پھر کیا؟
#!/bin/sh
case "$1" in
pre)
vpn-client disconnect
;;
post)
vpn-client connect
;;
esac
ہر واقعہ ہک کو دو بار بلاتا ہے — منتقلی سے پہلے اور بعد میں — اور اسے مرحلہ اور واقعہ کا نام دیتا ہے۔ یہ root کے طور پر کم سے کم ماحول میں چلتا ہے، اس لیے مطلق راستے ضروری ہیں اور ڈیسک ٹاپ سیشن کا کوئی متغیر توقع نہیں کرنی چاہیے۔ دونوں کالوں کا جلدی واپس آنا صرف یہ کہتا ہے کہ اسکرپٹ چلی۔ اس کے بعد پروفائل اوپر آیا یا نہیں، یہ الگ مشاہدہ ہے اور لاگ میں اس کا اپنا ثبوت چاہیے۔
مرحلے کی دلیل کو ڈیزائن کا حصہ سمجھیں۔ pre مرحلے میں دوبارہ جڑنے کی کوشش اس وقت ہوتی ہے جب مشین سب کچھ کھونے والی ہوتی ہے، اور یہ کامیاب نہیں ہو سکتی۔
Root، کم سے کم ماحول، غلط صارف
اگر کلائنٹ ہر صارف کے لیے لاگ ان ٹوکن رکھتا ہے، تو ہک کو root کے طور پر چلانا اسے پیش کرنے کے لیے کچھ نہیں چھوڑتا۔ حالت کو اسی شناخت کے تحت جانچیں جو ہک واقعی استعمال کرتا ہے، نہ کہ اس شناخت کے تحت جو آپ نے ڈیسک ٹاپ ٹرمینل سے آزمائی تھی۔ کچھ بلڈز منقطع ہونے کے بعد انٹرفیس تھامے رکھنے والا ڈیمن بھی چھوڑ دیتے ہیں، اس لیے دوبارہ جڑنا پرانی حالت میں پڑ جاتا ہے، اور پہلے عمل کو صاف کرنا اسے ناپاک بندش کی قیمت پر بحال کرتا ہے۔ اگر آپ صرف خوشگوار راستہ آزمائیں تو دونوں رویوں میں سے کوئی نظر نہیں آتا۔
ہک کو مطلق راستوں کے ساتھ لکھیں، اسے root کی ملکیت میں اور قابلِ عمل رکھیں، اور لاگ کریں کہ اس نے کیا کیا۔ اس لاگ کے بغیر اگلی تحقیقات صفر سے شروع ہوتی ہے۔
خودکار رابطہ VPN کا راستہ نہیں ہے
NetworkManager دو فعال کرنے کے طریقے پیش کرتا ہے: پروفائل پر خودکار رابطے کا جھنڈا، اور ثانوی روابط جو بنیادی پروفائل فعال ہونے پر شروع ہوتے ہیں۔ مقامی ڈیوائس اقسام پہلا نافذ کرتی ہیں؛ VPN پلگ انز نے تاریخی طور پر صرف دوسرا نافذ کیا ہے، اس لیے OpenVPN پروفائل پر خودکار رابطے کو نشان زد کرنے کا کوئی اثر ہی نہیں ہو سکتا۔ دونوں خصوصیات جانچیں، پھر VPN کو Wi-Fi یا Ethernet پروفائل کا ثانوی بنا کر منسلک کریں۔
[Unit] PartOf=NetworkManager.service Requires=NetworkManager-wait-online.service After=NetworkManager-wait-online.service
systemd یونٹ کے زیرِ انتظام WireGuard انٹرفیس کو ہک کی بجائے وہی ڈراپ اِن درکار ہے، جو نیٹ ورک آن لائن ہونے کے بعد ترتیب دیا گیا ہو۔
نیٹ ورک کا انتظار کریں، ایک حد کے ساتھ
timer=1 while ! ping -c1 -n -w1 203.0.113.1 >/dev/null; do sleep 1; timer=$((timer+1)) [ $timer -ge 300 ] && exit 0 done nmcli connection up "work-vpn"
بیداری کے وقت سرنگ اس وقت طلب کی جا سکتی ہے جب Wi-Fi ابھی دوبارہ جڑ رہا ہو، جو کسی بھی مقررہ نیند کو اندازہ بنا دیتا ہے۔ قابلِ رسائی پتے کا انتظار کریں، پھر پروفائل اوپر اٹھائیں، اور انتظار کو محدود کریں تاکہ ہک بیداری کے راستے کو غیر معینہ مدت تک کھلا نہ رکھ سکے۔ عددی اشاریے کی بجائے پروفائل کا نام ترجیح دیں، اور اگر درست پروفائل نیٹ ورک کے لحاظ سے بدلتا ہے تو صحت مند سرنگ اپنا انتخاب پہلے سے فائل میں درج کرے۔
دوبارہ شروع ہونے کے طوفانوں سے بھی بچیں، کوششوں کو گن کر اور رک کر۔ ہر ناکام جانچ پر ردِ عمل دینے والا چوکیدار ایک خلل کو لوپ میں بدل دیتا ہے۔
ایک بار سسپنڈ کریں، پھر ہک کے اپنے آؤٹ پٹ کے لیے جرنل پڑھیں۔ ترتیب ثابت کرنے والا یہی واحد امتحان ہے۔