ملف hosts مقابل فلتر الموجّه: حجب موقع عبر VPN
مدخل في hosts يجيب محليًا وينجو من أي نفق. وفلتر الموجّه لا يرى إلا ما يعبره، لذا يخفي VPN الذي ينتهي على الحاسوب المحمول الاسم.
مدخل في ملف hosts وفلتر في الموجّه يحجبان الموقع نفسه لسببين مختلفين تمامًا، ولهذا يظل أحدهما يعمل تحت VPN بينما يتوقف الآخر بهدوء. يجيب ملف hosts عن الاسم قبل أن تغادر أي حزمة الجهاز. ويفحص فلتر الموجّه حركة المرور التي تعبره. ضع نفقًا بين هاتين النقطتين فيفقد الثاني رؤيته بينما لا يلاحظ الأول شيئًا.
حيث يُحلّ الاسم يتحدد كل شيء
كل حجب يبدأ بسؤال: من يحوّل الاسم إلى عنوان؟ على حاسوب مكتبي عادي تكون الإجابة محلّل النظام، الذي يسير وفق ترتيبه المضبوط ويقرأ عادةً ملف hosts قبل الاستعلام من DNS. على شبكة مفلترة قد تكون الإجابة الموجّه، الذي لا يرى الاستعلام إلا إذا أرسله العميل عبره دون حماية. غيّر المسار تغيّر من يُسمح له بالإجابة.
يفعل VPN شيئين معًا هنا: ينقل المسار الافتراضي، وقد يدفع محلّل DNS خاصًا به. أي من التغييرين كافٍ لتحويل تحليل الاسم بعيدًا عن الجهاز الذي كان يفرض الحجب.
هذه هي الآلية وراء الشكوى المألوفة بأن الفلتر يعمل حتى يتصل VPN.
مدخل hosts يجيب قبل وجود النفق
سطر مثل 127.0.0.1 www.example.com يقرأه المحلّل المحلي، فيُنتج الجواب على الجهاز دون أي شبكة. اتصل بنفق أو غيّر محلّل DNS أو بدّل الشبكات: يظل المدخل يعيد loopback. لهذا يكون حجب hosts هو الوحيد بين الاثنين الذي لا يتأثر بمكان انتهاء VPN.
نقاط عماه محلية بالقدر نفسه. التطبيق الذي يجمع محلّله الخاص أو يتحدث DNS عبر HTTPS أو يتصل بعنوان حرفي لا يسأل النظام أبدًا، فلا يُستشار المدخل. والعنوان المخزّن في ذاكرة عملية قائمة له الأثر نفسه حتى تُعيد تلك العملية التشغيل.
أكّد الجواب عبر getent ahosts على Linux أو Resolve-DnsName على Windows بدلًا من الثقة بتبويب في المتصفح.
فلتر الموجّه لا يرى إلا ما يعبره
فلتر المحتوى أو URL على موجّه منزلي يطابق الأسماء والطلبات التي تمر عبره في صيغة مقروءة. وعندما يبني العميل نفقًا مشفرًا إلى خادم في مكان آخر، يرى الموجّه تدفقًا واحدًا إلى ذلك الخادم ولا شيء داخله. ولا يجد الفلتر اسمًا ليطابقه، فيسمح بالمرور، وهذا يبدو كأن الفلتر فشل لا كأنه تجاوزوه.
الطوبولوجيا التي تعمل هي الأخرى: يحتفظ الموجّه بالنفق نفسه، ويفرّغ التشفير عند الطرف ويطبّق الفلتر هناك. في ذلك التصميم يجلس الفلتر حيث يظهر النص الصريح.
إذا انتهى النفق على الحاسوب المحمول، فالموجّه خارج المسار المحمي بحسب التعريف، مهما كُتبت القاعدة.
أربع نقاط فرض وما يفوّته كل منها
أربعة مواضع يمكنها فرض حجب، وكل واحد يفشل بطريقة مختلفة. اقرأ القائمة كخريطة تغطية لا كترتيب.
- ملف hosts أو المحلّل المحلي: يعمل دون اتصال وتحت أي نفق، لكنه يُتجاوز بمحلّل مضمّن أو بعنوان مكتوب صراحةً.
- ترشيح DNS عند بوابة VPN: يغطي العملاء الذين يستخدمون المحلّل المدفوع، ويفوّته العملاء الذين يتجاوزون DNS.
- قواعد الخروج في البوابة حسب العنوان أو SNI: مستقلة عن DNS العميل، لكنها عمياء عن أسماء لا تستطيع قراءتها وعن عناوين لم تتعلّمها.
- سياسة متصفح أو جهاز مُدار: قوية على العتاد المُدار، غائبة على الأجهزة الشخصية.
لا شيء من هذه حدود أمنية ضد مستخدم مصمم على جهاز غير مُدار. إنها ضوابط سياسة، والوصف الصادق يقول أي حركة يغطيها كل منها فعلًا.
اختر الطبقة التي تناسب القصد: راحة المنزل مكانها الجهاز، وقاعدة المنظمة مكانها البوابة.
اختبر الحالتين قبل أن تعلن الانتهاء
شغّل الأوامر الثلاثة نفسها مع اتصال VPN وقطعه: getent ahosts لترى جواب المحلّل، وnslookup لترى ما يعيده الاستعلام، وcurl -I تجاه الموقع لترى هل يكتمل اتصال بعد. إذا أعاد الأول loopback بينما يتصل الثالث بالعنوان الحقيقي، فقد تجاوز شيء المحلّل ولم يكن مدخل hosts الضابط الذي تظنه.
على الموجّه، اقرأ عدّادات الفلتر قبل الطلب وبعده. العدّاد الذي لا يتحرك أبدًا يعني أن الحركة لم تصل إلى الفلتر، وهذا جواب توجيه لا جواب قاعدة.
سجّل النتيجة مع الطوبولوجيا، لأن تغيير VPN التالي سيحرّك المسار مرة أخرى.