النفق اختفى، وأيقونة الشبكة تبدو طبيعية، ولا شيء يُحمَّل. لقد فصلت VPN أو أزلته أو أعدت تشغيل الجهاز، وما زال الحجب الذي كان يُفترض أن يحميك أثناء الانقطاع قائماً. لا تستطيع نافذة العميل تفسير ذلك، لأن العميل ليس ما يحجبك: القرار كُتب في النواة باسمك، ولم يُترك شيء لإزالته. على Windows تقيم تلك الحالة في منصة تصفية Windows؛ وعلى Linux فهي مجموعة قواعد في iptables أو nftables، غالباً مع لقطة تُعاد عند الإقلاع. وما يلي هو الترتيب الذي أستخدمه: اقرأ الحالة، واحذف أضيق كائن يفسّر العطل، ثم اعثر على كل ما يعيده.

مفتاح الإيقاف حالة في النواة، لا إعداد

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

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

اقرأ حالة WFP قبل حذف أي شيء

يأتي Windows بالأدوات التي تحتاجها. شغّل موجه أوامر مرفوعاً واطبع حالة المنصة؛ تُحفظ النسخة باسم wfpstate.xml في دليل العمل.

netsh wfp show state
netsh wfp show filters
Get-Service bfe

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

تحقّق أيضاً من عرض جدار الحماية العادي، لأن معظم الناس يفحصون واحداً فقط من الاثنين:

netsh advfirewall show allprofiles
Get-NetFirewallProfile | Select-Object Name,Enabled,DefaultInboundAction

عندما تكون ملفات التعريف المدمجة مفعّلة ولا تطابق أي قاعدة حركة المرور الفاشلة، يأتي الحجب من مزوّد طرف ثالث لا من جدار حماية Windows. هذا التمييز يحدّد الأداة التي ستستخدمها للإصلاح.

اقرأ قواعد Linux بالصيغة التي ستحذف بها

يطبع iptables -S القواعد بالشكل نفسه المستخدم لإضافتها، ما يجعل الخرج قابلاً لإعادة الاستخدام مباشرة في الحذف. ويضيف iptables -L -v -n عدّادات الحزم، وتخبرك تلك العدّادات ما إذا كانت القاعدة تطابق طلباتك الفاشلة فعلاً أو أنها مجرد قاعدة في السلسلة.

sudo iptables -S
sudo ip6tables -S
sudo iptables -t nat -S

اقرأ سياسات السلاسل، لا القواعد وحدها: -P OUTPUT DROP يحجب حركة المرور حتى عندما لا تطابق أي قاعدة. افحص IPv6 على حدة، لأن العميل الذي يثبّت العائلتين قد يترك حجب IPv6 في مكانه بعد زوال قواعد IPv4، وحينها يعتمد العرض على العائلة التي يفضّلها التطبيق. وحيث يُستخدم nftables، شغّل أيضاً nft list ruleset؛ فالأداتان تتعايشان عبر طبقة توافق، وعرض واحد لا يُظهر بالضرورة كل قاعدة يمكنها إسقاط حزمة.

احذف أضيق كائن يفسّر العطل

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

Get-ScheduledTask | Where-Object TaskName -like '*vpn*'
Get-Service | Where-Object DisplayName -like '*vpn*'

المرشّحات الدائمة هي الملاذ الأخير. تقيم تحت HKLM\SYSTEM\CurrentControlSet\Services\BFE\Parameters\Policy\Persistent\Filter، قيمة واحدة لكل مرشّح بمفتاح GUID. صدّر المفتاح أولاً، وسجّل معرّفات GUID التي تحذفها، واحذف فقط القيم التي تنتمي إلى العميل الراحل، ثم أعد التشغيل ليُعيد المحرك بناء حالته. لا تحذف المفتاح كله ولا تعطّل محرك التصفية الأساسي: جدار حماية Windows وDefender يعتمدان عليه، وستقايض انقطاعاً بانقطاع أسوأ.

reg export "HKLM\SYSTEM\CurrentControlSet\Services\BFE\Parameters\Policy\Persistent" C:\temp\bfe-backup.reg

على Linux، خذ السطر الذي يطبعه iptables -S واستبدل -A بـ -D. حذف القاعدة الواحدة التي حدّدتها أفضل من تفريغ سلسلة، لأنه يترك سياستك سليمة.

sudo iptables -D OUTPUT -p udp -j REJECT

إذا كان الإسقاط في سلسلة معرّفة من المستخدم، فاحذف القفزة إلى تلك السلسلة أولاً ثم أزل السلسلة بـ -X. تعيين سياسة سلسلة إلى ACCEPT مع بقاء قواعد الإسقاط لا يساعد إلا الحزم التي تصل أصلاً إلى قرار السياسة. تفريغ كل الجداول ملاذ أخير: فهو يحذف أيضاً قواعد أضفتها لأسباب أخرى، ومع تمكين ufw يترك الخدمة تظن أنها تملك سلاسل لم تعد موجودة.

اعثر على المالك الذي يعيده

بعد الإصلاح الفوري، ابحث عن أي شيء قد يعيد الحالة. على Linux، تحقّق مما إذا كانت وحدة استمرارية مفعّلة، وما إذا كان للعميل إعداد لاستعادة جدار الحماية عند تسجيل الدخول، وما إذا كان ملف قواعد محفوظ موجوداً تحت /etc. على Windows، تحقّق مرة أخرى من إدخالات بدء التشغيل والخدمات والمهام المجدولة، ثم أعد التشغيل واقرأ الحالة بالأوامر نفسها.

إذا عاد الحجب، فالحذف لم يكن الحل؛ المالك كان الحل. سجّل أي عميل أو خدمة يثبّته وعطّل الميزة هناك، بدل محاربته في طبقة جدار الحماية بعد كل فصل.

تحقّق بحركة مرور حقيقية، لا ببينغ واحد

اختبر استعلام اسم واتصال TCP وجلسة متصفح جديدة، ثم أعد التشغيل وكرّر الفحوص الثلاثة نفسها. بينغ ينجح بينما يفشل HTTPS يشير إلى مرشّح في طبقة النقل لا إلى الشبكة، وحجب يعود فقط بعد إعادة التشغيل يشير إلى مالك لم تجده بعد.

احتفظ بالأدلة: مفتاح BFE المصدَّر، أو خرج iptables -S الملتقط قبل التغيير. قبل اعتباره مُصلَحاً، أكّد الطبقة التي حذفت الكائن منها، والمالك الذي قد يعيد تثبيته، والحالة بعد إقلاع نظيف واحد، وأن التصفح العادي يعمل دون أي عملية VPN قيد التشغيل. تحتوي صفحة دليل iptables(8) على صيغة الحذف والسياسة الدقيقة إن كنت تكتب التنظيف بأمر برمجي.

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