VPN فورتی گیت: IPsec site-to-site و دسترسی کارمندان
VPN فورتی گیت در FortiOS 7.6؛ تونل IPsec site-to-site با IKEv2، route، blackhole و policy، عیب یابی تونل و دسترسی کارمندان با FortiClient به جای SSL VPN.
در این صفحه
VPN فورتی گیت در FortiOS 7.6 دو کاربرد اصلی دارد. برای site-to-site یک تونل IPsec با IKEv2 بین دو FortiGate میسازید (phase1-interface و phase2-interface)، مسیر شبکهی طرف مقابل را به اینترفیس تونل میدهید، یک blackhole route با distance 254 کنارش میگذارید و دو policy بدون NAT برای رفت و برگشت مینویسید. برای دسترسی کارمندان، از FortiOS 7.6.3 به بعد SSL VPN tunnel mode روی هیچ مدلی وجود ندارد و طبق Release Notes جایگزین آن IPsec VPN است؛ راهنمای مهاجرت Fortinet برای این کار IKEv2 با FortiClient را توصیه میکند که روی TCP پورت 443 هم کار میکند. کانفیگ پایهی دستگاه در کانفیگ اولیهی فورتی گیت و منطق policy در Policy و NAT در فورتی گیت آمده است.
وضعیت SSL VPN در FortiOS 7.4 و 7.6
| نسخه | SSL VPN tunnel mode | web mode (از 7.6.3 با نام Agentless VPN) |
|---|---|---|
| 7.4 (طبق Release Notes نسخهی 7.4.12) | هست، به جز مدلهای entry-level سری G: 50G، 70G، 90G و انواعشان | مثل tunnel mode |
| 7.6.0 تا 7.6.2 | از مدلهای ۲ گیگابایتی حذف شده است: 40F، 60F، 61F و FGR-60F | مثل tunnel mode |
| 7.6.3 به بعد و 8.0 | روی هیچ مدلی نیست؛ از GUI و CLI حذف شده | هست، به جز 40F، 50G، 60F، 61F، FGR-60F (نسخهی ۲ گیگ)، 70G، 90G و 91G |
طبق Release Notes نسخهی 7.6.7، تنظیمات SSL VPN tunnel mode هنگام ارتقا به 7.6.3 یا بالاتر منتقل نمیشود و Fortinet از مشتریها میخواهد پیش از ارتقا دسترسی کاربران را به IPsec منتقل کنند. Best Practices نسخهی 7.6 هم برای دسترسی از راه دور IPsec VPN را پیشنهاد میکند و ZTNA و FortiSASE را گزینههای غیر VPN میداند. اگر مطمئن نیستید دستگاهتان ۲ گیگابایتی است:
diagnose hardware sysinfo conserveاگر total RAM کمتر از 2000 MB باشد، دستگاه جزو همین مدلهاست.
site-to-site بین دو FortiGate
| دفتر مرکزی (HQ) | شعبه (BR1) | |
|---|---|---|
IP اینترفیس wan1 |
203.0.113.2 |
198.51.100.2 |
شبکهی داخلی (lan) |
192.168.10.0/24 |
192.168.20.0/24 |
| نام تونل | to-BR1 |
to-HQ |
در مسیر بین دو دستگاه UDP 500 و UDP 4500 (IKE و NAT-T) باید باز باشد و اگر NAT در مسیر نیست، ESP (پروتکل شمارهی 50) هم. برخی ارائه دهندهها این پورتها را محدود میکنند؛ در Best Practices آمده که پورت IKE روی FortiGate قابل تغییر است.
phase 1 و phase 2
phase 1 هویت دو طرف را با کلید مشترک (PSK) یا گواهی تأیید میکند و کانال امن مذاکره را میسازد. phase 2 تعیین میکند کدام ترافیک با چه الگوریتمی رمز شود. روی HQ:
config vpn ipsec phase1-interface
edit "to-BR1"
set interface "wan1"
set ike-version 2
set peertype any
set net-device disable
set proposal aes256gcm-prfsha384 aes256-sha256
set dhgrp 20 21
set remote-gw 198.51.100.2
set psksecret <pre-shared-key>
next
end
config vpn ipsec phase2-interface
edit "to-BR1"
set phase1name "to-BR1"
set proposal aes256gcm aes256-sha256
set dhgrp 20 21
set auto-negotiate enable
set src-subnet 192.168.10.0 255.255.255.0
set dst-subnet 192.168.20.0 255.255.255.0
next
endike-version 2: پیش فرض CLI در 7.6.7 هنوز IKEv1 است، پس آن را صریح بنویسید. در 8.0 طبق Release Notes، CLI هنگام انتخاب IKEv1 هشدار میدهد و طبق Fortinet Community پیش فرض نصبهای جدید IKEv2 است.dhgrp: پیش فرض CLI در 7.6 گروههای 14 و 5 است و Release Notes نسخهی 8.0 آن را به 20 و 21 تغییر داده است. روی 7.6 مقدار را خودتان بدهید.proposalوdhgrpباید دست کم یک مقدار مشترک با طرف مقابل داشته باشند؛ وگرنه phase 1 یا phase 2 بالا نمیآید.auto-negotiate enableدر phase 2 پیش فرض خاموش است. با روشن کردنش SA بدون منتظر ماندن برای ترافیک ساخته میشود و تونل حتی بدون ترافیک بالا میماند.- selectorها:
src-subnetوdst-subnetدر دو طرف باید قرینهی هم باشند. پیش فرض هر دو0.0.0.0 0.0.0.0است؛ با تجهیز وندور دیگر معمولاً subnet دقیق لازم است.
روی BR1 همین دستورها را با نام to-HQ، remote-gw 203.0.113.2، همان PSK و selectorهای برعکس بزنید.
آدرسها، policy و route
هر تونل مبتنی بر route یک اینترفیس مجازی همنام خودش میسازد و policy و route به همین اینترفیس اشاره میکنند. طبق Troubleshooting Tip در Fortinet Community، بدون policy تونل اصلاً بالا نمیآید و در debug پیام ignoring request to establish IPsec SA, no policy configured دیده میشود.
config firewall address
edit "HQ-LAN"
set subnet 192.168.10.0 255.255.255.0
next
edit "BR1-LAN"
set subnet 192.168.20.0 255.255.255.0
next
end
config firewall policy
edit 0
set name "HQ-to-BR1"
set srcintf "lan"
set dstintf "to-BR1"
set srcaddr "HQ-LAN"
set dstaddr "BR1-LAN"
set action accept
set schedule "always"
set service "ALL"
next
edit 0
set name "BR1-to-HQ"
set srcintf "to-BR1"
set dstintf "lan"
set srcaddr "BR1-LAN"
set dstaddr "HQ-LAN"
set action accept
set schedule "always"
set service "ALL"
next
end
config router static
edit 0
set dst 192.168.20.0 255.255.255.0
set device "to-BR1"
next
edit 0
set dst 192.168.20.0 255.255.255.0
set blackhole enable
set distance 254
next
end- NAT روی policyهای تونل خاموش بماند. اگر NAT روشن باشد، مبدأ بسته با selector جور نمیشود و debug flow خطای
No matching IPsec selector, dropمیدهد. - blackhole route: وقتی تونل قطع است، route تونل غیرفعال میشود و بدون blackhole، ترافیک شبکهی شعبه از مسیر پیش فرض و رمز نشده به سمت اینترنت میرود. به علاوه sessionهای UDP و ICMP روی مسیر اشتباه میمانند و بعد از بالا آمدن تونل هم کار نمیکنند. Fortinet مقدار 254 را پیشنهاد میکند؛ 255 را نگذارید، چون route با distance 255 هرگز در جدول مسیریابی نصب نمیشود.
- اگر چند شعبه دارید، میتوانید subnetهای همه را در یک address group بگذارید و برای کل آن یک blackhole بسازید. برای استفاده از آبجکت در route، گزینهی Static route configuration را روی آدرس روشن کنید.
روش GUI
در 7.6 مسیر VPN → VPN Tunnels → Create New → IPsec Tunnel from template است و قالب Site to Site را انتخاب میکنید. نام تونل حداکثر ۱۵ نویسه است. طبق Fortinet Community، این قالب selectorها، آدرسها، route تونل، blackhole route و policyها را خودکار میسازد و گزینهی Transport (از 7.6 برای IKEv2) هم در همین مراحل است. بعد از ساخت، خروجی را با show vpn ipsec phase1-interface بررسی کنید تا بدانید قالب چه چیزی نوشته است.
بررسی و عیب یابی تونل
get vpn ipsec tunnel summary
diagnose vpn ike gateway list name to-BR1
diagnose vpn tunnel list name to-BR1
diagnose vpn tunnel up to-BR1
execute ping-options source 192.168.10.1
execute ping 192.168.20.1get vpn ipsec tunnel summary: وضعیت کلی phase 2 همهی تونلها.diagnose vpn ike gateway list: وضعیت phase 1؛establishedیعنی IKE SA ساخته شده وconnectingیعنی مذاکره به نتیجه نرسیده است.diagnose vpn tunnel list: SAهای phase 2 و شمارندههایencوdec. اگرencبالا میرود وdecنه، بستهها میروند ولی جوابی از طرف مقابل نمیرسد.execute ping-options source: آدرس مبدأ ping را یکی از IPهای LAN خود FortiGate بگذارید تا بسته در selector تونل بگنجد.
در GUI همین اطلاعات در Dashboard → Network → IPsec است و دکمهی Bring Up تونل را دستی بالا میآورد. اگر phase 1 بالا نمیآید، debug IKE را روی طرف پاسخ دهنده بگیرید. از 7.4.1 دستور قدیمی log-filter dst-addr4 به log filter rem-addr4 تغییر کرده است:
diagnose debug reset
diagnose vpn ike log filter clear
diagnose vpn ike log filter rem-addr4 198.51.100.2
diagnose debug console timestamp enable
diagnose debug application ike -1
diagnose debug enableهمزمان در نشست دیگری رسیدن بستهها را ببینید:
diagnose sniffer packet any "host 198.51.100.2 and (port 500 or port 4500)" 4 0 aبعد از کار diagnose debug disable و diagnose debug reset را بزنید. برای پاک کردن SAها و مذاکرهی دوباره: diagnose vpn tunnel flush to-BR1 و diagnose vpn ike gateway clear name to-BR1.
| نشانه | علت محتمل |
|---|---|
| هیچ بستهای روی UDP 500 یا 4500 نمیرسد | remote-gw اشتباه، route به IP طرف مقابل از اینترفیس دیگری است، یا مسیر بالادست پورت را بسته |
| phase 1 در حالت connecting میماند | PSK، نسخهی IKE، proposal یا DH group دو طرف یکی نیست |
| phase 1 بالاست، phase 2 نه | selectorها قرینه نیستند یا proposal و PFS دو طرف فرق دارد |
| تونل بالاست ولی ترافیک عبور نمیکند | policy یا route نیست، NAT روی policy روشن است، یا gateway سرور مقصد FortiGate نیست |
| تونل مرتب قطع و وصل میشود | مشکل خط اینترنت، یا DPD که local-in policy جلویش را گرفته |
دسترسی کارمندان با FortiClient و IPsec
کارمند با FortiClient به WAN دفتر مرکزی وصل میشود، نام کاربری و رمز (و در صورت نیاز رمز دوم) را وارد میکند و یک IP از بازهی VPN میگیرد. تصمیمهای اصلی پیش از کانفیگ:
- IKEv2: راهنمای مهاجرت Fortinet آن را توصیه میکند، چون فقط IKEv2 روی TCP کار میکند. به علاوه FortiClient از 7.4.4 به بعد IKEv1 را پشتیبانی نمیکند.
- Transport: در IKEv2 سه گزینه دارید: UDP، Auto (اول UDP و در صورت شکست TCP) و TCP. TCP به FortiClient 7.4.1 یا بالاتر نیاز دارد و برای شبکههایی مفید است که فقط ترافیک TCP را عبور میدهند، مثل برخی شبکههای مهمان. گزینهی Fortinet encapsulation را خاموش بگذارید، چون FortiClient آن را پشتیبانی نمیکند.
- احراز هویت کاربر: در IKEv2 با EAP انجام میشود. کاربر محلی FortiGate (با FortiToken) و RADIUS با روش پیش فرض FortiClient یعنی EAP-MSCHAPv2 کار میکنند. LDAP روی Active Directory با EAP-MSCHAPv2 کار نمیکند، چون FortiGate رمز ساده را برای bind ندارد و AD به طور پیش فرض attributeهای جایگزین را هم نمیدهد. راه حل یا EAP-TTLS روی FortiClient 7.4.3 یا بالاتر است (با EMS، یا در نسخهی رایگان با ویرایش دستی فایل کانفیگ FortiClient)، یا احراز هویت کاربران از طریق RADIUS (مثلاً NPS ویندوز). SAML هم فقط در IKEv2 و از FortiClient 7.2.4 پشتیبانی میشود.
- split tunnel: با آن فقط ترافیک شبکههای داخلی از تونل میرود. در قالب GUI پیش فرض روشن و در کانفیگ دستی پیش فرض خاموش است.
کانفیگ
سادهترین راه، قالب Remote Access با VPN client type برابر FortiClient در همان مسیر VPN Tunnels است؛ phase 1 و 2، بازهی IP، آدرسها و policy را با هم میسازد. معادل CLI، بر اساس مثال Fortinet Community و با گروه کاربری VPN-Users که از قبل ساخته شده:
config firewall address
edit "VPN-Split"
set subnet 192.168.10.0 255.255.255.0
next
end
config vpn ipsec phase1-interface
edit "RA-IKEv2"
set type dynamic
set interface "wan1"
set ike-version 2
set peertype any
set net-device disable
set mode-cfg enable
set proposal aes256gcm-prfsha384 aes256-sha256
set dhgrp 20 21
set eap enable
set eap-identity send-request
set authusrgrp "VPN-Users"
set ipv4-start-ip 10.99.0.10
set ipv4-end-ip 10.99.0.200
set dns-mode auto
set ipv4-split-include "VPN-Split"
set save-password enable
set transport tcp
set psksecret <pre-shared-key>
next
end
config vpn ipsec phase2-interface
edit "RA-IKEv2"
set phase1name "RA-IKEv2"
set proposal aes256gcm aes256-sha256
set dhgrp 20 21
next
end
config firewall policy
edit 0
set name "RA-to-LAN"
set srcintf "RA-IKEv2"
set dstintf "lan"
set srcaddr "all"
set dstaddr "VPN-Split"
set action accept
set schedule "always"
set service "ALL"
next
endtransport tcp: پورت ازike-tcp-portدرconfig system settingsمیآید و طبق Release Notes، از 7.6.1 در نصبهای جدید 443 است. اگر پورت مدیریتی HTTPS (admin-sport) هم 443 باشد، GUI روی اینترفیسی که تونل رویش است در دسترس نمیماند؛ یکی از دو پورت را عوض کنید. اگر TCP لازم ندارید، این خط را حذف کنید تا تونل روی UDP بماند.- گروه کاربری: یا در phase 1 با
authusrgrp، یا در policy؛ نه هر دو. اگر گروههای مختلف دسترسی متفاوت دارند، گروه را در policyها بگذارید. - policy را محدود کنید: به جای
service ALLفقط سرویسهایی را باز کنید که کارمندان لازم دارند. - چند تونل dialup روی یک WAN: در IKEv2 FortiGate تونلها را با Network ID از هم جدا میکند و این تنظیم در FortiClient بدون EMS قابل تنظیم نیست. برای سازمان کوچک یک تونل با چند گروه در policy سادهتر است.
- رمز دوم: اگر کاربران با FortiToken گاهی وصل نمیشوند، Fortinet افزایش
negotiate-timeoutاز ۳۰ ثانیهی پیش فرض (مثلاً به 50) را پیشنهاد میکند تا کاربر فرصت وارد کردن کد را داشته باشد.
FortiClient
روی FortiClient یک اتصال IPsec VPN بسازید: Remote Gateway آدرس WAN، روش احراز هویت Pre-shared key با همان کلید، و در Advanced Settings نسخهی IKE را 2 و در صورت نیاز Transport را TCP بگذارید. proposal و DH group باید با phase 1 و 2 روی FortiGate جور باشند. طبق Release Notes نسخهی 7.4.7، نسخهی رایگان VPN-only از 7.4.3 به بعد به روز نشده و همان 7.4.3 قابل استفاده است. در سازمانهای بزرگتر، راهنمای مهاجرت Fortinet مدیریت متمرکز پروفایلها با FortiClient EMS را ترجیح میدهد.
برای بررسی اتصال یک کاربر، علاوه بر diagnose vpn tunnel list، debug احراز هویت را هم بگیرید و در فیلتر، IP عمومی کاربر را بگذارید:
diagnose vpn ike log filter rem-addr4 <user-public-ip>
diagnose debug application ike -1
diagnose debug application fnbamd -1
diagnose debug application eap_proxy -1
diagnose debug enableقدم بعدی
برای چند شعبه، به جای تونل جدا برای هر شعبه، طراحی hub and spoke با ADVPN و مسیریابی پویا روی تونلها را بررسی کنید؛ اصول انتخاب مسیر در OSPF از صفر آمده است. اگر شعبهها روتر میکروتیک دارند، پیش از ساخت تونل IPsec بین FortiGate و RouterOS تفاوتهای نسخهها را در RouterOS 6 در برابر RouterOS 7 ببینید.
منابع
- FortiOS 7.6.7 Release Notes fortinetweb.s3.amazonaws.com
- FortiOS 7.6.0 Release Notes fortinetweb.s3.amazonaws.com
- FortiOS 7.4.12 Release Notes fortinetweb.s3.amazonaws.com
- FortiOS 8.0.0 Release Notes fortinetweb.s3.amazonaws.com
- FortiOS 7.6.0 SSL VPN to IPsec VPN Migration fortinetweb.s3.amazonaws.com
- FortiOS 7.6.0 Best Practices fortinetweb.s3.amazonaws.com
- FortiOS 7.6.7 CLI Reference fortinetweb.s3.amazonaws.com
- FortiOS 7.6 Troubleshooting Cheat Sheet fortinetweb.s3.amazonaws.com
- FortiClient (Windows) 7.4.7 Release Notes fortinetweb.s3.amazonaws.com
- Fortinet Community — Technical Tip: Recommended Release for FortiOS community.fortinet.com
- Fortinet Community — Technical Tip: How to configure VPN Site to Site between FortiGates community.fortinet.com
- Fortinet Community — Technical Tip: Using Blackhole routes in site-to-site IPsec VPN community.fortinet.com
- Fortinet Community — Troubleshooting Tip: Troubleshooting IPsec site-to-site tunnel connectivity community.fortinet.com
- Fortinet Community — Technical Tip: IPsec dial-up tunnel using IKEv2 with FortiToken 2FA for local users community.fortinet.com
- Fortinet Community — Technical Tip: IKEv2 dial up VPN with LDAP authentication community.fortinet.com
- Fortinet Community — Technical Tip: New FortiOS 7.6 site-to-site IPsec VPN using the GUI template community.fortinet.com