اختبار نطاق منافذ NAT
لكي يعمل التطبيق الذي ترغب بتشغيله عبر نظام NAT IPv4 بالشكل المطلوب، يجب أن يستوفي المتطلبات التالية:
- يُفضّل أن يكون التطبيق ثنائي البروتوكول (أي يدعم اتصال IPv4 وIPv6)؛
- يجب أن يكون قادرًا على الاستماع على [::]::0 و/أو 0.0.0.0/0، وهما عنوانا IPv6 وIPv4؛
خاص باستخدام UDP فقط: يُفضّل إرسال تدفق حزم مستمر عبر UDP.
تدعم جميع التطبيقات المكتوبة لنظام Linux تقريبًا الاتصال ثنائي البروتوكول. ومن الاستثناءات المعروفة:
- SOCKS 4 وSOCKS 4a (يدعمه SOCKS 5)؛
يدعم Docker فقط الإصدارات الأقدم من 27.0.1 (الذي تم إطلاقه في 24 يونيو 2024). لا تزال بعض التوزيعات تستخدم الإصدار السابق 26، وخاصةً Debian 12 و13 على سبيل المثال. تم تأكيد دعم Ubuntu 24.04 LTS لـ Docker بدءًا من الإصدار 27.5، مما يجعله بديلاً مناسبًا؛
- Kubernetes (الإصدارات السابقة لشهر ديسمبر 2021 فقط). لا يدعم Debian 10 هذه الميزة، وسيبدأ الدعم في Debian 11.
- البرامج الأخرى التي تم إصدارها قبل عامي 2017/2018.
لا يلزم تزويد التطبيق على الخادم الافتراضي الخاص (VPS) بعنوان IPv4 الخاص بـ NAT المُحدد في خرائط منافذ NAT الخاصة بـ VirtFusion (على VirtPortal، على virtportal.cfld.uk)، حيث سيحتوي على عنوان IPv4 خاص وعنوان IPv6 عام. يكفي أن يستمع التطبيق إلى عناوين عامة. سيتم تقسيم حركة البيانات المرسلة ضمن نطاق منافذ محدد تلقائيًا بواسطة جسر Libvirt، وفي حال تعذر الوصول إلى أحد العناوين، سيتم استخدام العنوان الآخر.
أمثلة اختبارية لبروتوكولي TCP وUDP
ملاحظة: يتم فتح المنافذ تلقائيًا ضمن نطاق المنافذ الصادرة المحدد، ما عليك سوى ربطها بالمنافذ الداخلية الموضحة في مخطط VirtPortal - أي منفذ داخلي ترغب به. لا داعي لإرسال أي دعم فني، فنحن لا ندعم طلبات الدعم الفني المتعلقة بتشغيل منافذ NAT، حيث يجب أن يكون ذلك بشكل مستقل تمامًا من قِبل المستخدم.
مثال لبروتوكول TCP: حاول تغيير خدمة، مثل /etc/ssh/sshd_config، إلى أي منفذ (باستثناء المنافذ الأقل من 1024، أو المنفذ 22) على خادمك الافتراضي الخاص (VPS).
تأكد من ضبط "PubkeyAuthentication" على "لا" وإلغاء التعليق (بدون علامة #)، وضبط "PasswordAuthentication" على "نعم" وإلغاء التعليق. ثم احفظ التغييرات. الآن، نفّذ ما يلي:
sudo systemctl restart sshd [لأنظمة Debian، AlmaLinux، Rocky Linux، Fedora]، أو
sudo systemctl restart ssh [لأنظمة Ubuntu]
لإعادة تشغيل خدمة SSH. تأكد من أنها تستمع على كلا النظامين قبل أي اختبار.
بعد ذلك، يمكنك محاولة تسجيل الدخول باستخدام PuTTY أو MobaXterm أو أي عميل SSH آخر، مع إدخال عنوان IPv4 الخاص بالخادم، واسم مستخدم Linux الخاص بالخادم الافتراضي (root)، ومنفذ الإخراج المحدد المتاح على بوابة VirtFusion (على سبيل المثال 43560)؛ سيتم ربطه مباشرةً بالمنفذ الداخلي الذي حددته لـ SSH (على سبيل المثال 4096)؛ وسيعمل بسلاسة.
حل آخر جيد هو تثبيت خادم/عميل iperf3 ديناميكي، حيث يعمل خادمك الافتراضي كخادم iperf3، وأي جهاز كمبيوتر يعمل بنظام Linux كعميل iperf3. يعمل هذا افتراضيًا على TCP مع تدفق واحد. لديك دائمًا إمكانية الاختبار باستخدام عدد أكبر من التدفقات و/أو باستخدام بروتوكول UDP، ويمكنك تحديد أي منفذ داخلي على خادمك الافتراضي الخاص (VPS) لإجراء ذلك، وفقًا لتعيين منافذ NAT في VirtPortal.
تتوفر العديد من الأدلة على الإنترنت لحزم iperf3، وهي تعمل على أنظمة VPS الخاصة بنا لأننا نستخدم معيار IPv4 NAT. تأكد فقط من أنك تستهدف دائمًا، من جانب العميل، إما IPv6 أو IPv4 العام للنظام (عنوان IP الخاص بالخادم المخصص العالمي)، وبذلك تكون جاهزًا للانطلاق.
مثال على استخدام UDP: ثبّت netcat-openbsd، المتوفر لأنظمة Debian أو Ubuntu. بعد التثبيت، تأكد من عدم رغبتك في تشغيل أي أوامر أخرى قبل netcat، ثم شغّل الأمر التالي:
nc -6 -u -l -p [رقم المنفذ]
حيث [رقم المنفذ] هو نطاق المنافذ الحصري لبروتوكول UDP على خادمك الافتراضي الخاص (VPS) لتقنية NAT IPv4 (راجع مقالة قاعدة المعرفة لحساب منفذ NAT IPv4).
سيبدأ البرنامج بالاستماع عبر IPv6 على المنفذ الذي اخترته، وسيظل كذلك.
بعد ذلك، حاول إرسال أي شيء (نص، رسالة، إلخ) عبر UDP:
من Windows PowerShell
$message = "Test UDP"; $udpClient = New-Object System.Net.Sockets.UdpClient; $udpClient.Connect("116.xxx.xxx.xxx", [رقم المنفذ]); $bytes = [Text.Encoding]::ASCII.GetBytes($message); $udpClient.Send($bytes, $bytes.Length); $udpClient.Close()
من نظام لينكس
echo "Test UDP" | nc -u -w1 116.xxx.xxx.xxx [رقم المنفذ]
حيث "116.xxx.xxx.xxx" هو عنوان IPv4 العام المتاح على مستوى الخادم، و[رقم المنفذ] هو رقم المنفذ المخصص لبروتوكول UDP، والذي يجب أن يكون نفس رقم المنفذ الذي يستمع إليه برنامجك على الخادم الافتراضي الخاص (VPS)، ويُفضل أيضًا أن يكون نفس رقم منفذ نطاق منافذ UDP الصادرة لديك، لتسهيل الأمور.
إذا تلقيت رسالة "Test UDP" على خادمك الافتراضي الخاص (VPS)، فهذا يعني أن كل شيء يعمل بشكل صحيح.