INTEGRITY Dokumentace

Fortinet

Tento návod poskytuje informace a příklady konfigurace Cloudflare WAN (dříve Magic WAN) s tunely Internet Protocol Security (IPsec) ve spojení s firewally Fortinet FortiGate.

Zde uvedená konfigurační nastavení FortiGate podporují obousměrné kontroly stavu podle požadavků Cloudflare WAN. Nezohledňují však žádné jiné toky provozu mimo kontroly stavu tunelu. Konfigurace může vyžadovat úpravu na základě vaší stávající konfigurace FortiGate.

Testovací prostředí

Konfigurace FortiGate byla otestována na dvou různých firewallech FortiGate:

Konfigurace Cloudflare WAN

Chcete-li nastavit Cloudflare WAN, přidejte do svého účtu Cloudflare pomocí dashboardu nebo API tunely IPsec a statické trasy.

Než budete pokračovat, ujistěte se, že máte k účtu přiřazenou adresu IPv4 anycast. Najdete ji na Cloudflare dashboardu v části Adresní prostor > Pronajaté IP adresy.

Tunely IPsec

Cloudflare řeší výpadky ve své síti automaticky tím, že vaši endpoint IP adresu inzeruje z více uzlů napříč mnoha celosvětově rozmístěnými datacentry. Chcete-li zajistit odolnost proti výpadkům ve vlastní síti, nakonfigurujte dva tunely IPsec ze dvou samostatných routerů.

  1. Postupujte podle Přidejte tunely pokyny pro vytvoření požadovaných tunelů IPsec s následujícími možnostmi:
    • Typ kontroly stavu: Změňte na Požadavek.
    • Replay Protection: Neměňte výchozí nastavení.

Statické trasy

Přidejte dvě statické trasy definující adresní prostor IP za tunely IPsec, jednu ke každému ze dvou tunelů IPsec definovaných v předchozí části.

Statické trasy jsou ve výchozím nastavení definovány s prioritou nastavenou na 100. Cloudflare využívá Equal Cost Multipath Routing (ECMP) a bude rovnoměrně rozkládat zátěž provozu mezi oba tunely. Pokud dáváte přednost modelu Active/Passive, můžete u první trasy ponechat výchozí hodnotu nastavenou na 100, a hodnotu pro druhý tunel nastavte na 150 (vyšší hodnota znamená nižší prioritu).

  1. Postupujte podle Nakonfigurujte statické trasy pokyny pro vytvoření statické trasy.

  2. U první trasy zkontrolujte, že jsou definována následující nastavení:

    • Prefix: Zadejte RFC1918 podsíť, která se nachází za prvním tunelem IPsec definovaným v předchozí sekci.
    • Tunel / další skok: Vyberte první tunel (Tunnel 01 of 02).
  3. U druhé trasy zkontrolujte, že jsou definována následující nastavení:

    • Prefix: Zadejte RFC1918 podsíť, která se nachází za druhým tunelem IPsec definovaným v předchozí sekci.
    • Tunel / další skok: Vyberte druhý tunel (Tunnel 02 of 02).

Konfigurace Fortinet FortiGate

Povolení asymetrického směrování

Povolte asymetrické směrování pro ICMP, aby kontroly stavu fungovaly podle očekávání. Tato možnost je povinná. Jinak nebudou kontroly stavu tunelu, které jsou klíčové pro správné fungování Cloudflare WAN, fungovat tak, jak mají.

Povolení asymetrického směrování ovlivní chování zařízení FortiGate. Další informace najdete v Jak se FortiGate chová při zapnutém asymetrickém směrování.

config system settings
    set asymroute-icmp enable
end

Nakonfigurujte NAT-T (volitelné)

Pokud máte ve své síti Network Address Translation Traversal (NAT-T), můžete tuto funkci povolit a zahájit komunikaci Internet Key Exchange (IKE) na portu 4500.

Chcete-li nastavit port IKE, přidejte do nastavení systému následující:

config system settings
    set ike-port 4500
end

Chcete-li povolit NAT-T, přidejte set nattraversal enable k tunelům IPsec, které konfigurujete.

fortigate # config vpn ipsec phase1-interface
    edit "<NAME_OF_YOUR_TUNNEL>"
        set nattraversal enable

Viz dokumentace Fortinet pro další podrobnosti.

Zakázat ochranu anti-replay

U konfigurací IPsec založených na trasách musíte vypnout ochranu proti opakování (anti-replay). Následující příkaz vypne ochranu proti opakování globálně, ale můžete to provést i pro jednotlivé zásady firewallu. Další informace najdete v dokumentaci Fortinet k podpora anti-replay pro jednotlivé zásady a zjistěte více.

config system global
    set anti-replay disable
end

Tunely IPsec

Tunely IPsec využívají model site-to-site Virtual Private Network (VPN) založený na trasách. Tento model definuje provoz procházející tunely IPsec pomocí virtuálních tunelových rozhraní a směrování.

Nakonfigurujte dva tunely IPsec pomocí phase1-interface a phase2-interface objekty.

Následující příklady předpokládají wan1 je externí/odchozí rozhraní firewallu FortiGate.

Přidání rozhraní Phase 1

MWAN_IPsec_Tun1 odpovídá Tunnel 01 of 02, který jste dříve přidali v sekci Cloudflare v konfiguraci. MWAN_IPsec_Tun2 odpovídá Tunnel 02 of 02, který jste dříve přidali v sekci Cloudflare v konfiguraci.

fortigate # config vpn ipsec phase1-interface
    edit "MWAN_IPsec_Tun1"
        set interface "wan1"
        set ike-version 2
        set keylife 86400
        set peertype any
        set net-device enable
        set proposal aes256gcm-prfsha512 aes256gcm-prfsha384 aes256gcm-prfsha256
        set localid "f1473dXXXXXXX72e33.49561179.ipsec.cloudflare.com"
        set dhgrp 20
        set nattraversal disable
        set remote-gw 162.159.67.210
        set add-gw-route enable
        set psksecret <YOUR_PRE-SHARED_KEY>
    next
    edit "MWAN_IPsec_Tun2"
        set interface "wan1"
        set ike-version 2
        set keylife 86400
        set peertype any
        set net-device enable
        set proposal aes256gcm-prfsha512 aes256gcm-prfsha384 aes256gcm-prfsha256
        set localid "de91565XXXXXXXfbbd6632.49561179.ipsec.cloudflare.com"
        set dhgrp 20
        set nattraversal disable
        set remote-gw 172.XX.XX.210
        set add-gw-route enable
        set psksecret ENC <YOUR_PRE-SHARED_KEY>
    next
end

Přidání rozhraní Phase 2

Přidejte dva phase2-interfaces: jeden pro každý ze dvou phase1-interfaces následovně:

fortigate # config vpn ipsec phase2-interface
    edit "MWAN_IPsec_Tun1"
        set phase1name "MWAN_IPsec_Tun1"
        set proposal aes256gcm aes128gcm
        set dhgrp 20
        set replay disable
        set keylifeseconds 28800
        set auto-negotiate enable
        set keepalive enable
    next
    edit "MWAN_IPsec_Tun2"
        set phase1name "MWAN_IPsec_Tun2"
        set proposal aes256gcm aes128gcm
        set dhgrp 20
        set replay disable
        set keylifeseconds 28800
        set auto-negotiate enable
        set keepalive enable
    next
end

Síťová rozhraní

Virtual tunnel interfaces

Nakonfigurujte virtuální tunelová rozhraní, která byla automaticky přidána při zadání set net-device enable v rámci phase1-interface nastavení.

Toto jsou jediná nastavení, která by měla být potřeba přidat do virtuálních tunelových rozhraní:

Následující příklady předpokládají wan1 je externí/odchozí rozhraní firewallu FortiGate.

fortigate # config system interface
    edit "MWAN_IPsec_Tun1"
        set vdom "root"
        set ip 10.252.2.91 255.255.255.255
        set allowaccess ping
        set type tunnel
        set remote-ip 10.252.2.90 255.255.255.254
        set alias "MWAN_IPsec_Tun1"
        set snmp-index 17
        set interface "wan1"
    next
    edit "MWAN_IPsec_Tun2"
        set vdom "root"
        set ip 10.252.2.93 255.255.255.255
        set allowaccess ping
        set type tunnel
        set remote-ip 10.252.2.92 255.255.255.254
        set alias "MWAN_IPsec_Tun2"
        set snmp-index 18
        set interface "wan1"
    next
end

Ověřit komunikaci mezi virtuálními tunelovými rozhraními

Jakmile jsou virtuální tunelová rozhraní nakonfigurována, měli byste být schopni pingnout IP adresu přidruženou k remote-ip atribut.

Následující příklady ukazují úspěšné výsledky pingování přes obě virtuální tunelová rozhraní:

MWAN_IPsec_Tun1

fortigate # execute ping 10.252.2.90
PING 10.252.2.90 (10.252.2.90): 56 data bytes
64 bytes from 10.252.2.90: icmp_seq=0 ttl=64 time=5.8 ms
64 bytes from 10.252.2.90: icmp_seq=1 ttl=64 time=5.8 ms
64 bytes from 10.252.2.90: icmp_seq=2 ttl=64 time=5.8 ms
64 bytes from 10.252.2.90: icmp_seq=3 ttl=64 time=5.8 ms
64 bytes from 10.252.2.90: icmp_seq=4 ttl=64 time=5.7 ms

--- 10.252.2.90 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 5.7/5.7/5.8 ms

MWAN_IPsec_Tun2

fortigate # execute ping 10.252.2.92
PING 10.252.2.92 (10.252.2.92): 56 data bytes
64 bytes from 10.252.2.92: icmp_seq=0 ttl=64 time=6.1 ms
64 bytes from 10.252.2.92: icmp_seq=1 ttl=64 time=6.1 ms
64 bytes from 10.252.2.92: icmp_seq=2 ttl=64 time=6.1 ms
64 bytes from 10.252.2.92: icmp_seq=3 ttl=64 time=6.1 ms
64 bytes from 10.252.2.92: icmp_seq=4 ttl=64 time=6.0 ms

--- 10.252.2.92 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 6.0/6.0/6.1 ms

Objekty zóny (volitelné)

Tato ukázková konfigurace předpokládá, že na firewallu FortiGate jsou nakonfigurovány tři zóny. Tyto objekty zón se používají v zásadách, na které se tento dokument odkazuje dále:

fortigate # config system zone
    edit "Cloudflare_Zone"
        set intrazone allow
        set interface "MWAN_IPsec_Tun1" "MWAN_IPsec_Tun2"
    next
    edit "Trust_Zone"
        set intrazone allow
        set interface "internal"
    next
    edit "Untrust_Zone"
        set intrazone allow
        set interface "wan1"
    next
end

Create Address Objects

Vytvořte Address Objects, které představují Rozsah IPv4 adres Cloudflare a také objekty pro obousměrné anycast IP adresy kontroly stavu:

config firewall address
    edit "Cloudflare_IPv4_01"
        set color 9
        set subnet 173.245.48.0 255.255.240.0
    next
    edit "Cloudflare_IPv4_02"
        set color 9
        set subnet 103.21.244.0 255.255.252.0
    next
    edit "Cloudflare_IPv4_03"
        set color 9
        set subnet 103.22.200.0 255.255.252.0
    next
    edit "Cloudflare_IPv4_04"
        set color 9
        set subnet 103.31.4.0 255.255.252.0
    next
    edit "Cloudflare_IPv4_05"
        set color 9
        set subnet 141.101.64.0 255.255.192.0
    next
    edit "Cloudflare_IPv4_06"
        set color 9
        set subnet 108.162.192.0 255.255.192.0
    next
    edit "Cloudflare_IPv4_07"
        set color 9
        set subnet 190.93.240.0 255.255.240.0
    next
    edit "Cloudflare_IPv4_08"
        set color 9
        set subnet 188.114.96.0 255.255.240.0
    next
    edit "Cloudflare_IPv4_09"
        set color 9
        set subnet 197.234.240.0 255.255.252.0
    next
    edit "Cloudflare_IPv4_10"
        set color 9
        set subnet 198.41.128.0 255.255.128.0
    next
    edit "Cloudflare_IPv4_11"
        set color 9
        set subnet 162.158.0.0 255.254.0.0
    next
    edit "Cloudflare_IPv4_12"
        set color 9
        set subnet 104.16.0.0 255.248.0.0
    next
    edit "Cloudflare_IPv4_13"
        set color 9
        set subnet 104.24.0.0 255.252.0.0
    next
    edit "Cloudflare_IPv4_14"
        set color 9
        set subnet 172.64.0.0 255.248.0.0
    next
    edit "Cloudflare_IPv4_15"
        set color 9
        set subnet 131.0.72.0 255.255.252.0
    next
    edit "Bidirect_HC_Endpoint_01"
        set comment "Bidirectional health check endpoint address"
        set color 9
        set subnet 172.64.240.253 255.255.255.255
    next
    edit "Bidirect_HC_Endpoint_02"
        set comment "Bidirectional health check endpoint address"
        set color 9
        set subnet 172.64.240.254 255.255.255.255
    next
end

Nakonfigurujte Address Group Object

Vytvořte Address Object, který obsahuje všechny IPv4 podsítě Cloudflare. Zkopírujte a vložte následující příkazy CLI do terminálu SSH a objekty vytvořte automaticky:

config firewall addrgrp
    edit "Cloudflare_IPv4_Nets"
        set member "Cloudflare_IPv4_01" "Cloudflare_IPv4_02" "Cloudflare_IPv4_03" "Cloudflare_IPv4_04" "Cloudflare_IPv4_05" "Cloudflare_IPv4_06" "Cloudflare_IPv4_07" "Cloudflare_IPv4_08" "Cloudflare_IPv4_09" "Cloudflare_IPv4_10" "Cloudflare_IPv4_11" "Cloudflare_IPv4_12" "Cloudflare_IPv4_13" "Cloudflare_IPv4_14" "Cloudflare_IPv4_15"
        set color 9
    next
end

Přidat bezpečnostní zásadu

Přidejte pravidlo firewallu, které povolí provoz ICMP související s obousměrnými kontrolami stavu typu reply.

fortigate (policy) # show
config firewall policy
    edit 2
        set name "CF_Magic_Health_Checks"
        set uuid 80eb76ce-3033-51ee-c5e5-d5a670dff3b3
        set srcintf "Cloudflare_Zone"
        set action accept
        set srcaddr "Cloudflare_IPv4_Nets"
        set dstaddr "Bidirect_HC_Endpoint_01" "Bidirect_HC_Endpoint_02"
        set schedule "always"
        set service "ALL_ICMP"
        set logtraffic all
    next
end

Směrování založené na zásadách

Přidejte pravidla směrování založená na zásadách, aby se provoz spojený s obousměrnými kontrolami stavu přijatý přes tunel IPsec vracel stejným tunelem.

Přidejte dvě pravidla směrování na základě zásad, jedno pro každý ze dvou tunelů IPsec.

fortigate # config router policy
    edit 1
        set input-device "MWAN_IPsec_Tun1"
        set srcaddr "all"
        set dstaddr "all"
        set gateway 10.252.2.90
        set output-device "MWAN_IPsec_Tun1"
    next
    edit 2
        set input-device "MWAN_IPsec_Tun2"
        set srcaddr "all"
        set dstaddr "all"
        set gateway 10.252.2.92
        set output-device "MWAN_IPsec_Tun2"
    next
end

Sledujte kontroly stavu tunelů IPsec v Cloudflare

Dashboard Cloudflare sleduje stav všech anycast tunelů na vašem účtu, které směrují provoz z Cloudflare do vaší cílové sítě. Podrobnosti najdete v Zkontrolujte stav tunelu na dashboardu s dalšími informacemi.

Řešení potíží

Zachytávání paketů

Zachytávání paketů určuje, zda pravidla směrování na základě zásad fungují podle očekávání.

Provoz vstupující do Tunnel 01 of 02 by měl vystupovat stejným tunelem, jak ukazuje následující příklad:

fortigate # diagnose sniffer packet any 'host 172.64.240.253' 4
interfaces=[any]
filters=[host 172.64.240.253]
0.601569 MWAN_IPsec_Tun1 in 172.64.240.253 -> 162.158.176.118: icmp: echo reply
0.601585 MWAN_IPsec_Tun1 out 172.64.240.253 -> 162.158.176.118: icmp: echo reply
0.611164 MWAN_IPsec_Tun1 in 172.64.240.253 -> 172.71.87.94: icmp: echo reply
0.611178 MWAN_IPsec_Tun1 out 172.64.240.253 -> 172.71.87.94: icmp: echo reply
0.617562 MWAN_IPsec_Tun1 in 172.64.240.253 -> 172.71.129.214: icmp: echo reply
0.617574 MWAN_IPsec_Tun1 out 172.64.240.253 -> 172.71.129.214: icmp: echo reply
0.622042 MWAN_IPsec_Tun1 in 172.64.240.253 -> 172.69.61.43: icmp: echo reply
0.622056 MWAN_IPsec_Tun1 out 172.64.240.253 -> 172.69.61.43: icmp: echo reply
0.624092 MWAN_IPsec_Tun1 in 172.64.240.253 -> 172.68.9.214: icmp: echo reply

Naopak provoz vstupující do Tunelu 02 z 02 by měl odcházet stejným tunelem:

fortigate # diagnose sniffer packet any 'host 172.64.240.254' 4
interfaces=[any]
filters=[host 172.64.240.254]
0.912041 MWAN_IPsec_Tun2 in 172.64.240.254 -> 172.70.177.56: icmp: echo reply
0.912057 MWAN_IPsec_Tun2 out 172.64.240.254 -> 172.70.177.56: icmp: echo reply
0.913579 MWAN_IPsec_Tun2 in 172.64.240.254 -> 172.70.221.154: icmp: echo reply
0.913592 MWAN_IPsec_Tun2 out 172.64.240.254 -> 172.70.221.154: icmp: echo reply
0.914247 MWAN_IPsec_Tun2 in 172.64.240.254 -> 162.158.1.85: icmp: echo reply
0.914260 MWAN_IPsec_Tun2 out 172.64.240.254 -> 162.158.1.85: icmp: echo reply
0.918533 MWAN_IPsec_Tun2 in 172.64.240.254 -> 172.71.125.75: icmp: echo reply
0.918550 MWAN_IPsec_Tun2 out 172.64.240.254 -> 172.71.125.75: icmp: echo reply
0.924465 MWAN_IPsec_Tun2 in 172.64.240.254 -> 172.69.21.134: icmp: echo reply

Ladění toku

Ladění toku pomáhá určit, zda provoz do firewallu vstupuje nebo z něj vystupuje očekávanou cestou. Poskytuje více podrobností než zachytávání paketů pomocí sniffer nástroje z předchozí části, ale vytváří značné množství protokolů, a proto by mělo být zapnuto jen v nezbytně nutných případech.

Zákazníci se navíc pravděpodobně budou muset obrátit na technickou podporu Fortinet, aby jim pomohla interpretovat ladicí protokoly toků a poradila, jak nakonfigurovat FortiGate tak, aby byly toky směrovány správně podle požadavků dané aplikace.

fortigate # diagnose debug disable
fortigate # diagnose debug flow filter clear
fortigate # diagnose debug reset
fortigate # diagnose debug flow filter addr 172.64.240.253
fortigate # diagnose debug show flow show function-name enable
fortigate # diagnose debug config-error-log timestamps enable
fortigate # diagnose debug flow trace start 999
fortigate # diagnose debug enable
fortigate # 2023-08-01 09:27:26 id=20085 trace_id=2871 func=print_pkt_detail line=5844 msg="vd-root:0 received a packet(proto=1, 172.64.240.253:56968->172.70.121.28:0) tun_id=162.159.67.210 from MWAN_IPsec_Tun1. type=0, code=0, id=56968, seq=0."
2023-08-01 09:27:26 id=20085 trace_id=2871 func=rpdb_srv_match_input line=1036 msg="Match policy routing id=1: to 10.252.2.90 via ifindex-34"
2023-08-01 09:27:26 id=20085 trace_id=2871 func=vf_ip_route_input_common line=2605 msg="find a route: flag=00000000 gw-162.159.67.210 via MWAN_IPsec_Tun1"
2023-08-01 09:27:26 id=20085 trace_id=2871 func=ipsecdev_hard_start_xmit line=669 msg="enter IPSec interface MWAN_IPsec_Tun1, tun_id=0.0.0.0"
2023-08-01 09:27:26 id=20085 trace_id=2871 func=_do_ipsecdev_hard_start_xmit line=229 msg="output to IPSec tunnel MWAN_IPsec_Tun1"
2023-08-01 09:27:26 id=20085 trace_id=2871 func=esp_output4 line=844 msg="IPsec encrypt/auth"
2023-08-01 09:27:26 id=20085 trace_id=2871 func=ipsec_output_finish line=544 msg="send to 172.71.91.34 via intf-wan1"
2023-08-01 09:27:26 id=20085 trace_id=2872 func=print_pkt_detail line=5844 msg="vd-root:0 received a packet(proto=1, 172.64.240.253:18685->162.158.209.64:0) tun_id=162.159.67.210 from MWAN_IPsec_Tun1. type=0, code=0, id=18685, seq=0."
2023-08-01 09:27:26 id=20085 trace_id=2872 func=rpdb_srv_match_input line=1036 msg="Match policy routing id=1: to 10.252.2.90 via ifindex-34"
2023-08-01 09:27:26 id=20085 trace_id=2872 func=vf_ip_route_input_common line=2605 msg="find a route: flag=00000000 gw-162.159.67.210 via MWAN_IPsec_Tun1"
2023-08-01 09:27:26 id=20085 trace_id=2872 func=ipsecdev_hard_start_xmit line=669 msg="enter IPSec interface MWAN_IPsec_Tun1, tun_id=0.0.0.0"
2023-08-01 09:27:26 id=20085 trace_id=2872 func=_do_ipsecdev_hard_start_xmit line=229 msg="output to IPSec tunnel MWAN_IPsec_Tun1"
2023-08-01 09:27:26 id=20085 trace_id=2872 func=esp_output4 line=844 msg="IPsec encrypt/auth"
2023-08-01 09:27:26 id=20085 trace_id=2872 func=ipsec_output_finish line=544 msg="send to 172.71.91.34 via intf-wan1"

Zakázat Flow Debugging

Typické použití CTRL + C nezastaví Flow Debugging.

Flow Debugging můžete vypnout jednoduše zadáním následujícího příkazu kdykoli během procházení ladicích protokolů:

fortigate # diagnose debug disable