مارا گیا openconnect: راستے اور DNS اب بھی سرنگ کی طرف اشارہ کرتے ہیں
مردہ openconnect عمل نصب شدہ راستے اور resolver اندراجات چھوڑ سکتا ہے۔ بندش کا راستہ اختیار کریں، وہ سگنل بھیجیں جو آپ کا build دستاویز کرتا ہے، اور صفائی کریں۔
سرنگ بند ہے، لیکن مشین اب بھی ایسے برتاؤ کرتی ہے جیسے وہ کھلی ہو: ایک تلاش وقت ختم ہونے تک لٹکی رہتی ہے، اور ایک راستہ ایسے انٹرفیس کی طرف اشارہ کرتا ہے جو اب موجود نہیں۔ یہ ایسے openconnect عمل کی شناخت ہے جو اپنے ڈسکنیکٹ مددگار کو چلائے بغیر مر گیا۔ اس نے جو نیٹ ورک حالت بنائی وہ اب بھی نصب ہے، اور نظام میں کچھ اور نہیں جانتا کہ اسے کیسے ہٹانا ہے۔
مشین میں اسی ترتیب سے چلیں جس میں حالت بنی تھی: عمل، لنک، راستہ، resolver۔ ہر قدم بتاتا ہے کہ کلائنٹ واقعی گیا یا صرف آپ کے ٹرمینل سے الگ ہوا، اور یہی فرق طے کرتا ہے کہ کچھ ٹھیک کرنا ہے یا نہیں۔
عمل سے شروع کریں، ترتیب سے نہیں
کسی راستے کو چھونے سے پہلے ٹرمینل کھولیں اور پوچھیں کہ ابھی کیا چل رہا ہے۔ pgrep -a openconnect ہر مثال کو اس کے دلائل کے ساتھ فہرست کرتا ہے، جو pid فائل اور اسے دی گئی اسکرپٹ دکھاتا ہے۔ جس عمل کی آپ توقع نہیں کرتے تھے وہ بھوت سرنگ کو کسی بھی لاگ سے زیادہ تیزی سے سمجھاتا ہے۔
اگر کچھ نہیں چل رہا تو لنک دیکھیں۔ ip link show tun0 بتاتا ہے کہ انٹرفیس بچا یا نہیں، اور ip route show dev tun0 اب بھی اس سے جڑے راستے فہرست کرتا ہے۔ پھر resolver کو اس سے جانچیں resolvectl status۔ انہیں بدلنے سے پہلے تینوں آؤٹ پٹ لکھ لیں، کیونکہ وہی ریکارڈ بعد میں پرانی اندراج کو نئی سے الگ کرنے کا طریقہ ہے۔
جانے والا انٹرفیس عام طور پر اپنے راستے ساتھ لے جاتا ہے۔ لنک کے بعد بچنے والے راستے عام طور پر بتاتے ہیں کہ عمل اب بھی زندہ ہے یا دوسرا کلائنٹ ڈیوائس کا مالک ہے۔
تبدیلیاں واپس کرنے والی مددگار اسکرپٹ ہی ہے
openconnect خود انٹرفیس، راستے یا resolver اندراجات نہیں ہٹاتا۔ یہ بیرونی مددگار کو بلاتا ہے، /etc/vpnc/vpnc-script upstream build میں اور /usr/share/vpnc-scripts/vpnc-script Debian اور Ubuntu پیکجوں میں، اور منتخب کیا جاتا ہے -s سے۔ جو اسکرپٹ سرنگ کھڑی کرتی ہے وہی اسے توڑتی ہے۔
اگر عمل اس مددگار کو بلائے بغیر باہر نکلے تو حالت رہ جاتی ہے۔ OpenConnect دستی واضح کہتا ہے کہ اسکرپٹ کے بغیر روٹنگ اور نام سروس درست کام نہیں کریں گی، اور مددگار کو اس جزو کے طور پر بیان کرتا ہے جو باہر نکلتے وقت انٹرفیس کی حالت توڑتا ہے۔ اسی لیے راستہ اہم ہوتا ہے جب آپ کلائنٹ کو -s کے ساتھ شروع کرتے ہیں۔
اس راستے تک کون سا سگنل پہنچتا ہے یہ ورژنوں کے درمیان بدلا۔ 7.06 دستی SIGTERM کو فوری اخراج مانتا ہے جو اسکرپٹ چھوڑ دیتا ہے۔ موجودہ build INT اور TERM کو صاف رکاوٹ کے طور پر دستاویز کرتے ہیں، جہاں سیشن لاگ آؤٹ ہوتا ہے اور مددگار چلتا ہے۔ دونوں رویوں میں سے کسی ایک کو فرض کرنے کے بجائے آپ کے پاس واقعی موجود بائنری کا SIGNALS حصہ پڑھیں۔
man openconnect | sed -n '/^SIGNALS/,/^LIMITATIONS/p'
وہ سگنل بھیجیں جو آپ کا build دستاویز کرتا ہے
سگنل معلوم ہونے کے بعد عمل کو پیٹرن سے نہیں، pid سے روکیں۔
pgrep -a openconnect
sudo kill -INT "$(cat /var/run/openconnect.pid)"
پھر ایگزٹ اسٹیٹس پر بھروسہ کرنے کے بجائے پہلے حصے کی تین جانچیں دہرائیں۔ ip link show tun0 ناکام ہونا چاہیے، ip route show dev tun0 کچھ نہیں چھاپنا چاہیے، اور resolvectl status اب VPN لنک فہرست نہیں کرنا چاہیے۔
SIGHUP اسٹاپ بٹن نہیں ہے: یہ منقطع کرتا ہے، اسکرپٹ چلاتا ہے اور سیشن کو دوبارہ شروع کرنے کے قابل چھوڑتا ہے: --cookie۔ SIGUSR2 فوری دوبارہ رابطہ پر مجبور کرتا ہے۔ SIGKILL صفائی کو مکمل طور پر چھوڑ دیتا ہے، اور یہ مضمون بالکل اسی حالت کے بارے میں ہے۔
resolv.conf بدلے بغیر resolver ٹھیک کریں
زیادہ تر Ubuntu نظاموں پر /etc/resolv.conf systemd-resolved کی طرف علامتی لنک ہے، ایسی فائل نہیں جسے آپ کو ترمیم کرنا چاہیے۔ اسے بدلنا ہر نیٹ ورک کے لیے نام کی تحلیل توڑتا ہے، صرف VPN کے لیے نہیں۔ اس کے بجائے سرنگ کی رجسٹریشن ہٹائیں:
resolvectl revert tun0
resolvectl query example.com
اگر نظام systemd-resolved کے بجائے resolvconf استعمال کرتا ہے تو فی انٹرفیس ریکارڈ رہتا ہے جب تک اسے لنک چھوڑنے کو نہ کہا جائے، اور resolvconf -d tun0 مساوی کارروائی ہے۔ کمانڈ منتخب کرنے سے پہلے جانچیں کہ کون سا resolver استعمال ہو رہا ہے۔
مردہ لنک کے پیچھے سرور کی طرف اب بھی نشانہ تلاش وقت ختم ہونے تک لٹکی رہتی ہے، اور وہ تاخیر باقی راستے کے بجائے خراب DNS سرور جیسی لگتی ہے۔
اگلی بندش کو بورنگ بنائیں
اسٹارٹ اپ اور بندش میں pid فائل کا راستہ یکساں رکھیں، ہر بار --pid-file دے کر، یا openconnect کو unit کے تحت چلائیں جس کا KillSignal آپ کے ورژن کے دستاویزی سگنل سے میل کھاتا ہے۔ پہلے فارگراؤنڈ میں جانچ مددگار کے چھاپے بندش پیغامات دکھاتی ہے۔
رابطہ کریں، منقطع کریں اور تین جانچیں ایک بار چلائیں۔ صاف اخراج کوئی VPN لنک، VPN راستہ یا VPN resolver اندراج نہیں چھوڑتا۔ اگر تین میں سے ایک بچ جائے تو اب آپ جانتے ہیں کہ کون سا جزو صفائی میں ناکام رہا۔ اگلی تحقیقات پھر لٹکی ہوئی تلاش سے نہیں، اسی جواب سے شروع ہوتی ہے۔