المسح الخام في Nmap يفشل عبر VPN لكن اتصال -sT يعمل؟
المسح الخام للحزم واتصال TCP العادي يحتاجان صلاحيات مختلفة. شغّل فحص الاتصال أولاً، واقرأ كل خيار حرفياً، ثم توقف عند النتيجة.
تُحمَّل صفحة عبر النفق بينما يبلّغ فحص المنافذ بأن المضيف معطّل، والانطباع الأول أن VPN يحجب شيئاً. وهو عادةً لا يحجب شيئاً جديداً. الاختباران يطلبان من نظام التشغيل قدرتين مختلفتين، وواحد منهما فقط يحتاج وصولاً خاماً إلى الحزم. حدّد أي قدرة فشلت قبل أن تمسّ النفق.
افصل القدرة عن النفق
التطبيق العادي يطلب من النواة فتح اتصال TCP، وتنفّذ النواة المصافحة دون امتياز خاص. أمّا المسح الخام فيبني الحزم بنفسه، وهذا يحتاج مقبساً خاماً أو برنامج التقاط حسب المنصة. هذه أسئلة أذونات وبرامج تشغيل، وهي قائمة سواء كان VPN متصلاً أم لا.
يفسّر هذا التمييز عدم التماثل الشائع. curl ينجح لأن مسار المقبس يعمل، بينما يفشل مسح SYN لأن العملية لا تستطيع فتح مقبس خام على واجهة النفق. ويفسّر أيضاً الحالة المعاكسة، حيث يبلّغ المسح الخام أن النتيجة مفلترة لأن المسار يُسقط المسبار بينما يبقى مسار التطبيق سليماً.
لا أحد من النتيجتين يصف الخدمة البعيدة. كلتاهما تصف مساراً واحداً تحت طريقة واحدة، فاحتفظ بالطريقة ملتصقة بالاستنتاج.
شغّل فحص الاتصال على مضيف واحد معتمد
اختر المضيف الوحيد الذي تغطيه مهمتك، ثم استخدم النمط الذي لا يحتاج وصولاً خاماً. الهدف في المثال هنا هو 198.51.100.24، وهي مساحة توثيق محجوزة لهذا النوع من التوضيح.
سطر واحد، مضيف واحد، منفذ واحد، بلا مرحلة اكتشاف:
nmap -sT -Pn -p 443 --unprivileged 198.51.100.24-sT يختار اتصال TCP كاملاً، فيمارس مسار النواة نفسه الذي يستخدمه التطبيق ولا يحتاج برنامج التقاط. -Pn يتخطى اكتشاف المضيف؛ لكن nmap ما زال يجري تحليل طبقة الربط للأهداف على المقطع المحلي، لذا ليس الخيار وعداً بحركة أولية صفرية. --unprivileged يقول لـ nmap افترض أنه لا يملك حقوقاً خامة ولا حقوق تنصّت، وهذا يغيّر الطريقة ولا يمنح شيئاً.
اقرأ كل خيار كتغيير واحد، لا كإصلاح
تعامل مع كل خيار كبيان عن الطريقة. لا يضيف أي من -sT أو -Pn أو --unprivileged مساراً، ولا يفتح جدار حماية بعيداً، ولا يتحقق من شهادة. كما أن مسح الاتصال يكمل مصافحة حقيقية تسجّلها الخدمة، لذا يبدو الفحص المعتمد والمسح غير المعتمد متشابهين من الخادم إلا في النطاق والمعدل. وتكديس الخيارات حتى تتغير المخرجات هو كيف تُسجّل مشكلة طريقة كاستنتاج شبكي.
عندما تقول المخرجات مغلق، فقد أجاب شيء بإعادة تعيين، وهذا استنتاج مختلف عن الصمت. وعندما تقول مفلتر، فقد أسقط جهاز المسبار أو رده، وقد يكون VPN عرضياً. اكتب الصياغة الدقيقة، لأن حكم مرحلة الاكتشاف ونقطة فشل مستوى المسبار يشيران إلى طبقتين مختلفتين.
إذا كان النمط المميّز مطلوباً فعلاً، فمالك المنصة يقرر ما إذا كانت الصلاحية وبرنامج التشغيل وترتيب الواجهة مدعومة. ورفع نفس الاستدعاء لا يغيّر طريقته.
توقف عند نتيجة النقل، ثم اختبر الخدمة
المصافحة المكتملة تجيب عن سؤال واحد حول عنوان واحد ومنفذ واحد ومصدر واحد ولحظة واحدة. وهي لا تثبت أن الواجهة الخلفية سليمة، لأن موازن الحمل أو الوكيل الأمامي يمكن أن يقبل الاتصال بينما التطبيق خلفه معطّل.
أتبِعه بعميل الخدمة نفسه حتى تُلاحظ هوية TLS وسلوك التطبيق كوقائع منفصلة:
openssl s_client -connect 198.51.100.24:443 -servername staging.example.net </dev/null 2>/dev/null | openssl x509 -noout -subject -dates
curl -sS -o /dev/null -w '%{http_code}\n' https://staging.example.net/healthعادة أخرى تُبقي النتيجة مفيدة. سجّل الأمر الدقيق وعنوان المصدر الذي استخدمه والوقت، لأن نتيجة نقل بلا هذا السياق لا يمكن إعادة إنتاجها أو مقارنتها.
إذا كانت الشهادة تسمّي مضيفاً لم تتوقعه، فقد نجح النقل ولم يكن التوجيه المشكلة أبداً؛ والعطل في الاستضافة الافتراضية أو DNS. وإذا فشلت المصافحة، سجّل سلسلة الخطأ المحلية بدل التعميم عن النفق. واحفظ ملاحظة النطاق بجانب النتيجة، لأن الشخص التالي يحتاج أن يعرف أي طريقة أنتجتها.