Back to Article List

Port Forwarding في Proxmox: الوصول إلى SSH وRDP والخدمات الداخلية

Port Forwarding في Proxmox: SSH وRDP والخدمات الداخلية | مرام هوست - Port Forwarding في Proxmox: الوصول إلى SSH وRDP والخدمات الداخلية

حاوياتك تخرج إلى الإنترنت الآن، لكنها ما زالت غير مرئية من الخارج. وهذا صحيح أمنياً، غير أنك ستحتاج حتماً الوصول إليها: SSH إلى سيرفر لينكس، أو RDP إلى ويندوز، أو منفذ خاص لخدمة معيّنة.

الحل هو تمرير المنافذ (Port Forwarding): تحجز منفذاً على عنوانك العام وتربطه بمنفذ داخل حاوية. في هذا الجزء ننفّذه، والأهم — نحدّد بدقّة متى يكون الحل الصحيح ومتى يكون خطأ.

كل ما في هذه السلسلة مُنفَّذ فعلاً. بنينا المختبر على سيرفر Proxmox VE 9.2 بعنوان عام واحد، وأنشأنا عليه شبكة خاصة 10.10.10.0/24 وأربع حاويات، ونشرنا ثلاثة نطاقات فرعية حقيقية بشهادات Let's Encrypt. كل لقطة وكل مخرج أمر في هذه المقالات من ذلك المختبر — والعناوين في الصور حقيقية وقت التنفيذ.

الفكرة في جملة

في NAT العادي، المضيف يترجم ما يخرج. وفي تمرير المنافذ يترجم ما يدخل: أي طلب يصل إلى العنوان العام على منفذ محدّد، يُعاد توجيهه إلى عنوان ومنفذ داخليَّين.

ما يطلبه المستخدمإلى أين يذهب فعلاًالخدمة
82.39.115.50:220110.10.10.11:22SSH لحاوية ووردبريس
82.39.115.50:220210.10.10.12:22SSH لحاوية الأتمتة
82.39.115.50:3389110.10.10.30:3389RDP لجهاز ويندوز

لاحظ النمط: المنفذ الخارجي مختلف لكل خدمة، والداخلي هو المنفذ القياسي نفسه. هذا هو جوهر تمرير المنافذ — وهو أيضاً حدّه الأكبر.

التنفيذ

قاعدة واحدة لكل تمرير، في سلسلة PREROUTING (أي قبل قرار التوجيه):

# SSH إلى حاوية 10.10.10.11 عبر المنفذ 2201
iptables -t nat -A PREROUTING -d 82.39.115.50 -p tcp --dport 2201 \
  -j DNAT --to-destination 10.10.10.11:22

# SSH إلى حاوية 10.10.10.12 عبر المنفذ 2202
iptables -t nat -A PREROUTING -d 82.39.115.50 -p tcp --dport 2202 \
  -j DNAT --to-destination 10.10.10.12:22

# RDP إلى جهاز ويندوز داخلي
iptables -t nat -A PREROUTING -d 82.39.115.50 -p tcp --dport 33891 \
  -j DNAT --to-destination 10.10.10.30:3389

وثبّتها في ملف الشبكة كما فعلنا مع قاعدة MASQUERADE:

    post-up   iptables -t nat -A PREROUTING -d 82.39.115.50 -p tcp --dport 2201 -j DNAT --to-destination 10.10.10.11:22
    post-down iptables -t nat -D PREROUTING -d 82.39.115.50 -p tcp --dport 2201 -j DNAT --to-destination 10.10.10.11:22
مخرجات طرفية تعرض قواعد PREROUTING لتمرير المنافذ 80 و443 و2201 إلى عناوين داخلية
قواعد التمرير في مختبرنا: 80 و443 إلى الوسيط العكسي، و2201 إلى SSH حاوية ووردبريس

الاختبار — من جهاز خارجي لا من المضيف

فخّ يقع فيه الجميع: إن اختبرت من داخل المضيف نفسه (curl http://82.39.115.50:2201) فسيفشل غالباً، وتظنّ أن القاعدة خاطئة. السبب أن الحزم الصادرة من المضيف تمرّ بسلسلة OUTPUT لا PREROUTING. اختبر دائماً من جهاز آخر.

# من جهازك الشخصي
ssh -p 2201 [email protected]
nc -zv 82.39.115.50 2201

متى يكون تمرير المنافذ هو الحل الصحيح؟

مقارنة بين NAT وتمرير المنافذ والوسيط العكسي توضح ما يحلّه كل واحد وحدوده
تمرير المنافذ في الوسط — ممتاز لما ليس ويباً، وضعيف جداً للويب
الحالةالحكملماذا
SSH إلى حاويات✅ مناسببروتوكول غير ويب، ولا يفهم أسماء النطاقات
RDP إلى ويندوز✅ مناسبالسبب نفسه
خادم لعبة أو تطبيق بمنفذ خاص✅ مناسبلا بديل عملي
موقع ويب واحد⚠️ يعمل لكن لا تفعلستحتاج شهادة SSL يدوياً، وستفقد المرونة لاحقاً
عشرة مواقع ويب❌ خطأستحتاج عشرة منافذ غريبة، ولن يكتب زائر :8081 في متصفحه
قاعدة بيانات❌ خطرنشر MySQL أو PostgreSQL على الإنترنت دعوة مفتوحة للاختراق

الأمان: ثلاث قواعد غير قابلة للتفاوض

1) لا تستعمل المنافذ القياسية

المنفذ 22 المفتوح على الإنترنت يتلقّى آلاف محاولات الدخول يومياً من روبوتات آلية. نقله إلى 2201 لا يجعله آمناً، لكنه يقلّل الضجيج بنسبة هائلة.

2) قيّد المصدر متى استطعت

# اسمح فقط من عنوان مكتبك
iptables -t nat -A PREROUTING -s 203.0.113.25 -d 82.39.115.50 \
  -p tcp --dport 2201 -j DNAT --to-destination 10.10.10.11:22

هذه القاعدة وحدها تُلغي 99.9% من محاولات الاختراق.

3) مفاتيح لا كلمات مرور

# داخل الحاوية
sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart ssh

الأفضل من هذا كله: لا تمرّر منفذ SSH إطلاقاً، بل ادخل إلى المضيف ثم انتقل منه إلى الحاويات بـpct enter. أو استعمل VPN. تمرير المنافذ حلّ عملي، لكنه يوسّع مساحة هجومك بكل منفذ تفتحه.

بديل أنيق: النفق عبر SSH بلا فتح أي منفذ

إن كان لديك وصول SSH إلى المضيف، فأنت لا تحتاج فتح منافذ للحاويات أصلاً:

# من جهازك: اربط منفذك المحلي 8080 بخدمة داخلية
ssh -L 8080:10.10.10.11:80 [email protected]

# ثم افتح في متصفحك
http://localhost:8080

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

أخطاء شائعة وحلولها

العَرَضالسببالحل
القاعدة موجودة والاتصال يفشلتختبر من المضيف نفسهاختبر من جهاز خارجي
الاتصال يعلّق بلا ردّالخدمة لا تستمع أصلاً داخل الحاويةpct exec 202 -- ss -ltnp
connection refused فوراًلا توجد خدمة على المنفذ الداخليتحقّق من رقم المنفذ الداخلي
يعمل ثم يختفي بعد إعادة التشغيلالقواعد غير مثبَّتةضعها في post-up
حزم SSH تصل للحاوية الخطأقاعدتان بالمنفذ نفسهiptables -t nat -S PREROUTING واحذف المكرّر
المنفذ 80 ممرَّر ولا يعملخدمة على المضيف تستمع عليهss -ltnp | grep :80

أسئلة شائعة

كم منفذاً أستطيع تمريره؟

عملياً 65535 منفذاً. لكن كل منفذ مفتوح مسؤولية أمنية — والسؤال ليس «كم أستطيع» بل «كم أحتاج فعلاً».

هل أستطيع تمرير مدى منافذ دفعة واحدة؟

نعم: --dport 20000:20010 مع --to-destination 10.10.10.11:20000-20010. مفيد لخوادم الألعاب وFTP السلبي.

ولماذا لا أستعمل جدار Proxmox الرسومي؟

جدار Proxmox ممتاز للسماح والمنع، لكنه لا يوفّر DNAT بواجهة رسومية. التمرير يبقى بـiptables في ملف الشبكة.

هل يعمل التمرير مع UDP؟

نعم، استبدل -p tcp بـ-p udp. ضروري لـWireGuard وخوادم الألعاب.

وماذا لو أردت عشرة مواقع؟

هنا يتوقّف تمرير المنافذ عن كونه حلاً — وهذا بالضبط موضوع الجزء التالي.

الخطوة التالية

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

هذه المقالة جزء من سلسلة «من IP واحد إلى عشرات الخدمات» — عشرة أجزاء بُنيت كلها على سيرفر Proxmox حقيقي: ١. لماذا يكفي عنوان واحد · ٢. الشبكة الخاصة · ٣. إعداد NAT · ٤. تمرير المنافذ · ٥. الـReverse Proxy · ٦. Nginx Proxy Manager · ٧. النطاقات الفرعية · ٨. Cloudflare والشهادات · ٩. مقارنة الحلول · ١٠. سحابة صغيرة كاملة

Powered by WHMCompleteSolution