إعداد Port Forwarding و NAT: دليل iptables
مفاهيم NAT، قواعد DNAT/SNAT، توجيه المنافذ مع iptables و nftables، المخفي وحالات الاستخدام: خوادم الألعاب، خوادم الويب خلف NAT.
جدول المحتويات
إعداد Port Forwarding و NAT: دليل iptables
توجيه المنافذ و NAT (ترجمة عناوين الشبكة) أدوات أساسية لإدارة حركة الشبكة. تستخدم هذه التقنيات لفتح الخدمات خلف خادم للخارج، وإعداد خوادم الألعاب، أو إدارة خدمات متعددة عبر IP واحد.
ما هو NAT؟
NAT (Network Address Translation) تقنية شبكية تعدّل عناوين المصدر أو الوجهة لحزم IP. هناك نوعان رئيسيان:
- SNAT (Source NAT): يغيّر عنوان IP المصدر — للحركة الصادرة
- DNAT (Destination NAT): يغيّر عنوان IP الوجهة — لتوجيه الحركة الواردة
- Masquerade: نوع SNAT خاص للـ IPs الديناميكية
تفعيل توجيه IP
# تفعيل مؤقت
sudo sysctl -w net.ipv4.ip_forward=1
# تفعيل دائم
sudo nano /etc/sysctl.conf
# أضف السطر:
# net.ipv4.ip_forward=1
# تطبيق التغييرات
sudo sysctl -p
# التحقق
cat /proc/sys/net/ipv4/ip_forward
# الإخراج: 1
توجيه المنافذ مع iptables (DNAT)
توجيه المنافذ الأساسي
# توجيه المنفذ الخارجي 80 إلى الخادم الداخلي
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
# توجيه المنفذ الخارجي 443 إلى الخادم الداخلي
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 192.168.1.10:443
# التوجيه إلى رقم منفذ مختلف (خارجي 8080 → داخلي 80)
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80
# السماح بالحركة الموجَّهة
sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 443 -j ACCEPT
توجيه منافذ UDP
# توجيه منفذ UDP لخادم الألعاب
sudo iptables -t nat -A PREROUTING -p udp --dport 27015 -j DNAT --to-destination 192.168.1.30:27015
sudo iptables -A FORWARD -p udp -d 192.168.1.30 --dport 27015 -j ACCEPT
SNAT و Masquerade
# Masquerade — للـ IP الديناميكي
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# SNAT — للـ IP الثابت (أكثر كفاءة)
sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1
إعداد NAT الكامل
# 1. مسح القواعد الموجودة
sudo iptables -F
sudo iptables -t nat -F
# 2. السياسات الافتراضية
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# 3. Loopback والاتصالات المنشأة
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# 4. وصول SSH
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 5. قواعد توجيه المنافذ
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 192.168.1.10:443
sudo iptables -t nat -A PREROUTING -p udp --dport 27015 -j DNAT --to-destination 192.168.1.30:27015
# 6. قواعد FORWARD
sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 443 -j ACCEPT
sudo iptables -A FORWARD -p udp -d 192.168.1.30 --dport 27015 -j ACCEPT
# 7. Masquerade
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 8. حفظ القواعد
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
توجيه المنافذ مع nftables
#!/usr/sbin/nft -f
flush ruleset
table ip nat {
chain prerouting {
type nat hook prerouting priority -100;
tcp dport 80 dnat to 192.168.1.10:80
tcp dport 443 dnat to 192.168.1.10:443
udp dport 27015 dnat to 192.168.1.30:27015
}
chain postrouting {
type nat hook postrouting priority 100;
oif eth0 masquerade
}
}
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iif lo accept
ct state established,related accept
tcp dport 22 accept
}
chain forward {
type filter hook forward priority 0; policy drop;
ct state established,related accept
ip daddr 192.168.1.10 tcp dport { 80, 443 } accept
ip daddr 192.168.1.30 udp dport 27015 accept
}
chain output {
type filter hook output priority 0; policy accept;
}
}
حالات الاستخدام
الحالة 1: خادم الألعاب (CS2, Minecraft)
# خادم CS2
sudo iptables -t nat -A PREROUTING -p udp --dport 27015 -j DNAT --to-destination 192.168.1.30:27015
sudo iptables -t nat -A PREROUTING -p tcp --dport 27015 -j DNAT --to-destination 192.168.1.30:27015
sudo iptables -A FORWARD -d 192.168.1.30 -p udp --dport 27015 -j ACCEPT
# خادم Minecraft
sudo iptables -t nat -A PREROUTING -p tcp --dport 25565 -j DNAT --to-destination 192.168.1.31:25565
sudo iptables -A FORWARD -d 192.168.1.31 -p tcp --dport 25565 -j ACCEPT
الحالة 2: خادم الويب خلف NAT
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 192.168.1.10:443
sudo iptables -A FORWARD -i eth0 -d 192.168.1.10 -p tcp -m multiport --dports 80,443 -j ACCEPT
استكشاف الأخطاء
# عرض جدول NAT
sudo iptables -t nat -L -n -v
# عرض جدول تتبع الاتصالات
sudo conntrack -L
# مراقبة الحركة على منفذ محدد
sudo tcpdump -i eth0 port 80
# فحص توجيه IP
cat /proc/sys/net/ipv4/ip_forward
بعد إضافة قواعد توجيه المنافذ، لا تنسَ إضافة كل من قواعد PREROUTING (DNAT) و FORWARD. إضافة قاعدة DNAT فقط غير كافية — يجب أيضًا السماح بالحركة في سلسلة FORWARD.
الخلاصة
توجيه المنافذ و NAT مكونات أساسية لإدارة شبكة Linux. بإعداد قواعد DNAT و SNAT و masquerade بشكل صحيح مع iptables أو nftables، يمكنك فتح خوادم الألعاب وخدمات الويب والتطبيقات الأخرى من خلف NAT.
مقالات ذات صلة
فحص البرامج الضارة والـ Rootkit: دليل rkhunter و ClamAV
احمِ خادم Linux من البرامج الضارة والـ Rootkit. تثبيت rkhunter و ClamAV، إعداد الفحص، تفسير النتائج، الفحص المجدول والاستجابة للحوادث.
إعداد Fail2Ban: دليل حماية SSH من هجمات Brute-Force
احمِ خادمك من هجمات SSH Brute-Force باستخدام Fail2Ban. التثبيت، إعداد jail.local، جيلات Nginx/Apache، القائمة البيضاء للـ IP، مراقبة الحظر وتنبيهات البريد الإلكتروني.
إعداد خادم WireGuard VPN: دليل خطوة بخطوة
أنشئ خادم WireGuard VPN: توليد المفاتيح، إعداد الخادم والعميل، توجيه IP، قواعد جدار الحماية وإعداد عملاء Windows/Linux/Android.