VPN عبر UDP صامت عند فحص المنفذ؟ لماذا يحدث ذلك
يُسقط WireGuard وOpenVPN المُحصَّن حزم البيانات التي تفشل في المصادقة دون رد. صمت الماسح الضوئي سلوك متوقع، وليس منفذًا مغلقًا.
تفحص منفذ VPN فلا تتلقى ردًا، فتستنتج أن الخدمة متوقفة أو أن جدار الحماية مغلق. مع WireGuard، ومع قنوات التحكم في OpenVPN التي تحمل مصادقتها الخاصة، لا يتبع هذا الاستنتاج. تُهمَل حزمة البيانات التي تفتقر إلى مادة مصادقة صالحة دون أي رد، فالصمت هو ما تبدو عليه خدمة سليمة من الخارج. الفحص خاطئ قبل أن يكون النفق خاطئًا.
الصمت هو البروتوكول، وليس عطلًا
لا يملك UDP أي إعداد للاتصال، فلا يوجد SYN ولا إقرار يمكّن الماسح من التمييز بين منفذ مفتوح وآخر مُفلتَر. يصل الفحص كحزمة بيانات معزولة، وتتحقق الخدمة مما إذا كانت تطابق البروتوكول الذي تتوقعه. وحين لا تطابقه، تُسقط الحزمة، والإسقاط هو السلوك الموثّق لا خللًا.
يتحقق WireGuard من رسائل المصافحة لديه تشفيريًا ويتجاهل كل ما يفشل. OpenVPN مع tls-auth أو tls-crypt يفعل الشيء نفسه لقناة التحكم لديه. في الحالتين لا تصل أي حمولة عشوائية إلى مرحلة موجهة للمستخدم، فلا يوجد ما يُرَد به ولا خطأ يُعاد.
كان TCP سيمنحك إعادة تعيين من منفذ مغلق. أما UDP فيتركك في حالة غموض، يحلها الماسحون بطباعة مفتوح أو مفلتر بدلًا من التخمين.
ما يمكن للماسح أن يستنتجه وما لا يمكنه
نتيجة الفحص لا تكون مفيدة إلا بقدر الحمولة التي أرسلها. رتّب الملاحظات المحتملة حسب ما يدعمه كل منها فعليًا:
| Probe | Observed result | What it supports |
|---|---|---|
| Empty datagram | No reply | Nothing beyond the fact that UDP was used |
| Random payload | No reply | Consistent with an authenticated service |
| Valid handshake from a real client | A protocol reply | The service is alive and reachable |
| ICMP port unreachable | Unreachable message | The host answered, usually because nothing listens |
اقرأ الصف الثالث باعتباره الاختبار الإيجابي الوحيد في القائمة. فهو يتطلب الملف الشخصي الحقيقي والمفتاح الحقيقي ونقطة النهاية الصحيحة، وهذا بالضبط ما لا يملكه ماسح عام.
انظر إلى طرفي المسار
بالنسبة إلى خادم تديره أنت، التقط على الواجهة قبل أن تستنتج أي شيء، ثم اسأل الخدمة عما رأته. يحتاج كلا الأمرين إلى صلاحيات root على البوابة:
tcpdump -ni any udp port 51820
tcpdump -ni any udp port 1194
wg show
إذا لم تظهر أي حزمة على الواجهة، فقد أسقطها المسار قبل أن ترى الخدمة شيئًا، والمحطة التالية هي التوجيه والتصفية. وإذا وصلت الحزم لكن لم تكتمل أي مصافحة، فالخدمة قابلة للوصول والتباين في المفاتيح أو إعداد نقطة النهاية أو إصدار البروتوكول. هذه المقارنة تجيب عن السؤال الذي عجز عنه الماسح. شغّلها أثناء محاولة عميل حقيقي للاتصال، لا أثناء تكرار الماسح لنفسه.
غيّر الاختبار، لا الحماية
الاختصار المغري هو تعطيل حماية قناة التحكم حتى يحصل التشخيص على رد. هذا يقايض خاصية أمنية حقيقية بنتيجة فحص أجمل، وهو الاتجاه الخاطئ. استخدم ملفًا شخصيًا صالحًا من شبكة معتمدة بدلًا من ذلك، وسجّل نقطة النهاية والوقت حتى تكون المقارنة قابلة للتكرار.
الاختبار الأكثر فائدة هو اختبار تفاضلي: الملف الشخصي نفسه على مسار يعمل وعلى المسار الذي لا يعمل. إذا أنتج المسار العامل مصافحة وأنتج المسار الفاشل لا شيء على الواجهة، فقد حددت موضع الانقطاع دون إضعاف أي شيء.
إذن، حزمة UDP غير المجابة لا تثبت أن الخادم غير متصل ولا أنها آمنة. إنها تثبت أن هذا الفحص، على هذا المسار، في هذه اللحظة، لم يُقبل.