ما زال اسم داخلي يُحلّ إلى خادم VPN بعد يوم من إغلاق النفق، ويستمر ملف المُحلِّل في العودة حاملاً ذلك الإدخال. حيث تملك resolvconf في Debian الحالة، يُجمَّع ذلك الملف من سجلات المورِّدين، وأحدها هو البقايا. حذف السجل يستغرق دقيقة؛ وإثبات أن حذفه آمن هو العمل الحقيقي. تُنفَّذ هذه البوابات بالترتيب، والبوابة الفاشلة تُنهي الإجراء بدل أن ترسلك إلى الخطوة التالية.

تأكيد أن resolvconf تملك الحالة

حدِّد المالك أولاً، لأن العَرَض نفسه تحت systemd-resolved يحتاج أوامر مختلفة وإصلاحاً مختلفاً. تحتفظ حزمة resolvconf بقاعدة بيانات تحت /run/resolvconf وتوجِّه /etc/resolv.conf إلى الملف الذي تبنيه من تلك القاعدة. قراءتان تحسمان السؤال: هدف الرابط الرمزي، وما إذا كانت الحزمة مثبَّتة ونشطة. هدف تحت /run/systemd/resolve يعني التصميم الآخر، حيث لا ينطبق أي شيء أدناه.

dpkg -l resolvconf | tail -1
ls -l /etc/resolv.conf
systemctl is-active resolvconf.service

إذا أشار الرابط إلى مكان آخر أو كانت الحزمة مفقودة، فتوقف هنا. الغلاف التوافقي الذي استعار الاسم، وتشحنه مدير مُحلِّل آخر، لا يملك قاعدة البيانات هذه.

قاعدة البيانات تحمل المدخلات، لا الجواب

قاعدة البيانات تحمل المدخلات والملف ناتج، لذا فإن سرد المدخلات هو الطريقة الوحيدة لمعرفة أي برنامج ثبَّت الإدخال الذي تريد إزالته. السجلات قصيرة، ومفاتيحها هي المقابض التي ستحتاجها لاحقاً. اقرأها قبل أن تقرر أيها قديم، لأن اسماً يبدو كواجهة VPN قد ينتمي إلى عميل آخر. أبقِ العناوين الخاصة ونطاقات البحث الداخلية خارج التشخيصات المشتركة؛ المفتاح وحده عادةً يحدد السجل.

sudo resolvconf --list
sudo resolvconf -i

الأمر الأول يطبع السجلات المورَّدة دون معالجتها، والثاني يسرد الواجهات التي توفّر إعداد DNS حالياً. تُبنى المفاتيح عادةً من اسم واجهة مضافاً إليها البرنامج المورِّد. ويصف دليل resolvconf قاعدة البيانات التي تخاطبها تلك المفاتيح.

انسخ المفتاح من الخرج بدل إعادة بنائه. الإدخال لا يُسمى tun0 لمجرد أن سكربتاً قديماً استخدم ذلك الاسم.

إثبات أن السجل بلا مالك

السجل آمن للحذف عندما لا يكون اتصال حيّ قد ثبَّته. اربط المفتاح بالاتصال الذي أنشأه، ثم أكِّد أن ذلك الاتصال قد زال. هذا الربط هو البوابة كلها، وهو الخطوة الأكثر إغفالاً في الطريق إلى أمر الحذف. إذا كانت الأدلة غامضة، فتعامل مع السجل كأنه حيّ وتوقف.

أسماء العمليات دليل ضعيف. يستدعي OpenConnect الأمر vpnc-script، لذا فإن التحقق من عملية vpnc لا يقول شيئاً عن السجل الحالي. قد يعيد اتصال جديد استخدام اسم واجهة تركه اتصال قديم، مما يجعل المفتاح يبدو أقدم مما هو عليه. قارن عنوان الخادم داخل السجل بعناوين الأنفاق التي ما زالت قائمة، وتوقف إذا تطابقت.

الفصل الطبيعي عبر المدير المالك هو العلاج الأول. إنه يسحب ما ثبَّته ذلك الاتصال ويترك المورِّدين الآخرين دون مساس.

التحقق من الإزالة وإعادة الكتابة

بعد تأكيد أن السجل قديم، احذفه بالمفتاح الدقيق ثم اقرأ النتيجة بدل افتراضها. يغيّر الأمر حالة المُحلِّل لكل تطبيق على المضيف، لذا شغّله في نافذة تتحكم بها. ضع المفتاح بين علامتي اقتباس، لأنه يحتوي محارف كان الصدفة سيوسعها. العنصر النائب في الكتلة يمثل المفتاح الذي نسخته من القائمة، لا سلسلة حرفية.

sudo resolvconf -d "RECORD_KEY_FROM_THE_LIST"
sudo resolvconf --list
resolvectl query host.corp.example || getent hosts host.corp.example

الحذف يشغّل سكربتات التحديث عندما يكون التحديث ممكَّناً؛ وعند تعطيل التحديثات يؤجل التحديث، فالسجل المحذوف والملف المعاد كتابته حدثان منفصلان. أعد قراءة القائمة وأكِّد أن المفتاح زال قبل النظر إلى الملف. ثم استعلم عن اسم يجب أن يظل يُحلّ عبر المورِّدين المتبقين واسم عام، وقارن كليهما بما رأيته قبل التغيير. إذا توقف اسم خاص عن الحل تماماً، فذلك السجل كان ما يزال يحمله.

resolvconf -u يشغّل سكربتات التحديث تلك فقط. إنه لا يحدد ولا يحذف سجلاً مهجوراً أبداً، وإعادة البناء من مدخلات قديمة تنتج الملف غير المرغوب نفسه.

خطاف فصل مقتول يترك السجل خلفه

تنظيف لمرة واحدة يعيد حالة اليوم، وإغلاق متقطع تالٍ يعيد السجل. امشِ مسار التفكيك: خطاف فصل العميل، والمساعد الذي يستدعيه ذلك الخطاف، وما يحدث عندما يُقتل أي منهما. الإغلاق المتقطع هو الأصل المعتاد، لأن الخطاف لم يعمل إطلاقاً. سجِّل حالة خروج الخطاف مرة واحدة وستعرف إن كان يفشل بصمت.

أبقِ الإعداد والتنظيف تحت مالك واحد. السكربت الثاني الذي يخمّن أسماء الواجهات سيحذف في النهاية سجل اتصال آخر، وهذا أسوأ من الإدخال القديم الذي بدأت به. وعلى المالك أيضاً أن يقرر متى يكون السجل قديماً، لأنه يعرف أي اتصال ثبَّته.

ثم جرِّب دورة الحياة: اتصل، وافصل، واسرد السجلات مرة أخرى. اختفاء الإدخال من تلقاء نفسه هو الدليل الوحيد على أن الإصلاح يصمد.

مقالات ذات صلة