نكمل سلسلة شرح كورس فورتي جيت فايروول بالعربي، شرح عملي خطوة بخطوة على FortiOS 7.4 و 7.6.
فيما سبق تم شرح
- مقدمة عن فورتي جيت FortiGate
- طريقة تنزيل وضبط اعدادات ال VM FortiGate
- ضبط اعدادات كرت الشبكة على جهاز الكلاينت (Client)
- طريقة عمل reset لعدد الأيام (14) للـ VM FortiGate
- مشكلة انتهاء الـ License للفورتي جيت
- باك اب لإعدادات الـ FortiGate واستعادتها
- شرح مكونات وواجهات الفورتي جيت
- طريقة تغيير باسورد الأدمن في FortiGate
- طريقة توصيل الانترنت لجهاز الفورتي جيت
- ترقية الـ Firmware لجهاز الفورتي جيت
- إنشاء يوزر جديد و Administration profiles
- ما هو الفورتي جارد FortiGuard
- شرح SD-WAN في الفورتي جيت لخطّي إنترنت مع Performance SLA “
- شرح Firewall Policies في الفورتي جيت خطوة بخطوة “
في هذا الدرس نشرح الـ NAT (Network Address Translation) على الفورتي جيت بشكل عملي: كيف يخرج المستخدمون إلى الإنترنت بعنوان الـ WAN أو بمجموعة عناوين عامة (IP Pools)، وكيف ننشر سيرفر ويب داخلي للإنترنت باستخدام الـ Virtual IPs، ثم نتعرف باختصار على الفرق بين Policy NAT و Central NAT، وننهي بأوامر التحقق وأشهر الأخطاء. الشرح مبني على FortiOS 7.4 و 7.6.
أولًا: مفاهيم أساسية
الـ NAT على الفورتي جيت نوعان رئيسيان:
- Source NAT (SNAT): تغيير عنوان المصدر للحزم الخارجة، وهو ما يسمح لأجهزة الشبكة الداخلية ذات العناوين الخاصة بالوصول إلى الإنترنت.
- Destination NAT (DNAT): تغيير عنوان الوجهة للحزم الداخلة، وهو ما نستخدمه لنشر سيرفر داخلي (ويب، بريد، كاميرات) على عنوان عام. على الفورتي جيت يتم ذلك عن طريق كائن اسمه Virtual IP (VIP).
سنستخدم في الأمثلة الطوبولوجيا التالية:
| WAN | port1 بعنوان 203.0.113.10/24 (والـ ISP أعطانا أيضًا 203.0.113.20 حتى 203.0.113.25) |
| LAN | port2 بعنوان 192.168.10.1/24 والشبكة 192.168.10.0/24 |
| سيرفر الويب | 192.168.10.20 ويعمل على المنفذ 443 |
ثانيًا: Source NAT من داخل الـ Firewall Policy
في الوضع الافتراضي (Policy NAT) يتم تفعيل الـ SNAT من داخل كل Firewall Policy على حدة، ولديك خياران:
- Use Outgoing Interface Address: كل الأجهزة تخرج بعنوان واجهة الخروج (203.0.113.10). هذا هو الخيار الأشهر ويكفي لمعظم الشبكات الصغيرة والمتوسطة.
- Use Dynamic IP Pool: الأجهزة تخرج بعنوان (أو عناوين) من IP Pool تحدده أنت، وهذا مفيد عندما تريد فصل خروج قسم معين بعنوان عام مختلف، أو عندما تحتاج عددًا أكبر من المنافذ (Ports) لعدد كبير من المستخدمين.
أنواع الـ IP Pools
| النوع | طريقة العمل | متى تستخدمه |
|---|---|---|
| Overload | عدد كبير من العناوين الداخلية يخرج بعدد قليل من العناوين العامة مع ترجمة المنافذ (PAT). هو النوع الافتراضي. | الاستخدام العام للإنترنت |
| One-to-One | كل عنوان داخلي يأخذ عنوانًا عامًا واحدًا خاصًا به طوال الجلسة، فعدد المستخدمين المتزامنين محدود بعدد العناوين في الـ Pool. | تطبيقات لا تقبل تغيير المنفذ أو تتطلب عنوانًا ثابتًا لكل جهاز |
| Fixed Port Range | تحدد نطاقًا داخليًا (Source IP Range) ونطاقًا عامًا، فيتم توزيع العناوين العامة ومجالات المنافذ على العناوين الداخلية بشكل ثابت ومحسوب. | عندما تحتاج أن تعرف من السجلات أي جهاز داخلي كان خلف عنوان ومنفذ معين |
| Port Block Allocation | يخصص لكل مستخدم بلوكات من المنافذ. | بيئات مزودي الخدمة و CGNAT (خارج نطاق هذا الدرس) |
خطوات إنشاء IP Pool وربطه بالـ Policy من الواجهة الرسومية
- اذهب إلى
Policy & Objects > IP Poolsواضغط Create New واختر IP Pool. - اكتب الاسم مثلًا
WAN-Pool، واختر Type =Overload. - في External IP address/range اكتب
203.0.113.20-203.0.113.25. - اترك ARP Reply مفعّلًا حتى يرد الفورتي جيت على طلبات الـ ARP لهذه العناوين من راوتر الـ ISP، ثم اضغط OK.
- اذهب إلى
Policy & Objects > Firewall Policyوافتح الـ Policy من port2 إلى port1. - في قسم Firewall/Network Options فعّل NAT، ثم في IP Pool Configuration اختر Use Dynamic IP Pool وحدد
WAN-Pool. وإذا أردت الخروج بعنوان الواجهة فقط اختر Use Outgoing Interface Address. - اضغط OK.
المقابل في الـ CLI، مع مثال لنوع Fixed Port Range أيضًا:
config firewall ippool
edit "WAN-Pool"
set type overload
set startip 203.0.113.20
set endip 203.0.113.25
set arp-reply enable
next
edit "FPR-Pool"
set type fixed-port-range
set startip 203.0.113.24
set endip 203.0.113.25
set source-startip 192.168.10.100
set source-endip 192.168.10.199
next
end
config firewall policy
edit 1
set name "LAN-to-Internet"
set srcintf "port2"
set dstintf "port1"
set action accept
set srcaddr "all"
set dstaddr "all"
set schedule "always"
set service "ALL"
set nat enable
set ippool enable
set poolname "WAN-Pool"
next
end
ثالثًا: Destination NAT باستخدام Virtual IP (Port Forwarding)
المطلوب: أي اتصال يصل إلى العنوان العام 203.0.113.10 على المنفذ 443 يتم تحويله إلى السيرفر 192.168.10.20 على المنفذ 443. الـ VIP وحده لا يكفي، بل يجب إنشاء Policy واردة من port1 إلى port2 تستخدم الـ VIP كـ Destination.
- اذهب إلى
Policy & Objects > Virtual IPsواضغط Create New ثم Virtual IP. - الاسم:
VIP-Web-443، و Interface =port1، و Type =Static NAT. - External IP address/range =
203.0.113.10، و Map to IPv4 address/range =192.168.10.20. - فعّل Port Forwarding، واختر Protocol =
TCP، ثم External service port =443و Map to IPv4 port =443، واضغط OK. - اذهب إلى
Policy & Objects > Firewall Policyوأنشئ Policy جديدة: Incoming Interface =port1، و Outgoing Interface =port2، و Source =all(أو عناوين محددة إن أمكن)، و Destination =VIP-Web-443، و Service =HTTPS، و Action =ACCEPT. - أطفئ NAT في هذه الـ Policy حتى يرى السيرفر عنوان العميل الحقيقي، وفعّل الـ Security Profiles المناسبة مثل IPS، ثم اضغط OK.
config firewall vip
edit "VIP-Web-443"
set extip 203.0.113.10
set mappedip "192.168.10.20"
set extintf "port1"
set portforward enable
set protocol tcp
set extport 443
set mappedport 443
next
end
config firewall policy
edit 2
set name "Internet-to-WebServer"
set srcintf "port1"
set dstintf "port2"
set action accept
set srcaddr "all"
set dstaddr "VIP-Web-443"
set schedule "always"
set service "HTTPS"
set utm-status enable
set ips-sensor "default"
next
end
ملاحظة مهمة: الـ VIP من نوع Static NAT بدون Port Forwarding يعمل أيضًا كـ SNAT عكسي للسيرفر، أي أن السيرفر عندما يخرج للإنترنت عبر Policy مفعّل فيها NAT سيخرج بعنوان الـ VIP العام. أما مع Port Forwarding فالترجمة تخص المنفذ المحدد فقط.
رابعًا: Policy NAT أم Central NAT؟
الوضع الافتراضي هو Policy NAT الذي شرحناه. البديل هو Central NAT، وفيه يتم فصل الـ NAT تمامًا عن الـ Firewall Policies:
- الـ SNAT يُعرّف في جدول مستقل هو
Policy & Objects > Central SNAT، ويُقرأ من الأعلى للأسفل حتى أول تطابق، ويختفي خيار NAT من داخل الـ Firewall Policy. - الـ VIPs تعمل كـ DNAT بمجرد تفعيلها ولا تُوضع في الـ Policy، بل تكتب في الـ Policy عنوان السيرفر الداخلي الحقيقي (192.168.10.20) كـ Destination.
- الإعداد يتم على مستوى كل VDOM من
System > Settingsبتفعيل Central SNAT، أو من الـ CLI كما يلي:
config system settings
set central-nat enable
end
Central NAT مناسب للبيئات الكبيرة. لا تغيّر هذا الوضع على جهاز يعمل في الإنتاج قبل التخطيط، لأن طريقة كتابة الـ Policies والـ VIPs تتغير بالكامل.
خامسًا: التحقق واستكشاف الأخطاء
أهم أداة هي جدول الجلسات (Session Table). نضع فلترًا أولًا ثم نعرض الجلسات:
diagnose sys session filter clear
diagnose sys session filter dst 203.0.113.10
diagnose sys session filter dport 443
diagnose sys session list
diagnose sys session filter clear
diagnose sys session filter src 192.168.10.50
diagnose sys session list
في مخرجات الجلسة ابحث عن السطر hook=pre dir=org act=dnat الذي يوضح العنوان قبل وبعد التحويل في حالة الـ VIP، وعن hook=post dir=org act=snat في حالة الـ SNAT، وستجد فيه العنوان العام والمنفذ اللذين خرج بهما الجهاز. وتظهر أيضًا policy_id لتعرف أي Policy طابقت الحركة.
diagnose firewall iprope list 100004
diagnose firewall ippool list
diagnose firewall ippool-all list
diagnose debug reset
diagnose debug flow filter clear
diagnose debug flow filter addr 192.168.10.20
diagnose debug flow filter port 443
diagnose debug flow show function-name enable
diagnose debug console timestamp enable
diagnose debug flow trace start 20
diagnose debug enable
(جرّب الاتصال من الخارج)
diagnose debug disable
diagnose debug reset
diagnose sniffer packet any "host 192.168.10.20 and port 443" 4 0 l
diagnose firewall iprope list 100004يعرض الـ Policies كما هي محمّلة في الـ Kernel لمجموعة الحركة العابرة (Forward)، ويفيد في التأكد من الـ NAT المرتبط بكل Policy.diagnose firewall ippool listوdiagnose firewall ippool-all listيعرضان الـ IP Pools ومعلومات استخدامها.- في الـ Debug Flow ستجد رسائل مثل
DNAT 203.0.113.10:443->192.168.10.20:443وSNAT، وإذا رُفضت الحركة ستظهر رسالةDenied by forward policy checkومعها رقم الـ Policy. - الـ Sniffer على
anyيُظهر لك هل وصلت الحزمة للسيرفر وهل رد السيرفر أصلًا.
أخطاء شائعة
- إنشاء VIP بدون Policy واردة: الـ VIP مجرد كائن، ولن تمر أي حركة بدون Policy من port1 إلى port2 تستخدمه كـ Destination.
- تعارض مع منفذ إدارة الفورتي جيت: إذا كان HTTPS للإدارة مفعّلًا على port1 بالمنفذ 443 فسيتعارض مع الـ VIP على نفس العنوان والمنفذ. غيّر منفذ الإدارة (
set admin-sportتحتconfig system global) أو أوقف الإدارة من الـ WAN. - تفعيل NAT في الـ Policy الواردة بدون حاجة: فيظهر كل الزوار للسيرفر بعنوان الفورتي جيت الداخلي وتفقد سجلات السيرفر قيمتها.
- نسيان مسار العودة على السيرفر: يجب أن تكون الـ Default Gateway للسيرفر هي الفورتي جيت (192.168.10.1)، وإلا سيذهب الرد في طريق آخر وتفشل الجلسة.
- استخدام IP Pool بعناوين لا يوجهها الـ ISP إليك: العناوين يجب أن تكون مخصصة لك فعلًا وموجهة إلى واجهة الـ WAN، مع ARP Reply مفعّل إن كانت في نفس شبكة الواجهة.
- Deny Policy لا توقف حركة الـ VIP: افتراضيًا الـ Deny Policy التي وجهتها عنوان عادي لا تطابق حركة الـ VIP، ولمنعها يجب تفعيل
set match-vip enableفي تلك الـ Deny Policy أو وضع الـ VIP نفسه في الوجهة.
الخلاصة
الـ SNAT على الفورتي جيت يُضبط من داخل الـ Firewall Policy إما بعنوان واجهة الخروج أو بـ IP Pool من نوع Overload أو One-to-One أو Fixed Port Range حسب الحاجة. الـ DNAT يتم بالـ Virtual IP مع Policy واردة تستخدمه كوجهة. أما Central NAT فهو وضع بديل يُفعّل لكل VDOM ويفصل الـ NAT عن الـ Policies. وعند أي مشكلة ابدأ بـ diagnose sys session list مع فلتر، ثم diagnose debug flow لتعرف بالضبط أين تتوقف الحزمة. في الدرس القادم نبني VPN بين فرعين باستخدام IPsec Site-to-Site.


