FortiOS 6.4.6 Administration Guide

Download as pdf or txt
Download as pdf or txt
You are on page 1of 1880

FortiOS - Administration Guide

Version 6.4.6
FORTINET DOCUMENT LIBRARY
https://docs.fortinet.com

FORTINET VIDEO GUIDE


https://video.fortinet.com

FORTINET BLOG
https://blog.fortinet.com

CUSTOMER SERVICE & SUPPORT


https://support.fortinet.com

FORTINET TRAINING & CERTIFICATION PROGRAM


https://www.fortinet.com/support-and-training/training.html

NSE INSTITUTE
https://training.fortinet.com

FORTIGUARD CENTER
https://www.fortiguard.com

END USER LICENSE AGREEMENT


https://www.fortinet.com/doc/legal/EULA.pdf

FEEDBACK
Email: [email protected]

May 20, 2021


FortiOS 6.4.6 Administration Guide
01-646-607590-20210520
TABLE OF CONTENTS

Change Log 17
Getting started 18
Differences between models 18
Using the GUI 18
Connecting using a web browser 18
Menus 19
Tables 20
Entering values 22
Using the CLI 23
Connecting to the CLI 23
CLI basics 26
Command syntax 32
Subcommands 35
Permissions 37
FortiExplorer for iOS 37
Getting started with FortiExplorer 38
Connecting FortiExplorer to a FortiGate via WiFi 41
Running a security rating 42
Upgrading to FortiExplorer Pro 43
Basic administration 43
Registration 44
FortiCare and FortiGate Cloud login 47
Transferring a FortiCloud account title 50
Configuration backups 52
Troubleshooting your installation 56
Zero touch provisioning 58
Zero touch provisioning with FortiDeploy 58
Zero touch provisioning with FortiManager 60
Dashboards and widgets 62
Using dashboards 62
Viewing device dashboards in the security fabric 64
Creating a fabric system and license dashboard 65
Using widgets 67
Changing the default dashboard template 68
Monitor dashboards and widgets 69
Static & Dynamic Routing Monitor 70
DHCP monitor 72
IPsec monitor 73
SSL-VPN monitor 75
Firewall Users Monitor 75
Implement a user device store to centralize device data 76
WiFi Dashboard 77
Device inventory 84
FortiView 89

FortiOS 6.4.6 Administration Guide 3


Fortinet Technologies Inc.
FortiView monitors and widgets 89
Adding FortiView widgets 91
VDOMs and dashboards 93
FortiView interface 94
FortiView from disk 101
FortiView from FortiAnalyzer 103
FortiView from FortiGate Cloud 104
FortiView sources 105
FortiView Sessions 107
Viewing top websites and sources by category 111
Cloud application view 114
Viewing session information for a compromised host 125
Fortinet Security Fabric 127
Security Fabric settings and usage 127
Components 128
Configuring the root FortiGate and downstream FortiGates 130
Configuring FortiAnalyzer 137
Configuring other Security Fabric devices 138
Using the Security Fabric 166
Deploying the Security Fabric 178
Synchronizing objects across the Security Fabric 186
Security Fabric over IPsec VPN 195
Leveraging LLDP to simplify security fabric negotiation 201
Configuring the Security Fabric with SAML 203
Configuring single-sign-on in the Security Fabric 203
CLI commands for SAML SSO 208
SAML SSO with pre-authorized FortiGates 209
Navigating between Security Fabric members with SSO 210
Integrating FortiAnalyzer management using SAML SSO 212
Integrating FortiManager management using SAML SSO 215
Advanced option - FortiGate SP changes 216
Advanced option - unique SAML attribute types 217
Security rating 220
Security Fabric score 224
Automation stitches 225
Creating automation stitches 225
Triggers 236
Actions 241
Execute a CLI script based on CPU and memory thresholds 276
Public and private SDN connectors 281
Getting started with public and private SDN connectors 282
AliCloud SDN connector using access key 286
AWS SDN connector using certificates 288
Azure SDN connector using service principal 294
Cisco ACI SDN connector using a standalone connector 295
ClearPass endpoint connector via FortiManager 297
GCP SDN connector using service account 301
IBM Cloud SDN connector using API keys 303

FortiOS 6.4.6 Administration Guide 4


Fortinet Technologies Inc.
Kubernetes (K8s) SDN connectors 306
Nuage SDN connector using server credentials 320
OCI SDN connector using certificates 322
OpenStack SDN connector using node credentials 324
VMware ESXi SDN connector using server credentials 328
VMware NSX-T Manager SDN connector using NSX-T Manager credentials 330
Multiple concurrent SDN connectors 334
Filter lookup in SDN connectors 336
Support for wildcard SDN connectors in filter configurations 339
Endpoint/Identity connectors 341
Fortinet single sign-on agent 341
Poll Active Directory server 342
Symantec endpoint connector 342
RADIUS single sign-on  agent 348
Exchange Server connector 351
Threat feeds 355
External resources file format 356
Create a threat feed 356
Update history 357
External blocklist  – Policy 358
External blocklist  - Authentication 359
External blocklist - File hashes 360
External resources for DNS filter 361
Monitoring the Security Fabric using FortiMonitor 366
NOC and SOC Example 367
Troubleshooting 377
Viewing a summary of all connected FortiGates in a Security Fabric 378
Diagnosing automation stitches 380
Network 384
Interfaces 384
Interface settings 385
Aggregation and redundancy 388
VLANs 390
Enhanced MAC VLANs 396
Inter-VDOM routing 399
Software switch 404
Hardware switch 406
Zone 408
Virtual Wire Pair 410
Virtual switch support for FortiGate 300E series 411
Failure detection for aggregate and redundant interfaces 413
VLAN inside VXLAN 414
Virtual Wire Pair with VXLAN 416
Assign a subnet with the FortiIPAM service 418
Configure a VRF ID on an interface 425
Interface MTU packet size 427
One-arm sniffer 429
DNS 430

FortiOS 6.4.6 Administration Guide 5


Fortinet Technologies Inc.
Important DNS CLI commands 431
DNS domain list 432
FortiGate DNS server 434
DDNS 436
DNS latency information 439
DNS over TLS 441
DNS troubleshooting 442
Explicit and transparent proxies 443
Explicit web proxy 443
FTP proxy 446
Transparent proxy 448
Proxy policy addresses 451
Proxy policy security profiles 459
Explicit proxy authentication 465
Transparent web proxy forwarding 471
Upstream proxy authentication in transparent proxy mode 472
Multiple dynamic header count 474
Restricted SaaS access (Office 365, G Suite, Dropbox) 476
Explicit proxy and FortiSandbox Cloud 479
Proxy chaining (web proxy forwarding servers) 481
Agentless NTLM authentication for web proxy 486
Multiple LDAP servers in Kerberos keytabs and agentless NTLM domain controllers 489
Learn client IP addresses 490
DHCP server 491
Configure DHCP on the FortiGate 492
DHCP options 492
IP address assignment with relay agent information option 494
DHCP client options 496
Static routing 497
Routing concepts 498
Policy routes 507
Equal cost multi-path 510
Dual internet connections 514
RIP 520
OSPF 520
BGP 520
Multicast 520
Multicast routing and PIM support 521
Configuring multicast forwarding 521
FortiExtender 524
FortiExtender models with two modems 524
Data plan profiles 528
Direct IP support for LTE/4G 530
LLDP reception 533
Route leaking between VRFs 536
Route leaking between multiple VRFs 538
NetFlow 548
Verification and troubleshooting 550

FortiOS 6.4.6 Administration Guide 6


Fortinet Technologies Inc.
NetFlow templates 550
SD-WAN 563
SD-WAN quick start 563
Configuring the SD-WAN interface 564
Adding a static route 565
Selecting the implicit SD-WAN algorithm 565
Configuring firewall policies for SD-WAN 566
Link monitoring and failover 567
Results 568
Configuring SD-WAN in the CLI 572
SD-WAN zones 574
Performance SLA 579
Link health monitor 579
Factory default health checks 582
Health check options 584
Link monitoring example 587
SLA targets example 588
Health check packet DSCP marker support 590
Interface speedtest 590
Monitor performance SLA 592
SLA monitoring using the REST API 595
SD-WAN rules 598
Implicit rule 599
Best quality strategy 603
Lowest cost (SLA) strategy 606
Maximize bandwidth (SLA) strategy 609
Minimum number of links for a rule to take effect 612
Use MAC addresses in SD-WAN rules and policy routes 613
SD-WAN traffic shaping and QoS 614
SDN dynamic connector addresses in SD-WAN rules 619
Application steering using SD-WAN rules 622
DSCP tag-based traffic steering in SD-WAN 633
Advanced routing 644
Self-originating traffic 644
Using BGP tags with SD-WAN rules 649
BGP multiple path support 652
Controlling traffic with BGP route mapping and service rules 655
Applying BGP route-map to multiple BGP neighbors 661
IBGP and EBGP support in VRF 667
VPN overlay 670
ADVPN and shortcut paths 670
SD-WAN monitor on ADVPN shortcuts 683
SD-WAN integration with OCVPN 684
Forward error correction on VPN overlay networks 691
Dual VPN tunnel wizard 694
Duplicate packets based on SD-WAN rules 695
Duplicate packets on other zone members 697
Advanced configuration 699

FortiOS 6.4.6 Administration Guide 7


Fortinet Technologies Inc.
SD-WAN with FGCP HA 699
Configuring A-A SD-WAN with internal FortiGate hardware switches 706
SD-WAN configuration portability 709
SD-WAN cloud on-ramp 715
Configuring the VPN overlay between the HQ FortiGate and cloud FortiGate-VM 716
Configuring the VPN overlay between the HQ FortiGate and AWS native VPN 
gateway 720
Configuring the VIP to access the remote servers 724
Configuring the SD-WAN to steer traffic between the overlays 726
Verifying the traffic 731
Hub and spoke SD-WAN deployment example 738
Datacenter configuration 738
Branch configuration 743
Validation 747
Troubleshooting 748
Dynamic definition of SD-WAN routes 748
Adding another datacenter 749
Troubleshooting SD-WAN 750
Tracking SD-WAN sessions 750
Understanding SD-WAN related logs 751
SD-WAN related diagnose commands 754
SD-WAN bandwidth monitoring service 758
Using SNMP to monitor health check 761
System 765
Basic system settings 765
Advanced system settings 765
Operating modes 766
Administrators 767
Administrator profiles 767
Add a local administrator 769
Remote authentication for administrators 769
Password policy 772
Admin profile option for diagnose access 773
Associating a FortiToken to an administrator account 773
SSO administrators 774
Firmware 775
Firmware upgrade notifications 775
Downloading a firmware image 776
Testing a firmware version 778
Upgrading the firmware 779
Downgrading to a previous firmware version 780
Installing firmware from system reboot 781
Restoring from a USB drive 782
Controlled upgrade 783
Settings 783
Default administrator password 783
Changing the host name 784
Setting the system time 785

FortiOS 6.4.6 Administration Guide 8


Fortinet Technologies Inc.
Configuring ports 788
Setting the idle timeout time 789
Setting the password policy 789
Changing the view settings 789
Setting the administrator password retries and lockout time 790
TLS configuration 791
Controlling return path with auxiliary session 791
Email alerts 795
Virtual Domains 798
Global and per-VDOM resources 799
Split-task VDOM mode 801
Multi VDOM mode 804
Configure VDOM-A 807
Configure VDOM-B 809
Configure the VDOM link 812
Configure VDOM-A 817
Configure VDOM-B 819
High Availability 820
Introduction to the FGCP cluster 821
Failover protection 823
FGSP (session synchronization) peer setup 824
UTM inspection on asymmetric traffic in FGSP 825
UTM inspection on asymmetric traffic on L3 827
Encryption for L3 on asymmetric traffic in FGSP 829
Synchronizing sessions between FGCP clusters 829
Using standalone configuration synchronization 831
Session synchronization interfaces in FGSP 833
Out-of-band management with reserved management interfaces 835
In-band management 841
Troubleshoot an HA formation 842
Check HA sync status 842
Disabling stateful SCTP inspection 844
Upgrading FortiGates in an HA cluster 845
HA cluster setup examples 846
FGSP example with devices using different hardware and firmware 855
HA between remote sites over managed FortiSwitches 891
Routing NetFlow data over the HA management interface 896
Override FortiAnalyzer and syslog server settings 898
Force HA failover for testing and demonstrations 902
Querying autoscale clusters for FortiGate VM 905
VDOM exceptions 906
SNMP 907
Interface access 908
MIB files 908
FortiGate Rugged 30D SNMP bridge MIB module support 909
SNMP agent 911
SNMP v1/v2c communities 911
SNMP v3 users 913
Important SNMP traps 914

FortiOS 6.4.6 Administration Guide 9


Fortinet Technologies Inc.
SNMP traps and query for monitoring DHCP pool 916
Replacement messages 917
Modifying replacement messages 917
Replacement message images 919
Replacement message groups 921
FortiGuard 924
IPv6 FortiGuard connections 925
Configuring FortiGuard updates 925
Manual updates 926
Automatic updates 927
Sending malware statistics to FortiGuard 928
Update server location 929
Filtering 930
Override FortiGuard servers 931
Online security tools 932
FortiGuard anycast and third-party SSL validation 932
Using FortiManager as a local FortiGuard server 935
Cloud service communication statistics 936
IoT detection service 937
FortiAP query to FortiGuard IoT service to determine device details 939
Feature visibility 940
Security feature presets 940
Certificates 941
Microsoft CA deep packet inspection 941
Procure and import a signed SSL certificate 946
Provision a trusted certificate with Let's Encrypt 949
Configuration scripts 953
Workspace mode 954
Custom languages 955
Policy and Objects 957
Policies 957
Firewall policy parameters 958
Profile-based NGFW vs policy-based NGFW 959
NGFW policy mode application default service 963
Application logging in NGFW policy mode 965
Policy views and policy lookup 966
Policy with source NAT 968
Policy with destination NAT 982
Policy with Internet Service 994
NAT64 policy and DNS64 (DNS proxy) 1012
NAT46 policy 1015
Local-in policies 1019
DoS protection 1019
Access control lists 1027
Mirroring SSL traffic in policies 1028
Inspection mode per policy 1030
OSPFv3 neighbor authentication 1033
Firewall anti-replay option per policy 1035

FortiOS 6.4.6 Administration Guide 10


Fortinet Technologies Inc.
Enabling advanced policy options in the GUI 1035
Recognize anycast addresses in geo-IP blocking 1036
Matching GeoIP by registered and physical location 1037
Authentication policy extensions 1039
HTTP to HTTPS redirect for load balancing 1040
GTPv2 in policies 1041
Use active directory objects directly in policies 1043
FortiGate Cloud / FDN communication through an explicit proxy 1046
No session timeout 1048
MAP-E support 1049
Objects 1053
Address group exclusions 1053
MAC addressed-based policies 1055
ISDB well-known MAC address list 1057
Dynamic policy — fabric devices 1059
FSSO dynamic address subtype 1061
ClearPass integration for dynamic address objects 1064
Group address objects synchronized from FortiManager 1069
Using wildcard FQDN addresses in firewall policies 1071
Configure FQDN-based VIPs 1073
IPv6 geography-based addresses 1074
Array structure for address objects 1076
IPv6 MAC addresses and usage in firewall policies 1078
Traffic shaping 1080
Determining your QoS requirements 1081
Packet rates 1082
Changing traffic shaper bandwidth unit of measurement 1084
Shared traffic shaper 1084
Per-IP traffic shaper 1089
Type of Service-based prioritization and policy-based traffic shaping 1092
Interface-based traffic shaping profile 1095
Interface-based traffic shaping with NP acceleration 1103
Classifying traffic by source interface 1104
Configuring traffic class IDs 1105
Traffic shaping schedules 1108
DSCP matching (shaping) 1109
QoS assignment and rate limiting for quarantined VLANs 1113
Weighted random early detection queuing 1114
Security Profiles 1121
Inspection modes 1121
Flow mode inspection (default mode) 1122
Proxy mode inspection 1122
Inspection mode feature comparison 1124
Antivirus 1126
Protocol comparison between antivirus inspection modes 1126
Other antivirus differences between inspection modes 1127
Databases 1128
Content disarm and reconstruction 1128

FortiOS 6.4.6 Administration Guide 11


Fortinet Technologies Inc.
FortiGuard outbreak prevention 1130
External malware block list 1132
Checking flow antivirus statistics 1134
CIFS support 1136
Using FortiSandbox with antivirus 1141
Using FortiSandbox Cloud with antivirus 1148
Web filter 1154
URL filter 1155
FortiGuard filter 1161
Credential phishing prevention 1167
Usage quota 1170
Web content filter 1172
Advanced filters 1 1175
Advanced filters 2 1178
Web filter statistics 1183
URL certificate blocklist 1184
DNS filter 1185
Configuring a DNS filter profile 1185
FortiGuard category-based DNS domain filtering 1188
Botnet C&C domain blocking 1190
DNS safe search 1194
Local domain filter 1196
DNS translation 1199
Applying DNS filter to FortiGate DNS server 1202
Troubleshooting for DNS filter 1203
Application control 1206
Basic category filters and overrides 1207
Excluding signatures in application control profiles 1210
Port enforcement check 1212
Protocol enforcement 1212
SSL-based application detection over decrypted traffic in a sandwich topology 1214
Matching multiple parameters on application control signatures 1215
Intrusion prevention 1218
Botnet C&C IP blocking 1218
Detecting IEC 61850 MMS protocol in IPS 1223
IPS signature filter options 1225
File filter 1227
Logs 1229
Supported file types 1230
Email filter 1233
Protocol comparison between email filter inspection modes 1233
Local-based filters 1234
FortiGuard-based filters 1237
Protocols and actions 1238
Configuring webmail filtering 1240
Data leak prevention 1240
Protocol comparison between DLP inspection modes 1241
Logging and blocking files by file name 1241

FortiOS 6.4.6 Administration Guide 12


Fortinet Technologies Inc.
Basic DLP filter types 1242
DLP fingerprinting 1244
VoIP solutions 1248
General use cases 1248
SIP message inspection and filtering 1252
SIP pinholes 1254
SIP over TLS 1255
Custom SIP RTP port range support 1256
Voice VLAN auto-assignment 1258
ICAP 1259
ICAP configuration example 1260
ICAP response filtering 1262
Web application firewall 1265
Protecting a server running web applications 1265
SSL & SSH Inspection 1269
Certificate inspection 1269
Deep inspection 1271
Protecting an SSL server 1273
Handling SSL offloaded traffic from an external decryption device 1274
SSH traffic file scanning 1276
Redirect to WAD after handshake completion 1278
Custom signatures 1279
Application groups in policies 1279
Blocking applications with custom signatures 1281
Overrides 1284
Web rating override 1284
Web profile override 1289
VPN 1294
IPsec VPNs 1294
General IPsec VPN configuration 1294
Site-to-site VPN 1319
Remote access 1377
Aggregate and redundant VPN 1414
Overlay Controller VPN (OCVPN) 1454
ADVPN 1485
Other VPN topics 1519
VPN IPsec troubleshooting 1550
SSL VPN 1557
SSL VPN best practices 1558
SSL VPN quick start 1560
SSL VPN tunnel mode 1567
SSL VPN web mode for remote user 1574
SSL VPN authentication 1578
SSL VPN to IPsec VPN 1660
SSL VPN protocols 1670
SSL VPN troubleshooting 1671
User & Authentication 1675
Endpoint control and compliance 1675

FortiOS 6.4.6 Administration Guide 13


Fortinet Technologies Inc.
Per-policy disclaimer messages 1675
Compliance 1677
FortiGuard distribution of updated Apple certificates 1682
User Definition 1683
User types 1684
Removing a user 1684
User Groups 1685
Configuring POP3 authentication 1685
Guest Management 1686
Configuring guest access 1686
Retail environment guest access 1688
LDAP Servers 1689
FSSO polling connector agent installation 1689
Enabling Active Directory recursive search 1695
Configuring LDAP dial-in using a member attribute 1696
Configuring wildcard admin accounts 1697
Configuring least privileges  for LDAP admin account authentication in Active 
Directory 1699
RADIUS Servers 1699
Configuring RADIUS SSO authentication 1699
RSA ACE (SecurID) servers 1706
Support for Okta RADIUS attributes filter-Id and class 1710
Send multiple RADIUS attribute values in a single RADIUS Access-Request 1712
TACACS+ Servers 1713
SAML 1714
Outbound firewall authentication for a SAML user 1714
SAML SP for VPN authentication 1716
Authentication Settings 1718
FortiTokens 1720
FortiToken Mobile quick start 1721
FortiToken Cloud quick start 1732
Registering hard tokens 1736
Managing FortiTokens 1739
FortiToken Mobile Push 1741
Troubleshooting and diagnosis 1743
Configuring the maximum log in attempts and lockout period 1746
PKI 1747
Creating a PKI/peer user 1747
Configuring firewall authentication 1747
Creating a locally authenticated user account 1748
Creating a RADIUS-authenticated user account 1749
Creating an FSSO user group 1749
Creating a firewall user group 1751
Defining policy addresses 1752
Creating security policies 1752

FortiOS 6.4.6 Administration Guide 14


Fortinet Technologies Inc.
Wireless configuration 1755
Switch Controller 1756
Log and Report 1757
Viewing event logs 1757
Sample logs by log type 1759
Log buffer on FortiGates with an SSD disk 1778
Checking the email filter log 1781
Supported log types to FortiAnalyzer, syslog, and FortiAnalyzer Cloud 1782
Sending traffic logs to FortiAnalyzer Cloud 1782
Example 1783
Configuring multiple FortiAnalyzers on a multi-VDOM FortiGate 1785
Checking FortiAnalyzer connectivity 1786
Configuring multiple FortiAnalyzers (or syslog servers) per VDOM 1788
Source and destination UUID logging 1789
Logging the signal-to-noise ratio and signal strength per client 1791
RSSO information for authenticated destination users in logs 1794
Scenario 1 1794
Scenario 2 1795
Scenario 3 1796
Threat weight 1797
Troubleshooting 1798
Log-related diagnose commands 1798
Backing up log files or dumping log messages 1804
SNMP OID for logs that failed to send 1806
VM 1810
Amazon Web Services 1810
Microsoft Azure 1810
Google Cloud Platform 1810
Oracle OCI 1810
AliCloud 1810
Private cloud 1810
VM license 1810
Uploading a license file 1811
Types of VM licenses 1812
CLI troubleshooting 1813
FortiGate multiple connector support 1814
Adding VDOMs with FortiGate v-series 1817
Terraform: FortiOS as a provider 1819
Troubleshooting 1823
PF and VF SR-IOV driver and virtual SPU support 1824
Using OCI IMDSv2 1825
Troubleshooting 1828
Troubleshooting methodologies 1829
Verify user permissions 1829
Establish a baseline 1829

FortiOS 6.4.6 Administration Guide 15


Fortinet Technologies Inc.
Create a troubleshooting plan 1831
Troubleshooting scenarios 1832
Checking the system date and time 1833
Checking the hardware connections 1834
Checking FortiOS network settings 1835
Troubleshooting CPU and network resources 1838
Troubleshooting high CPU usage 1839
Checking the modem status 1843
Running ping and traceroute 1844
Checking the logs 1847
Verifying routing table contents in NAT mode 1848
Verifying the correct route is being used 1849
Verifying the correct firewall policy is being used 1849
Checking the bridging information in transparent mode 1850
Checking the number of sessions that UTM proxy uses 1851
Checking wireless information 1855
Performing a sniffer trace (CLI and packet capture) 1856
Debugging the packet flow 1859
Testing a proxy operation 1862
Displaying detail Hardware NIC information 1862
Performing a traffic trace 1865
Using a session table 1865
Finding object dependencies 1869
Diagnosing NPU-based interfaces 1870
Identifying the XAUI link used for a specific traffic stream 1870
Date and time settings 1871
Running the TAC report 1872
Other commands 1872
FortiGuard troubleshooting 1875
Additional resources 1878
Technical documentation 1878
Fortinet video library 1878
Release notes 1878
Knowledge base 1878
Fortinet technical discussion forums 1878
Fortinet training services online campus 1879
Fortinet Support 1879

FortiOS 6.4.6 Administration Guide 16


Fortinet Technologies Inc.
Change Log

Change Log

Date Change Description

2021-05-20 Initial release.

   

   

FortiOS 6.4.6 Administration Guide 17


Fortinet Technologies Inc.
Getting started

This section explains how to get started with a FortiGate.

Differences between models

Not all FortiGates have the same features, particularly entry-level models (models 30 to 90). A number of features on 
these models are only available in the CLI.

Consult your model's QuickStart Guide, hardware manual, or the Feature / Platform Matrix for 
further information about features that vary by model. 

FortiGate models differ principally by the names used and the features available:
 l Naming conventions may vary between FortiGate models. For example, on some models the hardware switch 
interface used for the local area network is called lan, while on other units it is called internal. 
 l Certain features are not available on all models. Additionally, a particular feature may be available only through the 
CLI on some models, while that same feature may be viewed in the GUI on other models.   
If  you believe your FortiGate model supports a feature that does not appear in the GUI, go to System > Feature
Visibility and confirm that the feature is enabled. For more information, see  Feature visibility on page 940.

Using the GUI

This section presents an introduction to the graphical user interface (GUI) on your FortiGate. 
The following topics are included in this section:
 l Connecting using a web browser
 l Menus
 l Tables
 l Entering values
For information about using the dashboards, see Dashboards and widgets on page 62.

Connecting using a web browser

In order to connect to the GUI using a web browser, an interface must be configured to allow administrative access over 
HTTPS or over both HTTPS and HTTP. By default, an interface has already been set up that allows HTTPS access with 
the IP address 192.168.1.99.
Browse to https://192.168.1.99 and enter your username and password. If you have not changed the admin account’s 
password, use the default user name, admin, and leave the password field blank.

FortiOS 6.4.6 Administration Guide 18


Fortinet Technologies Inc.
Getting started

The GUI will now be displayed in your browser.

To use a different interface to access the GUI:

 1. Go to Network > Interfaces and edit the interface you wish to use for access. Take note of its assigned IP address.


 2. In Administrative Access, select HTTPS, and any other protocol you require. You can also select HTTP, although 
this is not recommended as the connection will be less secure.
 3. Click OK.
 4. Browse to the IP address using your chosen protocol.   
The GUI will now be displayed in your browser.

Menus

If you believe your FortiGate model supports a menu that does not appear in the GUI, go to 
System > Feature Visibility and ensure the feature is enabled. For more information, see 
Feature visibility on page 940.

The GUI contains the following main menus, which provide access to configuration options for most FortiOS features:

Dashboard The dashboard displays various widgets that display important system 
information and allow you to configure some system options.
For more information, see Dashboards and widgets on page 62.

Security Fabric Access the physical topology, logical topology, automation, and settings of the 


Fortinet Security Fabric.
For more information, see Fortinet Security Fabric on page 127.   

Network Options for networking, including configuring system interfaces and routing 
options.
For more information, see Network on page 384.

System Configure system settings, such as administrators, HA, FortiGuard, and 
certificates.
For more information, see System on page 765.

Policy & Objects Configure firewall policies, protocol options,  and supporting content for policies, 


including schedules, firewall addresses, and traffic shapers.
For more information, see Policy and Objects on page 957.

Security Profiles Configure your FortiGate's security features, including Antivirus, Web Filter, and 


Application Control.
For more information, see Security Profiles on page 1121.

VPN Configure options for IPsec and SSL virtual private networks (VPNs). 
For more information, see IPsec VPNs on page 1294 and SSL VPN on page 
1557.

User & Authentication Configure user accounts, groups, and authentication methods, including external 


authentication and single sign-on (SSO).

FortiOS 6.4.6 Administration Guide 19


Fortinet Technologies Inc.
Getting started

WiFi & Switch Controller Configure the unit to act as a wireless network controller, managing the wireless 


Access Point (AP) functionality of FortiWiFi and FortiAP units.
On certain FortiGate models, this menu has additional features allowing for 
FortiSwitch units to be managed by the FortiGate.
For more information, see Wireless configuration on page 1755 and Switch 
Controller on page 1756.

Log & Report Configure logging and alert email as well as reports.


For more information, see Log and Report on page 1757.

Tables

Many GUI pages contain tables of information that can be filtered and customized to display specific information in a 
specific way. Some tables allow content to be edited directly on that table, or rows to be copied and pasted.

Navigation

Some tables contain information and lists that span multiple pages. Navigation controls will be available at the bottom of 
the page.

Filters

Filters are used to locate a specific set of information or content in a table. They can be particularly useful for locating 
specific log entries. The filtering options vary, depending on the type of information in the log.
Depending on the table content, filters can be applied using the filter bar, using a column filter, or based on a cell's 
content. Some tables allow filtering based on regular expressions.
Administrators with read and write access can define filters. Multiple filters can be applied at one time.

To manually create a filter:

 1. Click Add Filter at the top of the table. A list of the fields available for filtering is shown.


 2. Select the field to filter by.
 3. Enter the value to filter by, adding modifiers as needed.
 4. Press Enter to apply the filter.

To create a column filter:

 1. Click the filter icon on the right side of the column header 
 2. Choose a filter type from the available options.
 3. Enter the filter text, or select from the available values.
 4. Click Apply.

To create a filter based on a cell's content:

 1. Right click on a cell in the table.
 2. Select a filtering option from the menu.

FortiOS 6.4.6 Administration Guide 20


Fortinet Technologies Inc.
Getting started

Column settings

Columns can be rearranged, resized, and added or removed from tables.

To add or remove columns:

 1. Right a column header, or click the gear icon on the left side of the header row that appears when hovering the 
cursor over the headers.
 2. Select columns to add or remove.
 3. Click Apply.

To rearrange the columns in a table:

 1. Click and drag the column header.

To resize a column:

 1. Click and drag the right border of the column header.

To resize a column to fit its contents:

 1. Click the dots or filter icon on the right side of the column header and select Resize to Contents. 

To resize all of the columns in a table to fit their content:

 1. Right a column header, or click the gear icon on the left side of the header row that appears when hovering the 
cursor over the headers.
 2. Click Best Fit All Columns.

To reset a table to its default view:

 1. Right a column header, or click the gear icon on the left side of the header row that appears when hovering the 
cursor over the headers.
 2. Click Reset Table.
Resetting a table does not remove filters.

Editing objects

In some tables, parts of a configuration can be edited directly in the table. For example, security profiles can be added to 
an existing firewall policy by clicking the edit icon in a cell in the Security Profiles column.

Copying rows

In some tables, rows can be copied and pasted using the right-click menu. For example, a policy can be duplicated by 
copying and pasting it.

FortiOS 6.4.6 Administration Guide 21


Fortinet Technologies Inc.
Getting started

Entering values

Numerous fields in the GUI and CLI require text strings or numbers to be entered when configuring the FortiGate. When 
entering values in the GUI, you will be prevented from entering invalid characters, and a warning message will be shown 
explaining what values are not allowed. If invalid values are entered in a CLI command, the setting will be rejected when 
you apply it.
 l Text strings on page 22
 l Numbers on page 23

Text strings

Text strings are used to name entities in the FortiGate configuration. For example, the name of a firewall address, 
administrator, or interface are all text strings. 
The following characters cannot be used in text strings, as they present cross-site scripting (XSS) vulnerabilities:
 l “ - double quotes
 l ' - single quote
 l > - greater than
 l < - less than
Most GUI text fields prevent XSS vulnerable characters from being added.

VDOM names and hostnames can only use numbers (0-9), letters (a-z and A-Z), dashes, and 
underscores.

The tree CLI command can be used to view the number of characters allowed in a name field. For example, entering 
the following commands show that a firewall address name can contain up to 80 characters, while its FQDN can contain 
256 characters:
config fire address
(address) # tree
-- [address] --*name (80)
|- uuid
|- subnet
|- type
|- start-mac
|- end-mac
|- start-ip
|- end-ip
|- fqdn (256)
|- country (3)
|- wildcard-fqdn (256)
|- cache-ttl (0,86400)
|- wildcard
|- sdn (36)
|- interface (36)
|- tenant (36)
|- organization (36)
|- epg-name (256)
|- subnet-name (256)

FortiOS 6.4.6 Administration Guide 22


Fortinet Technologies Inc.
Getting started

|- sdn-tag (16)
|- policy-group (16)
|- comment
|- visibility
|- associated-interface (36)
|- color (0,32)
|- filter
|- sdn-addr-type
|- obj-id
|- [list] --*ip (36)
|- obj-id (128)
+- net-id (128)
|- [tagging] --*name (64)
|- category (64)
+- [tags] --*name (80)
+- allow-routing

Numbers

Numbers are used to set sizes, rated, addresses, port numbers, priorities, and other such numeric values. They can be 
entered as a series of digits (without commas or spaces), in a dotted decimal format (such as IP addresses), or 
separated by colons (such as MAC addresses). Most numeric values use base 10 numbers, while some use 
hexadecimal values.
Most GUI and CLI fields prevent invalid numbers from being entered. The CLI help text includes information about the 
range of values allowed for applicable settings.

Using the CLI

The Command Line Interface (CLI) can be used in lieu of the GUI to configure the FortiGate. Some settings are not 
available in the GUI, and can only be accessed using the CLI.
This section briefly explains basic CLI usage. For more information about the CLI, see the FortiOS CLI Reference.
 l Connecting to the CLI on page 23
 l CLI basics on page 26
 l Command syntax on page 32
 l Subcommands on page 35
 l Permissions on page 37

Connecting to the CLI

You can connect to the CLI using a direct console connection, SSH, the FortiExplorer app on your iOS device, or the CLI 
console in the GUI.
You can access the CLI outside of the GUI in three ways:
 l Console connection: Connect your computer directly to the console port of your FortiGate.
 l SSH access: Connect your computer through any network interface attached to one of the network ports on your 
FortiGate.

FortiOS 6.4.6 Administration Guide 23


Fortinet Technologies Inc.
Getting started

 l FortiExplorer: Connect your device to the FortiExplorer app on your iOS device to configure, manage, and monitor 
your FortiGate. See FortiExplorer for iOS on page 37 for details.
To open a CLI console, click the icon in the top right corner of the GUI. The console opens on top of the GUI. It can be 
minimized and multiple consoles can be opened.
To edit policies and objects directly in the CLI, right-click on the element and select Edit in CLI.

Console connection

A direct console connection to the CLI is created by directly connecting your management computer or console to the 
FortiGate using its DB-9 or RJ-45 console port. 
Direct console access to the FortiGate may be required if:
 l You are installing the FortiGate for the first time and it is not configured to connect to your network.
 l You are restoring the firmware using a boot interrupt. Network access to the CLI will not be available until after the 
boot process has completed, making direct console access the only option.
To connect to the FortiGate console, you need:
 l A console cable to connect the console port on the FortiGate to a communications port on the computer. Depending 
on your device, this is one of:
 l null modem cable (DB-9 to DB-9)
 l DB-9 to RJ-45 cable (a DB-9-to-USB adapter can be used)
 l USB to RJ-45 cable
 l A computer with an available communications port
 l Terminal emulation software

To connect to the CLI using a direct console connection:

 1. Using the console cable, connect the FortiGate unit’s console port to the serial communications (COM) port on your 
management computer. 
 2. Start a terminal emulation program on the management computer, select the COM port, and use the following 
settings:

Bits per second 9600

Data bits 8

Parity None

Stop bits 1

Flow control None

 3. Press Enter on the keyboard to connect to the CLI.
 4. Log in to the CLI using your username and password (default: admin and no password).
You can now enter CLI commands, including configuring access to the CLI through SSH.

SSH access

SSH access to the CLI is accomplished by connecting your computer to the FortiGate using one of its network ports. You 
can either connect directly, using a peer connection between the two, or through any intermediary network.

FortiOS 6.4.6 Administration Guide 24


Fortinet Technologies Inc.
Getting started

If you do not want to use an SSH client and you have access to the GUI, you can access the 
CLI through the network using the CLI console in the GUI.

SSH must be enabled on the network interface that is associated with the physical network port that is used.
If your computer is not connected either directly or through a switch to the FortiGate, you must also configure the 
FortiGate with a static route to a router that can forward packets from the FortiGate to the computer. This can be done 
using a local console connection, or in the GUI.
To connect to the FortiGate CLI using SSH, you need:
 l A computer with an available serial communications (COM) port and RJ-45 port
 l An appropriate console cable
 l Terminal emulation software
 l A network cable
 l Prior configuration of the operating mode, network interface, and static route.

To enable SSH access to the CLI using a local console connection:

 1. Using the network cable, connect the FortiGate unit’s port either directly to your computer’s network port, or to a 
network through which your computer can reach the FortiGate. 
 2. Note the number of the physical network port.
 3. Using direct console connection, connect and log into the CLI.
 4. Enter the following command:
config system interface
edit <interface_str>
append allowaccess ssh
next
end

Where <interface_str> is the name of the network interface associated with the physical network port, such as 
port1.
 5. Confirm the configuration using the following command to show the interface’s settings:
show system interface <interface_str>

For example:
show system interface port1
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
set allowaccess ping https ssh
set type hard-switch
set stp enable
set role lan
set snmp-index 6
next
end

FortiOS 6.4.6 Administration Guide 25


Fortinet Technologies Inc.
Getting started

Connecting using SSH

Once the FortiGate is configured to accept SSH connections, use an SSH client on your management computer to 
connect to the CLI.
The following instructions use PuTTy. The steps may vary in other terminal emulators.

To connect to the CLI using SSH:

 1. On your management computer, start PuTTy.
 2. In the Host Name (or IP address) field, enter the IP address of the network interface that you are connected to and 
that has SSH access enabled.
 3. Set the port number to 22, if it is not set automatically.
 4. Select SSH for the Connection type.
 5. Click Open. The SSH client connect to the FortiGate.
The SSH client may display a warning if this is the first time that you are connecting to the FortiGate and its SSH key 
is not yet recognized by the SSH client, or if you previously connected to the FortiGate using a different IP address 
or SSH key. This is normal if the management computer is connected directly to the FortiGate with no network hosts 
in between.
 6. Click Yes to accept the FortiGate's SSH key.
The CLI displays the log in prompt.
 7. Enter a valid administrator account name, such as admin, then press Enter.
 8. Enter the administrator account password, then press Enter.
The CLI console shows the command prompt (FortiGate hostname followed by a #). You can now enter 
CLI commands.

If three incorrect log in or password attempts occur in a row, you will be disconnected. If this 
occurs, wait for one minute, then reconnect and attempt to log in again.

CLI basics

Basic features and characteristics of the CLI environment provide support and ease of use for many CLI tasks.

Help

Press the question mark (?) key to display command help and complete commands.
 l Press the question mark (?) key at the command prompt to display a list of the commands available and a 
description of each command.
 l Enter a command followed by a space and press the question mark (?) key to display a list of the options available 
for that command and a description of each option.
 l Enter a command followed by an option and press the question mark (?) key to display a list of additional options 
available for that command option combination and a description of each option.
 l Enter a question mark after entering a portion of a command to see a list of valid complete commands and their 
descriptions. If there is only one valid command, it will be automatically filled in.

FortiOS 6.4.6 Administration Guide 26


Fortinet Technologies Inc.
Getting started

Shortcuts and key commands

Shortcut key Action

? List valid complete or subsequent commands.
If multiple commands can complete the command, they are listed with their 
descriptions.

Tab Complete the word with the next available match.
Press multiple times to cycle through available matches.

Up arrow or Ctrl + P Recall the previous command.


Command memory is limited to the current session.

Down arrow, or Ctrl + N Recall the next command.

Left or Right arrow Move the cursor left or right within the command line.

Ctrl + A Move the cursor to the beginning of the command line.

Ctrl + E Move the cursor to the end of the command line.

Ctrl + B Move the cursor backwards one word.

Ctrl + F Move the cursor forwards one word.

Ctrl + D Delete the current character.

Ctrl + C Abort current interactive commands, such as when entering multiple lines.
If you are not currently within an interactive command such as config or edit, 
this closes the CLI connection.

\ then Enter Continue typing a command on the next line for a multiline command.


For each line that you want to continue, terminate it with a backslash ( \ ). To 
complete the command, enter a space instead of a backslash, and then press 
Enter.

Command tree

Enter tree to display the CLI command tree. To capture the full output, connect to your device using a terminal 
emulation program and capture the output to a log file. For some commands, use the tree command to view all 
available variables and subcommands.

Command abbreviation

You can abbreviate words in the command line to their smallest number of non-ambiguous characters.
For example, the command get system status could be abbreviated to g sy stat.

Adding and removing options from lists

When configuring a list, the set command will remove the previous configuration.

FortiOS 6.4.6 Administration Guide 27


Fortinet Technologies Inc.
Getting started

For example, if a user group currently includes members A, B, and C, the command set member D will remove 


members A, B, and C. To avoid removing the existing members from the group, the command set members A B C D 
must be used.
To avoid this issue, the following commands are available:

append Add an option to an existing list. 
For example, append member D adds user D to the user group without removing any of the 
existing members.

select Clear all of the options except for those specified. 
For example, select member B removes all member from the group except for member B.

unselect Remove an option from an existing list.
For example, unselect member C removes only member C from the group, without 
affecting the other members.

Environment variables

The following environment variables are support by the CLI. Variable names are case-sensitive.

$USERFROM The management access type (ssh, jsconsole, and so on) and the IPv4 address of the 
administrator that configured the item.

$USERNAME The account name of the administrator that configured the item.

$SerialNum The serial number of the FortiGate.

For example, to set a FortiGate device's host name to its serial number, use the following CLI command:
config system global
set hostname $SerialNum
end

Special characters

The following characters cannot be used in most CLI commands: <, >, (, ), #, ', and "
If one of those characters, or a space, needs to be entered as part of a string, it can be entered by using a special 
command, enclosing the entire string in quotes, or preceding it with an escape character (backslash, \).
To enter a question mark (?) or a tab, Ctrl + V or Ctrl + Shift + - must be entered first.

Question marks and tabs cannot be copied into the CLI Console or some SSH clients. They 
must be typed in.

Character Keys

? Ctrl + V or Ctrl + Shift + - then ?

FortiOS 6.4.6 Administration Guide 28


Fortinet Technologies Inc.
Getting started

Character Keys

Tab Ctrl + V then Tab

Space Enclose the string in single or double quotation marks: "Security
(as part of a string value, not to end the string) Administrator" or 'Security Administrator'.
Precede the space with a backslash: Security\ Administrator.

' \'
(as part of a string value, not to begin or end 
the string)

" \"
(as part of a string value, not to begin or end 
the string)

\ \\

Using grep to filter command output

The get, show, and diagnose commands can produce large amounts of output. The grep command can be used to 
filter the output so that it only shows the required information.
The grep command is based on the standard UNIX grep, used for searching text output based on regular expressions.
For example, the following command displays the MAC address of the internal interface:
get hardware nic internal | grep Current_HWaddr
Current_HWaddr 00:09:0f:cb:c2:75

The following command will display all TCP sessions that are in the session list, including the session list line number in 
the output:
get system session list | grep -n tcp

The following command will display all of the lines in the HTTP replacement message that contain URL or url:
show system replacemsg http | grep -i url

The following options can also be used:
-A <num> After
-B <num> Before
-C <num> Context

The -f option is available to support contextual output, in order to show the complete configuration. The following 
example shows the difference in the output when -f is used versus when it is not used:

Without -f: With -f:
show | grep ldap-group1 show | grep -f ldap-group1
edit "ldap-group1" config user group
set groups "ldap-group1" edit "ldap-group1"
set member "pc40-LDAP"
next
end
config firewall policy

FortiOS 6.4.6 Administration Guide 29


Fortinet Technologies Inc.
Getting started

edit 2
set srcintf "port31"
set dstintf "port32"
set srcaddr "all"
set action accept
set identity-based enable
set nat enable
config identity-based-policy
edit 1
set schedule "always"
set groups "ldap-group1"
set dstaddr "all"
set service "ALL"
next
end
next
end

Language support and regular expressions

Characters such as ñ and é, symbols, and ideographs are sometimes acceptable input. Support varies depending on the 
type of item that is being configured. CLI commands, objects, field names, and options must use their exact ASCII 
characters, but some items with arbitrary names or values can be input using your language of choice. To use other 
languages in those cases, the correct encoding must be used.
Input is stored using Unicode UTF-8 encoding, but is not normalized from other encodings into UTF-8 before it is stored. 
If your input method encodes some characters differently than in UTF-8, configured items may not display or operate as 
expected.
Regular expressions are especially impacted. Matching uses the UTF-8 character values. If you enter a regular 
expression using a different encoding, or if an HTTP client sends a request in a different encoding, matches may not be 
what is expected.
For example, with Shift-JIS, backslashes could be inadvertently interpreted as the symbol for the Japanese yen ( ¥ ), and 
vice versa. A regular expression intended to match HTTP requests containing monetary values with a yen symbol may 
not work it if the symbol is entered using the wrong encoding.
For best results:
 l use UTF-8 encoding, or
 l use only characters whose numerically encoded values are the same in UTF-8, such as the US-ASCII characters 
that are encoded using the same values in ISO 8859-1, Windows code page 1252, Shift-JIS, and other encoding 
methods, or
 l for regular expressions that must match HTTP requests, use the same encoding as your HTTP clients.

HTTP clients may send requests in encodings other than UTF-8. Encodings usually vary 
based on the client’s operating system or input language. If the client's encoding method 
cannot be predicted, you might only be able to match the parts of the request that are in 
English, as the values for English characters tend to be encoded identically, regardless of the 
encoding method.

FortiOS 6.4.6 Administration Guide 30


Fortinet Technologies Inc.
Getting started

If the FortiGate is configured to use an encoding method other than UTF-8, the management computer's language may 
need to be changed, including the web browse and terminal emulator. If the FortiGate is configured using non-ASCII 
characters, all the systems that interact with the FortiGate must also support the same encoding method. If possible, the 
same encoding method should be used throughout the configuration to avoid needing to change the language settings 
on the management computer.
The GUI and CLI client normally interpret output as encoded using UTF-8. If they do not, configured items may not 
display correctly. Exceptions include items such as regular expression that may be configured using other encodings to 
match the encoding of HTTP requests that the FortiGate receives.

To enter non-ASCII characters in a terminal emulator:

 1. On the management computer, start the terminal client.
 2. Configure the client to send and receive characters using UTF-8 encoding.
Support for sending and receiving international characters varies by terminal client.
 3. Log in to the FortiGate.
 4. At the command prompt, type your command and press Enter. 
Words that use encoded characters may need to be enclosed in single quotes ( ' ).
Depending on your terminal client’s language support, you may need to interpret the characters into character 
codes before pressing Enter. For example, you might need to enter: edit '\743\601\613\743\601\652'
 5. The CLI displays the command and its output.

Screen paging

By default, the CLI will pause after displaying each page worth of text when a command has multiple pages of output. 
this can be useful when viewing lengthy outputs that might exceed the buffer of terminal emulator.
When the display pauses and shows --More--, you can:
 l Press Enter to show the next line,
 l Press Q to stop showing results and return to the command prompt,
 l Press an arrow key, Insert, Home, Delete, End, Page Up, or Page Down to show the next few pages,
 l Press any other key to show the next page, or
 l Wait for about 30 seconds for the console to truncate the output and return to the command prompt.
When pausing the screen is disabled, press Ctrl + C to stop the output and log out of the FortiGate.

To disable pausing the CLI output:

config system console


set output standard
end

To enable pausing the CLI output:

config system console


set output more
end

FortiOS 6.4.6 Administration Guide 31


Fortinet Technologies Inc.
Getting started

Changing the baud rate

The baud rate of the local console connection can be changed from its default value of 9600.

To change the baud rate:

config system console


set baudrate {9600 | 19200 | 38400 | 57600 | 115200}
end

Editing the configuration file

The FortiGate configuration file can be edited on an external host by backing up the configuration, editing the 
configuration file, and then restoring the configuration to the FortiGate.
Editing the configuration file can save time is many changes need to be made, particularly if the plain text editor that you 
are using provides features such as batch changes.

To edit the configuration file:

 1. Backup the configuration. See Configuration backups on page 52 for details.
 2. Open the configuration file in a plain text editor that supports UNIX-style line endings.
 3. Edit the file as needed.

Do not edit the first line of the configuration file.
This line contains information about the firmware version and FortiGate model. If you 
change the model number, the FortiGate will reject the configuration when you attempt to 
restore it.

 4. Restore the modified configuration to the FortiGate. See Configuration backups on page 52 for details.
The FortiGate downloads the configuration file and checks that the model information is correct. If it is correct, the 
configuration file is loaded and each line is checked for errors. If a command is invalid, that command is ignored. If 
the configuration file is valid, the FortiGate restarts and loads the downloaded configuration.

Command syntax

When entering a command, the CLI console requires that you use valid syntax and conform to expected input 
constraints. It rejects invalid commands. Indentation is used to indicate the levels of nested commands. 
Each command line consists of a command word, usually followed by configuration data or a specific item that the 
command uses or affects.

Notation

Brackets, vertical bars, and spaces are used to denote valid syntax. Constraint notations, such as <address_ipv4>, 
indicate which data types or string patterns are acceptable value input.
All syntax uses the following conventions:

FortiOS 6.4.6 Administration Guide 32


Fortinet Technologies Inc.
Getting started

Angle brackets < > Indicate a variable of the specified data type.

Curly brackets { } Indicate that a variable or variables are mandatory.

Square brackets [ ] Indicate that the variable or variables are optional.


For example:
show system interface [<name_str>]
To show the settings for all interfaces, you can enter show system interface
To show the settings for the Port1 interface, you can enter show system interface
port1.

Vertical bar | A vertical bar separates alternative, mutually exclusive options.


For example:
set protocol {ftp | sftp}
You can enter either set protocol ftp or set protocol sftp.

Space A space separates non-mutually exclusive options.
For example:
set allowaccess {ping https ssh snmp http fgfm radius-acct probe-
response capwap ftm}
You can enter any of the following:
set allowaccess ping
set allowaccess https ping ssh
set allowaccess http https snmp ssh ping
In most cases, to make changes to lists that contain options separated by spaces, you need to 
retype the entire list, including all the options that you want to apply and excluding all the 
options that you want to remove.

Optional values and ranges

Any field that is optional will use square-brackets. The overall config command will still be valid whether or not the option 
is configured.
Square-brackets can be used is to show that multiple options can be set, even intermixed with ranges. The following 
example shows a field that can be set to either a specific value or range, or multiple instances:
config firewall service custom
set iprange <range1> [<range2> <range3> ...]
end

next

The next command is used to maintain a hierarchy and flow to CLI commands. It is at the same indentation level as the 
preceding edit command, to mark where a table entry finishes.
The following example shows the next command used in the subcommand entries:

FortiOS 6.4.6 Administration Guide 33


Fortinet Technologies Inc.
Getting started

After configuring table entry <2> then entering next, the <2> table entry is saved and the console returns to the 
entries prompt:

You can now create more table entries as needed, or enter end to save the table and return to the filepattern table 
element prompt.

end

The end command is used to maintain a hierarchy and flow to CLI commands. 
The following example shows the same command and subcommand as the next command example, except end has 
been entered instead of next after the subcommand:

Entering end will save the <2> table entry and the table, and exit the entries subcommand entirely. The console 
returns to the filepattern table element prompt:

FortiOS 6.4.6 Administration Guide 34


Fortinet Technologies Inc.
Getting started

Subcommands

Subcommands are available from within the scope of some commands. When you enter a subcommand level, the 
command prompt changes to indicate the name of the current command scope. For example, after entering:
config system admin

the command prompt becomes:
(admin)#

Applicable subcommands are available until you exit the command, or descend an additional level into another 
subcommand. Subcommand scope is indicated by indentation. 
For example, the edit subcommand is only available in commands that affects tables, and the next subcommand is 
available only in the edit subcommand:
config system interface
edit port1
set status up
next
end

The available subcommands vary by command. From a command prompt under the config command, subcommands 
that affect tables and fields could be available.

Table subcommands

edit <table_row> Create or edit a table value.


In objects such as security policies, <table_row> is a sequence number. To 
create a new table entry without accidentally editing an existing entry, enter edit
0. The CLI will confirm that creation of entry 0, but will assign the next unused 
number when the entry is saved after entering end or next.
For example, to create a new firewall policy,  enter the following commands:
config firewall policy
edit 0
....
next
end
To edit an existing policy,  enter the following commands:
config firewall policy
edit 27
....
next
end
The edit subcommand changes the command prompt to the name of the table 
value that is being edited.

delete <table_row> Delete a table value.


For example, to delete firewall policy 30, enter the following commands:
config firewall policy
delete 30
end

FortiOS 6.4.6 Administration Guide 35


Fortinet Technologies Inc.
Getting started

purge Clear all table values.
The purge command cannot be undone. To restore purged table values, the 
configuration must be restored from a backup.

move Move an ordered table value.
In the firewall policy table, this equivalent to dragging a policy into a new position. 
It does not change the policy's ID number.
For example, to move policy 27 to policy 30, enter the following commands:
config firewall policy
move 27 to 30
end
The move subcommand is only available in tables where the order of the table 
entries matters.

clone <table_row> to <table_ Make a clone of a table entry.


row> For example, to create firewall policy 30 as a clone of policy 27, enter the following 
commands:
config firewall policy
clone 27 to 30
end
The clone subcommand may not be available for all tables.

rename <table_row> to Rename a table entry.


<table_row> For example to rename an administrator from Flank to Frank, enter the following 
commands:
config system admin
rename Flank to Frank
end
The rename subcommand is only available in tables where the entries can be 
renamed.

get List the current table entries.
For example, to view the existing firewall policy table entries, enter the following 
commands:
config firewall policy
get

show Show the configuration. Only table entries that are not set to default values are 
shown.

end Save the configuration and exit the current config command.

Purging the system interface or system admin tables does not reset default table 


values. This can result in being unable to connect to or log in to the FortiGate, requiring the 
FortiGate to be formatted and restored.

Field subcommands

set <field> <value> Modify the value of a field.

FortiOS 6.4.6 Administration Guide 36


Fortinet Technologies Inc.
Getting started

For example, the command set fsso enable sets the fsso field to the value 


enable.

unset Set the field to its default value.

select Clear all of the options except for those specified. 
For example, if a group contains members A, B, C, and D, to remove all members 
except for B, use the command select member B.

unselect Remove an option from an existing list.
For example, if a group contains members A, B, C, and D, to remove only member 
B, use the command unselect member B.

append Add an option to an existing multi-option table value. 

clear Clear all the options from a multi-option table value.

get List the configuration of the current table entry, including default and customized 
values.

show Show the configuration. Only values that are not set to default values are shown.

next Save changes to the table entry and exit the edit command so that you can 
configure the next table entry.

abort Exit the command without saving.

end Save the configuration and exit the current config command.

Permissions

Administrator (or access) profiles control what CLI commands an administrator can access by assigning read, write, or 
no access to each area of FortiOS. For information, see Administrator profiles on page 767.
Read access is required to view configurations. Write access is required to make configuration changes. Depending on 
your account's profile, you may not have access to all CLI commands. To have access to all CLI commands, an 
administrator account with the super_admin profile must be used, such as the admin account.
Accounts assigned the super_admin profile are similar to the root administrator account. They have full permission to 
view and change all FortiGate configuration options, including viewing and changing other administrator accounts.
To increase account security, set strong passwords for all administrator accounts, and change the passwords regularly. 

FortiExplorer for iOS

FortiExplorer for iOS is a user-friendly application that helps you to rapidly provision, deploy, and monitor Security Fabric 
components from your iOS device.

FortiOS 6.4.6 Administration Guide 37


Fortinet Technologies Inc.
Getting started

FortiExplorer for iOS requires iOS 10.0 or later and is compatible with iPhone, iPad, and Apple TV. It is supported by 
FortiOS 5.6 and later, and is only available on the App Store for iOS devices.
Advanced features are available with the purchase of FortiExplorer Pro. Paid features include the ability to add more 
than two devices, and firmware upgrades for devices with active licenses.
Up to six members can use this app with 'Family Sharing' enabled in the App Store.

Getting started with FortiExplorer

If your FortiGate is accessible on a wireless network, you can connect to it using FortiExplorer provided that your 
iOS device is on the same network (see Connecting FortiExplorer to a FortiGate via WiFi). Otherwise, you will need  to 
physically connect your  iOS device to the FortiGate using a USB cable.

To connect and configure a FortiGate with FortiExplorer using a USB connection:

 1. Connect your iOS device to your FortiGate USB A port. If prompted on your iOS device, Trust this computer.
 2. Open FortiExplorer and select your FortiGate from the FortiGate Devices list . A blue USB icon will indicate that you 
are connected over a USB connection.

 3. On the Login screen, select USB.
 4. Enter the default Username (admin) and leave the Password field blank.
 5. Optionally, select Remember Password.
 6. Tap Done when you are ready.
FortiExplorer opens the FortiGate management interface to the Device Status page:

FortiOS 6.4.6 Administration Guide 38


Fortinet Technologies Inc.
Getting started

 7. Go to Network > Interfaces and configure the WAN interface or interfaces.


 8. The wan1 interface Address mode is set to DHCP by default. Set it to Manual and enter its Address, Netmask, and 
Default Gateway, and then Apply your changes.   

 9. Optionally, configure Administrative Access to allow HTTPS access. This will allow administrators to access the 


FortiGate GUI using a web browser.   

FortiOS 6.4.6 Administration Guide 39


Fortinet Technologies Inc.
Getting started

 10. Go to Network > Interfaces and configure the local network (internal) interface.


 11. Set the Address mode as before and configure Administrative Access if required.
 12. Configure a DHCP Server for the internal network subnet.   

 13. Return to the internal interface using the < button at the top of the screen.
 14. Go to Network > Static Routes and configure the static route to the gateway.   

 15. Go to Policy & Objects > Firewall Policy and edit the Internet access policy. Enter a Name for the policy, enable the 


required Security Profiles, configure Logging Options, then tap OK.   

FortiOS 6.4.6 Administration Guide 40


Fortinet Technologies Inc.
Getting started

Connecting FortiExplorer to a FortiGate via WiFi

You can wirelessly connect to the FortiGate if your iOS device and the FortiGate are both connected to the same 
wireless network.

FortiOS 6.4.6 Administration Guide 41


Fortinet Technologies Inc.
Getting started

To connect and configure a FortiGate with FortiExplorer wirelessly:

 1. Open the FortiExplorer app and tap Add on the Devices page.
 2. On the Add Device By page, tap HTTPS.

 3. Enter the Host information, Username, and Password.
 4. If required, change the default Port number, and optionally enable Remember Password.   

 5. Tap Done.
 6. If the FortiGate device identity cannot be verified, tap Connect at the prompt.
FortiExplorer opens the FortiGate management interface to the Device Status page.

Running a security rating

After configuring your network, run a security rating check to identify vulnerabilities and highlight best practices that 
could improve your network's security and performance.

FortiOS 6.4.6 Administration Guide 42


Fortinet Technologies Inc.
Getting started

Go to Security Fabric > Security Rating and follow the steps to determine the score. See Security rating on page 220 for 


more information.

Upgrading to FortiExplorer Pro

FortiExplorer Pro allows you to add unlimited devices, and download firmware images for devices with active licenses.

To upgrade to FortiExplorer Pro:

 1. In FortiExplorer, go to Settings.
 2. Tap Manage Subscription. 
 3. Follow the on-screen prompts.

Basic administration

This section contains information about basic FortiGate administration that you can do after you installing the unit in your 
network. 
 l Registration on page 44
 l FortiCare and FortiGate Cloud login on page 47
 l Transferring a FortiCloud account title on page 50
 l Configuration backups on page 52

FortiOS 6.4.6 Administration Guide 43


Fortinet Technologies Inc.
Getting started

Registration

The FortiGate, and then its service contract, must be registered to have full access to Fortinet Customer Service and 
Support, and FortiGuard services. The FortiGate can be registered in either the FortiGate GUI or the FortiCloud support 
portal. The service contract can be registered from the FortiCloud support portal.

The service contract number is needed to complete registrations on the FortiCloud support 
portal. You can find this 12-digit number in the email that contains your service registration 
document (sent from [email protected]) in the service entitlement summary.

To register your FortiGate in the GUI:

 1. Connect to the FortiGate GUI. A message is shown stating that FortiCare registration is required.

 2. Click Register Now.


 3. If you already have a support account, set Action to Login, and enter the required information.

If you need to create an account, set Action to Create Account, and enter the required information.

FortiOS 6.4.6 Administration Guide 44


Fortinet Technologies Inc.
Getting started

FortiOS 6.4.6 Administration Guide 45


Fortinet Technologies Inc.
Getting started

 4. Click OK.The FortiCare registration agreement is displayed.   

 5. Agree to the terms of the registration and click OK.
 6. Go to System > FortiGuard.
 7. In the License Information table, the FortiCare Support status is Registered. There may be a delay before the status 
is updated on your FortiGate.

To register the FortiGate on the FortiCloud support portal:

 1. Go to support.fortinet.com and log in using your FortiCloud account credentials. If you do not have an account, click 
Register to create one.
 2. Click Asset > Register/Activate.
 3. Enter your product serial number or license certificate number for a VM, select an end user type, then click Next.

 4. Enter your support contract number and product description, select a Fortinet partner, then click Next.
 5. Read through the service terms and conditions, select the checkbox to accept, then click Next.
 6. Verify the product entitlement preview, read through the terms and select the checkbox to accept, then click 
Confirm.

FortiOS 6.4.6 Administration Guide 46


Fortinet Technologies Inc.
Getting started

 7. The Registration Completed page appears where page you can download the license file. Click Register More to 


register another FortiGate, or click Finish to complete the registration process.

To register the service contract on the FortiCloud support portal:

 1. Go to support.fortinet.com and log in using your FortiCloud account credentials. 
 2. Click Asset > Register/Activate.
 3. Enter your 12-digit contract registration code (service contract number), then click Next.
 4. Enter the device serial number or select it from the list, then click Next.
 5. Read through the service terms and conditions, select the checkbox to accept, then click Next.
 6. Verify the product entitlement preview and associated services, read through the terms and select the checkbox to 
accept, then click Confirm.
 7. Click Asset > Manage/View Products.
 8. Select the device, then click Entitlement in the left menu to view the service entitlement. 

FortiCare and FortiGate Cloud login

With FortiCloud, FortiGate supports a unified login to FortiCare and FortiGate Cloud. The FortiGate Cloud setup is a 
subset of the FortiCare setup.
 l If the FortiGate is not registered, activating FortiGate Cloud will force you to register with FortiCare.
 l If a FortiGate is registered in FortiCare using a FortiCloud account, then only that FortiCloud account can be used to 
activate FortiGate Cloud.
 l If a different FortiCloud account was already used to activate FortiGate Cloud, then a notification asking you to 
migrate to FortiCloud is shown in the GUI after upgrading FortiOS.
The CLI can be used to activate FortiGate Cloud without registration, or with a different FortiCloud account.

To activate FortiGate Cloud and register with FortiCare at the same time:

 1. Go to Dashboard > Status.


 2. In the FortiGate Cloud widget, click Not Activated > Activate.
You must register with FortiCare before activating FortiGate Cloud.

FortiOS 6.4.6 Administration Guide 47


Fortinet Technologies Inc.
Getting started

 3. Enter your FortiCare Email address and Password.
 4. Select your Country/Region and Reseller.
 5. Enable Sign in to FortiGate Cloud using the same account.
 6. Click OK.

To activate FortiGate Cloud on an already registered FortiGate:

 1. Go to Dashboard > Status.


 2. In the FortiGate Cloud widget, click Not Activated > Activate.

 3. Enter the password for the account that was used to register the FortiGate.

 4. Click OK.
The FortiGate Cloud widget now shows the FortiCloud account.

FortiOS 6.4.6 Administration Guide 48


Fortinet Technologies Inc.
Getting started

To migrate from the activated FortiGate Cloud account to the registered FortiCloud account:

 1. Go to Dashboard > Status.

 2. In the FortiGate Cloud widget, click Migrate to FortiCloud.

 3. Enter the password for the account that was used to register the FortiGate, then click OK.
The FortiGate Cloud widget now shows the FortiCloud account.

FortiOS 6.4.6 Administration Guide 49


Fortinet Technologies Inc.
Getting started

To activate FortiGate Cloud using an account that is not used for registration:

 1. In the CLI, enter the following command:
execute fortiguard-log login <account_id> <password>

Where the <account_id> and <password> are the credentials for the account that you are using to activate 
FortiGate Cloud.
 2. Check the account type with following command:
# diagnose fdsm contract-controller-update
Protocol=2.0|Response=202|Firmware=FAZ-4K-FW-2.50-
100|SerialNumber=FAMS000000000000|Persistent=false|ResponseItem=HomeServer:172.16.95.151
:443*AlterServer:172.16.95.151:443*Contract:20200408*NextRequest:86400*UploadConfig:Fals
e*ManagementMode:Local*ManagementID:737941253*AccountType:multitenancy

Result=Success

A FortiCloud account that is not used for the support portal account cannot be used to register 
FortiGate. Attempting to activate FortiGate Cloud with this type of account will fail.

Transferring a FortiCloud account title

Master account users can transfer a FortiCloud and FortiCare account from one device to another. Users can transfer up 
to three accounts within a twelve-month time period.

Requirements:

To transfer an account, you must:
 l Have access to the FortiGate, as well as  both the FortiCloud and FortiCare accounts.
 l Be a master account user.   
To verify you are the master account user, go to support.fortinet.com. Click the User icon, and then click Account
Profile.

FortiOS 6.4.6 Administration Guide 50


Fortinet Technologies Inc.
Getting started

You can transfer up to three accounts in a twelve-month time period. If more transfers are 
required within the twelve-month time period, contact Technical Support to request the 
transfer.

To transfer an account in the GUI:

 1. Go to Dashboard > Status. In the Status dashboard, hover over the FortiCare Support link, and click Transfer


FortiGate to Another Account.   

You can also transfer an account from System > FortiGuard.

 2. In the Current FortiCloud Account fields, enter the username and password for the current account. In the  Target


FortiCloud Account fields, enter the new username and password. Click Next.    

FortiGate transfers the account.

FortiOS 6.4.6 Administration Guide 51


Fortinet Technologies Inc.
Getting started

After the transfer is complete, FortiGate displays the new the FortiCloud account.

Configuration backups

Once you successfully configure the FortiGate, it is extremely important that you backup the configuration. In some 
cases, you may need to reset the FortiGate to factory defaults or perform a TFTP upload of the firmware, which will erase 
the existing configuration. In these instances, the configuration on the device will have to be recreated, unless a backup 
can be used to restore it. You should also backup the local certificates, as the unique SSL inspection CA and server 
certificates that are generated by your FortiGate by default are not saved in a system backup.
We also recommend that you backup the configuration after any changes are made, to ensure you have the most current 
configuration available. Also, backup the configuration before any upgrades of the FortiGate’s firmware. Should anything 
happen to the configuration during the upgrade, you can easily restore the saved configuration.
Always backup the configuration and store it on the management computer or off-site. You have the option to save the 
configuration file to various locations including the local PC, USB key, FTP, and TFTP server. The last two are 
configurable through the CLI only.
If you have VDOMs, you can back up the configuration of the entire FortiGate or only a specific VDOM. Note that if you 
are using FortiManager or FortiGate Cloud, full backups are performed and the option to backup individual VDOMs will 
not appear.

FortiOS 6.4.6 Administration Guide 52


Fortinet Technologies Inc.
Getting started

You can also backup and restore your configuration using Secure File Copy (SCP). See How 
to download/upload a FortiGate configuration file using secure file copy (SCP).
You enable SCP support using the following command:
config system global
set admin-scp enable
end
For more information about this command and about SCP support, see config system global.

Backing up the configuration

To backup the configuration using the GUI:

 1. Click on the user name in the upper right-hand corner of the screen and select Configuration > Backup.


 2. Direct the backup to your Local PCor to a USB Disk. 
The USB Disk option will not be available if no USB drive is inserted in the USB port. You can also backup to the 
FortiManager using the CLI.
 3. If VDOMs are enabled, indicate whether the scope of the backup is the entire FortiGate configuration (Global) or 
only a specific VDOM configuration (VDOM).
If backing up a VDOM configuration, select the VDOM name from the list.
 4. Enable Encryption. Encryption must be enabled on the backup file to back up VPN certificates.
 5. Enter a password, and enter it again to confirm it. This password will be required to restore the configuration.
 6. Click OK.
 7. When prompted, select a location on the PC or USB disk to save the configuration file. The configuration file will 
have a .conf extension.

To backup the configuration using the CLI:

Use one of the following commands:
execute backup config management-station <comment>

or:
execute backup config usb <backup_filename> [<backup_password>]

or for FTP, note that port number, username are optional depending on the FTP site:
execute backup config ftp <backup_filename> <ftp_server> [<port>] [<user_name>]
[<password>]

or for TFTP:
execute backup config tftp <backup_filename> <tftp_servers> <password>

Use the same commands to backup a VDOM configuration by first entering the commands:
config vdom
edit <vdom_name>

FortiOS 6.4.6 Administration Guide 53


Fortinet Technologies Inc.
Getting started

Restoring a configuration

To restore the FortiGate configuration using the GUI:

 1. Click on the user name in the upper right-hand corner of the screen and select Configuration > Restore.


 2. Identify the source of the configuration file to be restored: your Local PCor a USB Disk.
The USB Disk option will not be available if no USB drive is inserted in the USB port. You can restore from the 
FortiManager using the CLI.
 3. Click Upload, locate the configuration file, and click Open.
 4. Enter the password if required.
 5. Click OK.

To restore the FortiGate configuration using the CLI:

execute restore config management-station normal 0

or:
execute restore config usb <filename> [<password>]

or for FTP, note that port number, username are optional depending on the FTP site:
execute restore config ftp <backup_filename> <ftp_server> [<port>] [<user_name>]
[<password>]

or for TFTP:
execute restore config tftp <backup_filename> <tftp_server> <password>

The FortiGate will load the configuration file and restart. Once the restart has completed, verify that the configuration has 
been restored.

Troubleshooting

When restoring a configuration, errors may occur, but the solutions are usually straightforward.

Error message Reason and Solution

Configuration file error This error occurs when attempting to upload a configuration file that is 
incompatible with the device. This may be due to the configuration file being for a 
different model or being saved from a different version of firmware.
Solution: Upload a configuration file that is for the correct model of FortiGate 
device and the correct version of the firmware.

Invalid password When the configuration file is saved, it can be protected by a password. The 
password entered during the upload process is not matching the one associated 
with the configuration file.
Solution: Use the correct password if the file is password protected.

Configuration revision

You can manage multiple versions of configuration files on models that have a 512MB flash memory and higher. 
Revision control requires either a configured central management server or the local hard drive, if your FortiGate has this 
feature. Typically, configuration backup to local drive is not available on lower-end models.

FortiOS 6.4.6 Administration Guide 54


Fortinet Technologies Inc.
Getting started

The central management server can either be a FortiManager unit or FortiGate Cloud.
If central management is not configured on your FortiGate unit, a message appears instructing you to either 
 l Enable central management, or
 l Obtain a valid license.
When revision control is enabled on your FortiGate unit, and configuration backups have been made, a list of saved 
revisions of those backed-up configurations appears.
Configuration revisions are viewed by clicking on the user name  in the upper right-hand corner of the screen and 
selecting Configuration > Revisions.

Backup and restore the local certificates

This procedure exports a server (local) certificate and private key together as a password protected PKCS12 file. The 
export file is created through a customer-supplied TFTP server. Ensure that your TFTP server is running and accessible 
to the FortiGate before you enter the command.

To back up the local certificates:

Connect to the CLI and use the following command: 
execute vpn certificate local export tftp <cert_name> <filename> <tftp_ip>

where: 
 l <cert_name> is the name of the server certificate.
 l <filename> is a name for the output file.
 l <tftp_ip> is the IP address assigned to the TFTP server host interface.

To restore the local certificates using the GUI:

 1. Move the output file from the TFTP server location to the management computer.
 2. Go to System > Certificates and click Import > Local.
 3. Select the certificate type, then click Upload in the Certificate file field.
 4. On the management computer, browse to the file location, select it, and click Open.
 5. If the Type is Certificate, upload the Key file as well.
 6. If required, enter the Password that is required to upload the file or files.
 7. Click OK.

To restore the local certificates using the CLI:

Connect to the CLI and use the following command: 
execute vpn certificate local import tftp <filename> <tftp_ip>

Restore factory defaults

There may be a  need to reset the FortiGate to its original defaults; for example, to begin with a fresh configuration. There 
are two options when restoring factory defaults. The first resets the entire device to the original out-of-the-box 
configuration.
You can reset the device with the following CLI command:
execute factoryreset

FortiOS 6.4.6 Administration Guide 55


Fortinet Technologies Inc.
Getting started

When prompted, type y to confirm the reset.
Alternatively, in the CLI you can reset the factory defaults but retain the interface and VDOM configuration with the 
following command:
execute factoryreset2

Troubleshooting your installation

If your FortiGate does not function as desired after installation, try the following troubleshooting tips:
 1. Check for equipment issues
Verify that all network equipment is powered on and operating as expected. Refer to the QuickStart Guide for 
information about connecting your FortiGate to the network.
 2. Check the physical network connections
Check the cables used for all physical connections to ensure that they are fully connected and do not appear 
damaged, and make sure that each cable connects to the correct device and the correct Ethernet port on that 
device.
 3. Verify that you can connect to the internal IP address of the FortiGate
Connect to the GUI from the FortiGate’s internal interface by browsing to its IP address. From the PC, try to ping the 
internal interface IP address; for example, ping 192.168.1.99. If you cannot connect to the internal interface, 
verify the IP configuration of the PC. If you can ping the interface but can't connect to the GUI, check the settings for 
administrative access on that interface. Alternatively, use SSH to connect to the CLI, and then confirm that HTTPS 
has been enabled for Administrative Access on the interface.
 4. Check the FortiGate interface configurations
Check the configuration of the FortiGate interface connected to the internal network (under Network > Interfaces) 
and check that Addressing mode is set to the correct mode.
 5. Verify the security policy configuration
Go to Policy & Objects > Firewall Policy and verify that the internal interface to Internet-facing interface security 
policy has been added and is located near the top of the policy list. Check the Active Sessions column to ensure that 
traffic has been processed (if this column does not appear, right-click on the table header and select Active
Sessions). If you are using NAT mode, check the configuration of the policy to make sure that NAT is enabled and 
that Use Outgoing Interface Address is selected.
 6. Verify the static routing configuration
Go to Network > Static Routes and verify that the default route is correct. Go to Monitor > Routing Monitor and verify 
that the default route appears in the list as a static route. Along with the default route, you should see two routes 
shown as Connected, one for each connected FortiGate interface.
 7. Verify that you can connect to the Internet-facing interface’s IP address
Ping the IP address of the  Internet-facing interface of your FortiGate. If you cannot connect to the interface, the 
FortiGate is not allowing sessions from the internal interface to Internet-facing interface. Verify that PING has been 
enabled for Administrative Access on the interface.
 8. Verify that you can connect to the gateway provided by your ISP
Ping the default gateway IP address from a PC on the internal network. If you cannot reach the gateway, contact 
your ISP to verify that you are using the correct gateway.
 9. Verify that you can communicate from the FortiGate to the Internet
Access the FortiGate CLI and use the command execute ping 8.8.8.8. You can also use the execute
traceroute 8.8.8.8 command to troubleshoot connectivity to the Internet.

FortiOS 6.4.6 Administration Guide 56


Fortinet Technologies Inc.
Getting started

 10. Verify the DNS configurations of the FortiGate and the PCs
Check for DNS errors by pinging or using traceroute to connect to a domain name; for example: ping
www.fortinet.com.
If the name cannot be resolved, the FortiGate or PC cannot connect to a DNS server and you should confirm that 
the DNS server IP addresses are present and correct.
 11. Confirm that the FortiGate can connect to the FortiGuard network
Once the FortiGate is on your network, you should confirm that it can reach the FortiGuard network. First, check the 
License Information widget to make sure that the status of all FortiGuard services matches the services that you 
have purchased. Go to System > FortiGuard, and, in the Filtering section, click Test Connectivity. After a minute, the 
GUI should indicate a successful connection. Verify that your FortiGate can resolve and reach FortiGuard at 
service.fortiguard.net by pinging the domain name. If you can reach this service, you can then verify the 
connection to FortiGuard servers by running the command diagnose debug rating. This displays a list of 
FortiGuard IP gateways you can connect to, as well as the following information:
 l Weight: Based on the difference in time zone between the FortiGate and this server
 l RTT: Return trip time
 l Flags: D (IP returned from DNS), I (Contract server contacted), T (being timed), F (failed)
 l TZ: Server time zone
 l Curr Lost: Current number of consecutive lost packets
 l Total Lost: Total number of lost packets
 12. Consider changing the MAC address of your external interface
Some ISPs do not want the MAC address of the device connecting to their network cable to change. If you have 
added a FortiGate to your network, you may have to change the MAC address of the Internet-facing interface using 
the following CLI command:
config system interface
edit <interface>
set macaddr <xx:xx:xx:xx:xx:xx>
end
end
 13. Check the FortiGate bridge table (transparent mode)
When a FortiGate is in transparent mode, the unit acts like a bridge sending all incoming traffic out on the other 
interfaces. The bridge is between interfaces on the FortiGate unit. Each bridge listed is a link between interfaces. 
Where traffic is flowing between interfaces, you expect to find bridges listed. If you are having connectivity issues 
and there are no bridges listed, that is a likely cause. Check for the MAC address of the interface or device in 
question. To list the existing bridge instances on the FortiGate, use the following CLI command:
diagnose netlink brctl name host root.b
show bridge control interface root.b host.
fdb: size=2048, used=25, num=25, depth=1
Bridge root.b host table
port no device devname mac addr ttl attributes
3 4 wan1 00:09:0f:cb:c2:77 88
3 4 wan1 00:26:2d:24:b7:d3 0
3 4 wan1 00:13:72:38:72:21 98
4 3 internal 00:1a:a0:2f:bc:c6 6
1 6 dmz 00:09:0f:dc:90:69 0 Local Static
3 4 wan1 c4:2c:03:0d:3a:38 81
3 4 wan1 00:09:0f:15:05:46 89
3 4 wan1 c4:2c:03:1d:1b:10 0
2 5 wan2 00:09:0f:dc:90:68 0 Local Static

FortiOS 6.4.6 Administration Guide 57


Fortinet Technologies Inc.
Getting started

 14. Use FortiExplorer if you can’t connect to the FortiGate over Ethernet
If you can’t connect to the FortiGate GUI or CLI, you may be able to connect using FortiExplorer. Refer to the 
QuickStart Guide or see the section on FortiExplorer for more details.
 15. Either reset the FortiGate to factory defaults or contact Fortinet Support for assistance
To reset the FortiGate to factory defaults, use the CLI command execute factoryreset. When prompted, type 
y to confirm the reset.
If you require further assistance, visit the Fortinet Support website.

Zero touch provisioning

This section contains instructions for configuring zero touch provisioning:
 l Zero touch provisioning with FortiDeploy on page 58
 l Zero touch provisioning with FortiManager on page 60

Zero touch provisioning with FortiDeploy

You can use this feature only when the FortiGate boots up from factory reset.

Topology

FortiGate zero touch provisioning workflow

 1. Add the FortiGate Cloud product key to the FortiGate Cloud portal so that the FortiGate serial number appears in 
the portal.

FortiOS 6.4.6 Administration Guide 58


Fortinet Technologies Inc.
Getting started

 2. Set up a configuration template with the basic configuration in the FortiGate Cloud portal.
 3. Deploy the FortiGate to FortiGate Cloud with that template.

 4. Ensure the FortiGate has an interface in default DHCP client mode and is connected to the ISP outlet.
 5. Boot the FortiGate in factory reset. The FortiGate gets the DHCP lease so that it can access FortiGate Cloud in the 
Internet and join FortiGate Cloud.
The FortiGate Cloud server checks that the FortiGate key is valid and then deploys the FortiGate to FortiGate 
Cloud.
To prevent spoofing, FortiGate Cloud invalidates that key after a successful join.
 6. Complete zero touch provisioning by obtaining configuration from platform template in the Cloud.
0: set admintimeout 50
0: end
0: config system interface
0: edit "wan1"
0: set allowaccess ping ssh fgfm
0: next
0: edit "port1"
0: set allowaccess ping
0: set ip 1.1.1.1 255.255.255.0
0: next
0: edit "port2"
0: set allowaccess ping
0: set ip 2.2.2.2 255.255.255.0
0: next
0: end

 7. The FortiGate Cloud admin can change the template for different configuration requirements and then deploy the 
updated template to the FortiGate.
For example, you can add a secondary DNS to the template and deploy it to FortiGate.

FortiOS 6.4.6 Administration Guide 59


Fortinet Technologies Inc.
Getting started

Zero touch provisioning with FortiManager

You can use this feature only when the FortiGate boots up from factory reset. This feature is for FortiGate devices that 
cannot access the Internet.
A DHCP server includes option 240 and 241 which records FortiManager IP and domain name. FortiGate has an 
interface with the default DHCP client mode that is connected to the DHCP server in the intranet.
The FortiManager admin can authorize the FortiGate the specific ADOMs and install specific configurations on the 
FortiGate.
In the whole operation, you do not need to do any manual configuration on the FortiGate except connect to the DHCP 
server. This is called zero touch deployment.
To prevent spoofing, if a different FortiManager IP comes from the DHCP server later, FortiGate does not change the 
central management configuration.

Example of configuring DHCP server with option 240


config system dhcp server
edit 2
set dns-service default
set default-gateway 172.16.200.254
set netmask 255.255.255.0
set interface "wan1"
config ip-range
edit 2
set start-ip 172.16.200.201
set end-ip 172.16.200.209
next
end
set timezone-option default
config options
edit 1
set code 240
set type ip
set ip "172.18.60.115"
next
end
next
end

FortiOS 6.4.6 Administration Guide 60


Fortinet Technologies Inc.
Getting started

FortiGate zero touch provisioning workflow

 1. Boot the FortiGate in factory reset.
G201E4Q17901047 # diagnose fdsm fmg-auto-discovery-status
dhcp: fmg-ip=0.0.0.0, fmg-domain-name='', config-touched=0

config-touched=0 means no configuration change from the default.
 2. When FortiGate boots in factory reset, it gets the DHCP lease including IP, gateway, DNS, and the FortiManager 
IP/URL. Central management is automatically configured by using FortiManager IP in option 240.
FG201E4Q17901047 # show system central-management
config system central-management
set type fortimanager
set fmg "172.18.60.115"
end

 3. If FortiGate changes from factory reset, you can see it in central management in config-touched=1.
FG201E4Q17901047 # diagnose fdsm fmg-auto-discovery-status
dhcp: fmg-ip=172.18.60.115, fmg-domain-name='', config-touched=1(/bin/dhcpcd)

Example of a spoofing DHCP server with a fake FortiManager IP

config options
edit 1
set code 240
set type ip
set ip "172.18.60.117"
end

After FortiGate reboots and gets DHCP renew, central management will not use the fake FortiManager IP because 
config-touched=1 shows that the FortiGate is not in factory reset.
FG201E4Q17901047 # diagnose fdsm fmg-auto-discovery-status
dhcp: fmg-ip=0.0.0.0, fmg-domain-name='', config-touched=1(/bin/dhcpcd)

FG201E4Q17901047 # show system central-management


config system central-management
set type fortimanager
set fmg "172.18.60.115"
end

FortiOS 6.4.6 Administration Guide 61


Fortinet Technologies Inc.
Dashboards and widgets

Dashboards and widgets

FortiOS includes predefined dashboards so administrators can easily monitor device inventory, security threats, traffic, 
and network health. You can customize the appearance of a default dashboard to display data pertinent to your security 
fabric, or combine widgets to create custom dashboards. Many dashboards also allow you to switch views between 
fabric devices.
Each dashboard contains a set of widgets and monitors that allow you to view drill down data and take actions to prevent 
threats. Use widgets to perform tasks such as viewing device inventory, creating and deleting DHCP reservations, and 
disconnecting dial-up users. You can add or remove widgets to a dashboard, or save a widget as a standalone monitor. 
This section contains the following topics:
 l Using dashboards on page 62
 l Using widgets on page 67
 l Monitor dashboards and widgets on page 69
 l FortiView on page 89

Using dashboards

You can use the dashboard GUI to view fabric devices in the security fabric. You can also combine widgets to create 
custom dashboards.

To view downstream fabric devices in the GUI:

 1. At the right side of dashboard, click the device dropdown and select a device.   

FortiOS 6.4.6 Administration Guide 62


Fortinet Technologies Inc.
Dashboards and widgets

The device dropdown is available in the Status, Security, Network, Users & Devices, and 


WiFi dashboards. You can also enable the dropdown when you create a dashboard.

To create a new dashboard in the GUI:

 1. Under Dashboard, click the Add Dashboard button. The Add Dashboard window opens.

 2. Enter a name in the Name field and click OK. The new dashboard opens.

To add a widget to a dashboard in the GUI:

 1. In the tree menu, select a dashboard.
 2. (Optional) Click the device dropdown, and select a device in the network.
 3. In the banner, click Add Widget. The Add Dashboard Widget window opens.
 4. Click the Add button next to the widget. You can use the Search field to search for a widget. Click Show More to 
view more widgets in a category.
 5. Configure the widget settings and click Add Widget.
 6. Click Close.

FortiOS 6.4.6 Administration Guide 63


Fortinet Technologies Inc.
Dashboards and widgets

To delete a dashboard in the GUI:

 1. Click the Actions menu at the right side of the dashboard and selectDelete Dashboard.   

 2. Click Delete Dashboard . The Confirm window opens.


3. Click OK.

To edit a dashboard in the GUI:

 1. Click the Actions menu at the right side of the dashboard and selectEdit Dashboard.


 2. Edit the dashboard and click OK.

Viewing device dashboards in the security fabric

Use the device dropdown in the built-in dashboards to quickly navigate between downstream fabric devices. You can 
also create dedicated device dashboards  devices or log in and configure fabric devices.
To view fabric devices, click the device dropdown at the right side of the page, and select a device from the list. 

FortiOS 6.4.6 Administration Guide 64


Fortinet Technologies Inc.
Dashboards and widgets

The device dropdown is available in the Status, Security, Network, Users & Devices, and WiFi 


dashboards. You can also enable the dropdown when you create a dashboard.

To log into a device from the device dropdown:

 1. Hover over the device in the dropdown, and click Login You are redirected to the device login page or System 
dashboard if you are already logged in.

To configure a device from the device dropdown:

 1. Hover over the device in the dropdown, and click Configure. The Configure page opens.

Creating a fabric system and license dashboard

Create a dashboard summary page to monitor all the fabric devices  in a single view. You can use the dashboard to 
monitor aspects of the devices such as system information, VPN, and routing.

FortiOS 6.4.6 Administration Guide 65


Fortinet Technologies Inc.
Dashboards and widgets

To create a system dashboard in the GUI:

 1. Click the Add Dashboard button. The Add Dashboard window opens.   

 2. In the Name field,  enter a name such as Fabric System & License, and click OK. The new dashboard appears.


 3. In the banner, click Add Widget. The Add Dashboard Widget window opens. You can use the Search field to search 
for a specific widget (for example, License Status, System Information, and Memory Usage).
 4. Click the Add button next to widget. The Add Dashboard Widget window opens. 
 5. In the Fabric member area, select Specify and select a device in the security fabric.
 6. Click Add Widget. The widget is added to the dashboard.   
Repeat this step for all the devices you want to view in the dashboard.
 7. (Optional) Arrange the widgets in the dashboard by fabric device.

FortiOS 6.4.6 Administration Guide 66


Fortinet Technologies Inc.
Dashboards and widgets

Using widgets

You can save a widget as a standalone monitor, change the view type, as well as configure tables and filter data.

To save a dashboard widget as a monitor:

 1. Hover over a widget in the dashboard, and click Expand to Full Screen.


 2. In the top menu, click the Save as Monitor icon. The Add Monitor window opens.   

 3. Enter a name for the monitor in the Name field, and click OK. 

To view the widget settings:

 1. Click the menu dropdown at the right side of the widget and select Settings.   
 2. Configure the widget settings and click OK.

The settings will vary depending on the widget.

To configure a table in the widget:

 1. Hover over the left side of the table header and click the Configure Table icon.


 2. Configure the table options.   

Option Description

Best Fit All Columns Resizes all of the columns in a table to fit their content.

Reset Table Resets the table to the default view.

Select Columns Adds or removes columns from the view.

 3. Click Apply.

To filter or configure a column in a table:

 1. Hover over a column heading, and click the Filter/Configure Column icon.


 2. Configure the column options, and click Apply.   

Option Description

Resize to Contents Resizes the column to fit the content.

Group by this Column Groups the table rows by the contents in the selected column.

 3. To filter a column, enter a value in the Filter field, and click Apply.

FortiOS 6.4.6 Administration Guide 67


Fortinet Technologies Inc.
Dashboards and widgets

Filtering is not supported in all the widgets.

Changing the default dashboard template

You can use the GUI to change the default dashboard template. The Optimal template contains a set of popular default 
dashboards and FortiView monitors. The Comprehensive template contains a set of default dashboards as well as all 
monitors and FortiViews. The Comprehensive template will be familiar to users coming from previous versions of 
FortiOS.

Changing the default template will remove the dashboards and monitors you added and reset 
the settings in the widgets.

To change the default in the GUI:

 1. Click the Actions menu at the right side of Add Dashboard or Add Monitor and click Reset All Dashboards. The 


Dashboard Setup window opens.   

 2. Select a default template and click OK.   
The following dashboards and monitors are included in the default templates:

Optimal Dashboards  l Status, 


 l Security
 l Network
 l Users & Devices
 l WiFi

Monitors  l FortiView Sources
 l FortiView Destinations 
 l FortiView Applications
 l FortiView Web Sites
 l FortiView Policies
 l FortiView Sessions

Comprehensive Dashboards  l Status


 l WiFi

Monitors  l FortiView Sources
 l FortiView Destinations
 l FortiView Applications
 l FortiView Web Sites

FortiOS 6.4.6 Administration Guide 68


Fortinet Technologies Inc.
Dashboards and widgets

 l FortiView Threats
 l FortiView Compromised Hosts
 l FortiView Policies
 l FortiView Sessions
 l Device Inventory Monitor
 l Routing Monitor
 l DHCP Monitor
 l SD-WAN Monitor
 l FortiGuard Quota Monitor
 l IPsec Monitor
 l SSL-VPN Monitor
 l Firewall User Monitor
 l Quarantine Monitor
 l FortiClient Monitor
 l FortiAP Clients Monitor
 l Rogue APs Monitor  

Monitor dashboards and widgets

Monitor dashboards and widgets allows you to view various states of your FortiGate pertaining to routing, VPN, DHCP, 
devices, users, quarantine, and wireless connections.
The following default monitor dashboards are built into FortiOS:
 l Network
 l Users & Devices
 l WiFi
Each built-in dashboard contains multiple widgets which can be expanded for detail view. To save a view as its own 
monitor, click Save as Monitor at the right side of the banner. 

For more information, see Using widgets on page 67
To view the widgets available in each dashboard category, click Add Widget.

Category Use these widgets to:

Users & Devices  l View users and devices connected to the network
 l Identify threats from individual users and devices, and quarantine them. 
 l View FortiGuard and FortiClient data
 l Monitor traffic bandwidth over time

Network  l Monitor DHCP clients
 l Monitor IPsec VPN connections
 l Monitor current routing table
 l Monitor SD-WAN status

FortiOS 6.4.6 Administration Guide 69


Fortinet Technologies Inc.
Dashboards and widgets

Category Use these widgets to:

 l Monitor SSL-VPN connections

WiFi  l View FortiAP status, channel utilization, and clients
 l View login failures and signal strength
 l View the number of WiFi clients

Static & Dynamic Routing Monitor

The Static & Dynamic Routing Monitor displays the routing table on the FortiGate including all static and dynamic routing 


protocols in IPv4 and IPv6. You can also use this monitor to view the firewall policy route.

To view the routing monitor in the GUI:

 1. Go to Dashboard > Network.


 2. Hover over the Routing widget, and click Expand to Full Screen. The Routing monitor opens.
 3. To view the policy monitor, click the Policy tab.
 4. To filter the  Interfaces and Type columns:
 a. Hover over the column heading, and click the Filter/Configure Column icon.
 b. Click Group By This Column, then click Apply.
 5. (Optional) Click Save as Monitor to save the widget as monitor.   

To look up a route in the GUI:

 1. Click Route Lookup. 


 2. Enter an IP address in the Destination field, then click Search. The matching route is highlighted on the Routing 
monitor.

FortiOS 6.4.6 Administration Guide 70


Fortinet Technologies Inc.
Dashboards and widgets

To view the routing table in the CLI:

# get route info routing-table all

Sample output:
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

Routing table for VRF=0


S* 0.0.0.0/0 [1/0] via 10.0.10.1, To-HQ-A
[1/0] via 10.0.12.1, To-HQ-MPLS
[1/0] via 10.10.11.1, To-HQ-B
[1/0] via 10.100.67.1, port1
[1/0] via 10.100.67.9, port2
C 10.0.10.0/24 is directly connected, To-HQ-A
C 10.0.10.2/32 is directly connected, To-HQ-A
C 10.0.11.0/24 is directly connected, To-HQ-B
C 10.0.11.2/32 is directly connected, To-HQ-B
C 10.0.12.0/24 is directly connected, To-HQ-MPLS
C 10.0.12.2/32 is directly connected, To-HQ-MPLS
C 10.1.0.0/24 is directly connected, port3
C 10.1.0.2/32 is directly connected, port3
C 10.1.0.3/32 is directly connected, port3
C 10.1.100.0/24 is directly connected, vsw.port6

To look up a firewall route in the CLI:

# diagnose firewall proute list

Sample output:
list route policy info(vf=root):

 
id=0x7f450002 vwl_service=2(BusinessCritialCloudApp) vwl_mbr_seq=4 5 3 dscp_tag=0xff 0xff
flags=0x0 tos=0x00 tos_mask=0x00 protocol=0 sport=0:65535 iif=0 dport=1-65535 oif=3
(port1) oif=4(port2) oif=18(To-HQ-MPLS)
source(1): 0.0.0.0-255.255.255.255
destination wildcard(1): 0.0.0.0/0.0.0.0
internet service(4): Microsoft.Office.365(4294837472,0,0,0, 33182) Microsoft.Office.Online
(4294837475,0,0,0, 16177) Salesforce(4294837976,0,0,0, 16920) GoToMeeting
(4294836966,0,0,0, 16354)
hit_count=0 last_used=2020-03-30 10:50:18

id=0x7f450003 vwl_service=3(NonBusinessCriticalCloudApp) vwl_mbr_seq=4 5 dscp_tag=0xff 0xff


flags=0x0 tos=0x00 tos_mask=0x00 protocol=0 sport=0:65535 iif=0 dport=1-65535 oif=3
(port1) oif=4(port2)
source(1): 0.0.0.0-255.255.255.255
destination wildcard(1): 0.0.0.0/0.0.0.0
internet service(2): Facebook(4294836806,0,0,0, 15832) Twitter(4294838278,0,0,0, 16001)
hit_count=0 last_used=2020-03-30 10:50:18

FortiOS 6.4.6 Administration Guide 71


Fortinet Technologies Inc.
Dashboards and widgets

id=0x7f450004 vwl_service=4(Ping-Policy) vwl_mbr_seq=1 2 dscp_tag=0xff 0xff flags=0x0


tos=0x00 tos_mask=0x00 protocol=1 sport=0:65535 iif=0 dport=1-65535 oif=16(To-HQ-A)
oif=17(To-HQ-B)

DHCP monitor

The DHCP monitor displays all the addresses leased out by FortiGate's DHCP servers. You can use the monitor to 
revoke an address for a device, or create, edit, and delete address reservations.

To view the DHCP monitor in the GUI:

 1. Go to Dashboard > Network.


 2. Hover over the DHCP widget, and click Expand to Full Screen.

To filter or configure a column in the table, hover over the column heading and click 
Filter/Configure Column.

To revoke a lease:

 1. Select a device in the table.
 2. In the toolbar, click Revoke, or right-click the device, and click Revoke. The Confirm window opens.
 3. Click OK.

A confirmation window opens only if there is an associated address reservation. If there is no 
address, the lease will be removed immediately upon clicking Revoke.

To create a DHCP reservation:

 1. Select a server in the table.
 2. In the toolbar, click Reservation, or right-click the device and click Create DHCP Reservation. The Create New
DHCP Reservation window opens.

FortiOS 6.4.6 Administration Guide 72


Fortinet Technologies Inc.
Dashboards and widgets

 3. Configure the DHCP settings.   
 4. Click OK.

To view top sources by bytes:

 1. Right-click a device in the table and click Show in FortiView. The Top Sources by Bytes widget opens.

To view the DHCP lease list in the CLI:

# execute dhcp lease-list

IPsec monitor

The IPsec monitor displays all connected Site to Site VPN and Dial-up VPNs. You can use the monitor to bring a phase 2 
tunnel up or down  or disconnect dial-up users.

To view the IPSEC monitor in the GUI:

 1. Go to Dashboard > Network.


 2. Hover over the IPsec widget, and click Expand to Full Screen.

To filter or configure a column in the table, hover over the column heading and click 
Filter/Configure Column.

To reset statistics:

 1. Select a tunnel in the table.
 2. In the toolbar, click Reset Statistics or right-click the tunnel, and click Reset Statistics. The Confirm window opens.
 3. Click OK.

FortiOS 6.4.6 Administration Guide 73


Fortinet Technologies Inc.
Dashboards and widgets

To bring a tunnel up:

 1. Select a tunnel in the table.
 2. Click Bring Up, or right-click the tunnel, and click Bring Up. The Confirm window opens.
 3. Click OK.

To bring a tunnel down:

 1. Select a tunnel in the table.
 2. Click Bring Down, or right-click the tunnel, and click Bring Down. The Confirm window opens.
 3. Click OK.

To locate a tunnel on the VPN Map:

 1. Select a tunnel in the table.
 2. Click Locate on VPN Map, or right-click the tunnel, and click Locate on VPN Map. You are taken to VPN > VPN
Location Map.

To view the IPsec monitor in the CLI:

# diagnose vpn tunnel list

Sample output:
list all ipsec tunnel in vd 0
------------------------------------------------------
name=fct-dialup ver=1 serial=4 10.100.67.5:0->0.0.0.0:0 dst_mtu=0
bound_if=3 lgwy=static/1 tun=intf/0 mode=dialup/2 encap=none/512 options[0200]=frag-rfc
accept_traffic=1 overlay_id=0

proxyid_num=0 child_num=0 refcnt=12 ilast=5545 olast=5545 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=0 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
run_tally=0
------------------------------------------------------
name=To-HQ-MPLS ver=2 serial=3 192.168.0.14:0->192.168.0.1:0 dst_mtu=1500
bound_if=7 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1 overlay_id=0

proxyid_num=1 child_num=0 refcnt=22 ilast=0 olast=0 ad=/0


stat: rxp=66693 txp=29183 rxb=33487128 txb=1908427
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=To-HQ-MPLS proto=0 sa=1 ref=6 serial=1 adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=32203 type=00 soft=0 mtu=1438 expire=266/0B replaywin=2048
seqno=2c5e esn=0 replaywin_lastseq=00002ea3 itn=0 qat=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=1773/1800
dec: spi=700c9198 esp=aes key=16 ebd04605de6148c8a92ced48b30930fa
ah=sha1 key=20 5f0201f67d7c714a046025a1df41d40376437f6a
enc: spi=5aaccc20 esp=aes key=16 13d5d4b46e5e9c42eef509f2d9879188
ah=sha1 key=20 2dde67ef7a2a78b622d9a7ec6d75ad3c55d241e1
dec:pkts/bytes=11938/5226964, enc:pkts/bytes=11357/1312184

FortiOS 6.4.6 Administration Guide 74


Fortinet Technologies Inc.
Dashboards and widgets

SSL-VPN monitor

The SSL-VPN monitor displays user logins and active connections. You can use the monitor to disconnect a specific 
connection.

To view the SSL-VPN monitor in the GUI:

 1. Go Dashboard > Network.


 2. Hover over the SSL-VPN widget, and click Expand to Full Screen.

To filter or configure a column in the table, hover over the column heading and click 
Filter/Configure Column.

To disconnect a user:

 1. Select a user in the table.
 2. In the table,  right-click the user, and click End Session. The Confirm window opens.
 3. Click OK.

To monitor SSL-VPN users in the CLI:

# get vpn ssl monitor

Sample output
SSL VPN Login Users:
Index User Group Auth Type Timeout From HTTP in/out HTTPS in/out
0 amitchell TAC 1(1) 296 10.100.64.101 3838502/11077721 0/0
1 mmiles Dev 1(1) 292 10.100.64.101 4302506/11167442 0/0

SSL VPN sessions:


Index User Group Source IP Duration I/O Bytes Tunnel/Dest IP

Firewall Users Monitor

The Firewall Users monitor displays all firewall users currently logged in. You can use the  monitor to diagnose user-
related logons or to highlight and deauthenticate a user. 

FortiOS 6.4.6 Administration Guide 75


Fortinet Technologies Inc.
Dashboards and widgets

To view the firewall monitor in the CLI:

 1. Go to Dashboard > Users & Devices.


If you are using the Comprehensive dashboard template, go to Dashboard > Firewall User Monitor. See Changing 
the default dashboard template on page 68.
 2. Hover over the Firewall Users widget, and click Expand to Full Screen.
 3. To show FSSO logons, click Show all FSSO Logons at the top right of the page.

To filter or configure a column in the table, hover over the column heading and click 
Filter/Configure Column.

To deauthenticate a user:

 1. (Optional) Use the Search field to search for a specific user.
 2. In the toolbar, click Deauthenticate, or right-click the user, and click Deauthenticate. The Confirm window opens.
 3. Click OK.

To view firewall users in the CLI:

# diagnose firewall auth list

Implement a user device store to centralize device data

Device data collected from different daemons is centralized in a user device store for quick access and performance. 
Thousands of devices can be displayed in the GUI in seconds. The maximum number of devices and users that are 
stored in the database can be configured.
For example, go to Dashboard > Users & Devices and expand the Device Inventory widget.

FortiOS 6.4.6 Administration Guide 76


Fortinet Technologies Inc.
Dashboards and widgets

To configure the maximum number of devices and users that are stored in the database:

config system global


set user-device-store-max-devices <value>
set user-device-store-max-users <value>
end

To view the user or device on disk session information:

 l List all records:
diagnose user-device-store {device | user} disk list

 l Query by SQL WHERE clause:
diagnose user-device-store {device | user} disk query <SQL WHERE clause>

To view the user or device in memory session information:

 l List all records:
diagnose user-device-store {device | user} memory list

 l Query by username or IP address:
diagnose user-device-store {device | user} memory query {ip | username} <value>

WiFi Dashboard

The WiFi Dashboard is one of the default monitor dashboards built into FortiOS. It allows you to view FortiAP status, 
channel utilization, WiFi clients and associated information, login failures and signal strength, and so on.
Go to Dashboard > WiFi to access the WiFi Dashboard:

FortiOS 6.4.6 Administration Guide 77


Fortinet Technologies Inc.
Dashboards and widgets

You may customize the WiFi dashboard as per your requirements. To know more about using and modifying 
dashboards and widgets, see Dashboards and widgets on page 62.
This section describes the following monitors available for the WiFi Dashboard:
 l FortiAP Status monitor on page 78
 l Clients by FortiAP monitor on page 80

FortiAP Status monitor

The FortiAP Status monitor displays the status and the channel utilization of the radios of FortiAP devices connected to a 
FortiGate. It also provides access to tools to diagnose and analyze connected APs. 

To view the FortiAP Status monitor in the GUI:

 1. Go to Dashboard > WiFi.


 2. Hover over the FortiAP Status widget, and click Expand to Full Screen. The FortiAP Status monitor opens.
 3. (Optional) Click Save as Monitor to save the widget as monitor.   

FortiOS 6.4.6 Administration Guide 78


Fortinet Technologies Inc.
Dashboards and widgets

To view the Diagnostics and Tools menu in the GUI:

 1. Select and right-click on an Access Point entry in the table on the FortiAP Status monitor page.   

 2. Click Diagnostics and Tools. The Diagnostics and Tools dialog for the selected FortiAP device slides in on the 


screen.

 3. You may click on the various tabs in the Diagnostics and Tools dialog like Clients, Spectrum Analysis, VLAN Probe, 


and so on, to monitor and analyze the FortiAP device.
The Diagnostics and Tools dialog is similar to the device dialog from WiFi & Switch Controller > Managed FortiAPs. To 
learn more about the various tabs and their functions, see Support for spectrum analysis of FortiAP E models, VLAN 
probe report, and Standardize wireless health metrics.

FortiOS 6.4.6 Administration Guide 79


Fortinet Technologies Inc.
Dashboards and widgets

Clients by FortiAP monitor

The Clients by FortiAP  monitor allows you to view detailed information about the health of individual WiFi connections in 


the network. It also provides access to tools to diagnose and analyze connected wireless devices. 

To view the Clients by FortiAP monitor in the GUI:

 1. Go to Dashboard > WiFi.


 2. Hover over the Clients by FortiAP  widget, and click Expand to Full Screen. The Clients by FortiAP  monitor opens.
 3. (Optional) Click Save as Monitor to save the widget as monitor.   

FortiOS 6.4.6 Administration Guide 80


Fortinet Technologies Inc.
Dashboards and widgets

To view the summary page for a wireless client in the GUI:

 1. Select  a client entry in the table on the Clients by FortiAP  monitor page.   

 2. Right-lick on the selected client entry in the table and select Diagnostics and Tools. The summary dialog for the 


selected client slides in on the screen.   

 3. You may click on Quarantine to quarantine, or Disassociate to disassociate the selected wireless client.
From the summary page, the Health section displays the overall health for the wireless connection. The overall health of 
the connection is:

FortiOS 6.4.6 Administration Guide 81


Fortinet Technologies Inc.
Dashboards and widgets

 l Good if the value range for all three conditions are Good
 l Fair or poor if one of the three conditions is Fair or Poor respectively.

Condition Value Range

Signal Strength  l Good > -56dBm


 l -56dBm > Fair > -75dBm 
 l Poor < -75dBm

Signal Strength/Noise  l Good > 39dBm


 l 20dBm < Fair < 39dBm 
 l Poor < 20dBm

Band  l Good = 5G band


 l Fair = 2.4G band 

The summary page also has the following FortiView tabs:
 l Performance

FortiOS 6.4.6 Administration Guide 82


Fortinet Technologies Inc.
Dashboards and widgets

 l Applications

 l Destinations

 l Policies

FortiOS 6.4.6 Administration Guide 83


Fortinet Technologies Inc.
Dashboards and widgets

 l Logs

The Clients by FortiAP monitor is a drilled-down version of the WiFi & Switch Controller > WiFi Clients page.

Device inventory

You can enable device detection to allow FortiOS to monitor your networks and gather information about devices 
operating on those networks, including:
 l MAC address
 l IP address
 l Operating system
 l Hostname
 l Username
 l When FortiOS detected the device and on which interface
You can enable device detection separately on each interface in Network > Interfaces. 
Device detection is intended for devices directly connected to your LAN ports. If enabled on a WAN port, device 
detection may be unable to determine the OS on some devices. You can enable active scanning on the interface to find 
hosts whose device types FortiOS cannot determine passively.
You can also manually add devices to Device Inventory to ensure that a device with multiple interfaces displays as a 
single device.

To view the device inventory monitor in the GUI:

 1. Go to Dashboard > Users & Devices.


If you are using the Comprehensive dashboard template, go to Dashboard > Device Inventory Monitor. See 
Changing the default dashboard template on page 68.
 2. Hover over the Device Inventory widget, and click Expand to Full Screen. The Device Inventory pane appears.

FortiOS 6.4.6 Administration Guide 84


Fortinet Technologies Inc.
Dashboards and widgets

To filter or configure a column in the table, hover over the column heading, and click 
Filter/Configure Column. See Device inventory and filtering on page 85.

Device inventory and filtering

The Device Inventory widget contains a series of summary charts that provide an overview of the hardware, operating 
system, status, and interfaces. You can use these clickable charts to simplify filtering among your devices.

To view the device inventory and apply a filter:

 1. Go to Dashboard > Users & Devices.


If you are using the Comprehensive dashboard template, go to Dashboard > Device Inventory Monitor. See 
Changing the default dashboard template on page 68.
 2. Hover over the Device Inventory widget, and click Expand to Full Screen. The Device Inventory pane appears.
 3. To filter the order of the charts by operating system, click the dropdown in the top menu bar and select Software OS.
 4. To filter a chart, click an item in the legend or chart area. The table displays the filter results.
 5. To combine filters, hover over a column heading and click Filter/Configure Column.
 6. Click the filter icon in the top-right corner of the chart to remove the filter.

FortiOS 6.4.6 Administration Guide 85


Fortinet Technologies Inc.
Dashboards and widgets

Filter examples

To filter all Linux devices:

 1. In the Software OS chart, click Linux .

To filter all offline devices:

 1. In the Status chart, click Offline.

FortiOS 6.4.6 Administration Guide 86


Fortinet Technologies Inc.
Dashboards and widgets

To filter all devices discovered on port4:

 1. In the Interfaces chart, click port3. 

Adding MAC-based addresses to devices

Assets detected by device detection appear in the Device Inventory widget. You can manage policies around devices by 
adding a new device object (MAC-based address) to a device. Once you add the MAC-based address, the device can be 
used in address groups or directly in policies.

To add a MAC-based address to a device:

 1. Go to Dashboard > Users & Devices.


If you are using the Comprehensive dashboard template, go to Dashboard > Device Inventory Monitor. See 
Changing the default dashboard template on page 68.
 2. Hover over the Device Inventory widget, and click Expand to Full Screen. The Device Inventory monitor opens.

FortiOS 6.4.6 Administration Guide 87


Fortinet Technologies Inc.
Dashboards and widgets

 3. Click a device and then click Firewall Device Address.

 4. (Optional) In the Name field, give the device a descriptive name.   

Use the Name field to assign a descriptive name to a device so it is easier to find it in the 
Device column. After you finish configuring the device, refresh the page to see the new 
name in the dashboard.

FortiOS 6.4.6 Administration Guide 88


Fortinet Technologies Inc.
Dashboards and widgets

 5. Click OK. The MAC address icon appears in the Address column next to the device name.   

FortiView

FortiView is the FortiOS log view tool and comprehensive monitoring system for your network. FortiView integrates real-
time and historical data into a single view on your FortiGate. It can log and monitor network threats, keep track of 
administration activities, and more.
Use FortiView dashboards and widgets to investigate traffic activity such as user uploads and downloads, or videos 
watched on YouTube. You can view the traffic on the whole network, by user group or by individual. FortiView displays 
the information in both text and visual format, giving you an overall picture of your network traffic activity so that you can 
quickly decide on actionable items.
FortiView is integrated with many UTM functions and each release adds more features. For example, you can 
quarantine an IP address directly in FortiView or create custom devices and addresses from a FortiView entry.

The logging range and depth will depend on the FortiGate model.

FortiView monitors and widgets

FortiView dashboards and widgets are available in the tree menu under the Dashboards module. The module contains 
several core dashboards for the top categories. Non-core FortiView pages are available as widgets that can be added to 
the dashboards. You can also use non-core pages to create standalone  monitors.

FortiOS 6.4.6 Administration Guide 89


Fortinet Technologies Inc.
Dashboards and widgets

Core FortiView dashboards

The following core dashboards are available in the tree menu under the Dashboard console:

Dashboard Usage

FortiView Sources Displays Top Sources by traffic volume and drilldown by Source.

FortiView Destinations Displays Top Destinations by traffic volume and drilldown by Destination.

FortiView Applications Displays Top Applications by traffic volume and drilldown by Application.

FortiView Websites Displays Top Websites by session count and drilldown by Domain.

FortiView Policies Displays Top Policies by traffic volume and drilldown by Policy number

FortiView Sessions  Displays Top Sessions by traffic source and can be used to end sessions.

Usage is based on default settings. The pages may be customized further and sorted by other fields.

You can quarantine a host and ban an IP from all of the core FortiView monitors.

FortiView widgets

FortiView widgets allow you to create custom dashboards to monitor vulnerabilities, scan summaries, and top items from 
selected FortiView categories. You can also customize widgets to show information that is most important to you, such 
as the time range, source logging device, and other information. For information, see Adding FortiView widgets on page 
91

FortiOS 6.4.6 Administration Guide 90


Fortinet Technologies Inc.
Dashboards and widgets

Adding FortiView widgets

Non-core FortiView pages are available in the Add Dashboard window.You can add a FortiView widget to a dashboard 
or save the widget as a monitor.

You cannot add widgets to a core FortiView monitor.

To add a FortiView widget in the GUI:

 1. In the tree menu, select a dashboard and click Add Widget.


 2. In the FortiView section, click Add next to a widget. You can use the Search field to search for a specific widget or 
click Show More to view more widgets.
 3. In the Fabric member area, click Default or Specify to select a FortiGate device in the security fabric.
 4. From the Time Period dropdown, select the time period. This option is not available in all widgets.
 5. In the Visualization area, select Table View or Bubble Chart.
 6. From the Sort By dropdown, select the sorting method.
 7. Click Add Widget.

Widgets by category

Usage is based on the default settings. The widgets may be customized further and sorted by other fields.

LAN/DMZ

Widget Sort by Usage

Applications Bytes/Sessions/Bandwidth/Packets Displays top applications and drilldown by 


application.

Cloud Applications Bytes/Sessions/Files(Up/Down) Displays top cloud applications and drilldown 


by application .

Cloud Users Bytes/Sessions/Files(Up/Down) Displays top cloud users and drilldown by 


cloud user.

Compromised Hosts Verdict Displays compromised hosts and drilldown by 


source.

Countries/Regions Bytes/Sessions/Bandwidth/Packets Displays top countries/regions and drilldown 


by countries/regions.

Destination Firewall  Bytes/Sessions/Bandwidth/Packets Displays top destination firewall objects and 


Objects drilldown by destination objects.

Destination Owners Bytes/Sessions/Bandwidth/Packets Displays top destination owners and drilldown 


by destination.

FortiOS 6.4.6 Administration Guide 91


Fortinet Technologies Inc.
Dashboards and widgets

Widget Sort by Usage

Destinations Bytes/Sessions/Bandwidth/Packets Displays top destinations and drilldown by 


destination.

Search Phrases Count Displays top search phrases and drilldown by 


search phrase.

Source Firewall  Bytes/Sessions/Bandwidth/Packets Displays top search phrases and drilldown by 


Objects source object.

Sources Bytes/Sessions/Bandwidth/Packets Displays top sources and drilldown by source.

Threats Threat level/Threat Score/Sessions Displays top threats and drilldown by threat.

Traffic Shaping Dropped  Displays top traffic shaping and drilldown by 


Bytes/Bytes/Sessions/Bandwidth/Packets shaper.

Web Categories Bytes/Sessions/Bandwidth/Packets Displays top web categories and drilldown by 


category.

Web Sites Bytes/Sessions/Bandwidth/Packets Displays top web sites and drilldown by 


domain.

WiFi Clients Bytes/Sessions Displays top WiFi clients and drilldown by 


source.

WAN

Widget Sort by Usage

Servers Bytes/Sessions/Bandwidth/Packets Displays top servers and drilldown by server address.

Sources Bytes/Sessions/Bandwidth/Packets Displays top sources and drilldown by device.

Threats Threat Level/Threat Score/Sessions Displays top threats and drilldown by threat.

All Segments

Widget Sort by Usage

Admin Logins Configuration Changes/Logins/Failed  Displays top admin logins by username.


Logins

Destination  Bytes/Sessions/Bandwidth/Packets Displays top destination interfaces by destination 


Interfaces interface.

Endpoint  Severity Displays top endpoint vulnerabilities by vulnerability 


Vulnerabilities name.

Failed  Failed Attempts Displays top failed authentications by failed 


Authentication authentication source.

FortiSandbox Files Submitted Displays top FortiSandbox files by file name.

FortiOS 6.4.6 Administration Guide 92


Fortinet Technologies Inc.
Dashboards and widgets

Widget Sort by Usage

Interface Pairs Bytes/Sessions/Bandwidth/Packets Displays top interface pairs by source interface.

Policies Bytes/Sessions/Bandwidth/Packets Displays top policies by policy.

Source Interfaces Bytes/Sessions/Bandwidth/Packets Displays top source interfaces by source interface.

System Events Level/Events Displays top system events by event name.

VPN Connections/Bytes Displays top VPN connections by user.

Vulnerable  Detected Vulnerabilities Displays top vulnerable endpoint devices by device.


Endpoint Devices

VDOMs and dashboards

Dashboards are created per VDOM when VDOM mode is enabled. Some features and widgets are not available 
depending on   Multi or Split-task VDOM mode. 

Multi-VDOM mode

The following widgets and dashboard setting  are not available  Multi-VDOM mode because it does not support Security 
Fabric:
 l Security Fabric related widgets
 l FortiGate Selection option

Split-task mode

Split-task VDOM mode is limited to two VDOMs, the root VDOM and the FortiGate traffic VDOM. The root VDOM is for all 
management related settings and  the FortiGate traffic VDOM is for all traffic related settings.
The FortiGate Selection option is available when you create a dashboard in Split-Task VDOM mode.
For information about VDOM modes, see Virtual Domains on page 798.

Examples

When VDOM mode is disabled, the FortiGate Selection option is available in the Add Dashboard window:

When Multi-VDOM mode is enabled, the FortiGate Selection is not available in the Add Dashboard window:

FortiOS 6.4.6 Administration Guide 93


Fortinet Technologies Inc.
Dashboards and widgets

When Multi-VDOM mode is disabled, all the widgets in the Add Dashboard Widget menu are enabled:

When Multi-VDOM mode is enabled, the Security Fabric Status widget is disabled:

FortiView interface

Use the FortiView interface  to customize the view and visualizations within a dashboard to  find the information you are 
looking for. The tools in the top menu bar allow you to change the time display, refresh the data,  customize the data 
source, and filter the results. You can also right-click a table in the dashboard to view drilldown information for an entry.

Top menu bar

The top menu bar contains the following settings:
 l A time display dropdown to switch between current and historical data.
 l A Refresh button to update the displayed data.

FortiOS 6.4.6 Administration Guide 94


Fortinet Technologies Inc.
Dashboards and widgets

 l A Settings dropdown to change the information shown on the dashboard.

Time period display

Use the time display dropdown to select the time period to display on the current dashboard. Time display options vary 
depending on the dashboard and can include current information (now) and historical information (1 hour, 24 hours, and 
7 days). 

Disk logging or remote logging must be enabled to view historical information. 

You can use a chart to create a custom time display by selecting the  time range with your cursor.

The icon next to the time period identifies the data source (FortiGate Disk, FortiAnalyzer, or FortiGate Cloud). You can 
hover over the icon to see a description of the device. 

View settings

Use the Settings menu to change the data source, sort by information, and visualization.

FortiOS 6.4.6 Administration Guide 95


Fortinet Technologies Inc.
Dashboards and widgets

To change the widget settings:

 1. Click the dropdown menu at the right side of the top menu bar, and select Settings.   

 2. Configure the widget settings, and click OK.   

The Data Source dropdown only appears when FortiGate is connected to another data 
source.

For information about widget settings, see Adding FortiView widgets on page 91

For dashboards with multiple widgets, you cannot access the settings dropdown when the 
widget is expanded to full screen. To change the settings, click the back button to return to the 
dashboard, and click the dropdown.

Data source

FortiView gathers information from a variety of data sources. If there are no log disk or remote logging configured, the 
data will be drawn from the FortiGate's session table, and the Time Period is set to Now.

FortiOS 6.4.6 Administration Guide 96


Fortinet Technologies Inc.
Dashboards and widgets

Other data sources that can be configured are:
 l FortiGates (disk)
 l FortiAnalyzer
 l FortiGate Cloud

When Data Source is set to Best Available Device, FortiAnalyzer is selected when available, 


then FortiGate Cloud, and then FortiGate Disk.

Display types

Bubble charts

Display types include table view, bubble charts, and country maps. Not all display types are supported by all 
dashboards. 
Bubble charts allow you to sort information using the Compare By dropdown menu. The size of each bubble represents 
the related amount of data. You can place your cursor over a bubble to display a tool-tip with detailed information on that 
item, and click on a bubble to drilldown into greater detail. 

Country maps

Country maps display traffic activity as regions on a map. Hover over the highlighted region to view information about the 
entry. You can also compare data by Bytes, Sessions, Bandwidth, and Packets. Country maps are not available in all 
dashboards and widgets.

FortiOS 6.4.6 Administration Guide 97


Fortinet Technologies Inc.
Dashboards and widgets

Table view

Table view displays traffic activity as a graph and a table. To remove the table, click close, at the top right corner of the 
graph. To view the graph, click Show Graph.

Source view

Time  l Now entries are determined by the FortiGate's system session list.
 l Historical or 1 hour or later entries are determined by traffic logs, with additional 
information coming from UTM logs.

The dropdown only shows now if there is no disk.

Graph  l The graph shows the bytes sent/received in the time frame. 
 l Users can customize the time frame by selecting a time period within the graph.

Columns  l Source shows the IP address (and user as well as user avatar if configured) of the source 
device.
 l Device shows the device information as listed in the Device Inventory widget. Device 
detection should be enabled on the applicable interfaces for best function. For 

FortiOS 6.4.6 Administration Guide 98


Fortinet Technologies Inc.
Dashboards and widgets

information about adding widgets, see Using widgets on page 67.
 l Threat Score is the threat score of the source based on UTM features such as Web Filter 
and antivirus. It shows threat scores allowed and threat scores blocked.
 l Bytes is the accumulated bytes sent/received. In realtime, this is calculated from the 
session list, and in historical it is from logs.
 l Sessions is the total sessions blocked/allowed. In realtime, this is calculated from the 
session list, and in historical it is from logs.
 l Source is a simplified version of the first column, including only the IP address without 
extra information.
 l Source Interface is the interface from which the traffic originates. In realtime, this is 
calculated from the session list, and in historical it is from the logs.
 l FortiGate is the name of the fabric device.
 l More information can be shown in a tooltip while hovering over these entries.
 l For realtime, two more columns are available, Bandwidth and Packets, both of which 
come from the session list.

Hover over linked items in an entry to view additional information. Some information windows provide links to other areas 
of FortiOS such as the application signatures page.

To select the columns  displayed in a table, hover over the header in the first column, and click the configure table icon.

Drilldown information

Double-click or right-click an entry in a FortiView dashboard and select Drill Down to Details to view additional details 


about the selected traffic activity. Click the Back icon in the toolbar to return to the previous view. 
You can group drilldown information into different drilldown views. For example, you can group the drilldown information 
in the Top FortiView Destinations dashboard by Sources, Applications, Threats, and Policies. 

FortiOS 6.4.6 Administration Guide 99


Fortinet Technologies Inc.
Dashboards and widgets

Double-click an entry to view the logs in Sessions view. Double-click a session to view the logs. 

Graph  l The graph shows the bytes sent/received in the time frame. Realtime does not include a 
chart.
 l Users can customize the time frame by selecting a time period within the graph.

Summary  l Shows information such as the user/avatar, avatar/source IP, bytes, and sessions total 
Information for the time period.
 l Can quarantine host (access layer quarantine) if they are behind a FortiSwitch or 
FortiAP.
 l Can ban IP addresses, adds the source IP address into the quarantine list.

Tabs  l Drilling down entries in any of these tabs (except sessions tab) will take you to the 
underlying traffic log in the sessions tab.

FortiOS 6.4.6 Administration Guide 100


Fortinet Technologies Inc.
Dashboards and widgets

 l Applications shows a list of the applications attributed to the source IP. This can include 
scanned applications (using Application Control in a firewall policy or unscanned 
applications.
config log gui-display
set fortiview-unscanned-apps enable
end
 l Destinations shows destinations grouped by IP address/FQDN.
 l Threats lists the threats caught by UTM profiles. This can be from antivirus, IPS, Web 
Filter, Application Control, etc.
 l Web Sites contains the websites which were detected either with webfilter, or through 
FQDN in traffic logs.
 l Web Categories groups entries into their categories as dictated by the Web Filter 
Database.
 l Policies groups the entries into which polices they passed through or were blocked by.
 l Sessions shows the underlying logs (historical) or sessions (realtime). Drilldowns from 
other tabs end up showing the underlying log located in this tab.
 l Search Phrases shows entries of search phrases on search engines captured by a Web 
Filter UTM profile, with deep inspection enabled in firewall policy.
 l More information can be shown in a tooltip while hovering over these entries.

To view matching logs or download a log, click the Security tab in the Log Details . 

FortiView from disk

FortiView from disk is available on all FortiGates with an SSD disk.

Restrictions

Model Supported view

Desktop models (100 series) with  Five minutes and one hour
SSD

Medium models with SSD Up to 24 hours

Large models (1500D and  Up to seven days
above) with SSD To enable seven days view:

FortiOS 6.4.6 Administration Guide 101


Fortinet Technologies Inc.
Dashboards and widgets

Model Supported view


config log setting
set fortiview-weekly-data enable
end

Configuration

A firewall policy needs to be in place with traffic logging enabled. For optimal operation with FortiView, internal interface 
roles should be clearly defined as LAN. DMZ and internet facing or external interface roles should be defined as WAN.

To configure logging to disk in the GUI:

 1. Enable disk logging from the FortiGate GUI. 
 a. Go to Log & Report > Log Settings > Local Traffic Log. 
 b. Select the checkbox next to Disk.
 2. Enable historical FortiView from the FortiGate GUI.
 a. Go to Log & Report > Log Settings > Local Traffic Log.
 b. Select the checkbox next to Enable Historical FortiView.

 3. Click Apply.

To include sniffer traffic and local-deny traffic when FortiView from Disk:

config report setting


set report-source forward-traffic sniffer-traffic local-deny-traffic
end

This feature is only supported through the CLI.

To configure the data source in the GUI:

 1. Go to Dashboard > FortiView Sources.


 2. Select a time range other than now from the drop-down list to view historical data.
 3. In the top menu, click the dropdown, and select Settings. The Edit Dashboard Widget window opens.
 a. In the Data Source area, click Specify.
 b. From the dropdown, select Disk, then click OK.
For information see, FortiView interface on page 94.

FortiOS 6.4.6 Administration Guide 102


Fortinet Technologies Inc.
Dashboards and widgets

Troubleshooting

Use execute report flush-cache and execute report recreate-db to clear up any irregularities that may 


be caused by upgrading or cache issues.

FortiView from FortiAnalyzer

Attach a FortiAnalyzer to FortiGate to increase the functionality of FortiView. Adding a FortiAnalyzer is useful when 
adding widgets such as the Compromised Hosts widget. It also allows historical view for up to seven days.

Requirements

 l A FortiGate or FortiOS
 l A compatible FortiAnalyzer (see Compatibility with FortiOS)

To configure logging to the FortiAnalyzer:

 1. On the FortiGate, go to Security Fabric > Fabric Connectors, and double-click the FortiAnalyzer Logging card.


 2. Enter the IP address of the FortiAnalyzer device.
 3. Click Test Connectivity. A message will be shown stating that the FortiGate is not authorized on the FortiAnalyzer.   

 4. On the FortiAnalyzer, go to Device Manager, and click the Unauthorized tab.


 5. In the device list, right-click the FortiGate, then click Authorize.

 6. On FortiGate, go to Security Fabric > Fabric Connectors, and double-click the FortiAnalyzer Logging card.

FortiOS 6.4.6 Administration Guide 103


Fortinet Technologies Inc.
Dashboards and widgets

 7. Click Test Connectivity to confirm that the device is now authorized. 

To enable FortiView from FortiAnalyzer:

 1. Go to Dashboard > FortiView Sources.


 2. Select a time range other than now from the drop-down list to view historical data.
 3. In top menu, click the dropdown, and select Settings. The Edit Dashboard Widget window opens.
 a. In the Data Source area, click Specify.
 b. From the dropdown, select FortiAnalyzer, and click OK.

All the historical information now comes from the FortiAnalyzer.

When Data Source is set to Best Available Device, FortiAnalyzer is selected when 


available, then FortiGate Cloud, and then FortiGate Disk.

FortiView from FortiGate Cloud

This function requires a FortiGate that is registered and logged into a compatible FortiGate Cloud. When using FortiGate 
Cloud, the Time Period can be set to up to 24 hours.

To configure logging to FortiGate Cloud:

 1. Go to Security Fabric > Fabric Connectors, and double-click the Cloud Logging card.


 2. For Status, click Enabled.
 3. For Type, click FortiGate Cloud.
If the FortiGate is registered and logged into FortiGate Cloud, the Account and Region is displayed.

FortiOS 6.4.6 Administration Guide 104


Fortinet Technologies Inc.
Dashboards and widgets

If the FortiGate is logged out from FortiGate Cloud, click Activate and log in, and ensure Send logs to FortiGate


Cloud is selected.

 4. Go to Log & Report > Log Settings and set the following:


 a. Set Event Logging to All.
 b. Set Local Traffic Log to All.
 c. Click Apply.

To enable FortiView with log source as FortiGate Cloud:

 1. Go to Dashboard > FortiView Sources. 


 2. In the top menu, click the dropdown, and select Settings. The Edit Dashboard Widget window opens.   
 a. In the Data Source area, click Specify.
 b. From the dropdown, select FortiGate Cloud, then click OK.   

You can select FortiGate Cloud as the data source for all available FortiView pages and 
widgets. 

FortiView sources

The FortiView Sources dashboard displays top sources sorted by Bytes, Sessions or Threat Score. The information can 
be displayed in real time or historical views. You can use the dashboard to create or edit a firewall device address or 

FortiOS 6.4.6 Administration Guide 105


Fortinet Technologies Inc.
Dashboards and widgets

IP address definitions, and temporarily or permanently ban IPs.

To add a firewall device address:

 1. In the Device column, hover over the device MAC address. An information window opens.   

 2. Click Firewall Device Address. The New Address window opens.


 3. Configure the address settings, and click Return.   

Use the Name field to assign a descriptive name to a device so it is easier to find it in the 
Device column. After you finish configuring the device, refresh the page to see the new 
name in the dashboard.

To add a firewall IP address:

 1. In the Device column, hover over the device MAC address. An information window opens.   

 2. Click Firewall IP Address. The New Address window opens.

FortiOS 6.4.6 Administration Guide 106


Fortinet Technologies Inc.
Dashboards and widgets

 3. Configure the address settings, and click Return.   

Use the Name field to assign a descriptive name to a device so it is easier to find it in the 
Device column. After you finish configuring the device, refresh the page to see the new 
name in the dashboard.

To ban an IP address:

 1. In the Device column, hover over the device MAC address. An information window opens.   

 2. Click Ban IP . The Ban IP window opens.


 3. Configure the ban IP settings, and click OK.   

FortiView Sessions

The FortiView Sessions dashboard is one of the core FortiView dashboards available in FortiOS. It displays Top
Sessions by traffic source and can be used to end sessions. You may customize the dashboard as per your needs by 
using the sort and filter capabilities.
To view the FortiView Sessions dashboard, go to Dashboard > FortiView Sessions.

FortiOS 6.4.6 Administration Guide 107


Fortinet Technologies Inc.
Dashboards and widgets

The session table displayed on the FortiView Sessions dashboard is useful when verifying open connections. For 
example, if you have a web browser open to browse the Fortinet website, you would expect a session entry from your 
computer on port 80 to the IP address for the Fortinet website. You can also use a session table to investigate why there 
are too many sessions for FortiOS to process.
You can filter the sessions displayed in the session table by setting up the available filtering options.

To filter sessions in the session table:

 1. Click on the Add Filter button at the top of the session table. A list of selectable filtering options drops down.

FortiOS 6.4.6 Administration Guide 108


Fortinet Technologies Inc.
Dashboards and widgets

 2. Select the required filtering option. For example you may select Country/Region, and select a country from the list of 
countries. The session table updates as per the selected country.

 3. You may add one or more filters depending upon your requirements. To add more filters, repeat the above steps for 
a different set of filters. 

You can be really specific with the way you use filters and target sessions based on different filter combinations. For 
example, you may want to view all sessions from a computer with a particular IP, and you can do that by adding the 
Source IP filter. Similarly, you may need to target all the sessions having a particular Destination IP and Destination Port, 
and so on.
You may also see the session data in the CLI.

FortiOS 6.4.6 Administration Guide 109


Fortinet Technologies Inc.
Dashboards and widgets

To view session data using the CLI:

# diagnose sys session list

The session table output in the CLI is very large. You can use the supported filters in the CLI to show only the data you 
need.

To view session data with filters using the CLI:

# diagnose sys session filter <option>

See Using a session table on page 1865 to learn more about using the supported filters in the CLI.
You may also decide to end a particular session or all sessions for administrative purposes.

To end sessions from the GUI:

 1. Select a session that you want to end by clicking on it. To select multiple sessions, hold the Ctrl or Shift key on your 
keyboard while clicking the session entries in the table.

 2. Right-click on the selected sessions you want to end. A menu with options appears.

 3. Click on End Session(s) to end the selected sessions, or End All Sessions to end all the active sessions.

FortiOS 6.4.6 Administration Guide 110


Fortinet Technologies Inc.
Dashboards and widgets

 4. Click OK in the confirmation dialog. The selected sessions are now ended.

Viewing top websites and sources by category

You can use FortiGuard web categories to populate the category fields in various FortiView pages such as FortiView
Web Categories, FortiView Websites or FortiView Sources. To view the categories in a dashboard, the web filter profile 
must be configured to at least monitor for FortiGuard category based filter, and applied to a firewall policy for outbound 
traffic.

To verify the web filter profile is monitor-only:

 1. Go to Security Profiles > Web Filter.


 2. Double-click a web filter that is applied to an outbound traffic firewall policy. The Edit Web Filter Profile window 
opens. 
 3. Ensure FortiGuard category based filter is enabled.   
In the image below, the General Interest - Business categories are monitor-only.

FortiOS 6.4.6 Administration Guide 111


Fortinet Technologies Inc.
Dashboards and widgets

To create a Web categories dashboard:

 1. Under Dashboard, click Add Dashboard. The Add Dashboard window opens.   

 2. In the Name field, enter a name such as FortiView Web Categories and click OK. The new dashboard opens.


 3. In the banner, click Add Widget. The Add Dashboard Widget window opens.
 4. In the Search field, type FortiView Web Categories and click the Add button next to the widget name.
 5. In the Fabric Member area, click Default or Specify to select a device in the security fabric.
 6. From the Time Period dropdown, select a time period greater than Now.
 7. From the Sort By dropdown, select Bytes, Sessions, Bandwidth, or Packets.
 8. Click Add Widget. The widget is added to the dashboard.

Viewing the web filter category

The web filter category name appears in the Category column of the dashboard.

FortiOS 6.4.6 Administration Guide 112


Fortinet Technologies Inc.
Dashboards and widgets

Click an entry in the table. The category name appears at the top of Summary of box.

Click the Web Sites tab. The category name appears in the Category column.

Click the Sessions tab. The category name appears in the Category Description column.

The category name also appears in the Category column in the FortiView Websites and FortiView Sources dashboards.

FortiOS 6.4.6 Administration Guide 113


Fortinet Technologies Inc.
Dashboards and widgets

Cloud application view

To see different cloud application views, set up the following:
 l A FortiGate having a relative firewall policy with the Application Control security profile.
 l A FortiGate with log data from the local disk or FortiAnalyzer.
 l Optional but highly recommended: SSL Inspection set to deep-inspection on relative firewall policies.

Viewing cloud applications

Cloud applications

All cloud applications require SSL Inspection set to deep-inspection on the firewall policy. For example, Facebook_
File.Download can monitor Facebook download behavior which requires SSL deep-inspection to parse the deep 
information in the network packets.

To view cloud applications:

 1. Go to Security Profiles > Application Control.


 2. Select a relative Application Control profile used by the firewall policy and click Edit.
 3. On the Edit Application Sensor page, click View Application Signatures.
 4. Hover over a column heading or the Application Signature bar. In the right gutter area, click the filter icon to filter the 
applications. 

FortiOS 6.4.6 Administration Guide 114


Fortinet Technologies Inc.
Dashboards and widgets

Cloud applications have a cloud icon beside them.
The lock icon indicates that the application requires SSL deep inspection.

 5. Hover over an item to see its details.
This example shows Gmail_Attachment.Download, a cloud application signature based sensor which requires SSL 
deep inspection. If any local network user behind the firewall logs into Gmail and downloads a Gmail attachment, 
that activity is logged.

Applications with cloud behavior

Applications with cloud behavior is a superset of cloud applications.
Some applications do not require SSL deep inspection, such as Facebook, Gmail, and YouTube. This means that if any 
traffic trigger application sensors for these applications, there is a FortiView cloud application view for that traffic.
Other applications require SSL deep inspection, such as Gmail attachment, Facebook_Workplace, and so on.

FortiOS 6.4.6 Administration Guide 115


Fortinet Technologies Inc.
Dashboards and widgets

To view applications with cloud behavior:

 1. In the Application Signature page, ensure the Behavior column is displayed. If necessary, add the Behavior column.


 a. Hover over the left side of the table column headings to display the Configure Table icon.
 b. Click Configure Table and select Behavior.
 c. Click Apply.

 2. Click the filter icon in the Behavior column and select Cloud to filter by Cloud. Then click Apply.

 3. The Application Signature page displays all applications with cloud behavior.   

FortiOS 6.4.6 Administration Guide 116


Fortinet Technologies Inc.
Dashboards and widgets

 4. Use the Search box to search for applications. For example, you can search for youtube.

 5. Hover over an item to see its details.
This example shows an application sensor with no lock icon which means that this application sensor does not 
require SSL deep inspection. If any local network user behind the firewall tries to navigate to the YouTube website, 
that activity is logged.

Configuring the Cloud Applications widget

On the Edit Application Sensor page in the Categories section, the  eye icon next to a category means that category is 


monitored and logged.

FortiOS 6.4.6 Administration Guide 117


Fortinet Technologies Inc.
Dashboards and widgets

To add the Cloud Applications widget in the GUI:

 1. Go to Dashboard , and select a dashboard in the tree menu.


 2. In the dashboard banner, click Add Widget. The Add Dashboard Widget window opens.
 3. In the Search field, enter FortiView Cloud Applications and click the Add button next to the widget.
 4. In the Fabric Member area, click Default or Specify to select a device in the security fabric. 
 5. From the Time Period dropdown, select a time period greater than Now.
 6. From the Sort By dropdown, select Bytes, Sessions, or Files (Up/Down).
 7. Click Add Widget. The widget is added to the dashboard.
 8. Click Close.
 9. Hover the FortiView Cloud Applications widget and click Expand to Full Screen.   
 10. If SSL deep inspection is enabled on the relative firewall, then the widget shows the additional details that are 
logged, such as Files (Up/Down) and Videos Played.
For YouTube, the Videos Played column is triggered by the YouTube_Video.Play cloud application sensor. This 
shows the number of local network users who logged into YouTube and played YouTube videos.
For Dropbox, the Files (Up/Down) column is triggered by Dropbox_File.Download and Dropbox_File.Upload cloud 
application sensors. This shows the number of local network users who logged into Dropbox and uploaded or 
downloaded files.

FortiOS 6.4.6 Administration Guide 118


Fortinet Technologies Inc.
Dashboards and widgets

Using the Cloud Applications widget

To see additional information in the Cloud Applications widget:

 1. Hover over the widget in the dashboard, and click Expand to full screen.

 2. For details about a specific entry, double-click the entry or right-click the entry and select Drill Down to Details.


 3. To see all the sessions for an application, click Sessions.
In this example, the Application Name column shows all applications related to YouTube.

FortiOS 6.4.6 Administration Guide 119


Fortinet Technologies Inc.
Dashboards and widgets

 4. To view log details, double-click a session to display the Log Details pane.


Sessions monitored by SSL deep inspection (in this example, Youtube_Video.Play) captured deep information such 
as Application User, Application Details, and so on. The Log Details pane also shows additional deep information 
such as application ID, Message, and so on.
Sessions not monitored by SSL deep inspection (YouTube) did not capture the deep information.

 5. To display a specific time period, select and drag in the timeline graph to display only the data for that time period.

Top application: YouTube example

Monitoring network traffic with SSL deep inspection

This  example of monitors network traffic for YouTube using FortiView Applications view with SSL deep inspection.

To monitor network traffic with SSL deep inspection:

 1. Use a firewall policy with the following settings. If necessary, create a policy with these settings.
 l Application Control is enabled.
 l SSL Inspection is set to deep-inspection.

FortiOS 6.4.6 Administration Guide 120


Fortinet Technologies Inc.
Dashboards and widgets

 l Log Allowed Traffic is set to All Sessions.

 2. Go to Security Profiles > Application Control.


 3. Select a relative Application Control profile used by the firewall policy and click Edit.
 4. Because YouTube cloud applications are categorized into Video/Audio, ensure the Video/Audio category is 
monitored.
Monitored categories are indicate by an eye icon.
 5. Click View Application Signatures and hover over YouTube cloud applications to view detailed information about 
YouTube application sensors.
 6. Expand YouTube to view the Application Signatures associated with the application.   

Application Signature Description Application


ID

YouTube_Video.Access An attempt to access a video on YouTube. 16420

YouTube_Channel.ID An attempt to access a video on a specific channel on  44956


YouTube.

YouTube_Comment.Posting An attempt to post comments on YouTube. 31076

YouTube_HD.Streaming An attempt to watch HD videos on YouTube. 33104

YouTube_Messenger An attempt to access messenger on YouTube. 47858

YouTube_Video.Play An attempt to download and play a video from YouTube. 38569

YouTube_Video.Upload An attempt to upload a video to YouTube. 22564

YouTube An attempt to access YouTube. 31077


This application sensor does not depend on SSL deep 
inspection so it does not have a cloud or lock icon.

YouTube_Channel.Access An attempt to access a video on a specific channel on  41598


YouTube.

To view the application signature description, click the ID link in the information window.

 7. On the test PC, log into YouTube and play some videos.
 8. On the FortiGate, go to Log & Report > Application Control and look for log entries for browsing and playing 
YouTube videos.

FortiOS 6.4.6 Administration Guide 121


Fortinet Technologies Inc.
Dashboards and widgets

In this example, note the Application User and Application Details. Also note that the Application Control ID is 38569 


showing that this entry was triggered by the application sensor YouTube_Video.Play.

 9. Go to Dashboard > FortiView Applications.


 10. In the FortiView Applications dashboard, double-click YouTube to view the drilldown information.
 11. Select the Sessions tab to see all the entries for the videos played. Check the sessions for YouTube_Video.Play 
with the ID 38569.

Monitoring network traffic without SSL deep inspection

This example of monitors network traffic for YouTube using FortiView cloud application view without SSL deep 
inspection.

To monitor network traffic without SSL deep inspection:

 1. Use a firewall policy with the following settings. If necessary, create a policy with these settings.
 l Application Control is enabled.
 l SSL Inspection is set to certificate-inspection.

FortiOS 6.4.6 Administration Guide 122


Fortinet Technologies Inc.
Dashboards and widgets

 l Log Allowed Traffic is set to All Sessions.

 2. On the test PC, log into YouTube and play some videos.
 3. On the FortiGate, go to Log & Report > Application Control and look for log entries for browsing and playing 
YouTube videos.
In this example, the log shows only applications with the name YouTube. The log cannot show YouTube application 
sensors which rely on SSL deep inspection.

 4. Go to Dashboard > FortiView Applications.


The FortiView Cloud Application by Bytes dashboard shows the YouTube cloud application without the video played 
information that requires SSL deep inspection.

FortiOS 6.4.6 Administration Guide 123


Fortinet Technologies Inc.
Dashboards and widgets

 5. Double-click YouTube and click the Sessions tab.
These sessions were triggered by the application sensor YouTube with the ID 31077. This is the application sensor 
with cloud behavior which does not rely on SSL deep inspection.

FortiView Top Source and Top Destination Firewall Objects widgets

The  FortiView Source Firewall Objects and FortiView Destination Firewall Objects widgets leverage UUID to resolve 


firewall object address names for improved usability.

Requirements

To have a historical Firewall Objects-based view, address objects' UUIDs need to be logged. 

To enable address object UUID logging in the CLI:

config system global


set log-uuid-address enable
end

To add a firewall object widget in the GUI:

 1. Open a dashboard and click Add Widget. The Add Dashboard Widget window opens.


 2. In the Search field, type Destination Firewall Objects and click the Add button next to the dashboard name.
 3. In the Fabric Member area, select Default or Specify to select a device in the security fabric.
 4. In the Data Source area, select Best Available or Specify. For information about data sources, see FortiView 
interface on page 94.
 5. From the Time Period dropdown, select the time period.
 6. In the Visualization area, select Table View or Bubble Chart.
 7. From the Sort By dropdown, select Bytes, Sessions, Bandwidth, or Packets.
 8. Click Add Widget.

FortiOS 6.4.6 Administration Guide 124


Fortinet Technologies Inc.
Dashboards and widgets

Example

In this example, firewall addresses have been configured and associated with a unique UUID.
In the FortiView Source Firewall Objects and FortiView Destination Firewall Objects widgets, firewall objects can be 
displayed in real-time or in a historical chart. Objects can also be drilled down for more details.

To view Firewall Object-based charts in real-time:

 1. Open a dashboard, and click Add Widget. The Add Dashboard Widget window opens.


 2. In the Search field, type Destination Firewall Objects and click the Add button next to the widget name.
 3. From the Time Period dropdown, select Now.
 4. Click Add Widget.

To view Firewall Object-based charts over a historical period:

 1. Open a dashboard, and click Add Widget. The Add Dashboard Widget window opens.


 2. In the Search field, type Destination Firewall Objects and click the Add button next to the widget name.
 3. From the Time Period dropdown, select a time period other than Now.
 4. Click Add Widget.

To drill down Firewall Objects:

 1. Right-click on any Source  or Destination Object in the view results. 


 2. Select Drill Down to Details. More information displays about the object; there are additional criteria to filter data.   

Viewing session information for a compromised host

You can use the Compromised Hosts by Verdict widget to view the session information for a compromised host.

FortiOS 6.4.6 Administration Guide 125


Fortinet Technologies Inc.
Dashboards and widgets

To view session information for a compromised host in the GUI:

 1. Go to Dashboard > Security and expand the Compromised Hosts by Verdict widget.   

 2. Double-click a compromised host to view the session information. You can also right-click a compromised host, and 
select View Sessions.   

 3. Double-click a session, or right-click the session and select View Sessions to view the information.   

FortiOS 6.4.6 Administration Guide 126


Fortinet Technologies Inc.
Fortinet Security Fabric

The Fortinet Security Fabric provides an intelligent architecture that interconnects discrete security solutions into an 
integrated whole to detect, monitor, block, and remediate attacks across the entire attack surface. It delivers broad 
protection and visibility into every network segment and device, be they hardware, virtual, or cloud based.
 l The physical topology view shows all connected devices, including access layer devices. The logical topology view 
shows information about the interfaces that each device is connected to.
 l Security rating checks analyze the Security Fabric deployment to identify potential vulnerabilities and highlight best 
practices to improve the network configuration, deploy new hardware and software, and increase visibility and 
control of the network.
 l Fabric connectors provide integration with multiple SDN, cloud, and partner technology platforms to automate the 
process of managing dynamic security updates without manual intervention.
 l Automation pairs an event trigger with one or more actions to monitor the network and take the designated actions 
automatically when the Security Fabric detects a threat.

Security Fabric settings and usage

This section contains information about how to configure the following devices as part of the Fortinet Security Fabric:
 l Components on page 128
 l Configuring the root FortiGate and downstream FortiGates
 l Configuring FortiAnalyzer
 l Configuring other Security Fabric devices on page 138
 l Using the Security Fabric
 l Deploying the Security Fabric on page 178
 l Synchronizing objects across the Security Fabric on page 186
 l Security Fabric over IPsec VPN on page 195
 l Leveraging LLDP to simplify security fabric negotiation on page 201

System requirements

To set up the Security Fabric, the devices that you want to include must meet the Product Integration and Support 
requirements in the FortiOS Release Notes. 
Some features of the Security Fabric are only  available in certain firmware versions and models. Not all FortiGate 
models can run the FortiGuard Security Rating Service if they are the root FortiGate in a Security Fabric. For more 
information, see the Special Notices in the FortiOS Release Notes.

Prerequisites

 l If devices are not already installed in your network, complete basic installation and configuration tasks by following 
the instructions in the device documentation.

FortiOS 6.4.6 Administration Guide 127


Fortinet Technologies Inc.
Fortinet Security Fabric

 l FortiGate devices must either have VDOMs disabled or be running in split-task VDOM mode in order to be added to 
the Security Fabric. See Virtual Domains on page 798.
 l FortiGate devices must be operating in NAT mode.

Components

The Fortinet Security Fabric consists of different components that work together to secure you network.
The following devices are required to create a Security Fabric:

Device Description

FortiGate FortiGate devices are the core of the Security Fabric and can have one of the following roles:
 l Root:
The root FortiGate is the main component in the Security Fabric. It is typically located on 
the edge of the network and connects the internal devices and networks to the Internet 
through your ISP. From the root FortiGate, you can see information about the entire 
Security Fabric on the Physical and Logical Topology pages in the GUI.
 l Downstream:
After a root FortiGate is installed, all other FortiGate devices in the Security Fabric act as 
Internal Segmentation Firewalls (ISFWs), located at strategic points in your internal 
network, rather than on the network edge. This allows extra security measures to be 
taken around key network components, such as servers that contain valuable intellectual 
property. ISFW FortiGate devices create network visibility by sending traffic and 
information about the devices that are connected to them to the root FortiGate.
See Configuring the root FortiGate and downstream FortiGates on page 130 for more 
information about adding FortiGate devices in the Security Fabric.
FortiGate documentation: https://docs.fortinet.com/product/fortigate

FortiAnalyzer FortiAnalyzer gives you increased visibility into your network,  centralized monitoring, and 
awareness of threats, events, and network activity by collecting and correlating logs from all 
Security Fabric devices. This gives you a deeper and more comprehensive view across the 
entire Security Fabric.
See Configuring FortiAnalyzer on page 137 for more information about adding FortiAnalyzer 
devices in the Security Fabric.
FortiAnalyzer documentation: https://docs.fortinet.com/product/fortianalyzer

FortiAnalyzer Cloud 6.4.4 can be included in the security fabric if the root 
FortiGate is running FortiOS 6.4.4 and later.

The following devices are recommended:

Device Description

FortiADC FortiADC devices optimize the availability, user experience, and scalability of enterprise 
application delivery. They enable fast, secure, and intelligent acceleration and distribution of 
even the most demanding enterprise applications.

FortiOS 6.4.6 Administration Guide 128


Fortinet Technologies Inc.
Fortinet Security Fabric

Device Description

See Additional devices on page 164 for more information about adding FortiADC devices in 
the Security Fabric.
FortiADC documentation: https://docs.fortinet.com/product/fortiadc

FortiAP Add FortiAP devices to extend the Security Fabric to your wireless devices. Devices 
connected to a FortiAP appear in the Physical and Logical Topology pages in the Security 
Fabric menu.
See FortiAP and FortiSwitch on page 161 for more information about adding FortiAP devices 
in the Security Fabric.
FortiAP documentation: https://docs.fortinet.com/product/fortiap

FortiClient FortiClient adds endpoint control to devices that are located in the Security Fabric, allowing 
only traffic from compliant devices to flow through the FortiGate. FortiClient compliance 
profiles are applied by the first FortiGate that a device’s traffic flows through. Device 
registration and on-net status information for a device that is running FortiClient appears only 
on the FortiGate that applies the FortiClient profile to that device.
FortiClient documentation: https://docs.fortinet.com/product/forticlient

FortiClient EMS FortiClient EMS is used in the Security Fabric to provide visibility across your network, 


securely share information, and assign security profiles to endpoints.
See FortiClient EMS on page 151 for more information about adding FortiClient EMS devices 
in the Security Fabric.
FortiClient EMS documentation: https://docs.fortinet.com/product/forticlient

FortiDDoS FortiDDoS is a Network Behavior Anomaly (NBA) prevention system that detects and blocks 
attacks that intend to disrupt network service by overutilizing server resources. 
See Additional devices on page 164 for more information about adding FortiDDoS devices in 
the Security Fabric.
FortiDDoS documentation: https://docs.fortinet.com/product/fortiddos

FortiMail FortiMail antispam processing helps offload from other devices in the Security Fabric that 
would typically carry out this process.
See Additional devices on page 164 for more information about adding FortiMail devices in 
the Security Fabric.
FortiMail documentation: https://docs.fortinet.com/product/fortimail

FortiManager Add FortiManager to simplify the network management of devices in the Security Fabric by 
centralizing management access in a single device. This allows you to easily control the 
deployment of security policies, FortiGuard content security updates, firmware revisions, and 
individual configurations for devices in the Security Fabric.
See FortiManager on page 144 for more information about adding FortiManager devices in 
the Security Fabric.
FortiManager documentation: https://docs.fortinet.com/product/fortimanager

FortiSandbox Add FortiSandbox to your Security Fabric to improve security with sandbox inspection. 
Sandbox integration allows FortiGate devices in the Security Fabric to automatically receive 
signature updates from FortiSandbox and add the originating URL of any malicious file to a 
blocked URL list.

FortiOS 6.4.6 Administration Guide 129


Fortinet Technologies Inc.
Fortinet Security Fabric

Device Description

See FortiSandbox on page 149 for more information about adding FortiSandbox devices in 
the Security Fabric.
FortiSandbox documentation: https://docs.fortinet.com/product/fortisandbox

FortiSwitch A FortiSwitch can be added to the Security Fabric when it is managed by a FortiGate that is in 
the Security Fabric with the FortiLink protocol, and connected to an interface with Security
Fabric Connection enabled. FortiSwitch ports to become logical extensions of the FortiGate.
Devices connected to the FortiSwitch appear in the Physical and Logical Topology pages in 
the Security Fabric menu, and security features, such as FortiClient compliance profiles, are 
applied to them.
See FortiAP and FortiSwitch on page 161 for more information about adding FortiSwitch 
devices in the Security Fabric.
FortiSwitch documentation: https://docs.fortinet.com/product/fortiswitch

FortiWeb Add FortiWeb to defend the application attack surface from attacks that target application 
exploits. You can also configure FortiWeb to apply web application firewall features, virus 
scanning, and web filtering to HTTP traffic to help offload from other devices in the Security 
Fabric that would typically carry out these processes.
See Additional devices on page 164 for more information about adding FortiWeb devices in 
the Security Fabric.
FortiWeb documentation: https://docs.fortinet.com/product/fortiweb

FortiWLC FortiWLC delivers seamless mobility and superior reliability with optimized client distribution 
and channel utilization. Both single and multi channel deployment options are supported, 
maximizing efficiency to make the most of available wireless spectrum.
See Additional devices on page 164 for more information about adding FortiWLC devices in 
the Security Fabric.
FortiWLC documentation: https://docs.fortinet.com/product/wireless-controller

The following devices are optional:

Device Description

Other Fortinet Many other Fortinet products can be added to the Security Fabric, including 


products FortiAuthenticator, FortiToken, FortiCache, and FortiSIEM.
Documentation: https://docs.fortinet.com/

Third-party Third-party products that belong to the Fortinet Fabric-Ready Partner Program can be added 
products to the Security Fabric.

Configuring the root FortiGate and downstream FortiGates

The following procedures include configuration steps for a typical Security Fabric implementation, where the edge 
FortiGate is the root  FortiGate, and the downstream FortiGate devices are all devices that are downstream from the root 
FortiGate.

FortiOS 6.4.6 Administration Guide 130


Fortinet Technologies Inc.
Fortinet Security Fabric

Prerequisites

 l FortiGate devices must either have VDOMs disabled or be running in split-task VDOM mode in order to be added to 
the Security Fabric. See Virtual Domains on page 798.
 l FortiGate devices must be operating in NAT mode.

Configure the root FortiGate

The edge FortiGate is typically configured as the root FortiGate, as this allows you to view the full topology of the 
Security Fabric from the top down.

To configure the root FortiGate:

 1. On the root FortiGate, go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.


 2. For Status, click Enable.
 3. Set the Security Fabric role to Serve as Fabric Root. FortiAnalyzer logging is automatically enabled and the settings 
can be configured.

 4. Optionally, enable Source Interface and select an interface to communicate with FortiAnalyzer. If disabled, the 


interface will be determined based on the routing table.
 5. Enter the FortiAnalyzer IP  and select the Upload option.
 6. In the FortiAnalyzer Logging section, in the IP address field, enter the IP address of the FortiAnalyzer.
 7. If required, enable Allow access to FortiGate REST API and, optionally, Verify FortiAnalyzer certificate.
The REST API accesses the FortiGate topology and shares data and results. The FortiGate will verify the 
FortiAnalyzer by retrieving its serial number and checking it against the FortiAnalyzer certificate. When verified, the 
FortiAnalyzer serial number is stored in the FortiGate configuration. When authorizing the FortiGate on the 
FortiAnalyzer, the FortiGate admin credentials do not need to be entered.
 8. Click Test Connectivity.
If you select Test Connectivity and this is the first time that you are connecting the FortiGate to the FortiAnalyzer, 
you will receive a warning message because the FortiGate has not yet been authorized on the FortiAnalyzer. You 
can configure this authorization when you configure the FortiAnalyzer. See Configuring FortiAnalyzer on page 137.
 9. Click OK. The FortiAnalyzer serial number is verified.
 10. Enter a Fabric name.
 11. Ensure Allow other Security Fabric devices to join is enabled and add the interfaces.
 12. Click OK.

FortiOS 6.4.6 Administration Guide 131


Fortinet Technologies Inc.
Fortinet Security Fabric

Using the root FortiGate with disk to store historic user and device information

This backend implementation allows the root FortiGate in a Security Fabric to store historic user and device information 
in a database on its disk. This will allow administrators to visualize users and devices over a period of time.
A new daemon, user_info_history, stores this data on the disk. The information source for the historical data will be the 
user_info daemon, which would be recorded on the disk when user_info notifies user_info_history that a user has logged 
out or the device is no longer connected.

Add downstream devices

Downstream FortiGate devices can be securely added to the Security Fabric without sharing the password of the root 
FortiGate.
Downstream device serial numbers can be authorized from the root FortiGate, or allowed to join by request. New 
authorization requests include the device serial number, IP address, and HA members. HA members can include up to 
four serial numbers and is used to ensure that, in the event of a fail over, the secondary FortiGate is still authorized.
A downstream device's certificate can also be used to authorize the device by uploaded the certificate to the root 
FortiGate.

You can use the FortiIPAM  service to automatically assign subnets to  downstream FortiGates 
to prevent duplicate IP addresses from overlapping within the same Security Fabric. See 
Assign a subnet with the FortiIPAM service on page 418.

Pre-authorizing the downstream FortiGate

When a downstream Fortinet device's serial number or certificate is added to the trusted list on the root FortiGate, the 
device can join the Security Fabric as soon as it connects. After the new device is authorized, connected FortiAP and 
FortiSwitch devices are automatically included in the topology, where they can be authorized with one click.
The interface that connects to the downstream FortiGate must have Security Fabric Connection enabled.

To pre-authorize a FortiGate:

 1. Configure the root FortiGate:
 a. Go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card. 
 b. In the Device authorization field click Edit. The Device Authorization window opens.
 c. Enter the device's serial number in the Device/Serial field.
 d. Select the Authorization type, either Serial Number or Certificate.
 e. If Certificate is selected, click Browse to upload the downstream device's certificate from the management 
computer.

 f. Select the Action, either Accept or Deny.

FortiOS 6.4.6 Administration Guide 132


Fortinet Technologies Inc.
Fortinet Security Fabric

 g. Add more devices as required, then click OK.
 h. Click OK.
 2. Configure the downstream FortiGate:
 a. On the downstream FortiGate, go to Security Fabric > Fabric Connectors and double-click the Security Fabric
Setup card.
 b. Set Status to Enable.
 c. Set Security Fabric role to Join Existing Fabric.
 d. Enter the IP address of the root FortiGate in the Upstream FortiGate IP field.
 e. Click OK.
 3. On the root FortiGate, go to Security Fabric > Physical Topology and verify that the downstream FortiGate that you 
added appears in the Security Fabric topology.

Using LLDP

You can automatically prompt downstream FortiGate devices to join the Security Fabric using Link Layer Discovery 
Protocol (LLDP) and interface role assignments.
 1. On the root FortiGate, assign the LAN role to all interfaces that may connect to downstream FortiGate devices.
When the LAN role is assigned to an interface, LLDP transmission is enabled by default.
 2. When a downstream FortiGate is installed, assign the WAN role to the interface that connects to the upstream 
FortiGate.
When the WAN role is assigned, LLDP reception is enabled by default. The newly installed FortiGate uses LLDP to 
discover the upstream FortiGate, and the administrator is prompted to configure the FortiGate to join the Security 
Fabric.
 3. On the root FortiGate, the new FortiGate must be authorized before it can join the Security Fabric.

If the network contains switches or routers, LLDP may not function as expected because some 
devices do not pass LLDP packets.

Authorizing a downstream FortiGate

When you log in to an unauthorized, downstream FortiGate, the log in prompt includes the option to authorize the device 
on the root FortiGate.
When the Security Fabric is disabled on the FortiGate, and a neighboring FortiGate is detected on the same network 
using LLDP, the log in prompt gives the option to join the Security Fabric.

FortiOS 6.4.6 Administration Guide 133


Fortinet Technologies Inc.
Fortinet Security Fabric

To authorize a downstream FortiGate:

 1. Log in to the unauthorized, downstream device.

 2. On the Fabric Setup step, click Review authorization on root FortiGate.


A pop-up window opens to a log in screen for the root FortiGate.

 3. Enter the log in credentials for the root FortiGate, then click Login.
A list of pending authorizations is shown.

 4. Select Allow and then click OK to authorize the downstream FortiGate. You can also select Deny to reject the 
authorization, or Later to postpone the decision to the next time that you log in.
When authorization is allowed, the pop-up window closes, and the log in prompt shows that the downstream 
FortiGate has been authorized.

FortiOS 6.4.6 Administration Guide 134


Fortinet Technologies Inc.
Fortinet Security Fabric

 5. Click Done to log in to the downstream FortiGate.

To join an existing fabric that is detected on the same network:

 1. Log in to the device.

 2. On the Fabric Setup step, enable Join Existing Fabric.


 3. Authorize the FortiGate, as previously shown.

To review authorization on the downstream FortiGate:

 1. Go to Security Fabric > Fabric Connectors.


 2. In the gutter on the right side of the screen, click Review authorization on root FortiGate.
The root FortiGate pop-up window shows the state of the device authorization. 

Device request

A device can request to join the Security Fabric from another FortiGate, but it must have the IP address of the root 
FortiGate. The administrator of the root FortiGate must also authorize the device before it can join the Security Fabric.
The root FortiGate must have Security Fabric Connection enabled on the interface that the device connects to.

To enable FortiTelemetry on an interface:

 1. Go to Network > Interfaces.


 2. Edit the interface that the device that you authorizing to join the Security Fabric is connected to.

FortiOS 6.4.6 Administration Guide 135


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. Under Administrative Access, enable Security Fabric Connection.


 4. Under Network, turn on Device Detection.

To join the Security Fabric by device request:

 1. Connect to the unauthorized FortiGate or FortiWiFi device, and go to Security Fabric > Fabric Connectors and 


double-click the Security Fabric Setup card.
 2. For Status, click Enable.
 3. Set Security Fabric role to Join Existing Fabric.
 4. Set Upstream FortiGate IP to the IP address of the upstream FortiGate.
 5. Connect to the root FortiGate and go to Security Fabric > Fabric Connectors. The new FortiGate appears in the 
topology tree as unauthorized.
 6. Click the unauthorized device and select Authorize to authorize the device.

CLI commands

Use the following commands to view, accept, and deny authorization requests, to view upstream and downstream 
devices, and to list or test fabric devices:

Command Description

diagnose sys csf authorization  View pending authorization requests on the root FortiGate.
pending-list

diagnose sys csf authorization  Authorize a device to join the Security Fabric.
accept <serial-number-value>

diagnose sys csf authorization  Deny a device from joining the Security Fabric.
deny <serial-number-value>

diagnose sys csf downstream Show connected downstream devices.

diagnose sys csf upstream Show connected upstream devices.

diagnose sys csf fabric-device list List all known fabric devices.

diagnose sys csf fabric-device  Test connections to locally configured fabric devices.
test

Desynchronizing settings

By default, the settings for FortiAnalyzer logging, central management, sandbox inspection, and FortiClient EMS are 
synchronized between all FortiGate devices in the Security Fabric. To disable the automatic synchronization of these 
settings, use the following CLI command:
config system csf
set configuration-sync local
end

Deauthorizing a device

A device can be deauthorized to remove it from the Security Fabric.

FortiOS 6.4.6 Administration Guide 136


Fortinet Technologies Inc.
Fortinet Security Fabric

To deauthorize a device:

 1. On the root FortiGate, go to Security Fabric > Fabric Connectors


 2. In the topology tree, click the device and select Deauthorize.
After devices are deauthorized, the devices' serial numbers are saved in a trusted list that can be viewed in the CLI using 
the show system csf command. For example, this result shows a deauthorized FortiSwitch:
show system csf
config system csf
set status enable
set group-name "Office-Security-Fabric"
set group-password ENC 1Z2X345V678
config trusted-list
edit "FGT6HD391806070"
next
edit "S248DF3X17000482"
set action deny
next
end
end

Configuring FortiAnalyzer

FortiAnalyzer is a required component for the Security Fabric. In 6.4.4 and above, either FortiAnalyzer or FortiAnalyzer 
Cloud can be used to meet this requirement.  FortiAnalyzer allows the Security Fabric to show historical data for the 
Security Fabric topology and logs for the entire Security Fabric. 
For more information about using FortiAnalyzer, see the FortiAnalyzer Administration Guide.

To connect a FortiAnalyzer to the Security Fabric:

 1. Enable FortiAnalyzer Logging on the root FortiGate. See Configure the root FortiGate on page 131.


 2. On the FortiAnalyzer, go to System Settings > Network and click All Interfaces.
 3. Edit the port that connects to the root FortiGate.
 4. Set the IP Address/Netmask to the IP address that is used for the Security Fabric on the root FortiGate.

 5. Click OK.
If the FortiGates have already been configured, it will now be listed as an unauthorized device.
 6. Go to Device Manager > Devices Unauthorized. The unauthorized FortiGate devices are listed.

FortiOS 6.4.6 Administration Guide 137


Fortinet Technologies Inc.
Fortinet Security Fabric

 7. Select the root FortiGate and downstream FortiGate devices in the list, then click Authorize. The Authorize Device 


page opens.
 8. Click OK to authorize the selected devices.

 9. On the FortiGate devices, go to Security Fabric > Fabric Connectors and double-click the FortiAnalyzer Logging 


card. The  page will now show the ADOM on the FortiAnalyzer that the FortiGate is in, and the storage, analytics, 
and archive usage.

Sending traffic logs to FortiAnalyzer Cloud

FortiGates running version 6.4.4. or later, with a FortiCloud Premium subscription (AFAC) for Cloud-based Central 
Logging & Analytics, can send traffic logs to FortiAnalyzer Cloud in addition to UTM logs and event logs. After the 
Premium subscription is registered through FortiCare, FortiGuard will verify the purchase and authorize the AFAC 
contract. Once the contract is verified, FortiGuard will deliver the contract to FortiGate.
FortiGates with a Standard FortiAnalyzer Cloud subscription (FAZC) can only send UTM and event logs. FortiGates with 
a Premium subscription will send the UTM and event logs even if the Standard subscription has expired.
For information about cloud logging, see FortiAnalyzer Cloud service on page 141

FortiAnalyzer Cloud does not support DLP/IPS archives at this time.

To verify the status a FortiCloud subscription with the CLI:

# diagnose test update info

The FAZC and AFAC fields display the subscription expiration date. The Support contract field displays the 
FortiCare account information. The User ID field displays the ID for FortiAnalyzer-Cloud instance.
...
FAZC,Tue Sep 24 16:00:00 2030
AFAC,Mon Nov 29 16:00:00 2021
...
Support contract: pending_registration=255 got_contract_info=1
account_id=[****@fortinet.com] company=[Fortinet] industry=[Technology]
User ID: 979090

Configuring other Security Fabric devices

This section contains information about configuring the following devices as part of the Fortinet Security Fabric:
 l FortiGate Cloud on page 139
 l FortiAnalyzer Cloud service on page 141
 l FortiManager on page 144

FortiOS 6.4.6 Administration Guide 138


Fortinet Technologies Inc.
Fortinet Security Fabric

 l FortiManager Cloud service on page 145
 l FortiSandbox on page 149
 l FortiClient EMS on page 151
 l FortiNAC on page 159
 l FortiAP and FortiSwitch on page 161
 l FortiMail on page 162
 l Additional devices on page 164

Prerequisites

 l FortiGate devices must either have VDOMs disabled or be running in split-task VDOM mode in order to be added to 
the Security Fabric. See Virtual Domains on page 798.
 l FortiGate devices must be operating in NAT mode.

FortiGate Cloud

FortiGate Cloud is a hosted security management and log retention service for FortiGate devices. It provides centralized 
reporting, traffic analysis, configuration management, and log retention without the need for additional hardware or 
software.
FortiGate Cloud offers a wide range of features:
 l Simplified central management
FortiGate Cloud provides a central GUI to manage individual or aggregated FortiGate and FortiWiFi devices. 
Adding a device to the FortiGate Cloud management subscription is straightforward. FortiGate Cloud has detailed 
traffic and application visibility across the whole network.
 l Hosted log retention with large default storage allocated
Log retention is an integral part of any security and compliance program, but administering a separate storage 
system is onerous. FortiGate Cloud takes care of this automatically and stores the valuable log information in the 
cloud. Each device is allowed up to 200GB of log retention storage. Different types of logs can be stored, including 
Traffic, System Events, Web, Applications, and Security Events.
 l Monitoring and alerting in real time
Network availability is critical to a good end-user experience. FortiGate Cloud enables you to monitor your FortiGate 
network in real time with different alerting mechanisms to pinpoint potential issues. Alerting mechanisms can be 
delivered via email.
 l Customized or pre-configured reporting and analysis tools
Reporting and analysis are your eyes and ears into your network’s health and security. Pre-configured reports are 
available, as well as custom reports that can be tailored to your specific reporting and compliance requirements. 
The reports can be emailed as PDFs, and can cover different time periods.
 l Maintain important configuration information uniformly
The correct configuration of the devices within your network is essential for maintaining optimum performance and 
security posture. In addition, maintaining the correct firmware (operating system) level allows you to take advantage 
of the latest features.
 l Service security
All communication (including log information) between the devices and the cloud is encrypted. Redundant data 
centers are always used to give the service high availability. Operational security measures have been put in place 
to make sure your data is secure — only you can view or retrieve it.

FortiOS 6.4.6 Administration Guide 139


Fortinet Technologies Inc.
Fortinet Security Fabric

Registration and activation

Before you can activate a FortiGate Cloud account, you must first register your device. 

FortiGate Cloud accounts can be registered manually through the FortiGate Cloud website, https://www.forticloud.com, 
or you can easily register and activate your account directly from your FortiGate. 

To activate your FortiGate Cloud account:

 1. On your device, go to Dashboard > Status.


 2. In the FortiGate Cloud widget, click the Not Activated > Activate button in the Status field.
 3. A pane will open asking you to register your FortiGate Cloud account. Click Create Account, enter your information, 
view and accept the terms and conditions, and then click OK.
 4. A second dialogue window open , asking you to enter your information to confirm your account. This sends a 
confirmation email to your registered email. The dashboard widget then updates to show that confirmation is 
required.
 5. Open your email, and follow the confirmation link it contains.   
A FortiGate Cloud page will open, stating that your account has been confirmed. The Activation Pending message 
on the dashboard will change to state the type of account you have, and will provide a link to the FortiGate Cloud 
portal.

Enabling logging to FortiGate Cloud

To enable logging to FortiGate Cloud:

 1. Go to Security Fabric > Fabric Connectors > Cloud Logging or Log & Report > Log Settings.
 2. Enable Cloud Logging.
 3. Select an upload option: Realtime, Every Minute, or Every 5 Minutes (default).
 4. Click Apply.

Logging into the FortiGate Cloud portal

Once logging has been configured and you have registered your account, you can log into the FortiGate Cloud portal 
and begin viewing your logging results. There are two methods to reach the FortiGate Cloud portal:
 l If you have direct network access to the FortiGate:
 a. Go to Dashboard > Status.
 b. In the FortiGate Cloud widget, in the Status field, click Activated > Launch Portal, or, in the Licenses widget, 
click FortiCare Support > Launch Portal.
 l If you do not have access to the FortiGate’s interface, visit the FortiGate Cloud website (https://www.forticloud.com) 
and log in remotely, using your email and password. It will ask you to confirm the FortiGate Cloud account you are 
connecting to and then you will be granted access.

Cloud sandboxing

FortiGate Cloud can be used for automated sample tracking, or sandboxing, for files from a FortiGate. This allows 
suspicious files to be sent to be inspected without risking network security. If the file exhibits risky behavior, or is found to 

FortiOS 6.4.6 Administration Guide 140


Fortinet Technologies Inc.
Fortinet Security Fabric

contain a virus, a new virus signature is created and added to the FortiGuard antivirus signature database.

To configure cloud sandboxing:

 1. Go to Security Fabric > Fabric Connectors and double-click the FortiSandbox card.


 2. For status, click Enable.
 3. Set the Type to FortiSandbox Cloud.

By default, the FortiSandbox Cloud option is not visible. See Feature visibility on page 940 
for instructions on making it visible.

 4. Select the FortiSandbox cloud region.


 5. Click OK.
Sandboxing results are shown on the Sandbox tab  in the FortiGate Cloud portal.
For more information about FortiGate Cloud, see the FortiGate Cloud documentation.

FortiAnalyzer Cloud service

FortiGate supports the FortiAnalyzer Cloud service for event logging. 

Traffic logs are not currently supported by FortiAnalyzer Cloud  without a FortiCloud Premium 
subscription (AFAC). For information, see Configuring FortiAnalyzer on page 137.

When FortiAnalyzer Cloud is licensed and enabled (see Deploying FortiAnalyzer Cloud for more information), all 
event logs are sent to FortiAnalyzer Cloud by default. All traffic logs, security logs, and archive files are not sent to 
FortiAnalyzer Cloud.
FortiAnalyzer Cloud differs from FortiAnalyzer in the following ways:
 l You cannot enable FortiAnalyzer Cloud in vdom override-setting when global FortiAnalyzer Cloud is 
disabled.
 l You must use the CLI to retrieve and display logs sent to FortiAnalyzer Cloud. The FortiOS GUI is not supported.
 l You cannot enable FortiAnalyzer Cloud and FortiGate Cloud at the same time.

Sample settings panes

In the FortiOS Security Fabric > Fabric Connectors > Cloud Logging card settings page, FortiAnalyzer Cloud is grayed 


out when you do not have a FortiAnalyzer Cloud entitlement.

FortiOS 6.4.6 Administration Guide 141


Fortinet Technologies Inc.
Fortinet Security Fabric

When you have a FortiAnalyzer Cloud entitlement, FortiAnalyzer Cloud is available.
You can also view the FortiAnalyzer Cloud settings in the Log & Report > Log Settings pane.
In FortiAnalyzer Cloud, you can view logs from FortiOS in the Event > All Types pane.

To enable fortianalyzer-cloud using the CLI:

config log fortianalyzer-cloud setting


set status enable
set ips-archive disable
set access-config enable
set enc-algorithm high
set ssl-min-proto-version default
set conn-timeout 10
set monitor-keepalive-period 5
set monitor-failure-retry-period 5
set certificate ''
set source-ip ''
set upload-option realtime
end
config log fortianalyzer-cloud filter
set severity information
set forward-traffic disable
set local-traffic disable
set multicast-traffic disable
set sniffer-traffic disable

FortiOS 6.4.6 Administration Guide 142


Fortinet Technologies Inc.
Fortinet Security Fabric

set anomaly disable


set voip disable
set dlp-archive disable
set dns disable
set ssh disable
set ssl disable
set cifs disable
set filter ''
set filter-type include
end

To disable fortianalyzer-cloud for a specific VDOM using the CLI:

​config log setting


set faz-override enable
end
config log fortianalyzer-cloud override-setting
set status disable
end

To set fortianalyzer-cloud filter for a specific vdom using the CLI:

​config log setting


set faz-override enable
end
config log fortianalyzer-cloud override-setting
set status enable
end
config log fortianalyzer-cloud override-filter
set severity information
set forward-traffic disable
set local-traffic disable
set multicast-traffic disable
set sniffer-traffic disable
set anomaly disable
set voip disable
set dlp-archive disable
set dns disable
set ssh disable
set ssl disable
set cifs disable
set filter ''
set filter-type include
end

To display fortianalyzer-cloud log using the CLI:

​execute log filter device fortianalyzer-cloud


execute log filter category event
execute log display​​

Sample log

date=2019-05-01 time=17:57:45 idseq=60796052214644736 bid=100926 dvid=1027 itime="2019-05-01


17:57:48" euid=3 epid=3 dsteuid=0 dstepid=3 logver=602000890 logid=0100032002
type="event" subtype="system" level="alert" srcip=10.6.30.254 dstip=10.6.30.9

FortiOS 6.4.6 Administration Guide 143


Fortinet Technologies Inc.
Fortinet Security Fabric

action="login" msg="Administrator ddd login failed from https(10.6.30.254) because of


invalid user name" logdesc="Admin login failed" sn="0" user="ddd" ui="https
(10.6.30.254)" status="failed" reason="name_invalid" method="https"
eventtime=1556758666274548325 devid="FG5H1E5818900076" vd="root" dtime="2019-05-01
17:57:45" itime_t=1556758668 devname="FortiGate-501E"
date=2019-05-01 time=17:57:21 idseq=60796052214644736 bid=100926 dvid=1027 itime="2019-05-01
17:57:23" euid=3 epid=3 dsteuid=0 dstepid=3 logver=602000890 logid=0100044546
type="event" subtype="system" level="information" action="Edit" msg="Edit
log.fortianalyzer-cloud.filter " logdesc="Attribute configured" user="admin" ui="ssh
(10.6.30.254)" cfgtid=164757536 cfgpath="log.fortianalyzer-cloud.filter"
cfgattr="severity[information->critical]" eventtime=1556758642413367644
devid="FG5H1E5818900076" vd="root" dtime="2019-05-01 17:57:21" itime_t=1556758643
devname="FortiGate-501E"

FortiManager

When a FortiManager device is added to the Security Fabric, it automatically synchronizes with any connected 
downstream devices.
To add a FortiManager to the Security Fabric, configure it on the root FortiGate. The root FortiGate then pushes this 
configuration to downstream FortiGate devices. The FortiManager provides remote management of FortiGate devices 
over TCP port 541. The FortiManager must have internet access for it to join the Security Fabric.
Once configured, the FortiGate can receive antivirus and IPS updates, and allows remote management through 
FortiManager or the FortiGate Cloud service. The FortiGate management option must be enabled so that the FortiGate 
can accept management updates to its firmware and FortiGuard services.

To add a FortiManager to the Security Fabric using the CLI:

config system central-management


set type fortimanager
set fmg {<IP_address> | <FQDN_address>}
end

To add a FortiManager to the Security Fabric using the GUI:

 1. On the root FortiGate, go to Security Fabric > Fabric Connectors and double-click the FortiManager card.


 2. For Status, click Enable.

FortiOS 6.4.6 Administration Guide 144


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. For Type, click On-Premise.

 4. Enter the IP/Domain Name of the FortiManager.


 5. Click OK.
 6. On the FortiManager, go to Device Manager and find the FortiGate in the Unauthorized Devices list.
 7. Select the FortiGate device or devices, and click Authorize in the toolbar.
 8. In the Authorize Device pop-up, adjust the device names as needed, then click OK.
For more information about using FortiManager, see the FortiManager Administration Guide.

FortiManager Cloud service

This cloud-based SaaS management service is available through FortiManager. This service is included in the 360 
Protection Bundle (per-device license) and in FortiCloud accounts with a FortiManager Cloud account level subscription 
(ALCI). 

Configuring a per-device license

Once the FortiGate has acquired a contract named FortiManager Cloud, FortiCloud creates a cloud-based FortiManager 
instance under the user account. You can launch the portal for the cloud-based FortiManager from FortiCloud, and its 
URL starts with the User ID.
You can use a FortiGate with a contract for FortiManager Cloud to configure central management by using the FQDN of 
fortimanager.forticloud.com. A FortiGate-FortiManager tunnel is established between FortiGate and the FortiManager 
instance.
After the tunnel is established, you can execute FortiManager functions from the cloud-based FortiManager portal.

FortiOS 6.4.6 Administration Guide 145


Fortinet Technologies Inc.
Fortinet Security Fabric

To configure FortiManager Cloud central management:

 1. In the FortiCare portal, ensure you have a product entitlement for FortiManager Cloud.


 a. Go to Asset > Information > Entitlement.
 b. Take note of your user ID number in the top-right corner.

 2. Click the FortiCloud icon in the upper-right corner.
 3. Under CLOUD MANAGEMENT, select FortiManager.

FortiOS 6.4.6 Administration Guide 146


Fortinet Technologies Inc.
Fortinet Security Fabric

The FortiManager portal opens. The URL incorporates the user ID for the dedicated instance.

 4. In FortiOS, enable FortiManager Cloud.   
 a. Go to Security Fabric > Fabric Connectors and double-click the FortiManager card.
 b. For Status, click Enable.
 c. For Type, click FortiManager Cloud.
 d. Click OK.   

The FortiManager Cloud button can only be selected if you have a FortiManager Cloud 
product entitlement.

 5. In the FortiManager Cloud instance, go to Device Manager and authorize the FortiGate. See Authorizing devices for 


more information.
When using FortiGate to enable FortiManager Cloud, the FortiGate appears as an unauthorized device.

After authorizing the FortiGate, it becomes a managed device.

FortiOS 6.4.6 Administration Guide 147


Fortinet Technologies Inc.
Fortinet Security Fabric

In FortiOS, the Security Fabric > Fabric Connectors page now displays green arrow in the FortiManager card  


because FortiManager Cloud is registered.

Configuring an account level subscription

If a FortiCloud account has a FortiManager Cloud account level subscription (ALCI), a FortiGate registered to the 
FortiCloud account can recognize it and enable FortiManager Cloud central management.

To configure FortiManager Cloud central management:

 1. Register the FortiGate (see Registration on page 44). If the FortiCare account has a FortiManager Cloud contract 
(10 device limitation), the FortiGate is allowed to enable FortiManager Cloud.
 2. Enable FortiManager Cloud: 
 a. Go to Security Fabric > Fabric Connectors and double-click the  FortiManager card.
 b. For Status, click Enable.
 c. For Type, select FortiManager Cloud.
 d. Click OK.
 3. In the FortiCloud portal, click the dropdown beside your user name and select Cloud Management > FortiManager. 
 4. Click the corresponding account to launch the FortiManager Cloud instance.
 5. In FortiManager Cloud, go to Device Manger > Device & Groups. The FortiGate is now listed as synchronized 
managed device.

Diagnostics

To verify the contract information:

# diagnose test update info contract


...
System contracts:
...
Account contracts:
FMGC,Thu Dec 2 16:00:00 2021
...

To verify the FortiManager Cloud instance has launched and the FortiGate is registered:

# diagnose fdsm central-mgmt-status


Connection status: Up
Registration status: Registered

FortiOS 6.4.6 Administration Guide 148


Fortinet Technologies Inc.
Fortinet Security Fabric

FortiSandbox

The Security Fabric supports FortiSandbox appliances and FortiSandbox Cloud. A FortiGate Cloud account is not 
required.
To use FortiSandbox in a Security Fabric, connect the FortiSandbox to the Security Fabric, then configure an antivirus 
profile to send files to the FortiSandbox. Sandbox inspection can also be used in web filter profiles.
FortiSandbox settings are configured on the root FortiGate of the Security Fabric. After configuration, the root FortiGate 
pushes the settings to other FortiGate devices in the Security Fabric.

Either a FortiSandbox appliance or FortiSandbox Cloud can be configured. If one is 
configured, then the other will not be available.

To add a FortiSandbox appliance to the Security Fabric:

 1. On the root FortiGate, go to Security Fabric > Fabric Connectors and double-click the FortiSandbox card.


 2. Set Status to Enable.
 3. In the Server field, enter the FortiSandbox device's IP address.

 4. Optionally, enter a Notifier email.


 5. Click OK.
 6. On the FortiSandbox device, go to Scan Input > Device.
 7. Edit the root FortiGate.
 8. Under Permissions, check the Authorized box.
 9. Click OK.
 10. Authorize the rest of the FortiGate devices that are in the Security Fabric.

To add a FortiSandbox cloud instance to the Security Fabric:

 1. On the root FortiGate, go to Security Fabric > Fabric Connectors and double-click the FortiSandbox Cloud card.


 2. Set Status to Enable.
 3. Select the FortiSandbox cloud Region from the dropdown list. Data from your network will only be sent to servers in 
the selected region.

FortiOS 6.4.6 Administration Guide 149


Fortinet Technologies Inc.
Fortinet Security Fabric

 4. Click OK.

If FortiSandbox Cloud is not visible in the GUI, run the execute forticloud-sandbox


region and execute forticloud-sandbox update commands.

Antivirus profiles

An antivirus profile must be configured to send  files to the FortiSandbox. 

To configure an antivirus profile:

 1. On the FortiGate, go to Security Profile > AntiVirus.


 2. Create, edit, or clone an antivirus profile.

 3. Under APT Protection Options, set Send Files to FortiSandbox Appliance for Inspection to All Supported Files.
 4. Optionally, configure file exceptions.
 5. Enable Use FortiSandbox database.
 6. Click OK.

Web Filter profiles

Sandbox inspection can be used in Web Filter profiles.

To configure a web filter profile:

 1. On the FortiGate, go to Security Profiles > Web Filter.


 2. Create, edit, or clone a profile.
 3. Under Static URL Filter, enable Block malicious URLs discovered by FortiSandbox.
 4. Click OK.

FortiOS 6.4.6 Administration Guide 150


Fortinet Technologies Inc.
Fortinet Security Fabric

FortiClient EMS

The FortiGate Security Fabric root device can link to FortiClient Endpoint Management System (EMS) and FortiClient 
EMS Cloud (a cloud-based EMS solution) for endpoint connectors and automation. Up to three EMS servers can be 
added to the Security Fabric, including a FortiClient EMS Cloud server. EMS settings are synchronized between all 
fabric members.
To enable cloud-based EMS services, the FortiGate must be registered to FortiCloud with an appropriate user account. 
The following examples presume that the EMS certificate has already been configured.

To add an on-premise FortiClient EMS server to the Security Fabric in the GUI:

 1. On the root FortiGate, go to System > Feature Visibility and enable Endpoint Control.


 2. Go to Security Fabric > Fabric Connectors.
 3. Click Create New and click FortiClient EMS.
 4. For Type, click FortiClient EMS.
 5. Enter a name and IP address or FQDN. When connecting to a multitenancy-enabled EMS, Fabric connectors must 
use an FQDN to connect to EMS, where the FQDN hostname matches a site name in EMS (including "Default"). 
The following are examples of FQDNs to provide when configuring the connector to connect to the default site and 
to a site named SiteA, respectively: default.ems.yourcompany.com, sitea.ems.yourcompany.com. See 
Multitenancy.

 6. Click OK.
A window appears to verify the EMS server certificate:

FortiOS 6.4.6 Administration Guide 151


Fortinet Technologies Inc.
Fortinet Security Fabric

 7. Click Accept.
The FortiClient EMS Status section displays a Successful connection and an Authorized certificate:

To add a FortiClient EMS Cloud server to the Security Fabric in the GUI:

 1. Go to Security Fabric > Fabric Connectors.


 2. Click Create New and click FortiClient EMS.
 3. Set Type to FortiClient EMS Cloud.
 4. Enter a name.

 5. Click OK. 
A window appears to verify the EMS server certificate. 
 6. Click Accept.
The FortiClient EMS Status section displays a Successful connection and an Authorized certificate.

To test connectivity with the EMS server:

 1. Go to Security Fabric > Fabric Connectors and double-click the FortiClient EMS or FortiClient EMS Cloud card.


 2. In the FortiClient EMS Status section under Connection, click Refresh.

To add an on-premise FortiClient EMS server to the Security Fabric in the CLI:

config endpoint-control fctems


edit <ems_name>
set server <ip_address>
set certificate <string>
set https-port <integer>
set source-ip <ip_address>

FortiOS 6.4.6 Administration Guide 152


Fortinet Technologies Inc.
Fortinet Security Fabric

next
end

The https-port is the EMS HTTPS access port number, and the source-ip is the REST API call source IP address.

To add a FortiClient EMS Cloud server to the Security Fabric in the CLI:

config endpoint-control fctems


edit <name>
set fortinetone-cloud-authentication enable
set certificate <string>
next
end

To verify an EMS certificate in the CLI:

# execute fctems verify ems137

Subject: C = CA, ST = bc, L = burnaby, O = devqa, OU = top3, CN =


sys169.qa.fortinet.cm, emailAddress = [email protected]
Issuer: CN = 155-sub1.fortinet.com
Valid from: 2017-12-05 00:37:57 GMT
Valid to: 2027-12-02 18:08:13 GMT
Fingerprint: D3:7A:1B:84:CC:B7:5C:F0:A5:73:3D:BB:ED:21:F2:E0
Root CA: No
Version: 3
Serial Num:
01:86:a2
Extensions:
Name: X509v3 Basic Constraints
Critical: yes
Content:
CA:FALSE

Name: X509v3 Subject Key Identifier


Critical: no
Content:
35:B0:E2:62:AF:9A:7A:E6:A6:8E:AD:CB:A4:CF:4D:7A:DE:27:39:A4

Name: X509v3 Authority Key Identifier


Critical: no
Content:
keyid:66:54:0F:78:78:91:F2:E4:08:BB:80:2C:F6:BC:01:8E:3F:47:43:B1

DirName:/C=CA/ST=bc/L=burnaby/O=devqa/OU=top3/CN=fac155.fortinet.com/emailAddress=xyguo@fort
inet.com
serial:01:86:A4

Name: X509v3 Subject Alternative Name


Critical: no
Content:
DNS:sys169.qa.fortinet.cm

Name: X509v3 Key Usage


Critical: no
Content:

FortiOS 6.4.6 Administration Guide 153


Fortinet Technologies Inc.
Fortinet Security Fabric

Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment, Key


Agreement, Certificate Sign, CRL Sign, Encipher Only, Decipher Only

Name: X509v3 Extended Key Usage


Critical: no
Content:
TLS Web Server Authentication, TLS Web Client Authentication

EMS configuration needs user to confirm server certificate.


Do you wish to add the above certificate to trusted remote certificates? (y/n)y

Troubleshooting

Certificate not trusted

When configuring a new connection to an EMS server, the certificate might not be trusted.

When you click Authorize, a warning displays: The server certificate cannot be authenticated with installed CA


certificates. Please install its CA certificates on this FortiGate.
In the CLI, an error message displays when you try to verify the certificate:
# execute fctems verify Win2K16-EMS
certificate not configured/verified: 2
Could not verify server certificate based on current certificate authorities.
Error 1--92-60-0 in get SN call: EMS Certificate is not signed by a known CA.

The default FortiClient EMS certificate that is used for the SDN connection is signed by the CA certificate that is saved on 
the Windows server when FortiClient EMS is first installed. You can manually export and install it on the FortiGate.

FortiOS 6.4.6 Administration Guide 154


Fortinet Technologies Inc.
Fortinet Security Fabric

To manually export and install the certificate on to the FortiGate:

 1. Export the EMS certificate on the server that EMS is installed on:
 a. On the Windows server that EMS is installed on, go to Settings > Manage computer certificates.
 b. In the certificate management module, go to Trusted Root Certification Authorities > Certificates.
 c. Right click on  the certificate issued by FortiClient Enterprise Management Server and select All Tasks > Export. 
 d. The Certificate Export Wizard opens. Click Next.
 e. Select Base-64 encoded X.509, then click Next.

 f. Enter a file name for the certificate and click Browse to select the folder where it will be located, then click Next.
 g. Review the settings, then click Finish. The certificate is downloaded to the specified folder.
 2. On the FortiGate, import the certificate:
 a. Go to System > Certificate. By default, the Certificate option is not visible, see Feature visibility on page 940 for 
information.
 b. Click Import > CA Certificate.
 c. Set Type to File, and click Upload to import the certificate from the management computer.
 d. Click OK. The imported certificate is shown in the Remote CA Certificate section of the certificate table.
 3. Try to authorize the certificate on the FortiGate:
 a. Go to Security Fabric > Fabric Connectors and edit the FortiClient EMS connector. The connection status 
should now say that the certificate is not authorized.
 b. Click Authorize. The following warning is shown:

The warning can also be seen in the CLI:
# execute fctems verify Win2K16-EMS
failure in certificate configuration/verification: -4
Could not verify EMS. Error 1--94-0-401 in get SN call: Authentication denied.

 4. Authorize the FortiGate on EMS:
 a. Log in to the EMS server console and go to Administration > Fabric Devices.
 b. Select the serial number of the FortiGate device, then click Authorize.

FortiOS 6.4.6 Administration Guide 155


Fortinet Technologies Inc.
Fortinet Security Fabric

 5. Try to authorize the certificate on the FortiGate again:
 a. On the FortiGate, go  to Security Fabric > Fabric Connectors and edit the FortiClient EMS connector.
 b. Click Authorize.
 c. When presented with the EMS server certificate, click Accept to accept the certificate.
Your connection should now be successful and authorized.

 d. Click OK.

Synchronizing FortiClient EMS tags and configurations

An option under the FortiClient EMS settings on the FortiGate consolidates the setup of EMS connectors to support EMS 
tags. EMS tags are pulled into the FortiGate via TCP/8013 and automatically synced with the EMS server. They are 
converted into read-only dynamic firewall addresses that can be used in firewall policies, routing, and so on.

You can test connectivity to the EMS on the FortiGate with the diagnose endpoint


fctems test-connectivity <EMS_ENTRY_NAME> command.

These examples presume the following have been configured in FortiClient EMS:

FortiOS 6.4.6 Administration Guide 156


Fortinet Technologies Inc.
Fortinet Security Fabric

 l Tags have been created on the Compliance Verification > Compliance Verification Rules page. 

 l There are registered users who match the defined tags that are visible on the Compliance Verification > Host Tag


Monitor page. 

To configure FortiClient EMS with tag synchronization in the GUI:

 1. Configure the EMS Fabric Connector:
 a. On the root FortiGate, go to Security Fabric > Fabric Connectors.
 b. Click Create New and click FortiClient EMS.
 c. Enable Synchronize firewall addresses.

 d. Configure the other settings as needed and validate the certificate.
 e. Click OK.
 2. Go to Policy & Objects > Addresses and hover over the EMS tag to view which IPs it resolves to.

FortiOS 6.4.6 Administration Guide 157


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. Configure a firewall policy:
 a. Go to Policy & Objects > Firewall Policy and create a new policy.
 b. For the Source Address, add the EMS tag dynamic address.

 c. Configure the other settings as needed.
 d. Click OK.

To configure FortiClient EMS with tag synchronization in the CLI:

 1. Configure the EMS Fabric Connector:
config endpoint-control fctems
edit "ems137"
set fortinetone-cloud-authentication disable
set server "172.16.200.137"
set https-port 443
set source-ip 0.0.0.0
set pull-sysinfo enable
set pull-vulnerabilities enable
set pull-avatars enable
set pull-tags enable
set call-timeout 5000
set certificate "REMOTE_Cert_1"
next
end

 2. Verify which IPs the dynamic firewall address resolves to:
# diagnose firewall dynamic list
List all dynamic addresses:
FCTEMS0580226579_ems137_vuln_critical_tag: ID(118)
ADDR(10.1.100.120)
ADDR(10.1.100.198)

FortiOS 6.4.6 Administration Guide 158


Fortinet Technologies Inc.
Fortinet Security Fabric

FCTEMS0580226579_ems137_winscp_tag: ID(155)
ADDR(100.100.100.141)

FCTEMS0580226579_ems137_win10_tag: ID(182)
ADDR(10.1.100.120)
# diagnose firewall dynamic address FCTEMS0580226579_ems137_vuln_critical_tag
FCTEMS0580226579_ems137_vuln_critical_tag: ID(118)
ADDR(10.1.100.120)
ADDR(10.1.100.198)

Total dynamic list entries: 1.


Total dynamic addresses: 2
Total dynamic ranges: 0

 3. Configure a firewall policy that uses the EMS tag dynamic firewall address as a source.

FortiNAC

A FortiNAC device can be added to the Security Fabric on the root FortiGate. After the device has been added and 
authorized, you can log in to the FortiNAC from the FortiGate topology views.

Adding a FortiNAC to the Security Fabric requires a FortiNAC with a license issued in the year 
2020 that includes an additional certificate. The device cannot be added if it has an older 
license. Use the licensetool in the FortiNAC CLI to determine if your license includes the 
additional certificate

To add a FortiNAC to the Security Fabric:

 1. On the FortNAC, configure telemetry and input the IP address of the root FortiGate.
 2. On the root FortiGate, authorize the FortiNAC.
 3. Verify the connection status in the topology views.

To configure the FortiNAC:

 1. Go to System > Settings, and in the Folder View select Security Fabric Connection.


 2. Add a new entry with the root FortiGate device's IP address. The default port is 8013.

See Security Fabric Connection in the FortiNAC Administration Guide for more information.

FortiOS 6.4.6 Administration Guide 159


Fortinet Technologies Inc.
Fortinet Security Fabric

To authorize the FortiNAC on the root FortiGate in the GUI:

 1. Go to Security Fabric > Fabric Connectors.


 2. The FortiNAC device will be highlighted in the topology list in the right panel with the status Waiting for
Authorization.
 3. Click on the highlighted FortiNAC and select Authorize.

Optionally, you can also deny authorization to the FortiNAC to remove it from the list.

To authorize the FortiNAC on the root FortiGate in the CLI:

config system csf


config trusted-list
edit "FNVMCATM20000306"
set action accept
next
end
end

To verify the connection status:

 1. After the FortiNAC is authorized, go to Security Fabric > Physical Topology and confirm that it is included in the 


topology.

FortiOS 6.4.6 Administration Guide 160


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. Go to Security Fabric > Logical Topology and confirm the FortiNAC is also displayed there.

 3. Run the following command in the CLI to view information about the FortiNAC device's status:
# diagnose sys csf downstream-devices fortinac
{
"path":"FG5H1E5818900126:FNVMCATM20000306",
"mgmt_ip_str":"10.1.100.197",
"mgmt_port":0,
"admin_port":8443,
"serial":"FNVMCATM20000306",
"host_name":"adnac",
"device_type":"fortinac",
"upstream_intf":"port2",
"upstream_serial":"FG5H1E5818900126",
"is_discovered":true,
"ip_str":"10.1.100.197",
"downstream_intf":"eth0",
"authorizer":"FG5H1E5818900126",
"idx":1
}

To log in to the FortiNAC from the FortiGate:

 1. On the FortiGate, go to Security Fabric > Physical Topology or Security Fabric > Logical Topology.
 2. Click on the FortiNAC and select Login to <serial_number>.

A new tab will open to the FortiNAC log in page.
 3. Enter the username and password to log in to the FortiNAC.

FortiAP and FortiSwitch

FortiAP and FortiSwitch devices can be authorized in the Security Fabric with one click. After connecting a FortiAP or 
FortiSwitch device to an authorized FortiGate, it will automatically be listed in the topology tree.

FortiOS 6.4.6 Administration Guide 161


Fortinet Technologies Inc.
Fortinet Security Fabric

If the default auto-auth-extension-device settings on the FortiAP or FortiSwitch have 
been modified, manual authorization in the Security Fabric may not be required.

For more information about configuring FortiAPs, see Configuring the FortiGate interface to manage FortiAP units and 
Discovering, authorizing, and deauthorizing FortiAP units.
For more information about configuring FortiSwitches, see Using the FortiGate GUI. 

To authorize FortiAP and FortiSwitch devices:

 1. Connect the FortiAP or FortiSwitch device to a FortiGate.
 2. On the root FortiGate, go to Security Fabric > Fabric Connectors. The new device is shown in the Topology tree.
 3. Click the device and select Authorize.

FortiMail

FortiMail can be authorized into the Security Fabric using either the gutter on the Fabric Connectors page, or by pre-
authorizing using the FortiMail serial number or certificate.

To join the Security Fabric from FortiMail:

 1. Go to System > Customization and click the Corporate Security Fabric tab (or the Corporate Security Fabric tab in 


FortiMail  6.4.2 and earlier).
 2. Click the toggle to enable the Fabric.
 3. Enter the Upstream IP Address (root FortiGate) and the Management IP of the FortiMail.
 4. Click Apply. 

Authorizing using FortiOS

If the FortiMail was added to the Security Fabric but not pre-authorized, you can authorize it in FortiOS on the Fabric
Connectors page.

FortiOS 6.4.6 Administration Guide 162


Fortinet Technologies Inc.
Fortinet Security Fabric

To authorize FortiMail:

 1. Go to Security Fabric > Fabric Connectors.


 2. In the topology tree, hover over the FortiMail and click Authorize. 

 3. Verify the certificate is correct, then click Accept.

Pre-authorizing using the FortiMail certificate

FortiMail can be pre-authorized using its serial number or certificate. When you pre-authorize, the FortiMail can join at 
any time, and you will not need to  authorize it FortiOS. In this example, FortiMail is pre-authorized using a certificate.

To pre-authorize FortiMail using a third-party or default certificate:

 1. Log in to FortiMail.
 2. Download the certificate. For example, in Chrome:
 a. In the left side of the address bar, click the icon to view the site information.
 b. Click Certificate.
 c. Click the Details tab, then click Copy to File.

 d. The Certificate Export Wizard opens. Click Next to continue.

FortiOS 6.4.6 Administration Guide 163


Fortinet Technologies Inc.
Fortinet Security Fabric

 e. For the file format, select Base-64 encoded X.509 (.CER), then click Next.

 f. Browse to the folder location and enter a file name, then click Next.
 g. Click Finish, then click OK to close the dialog box.
 3. In FortiOS, go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.
 4. Beside Device authorization, click Edit and configure the following:
 a. Enter the FortiMail serial number.
 b. For Authorization type, select Serial Number.
 c. For Certificate, upload the .CER file you saved previously. 

 d. Click OK.

Additional devices

The following Fortinet devices are supported by the Security Fabric:
 l FortiADC
 l FortiDDoS
 l FortiSandbox
 l FortiMail on page 162
 l FortiWeb
 l FortiWLC

Security Fabric supports standalone FortiSandbox devices, FortiSandbox HA-Cluster primary, 
and FortiSandbox cluster IP.

FortiOS 6.4.6 Administration Guide 164


Fortinet Technologies Inc.
Fortinet Security Fabric

In FortiOS, the device details can be shown in the Security Fabric and Fabric Device dashboard widgets, as well as the 


Fabric Connectors page, and physical and logical topologies.

To add one or more of the devices to the Security Fabric in the GUI:

 1. On the root FortiGate, go to Security Fabric > Fabric Connectors.


 2. Click Create New and select Fabric Device.
 3. Enter the Name, IP, HTTPS port for the device.

FortiSandbox only supports HTTPS port 443.

 4. Click Generate to generate an access token. The Generate Access Token pane opens.


 a. Enter the device's username and password.
 b. Click OK.
 5. Click OK.
 6. Add more devices as required.
The additional devices are shown on the Fabric Connectors page under Other Fortinet Products and in the 
Topology tree.

To add one or more of the devices to the Security Fabric in the CLI:

config system csf


...
config fabric-device

FortiOS 6.4.6 Administration Guide 165


Fortinet Technologies Inc.
Fortinet Security Fabric

edit "FortiADC"
set device-ip 172.18.64.36
set access-token xxxxxx
next
end
end

Using the Security Fabric

Dashboard widgets

Security Fabric widgets can be added to FortiGate dashboards, including:
 l Security Fabric status on page 166
 l Fabric Device on page 166
 l FortiGate Cloud on page 167

Security Fabric status

The Security Fabric status widget shows a summary of the devices in the Security Fabric.

Hover the cursor over the top icons to view pop-ups showing the statuses of the devices in the fabric.
The device tree shows devices that are connected, or could be connected, to you Security Fabric, according to the 
following color scheme:
 l Blue: connected to the network
 l Gray: not configured or not detected
 l Red: no longer connected or not authorized
Hover over a device in the tree to view details about the device, such as it's serial number, operation mode, IP address, 
CPU and memory usage, and others, depending on the device type.
Unauthorized FortiAP and FortiSwitch devices are highlighted in the list, and can be authorized by clicking on the device 
name.

Fabric Device

The Fabric Device widget shows statistics and system information about the selected fabric device.
For a FortiMail device, the widget can show:

FortiOS 6.4.6 Administration Guide 166


Fortinet Technologies Inc.
Fortinet Security Fabric

 l Mail Statistics: a chart of the total messages and total spam messages over time.
 l Statistics Summary: a pie chart summarizes mail statistics.
 l System Information: The FortiMail System Information widget
 l System Usage: System usage information, such as CPU, memory, and disk usage, as well as the number of active 
sessions.

FortiGate Cloud

The FortiGate Cloud widget shows the FortiGate Cloud status and information. If your account is not activated, you can 
activate it from the widget.

To activate your FortiGate Cloud account:

 1. Click on the Not Activated button and select Activate. The Activate FortiGate Cloud pane opens.


 2. If you already have an account:
 a. Fill in your email address, password, country or region, and reseller.
 b. Click OK.
 3. If you are creating an account:
 a. In the FortiCloud field select Create Account.
 b. Fill in all of the required information.
 c. Click OK.

FortiOS 6.4.6 Administration Guide 167


Fortinet Technologies Inc.
Fortinet Security Fabric

Topology

The full Security Fabric topology can be viewed on the root FortiGate. Downstream FortiGate devices' topology views do 
not include upstream devices.
The Physical Topology shows the physical structure of your network, including all connected devices and the 
connections between them. The Logical Topology shows information about the interfaces that connect devices to the 
Security Fabric.  Only Fortinet devices are shown in the topologies.
In both topology pages, you can use filtering and sorting options to control the information that is shown. Hover the 
cursor over a device icon, port number, or endpoint to open a tooltip that shows information about that specific device, 
port, or endpoint. Right-click on a device to log in to it or to deauthorize it. Right-click on an endpoint to perform various 
tasks, including drilling down for more details on sources or compromised hosts, quarantining the host, and banning the 
IP address.
The small number that might be shown on the top right corner of a device icon is the number of security ratings 
recommendations or warnings for that device. The color of the circle shows the severity of the highest security rating 
check that failed. Clicking  it opens the Security Rating page. See Security rating on page 220 for more information.

Servers and server clusters are represented by squares with rounded corners. They are grouped separately from 
circular endpoints. Devices are grouped by type and are colored based on their risk level. Endpoint groups are 
represented by donut charts or bubble packs depending on the current view settings (see Endpoint groups for more 
information). The size of the bubbles in the topology vary based on traffic volume.
AWS assets are grouped by AWS security groups or subnets, and information about detected Common Vulnerabilities 
and Exposures (CVEs), as well as the instance details and ID, are shown.

Views

The topology views can be focused using filters and by sorting in different ways to help you locate the information that 
you need.
Select one of Access Device or No Access Device to only show access or no access devices in the physical topology.
From the Endpoint Option dropdown list, select one of the following views:

FortiOS 6.4.6 Administration Guide 168


Fortinet Technologies Inc.
Fortinet Security Fabric

 l Device Traffic: Organize devices by traffic.
 l Device Count: Organize devices by the number of devices connected to it.
 l Device Operating System: Organize devices by operating system.
 l Device Hardware Vendor: Organize devices by hardware vendor.
 l Risk: Only include devices that have endpoints with medium, high, or critical risk values of the specified type: All, 
Compromised Host, Vulnerability, or Threat Score.
 l No Devices: Do not show endpoints.
The time period dropdown list filters the view by time. Options include: now (real time), 5 minutes, 1 hour, 24 hours, or 7
days.

Endpoint groups

The Device Traffic and Device Count views display endpoint groups as donut charts, with the total number of endpoints 
in the group in the center of the chart. Each sector of the donut chart represents a different endpoint operating system.

To zoom in on a donut chart, click any chart sector. Each sector represents a different endpoint OS. Hovering over each 
sector allows you to see the OS that the sector represents and the number of endpoints that have that OS installed.

FortiOS 6.4.6 Administration Guide 169


Fortinet Technologies Inc.
Fortinet Security Fabric

In this example, the endpoint group contains a total of nine endpoints, with the following OSes installed:

Donut sector color OS Number of endpoints

Orange Linux 2

Green FortiMail 1

Red FortiManager 1

Blue Other 5

To view the endpoint group in a bubble pack display, click the + button in the center of the donut chart. You can view 
each individual endpoint in the bubble pack view.

FortiOS 6.4.6 Administration Guide 170


Fortinet Technologies Inc.
Fortinet Security Fabric

WAN cloud

The WAN cloud icon includes a dropdown menu for selecting where the destination data comes from. The available 
options are: Internet, Owner, IP Address, and Country/Region. These options are only available when the filtering is 
based on Device Traffic.
When Owner is selected, the destination hosts are shown as donut charts that show the percentage of internal (with 
private IP addresses) and Internet hosts. Hover over either color in the chart to see additional information. 

To view more details, right-click on the chart and select Destination Owner Details. The Top Destination Owners by


Bytes widget opens. Click the green icon (Standalone FortiView page icon) to add the widget to a new dashboard.

Alternatively, you can add the FortiView Destination Owners widget as a standalone page or to an existing dashboard 


(see Adding FortiView widgets on page 91).

FortiAP and FortiSwitch devices

Newly discovered FortiAP and FortiSwitch devices are initial shown in the topologies with gray icons to indicate that they 
have not been authorized. To authorize a device, click on the device icon or name and select Authorize. Once 
authorized, the device icon will turn blue.
Right-click on an authorized FortiAP device to Deauthorize or Restart the device. Right-click on a FortiSwitch device to 
Deauthorize, Restart, or Upgrade the device, or to Connect to the CLI.

FortiOS 6.4.6 Administration Guide 171


Fortinet Technologies Inc.
Fortinet Security Fabric

FortiAP and FortiSwitch links are enhanced to show link aggregation groups for the inter-switch link (ISL-LAG). To 
differentiate them from physical links, ISL-LAG links are shown with a thicker line. The endpoint circles can also be used 
as a reference to identify ISL-LAG groups that have more than two links.

Critical risks

Click the Critical Risks button to see a list of endpoints that are deemed critical risks, organized by threat severity. These 
are the red endpoints in the current topology view.

For each endpoint, the user's photo, name, IP address, email address, and phone number are shown. The number of 
vulnerabilities of each severity is shown, and if the IoC verdict is that the endpoint is compromised.
If applicable, the endpoint's host can be quarantined or their IP address banned, by clicking the Quarantine Host on Ban
IP button.
The dropdown menu also provides options to drill down to more information on compromised hosts or endpoint 
vulnerabilities.

Click Drill Down to Compromised Hosts to open the Top Compromised Hosts page that shows a summary for the 


selected endpoint.

FortiOS 6.4.6 Administration Guide 172


Fortinet Technologies Inc.
Fortinet Security Fabric

Compromised host information can also be viewed on the FortiAnalyzer in SOC > FortiView > Threats > Compromised


Hosts.

The FortiAnalyzer must have a FortiGuard Indicators of Compromise service license in order 
to see compromised hosts.

Click Drill Down to Endpoint Vulnerability to open the vulnerabilities page that shows a summary of the vulnerabilities on 


the selected endpoint.

FortiAnalyzer

The Security Fabric topology can also be seen on the FortiAnalyzer device. In the Device Manager, FortiGate devices 
are shown as part of a Security Fabric group with an asterisk next to the name of the root FortiGate.

To view the Security Fabric topology, right-click on the fabric group and select Fabric Topology. Only Fortinet devices 
are shown in the Security Fabric topology views.

FortiOS 6.4.6 Administration Guide 173


Fortinet Technologies Inc.
Fortinet Security Fabric

Topology view — consolidated risk

The topology view shows endpoints based on their highest severity event.  
In the default topology view, you can view hosts with critical vulnerabilities and compromised hosts identified as critical 
risks.
The consolidated Risk view mode displays different risks within the Security Fabric topology. You can use the Risk view 
mode to filter threats by Compromised Hosts, Vulnerability, and Threat Score.

To access the default topology view:

 1. Go to Security Fabric > Physical Topology.


The default topology view highlights hosts with critical vulnerabilities and compromised hosts as critical risks (three 
critical risks in the example). 
 a. Hover over the tooltips for more details.

 2. To view the critical risk summary, click Critical Risks.


The Critical Risks pane displays on the right-side of the screen.

FortiOS 6.4.6 Administration Guide 174


Fortinet Technologies Inc.
Fortinet Security Fabric

To access the consolidated Risk view mode:

 1. In the view option dropdown button, select Risk.

 2. Select one of the following options from the Risk Type dropdown menu:


 l All

FortiOS 6.4.6 Administration Guide 175


Fortinet Technologies Inc.
Fortinet Security Fabric

 l Compromised Hosts 

 l Vulnerability

 l Threat Score

FortiOS 6.4.6 Administration Guide 176


Fortinet Technologies Inc.
Fortinet Security Fabric

Viewing and controlling network risks via topology view

This topic shows how to view and control compromised hosts via the Security Fabric > Physical Topology or Security


Fabric > Logical Topology view.
In the following topology, the downstream FortiGate (Marketing) is connected to the root FortiGate (Edge) through a 
FortiSwitch (Distribution). The Endpoint Host is connected to the downstream FortiGate (Marketing) through another 
FortiSwitch (Access).

This topic consists of the following steps:
 1. View the compromised endpoint host. 
 2. Quarantine the compromised endpoint host.
 3. Run diagnose commands.

To view the compromised endpoint host:

 1. Test that FortiGate detects a compromised endpoint host by opening a browser on the endpoint host and entering a 
malicious website URL. The browser displays a Web Page Blocked! warning and does not allow access to the 
website.
 2. In FortiOS on the root FortiGate, go to Security Fabric > Physical Topology. The endpoint host, connected to the 
Access FortiSwitch, is highlighted in red. Mouse over the endpoint host to view a tooltip that shows the IoC verdict. 
The endpoint host is compromised.   

 3. Go to Security Fabric > Logical Topology. The endpoint host, connected to the  downstream FortiGate, is highlighted 


in red. Mouse over the endpoint host to view a tooltip that shows the IoC verdict. The endpoint host is compromised.
   

To quarantine the compromised endpoint host:

 1. In FortiOS on the root FortiGate, go to Security Fabric > Physical Topology.


 2. Right-click the endpoint host and select Quarantine Host. Click OK to confirm the confirmation dialog.

FortiOS 6.4.6 Administration Guide 177


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. Go to Monitor > Quarantine Monitor. From the dropdown list at the top right corner, select All FortiGates. The 


quarantined endpoint host displays in the content pane.
 4. On the endpoint host, open a browser and visit a website such as https://www.fortinet.com/. If the website cannot be 
accessed, this confirms that the endpoint host is quarantined.

To run diagnose commands:

 1. To show the downstream FortiGate after it joins the Security Fabric, run the diagnose sys csf downstream 


command in the root FortiGate (Edge) CLI. The output should resemble the following:   
Edge # diagnose sys csf downstream
1: FG101ETK18002187 (192.168.7.3) Management-IP: 0.0.0.0 Management-port:0 parent:
FG201ETK18902514
path:FG201ETK18902514:FG101ETK18002187
data received: Y downstream intf:wan1 upstream intf:vlan70 admin-port:443
authorizer:FG201ETK18902514
 2. To show the upstream FortiGate after the downstream FortiGate joins the Security Fabric, run the diagnose sys
csf upstream command in the downstream FortiGate (Marketing) CLI. The output should resemble the following:
   
Marketing # diagnose sys csf upstream
Upstream Information:
Serial Number:FG201ETK18902514
IP:192.168.7.2
Connecting interface:wan1
Connection status:Authorized
 3. To show the quarantined endpoint host in the connected FortiGate, run the following commands in the downstream 
FortiGate (Marketing) CLI:   
Marketing # show user quarantine
config user quarantine
config targets
edit "PC2"
set description "Manually quarantined"
config macs
edit 00:0c:29:3d:89:39
set description "manual-qtn Hostname: PC2"
next
end
next
end
end

Deploying the Security Fabric

This topic provides an example of deploying Security Fabric with three downstream FortiGates connecting to one root 
FortiGate. To deploy Security Fabric, you need a FortiAnalyzer running firmware version 6.2 or later.

FortiOS 6.4.6 Administration Guide 178


Fortinet Technologies Inc.
Fortinet Security Fabric

The following shows a sample network topology with three downstream FortiGates (Accounting, Marketing, and Sales) 
connected to the root FortiGate (Edge).

To configure the root FortiGate (Edge):

 1. Configure interfaces:
 a. In the root FortiGate (Edge), go to Network > Interfaces.
 b. Edit port16:
 l Set Role to DMZ.
 l For the interface connected to FortiAnalyzer, set the IP/Network Mask to 192.168.65.2/255.255.255.0

FortiOS 6.4.6 Administration Guide 179


Fortinet Technologies Inc.
Fortinet Security Fabric

 c. Edit port10:
 l Set Role to LAN.
 l For the interface connected to the downstream FortiGate (Accounting), set the IP/Network Mask to 
192.168.10.2/255.255.255.0
 d. Edit port11:
 l Set Role to LAN.
 l For the interface connected to the downstream FortiGate (Marketing), set the IP/Network Mask to 
192.168.200.2/255.255.255.0
 2. Configure Security Fabric:
 a. In the root FortiGate (Edge), go to Security Fabric > Fabric Connectors and double-click the Security Fabric
Setup card.
 b. For Status, click Enable.
 c. Set the Security Fabric role to Serve as Fabric Root. The FortiAnalyzer settings can be configured.
 d. Enter the FortiAnalyzer IP (192.168.65.10) and select and Upload option (the default is Real Time).
 e. Click Test Connectivity.
A warning message indicates that the FortiGate is not authorized on the FortiAnalyzer. The authorization is 
configured in a later step on the FortiAnalyzer.
 f. Click OK. The FortiAnalyzer serial number is verified.
 g. Enter a Fabric name, such as Office-Security-Fabric.
 h. Ensure Allow other Security Fabric devices to join is enabled and add port10 and port11.
 i. Click OK.
 3. Create a policy to allow the downstream FortiGate (Accounting) to access the FortiAnalyzer:
 a. In the root FortiGate (Edge), go to Policy & Objects > Addresses.
 b. Click Create New.   
 l Set Name to FAZ-addr.
 l Set Type to Subnet.
 l Set Subnet/IP Range to 192.168.65.10/32.
 l Set Interface to any.
 c. Click OK.
 d. Click Create New.   
 l Set Name to Accounting.
 l Set Type to Subnet.
 l Set Subnet/IP Range to 192.168.10.10/32.
 l Set Interface to any.
 e. Click OK.
 f. In the root FortiGate (Edge), go to Policy & Objects > Firewall Policy and click Create New.
 l Set Name to Accounting-to-FAZ.
 l Set srcintf to port10.
 l Set dstintf to port16.
 l Set srcaddr to Accounting-addr.
 l Set dstaddr to FAZ-addr.
 l Set Action to Accept.
 l Set Schedule to Always.
 l Set Service to All.
 l Enable NAT.
 l Set IP Pool Configuration to Use Outgoing Interface Address.

FortiOS 6.4.6 Administration Guide 180


Fortinet Technologies Inc.
Fortinet Security Fabric

 g. Click OK.
 4. Create a policy to allow the two downstream FortiGates (Marketing and Sales) to access the FortiAnalyzer:
 a. In the root FortiGate (Edge), go to Policy & Objects > Addresses and click Create New.
 l Set Name to Marketing-addr.
 l Set Type to Subnet.
 l Set Subnet/IP Range to 192.168.200.10/32.
 l Set Interface to any.
 b. Click OK.
 c. In the root FortiGate (Edge), go to Policy & Objects > Firewall Policy and click Create New.
 l Set Name to Marketing-to-FAZ.
 l Set srcintf to port11.
 l Set dstintf to port16.
 l Set srcaddr to Marketing-addr.
 l Set dstaddr to FAZ-addr.
 l Set Action to Accept.
 l Set Schedule to Always.
 l Set Service to All.
 l Enable NAT.
 l Set IP Pool Configuration to Use Outgoing Interface Address.
 d. Click OK.

To configure the downstream FortiGate (Accounting):

 1. Configure interface:
 a. In the downstream FortiGate (Accounting), go to Network > Interfaces.
 b. Edit interface wan1:
 l Set Role to WAN.
 l For the interface connected to root, set the IP/Network Mask to 192.168.10.10/255.255.255.0
 2. Configure the default static route to connect to the root FortiGate (Edge):
 a. In the downstream FortiGate (Accounting), go to Network > Static Routes and click Create New or Create New
> IPv4 Static Route.
 l Set Destination to 0.0.0.0/0.0.0.0.
 l Set Interface to wan1.
 l Set Gateway Address to 192.168.10.2.
 b. Click OK.
 3. Configure Security Fabric:
 a. In the downstream FortiGate (Accounting), go to Security Fabric > Fabric Connectors and double-click the 
Security Fabric Setup card.
 b. For Status, click Enable.
FortiAnalyzer automatically enables logging. Settings for the FortiAnalyzer are retrieved from the root FortiGate 
(Edge) when FortiGate (Accounting) connects to the root FortiGate (Edge).
 c. Set the Security Fabric role to Join Existing Fabric.
 d. Upstream FortiGate IP is filled in automatically with the default static route Gateway Address of 192.168.10.2 
set in the previous step.
 e. Disable Allow other FortiGates to join, because there is no downstream FortiGate connecting to it.
 f. Click OK.

FortiOS 6.4.6 Administration Guide 181


Fortinet Technologies Inc.
Fortinet Security Fabric

To configure the downstream FortiGate (Marketing):

 1. Configure interface:
 a. In the downstream FortiGate (Marketing), go to Network > Interfaces.
 b. Edit port12:
 l Set Role to LAN.
 l For the interface connected to the downstream FortiGate (Sales), set the IP/Network Mask to 
192.168.135.11/255.255.255.0.
 c. Edit wan1:
 l Set Role to WAN.
 l For the interface connected to the root FortiGate (Edge), set the IP/Network Mask to 
192.168.200.10/255.255.255.0.
 2. Configure the default static route to connect to the root FortiGate (Edge):
 a. In the downstream FortiGate (Marketing), go to Network > Static Routes and click Create New or Create New >
IPv4 Static Route.
 l Set Destination to 0.0.0.0/0.0.0.0.
 l Set Interface to wan1.
 l Set Gateway Address to 192.168.200.2.
 b. Click OK.
 3. Configure Security Fabric:
 a. In the downstream FortiGate (Marketing), go to Security Fabric > Fabric Connectors and double-click the 
Security Fabric Setup card.
 b. For Status, click Enable.
FortiAnalyzer automatically enables logging. Settings for the FortiAnalyzer are retrieved from the root FortiGate 
(Edge) when FortiGate (Marketing) connects to the root FortiGate (Edge).
 c. Set the Security Fabric role to Join Existing Fabric.
 d. Upstream FortiGate IP is filled in automatically with the default static route Gateway Address of 192.168.200.2 
set in the previous step.
 e. Enable Allow other FortiGates to join and add port12.
 f. Click OK.
 4. Create a policy to allow another downstream FortiGate (Sales) going through FortiGate (Marketing) to access the 
FortiAnalyzer:
 a. In the downstream FortiGate (Marketing),  go to Policy & Objects > Addresses and click Create New.
 l Set Name to FAZ-addr.
 l Set Type to Subnet.
 l Set Subnet/IP Range to 192.168.65.10/32.
 l Set Interface to any.
 b. Click OK.
 c. Click Create New.
 l Set Name to Sales-addr.
 l Set Type to Subnet.
 l Set Subnet/IP Range to 192.168.135.10/32.
 l Set Interface to any.
 d. Click OK.

FortiOS 6.4.6 Administration Guide 182


Fortinet Technologies Inc.
Fortinet Security Fabric

 e. In the downstream FortiGate (Marketing), go to Policy & Objects > Firewall Policy and click Create New.


 l Set Name to Sales-to-FAZ.
 l Set srcintf to port12.
 l Set dstintf to wan1.
 l Set srcaddr to Sales-addr.
 l Set dstaddr to FAZ-addr.
 l Set Action to Accept.
 l Set Schedule to Always.
 l Set Service to All.
 l Enable NAT.
 l Set IP Pool Configuration to Use Outgoing Interface Address.
 f. Click OK.

To configure the downstream FortiGate (Accounting):

 1. Configure interface:
 a. In the downstream FortiGate (Accounting), go to Network > Interfaces.
 b. Edit interface wan1:
 l Set Role to WAN.
 l For the interface connected to root, set the IP/Network Mask to 192.168.10.10/255.255.255.0
 2. Configure the default static route to connect to the root FortiGate (Edge):
 a. In the downstream FortiGate (Accounting), go to Network > Static Routes and click Create New or Create New
> IPv4 Static Route.
 l Set Destination to 0.0.0.0/0.0.0.0.
 l Set Interface to wan1.
 l Set Gateway Address to 192.168.10.2.
 b. Click OK.
 3. Configure Security Fabric:
 a. In the downstream FortiGate (Accounting), go to Security Fabric > Fabric Connectors and double-click the 
Security Fabric Setup card.
 b. For Status, click Enable.
FortiAnalyzer automatically enables logging. Settings for the FortiAnalyzer are retrieved from the root FortiGate 
(Edge) when FortiGate (Accounting) connects to the root FortiGate (Edge).
 c. Set the Security Fabric role to Join Existing Fabric.
 d. Upstream FortiGate IP is filled in automatically with the default static route Gateway Address of 192.168.10.2 
set in the previous step.
 e. Disable Allow other FortiGates to join, because there is no downstream FortiGate connecting to it.
 f. Click OK.

To configure the downstream FortiGate (Sales):

 1. Configure interface:
 a. In the downstream FortiGate (Sales), go to Network > Interfaces.
 b. Edit wan2:
 l Set Role to WAN.
 l For the interface connected to the upstream FortiGate (Marketing), set the IP/Network Mask to 
192.168.135.10/255.255.255.0.

FortiOS 6.4.6 Administration Guide 183


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. Configure the default static route to connect to the upstream FortiGate (Marketing):
 a. In the downstream FortiGate (Sales), go to Network > Static Routes  and click Create New or Create New >
IPv4 Static Route.
 l Set Destination to 0.0.0.0/0.0.0.0.
 l Set Interface to wan2.
 l Set Gateway Address to 192.168.135.11.
 b. Click OK.
 3. Configure Security Fabric:
 a. In the downstream FortiGate (Sales), go to Security Fabric > Fabric Connectors and double-click the Security
Fabric Setup card.
 b. For Status, click Enable.
FortiAnalyzer automatically enables logging. Settings for the FortiAnalyzer are retrieved from the root FortiGate 
(Edge) when FortiGate (Sales) connects to the root FortiGate (Edge).
 c. Set the Security Fabric role to Join Existing Fabric.
 d. Upstream FortiGate IP  is filled in automatically with the default static route Gateway Address of 
192.168.135.11 set in the previous step.
 e. Disable Allow other FortiGates to join, because there is no downstream FortiGate connecting to it.
 f. Click OK.

To authorize downstream FortiGates (Accounting, Marketing, and Sales) on the root FortiGate (Edge):

 1. In the root FortiGate (Edge), go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup 


card.
The Topology tree highlights two connected FortiGates with their serial numbers and asks you to authorize the 
highlighted devices.
 2. Select the highlighted FortiGates and select Authorize.
After they are authorized, the two downstream FortiGates (Accounting and Marketing) appear in the Topology tree 
in the Security Fabric > Fabric Connectors > Security Fabric Setup page. This means that the two downstream 
FortiGates (Accounting and Marketing) have successfully joined the Security Fabric.
 3. The Topology tree now highlights the FortiGate with the serial number that is connected to the downstream 
FortiGate (Marketing) and asks you to authorize the highlighted device.
 4. Select the highlighted FortiGates and select Authorize.
After it is authorized, the downstream FortiGate ( Sales) appears in the Topology tree in the Security Fabric > Fabric
Connectors > Security Fabric Setup page. This means that the downstream FortiGates (Sales) has successfully 
joined the Security Fabric.

To use FortiAnalyzer to authorize all the Security Fabric FortiGates:

 1. Authorize all the Security Fabric FortiGates on the FortiAnalyzer side:
 a. On the FortiAnalyzer,  go to System Settings > Network > All Interfaces.
 b. Edit port1 and set IP Address/Netmask to 192.168.65.10/255.255.255.0.
 c. Go to Device Manager > Unauthorized. All of the FortiGates are listed as unauthorized.
 i. Select all the FortiGates and select Authorize. The FortiGates are now listed as authorized.
After a moment, a warning icon appears beside the root FortiGate (Edge) because the FortiAnalyzer 
needs administrative access to the root FortiGate (Edge) in the Security Fabric.
 ii. Click the warning icon and enter the admin username and password of the root FortiGate (Edge).

FortiOS 6.4.6 Administration Guide 184


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. Check FortiAnalyzer status on all the Security Fabric FortiGates:
 a. On each FortiGate, go to Security Fabric > Fabric Connectors and double-click the FortiAnalyzer Logging card.
 b. Check that Storage usage information is shown.

To check Security Fabric deployment result:

 1. On FortiGate (Edge), go to Dashboard > Status.


The Security Fabric widget displays all the FortiGates in the Security Fabric.

 2. On FortiGate (Edge), go to Security Fabric > Physical Topology.


This page shows a visualization of access layer devices in the Security Fabric.

 3. On FortiGate (Edge), go to Security Fabric > Physical Topology.


This dashboard shows information about the interfaces of each device in the Security Fabric.

FortiOS 6.4.6 Administration Guide 185


Fortinet Technologies Inc.
Fortinet Security Fabric

To run diagnose commands:

 1. Run the diagnose sys csf authorization pending-list command in the root FortiGate to show the 


downstream FortiGate pending for root FortiGate authorization:
Edge # diagnose sys csf authorization pending-list
Serial IP Address HA-Members Path
------------------------------------------------------------------------------------
FG201ETK18902514 0.0.0.0 FG3H1E5818900718:FG201ETK18902514

 2. Run the diagnose sys csf downstream command in the root or middle FortiGate to show the downstream 


FortiGates after they join Security Fabric:
Edge # diagnose sys csf downstream
1: FG201ETK18902514 (192.168.200.10) Management-IP: 0.0.0.0 Management-port:0
parent: FG3H1E5818900718
path:FG3H1E5818900718:FG201ETK18902514
data received: Y downstream intf:wan1 upstream intf:port11 admin-port:443
authorizer:FG3H1E5818900718
2: FGT81ETK18002246 (192.168.10.10) Management-IP: 0.0.0.0 Management-port:0 parent:
FG3H1E5818900718
path:FG3H1E5818900718:FGT81ETK18002246
data received: Y downstream intf:wan1 upstream intf:port10 admin-port:443
authorizer:FG3H1E5818900718
3: FG101ETK18002187 (192.168.135.10) Management-IP: 0.0.0.0 Management-port:0
parent: FG201ETK18902514
path:FG3H1E5818900718:FG201ETK18902514:FG101ETK18002187
data received: Y downstream intf:wan2 upstream intf:port12 admin-port:443
authorizer:FG3H1E5818900718

 3. Run the diagnose sys csf upstream command in any downstream FortiGate to show the upstream FortiGate 


after downstream FortiGate joins Security Fabric:
Marketing # diagnose sys csf upstream
Upstream Information:
Serial Number:FG3H1E5818900718
IP:192.168.200.2
Connecting interface:wan1
Connection status:Authorized

Synchronizing objects across the Security Fabric

When the Security Fabric is enabled, various objects such as addresses, services, and schedules are synced from the 
upstream FortiGate to all downstream devices by default. FortiOS has the following settings for object synchronization 
across the Security Fabric:
 l Set object synchronization (fabric-object-unification) to default or local on a downstream device.
 l Set a per object option to toggle whether the specific Fabric object will be synchronized or not. After upgrading from 
6.4.3, this option is disabled for supported Fabric objects. The synchronized Fabric objects are kept as locally 
created objects on downstream FortiGates.
 l Define the number of task workers to handle synchronizations.
The firewall object synchronization wizard helps  identify objects that are not synchronized and resolves any conflicts. A 
warning message appears in the topology tree if there is a conflict. 

FortiOS 6.4.6 Administration Guide 186


Fortinet Technologies Inc.
Fortinet Security Fabric

Summary of CLI commands

Object synchronization can be configured as follows:
config system csf
set fabric-object-unification {default | local}
set configuration-sync {default | local}
set fabric-workers <integer>
...
next
end

Parameter Description

fabric-object-unification default: Global CMDB objects will be synchronized in the Security Fabric.
local: Global CMDB objects will not be synchronized to and from this device.
This command is available on the root FortiGate. If set to local, the device does 
not synchronize objects from the root, but will  send the synchronized objects 
downstream.

configuration-sync default: Synchronize configuration for FortiAnalyzer, FortiSandbox, and Central 
Management to root node.
local: Do not synchronize configuration with root node.
If downstream FortiGates are set to local, the synchronized objects from the root 
to downstream are not applied locally. However, the downstream FortiGate will 
send the configuration to lower FortiGates.

fabric-workers Define how many task worker process are created to handle synchronizations (1- 
4, default = 2). The worker processes dies if there is no task to perform after 60 
seconds.

The  per object setting can be configured on the root FortiGate as follows:
config firewall <object>
edit <name>
set fabric-object {enable | disable}
...
next
end

Where:
 l <object> is one of the following: address, address6, addrgrp, addrgrp6, service category, service
custom, service group, schedule group, schedule onetime, or schedule recurring.
 l Enabling fabric-object sets the object as a Security Fabric-wide global object that is synchronized to 
downstream FortiGates. 
 l Disabling fabric-object sets the object as local to this Security Fabric member.

FortiOS 6.4.6 Administration Guide 187


Fortinet Technologies Inc.
Fortinet Security Fabric

Sample topology

In this Security Fabric, the root FortiGate (FGTA-1) has fabric-object-unification set to default so the Fabric 
objects can be synchronized to the downstream FortiGate. The level 1 downstream FortiGate (FGTB-1) has 
configuration-sync set to local, so it will not apply the synchronized objects locally. The level 2 downstream 
FortiGate (FGTC) has configuration-sync set to default, so it will apply the synchronized objects locally.
In this example, firewall addresses and address groups are used. Other supported Fabric objects have the same 
behaviors. The following use cases illustrate common synchronization scenarios: 
 l If no conflicts exist, firewall addresses and address groups can be synchronized to downstream FortiGates (see 
example below).
 l If a conflict exists between the root and downstream FortiGates, it can be resolved with the conflict resolution 
wizard. After the conflict is resolved, the firewall addresses and address groups can be synchronized to 
downstream FortiGates (see example below).
 l If set fabric-object (Fabric synchronization option in the GUI) is disabled for firewall addresses and address 
groups on the root FortiGate, they will not be synchronized to downstream FortiGates (see example below).

To configure the FortiGates used in this example:

FGTA-1 # config system csf


set status enable
set group-name "csf_script"
set fabric-object-unification default
...
end
FGTB-1 # config system csf
set status enable
set upstream-ip 10.2.200.1
set configuration-sync local
...
end
FGTC # config system csf
set status enable
set upstream-ip 192.168.7.2
set configuration-sync default
...
end

To synchronize a firewall address and address group in the Security Fabric:

 1. Configure the firewall address on the root FortiGate:
FGTA-1 # config firewall address
edit "add_subnet_1"

FortiOS 6.4.6 Administration Guide 188


Fortinet Technologies Inc.
Fortinet Security Fabric

set fabric-object enable


set subnet 22.22.22.0 255.255.255.0
next
end

 2. Configure the address group on the root FortiGate:
FGTA-1 # config firewall addrgrp
edit "group_subnet_1"
set member "add_subnet_1"
set fabric-object enable
next
end

 3. Check the firewall address and address group on the downstream FortiGates:
FGTB-1 # show firewall address add_subnet_1
entry is not found in table
FGTB-1 # show firewall addrgrp group_subnet_1
entry is not found in table

The synchronized objects are not applied locally on this FortiGate because configuration-sync is set to 
local.
FGTC # show firewall address add_subnet_1
config firewall address
edit "add_subnet_1"
set uuid 378a8094-34cb-51eb-ce40-097f298fcfdc
set fabric-object enable
set subnet 22.22.22.0 255.255.255.0
next
end
FGTC # show firewall addrgrp group_subnet_1
config firewall addrgrp
edit "group_subnet_1"
set uuid 4d7a8a52-34cb-51eb-fce7-d93f76915319
set member "add_subnet_1"
set color 19
set fabric-object enable
next
end

The objects are synchronized on this FortiGate because configuration-sync is set to default.

To resolve a firewall address and address group conflict in the Security Fabric:

 1. On FGTC, create a firewall address:
 a. Go to Policy & Objects > Addresses and click Create New > Address.
 b. Configure the following:

Name sync_add_1

IP/Netmask 33.33.33.0 255.255.255.0

FortiOS 6.4.6 Administration Guide 189


Fortinet Technologies Inc.
Fortinet Security Fabric

 c. Click OK.
 2. On FGTA-1 (Fabric root), create the firewall address with same name  but a different subnet:
 a. Go to Policy & Objects > Addresses and click Create New > Address.
 b. Configure the following:

Name sync_add_1

IP/Netmask 11.11.11.0 255.255.255.0

Fabric synchronization Enable

 c. Click OK.
 3. Add the address to a different address group than what is configured on FGTC:
 a. Go to Policy & Objects > Addresses and click Create New > Address Group.
 b. Configure the following:

Name sync_group4

Members sync_add_1

Fabric synchronization Enable

FortiOS 6.4.6 Administration Guide 190


Fortinet Technologies Inc.
Fortinet Security Fabric

 c. Click OK.
 4. Go to Security Fabric > Fabric Connectors. In the topology tree, there is a message that Firewall objects are in
conflict with other FortiGates in the fabric.

FortiOS 6.4.6 Administration Guide 191


Fortinet Technologies Inc.
Fortinet Security Fabric

 5. Resolve the conflict:
 a. Click Review firewall object conflicts. The Firewall Object Synchronization pane opens.
 b. Click Rename All Objects. The conflicted object will be renamed on the downstream FortiGate.

 c. The conflict is resolved. Click Close to exit the Firewall Object Synchronization pane.

FortiOS 6.4.6 Administration Guide 192


Fortinet Technologies Inc.
Fortinet Security Fabric

 d. The topology tree no longer indicates there is a conflict.

 6. Verify the results on the downstream FortiGates:
 a. On FGTB-1, go to Policy & Objects > Addresses.
 b. Search for sync_add_1 and sync_group4. No results are found. The synchronized objects are not applied 
locally on this FortiGate because configuration-sync is set to local.

 c. On FGTC, go to Policy & Objects > Addresses.


 d. Search for sync_add_1. The original firewall address sync_add_1 was renamed to sync_add_1_FGTC by 
resolving the conflict on FGTA-1. The address sync_add_1 and address group sync_group4 are synchronized 
from FGTA-1.

FortiOS 6.4.6 Administration Guide 193


Fortinet Technologies Inc.
Fortinet Security Fabric

To disable Fabric synchronization on the root FortiGate in the GUI:

 1. On FGTA-1, create a firewall address:
 a. Go to Policy & Objects > Addresses and click Create New > Address.
 b. Configure the following:

Name add_subnet_3

IP/Netmask 33.33.33.0 255.255.255.0

Fabric synchronization Disable

 c. Click OK.
 2. Create the firewall address group and add the address:
 a. Go to Policy & Objects > Addresses and click Create New > Address Group.
 b. Configure the following:

Name group_subnet_3

Members add_subnet_3

Fabric synchronization Disable

 c. Click OK.
 3. On FGTB-1, go to Policy & Objects > Addresses and search for subnet_3. No results are found because Fabric 
synchronization is disabled on the root FortiGate (FGTA-1).

 4. On FGTC, go to Policy & Objects > Addresses and search for subnet_3. No results are found because Fabric 


synchronization is disabled on the root FortiGate (FGTA-1).

To disable Fabric synchronization on the root FortiGate in the CLI:

 1. Configure the firewall address on the root FortiGate:
FGTA-1 # config firewall address
edit "add_subnet_3"
set subnet 33.33.33.0 255.255.255.0
set fabric-object disable
next
end

 2. Configure the address group on the root FortiGate:
FGTA-1 # config firewall addrgrp
edit "group_subnet_3"
set member "add_subnet_3"
set fabric-object disable

FortiOS 6.4.6 Administration Guide 194


Fortinet Technologies Inc.
Fortinet Security Fabric

next
end

 3. Check the firewall address and address group on the downstream FortiGates:
FGTB-1 # show firewall address add_subnet_3
entry is not found in table
FGTB-1 # show firewall addrgrp group_subnet_3
entry is not found in table
FGTC # show firewall address add_subnet_3
entry is not found in table
FGTC # show firewall addrgrp group_subnet_3
entry is not found in table

The objects are not synchronized from the root FortiGate (FGTA-1) because the fabric-object setting is 
disabled.

Security Fabric over IPsec VPN

This is an example of configuring Security Fabric over IPsec VPN.

Sample topology

This sample topology shows a downstream FortiGate (HQ2) connected to the root FortiGate (HQ1) over IPsec VPN to 
join Security Fabric.

Sample configuration

To configure the root FortiGate (HQ1):

 1. Configure interface:
 a. In the root FortiGate (HQ1), go to Network > Interfaces.
 b. Edit port2:
 l Set Role to WAN.
 l For the interface connected to the Internet, set the IP/Network Mask to 10.2.200.1/255.255.255.0
 c. Edit port6:
 l Set Role to DMZ.
 l For the interface connected to FortiAnalyzer, set the IP/Network Mask to 192.168.8.250/255.255.255.0

FortiOS 6.4.6 Administration Guide 195


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. Configure the static route to connect to the Internet:
 a. Go to Network > Static Routes and click Create New or Create New > IPv4 Static Route.
 l Set Destination to 0.0.0.0/0.0.0.0.
 l Set Interface to port2.
 l Set Gateway Address to 10.2.200.2.
 b. Click OK.
 3. Configure IPsec VPN:
 a. Go to VPN > IPsec Wizard.
 l Set Name to To-HQ2.
 l Set Template Type to Custom.
 l Click Next.
 l Set Authentication to Method.
 l Set Pre-shared Key to 123456.
 b. Leave all other fields in their default values and click OK.
 4. Configure the IPsec VPN interface IP address which will be used to form Security Fabric:
 a. Go to Network > Interfaces.
 b. Edit To-HQ2:
 l Set Role to LAN.
 l Set the IP/Network Mask to 10.10.10.1/255.255.255.255.
 l Set Remote IP/Network Mask to 10.10.10.3/255.255.255.0.
 5. Configure IPsec VPN local and remote subnet:
 a. Go to Policy & Objects > Addresses.
 b. Click Create New
 l Set Name to To-HQ2_remote_subnet_2.
 l Set Type to Subnet.
 l Set IP/Network Mask to 10.10.10.3/32.
 c. Click OK.
 d. Click Create New
 l Set Name to To-HQ2_local_subnet_1.
 l Set Type to Subnet.
 l Set IP/Network Mask to 192.168.8.0/24.
 e. Click OK.
 f. Click Create New
 l Set Name to To-HQ2_remote_subnet_1.
 l Set Type to Subnet.
 l Set IP/Network Mask to 10.1.100.0/24.
 g. Click OK.
 6. Configure IPsec VPN static routes:
 a. Go to Network > Static Routes 
 b. Click Create New or Create New > IPv4 Static Route.
 l For Named Address, select Type and select To-HQ2_remote_subnet_1.
 l Set Interface to To-HQ2.
Click OK.
 c. Click Create New or Create New > IPv4 Static Route.

FortiOS 6.4.6 Administration Guide 196


Fortinet Technologies Inc.
Fortinet Security Fabric

 l For Named Address, select Type and select To-HQ2_remote_subnet_1.
 l Set Interface to Blackhole.
 l Set Administrative Distance to 254.
 d. Click OK.
 7. Configure IPsec VPN policies:
 a. Go to Policy & Objects > Firewall Policy
 b. Click Create New.
 l Set Name to vpn_To-HQ2_local.
 l Set Incoming Interface to port6.
 l Set Outgoing Interface to To-HQ2.
 l Set Source to To-HQ2_local_subnet_1.
 l Set Destination to To-HQ2_remote_subnet_1.
 l Set Schedule to Always.
 l Set Service to All.
 l Disable NAT.
 c. Click OK.
 d. Click Create New.
 l Set Name to vpn_To-HQ2_remote.
 l Set Incoming Interface to To-HQ2.
 l Set Outgoing Interface to port6.
 l Set Source to To-HQ2_remote_subnet_1, To-HQ2_remote_subnet_2.
 l Set Destination to To-HQ2_local_subnet_1.
 l Set Schedule to Always.
 l Set Service to All.
 l Enable NAT.
 l Set IP Pool Configuration to Use Outgoing Interface Address.
 e. Click OK.
 8. Configure Security Fabric:
 a. Go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.
 b. For Status, click Enable.
After FortiGate Telemetry is enabled, FortiAnalyzer automatically enables Logging and Upload is set to Real
Time.
 c. Set the Security Fabric role to Serve as Fabric Root. The FortiAnalyzer settings can be configured.
 d. Enter the FortiAnalyzer IP (192.168.8.250).
 e. Click OK. The FortiAnalyzer serial number is verified.
 f. Enter a Fabric name, such as Office-Security-Fabric.
 g. Ensure Allow other Security Fabric devices to join is enabled and add VPN interface To-HQ2.
 h. Click OK.

To configure the downstream FortiGate (HQ2):

 1. Configure interface:
 a. Go to Network > Interfaces.
 b. Edit interface wan1:
 l Set Role to WAN.
 l For the interface connected to the Internet, set the IP/Network Mask to 192.168.7.3/255.255.255.0.

FortiOS 6.4.6 Administration Guide 197


Fortinet Technologies Inc.
Fortinet Security Fabric

 c. Edit interface vlan20:
 l Set Role to LAN.
 l For the interface connected to local endpoint clients, set the IP/Network Mask to 
10.1.100.3/255.255.255.0.
 2. Configure the static route to connect to the Internet:
 a. Go to Network > Static Routes and click Create New or Create New > IPv4 Static Route.
 l Set Destination to 0.0.0.0/0.0.0.0.
 l Set Interface to wan1.
 l Set Gateway Address to 192.168.7.2.
 b. Click OK.
 3. Configure IPsec VPN:
 a. Go to VPN > IPsec Wizard.
 l Set VPN Name to To-HQ1.
 l Set Template Type to Custom.
 l Click Next.
 l In the Network IP Address, enter 10.2.200.1.
 l Set Interface to wan1.
 l Set Authentication to Method.
 l Set Pre-shared Key to 123456.
 b. Leave all other fields in their default values and click OK.
 4. Configure the IPsec VPN interface IP address which will be used to form Security Fabric:
 a. Go to Network > Interfaces.
 b. Edit To-HQ1:
 l Set Role to WAN.
 l Set the IP/Network Mask to 10.10.10.3/255.255.255.255.
 l Set Remote IP/Network Mask to 10.10.10.1/255.255.255.0.0.
 5. Configure IPsec VPN local and remote subnet:
 a. Go to Policy & Objects > Addresses.
 b. Click Create New
 l Set Name to To-HQ1_local_subnet_1.
 l Set Type to Subnet.
 l Set IP/Network Mask to 10.1.100.0/24.
 c. Click OK.
 d. Click Create New
 l Set Name to To-HQ1_remote_subnet_1.
 l Set Type to Subnet.
 l Set IP/Network Mask to 192.168.8.0/24.
 e. Click OK.
 6. Configure IPsec VPN static routes:
 a. Go to Network > Static Routes and click Create New or Create New > IPv4 Static Route.
 l For Named Address, select Type and select To-HQ1_remote_subnet_1.
 l Set Interface to To-HQ1.
 b. Click OK.

FortiOS 6.4.6 Administration Guide 198


Fortinet Technologies Inc.
Fortinet Security Fabric

 c. Click Create New or Create New > IPv4 Static Route.


 l For Named Address, select Type and select To-HQ1_remote_subnet_1.
 l Set Interface to Blackhole.
 l Set Administrative Distance to 254.
 d. Click OK.
 7. Configure IPsec VPN policies:
 a. Go to Policy & Objects > Firewall Policy and click Create New.
 l Set Name to vpn_To-HQ1_local.
 l Set Incoming Interface to vlan20.
 l Set Outgoing Interface to To-HQ1.
 l Set Source to To-HQ1_local_subnet_1.
 l Set Destination to To-HQ1_remote_subnet_1.
 l Set Schedule to Always.
 l Set Service to All.
 l Disable NAT.
 b. Click OK.
 c. Click Create New.
 l Set Name to vpn_To-HQ1_remote.
 l Set Incoming Interface to To-HQ1.
 l Set Outgoing Interface to vlan20.
 l Set Source to To-HQ1_remote_subnet_1.
 l Set Destination to -HQ1_local_subnet_1.
 l Set Schedule to Always.
 l Set Service to All.
 l Disable NAT.
 d. Click OK.
 8. Configure Security Fabric:
 a. Go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.
 b. For Status, click Enable.
FortiAnalyzer automatically enables logging. FortiAnalyzer settings will be retrieved when the downstream 
FortiGate connects to the root FortiGate.
 c. Set the Security Fabric role to Join Existing Fabric.
 d. Set the Upstream FortiGate IP to 10.10.10.1.
 e. Click OK.

To authorize the downstream FortiGate (HQ2) on the root FortiGate (HQ1):

 1. In the root FortiGate (HQ1), go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup 


card.
The Topology tree highlights the connected FortiGate (HQ2) with the serial number and asks you to authorize the 
highlighted device.
 2. Select the highlighted FortiGates and select Authorize.
After authorization, the downstream FortiGate (HQ2) appears in the Topology tree in the Security Fabric > Fabric
Connectors > Security Fabric Setup page. This means the downstream FortiGate (HQ2) has successfully joined the 
Security Fabric.

FortiOS 6.4.6 Administration Guide 199


Fortinet Technologies Inc.
Fortinet Security Fabric

To check Security Fabric over IPsec VPN:

 1. On the root FortiGate (HQ1), go to Security Fabric > Physical Topology.


The root FortiGate (HQ1) is connected by the downstream FortiGate (HQ2) with VPN icon in the middle.

 2. On the root FortiGate (HQ1), go to Security Fabric > Logical Topology.


The root FortiGate (HQ1) VPN interface To-HQ2 is connected by downstream FortiGate (HQ2) VPN interface To-
HQ1 with VPN icon in the middle.

To run diagnose commands:

 1. Run the diagnose sys csf authorization pending-list command in the root FortiGate (HQ1) to show 


the downstream FortiGate pending for root FortiGate authorization:
HQ1 # diagnose sys csf authorization pending-list
Serial IP Address HA-Members
Path
------------------------------------------------------------------------------------
FG101ETK18002187 0.0.0.0
FG3H1E5818900718:FG101ETK18002187

 2. Run the diagnose sys csf downstream command in the root FortiGate (HQ1) to show the downstream 


FortiGate (HQ2) after it joins Security Fabric:
HQ1 # diagnose sys csf downstream
1: FG101ETK18002187 (10.10.10.3) Management-IP: 0.0.0.0 Management-port:0 parent:
FG3H1E5818900718
path:FG3H1E5818900718:FG101ETK18002187
data received: Y downstream intf:To-HQ1 upstream intf:To-HQ2 admin-port:443
authorizer:FG3H1E5818900718

 3. Run the diagnose sys csf upstream command in the downstream FortiGate (HQ2) to show the root 


FortiGate (HQ1) after the downstream FortiGate joins Security Fabric:
HQ2 # diagnose sys csf upstream
Upstream Information:
Serial Number:FG3H1E5818900718
IP:10.10.10.1
Connecting interface:To-HQ1
Connection status:Authorized

FortiOS 6.4.6 Administration Guide 200


Fortinet Technologies Inc.
Fortinet Security Fabric

Leveraging LLDP to simplify security fabric negotiation

This feature enables LLDP reception on WAN interfaces, and prompts FortiGates that are joining the Security Fabric if 
the upstream FortiGate asks.
 l If an interface's role is undefined, LLDP reception and transmission inherit settings from the VDOM.
 l If an interface's role is WAN, LLDP reception is enabled.
 l If an interface's role is LAN, LLDP transmission is enabled.

When a FortiGate B's WAN interface detects that FortiGate A's LAN interface is immediately upstream (through the 
default gateway), and FortiGate A has Security Fabric enabled, FortiGate B will show a notification on the GUI asking to 
join the Security Fabric. 

To configure LLDP reception and join a Security Fabric:

 1. Go To Network > Interfaces.


 2. Configure an interface:
 l If the interface's role is undefined, under Administrative Access, set Receive LLDP and Transmit LLDP to Use
VDOM Setting.

Using the CLI:
config system interface
edit "port3"
set lldp-reception vdom
set lldp-transmission vdom
set role undefined
...
next
end

 l If the interface's role is WAN, under Administrative Access, set Receive LLDP to Enable and Transmit LLDP to 


Use VDOM Setting.

FortiOS 6.4.6 Administration Guide 201


Fortinet Technologies Inc.
Fortinet Security Fabric

Using the CLI:
config system interface
edit "wan1"
set lldp-reception enable
set lldp-transmission vdom
set role wan
...
next
end

 l If the interface's role is LAN, under Administrative Access, set Receive LLDP to Use VDOM Setting and 


Transmit LLDP to Enable.

Using the CLI:
config system interface
edit "port2"
set lldp-reception vdom
set lldp-transmission enable
set role lan
...
next
end

FortiOS 6.4.6 Administration Guide 202


Fortinet Technologies Inc.
Fortinet Security Fabric

A notification will be shown on FortiGate B.

 3. Click the notification. The Core Network Security page with the Security Fabric settings opens. All the required 


settings automatically configured.
 4. Click OK to apply the settings, or use the following CLI commands:
config system csf
set status enable
set upstream-ip 10.2.200.1
end

Configuring the Security Fabric with SAML

Security Assertion Markup Language (SAML) is an open standard for exchanging authentication and authorization data 
between one Identity Provider (IdP) and one or more Service Providers (SP). Both parties exchange messages using the 
XML protocol as transport. FortiGate firewall devices can be configured as IdPs or SPs.
When the Security Fabric is enabled, you can configure the root FortiGate as the IdP. You can also configure 
downstream FortiGates to be automatically configured as SPs,  with all links required for SAML communication, when 
added to the Security Fabric. Administrators must still be authorized on each device. Credentials are verified by the root 
FortiGate, and login credentials are shared between devices.  Once authorized, an administrator can move between 
fabric devices without logging in again.
Optionally, the downstream FortiGate can also be manually configured as an SP, and then linked to the root FortiGate.
The authentication service is provided by the root FortiGate using local system admin accounts for authentication. Any of 
the administrator account types can be used for SAML log in. After successful authentication, the administrator logs in to 
the first downstream FortiGate SP, and can then connect to other downstream FortiGates that have the SSO account 
properly configured, without needing to provide credentials again, as long as admins use the same browser session. In 
summary, the root FortiGate IdP performs SAML SSO authentication, and individual device administrators define 
authorization on FortiGate SPs by using security profiles.

Configuring single-sign-on in the Security Fabric

SAML SSO enables a single FortiGate device to act as the identify provider (IdP), while other FortiGate devices act as 
service providers (SP) and redirect logins to the IdP.

FortiOS 6.4.6 Administration Guide 203


Fortinet Technologies Inc.
Fortinet Security Fabric

Only the root FortiGate can be the identity provider (IdP). The downstream FortiGates can be 
configured as service providers (SP).

The process is as follows:
 1. Configuring the root FortiGate as the IdP on page 204
 2. Configuring a downstream FortiGate as an SP on page 204
 3. Configuring certificates for SAML SSO on page 206
 4. Verifying the single-sign-on configuration on page 207
You can also use the CLI. See CLI commands for SAML SSO on page 208.

Configuring the root FortiGate as the IdP

To configure the root FortiGate as the IdP:

 1. Log in to the root FortiGate.
 2. Go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.
 3. Enable SAML Single Sign-On. The Mode field is automatically populated as Identity Provider (IdP).
 4. Enter an IP address in the Management IP/FQDN box. 
 5. Enter a management port in the Management port box. 
The Management IP/FQDN will be used by the SPs to redirect the login request.  The Management IP/FQDN and 
Management port must be reachable from the user's device.
 6. Select the IdP certificate.
 7. Click OK.

Configuring a downstream FortiGate as an SP

There are two ways to configure the downstream FortiGate:

FortiOS 6.4.6 Administration Guide 204


Fortinet Technologies Inc.
Fortinet Security Fabric

 l From the root FortiGate
 l From within the downstream device

An SP must be a member of the Security Fabric before you configure it.

To configure the downstream FortiGate from the root FortiGate:

 1. Log in to the root FortiGate.
 2. Go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.
 3. In the Topology tree, hover over a FortiGate and click Configure.

The Configure pane opens.
 4. Enable SAML Single Sign-On. The Mode field is automatically populated as Service Provider (SP).
 5. Enter an IP address in the Management IP/FQDN box.
 6. Enter a management port in the Management port box. 
The Management IP/FQDN will be used by the IdP and so other SPs can redirect to each other. The Management
port must be reachable from the user's device.
 7. Select a Default login page option.
 8. Select one of the following Default admin profile types: prof_admin, super_admin, or super_admin_readonly. The 
no_access_admin profile is set as the default.
 9. Click OK.

FortiOS 6.4.6 Administration Guide 205


Fortinet Technologies Inc.
Fortinet Security Fabric

To configure the downstream FortiGate within the device:

 1. Log in to the downstream FortiGate.
 2. Go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.
 3. Enable SAML Single Sign-On. The Mode field is automatically populated as Service Provider (SP).
 4. Enter an IP address in the Management IP/FQDN box. 
 5. Enter a management port in the Management port box. 
The Management IP/FQDN will be used by the IdP and so other SPs can redirect to each other. The Management
port must be reachable from the user's device.
 6. Select a Default login page option.
 7. Select one of the following Default admin profile types: prof_admin, super_admin, or super_admin_readonly. The 
no_access_admin profile is set as the default.
 8. Click OK.

Configuring certificates for SAML SSO

Because communication between the root FortiGate IdP and FortiGate SPs is secured, you must select a local server 
certificate  in the IdP certificate option on the root FortiGate. When downstream  SPs join the IdP (root FortiGate), the SP 
automatically obtains the certificate. 
In the following SP example, the IdP certificate displays REMOTE_Cert_2, which is the root server certificate for the  IdP:

It is possible to manually import a certificate from an SP to the IdP so it can be used for authentication.

To manually import an SP certificate to an IdP:

 1. Add the certificate:
 a. On the SP, go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.
 b. Click Advanced Options. The SAML SSO pane opens.
 c. Enable SP certificate and select a certificate from the dropdown box.
 d. Click Download. The certificate is downloaded on the local file system.

FortiOS 6.4.6 Administration Guide 206


Fortinet Technologies Inc.
Fortinet Security Fabric

 e. Click OK. 

 2. Import the certificate:
 a. On the IdP, go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.
 b. Click Advanced Options. The SAML SSO pane opens.
 c. In the Service Providers table, select the SP from step 1 and click Edit.
 d. Enable SP certificate and in the dropdown box, click Import. 

 
The Upload Remote Certificate window opens.
 e. Click Upload and select the certificate downloaded in step 1.
 f. Click OK. The certificate is imported.
 g. Click OK.
 h. In the IdP certificate list, select the certificate that you imported.
 i. Click OK.

Verifying the single-sign-on configuration

After you have logged in to a Security Fabric member using SSO, you can navigate between any Security Fabric 
member with SSO configured.

FortiOS 6.4.6 Administration Guide 207


Fortinet Technologies Inc.
Fortinet Security Fabric

To navigate between Security Fabric members:

 1. Log in to a Security Fabric member that is using SSO.
 2. In the top banner, click the name of the device you are logged in to. A list of Security Fabric members displays.

 3. Click a Security Fabric member. The login page appears.
 4. Select the option to log in via Single-Sign-On.

You are now logged in to the Security Fabric member with SSO. The letters "SSO" also display beside the user 
name in the top banner.
 5. Go to System > Administrators > Single-Sign-On Administrator to view the list of SSO admins created.   

CLI commands for SAML SSO

To enter a question mark (?) or a tab, Ctrl + V must be entered first. Question marks and tabs cannot be typed or copied 
into the CLI Console or some SSH clients.

To configure the IdP:

config system saml


set status enable
set role identity-provider
set cert "Fortinet_Factory"
set server-address "172.16.106.74"
config service-providers
edit "csf_172.16.106.74:12443"
set prefix "csf_ngczjwqxujfsbhgr9ivhehwu37fml20"
set sp-entity-id "http://172.16.106.74/metadata/"
set sp-single-sign-on-url "https://172.16.106.74/saml/?acs"
set sp-single-logout-url "https://172.16.106.74/saml/?sls"
set sp-portal-url "https://172.16.106.74/saml/login/"
config assertion-attributes
edit "username"
next
edit "[email protected]"
set type email
next
end

FortiOS 6.4.6 Administration Guide 208


Fortinet Technologies Inc.
Fortinet Security Fabric

next
end
end

To configure an SP:

config system saml


set status enable
set cert "Fortinet_Factory"
set idp-entity-id "http://172.16.106.74/saml-idp/csf_
ngczjwqxujfsbhgr9ivhehwu37fml20/metadata/"
set idp-single-sign-on-url "https://172.16.106.74/csf_
ngczjwqxujfsbhgr9ivhehwu37fml20/login/"
set idp-single-logout-url "https://172.16.106.74/saml-idp/csf_
ngczjwqxujfsbhgr9ivhehwu37fml20/logout/"
set idp-cert "REMOTE_Cert_1"
set server-address "172.16.106.74:12443"
end

To configure an SSO administrator:

config system sso-admin


edit "SSO-admin-name"
set accprofile <SSO admin user access profile>
set vdom <Virtual domain(s) that the administrator can access>
next
end

SAML SSO with pre-authorized FortiGates

You can set up SAML SSO authentication in a Security Fabric environment by starting with a root FortiGate that has one 
or more pre-authorized FortiGates.
After the initial configuration, you can add more downstream FortiGates to the Security Fabric, and they are 
automatically configured with default values for a service provider.

To set up basic SAML SSO for the Security Fabric:

 1. Log in to the root FortiGate of the Security Fabric.
 2. Go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.
 3. Join two pre-authorized FortiGates to the root FortiGate.

 4. Configure the IdP (see Configuring the root FortiGate as the IdP on page 204).
 5. Configure the SPs (see Configuring a downstream FortiGate as an SP on page 204).

FortiOS 6.4.6 Administration Guide 209


Fortinet Technologies Inc.
Fortinet Security Fabric

Navigating between Security Fabric members with SSO

After you have logged in to a Security Fabric member by using SSO, you can navigate between any Security Fabric 
member with SSO configured. This can be done using the Security Fabric members dropdown menu or by logging in to a 
FortiGate SP from the root FortiGate IdP.

Security Fabric members dropdown

The Security Fabric members dropdown menu allows you to easily switch between all FortiGate devices that are 
connected to the Security Fabric. You can also use this menu to customize a FortiGate in the Security Fabric.

To navigate between Security Fabric members:

 1. Log in to a Security Fabric member by using SSO.
 2. In the top banner, click the name of the device you are logged into with SSO.
A list of Security Fabric members is displayed.

 3. Click the Security Fabric member.
You are logged in to the Security Fabric member without further authentication.

To customize a FortiGate in the Security Fabric:

 1. In the Security Fabric members dropdown menu, hover the cursor over a FortiGate so the tooltip is shown.
 2. Click Configure. The Configure pane opens.

 3. Edit the settings as required.
 4. Click OK.

Logging in to an SP from the root IdP

The following example describes how to log in to a root FortiGate IdP, and  navigate to other  FortiGate SPs in the 
Security Fabric without further authentication. The local administrator account is named test3. The local administrator 
account must also be available as an SSO administrator account on all downstream FortiGate SPs. Different tabs of the 
same browser are used to log in to the various FortiGates.

FortiOS 6.4.6 Administration Guide 210


Fortinet Technologies Inc.
Fortinet Security Fabric

To log in to a FortiGate SP from a root FortiGate IdP:

 1. Log in to the root FortiGate IdP by using the local administrator account.
In this example, the local administrator account is named test3.
 2. Go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.
 3. In the Topology tree, click one of the downstream FortiGate SPs, and select Login to <name of FortiGate>.

The login screen is displayed.
 4. In the login screen, select Single Sign-On.
By using cookies in your local browser for the already-authenticated  SSO administrator, FortiGate logs you in to the 
downstream FortiGate SP as the SSO administrator. In this example, the SSO administrator name is test3.

 5. While still logged into the root FortiGate IdP in  your browser, go to the browser tab for the root FortiGate IdP, and log 
in to another FortiGate SP that is displayed on the Security Fabric pane in the GUI.

FortiOS 6.4.6 Administration Guide 211


Fortinet Technologies Inc.
Fortinet Security Fabric

SAML SSO login uses  SAML_IDP session  cookies of already authenticated admin users  in your local browser 
cache to send to the root FortiGate IdP for authentication. If your browser cache is manually cleared, or you close 
your browser, you must authenticate again.

It is possible to log in to one downstream FortiGate SP in a Security Fabric, and then open 
another tab in your browser to connect to another FortiGate SP that is not a member of the 
Security Fabric.
This is useful in cases where the SSO administrator  and the local system administrator on the 
FortiGate SP both have the same login name, but are two different entities.

Integrating FortiAnalyzer management using SAML SSO

When a FortiGate is configured as the SAML SSO IdP, FortiAnalyzer can register itself as the SP (FortiAnalyzer must be 
running version 6.4.0). Once registered, FortiAnalyzer will be added automatically to the Security Fabric navigation in 
FortiOS. A similar dropdown navigation is displayed in FortiAnalyzer where users can navigate to the FortiGate using 
SAML SSO.
The following example assumes the root FortiGate (FGTA-1, server address 172.17.48.225:4431) has been configured 
as the SAML SSO IdP, and FortiAnalyzer logging has been enabled in the Security Fabric settings.

FortiOS 6.4.6 Administration Guide 212


Fortinet Technologies Inc.
Fortinet Security Fabric

To enable FortiAnalyzer as a Fabric SP in the GUI:

 1. In FortiAnalyzer, go to System Settings > Admin > SAML SSO.


 2. For Single Sign-On Mode, click Fabric SP and enter the SP Address.

 3. Click Apply. 
FortiAnalyzer will automatically register itself on the FortiGate as an appliance visible in the list of SPs. Go to 
Security Fabric > Fabric Connectors, edit the Security Fabric Setup connector, then click Advanced Options to view 
the list of SPs.

To enable FortiAnalyzer as a Fabric SP in the CLI:

 1. In FortiAnalyzer, enable the device as a Fabric SP:
config system saml
set status enable
set role FAB-SP
set server-address "172.17.48.225:4253"
end

FortiAnalyzer will register itself on the FortiGate as an appliance. To view the configuration in FortiOS:
show system saml
config service-providers
edit "appliance_172.17.48.225:4253"
set prefix "csf_p0m9dvltwt28r3gt87runs2nb929mwz"
set sp-entity-id "http://172.17.48.225:4253/metadata/"
set sp-single-sign-on-url "https://172.17.48.225:4253/saml/?acs"
set sp-single-logout-url "https://172.17.48.225:4253/saml/?sls"
set sp-portal-url "https://172.17.48.225:4253/saml/login/"

FortiOS 6.4.6 Administration Guide 213


Fortinet Technologies Inc.
Fortinet Security Fabric

config assertion-attributes
edit "username"
next
edit "profilename"
set type profile-name
next
end
next
end

To navigate between devices using SAML SSO:

 1. Log in to the root FortiGate.
 2. In the toolbar, click the device name to display the Security Fabric members dropdown. 
 3. Hover over the FortiAnalyzer and click Login.

 4. Log in to the FortiAnalyzer using SAML SSO.
 5. In the toolbar, click the Security Fabric members dropdown to navigate between other FortiGates.

FortiOS 6.4.6 Administration Guide 214


Fortinet Technologies Inc.
Fortinet Security Fabric

Integrating FortiManager management using SAML SSO

When a FortiGate is configured as the SAML SSO IdP, FortiManager can be added as an SP.

To configure FortiManager as a Fabric SP:

 1. On the root FortiGate, go to Security Fabric > Fabric Connectors, and edit the Security Fabric Setup connector.


 2. In the Security Fabric Settings section, click Advanced Options.
 3. In the Service Providers section, click Create New.
 4. Enter a name and a prefix for the SP. FortiOS generates a unique prefix, but you can enter your own.
 5. In SP address, enter the FortiManager address including the port number.

 6. Click OK.
 7. In FortiManager, go to System Settings > Admin > SAML SSO and in the Single Sign-On Mode section, click 
Service Provider (SP).
 8. Configure the IdP Settings:
 a. For IdP Type, click Fortinet.
 b. For IdP Address, enter the root FortiGate address including the port number.
 c. Enter the Prefix of the SP.
 d. For IdP Certificate, import the same certificate used on the root FortiGate.

FortiOS 6.4.6 Administration Guide 215


Fortinet Technologies Inc.
Fortinet Security Fabric

 e. Click Apply.

 9. To verify that the configuration works, log out of FortiManager and log in using the Login via Single-Sign-On link.

Advanced option - FortiGate SP changes

From a root FortiGate IdP, you can edit each of the  FortiGate SPs. For example, you can edit a FortiGate SP to generate 
a new prefix, or you can add or modify  SAML attributes. When you generate a new prefix value, it is propagated to the 
respective downstream FortiGates.

To edit an SP from the root FortiGate (IdP):

 1. Go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.


 2. Click Advanced Options. The SAML SSO pane opens.
 3. In the Service Providers table, select a device, and click Edit. The Edit Service Provider pane opens.
 4. Edit the settings as needed.
 5. Click OK.

FortiOS 6.4.6 Administration Guide 216


Fortinet Technologies Inc.
Fortinet Security Fabric

Advanced option - unique SAML attribute types

The default SAML attribute type is username. When the attribute type is set to username, SSO administrator accounts 
created on FortiGate SPs use the login username that is provided by the user for authentication on the root FortiGate 
IdP.
Because user names might not be unique, cases can occur where the user name is the same for the SSO administrator 
and the local administrator on the FortiGate SP. As a result, you might be unable to distinguish between actions taken by 
the local administrator and the SSO administrator on the FortiGate SP when looking at the system log. By using a unique 
SAML attribute type, such as an email address, you can create unique user names to better track what actions were 
taken by each administrator. 

To configure a unique SAML attribute using the GUI:

 1. On the root FortiGate (IdP), assign a unique email address to  local administrator. 
In this example, the local administrator name is test3.
 a. Go to System > Administrators, and expand the list of local users.
 b. Select the local user, and click Edit.
 c. In the Type field, select Match a user on a remote server group.
 d. In the Remote User Group field, select a group.
 e. In the Email Address field, enter the email address. 
 f. Click OK.

FortiOS 6.4.6 Administration Guide 217


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. On the root FortiGate (IdP), update the SAML configuration:   
 a. Go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.
 b. Click Advanced Options. The SAML SSO pane opens.
 c. In the Service Providers table, select the FortiGate, and click Edit. The Edit Service Provider pane opens.
 d. For SP type, select Custom.
 e. In the SAML Attribute section for Type, select Email address.
 f. Beside Type, select Email address.
 g. Click OK.

 
After the administrator (test3) logs in to the FortiGate SP for the first time, SAML authentication occurs on FortiGate SP. 
A new SSO administrator account is created, and the account name is now the email address instead of the login name 
(test3).

FortiOS 6.4.6 Administration Guide 218


Fortinet Technologies Inc.
Fortinet Security Fabric

To view the new SSO administrator account:

 1. In the SP, go to System > Administrators, and expand the list of SSO administrators.


The email address ([email protected]) is listed as the account name:

If the SAML attribute had been set to the default setting of username, the user name for the SSO administrator 
account would have been (test3). 

To view the SSO administrator activity in the log files:

 1. In the SP, go to Log & Report > Events.   


Because the SAML attribute is set to Custom,  the SSO administrator account [email protected] is used as the 
user name on the FortiGate SP,  and it appears in the log files:

To configure a unique SAML attribute using the CLI:

config system saml


set status enable
set role identity-provider
set cert "fgt_g_san_extern_new"
set server-address "172.18.60.187"
config service-providers
edit "csf_172.18.60.185"
set prefix "csf_avju0tk4oiodifz3kbh2fms8dw688hn"
set sp-entity-id "http://172.18.60.185/metadata/"
set sp-single-sign-on-url "https://172.18.60.185/saml/?acs"
set sp-single-logout-url "https://172.18.60.185/saml/?sls"
set sp-portal-url "https://172.18.60.185/saml/login/"
config assertion-attributes
edit "username"
next
end
next
edit "FGTA-180"
set prefix "yxs8uhq47b5b2urq"
set sp-entity-id "http://172.18.60.180/metadata/"

FortiOS 6.4.6 Administration Guide 219


Fortinet Technologies Inc.
Fortinet Security Fabric

set sp-single-sign-on-url "https://172.18.60.180/saml/?acs"


set sp-single-logout-url "https://172.18.60.180/saml/?sls"
set sp-portal-url "https://172.18.60.180/saml/login/"
config assertion-attributes
edit "username"
next
end
next
edit "FGTA-184"
set prefix "3dktfo0gbxtldbts"
set sp-entity-id "http://172.18.60.184/metadata/"
set sp-single-sign-on-url "https://172.18.60.184/saml/?acs"
set sp-single-logout-url "https://172.18.60.184/saml/?sls"
set sp-portal-url "https://172.18.60.184/saml/login/"
config assertion-attributes
edit "username"
set type email
next
end
next
end
end

The  csf_172.18.60.185 service provider  was automatically added  when the FortiGate SP 172.18.60.185 joined the 
root FortiGate IdP in the Security Fabric.
All sp-* options, such as sp-portal-url,  are set with default values when a service provider is created, but can be 
modified using the CLI or GUI.

Security rating

The security rating uses real-time monitoring to analyze your Security Fabric deployment, identify potential 
vulnerabilities, highlight best practices that can be used to improve the security and performance of your network, and 
calculate Security Fabric scores.
To view the security rating, go to Security Fabric > Security Rating on the root FortiGate. 
The Security Rating page is separated into three major scorecards: Security Posture, Fabric Coverage, and 
Optimization, which provide an executive summary of the three largest areas of security focus in the Security Fabric. 

FortiOS 6.4.6 Administration Guide 220


Fortinet Technologies Inc.
Fortinet Security Fabric

The scorecards show an overall letter grade and breakdown of the performance in sub-categories. Clicking a scorecard 
drills down to a detailed report of itemized results and compliance recommendations. The point score represents the net 
score for all passed and failed items in that area. In the drill down report, hover the cursor over a score to view the 
calculation breakdown. 
The report includes the security controls that were tested against, linking to specific FSBP or PCI compliance policies. 
Click the FSBP and PCI buttons to reference the corresponding standard. Users can search or filter the report results. 

Certain remediations marked with an EZ symbol represent configuration recommendations that support Easy Apply. In 
the panel on the right, in the Recommendations section, click Apply to apply the changes to resolve the failed security 
control.

The report table can be customized by adding more columns, such as Category, to view, filter, or sort the results based 
on scorecard categories. Click the gear icon to customize the table. 

FortiOS 6.4.6 Administration Guide 221


Fortinet Technologies Inc.
Fortinet Security Fabric

Users can also export the reports as CSV or JSON files by clicking the Export dropdown.

To exit the current view, click the icon beside the scorecard title to return to the summary view.

For more information about security ratings, and details about each of the checks that are performed, go to Security Best 
Practices & Security Rating Feature.

Security rating licenses are required to run security rating checks across all the devices in the 
Security Fabric. It also allows ratings scores to be submitted to and received from FortiGuard 
for ranking networks by percentile.
See https://www.fortinet.com/support/support-services/fortiguard-security-
subscriptions/security-rating.html for information.

Security rating check scheduling

Security rating checks by default are scheduled to run automatically every four hours.

To disable automatic security checks using the CLI:

config system global


security-rating-run-on-schedule disable
end

To manually run a report using the CLI:

# diagnose report-runner trigger

Opt out of ranking

Security rating scores can be submitted to FortiGuard for comparison with other organizations' scores, allowing a 
percentile score to be calculated. If you opt out of submitting your score, only an absolute score will be available.

FortiOS 6.4.6 Administration Guide 222


Fortinet Technologies Inc.
Fortinet Security Fabric

To opt out of submitting the score using the CLI:

config system global


set security-rating-result-submission {enable | disable}
end

Logging the security rating

The results of past security checks is available in Log & Report > Events by selecting Security Rating Events from the 


event type dropdown list.

An event filter subtype can be created for the Security Fabric rating so that event logs are created on the root FortiGate 
that summarize the results of a check, and show detailed information for the individual tests.

To configure security rating logging using the CLI:

config log eventfilter


set security-rating enable
end

Multi VDOM mode

In multi VDOM mode, security rating reports can be generated in the Global VDOM for all of the VDOMs on the device. 
Administrators with read/write access can run the security rating report in the Global VDOM. Administrators with read-
only access can only view the report.
On the report scorecards, the Scope column shows the VDOM or VDOMs that the check was run on. On checks that 
support Easy Apply, the remediation can be run on all of the associated VDOMs.

FortiOS 6.4.6 Administration Guide 223


Fortinet Technologies Inc.
Fortinet Security Fabric

The security rating event log is available on the root VDOM.

Security Fabric score

The Security Fabric score is calculated when a security rating check is run, based on the severity level of the checks that 
are passed or failed. A higher scores represents a more secure network. Points are added for passed checks and 
removed for failed checks.

Severity level Weight (points)

Critical 50

High 25

Medium  10

Low 5

To calculate the number of points awarded to a device for a passed check, the following equation is used:

<severity level weight>
score =   × <secure FortiGate multiplier>
<# of FortiGates>

The secure FortiGate multiplier is determined using logarithms and the number of FortiGate devices in the Security 
Fabric.
For example, if there are four FortiGate devices in the Security Fabric that all pass the compatible firmware check, the 
score for each FortiGate device is calculated with the following equation:

50
 × 1.292 = 16.15 points
4

All of the FortiGate devices in the Security Fabric must pass the check in order to receive the points. If any one of the 
FortiGate devices fails a check, the devices that passed are not awarded any points. For the device that failed the check, 
the following equation is used to calculated the number of points that are lost:

FortiOS 6.4.6 Administration Guide 224


Fortinet Technologies Inc.
Fortinet Security Fabric

score =  <severity level weight>  x <secure FortiGate multiplier>

For example, if the check finds two critical FortiClient vulnerabilities, the score is calculated with the following equation:

-50  × 2  = -100 points

Scores are not affected by checks that do not apply to your network. For example, if there are no FortiAP devices in the 
Security Fabric, no points will be added or subtracted for the FortiAP firmware version check.

Automation stitches

Automation stitches automate the activities between the different components in the Security Fabric, decreasing the 
response times to security events. Events from any source in the Security Fabric can be monitored, and action 
responses can be set up to any destination. 

Automation stitches can also be used on FortiGate devices that are not part of a Security 
Fabric.

Automation stitches that use cloud-based actions, such as AWS Lambda and Azure Function, have the option to delay 
an action after the previous action is completed.
An automation stitch consists of two parts, the trigger and the actions.  The trigger is the condition or event on the 
FortiGate that activates the action, for example, a specific log, or a failed log in attempt. The action is what the FortiGate 
does in response to the trigger.
Diagnose commands are available in the CLI to test, log, and display the history and settings of stitches.

Automation stitches can only be created on the root FortiGate in a Security Fabric.

Creating automation stitches

To create an automation stitch, a trigger event and a response action or actions are selected. Automation stitches can be 
tested after they are created.

FortiOS 6.4.6 Administration Guide 225


Fortinet Technologies Inc.
Fortinet Security Fabric

To create an automation stitch in the GUI:

 1. On the root FortiGate, go to Security Fabric > Automation.


 2. Click Create New. The New Automation Stitch page opens.

 3. Enter the following information:

Name Enter a name for the automation stitch.

Status Enable/disable the stitch.

FortiGate Select the FortiGate device to apply the automation stitch to, or select All
FortiGates to apply it to all of them.

Trigger Select a trigger.

Action Select and configure one or more actions.

Minimum interval (seconds) Enter a minimum time interval during which notifications for the same trigger 


event will not be sent.
After the time interval elapses, an alert is sent that includes the last event since 
the time interval elapsed. 

 4. Click OK.

To create an automation stitch in the CLI:

 1. Create an automation trigger:
config system automation-trigger
edit <automation-trigger-name>
set trigger-type {event-based | scheduled}
set event-type <option>
set license-type <option>
set ioc-level {medium | high}
set logid <integer>
set trigger-frequency {hourly | daily | weekly | monthly}
set trigger-weekday <option>
set trigger-day <integer>
set trigger-hour <integer>
set trigger-minute <integer>
set faz-event-severity <string>

FortiOS 6.4.6 Administration Guide 226


Fortinet Technologies Inc.
Fortinet Security Fabric

set faz-event-tags <string>


next
end

The available options will vary depending on the selected event type.
 2. Create an automation action:
config system automation-action
edit <name>
set action-type <option>
set email-to <names>
set email-from <string>
set email-subject <string>
set message <string>
set minimum-interval <integer>
set delay <integer>
set required {enable | disable}
set aws-api-id <string>
set aws-region <string>
set aws-domain <string>
set aws-api-stage <string>
set aws-api-path <string>
set aws-api-key <string>
set azure-app <string>
set azure-function <string>
set azure-domain <string>
set azure-function-authorization {anonymous | function | admin}
set azure-api-key <string>
set gcp-function-region <string>
set gcp-project <string>
set gcp-function-domain <string>
set gcp-function <string>
set alicloud-account-id <string>
set alicloud-region <string>
set alicloud-function-domain <string>
set alicloud-version <string>
set alicloud-service <string>
set alicloud-function <string>
set alicloud-function-authorization {anonymous | function}
set alicloud-access-key-id <string>
set alicloud-access-key-secret <string>
set protocol {http | https}
set method {post | put | get | patch | delete}
set uri <string>
set http-body <string>
set port <integer>
set headers <header>
set script <string>
set security-tag <string>
set sdn-connector <connector_name>
next
end

Enter edit 0 to get the next available ID.

FortiOS 6.4.6 Administration Guide 227


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. Create an automation destination:
config system automation-destination
edit <name>
set type {fortigate | ha-cluster}
set destination <serial numbers>
set ha-group-id <integer>
next
end

 4. Create the automation stitch:
config system automation-stitch
edit <automation-stitch-name>
set status {enable | disable}
set trigger <trigger-name>
set action <action-name>
set destination <serial-number>
next
end

To test an automation stitch:

In the GUI, go to Security Fabric > Automation, right-click on the automation stitch and select Test Automation Stitch.


In the CLI, enter the following command:
diagnose automation test <stitch-name> <log>

Default automation stitches

The Automation menu contains eight webhook automation stitches, including an Incoming Webhook Quarantine trigger 


for API calls to the FortiGate, as well as a predefined  License Expired Notification that replaces the existing license 
expiry alerts. 
The automation stitches are available in new FortiGate installations and after upgrading from previous versions.
The following default stitches are included in the Automation menu:
 l Compromised Host Quarantine
 l Incoming Webhook quarantine
 l HA Failover
 l Network Down
 l Reboot
 l FortiAnalyzer Connection Down
 l License Expired Notification
 l Security rating Notification
To view the CLI configurations for the new automation stitches, see CLI configuration on page 232. To view the 
automation stitches in the GUI, go to Security Fabric > Automation.

FortiOS 6.4.6 Administration Guide 228


Fortinet Technologies Inc.
Fortinet Security Fabric

Triggering a stitch example

To trigger an Incoming Webhook Quarantine stitch in the GUI:

 1. Create new API user:
 a. Go to System > Administrators.
 b. Click Create New > REST API Admin.
 c. Configure the New REST API Admin settings, and record the API key.

 2. Get the sample cURL request:
 a. Go to Security Fabric > Automation.
 b. Under Incoming Webhook, right-click Incoming Webhook Quarantine, and select Edit.
 c. Click Enabled, to enable the rule.
 d. In the API admin key field, enter the API key you recorded in the previous step. A Sample cURL request is 
created.
 e. Copy the Sample cURL request.

FortiOS 6.4.6 Administration Guide 229


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. Execute the request:
 a. Edit the sample cURL you recorded in the previous step.
 b. Add parameters to the data field ("mac" and "fctuid"), and then execute the request. 
root@pc:~# curl -k -X POST -H 'Authorization: Bearer
cfgtct1mmx3fQxr4khb994p7swdfmk' --data '{ "mac":"0c:0a:00:0c:ce:b0", "fctuid":
"0000BB0B0ABD0D00B0D0A0B0E0F0B00B"}'
https://172.16.116.226/api/v2/monitor/system/automation-
stitch/webhook/Incoming%20Webhook%20Quarantine
{
"http_method":"POST",
"status":"success",
"http_status":200,
"serial":"FGT00E0Q00000000",
"version":"v6.4.0",
"build":1545

Encode spaces in the automation-stitch name  with %20. For example, 
Incoming%20Webhook%20Quarantine

The automation rule Incoming Webhook Quarantine is triggered. The MAC address is quarantined in FortiGate and 


an event log is created. The FortiClient UUID is quarantined by EMS on the server side.

FortiOS 6.4.6 Administration Guide 230


Fortinet Technologies Inc.
Fortinet Security Fabric

To trigger an Incoming Webhook Quarantine stitch in the CLI:

 1. Create new API user and record the API key:
config system api-user
edit "api"
set api-key ENC SH00vqP0GKWKyZNz0FP0/jq00O0Ka/DHVEKdxUi+0kRDNKPpZppnnMk0KeunBI=
set accprofile "api_profile"
set vdom "root"
config trusthost
edit 1
set ipv4-trusthost 10.6.30.0 200.200.200.0
next
end
next
end
 2. Configure the automation stitch:
config system automation-stitch
edit "Incoming Webhook Quarantine"
set status enable
set trigger "Incoming Webhook Quarantine"
set action "Compromised Host Quarantine_quarantine" "Compromised Host Quarantine_
quarantine-forticlient"
next
end
 3. Add parameters in the data field ("mac" and "fctuid"), then execute the request on a device:
root@pc56:~# curl -k -X POST -H 'Authorization: Bearer
cfgtct1mmx0fQxr4khb000p70wdfmk' --data '{ "mac":"0c:0a:00:0c:ce:b0", "fctuid":
"3000BB0B0ABD0D00B0D0A0B0E0F0B00B"}'
https://100.10.100.200/api/v2/monitor/system/automation-
stitch/webhook/Incoming%20Webhook%20Quarantine
{
"http_method":"POST",
"status":"success",
"http_status":200,
"serial":"FGT80E0Q00000000",
"version":"v6.4.0",

FortiOS 6.4.6 Administration Guide 231


Fortinet Technologies Inc.
Fortinet Security Fabric

"build":1545

Encode spaces in the automation-stitch name  with %20. For example, 
Incoming%20Webhook%20Quarantine

The automation rule Incoming Webhook Quarantine is triggered. The MAC address is quarantined in FortiGate, and 


an event log is created. The FortiClient UUID will be quarantined on the EMS server side.
config user quarantine
config targets
edit "0c:0a:00:0c:ce:b0"
config macs
edit 0c:0a:00:0c:ce:b0
set description "Quarantined by automation stitch: Incoming Webhook
Quarantine"
next
end
next
end
end
date=2020-02-14 time=15:37:48 logid="0100046600" type="event" subtype="system"
level="notice" vd="root" eventtime=1581723468644200712 tz="-0800"
logdesc="Automation stitch triggered" stitch="Incoming Webhook Quarantine"
trigger="Incoming Webhook Quarantine" stitchaction="Compromised Host Quarantine_
quarantine,Compromised Host Quarantine_quarantine-forticlient" from="log"
msg="stitch:Incoming Webhook Quarantine is triggered."

CLI configuration

Compromised host

config system automation-action


edit "Compromised Host Quarantine_quarantine"
set action-type quarantine
set minimum-interval 0
set delay 0
set required disable
next
edit "Compromised Host Quarantine_quarantine-forticlient"
set action-type quarantine-forticlient
set minimum-interval 0
set delay 0
set required disable
next
end
config system automation-trigger
edit "Compromised Host Quarantine"
set trigger-type event-based
set event-type ioc
set ioc-level high
next
end
config system automation-stitch
edit "Compromised Host Quarantine"
set status disable
set trigger "Compromised Host Quarantine"

FortiOS 6.4.6 Administration Guide 232


Fortinet Technologies Inc.
Fortinet Security Fabric

set action "Compromised Host Quarantine_quarantine" "Compromised Host Quarantine_


quarantine-forticlient"
next
end

FortiAnalyzer connection down

config system automation-action


edit "FortiAnalyzer Connection Down_ios-notification"
set action-type ios-notification
set minimum-interval 0
set delay 0
set required disable
next
end
config system automation-trigger
edit "FortiAnalyzer Connection Down"
set trigger-type event-based
set event-type event-log
set logid 22902
next
end
config system automation-stitch
edit "FortiAnalyzer Connection Down"
set status enable
set trigger "FortiAnalyzer Connection Down"
set action "FortiAnalyzer Connection Down_ios-notification"
next
end

Network down

config system automation-action


edit "Network Down_email"
set action-type email
set email-from ''
set email-subject "Network Down"
set minimum-interval 0
set delay 0
set required disable
set message "%%log%%"
next
end
config system automation-trigger
edit "Network Down"
set trigger-type event-based
set event-type event-log
set logid 20099
config fields
edit 1
set name "status"
set value "DOWN"
next
end
next
end
config system automation-stitch

FortiOS 6.4.6 Administration Guide 233


Fortinet Technologies Inc.
Fortinet Security Fabric

edit "Network Down"


set status disable
set trigger "Network Down"
set action "Network Down_email"
next
end

HA failover

config system automation-action


edit "HA Failover_email"
set action-type email
set email-from ''
set email-subject "HA Failover"
set minimum-interval 0
set delay 0
set required disable
set message "%%log%%"
next
end
config system automation-trigger
edit "HA Failover"
set trigger-type event-based
set event-type ha-failover
next
end
config system automation-stitch
edit "HA Failover"
set status disable
set trigger "HA Failover"
set action "HA Failover_email"
next
end

Incoming Webhook Quarantine

config system automation-action


edit "Compromised Host Quarantine_quarantine"
set action-type quarantine
set minimum-interval 0
set delay 0
set required disable
next
edit "Compromised Host Quarantine_quarantine-forticlient"
set action-type quarantine-forticlient
set minimum-interval 0
set delay 0
set required disable
next
end
config system automation-trigger
edit "Incoming Webhook Call"
set trigger-type event-based
set event-type incoming-webhook
next
end
config system automation-stitch

FortiOS 6.4.6 Administration Guide 234


Fortinet Technologies Inc.
Fortinet Security Fabric

edit "Incoming Webhook Quarantine"


set status disable
set trigger "Incoming Webhook Call"
set action "Compromised Host Quarantine_quarantine" "Compromised Host Quarantine_
quarantine-forticlient"
next
end

License expired

config system automation-action


edit "License Expired Notification_ios-notification"
set action-type ios-notification
set minimum-interval 0
set delay 0
set required disable
next
end
config system automation-trigger
edit "License Expired Notification"
set trigger-type event-based
set event-type license-near-expiry
set license-type any
next
end
config system automation-stitch
edit "License Expired Notification"
set status enable
set trigger "License Expired Notification"
set action "License Expired Notification_ios-notification"
next
end

Reboot

config system automation-action


edit "Reboot_email"
set action-type email
set email-from ''
set email-subject "Reboot"
set minimum-interval 0
set delay 0
set required disable
set message "%%log%%"
next
end
config system automation-trigger
edit "Reboot"
set trigger-type event-based
set event-type reboot
next
end
config system automation-stitch
edit "Reboot"
set status disable
set trigger "Reboot"
set action "Reboot_email"

FortiOS 6.4.6 Administration Guide 235


Fortinet Technologies Inc.
Fortinet Security Fabric

next
end

Security rating

config system automation-action


edit "Security Rating Notification_ios-notification"
set action-type ios-notification
set minimum-interval 0
set delay 0
set required disable
next
end
config system automation-trigger
edit "Security Rating Notification"
set trigger-type event-based
set event-type security-rating-summary
set report-type PostureReport
next
end
config system automation-stitch
edit "Security Rating Notification"
set status enable
set trigger "Security Rating Notification"
set action "Security Rating Notification_ios-notification"
next
end

Chaining and delaying actions

Automation stitches that use cloud-based or webhook actions have the option to delay an action after the previous action 
is completed. The execution of the actions can be delayed by up to 3600 seconds (one hour).
To configure this option in the GUI, select a cloud-based action, then enter the required value, in seconds, in the action 
configuration's Delay field.
To configure a delay in the CLI, use the following command:
config system automation-action
edit <name>
set action-type {aws-lambda | azure-function | google-cloud-function | alicloud-
function | webhook}
set required {enable | disable}
set delay <seconds>
next
end

Triggers

The following table outlines the available automation stitch triggers:

FortiOS 6.4.6 Administration Guide 236


Fortinet Technologies Inc.
Fortinet Security Fabric

Trigger Description

Compromised Host An Indicator of Compromise (IoC) is detected on a host endpoint.


The threat level must be selected and can be Medium or High. If Medium is 
selected, both medium and high level threats are included.
Note: Additional actions are available only for Compromised Host triggers:
 l Access Layer Quarantine
 l Quarantine FortiClient via EMS
 l Assign VMware NSX Security Tag
 l IP Ban

Security Rating Summary A summary is available for a recently run Security Rating.

Configuration Change A FortiGate configuration change has occurred.

Reboot A FortiGate is rebooting.

Low memory This option is only available in the CLI.


Conserve mode due to low memory. See Execute a CLI script based on CPU and 
memory thresholds on page 276 for an example.

High CPU This option is only available in the CLI.


High CPU usage. See Execute a CLI script based on CPU and memory 
thresholds on page 276 for an example.

License Expiry A FortiGuard license is expiring.


The license type must be selected. Options include:
 l FortiCare Support
 l FortiGuard Web Filter
 l FortiGuard AntiSpam
 l FortiGuard AntiVirus
 l FortiGuard IPS
 l FortiGuard Management Service
 l FortiGate Cloud

HA Failover An HA failover is occurring.

AV & IPS DB Update The antivirus and IPS database is updating.

FortiOS Event Log The specified FortiOS log has occurred.


The event must be selected from the event list.

FortiAnalyzer Event Handler The specified FortiAnalyzer event handler has occurred. See FortiAnalyzer event 


handler trigger on page 238 for details.

Schedule A scheduled monthly, weekly, daily, or hourly trigger. Set to occur on a specific 
minute of an specific hour on a specific day.

FortiGate Cloud-Based IOC IOC detection from the FortiGate Cloud IOC service.


This option requires an IOC license, a web filter license, and FortiCloud logging 
must be enabled. 

FortiOS 6.4.6 Administration Guide 237


Fortinet Technologies Inc.
Fortinet Security Fabric

FortiAnalyzer event handler trigger

You can trigger automation stitches based on FortiAnalyzer event handlers. This allows you to define rules based on 
complex correlations across devices, log types, frequencies, and other criteria.
To set up a FortiAnalyzer event handler trigger:
 1. Configure a FortiGate event handler on the FortiAnalyzer
 2. Configure FortiAnalyzer logging on the FortiGate on page 238
 3. Configure an automation stitch that is triggered by a FortiAnalyzer event handler on page 239

Configure a FortiGate event handler on the FortiAnalyzer

On the FortiAnalyzer, configure an event handler for the automation stitch. In this example, the event handler is triggered 
when an administrator logs in to the FortiGate.

To configure an event handler on the FortiAnalyzer:

 1. Go to Incidents & Events > Handlers > FortiGate Event Handlers.
 2. Configure an event handler for the automation stitch.

 3. Click OK.

Configure FortiAnalyzer logging on the FortiGate

See Configuring FortiAnalyzer on page 137 for more information.

To configure FortiAnalyzer logging in the GUI:

 1. Go to Security Fabric > Fabric Connectors and double-click the FortiAnalyzer Logging card.


 2. Click Enabled and configure the settings as needed.
 3. Click OK.

FortiOS 6.4.6 Administration Guide 238


Fortinet Technologies Inc.
Fortinet Security Fabric

To configure FortiAnalyzer logging in the CLI:

config log fortianalyzer setting


set status enable
set server "10.6.30.250"
set serial "FL-4HET318900407"
set upload-option realtime
set reliable enable
end

Configure an automation stitch that is triggered by a FortiAnalyzer event handler

When a FortiAnalyzer event handler is triggered, it sends a notification to the FortiGate automation framework, which 
generates a log and triggers the automation stitch.

To configure an automation stitch that is triggered by a FortiAnalyzer event handler in the GUI:

 1. Go to Security Fabric > Automation.


 2. Click Create New.
 3. In the Trigger section, select FortiAnalyzer Event Handler.
 4. Set Event handler name to the event that was created on the FortiAnalyzer.
 5. Set the Event severity, and select or create an Event tag.

 6. In the Action section, select Email and configure the email recipient and message.
 7. Click OK.

To configure an automation stitch that is triggered by a FortiAnalyzer event handler in the CLI:

 1. Create an automation action:
config system automation-action
edit "auto-faz-1_email"
set action-type email
set email-to "[email protected]"
set email-subject "CSF stitch alert"
set message "User login FortiGate successfully."

FortiOS 6.4.6 Administration Guide 239


Fortinet Technologies Inc.
Fortinet Security Fabric

next
end

 2. Create an automation trigger:
config system automation-trigger
edit "auto-faz-1"
set event-type faz-event
set faz-event-name "system-log-handler2"
set faz-event-severity "medium"
set faz-event-tags "User login successfully"
next
end

 3. Create the automation stitch:
config system automation-stitch
edit "auto-faz-1"
set trigger "auto-faz-1"
set action "auto-faz-1_email"
next
end

View the trigger event log

To see the trigger event log in the GUI:

 1. Log in to the FortiGate.
The FortiAnalyzer sends notification to the FortiGate automation framework, generates an event log on the 
FortiGate, and triggers the automation stitch.
 2. Go to Log & Report > Events and select System Events.

To see event logs in the CLI:

execute log display


...
date=2019-02-05 time=14:16:17 logid="0100046600" type="event" subtype="system"
level="notice" vd="root" eventtime=1549404977 logdesc="Automation stitch triggered"
stitch="auto-faz-1" trigger="auto-faz-1" from="log" msg="stitch:auto-faz-1 is triggered."
...

FortiOS 6.4.6 Administration Guide 240


Fortinet Technologies Inc.
Fortinet Security Fabric

Sample email

The email sent by the action will look similar to the following:

Actions

The following table outlines the available automation stitch actions. Multiple actions can be added and reorganized as 
needed by dragging and dropping.

Action Description

Alert Generate a FortiOS dashboard alert.
This option is only available in the CLI.

CLI Script Run one or more CLI scripts. See CLI script action on page 242 for details. See 


Execute a CLI script based on CPU and memory thresholds on page 276 for an 
example.

Disable SSID Disable the SSID interface.


This option is only available in the CLI.

Email Send a custom email message to the selected recipients. At least one recipient 
and an email subject must be specified.
The email body can use parameters from logs or previous action results. 
Wrapping the parameter with %% will replace the expression with the JSON value 
for the parameter, for example: %%results.source%% is the source property from 
the previous action.

FortiExplorer Notification Send push notifications to FortiExplorer.


The FortiGate must be registered to FortiCare on the iOS App that will receive the 
notification.

Access Layer Quarantine This option is only available for Compromised Host triggers.


Impose a dynamic quarantine on multiple endpoints based on the access layer.

Quarantine FortiClient via This option is only available for Compromised Host triggers.


EMS Use FortiClient EMS to block all traffic from the source addresses that are flagged 
as compromised hosts.
Quarantined devices are flagged on the Security Fabric topology views. Go to the 
Dashboard > Users & Devices > Quarantine widget to view and manage 
quarantined IP addresses.

Quarantine via FortiNAC This option is only available for Compromised Host and Incoming Webhook 


triggers.
Use FortiNAC to quarantine a client PC and disable its MAC address. See 
Quarantine via FortiNAC action on page 244 for details.

FortiOS 6.4.6 Administration Guide 241


Fortinet Technologies Inc.
Fortinet Security Fabric

Action Description

Assign VMware NSX Security This option is only available for Compromised Host triggers.


Tag If an endpoint instance in a VMware NSX environment is compromised, the 
configured security tag is assigned to the compromised endpoint. See Assign 
VMware NSX security tag action on page 248 and Assign VMware NSX-T 
security tag action on page 251 for details.

IP Ban This option is only available for Compromised Host triggers.
Block all traffic from the source addresses flagged by the IoC.
Go to the Dashboard > Users & Devices > Quarantine widget to view and manage 
quarantined IP addresses.

AWS Lambda Send log data to an integrated AWS service. See AWS Lambda action on page 


255 for details.

Azure Function Send log data to an Azure function. See Azure Function action on page 257 for 


details.

Google Cloud Function Send log data to a Google Cloud function. See Google Cloud Function action on 


page 259 for details.

AliCloud Function Send log data to an AliCloud function. See AliCloud Function action on page 261 


for details.

Slack Notification Send a notification to a Slack channel. See Slack Notification action on page 264 


for details.

Webhook Send an HTTP request using a REST callback. See Webhook action on page 267 
for details, and Slack integration webhook on page 273 and Microsoft Teams 
integration webhook on page 274 for examples.

CLI script action

CLI scripts can be run when an automation stitch is triggered. The scripts can be manually entered, uploaded as a file, or 
recorded in the CLI console. The output of the script can be sent as an email action.
In this example, the script sets the idle timeout value to 479 minutes, and sends an email with the script output.

To configure a CLI script automation stitch in the GUI:

 1. Go to Security Fabric > Automation.


 2. Click Create New.
 3. Enter a name for the stitch, and select the FortiGate devices that it will be applied to.
 4. Select a trigger, such as Security Rating Summary.
 5. Select CLI Script and Email actions.
 6. Configure the CLI script:

FortiOS 6.4.6 Administration Guide 242


Fortinet Technologies Inc.
Fortinet Security Fabric

 l To manually enter the script, type it into the Script field.

 l To upload a script file, click Upload and locate the file on your management computer.
 l To record the script in the CLI console, click >_Record in CLI console, then enter the CLI commands.

 7. Configure the email action.
 8. Click OK.

To configure a CLI script automation stitch in the CLI:

 1. Create an automation action:
config system automation-action
edit "set admintimeout479"
set action-type cli-script
set minimum-interval 0
set delay 0
set required enable
set script "config system global
set admintimeout 479
end"
next
edit "auto-cli-1_email"
set action-type email

FortiOS 6.4.6 Administration Guide 243


Fortinet Technologies Inc.
Fortinet Security Fabric

set email-to "[email protected]"


set email-subject "CSF stitch alert"
set message "%%results%%"
set minimum-interval 0
next
end

 2. Create an automation trigger:
config system automation-trigger
edit "auto-cli-1"
set trigger-type event-based
set event-type security-rating-summary
next
end

 3. Create the automation stitch:
config system automation-stitch
edit "auto-cli-1"
set status enable
set trigger "auto-cli-1"
set action "set admintimeout479" "auto-cli-1_email"
next
end

Email sample

The email sent by the action will look similar to the following:

Quarantine via FortiNAC action

Users can configure an automation stitch with the  Quarantine via FortiNAC action with a Compromised Host or Incoming


Webhook trigger. When the automation is triggered, the client PC will be quarantined and its MAC address is disabled in 
the configured FortiNAC.
In this example, the FortiNAC has been configured to join an enabled Security Fabric (see FortiNAC for more 
information).

To configure a FortiNAC quarantine automation stitch in the GUI:

 1. Configure the automation stitch:
 a. Go to Security Fabric > Automation and click Create New.
 b. In the Trigger section, select Incoming Webhook.
 c. In the Action section, select Quarantine via FortiNAC.

FortiOS 6.4.6 Administration Guide 244


Fortinet Technologies Inc.
Fortinet Security Fabric

 d. Click OK.

 2. Create a new API user and generate the API key:
 a. Go to System > Administrators and click Create New > REST API Admin.
 b. Configure the settings as needed.

 c. Click OK. The New API key window opens.


 d. Copy the key to the clipboard and click Close.
 e. Click OK.

FortiOS 6.4.6 Administration Guide 245


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. Add the API key to the automation stitch:
 a. Go to Security Fabric > Automation and edit the automation stitch created in step 1.
 b. Paste the key in the API admin key field.
 c. Click OK.

 4. On a Linux PC accessible by the FortiGate, create a cURL request to trigger the automation stitch:
root@pc56:~# curl -k -X POST -H 'Authorization: Bearer ckx7d9xdzzx14Nztd1Ncr701dpwwy9' -
-data '{ "srcip": "1.1.1.1", "mac":"00:0C:29:0B:A6:16", "fctuid":
"A8BA0B12DA694E47BA4ADF24F8358E2F"}'
https://172.17.48.225:4431/api/v2/monitor/system/automation-stitch/webhook/auto_webhook

 5. In FortiOS, verify the automation stitch is triggered and the action is executed:
 a. Go to Log & Report > Events and select System Events to confirm that the stitch was activated.
 b. Go to Security Fabric > Automation to see the last time that the stitch was triggered.

FortiOS 6.4.6 Administration Guide 246


Fortinet Technologies Inc.
Fortinet Security Fabric

In FortiNAC, the Host View shows the status of the client PC. It is quarantined and its MAC address is disabled.

To configure a FortiNAC quarantine automation stitch in the CLI:

 1. Configure the automation stitch:
config system automation-action
edit "auto_webhook_quarantine-fortinac"
set action-type quarantine-fortinac
next
end
config system automation-trigger
edit "auto_webhook"
set event-type incoming-webhook
next
end
config system automation-stitch
edit "auto_webhook"
set trigger "auto_webhook"
set action "auto_webhook_quarantine-fortinac"
next
end

 2. Create a new API user and generate the API key:
config system api-user
edit "g-api-rw-user"
set api-key ENC SH2SHFEtfJQ9OsfH/keh4kdULAp3V4ps7HkxBuDIzpR4Cmsckaa9wJ6kw28dFQ=
set accprofile "super_admin"
set vdom "root"
config trusthost
edit 1
set ipv4-trusthost 10.6.30.0 255.255.255.0
next
end
next
end

FortiOS 6.4.6 Administration Guide 247


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. On a Linux PC accessible by the FortiGate, create a cURL request to trigger the automation stitch:
root@pc56:~# curl -k -X POST -H 'Authorization: Bearer ckx7d9xdzzx14Nztd1Ncr701dpwwy9' -
-data '{ "srcip": "1.1.1.1", "mac":"00:0C:29:0B:A6:16", "fctuid":
"A8BA0B12DA694E47BA4ADF24F8358E2F"}'
https://172.17.48.225:4431/api/v2/monitor/system/automation-stitch/webhook/auto_webhook

 4. In FortiOS, verify the automation stitch is triggered and the action is executed:
# diagnose test application autod 2
csf: enabled root:yes
version:1592949233 sync time:Tue Jun 23 15:03:15 2020

total stitches activated: 1

stitch: auto_webhook
destinations: all
trigger: auto_webhook

(id:15)service=auto_webhook

local hit: 1 relayed to: 0 relayed from: 0


actions:
auto_webhook_quarantine-fortinac type:quarantine-fortinac interval:0

date=2020-06-23 time=15:25:44 logdesc="Internal Message" path="system" name="automation-


stitch" action="webhook" mkey="auto_webhook" srcip="1.1.1.1" mac="00:0C:29:0B:A6:16"
fctuid="A8BA0B12DA694E47BA4ADF24F8358E2F" vdom="root" service="auto_webhook"

date=2020-06-23 time=15:25:44 logid="0100046600" type="event" subtype="system"


level="notice" vd="root" eventtime=1592951144401490054 tz="-0700" logdesc="Automation
stitch triggered" stitch="auto_webhook" trigger="auto_webhook" stitchaction="auto_
webhook_quarantine-fortinac" from="log" msg="stitch:auto_webhook is triggered."

Assign VMware NSX security tag action

If an endpoint instance in a VMware NSX environment is compromised, this action will assign the configured security tag 
to the compromised endpoint.
This action is only available when the automation trigger is set to compromised host.
To set up the NSX quarantine action, you need to:
 1. Configure a VMware NSX SDN connector
 2. Configure an NSX security tag automation stitch
 3. Configure FortiAnalyzer logging on the FortiGate

Configure a VMware NSX SDN connector

The FortiGate retrieves security tags from the VMware NSX server through the connector.

To configure a VMware NSX SDN connector in the GUI:

 1. Go to Security Fabric > External Connectors.


 2. Click Create New.
 3. Select VMware NSX.

FortiOS 6.4.6 Administration Guide 248


Fortinet Technologies Inc.
Fortinet Security Fabric

 4. Configure the settings.

 5. Click OK.

To configure a VMware NSX SDN connector in the CLI:

config system sdn-connector


edit "nsx"
set type nsx
set server "172.18.64.32"
set username "admin"
set password xxxxxx
next
end

Configure an NSX security tag automation stitch

Security tags are retrieved from the VMware NSX server through the NSX SDN connector.

To configure an NSX security tag automation stitch in the GUI:

 1. Go to Security Fabric > Automation.


 2. Click Create New.
 3. In the Trigger section, select Compromised Host.
 4. In the Action section, select Assign VMware NSX Security Tag.
 5. Configure the settings.

 6. Click OK.

FortiOS 6.4.6 Administration Guide 249


Fortinet Technologies Inc.
Fortinet Security Fabric

To configure an NSX security tag automation stitch in the CLI:

 1. Create an automation action:
config system automation-action
edit "pcui-test_quarantine-nsx"
set action-type quarantine-nsx
set security-tag "pcui-tag2"
set sdn-connector "nsx"
next
end

 2. Create an automation trigger:
config system automation-trigger
edit "pcui-test"
set ioc-level high
next
end

 3. Create the automation stitch:
config system automation-stitch
edit "pcui-test"
set trigger "pcui-test"
set action "pcui-test_quarantine-nsx"
next
end

Configure FortiAnalyzer logging on the FortiGate

The FortiAnalyzer is used to send endpoint compromise notification to the FortiGate.
See Configuring FortiAnalyzer on page 137 for more information.

To configure FortiAnalyzer logging in the GUI:

 1. Go to Security Fabric > Fabric Connectors and double-click the FortiAnalyzer Logging card.


 2. Click Enabled and configure the settings as needed.
 3. Click Apply.

To configure FortiAnalyzer logging in the CLI:

config log fortianalyzer setting


set status enable
set server "172.18.64.234"
set serial "FL-8HFT718900132"
set upload-option realtime
set reliable enable
end

When an endpoint instance is compromised

When an endpoint instance, such as pcui-ubuntu2, in the VMware NSX environment is compromised, the automation 
stitch is triggered. The FortiGate then assigns the configured security tag, pcui-tag2 in this example, to the compromised 
NSX endpoint instance.

FortiOS 6.4.6 Administration Guide 250


Fortinet Technologies Inc.
Fortinet Security Fabric

Assign VMware NSX-T security tag action

VMware NSX SDN connectors' vCenter server and credentials can be configured so the FortiGate resolves NSX-T VMs. 
The FortiGate uses the Assign VMWare NSX Security Tag automation action to assign a tag to the VM through an 
automation stitch.
The FortiGate is notified of a compromised host on the NSX-T network by an incoming webhook or other means, such as 
FortiGuard IOC. An automation stitch can be configured to process this trigger and action it by assigning a VMware NSX 
security tag on the VM instance.

To configure an automation stitch to assign a security tag to NSX-T VMs in the GUI:

 1. Configure the NSX SDN connector:   
 a. Go to Security Fabric > External Connectors and click Create New.
 b. Select VMware NSX.
 c. Configure the connector settings.

FortiOS 6.4.6 Administration Guide 251


Fortinet Technologies Inc.
Fortinet Security Fabric

 d. Enable vCenter Settings and configure as needed.

 e. Click OK.
 2. Configure the automation stitch:
 a. Go to Security Fabric > Automation and click Create New.
 b. In the Trigger section, select Incoming Webhook.
 c. In the Action section, select Assign VMwareNSX Security Tag.
 d. Enable Specify NSX server(s) and enter a server.
 e. Enter a Security tag.

FortiOS 6.4.6 Administration Guide 252


Fortinet Technologies Inc.
Fortinet Security Fabric

 f. Click OK.

 3. In NSX-T, create a cURL request to trigger the automation stitch on the FortiGate:
root@pc56:/home# curl -k -X POST -H 'Authorization: Bearer
3fdxNG08mgNg0fh4NQ51g1NQ1QHcxx' --data '{ "srcip": "10.1.30.242"}'
https://172.16.116.230/api/v2/monitor/system/automation-stitch/webhook/auto_webhook
{
"http_method":"POST",
"status":"success",
"http_status":200,
"serial":"FGVM08TM20000220",
"version":"v6.4.0",
"build":1608
}

FortiOS 6.4.6 Administration Guide 253


Fortinet Technologies Inc.
Fortinet Security Fabric

The automation stitch is triggered and the configured tag is added to the NSX-T VM.

In FortiOS, the Security Fabric > Automation page shows the last trigger time.

To configure an automation stitch to assign a security tag to NSX-T VMs in the CLI:

 1. Configure the NSX SDN connector:
config system sdn-connector
edit "nsx_t25"
set type nsx
set server "172.18.64.205"
set username "admin"
set password xxxxxx
set vcenter-server "172.18.64.201"
set vcenter-username "[email protected]"
set vcenter-password xxxxxx
next
end

 2. Configure the automation stitch:
config system automation-action
edit "auto_webhook_quarantine-nsx"
set action-type quarantine-nsx
set security-tag "automation_tag"
set sdn-connector "nsx_t25"
next
end
config system automation-trigger
edit "auto_webhook"
set trigger-type event-based
set event-type incoming-webhook
next
end
config system automation-stitch
edit "auto_webhook"
set status enable

FortiOS 6.4.6 Administration Guide 254


Fortinet Technologies Inc.
Fortinet Security Fabric

set trigger "auto_webhook"


set action "auto_webhook_quarantine-nsx"
next
end

 3. In NSX-T, create a cURL request to trigger the automation stitch on the FortiGate:
root@pc56:/home# curl -k -X POST -H 'Authorization: Bearer
3fdxNG08mgNg0fh4NQ51g1NQ1QHcxx' --data '{ "srcip": "10.1.30.242"}'
https://172.16.116.230/api/v2/monitor/system/automation-stitch/webhook/auto_webhook
{
"http_method":"POST",
"status":"success",
"http_status":200,
"serial":"FGVM08TM20000220",
"version":"v6.4.0",
"build":1608
}

To verify the automation stitch is triggered and the action is executed:

# diagnose test application autod 2

csf: enabled root:yes


version:1586883541 sync time:Tue Apr 14 11:04:05 2020

total stitches activated: 1

stitch: auto_webhook
destinations: all
trigger: auto_webhook

(id:15)service=auto_webhook

local hit: 1 relayed to: 0 relayed from: 0


actions:
auto_webhook_quarantine-nsx type:quarantine-nsx interval:0
security tag:automation_tag
sdn connector:
nsx_t25;

AWS Lambda action

AWS Lambda functions can be called when an automation stitch is triggered.

To configure an AWS Lambda function automation stitch in the GUI:

 1. Go to Security Fabric > Automation.


 2. Click Create New.
 3. Enter a name for the stitch, and select the FortiGate devices that it will be applied to.
 4. Select a trigger, such as Security Rating Summary.

FortiOS 6.4.6 Administration Guide 255


Fortinet Technologies Inc.
Fortinet Security Fabric

 5. Select AWS Lambda Function and configure its settings.

Name The action name.

Delay The amount of time after the previous action before this action executes, in 
seconds (0 - 3600, default = 0).

API gateway The API gateway URL, in the format:


{restapi-id}.execute-api.{region}.{domain}/{stage}/{path}
The CLI must be used to manually enter the individual parameters.

API key The API key configured in your API gateway.

HTTP header The HTTP request header name and value. Multiple headers can be added.

+ Click to add another action.
Actions can be reorganized as needed by dragging and dropping.

Name The action name.

Delay The amount of time after the previous action before this action executes, in 
seconds (0 - 3600, default = 0).

 6. Click OK.

To configure an AWS Lambda function automation stitch in the CLI:

 1. Create an automation action:
config system automation-action
edit "aws-action-1"
set action-type aws-lambda
set aws-api-id "0100000000"
set aws-region "us-east-2"
set aws-api-stage "default"
set aws-api-path "xxxxx-autobatoon-XXX-lambdaXXX"
set aws-api-key *************
next
end

FortiOS 6.4.6 Administration Guide 256


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. Create an automation trigger:
config system automation-trigger
edit "auto-aws"
set event-type security-rating-summary
next
end

 3. Create the automation stitch:
config system automation-stitch
edit "auto-aws"
set trigger "auto-aws"
set action "aws-action-1"
next
end

When the automation stitch is triggered, the FortiGate shows the stitch trigger time:

In AWS, the log shows that the function was called, executed, and finished.

Azure Function action

Azure functions can be called when an automation stitch is triggered.

To configure an Azure function automation stitch in the GUI:

 1. Go to Security Fabric > Automation.


 2. Click Create New.
 3. Enter a name for the stitch, and select the FortiGate devices that it will be applied to.
 4. Select a trigger, such as Security Rating Summary.

FortiOS 6.4.6 Administration Guide 257


Fortinet Technologies Inc.
Fortinet Security Fabric

 5. Select Azure Function and configure its settings.

Name The action name.

Delay The amount of time after the previous action before this action executes, in 
seconds (0 - 3600, default = 0).

API gateway The API gateway URL, in the format:


{application}.{domain}/api/{function}
The CLI must be used to manually enter the individual parameters.

Authorization The authorization level: Anonymous, Function, or Admin.

API key The API key configured in your API gateway.


This options is only available when Authorization is not Anonymous.

HTTP header The HTTP request header name and value. Multiple headers can be added.

+ Click to add another action.
Actions can be reorganized as needed by dragging and dropping.

 6. Click OK.

To configure an Azure function automation stitch in the CLI:

 1. Create an automation action:
config system automation-action
edit "azure_function"
set action-type azure-function
set azure-app "xxxxx00-no-delete-xxxx"
set azure-function "headersResponse"
set azure-function-authorization function
set azure-api-key **********
set headers "header1:value1" "header2:value2"
next
end

FortiOS 6.4.6 Administration Guide 258


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. Create an automation trigger:
config system automation-trigger
edit "auto-azure"
set event-type security-rating-summary
next
end

 3. Create the automation stitch:
config system automation-stitch
edit "auto-azure"
set trigger "auto-azure"
set action "azure_function"
next
end

When the automation stitch is triggered, the FortiGate shows the stitch trigger time:

In Azure, the function log shows that the function was called, executed, and finished:

Google Cloud Function action

Google Cloud functions can be called when an automation stitch is triggered.

FortiOS 6.4.6 Administration Guide 259


Fortinet Technologies Inc.
Fortinet Security Fabric

To configure a Google Cloud function automation stitch in the GUI:

 1. Go to Security Fabric > Automation.


 2. Click Create New.
 3. Enter a name for the stitch, and select the FortiGate devices that it will be applied to.
 4. Select a trigger, such as Security Rating Summary.
 5. Select Google Cloud Function and configure its settings.

Name The action name.

Delay The amount of time after the previous action before this action executes, in 
seconds (0 - 3600, default = 0).

API gateway The API gateway URL, in the format:


{region}-{project}{domain}/{function}
The CLI must be used to manually enter the individual parameters.

HTTP header The HTTP request header name and value. Multiple headers can be added.

+ Click to add another action.
Actions can be reorganized as needed by dragging and dropping.

 6. Click OK.

To configure a Google Cloud function automation stitch in the CLI:

 1. Create an automation action:
config system automation-action
edit "google-echo"
set action-type google-cloud-function
set gcp-function-region "us-central1"
set gcp-project "xxx-xxxxxxx-000-000000"
set gcp-function-domain "cloudfunctions.net"
set gcp-function "xxxx-echo"
set headers "echo-header:echo-value"
next
end

FortiOS 6.4.6 Administration Guide 260


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. Create an automation trigger:
config system automation-trigger
edit "auto-google1"
set event-type security-rating-summary
next
end

 3. Create the automation stitch:
config system automation-stitch
edit "auto-google1"
set trigger "auto-google1"
set action "google-echo"
next
end

When the automation stitch is triggered, the FortiGate shows the stitch trigger time:

In Google Cloud, go to Logs to see the function log showing  that the configured function was called, executed, and 
finished:

AliCloud Function action

AliCloud functions can be called when an automation stitch is triggered.

FortiOS 6.4.6 Administration Guide 261


Fortinet Technologies Inc.
Fortinet Security Fabric

To configure an AliCloud function automation stitch in the GUI:

 1. Go to Security Fabric > Automation.


 2. Click Create New.
 3. Enter a name for the stitch, and select the FortiGate devices that it will be applied to.
 4. Select a trigger, such as Security Rating Summary.
 5. Select AliCloud Function and configure its settings.

Name The action name.

Delay The amount of time after the previous action before this action executes, in 
seconds (0 - 3600, default = 0).

HTTP URL The HTTP URL, in the format:


{account id}.{region}.{domain}/{version}/proxy/{service}/
{function}
The CLI must be used to manually enter the individual parameters.

Authorization The authorization level: Anonymous, or Function.

AccessKey ID The access key ID
This options is only available when Authorization is Function.

AccessKey Secret The access key secret.


This options is only available when Authorization is Function.

HTTP header The HTTP request header name and value. Multiple headers can be added.

+ Click to add another action.
Actions can be reorganized as needed by dragging and dropping.

 6. Click OK.

FortiOS 6.4.6 Administration Guide 262


Fortinet Technologies Inc.
Fortinet Security Fabric

To configure an AliCloud function automation stitch in the CLI:

 1. Create an automation action:
config system automation-action
edit "Ali-Action-1"
set action-type alicloud-function
set alicloud-account-id "0000000000000000"
set alicloud-region "us-east-1"
set alicloud-version "2099-99-99"
set alicloud-service "test-function"
set alicloud-function "echoBodyAuth"
set alicloud-function-authorization function
set alicloud-access-key-id "XXXXXxXXXXxxxxxx"
set alicloud-access-key-secret xxxxxx
next
end

 2. Create an automation trigger:
config system automation-trigger
edit "auto-ali"
set event-type security-rating-summary
next
end

 3. Create the automation stitch:
config system automation-stitch
edit "auto-ali"
set trigger "auto-ali"
set action "Ali-Action-1"
next
end

When the automation stitch is triggered, the FortiGate shows the stitch trigger time:

In AliCloud, the function log shows that the function was called, executed, and finished:

FortiOS 6.4.6 Administration Guide 263


Fortinet Technologies Inc.
Fortinet Security Fabric

Slack Notification action

To configure an automation stitch with a Slack Notification action, you first need to configure an incoming webhook  in 
Slack. Then you can enter the webhook URL when you configure the Slack Notification action.
This example uses a Security Rating Summary trigger in the automation stitch with two Slack Notification actions with 
different notification messages.  One message is a custom message, and the other is for the Security Rating Summary 
log with a 90 second delay.

To create an Incoming Webhook in Slack:

 1. Go to the Slack website, and create a workspace. 
 2. Create a Slack application for the workspace.   

 3. Add an Incoming Webhook to a channel in the workspace (see Sending messages using Incoming Webhooks for 
more details).

FortiOS 6.4.6 Administration Guide 264


Fortinet Technologies Inc.
Fortinet Security Fabric

 4. Activate the Incoming Webhook, and copy the Webhook URL to the clipboard.

To configure an automation stitch with Slack Notification actions in the GUI:

 1. Go to Security Fabric > Automation and click Create New.


 2. Enter a name for the stitch, and select the FortiGate devices that it will be applied to.
 3. For Trigger, select Security Rating Summary.
 4. For action, select  Slack Notification, and configure the notification settings. 
 a. First action:

Name slack1

Delay 0

URL Paste the webhook URL from the clipboard

Message This is test for slack notification.

 b. Click the + and configure the second action:

Name slack2

Delay 90

URL Paste the webhook URL from the clipboard

Message %%log%%

FortiOS 6.4.6 Administration Guide 265


Fortinet Technologies Inc.
Fortinet Security Fabric

 5. Click OK.   
 6. Run the automation stitch to trigger the action.

To configure an automation stitch with Slack Notification actions in the CLI:

 1. Create the Slack Notification actions:
config system automation-action
edit "slack1"
set action-type slack-notification
set minimum-interval 0
set delay 0
set required disable
set message "This is test for slack notification."
set uri "hooks.slack.com/services/xxxxxxxxx/xxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxx"
next
edit "slack2"
set action-type slack-notification
set minimum-interval 0
set delay 90
set required disable
set message "%%log%%"
set uri "hooks.slack.com/services/xxxxxxxxx/xxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxx"
next
end
 2. Create the automation trigger:   
config system automation-trigger
edit "auto-rating"
set trigger-type event-based
set event-type security-rating-summary
next

FortiOS 6.4.6 Administration Guide 266


Fortinet Technologies Inc.
Fortinet Security Fabric

end
 3. Configure the automation stitch:   
config system automation-stitch
edit "auto-rating"
set status enable
set trigger "auto-rating"
set action "slack1" "slack2"
next
end
 4. Trigger the automation stitch.
The notification action is triggered in FortiGate.

The message you entered in the automation stitch is delivered to the Slack channel.

Webhook action

The webhook automation stitch action makes HTTP and HTTPS requests to a specified server, with custom headers, 
bodies, ports, and methods. It can be used to leverage the ubiquity of HTML requests and APIs to integrate with many 
other tools.

The URI and HTTP body can use parameters from logs or previous action results. Wrapping 
the parameter with %% will replace the expression with the JSON value for the parameter, for 
example: %%results.source%% is the source property from the previous action.

FortiOS 6.4.6 Administration Guide 267


Fortinet Technologies Inc.
Fortinet Security Fabric

In this example, a specific log message (failed administrator log in attempt) triggers the FortiGate to send the contents of 
the log to a server. The server responds with a generic reply. This example assumes that the server is already 
configured and able to communicate with the FortiGate.

To configure the webhook automation stitch in the GUI:

 1. Go to Security Fabric > Automation.


 2. Click Create New.
 3. Enter a name for the stitch, and select the FortiGate devices that it will be applied to.
 4. Select the trigger FortiOS Event Log.
 5. Set Event to Admin login failed.
 6. Select Webhook and configure the settings:

Name The action name.

Delay The amount of time after the previous action before this action executes, in 
seconds (0 - 3600, default = 0).

Protocol The request protocol to use: HTTP or HTTPS.

Method The request method: POST, PUT, GET, PATCH, or DELETE.

URI The request API URI.

Port The protocol port.

HTTP body The request body, if required, as a serialized JSON string.


Use the parameter %%log%% to send the contents of the log from the trigger.

HTTP header The HTTP request header name and value.

FortiOS 6.4.6 Administration Guide 268


Fortinet Technologies Inc.
Fortinet Security Fabric

+ Click to add another action.
Actions can be reorganized as needed by dragging and dropping.

 7. Click OK.

To configure the webhook automation stitch in the CLI:

 1. Create the automation action:
config system automation-action
edit "Send Log To Server"
set action-type webhook
set uri "172.16.200.44"
set http-body "%%log%%"
set port 80
set headers "Header:1st Action"
next
end

 2. Create an automation trigger:
config system automation-trigger
edit "badLogin"
set event-type event-log
set logid 32002
next
end

 3. Create the automation stitch:
config system automation-stitch
edit "badLogin"
set trigger "badLogin"
set action "Send Log To Server"
next
end

To test the automation stitch:

 1. Attempt to log in to the FortiGate with an incorrect username or password.
 2. On the server, check the log to see that its contents have been sent by the FortiGate.

The body content is replaced with the log of the trigger.

FortiOS 6.4.6 Administration Guide 269


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. On the FortiGate, go to Log & Report > Events and select System Events to confirm that the stitch was activated.

 4. Go to Security Fabric > Automation to see the last time that the stitch was triggered.

Diagnose commands

 l Enable log dumping:
# diagnose test application autod 1
autod dumped total:1 logs, num of logids:1
autod log dumping is enabled

vdom:root(0) logid:32002 len:408 log:


date=2019-05-30 time=17:41:03 logid="0100032002" type="event" subtype="system"
level="alert" vd="root" eventtime=1559263263858888451 tz="-0700" logdesc="Admin login
failed" sn="0" user="admin" ui="http(10.6.30.254)" method="http" srcip=10.6.30.254
dstip=10.6.30.5 action="login" status="failed" reason="passwd_invalid"
msg="Administrator admin login failed from http(10.6.30.254) because of invalid
password"
autod log dumping is disabled

autod logs dumping summary:


logid:32002 count:1

autod dumped total:1 logs, num of logids:1

FortiOS 6.4.6 Administration Guide 270


Fortinet Technologies Inc.
Fortinet Security Fabric

 l Show automation settings:
# diagnose test application autod 2
csf: enabled root:yes
total stitches activated: 2

stitch: badLogin
destinations: all
trigger: badLogin

local hit: 6 relayed to: 6 relayed from: 6


actions:
Send Log To Server type:webhook interval:0
delay:0 required:no
proto:0 method:0 port:80
uri: 172.16.200.44
http body: %%log%%
headers:
0. Header:1st Action

 l Show automation statistics:
# diagnose test application autod 3

stitch: badLogin

local hit: 1 relayed to: 1 relayed from: 1


last trigger:Wed Jul 10 12:14:14 2019
last relay:Wed Jul 10 12:14:14 2019

actions:
Send Log To Server:
done: 1 relayed to: 1 relayed from: 1
last trigger:Wed Jul 10 12:14:14 2019
last relay:Wed Jul 10 12:14:14 2019

logid2stitch mapping:
id:32002 local hit: 3 relayed to: 3 relayed from: 3
badLogin

action run cfg&stats:


total:55 cur:0 done:55 drop:0
email:
flags:10
stats: total:4 cur:0 done:4 drop:0
ios-notification:
flags:1
stats: total:0 cur:0 done:0 drop:0
alert:
flags:0
stats: total:0 cur:0 done:0 drop:0
disable-ssid:
flags:7
stats: total:0 cur:0 done:0 drop:0
quarantine:
flags:7
stats: total:0 cur:0 done:0 drop:0

FortiOS 6.4.6 Administration Guide 271


Fortinet Technologies Inc.
Fortinet Security Fabric

quarantine-forticlient:
flags:4
stats: total:0 cur:0 done:0 drop:0
quarantine-nsx:
flags:4
stats: total:0 cur:0 done:0 drop:0
ban-ip:
flags:7
stats: total:0 cur:0 done:0 drop:0
aws-lambda:
flags:11
stats: total:21 cur:0 done:21 drop:0
webhook:
flags:11
stats: total:6 cur:0 done:6 drop:0
cli-script:
flags:10
stats: total:4 cur:0 done:4 drop:0
azure-function:
flags:11
stats: total:0 cur:0 done:0 drop:0
google-cloud-function:
flags:11
stats: total:0 cur:0 done:0 drop:0
alicloud-function:
flags:11
stats: total:20 cur:0 done:20 drop:0

 l Enable debug output and turn on automation debug messages for about 30 minutes:
# diagnose debug enable
# diagnose debug application autod -1
__auto_generate_generic_curl_request()-358: Generating generic automation CURL request
for action (Send Log To Server).
__auto_generate_generic_curl_request()-406: Generic automation CURL request POST data
for action (Send Log To Server):
date=2019-05-30 time=16:44:43 logid="0100032002" type="event" subtype="system"
level="alert" vd="root" eventtime=1559259884209355090 tz="-0700" logdesc="Admin login
failed" sn="0" user="admin" ui="http(10.6.30.254)" method="http" srcip=10.6.30.254
dstip=10.6.30.5 action="login" status="failed" reason="passwd_invalid"
msg="Administrator admin login failed from http(10.6.30.254) because of invalid
password"

__auto_generic_curl_request_close()-512: Generic CURL request response body from


http://172.16.200.44:
{
"userId": 1,
"id": 1,
"title": "Test Response",
"body": "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
}

FortiOS 6.4.6 Administration Guide 272


Fortinet Technologies Inc.
Fortinet Security Fabric

Slack integration webhook

A webhook can be created to post messages and notifications to Slack. For information about using incoming webhooks 
in Slack, see https://api.slack.com/incoming-webhooks.
In this example, a configuration change triggers the FortiGate to post a message to Slack.

To create a webhook automation stitch for Slack integration in the GUI:

 1. Go to Security Fabric > Automation.


 2. Click Create New.
 3. Enter a name for the stitch.
 4. Select the trigger Configuration Change.
 5. Select Webhook and configure the settings:

 6. Click OK.

To create a webhook automation stitch for Slack integration in the CLI:

 1. Create the automation action:
config system automation-action
edit "send to Slack"
set action-type webhook
set protocol https
set uri "hooks.slack.com/services/XXXXXXXX"
set http-body "{\"channel\": \"#delivery\", \"username\": \"tleela\", \"text\":
\"Configuration changed\", \"icon_emoji\": \":worried:\"}"
set port 443
set headers "Content-type:application/json"

FortiOS 6.4.6 Administration Guide 273


Fortinet Technologies Inc.
Fortinet Security Fabric

next
end

 2. Create the automation trigger:
config system automation-trigger
edit "config change"
set event-type config-change
next
end

 3. Create the automation stitch:
config system automation-stitch
edit "Slack"
set trigger "config change"
set action "send to Slack"
next
end

Microsoft Teams integration webhook

A webhook can be created to post messages and notifications to Microsoft Teams.
In this example, a configuration change triggers the FortiGate to post a message to Teams.

To create a webhook automation stitch for Teams integration in the GUI:

 1. Create an incoming webhook in Teams. See https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-
and-connectors/how-to/add-incoming-webhook for information.
 2. Go to Security Fabric > Automation.
 3. Click Create New.
 4. Enter a name for the stitch.
 5. Select the trigger Configuration Change.

FortiOS 6.4.6 Administration Guide 274


Fortinet Technologies Inc.
Fortinet Security Fabric

 6. Select Webhook and configure the settings:

The URI is the URL from the incoming webhook created in Teams. The HTTP body can also contain log 
parameters.
 7. Click OK.

To create a webhook automation stitch for Teams integration in the CLI:

 1. Create an incoming webhook in Teams. See https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-
and-connectors/how-to/add-incoming-webhook for information.
 2. Create the automation action:
config system automation-action
edit "send to Teams"
set action-type webhook
set protocol https
set uri
"outlook.office.com/webhook/XXXXXXXXXXXX/IncomingWebhook/XXXXXXXXXXXX/XXXXXXXXXXXX"
set http-body "{ \"text\": \"<message to send>\" }"
set port 443
set headers "Content-type:application/json"
next
end

 3. Create the automation trigger:
config system automation-trigger
edit "Teams"
set event-type config-change
next
end

FortiOS 6.4.6 Administration Guide 275


Fortinet Technologies Inc.
Fortinet Security Fabric

 4. Create the automation stitch:
config system automation-stitch
edit "Teams"
set trigger "Teams"
set action "send to Teams"
next
end

For information about more advanced messages that can be configured and sent to the 
webhook, see https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-
connectors/how-to/connectors-using

Execute a CLI script based on CPU and memory thresholds

Automation stitches can be created to run a CLI script and send an email message when CPU or memory usage 
exceeds specified thresholds.
In this example, two automation stitches are created that run a CLI script to collect debug information, and then email the 
results of the script to a specified email address when CPU usage threshold is exceeded or memory usage causes the 
FortiGate to enter conserve mode.

Automation stitches that use High CPU and Conserve Mode triggers can only be created in the 


CLI. Once create, they can be edited in the GUI.

To define CPU and memory usage thresholds:

config system global


set cpu-use-threshold <percent>
set memory-use-threshold-extreme <percent>
set memory-use-threshold-green <percent>
set memory-use-threshold-red <percent>
end

Where:

cpu-use-threshold  Threshold at which CPU usage is reported, in percent of total possible CPU 
utilization (default = 90).

memory-use-threshold-extreme  Threshold at which memory usage is considered extreme, and new sessions are 
dropped, in percent of total RAM (default = 95).

memory-use-threshold-green  Threshold at which memory usage forces the FortiGate to exit conserve mode, in 
percent of total RAM (default = 82).

memory-use-threshold-red  Threshold at which memory usage forces the FortiGate to enter conserve mode, 
in percent of total RAM (default = 88).

FortiOS 6.4.6 Administration Guide 276


Fortinet Technologies Inc.
Fortinet Security Fabric

Configure the automation stitches

High CPU usage stitch

To create an automation stitch for high CPU usage:

 1. Create an automation action to run a CLI script:
config system automation-action
edit "high_cpu_debug"
set action-type cli-script
set required enable
set script "diagnose debug cli 8
diagnose debug console timestamp enable
diagnose debug enable
diagnose debug crashlog read
get system performance status
get system session status
diagnose sys session full-stat
diagnose firewall iprope state
diagnose sys flash list
diagnose hardware sysinfo memory
diagnose hardware sysinfo slab
diagnose hardware sysinfo shm
diagnose hardware deviceinfo disk
get system arp
diagnose ip arp list
diagnose ip address list
get router info routing-table all
get router info kernel
diagnose ip rtache list
diagnose sys top-summary
diagnose sys top 9 99"
next
end

 2. Create an automation action to send an email:
config system automation-action
edit "auto_high_cpu_email"
set action-type email
set email-to "[email protected]"
set email-subject "CSF stitch alert: high_cpu"
set message "%%results%%"
next
end

 3. Create an automation trigger:
config system automation-trigger
edit "auto_high_cpu"
set event-type high-cpu
next
end

FortiOS 6.4.6 Administration Guide 277


Fortinet Technologies Inc.
Fortinet Security Fabric

 4. Create an automation stitch:
config system automation-stitch
edit "auto_high_cpu"
set trigger "auto_high_cpu"
set action "high_cpu_debug" "auto_high_cpu_email"
next
end

To edit the automation stitch in the GUI:

 1. Go to Security Fabric > Automation.


 2. Double click the auto_high_cpu stitch.

 3. Edit the stitch as required, then click OK.

High memory usage stitch

To create an automation stitch for high memory usage:

 1. Create an automation action to run a CLI script:
config system automation-action
edit "high_memory_debug"
set action-type cli-script
set required enable
set script "diagnose debug cli 8
diagnose debug console timestamp enable
diagnose debug enable

FortiOS 6.4.6 Administration Guide 278


Fortinet Technologies Inc.
Fortinet Security Fabric

diagnose debug crashlog read


get system performance status
get system session status
diagnose sys session full-stat
diagnose firewall iprope state
diagnose sys flash list
diagnose hardware sysinfo memory
diagnose hardware sysinfo slab
diagnose hardware sysinfo shm
diagnose hardware deviceinfo disk
get system arp
diagnose ip arp list
diagnose ip address list
get router info routing-table all
get router info kernel
diagnose ip rtache list
diagnose sys top-summary
diagnose sys top 9 99"
next
end

 2. Create an automation action to send an email:
config system automation-action
edit "auto_high_memory_email"
set action-type email
set email-to "[email protected]"
set email-subject "CSF stitch alert: high_memory"
set message "%%results%%"
next
end

 3. Create an automation trigger:
config system automation-trigger
edit "auto_high_memory"
set event-type low-memory
next
end

 4. Create an automation stitch:
config system automation-stitch
edit "auto_high_memory"
set trigger "auto_high_memory"
set action "high_memory_debug" "auto_high_memory_email"
next
end

FortiOS 6.4.6 Administration Guide 279


Fortinet Technologies Inc.
Fortinet Security Fabric

To edit the automation stitch in the GUI:

 1. Go to Security Fabric > Automation.


 2. Double click the auto_high_memory stitch.

 3. Edit the stitch as required, then click OK.

Results

When FortiGate enters conserve mode due to the memory-use-threshold-red being exceeded, the GUI displays a 
notice, and the auto_high_memory automation stitch is triggered, causing the CLI script to run and the results of the 
script to be emailed to the specified address.

Here is an example of the email message:

FortiOS 6.4.6 Administration Guide 280


Fortinet Technologies Inc.
Fortinet Security Fabric

CSF stitch alert: high_memory


[email protected]
Thu 11/21/2019 11:06 AM
James Li
FGT[FGVM16TM19000026] Automation Stitch:auto_high_memory is triggered.
########## script name: autod.47 ##########
========== #1, 2019-11-21 11:07:24 ==========
FGVM16TM19000026 $ diag deb cli 8
Debug messages will be on for 25 minutes.
FGVM16TM19000026 $ diag deb console timestamp enable
FGVM16TM19000026 $ diag deb enable
FGVM16TM19000026 $ diag deb crashlog read
1: 2019-08-08 11:35:25 the killed daemon is /bin/dhcpcd: status=0x0
2: 2019-08-08 17:52:47 the killed daemon is /bin/pyfcgid: status=0x0
3: 2019-08-23 11:32:31 from=license status=INVALID
4: 2019-08-23 11:32:32 from=license status=INVALID
5: 2019-11-21 09:53:31 from=license status=VALID
...

Public and private SDN connectors

Cloud SDN connectors provide integration and orchestration of Fortinet products with public and private cloud solutions. 
In a typical cloud environment, resources are dynamic and often provisioned and scaled on-demand. By using an SDN 
connector, you can ensure that changes to cloud environment attributes are automatically updated in the Security 
Fabric.
To protect the East-West or North-South traffic in these environments, the FortiGate uses the SDN connector to sync the 
dynamic addresses that these volatile environments use. You can then configure the dynamic address objects as 
sources or destinations for firewall policies. When you make changes to cloud environment resources, such as moving 
them to a new location or assigning different IP addresses to them, you do not need to modify the policy in FortiOS, as 
the SDN connector syncs changes to the cloud address objects.
These configurations consist of three primary steps:
 1. Configure the cloud SDN connector to connect your FortiGate and public or private cloud account.
 2. Create dynamic address objects to use the SDN connector. Use filters to sync only cloud address objects that you 
require.
 3. Apply the dynamic address objects to your firewall policy to protect your traffic.
This chapter explores the steps in detail and describes how to connect to each currently supported cloud platform. This 
chapter does not discuss cloud account role-based or permission requirements. The respective cloud documents 
contain this information.
The following external connector categories are available in the Security Fabric: Public SDN, Private SDN, 
Endpoint/Identity, and Threat Feeds.

FortiOS 6.4.6 Administration Guide 281


Fortinet Technologies Inc.
Fortinet Security Fabric

If VDOMs are enabled, SDN and Threat Feeds connectors are in the global settings, and 
Endpoint/Identity connectors are per VDOM.

Getting started with public and private SDN connectors

You can use SDN connectors to connect your FortiGate to public and private cloud solutions.  By using an SDN 
connector, you can ensure that changes to cloud environment attributes are automatically updated in the Security 
Fabric. You can use SDN connector address objects to create policies that provide dynamic access control based on 
cloud environment attribute changes. There is no need to manually reconfigure addresses and policies whenever 
changes to the cloud environment occur.
There are four steps to creating and using an SDN connector:
 1. Gather the required information. The required information depends on which public or private cloud solution 
SDN connector you are configuring.
 2. Creating the SDN connector on page 283
 3. Creating an SDN connector address on page 283
 4. Adding the address to a firewall policy on page 285
The following provides general instructions for creating an SDN connector and using the dynamic address object in a 
firewall policy. For instructions for specific public and private cloud solutions, see the relevant topic in this guide. For 
advanced scenarios regarding SDN connectors, see the appropriate FortiOS 6.4 cloud platform guide.

FortiOS 6.4.6 Administration Guide 282


Fortinet Technologies Inc.
Fortinet Security Fabric

Creating the SDN connector

To create an SDN connector in the GUI:

 1. Go to Security Fabric > External Connectors.


 2. Click Create New.
 3. Click the desired public or private cloud.
 4. Enter the Name, Status, and Update Interval for the connector.
 5. Enter previously collected information for the connector as needed.
 6. Click OK.

To create an SDN connector in the CLI:

config system sdn-connector


edit <name>
set status {enable | disable}
set type {connector type}
...
set update-interval <integer>
next
end

The available CLI commands vary depending on the selected SDN connector type.

Creating an SDN connector address

You can use an SDN connector address in the following ways:
 l As the source or destination address for firewall policies.
 l To automatically update changes to addresses in the public or private cloud environment, based on specified filters.
 l To automatically apply changes to firewall policies that use the address, based on specified filters.

To create an SDN connector address in the GUI:

 1. Go to Policy & Objects > Addresses.


 2. Click Create New > Address.
 3. Configure the address:
 a. Set the Type to Dynamic.
 b. From the Sub Type dropdown list, select Fabric Connector Address.
 c. From the SDN Connector dropdown list, select the desired SDN connector.
 d. From the Filter dropdown list, configure the desired filter. The filters available depend on the selected SDN 
connector type. The SDN connector automatically populates and updates IP addresses only for instances that 
satisfy the filter requirements. In this example, the address will automatically populate and update IP addresses 
only for AliCloud instances that belong to the specified security group:

FortiOS 6.4.6 Administration Guide 283


Fortinet Technologies Inc.
Fortinet Security Fabric

You can set filtering conditions using multiple entries with AND ("&") or OR ("|"). When both AND and OR are 
specified, AND is interpreted first, then OR.
 e. Configure other settings as desired.
 f. Click OK.
 4. Ensure that the SDN connector resolves dynamic firewall IP addresses as configured:
 a. Go to Policy & Objects > Addresses.
 b. Hover over the address that you created to see a list of IP addresses for instances that satisfy the filter that you 
configured. In this case, the IP addresses of instances that belong to the specified security group display:   

To create an SDN connector address in the CLI:

 1. Create the address:
config firewall address
edit <name>
set type dynamic
set sdn <sdn_connector>
set visibility enable
set associated-interface <interface_name>
set color <integer>
...
set comment <comment>
config tagging
edit <name>
set category <string>
set tags <strings>
next
end
next
end

FortiOS 6.4.6 Administration Guide 284


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. Ensure that the SDN connector resolves dynamic firewall IP addresses as configured by running show. The 
following shows example output:
config firewall address
edit "ali-address-security"
set type dynamic
config list
edit "10.0.0.16"
next
edit "10.0.0.17"
next
edit "10.0.20.20"
next
end
...
next
end

The available CLI commands vary depending on the selected SDN connector type.

Adding the address to a firewall policy

You can use an SDN connector address as the source or destination address in a policy.

To add the address to a firewall policy in the GUI:

 1. Go to Policy & Objects > Firewall Policy.


 2. Click Create New.
 3. Use the SDN connector address as the source or destination address.
 4. Configure the remaining settings as needed.
 5. Click OK.

To add the address to a firewall policy in the CLI:

config firewall policy


edit 0
set name <name>
set srcintf <port_name>
set dstintf <port_name>
set srcaddr <firewall_address>
set dstaddr <firewall_address>
set action accept
set schedule <schedule>
set service <service>
next
end
 

FortiOS 6.4.6 Administration Guide 285


Fortinet Technologies Inc.
Fortinet Security Fabric

Connector tooltips

In Security Fabric > External Connectors, hover over an SDN connector to view a tooltip that shows basic configuration 


information. 

Three buttons provide additional information:

Button Information

View Connector Objects Connector's dynamic objects, such as filters and instances.

View Policies List of policies that use the dynamic addresses from the connector.

View Automation Rules List of automation actions that use the connector.

AliCloud SDN connector using access key

FortiOS automatically updates dynamic addresses for AliCloud using an AliCloud SDN connector, including mapping the 
following attributes from AliCloud instances to dynamic address groups in FortiOS:
 l ImageId
 l InstanceId
 l SecurityGroupId
 l VpcId
 l VSwitchId
 l TagKey
 l TagValue

To configure AliCloud SDN connector using the GUI:

 1. Configure the AliCloud SDN connector:
 a. Go to Security Fabric > External Connectors.
 b. Click Create New, and select AliCloud.
 c. Configure as shown, substituting the access key, secret, and region ID for your deployment. The update 

FortiOS 6.4.6 Administration Guide 286


Fortinet Technologies Inc.
Fortinet Security Fabric

interval is in seconds.   

 2. Create a dynamic firewall address for the configured AliCloud SDN connector:
 a. Go to Policy & Objects > Addresses.
 b. Click Create New, then select Address.
 c. Configure the address as shown, selecting the desired filter in the Filter dropdown list. In this example, the 
address will automatically populate and update IP addresses only for AliCloud instances that belong to the 
specified security group:

 3. Ensure that the AliCloud SDN connector resolves dynamic firewall IP addresses:
 a. Go to Policy & Objects > Addresses.
 b. Hover over the address created in step 2 to see a list of IP addresses for instances that belong to the security 
group configured in step 2:

FortiOS 6.4.6 Administration Guide 287


Fortinet Technologies Inc.
Fortinet Security Fabric

To configure AliCloud SDN connector using CLI commands:

 1. Configure the AliCloud SDN connector:   
config system sdn-connector
edit "ali1"
set type acs
set access-key "LTAIKmERWEuEOChg"
set secret-key xxxxx
set region "us-west-1"
set update-interval 30
next
end
 2. Create a dynamic firewall address for the configured AliCloud SDN connector with the supported AliCloud filter. In 
this example, the AliCloud SDN Connector will automatically populate and update IP addresses only for instances 
that belong to the specified security group:   
config firewall address
edit "ali-address-security"
set type dynamic
set sdn "ali1"
set filter "SecurityGroupId=sg-rj9bp5ax5kwy3gqdizqb"
next
end
 3. Confirm that the AliCloud SDN connector resolves dynamic firewall IP addresses using the configured filter:   
config firewall address
edit "ali-address-security"
set type dynamic
set sdn "ali1"
set filter "SecurityGroupId=sg-rj9bp5ax5kwy3gqdizqb"
config list
edit "10.0.0.16"
next
edit "10.0.0.17"
next
edit "10.0.0.20"
next
end
next
end

AWS SDN connector using certificates

FortiOS automatically updates dynamic addresses for AWS using an AWS SDN connector, including mapping attributes 
from AWS instances to dynamic address groups in FortiOS. 
Configuring the SDN connector using the GUI, then checking the configuration using the CLI is recommended.

To configure an AWS SDN connector using the GUI:

 1. Configure the AWS SDN connector:
 a. Go to Security Fabric > External Connectors.
 b. Click Create New, and select Amazon Web Services (AWS).
 c. In the Access key ID field, enter the key created in the AWS management portal.   
 d. In the Secret access key field, enter the secret access key accompanying the above access key.

FortiOS 6.4.6 Administration Guide 288


Fortinet Technologies Inc.
Fortinet Security Fabric

 e. In the Region name field, enter the region name. Refer to AWS Regions and Endpoints for the desired region 


name.
 f. In the VPC ID field, enter the VPC ID within the specified region you desire to cover with the SDN connector.   
 g. Click OK.
 2. Check the configuration using the CLI:   
config system sdn-connector
edit "<connector-name>"
show
The output resembles the following:
config system sdn-connector
edit "<connector-name>"
set access-key "<example-access-key>"
set secret-key ENC <example-secret-key>
set region "us-west-2"
set vpc-id "vpc-e1e4b587"
set update-interval 1
next
end
If you see that the SDN connector is not enabled in Security Fabric > External Connectors in the  GUI, run the 
following commands to enable the SDN connector:
diagnose deb application awsd -1
diagnose debug enable
The output may display an error like the following:
FGT # awsd sdn connector AWS_SDN prepare to update
awsd sdn connector AWS_SDN start updating
aws curl response err, 403
<?xml version="1.0" encoding="UTF-8"?>
<Response><Errors><Error><Code>UnauthorizedOperation</Code><Message>You are not
authorized to perform this
operation.</Message></Error></Errors><RequestID>8403cc11-b185-41da-ad6d-
23bb4db7d00a</RequestID></Response>
awsd curl failed 403
awsd sdn connector AWS_SDN failed to get instance list
aws curl response err, 403
{"Message":"User: arn:aws:iam::956224459807:user/jcarcavallo is not authorized to
perform: eks:ListClusters on resource: arn:aws:eks:us-east-
1:956224459807:cluster/*"}
awsd sdn connector AWS_SDN get EKS cluster list failed
awsd sdn connector AWS_SDN list EKS cluster failed
awsd sdn connector AWS_SDN start updating IP addresses
awsd sdn connector AWS_SDN finish updating IP addresses
awsd reap child pid: 569
In this case, you must configure power user access for the current administrator in the AWS management console:

After configuring power user access, run the following commands:

FortiOS 6.4.6 Administration Guide 289


Fortinet Technologies Inc.
Fortinet Security Fabric

diagnose deb application awsd -1


diagnose debug enable
The output should display without error, as follows:
FGT # AWSD: update sdn connector AWS_SDN status to enabled
awsd sdn connector AWS_SDN prepare to update
awsd sdn connector AWS_SDN start updating
awsd get ec2 instance info successfully
awsd sdn connector AWS_SDN start updating IP addresses
awsd sdn connector AWS_SDN finish updating IP addresses
awsd reap child pid: 893
The AWS connector is now enabled.
 3. Create a dynamic firewall address for the configured AWS SDN connector:
 a. Go to Policy & Objects > Addresses.
 b. Click Create New, then select Address.
 c. From the Type dropdown list, select Dynamic.
 d. From the Sub Type dropdown list, select Fabric Connector Address.

FortiOS 6.4.6 Administration Guide 290


Fortinet Technologies Inc.
Fortinet Security Fabric

 e. In the Filter field, add the desired filters. The following filters are supported:

Description Key Example value

Architecture architecture x86

Autoscaling group AutoScaleGroup 10703c-4f731e90-fortigate-


payg-auto-scaling-group

AZ placement.availabilityzone us-east-1a

Group name placement.groupname  

Image ID imageId ami-123456

Instance ID instanceId i-12345678

Instance type instanceType t2.micro

Key name keyName  

Kubernetes cluster k8s_cluster  

Kubernetes label and its name k8s_label.Name  

Kubernetes namespace k8s_namespace  

Kubernetes node name k8s_nodename  

Kubernetes pod name k8s_podname  

Kubernetes region k8s_region  

Kubernetes service name k8s_servicename  

Kubernetes zone k8s_zone  

Private DNS name privateDnsName ip-172-31-10-211.us-west-


2.compute.internal

Public DNS name publicDnsName ec2-54-202-168-254.us-west-


2.compute.amazonaws.com

Security group ID SecurityGroupId  

Subnet ID subnetId sub-123456

Tag and its name. This key supports  tag.Name  
a maximum of eight tags.

Tenancy placement placement.tenancy  

VPC ID VpcId  

FortiOS 6.4.6 Administration Guide 291


Fortinet Technologies Inc.
Fortinet Security Fabric

 4. Ensure that the AWS SDN connector resolves dynamic firewall IP addresses:
 a. Go to Policy & Objects > Addresses.
 b. Hover over the address created in step 2 to see a list of IP addresses for instances that belong to the security 
group configured in step 2.
The following is an example for a public SDN address type:

The following is an example for a private SDN address type:

To configure AWS SDN connector using CLI commands:

 1. Configure the AWS connector:   
config system sdn-connector
edit "<connector-name>"
set access-key "<example-access-key>"
set secret-key ENC <example-secret-key>
set region "us-west-2"
set vpc-id "vpc-e1e4b587"
set update-interval 1
next
end
 2. Create a dynamic firewall address for the configured AWS SDN connector with the supported filter:
config firewall address
edit "aws-ec2"
set type dynamic
set sdn "<connector-name>"
set filter "SecurityGroupId=sg-05f4749cf84267548"
set sdn-addr-type public
next

FortiOS 6.4.6 Administration Guide 292


Fortinet Technologies Inc.
Fortinet Security Fabric

edit "aws-eks1"
set type dynamic
set sdn "<connector-name>"
set filter "K8S_Region=us-west-2"
next
end
 3. Confirm that the AWS SDN connector resolves dynamic firewall IP addresses using the configured filter:   
config firewall address
edit "aws-ec2"
set type dynamic
set sdn "<connector-name>"
set filter "SecurityGroupId=sg-05f4749cf84267548"
set sdn-addr-type public
config list
edit "34.222.246.198"
next
edit "54.188.139.177"
next
edit "54.218.229.229"
next
end
next
edit "aws-eks1"
set type dynamic
set sdn "<connector-name>"
set filter "K8S_Region=us-west-2"
config list
edit "192.168.114.197"
next
edit "192.168.167.20"
next
edit "192.168.180.72"
next
edit "192.168.181.186"
next
edit "192.168.210.107"
next
end
next
end

To add an EC2 instance to test automatic address population:

 1. Assume that you want to boot up another instance with an IP address of 34.222.246.178, which is currently 
stopped. This instance belongs to the security group that the aws-ec2 address is filtering for. In the AWS 
management portal, start the instance.   
 2. Verify that the instance is running.   
 3. At this point, running show again shows the SDN connector has automatically populated and added the  
34.222.246.178 instance.   
config firewall address
edit "aws-ec2"
set type dynamic
set sdn "<connector-name>"
set filter "SecurityGroupId=sg-05f4749cf84267548"
set sdn-addr-type public

FortiOS 6.4.6 Administration Guide 293


Fortinet Technologies Inc.
Fortinet Security Fabric

config list
edit "34.222.246.198"
next
edit "54.188.139.177"
next
edit "54.218.229.229"
next
edit "34.222.246.178"
next
end
next
end
Therefore, administrators do not need to add this instance to the address manually. When a firewall policy is applied 
to this address,  3
  4.222.246.178 is automatically covered.

Azure SDN connector using service principal

FortiOS automatically updates dynamic addresses for Azure using Azure SDN connector, including mapping attributes 
from Azure instances to dynamic address groups in FortiOS.

To configure the Azure SDN connector using service principal:

 1. Create an Azure SDN connector:
 a. Go to Security Fabric > External Connectors and click Create New.
 b. Select Microsoft Azure.
 c. Configure the connector. See Azure SDN connector service principal configuration requirements:

 d. Click OK.
 2. Create a dynamic firewall address for the Azure connector.
 a. Go to Policy & Objects > Addresses and click Create New > Address.
 b. From the Type dropdown list, select Dynamic.
 c. From the Sub Type dropdown list, select Fabric Connector Address.
 d. From the SDN Connector dropdown list, select the Azure SDN connector.

FortiOS 6.4.6 Administration Guide 294


Fortinet Technologies Inc.
Fortinet Security Fabric

 e. In the Filter field,  add filters as desired. The Azure SDN connector supports the following filters:
 l vm=<VM name>
 l securitygroup=<nsg id>
 l vnet=<VNet id>
 l subnet=<subnet id>
 l vmss=<VM scale set>
 l tag.<key>=<value>
 l servicetag=<value>
 l tag.<key>=<value>
 f. Click OK.
 g. Hover the cursor over the address name to see the dynamic IP addresses that the connector resolves.

Cisco ACI SDN connector using a standalone connector

Cisco ACI (Application Centric Infrastructure) SDN connectors can be used in dynamic firewall addresses.
The Fortinet SDN Connector for Cisco ACI and Nuage Networks is a standalone connector that connects to SDN 
controllers within Cisco ACI and Nuage Networks. You must configure a connection to the Fortinet SDN connector in 
FortiOS to query the dynamic addresses.

To configure a Cisco ACI connector in the GUI:

 1. Create the Cisco ACI SDN connector:
 a. Go to Security Fabric > External Connectors and click Create New.
 b. In the Private SDN section, click Application Centric Infrastructure (ACI). 
 c. In the Cisco ACI Connector section, for Type, select Fortinet SDN Connector and configure the remaining 
settings as needed.
 d. Click OK.

FortiOS 6.4.6 Administration Guide 295


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. Create the dynamic firewall address for the connector:
 a. Go to Policy & Objects > Addresses and click Create New > Address.
 b. Configure the following settings:
 i. For Type, select Dynamic.
 ii. For Sub Type, select Fabric Connector Address.
 iii. For SDN Connector, select the first ACI connector.
 iv. Configure the remaining settings as needed.
 c. Click OK.

To verify the dynamic firewall IPs are resolved by the SDN connector in the GUI:

 1. Go to Policy & Objects > Addresses.


 2. In the address table, hover over the address to view which IPs it resolves to.

To configure a Cisco ACI connector in the CLI:

 1. Create the SDN connector:
config system sdn-connector
edit "aci1"
set type aci
set server "172.18.64.31"
set username "admin"
set password xxxxxxx
next
end

 2. Create the dynamic firewall address for the connector:
config firewall address
edit "aci-address1"
set type dynamic
set sdn "aci1"
set color 17
set tenant "wqdai-ten"

FortiOS 6.4.6 Administration Guide 296


Fortinet Technologies Inc.
Fortinet Security Fabric

set epg-name "EPG-in"


set sdn-tag "fffff"
next
end

To verify the dynamic firewall IPs are resolved by the SDN connector in the CLI:

# diagnose firewall dynamic list

List all dynamic addresses:


aci1.aci.wqdai-ten.EPG-in.fffff: ID(171)
ADDR(192.168.100.20)

ClearPass endpoint connector via FortiManager

ClearPass Policy Manager (CPPM) is a network access system that can send information about authenticated users to 
third party systems, such as a FortiGate or FortiManager.
In this example, communications are established between CPPM and FortiManager, and then the FortiManager 
forwards information to a managed FortiGate. On the FortiGate, the user information can be used in firewall policies and 
added to FSSO dynamic addresses.

Configure the FortiManager

Establish communications between FortiManager and CPPM so that FortiManager can synchronize CPPM user groups. 
See Creating a ClearPass connector in the FortiManager Administration Guide.

FortiManager forwards the group information to managed FortiGates.

FortiOS 6.4.6 Administration Guide 297


Fortinet Technologies Inc.
Fortinet Security Fabric

Adding CPPM FSSO user groups to a local user group

To add CPPM user groups to a local user group in the GUI:

 1. On the FortiGate, go to User & Authentication > User Groups.


 2. Click Create New.
 3. Enter a name for the group and set Type to Fortinet Single Sign-On (FSSO).
 4. Click the Members field, and add one or more FSSO groups.
FSSO groups can come from multiple sources; CPPM FSSO groups are prefixed with cp_ and are listed under the 
FortiManager heading.

 5. Click OK.

To add CPPM user groups to a local user group in the CLI:

config user group


edit fsso-group
set group-type fsso-service
set member "cp_test_[Employee]" "cp_test_FSSOROLE"
next
end

Using the local FSSO user group in a firewall policy

To add the local FSSO user group to a firewall policy in the GUI:

 1. Go to Policy & Objects > Firewall Policy.


 2. Create a new policy, or edit an existing one.

FortiOS 6.4.6 Administration Guide 298


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. Click in the Source field and add the fsso-group user group.

CPPM user groups can also be added directly to the policy.
 4. Click OK.

To add the local FSSO user group to a firewall policy in the CLI:

config firewall policy


edit 1
set name "pol1"
set srcintf "port2"
set dstintf "port3"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set groups "fsso-group"
set nat enable
next
end

Verification

To verify that a user was added to the FSSO list on the FortiGate:

 1. Log on to the client and authenticate with CPPM.
After successful authentication, the user is added to the FSSO list on the FortiGate.

FortiOS 6.4.6 Administration Guide 299


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. On the FortiGate, go to Monitor > Firewall User Monitor to verify that the user was added.

The user group cp_test_FSSOROLE is listed separately because the user is a member of that group on the CPPM.

To verify that traffic can pass the firewall:

 1. Log on to the client and browse to an external website.
 2. On the FortiGate, go to FortiView > Sources.
 3. Double-click on the user and select the Destinations tab to verify that traffic is being passed by the firewall.

To verify the user address groups:

show user adgrp


config user adgrp
edit "cp_test_FSSOROLE"
set server-name "FortiManager"
next
edit "cp_test_[AirGroup v1]"
set server-name "FortiManager"
next
edit "cp_test_[AirGroup v2]"
set server-name "FortiManager"
next
edit "cp_test_[Aruba TACACS read-only Admin]"
set server-name "FortiManager"
next
edit "cp_test_[Aruba TACACS root Admin]"
set server-name "FortiManager"
next
edit "cp_test_[BYOD Operator]"
set server-name "FortiManager"
next
edit "cp_test_[Contractor]"
set server-name "FortiManager"
next
edit "cp_test_[Device Registration]"
set server-name "FortiManager"
next
...

FortiOS 6.4.6 Administration Guide 300


Fortinet Technologies Inc.
Fortinet Security Fabric

edit "CN=group1,OU=Testing,DC=Fortinet-FSSO,DC=COM"
set server-name "Local FSSO Agent" <----- !!!
next
end

GCP SDN connector using service account

FortiOS automatically updates dynamic addresses for GCP using a GCP SDN connector, including mapping attributes 
from GCP instances to dynamic address groups in FortiOS.

To configure GCP connector using the GUI:

 1. In FortiOS, go to Security Fabric > External Connectors.


 2. Click Create New, and select Google Cloud Platform (GCP).   
Note you can create only one SDN Connector per connector type. For example, you can create one entry for GCP.
 3. Configure the connector as follows:
 a. Project name: Enter the name of the GCP project. The VMs whose IP addresses you want to populate should 
be running within this project.
 b. Service account email: Enter the  email address associated with the service account that will call APIs to the 
GCP project specified above.
 c. Private key: Enter the private key statement as shown in the text box. For details, see Creating a GCP service 
account.

Once the connector is successfully configured, a green indicator appears at the bottom right corner. If the indicator 
is red, the connector is not working. See Troubleshooting GCP SDN Connector.
 4. Create a dynamic firewall address for the configured GCP SDN connector:
 a. Go to Policy & Objects > Addresses. Click Create New, then select Address.
 a. Configure the address:
 i. Name: Enter the desired name.
 ii. Type: Select Dynamic.

FortiOS 6.4.6 Administration Guide 301


Fortinet Technologies Inc.
Fortinet Security Fabric

 iii. Fabric Connector Type: Select Google Cloud Platform (GCP).


 iv. Filter: The SDN connector automatically populates and updates only instances that match this filtering 
condition. Currently GCP supports the following filters:   
 i. id=<instance id>  : This matches an VM instance ID.
 ii. name=<instance name> : This matches a VM instance name.
 iii. zone=<gcp zones> : This matches a zone name.
 iv. network=<gcp network name> : This matches a network name.
 v. subnet=<gcp subnet name> : This matches a subnet name.
 vi. tag=<gcp network tags> : This matches a network tag.
 vii. label.<gcp label key>=<gcp label value> : This matches a free form GCP label key and 
its value.
In the example, the filter is set as 'network=default & zone=us-central-1f’. This configuration 
populates all IP addresses that belong to the default network in the zone us-central-1f.
You can set filtering conditions using multiple entries with AND ("&") or OR ("|"). When both AND and OR 
are specified, AND is interpreted first, then OR.
Note that wildcards (such as the asterisk) are not allowed in filter values.

 v. Click OK.
The address has been created. Wait for a few minutes before the setting takes effect. You will know that the 
address is in effect when the exclamation mark disappears from the address entry. When you hover over the 
address, you can see the list of populated IP addresses.

FortiOS 6.4.6 Administration Guide 302


Fortinet Technologies Inc.
Fortinet Security Fabric

If the exclamation mark does not disappear, check the address settings.

IBM Cloud SDN connector using API keys

FortiOS can automatically update dynamic addresses for IBM Cloud using an SDN connector. 

To configure IBM Cloud SDN connectors using the GUI:

 1. Create SDN connectors for compute generation 1 and 2:
 a. Go to Security Fabric > External Connectors.
 b. Click Create New, then select IBM Cloud.
 c. Configure the connector for computer generation 1:

 d. Click OK.
 e. Click Create New, then select IBM Cloud.
 f. Configure the connector for computer generation 2:

 g. Click OK.
 2. Create dynamic firewall addresses for the configured connectors:
 a. Go to Policy & Objects > Addresses.
 b. Click Create New > Address.
 c. From the Type dropdown list, select Dynamic.
 d. From the Sub Type dropdown list, select Fabric Connector Address.
 e. From the SDN Connector dropdown list, select the IBM SDN connector.

FortiOS 6.4.6 Administration Guide 303


Fortinet Technologies Inc.
Fortinet Security Fabric

 f. In the Filter field, add the desired filters. The following filters are supported:
 l <InstanceId>
 l <InstanceName>
 l <ImageId>
 l <ImageName>
 l <Architecture>
 l <Profile>
 l <Vpc>
 l <Zone>
 l <Subnet>
 l <ResourceGroup>

 g. Click OK.
 h. Click Create New > Address.
 i. Repeat the process for computer generation 2:

 j. Click OK.
 3. Ensure that the connectors resolve dynamic firewall IP addresses:
 a. Go to Policy & Objects > Addresses.
 b. Hover over the addresses created in step 2 to see a list of IP addresses that the connector has resolved:

FortiOS 6.4.6 Administration Guide 304


Fortinet Technologies Inc.
Fortinet Security Fabric

To configure IBM Cloud SDN connectors using the CLI:

 1. Create SDN connectors for compute generation 1 and 2:
config system sdn-connector
edit "ibm_gen1"
set status enable
set type ibm
set api-key xxxxxx
set compute-generation 1
set ibm-region us-south
set update-interval 60
next
edit "ibm_gen2"
set status enable
set type ibm
set api-key xxxxxx
set compute-generation 2
set ibm-region us-east
set update-interval 60
next
end

 2. Create dynamic firewall addresses for the configured connectors:
config firewall address
edit "ibm_gen1_add1"
set type dynamic
set sdn "ibm_gen1"
set color 19
set filter "Vpc=alex-vpc1"
next
edit "ibm_gen2_add1"
set type dynamic
set sdn "ibm_gen2"
set color 19
set filter "ResourceGroup=alex-grp2"
next
end

 3. Ensure that the connectors resolve dynamic firewall IP addresses:
# show firewall address ibm_gen1_add1
config firewall address
edit "ibm_gen1_add1"
set uuid 586841c4-7f46-51ea-dc66-dbf840af03d3
set type dynamic
set sdn "ibm_gen1"
set color 19
set filter "Vpc=alex-vpc1"
config list
edit "10.240.0.49"
next
edit "10.240.0.75"
next
edit "169.61.227.88"
next
edit "52.117.170.31"

FortiOS 6.4.6 Administration Guide 305


Fortinet Technologies Inc.
Fortinet Security Fabric

next
end
next
end
# show firewall address ibm_gen2_add1
config firewall address
edit "ibm_gen2_add1"
set uuid 5868c4f0-7f46-51ea-2b79-b5170fbfd4a8
set type dynamic
set sdn "ibm_gen2"
set color 19
set filter "ResourceGroup=alex-grp2"
config list
edit "10.241.128.4"
next
edit "10.241.128.5"
next
edit "10.241.129.4"
next
edit "52.117.126.69"
next
end
next
end

Kubernetes (K8s) SDN connectors

The following topics provide information about configuring Kubernetes SDN connectors:
 l AWS Kubernetes (EKS) SDN connector using access key on page 306
 l Azure Kubernetes (AKS) SDN connector using client secret on page 309
 l GCP Kubernetes (GKE) SDN connector using service account on page 311
 l Oracle Kubernetes (OKE) SDN connector using certificates on page 314
 l Private cloud K8s SDN connector using secret token on page 317

AWS Kubernetes (EKS) SDN connector using access key

AWS SDN connectors support dynamic address groups based on AWS Kubernetes (EKS) filters. 

To enable an AWS SDN connector to fetch IP addresses from AWS Kubernetes:

 1. Go to Security Fabric > External Connectors. Click Create New, then select Amazon Web Services (AWS). 
Configure the SDN connector as desired. See AWS SDN connector using certificates on page 288

FortiOS 6.4.6 Administration Guide 306


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. Go to Policies & Objects > Addresses. Click Create New > Address to create a dynamic firewall address for the 


configured SDN connector using the supported Kubernetes filter.
 3. From the Type dropdown list, select Dynamic.
 4. From the Sub Type dropdown list, select Fabric Connector Address.
 5. From the SDN Connector dropdown list, select the desired SDN connector.
 6. In the Filter field, add the desired filters. The following filters are supported:

Filter Description

k8s_cluster Name of Kubernetes cluster.

k8s_namespace Namespace of a Kubernetes service or pod.

k8s_svcname Name of a Kubernetes service.

k8s_nodename Name of a Kubernetes node.

k8s_zone Zone of a Kubernetes node.

k8s_region Region of a Kubernetes node.

k8s_podname Name of a Kubernetes pod.

k8s_label.xxx Name of label of a Kubernetes resource (cluster/service/node/pod).

FortiOS 6.4.6 Administration Guide 307


Fortinet Technologies Inc.
Fortinet Security Fabric

 7. Configure the rest of the settings, then click OK.
 8. Ensure that  the SDN connector resolves the dynamic firewall address IP addresses by going to Policy & Objects >
Addresses and hovering over the newly created address.

To configure an AWS Kubernetes SDN connector through the CLI:

 1. Configure the SDN connector:
config system sdn-connector
edit "aws1"
set type aws
set access-key "AKIAIJNKE75ANVN5AEQA"
set secret-key xxxxx
set region "us-west-2"
set update-interval 30
next
end
 2. Create a dynamic firewall address for the SDN connector with a supported Kubernetes filter:
config firewall address
edit "aws-pod"
set type dynamic
set sdn "aws1"
set filter "K8S_PodName=aws-node-g6zhx"
next
end
The SDN connector resolves the dynamic firewall address IP address:
config firewall address
edit "aws-pod"
set type dynamic
set sdn "aws1"

FortiOS 6.4.6 Administration Guide 308


Fortinet Technologies Inc.
Fortinet Security Fabric

set filter "K8S_PodName=aws-node-g6zhx"


config list
edit "192.168.114.197"
next
end
next
end

Azure Kubernetes (AKS) SDN connector using client secret

Azure SDN connectors support dynamic address groups based on Azure Kubernetes (AKS) filters. 

To enable an Azure SDN connector to fetch IP addresses from Azure Kubernetes:

 1. Configure the Azure SDN connector:
 a. Go to Security Fabric > External Connectors.
 b. Click Create New, and select Azure.
 c. Configure as shown substituting the region, tenant and client IDs, and client secret for your deployment. See 
Azure SDN connector service principal configuration requirements.

 2. Create a dynamic firewall address for the configured K8s SDN connector:
 a. Go to Policy & Objects > Addresses.
 b. Click Create New, then select Address.
 c. From the Type dropdown list, select Dynamic.
 d. From the Sub Type dropdown list, select Fabric Connector Address.
 e. From the SDN Connector dropdown list, select the desired SDN connector.
 f. In the Filter field, add the desired filter. The following filters are supported:  

Filter Description

k8s_cluster Name of Kubernetes cluster.

k8s_namespace Namespace of a Kubernetes service or pod.

FortiOS 6.4.6 Administration Guide 309


Fortinet Technologies Inc.
Fortinet Security Fabric

Filter Description

k8s_svcname Name of a Kubernetes service.

k8s_nodename Name of a Kubernetes node.

k8s_zone Zone of a Kubernetes node.

k8s_region Region of a Kubernetes node.

k8s_podname Name of a Kubernetes pod.

k8s_label.xxx Name of label of a Kubernetes resource (cluster/service/node/pod).

In this example, the address is configured to automatically populate and update IP addresses only for 
instances that belong to the zhmKC cluster: 

 3. Ensure that the K8s SDN connector resolves dynamic firewall IP addresses:
 a. Go to Policy & Objects > Addresses.
 b. Hover over the address created in step 2 to see a list of IP addresses for instances that belong to the 
zhmKC cluster as configured in step 2:

FortiOS 6.4.6 Administration Guide 310


Fortinet Technologies Inc.
Fortinet Security Fabric

To configure an Azure Kubernetes SDN connector through the CLI:

 1. Configure the SDN connector:
config system sdn-connector
edit "azure1"
set type azure
set tenant-id "942b80cd-1b14-42a1-8dcf-4b21dece61ba"
set client-id "14dbd5c5-307e-4ea4-8133-68738141feb1"
set client-secret xxxxx
set update-interval 30
next
end
 2. Create a dynamic firewall address for the SDN connector with a supported Kubernetes filter. In this example, the 
address will automatically populate and update IP addresses only for instances that belong to the zhmKC cluster:
config firewall address
edit "az-k8s-cluster"
set type dynamic
set sdn "azure1"
set filter "K8S_Cluster=zhmKC"
next
end
 3. Confirm that the Azure SDN connector resolves dynamic firewall IP addresses using the configured filter:   
config firewall address
edit "az-k8s-cluster"
set type dynamic
set sdn "azure1"
set filter "K8S_Cluster=zhmKC"
config list
edit "10.240.0.4"
next
edit "10.240.0.5"
next
edit "10.244.0.10"
next
end
next
end

GCP Kubernetes (GKE) SDN connector using service account

Google Cloud Platform (GCP) SDN connectors support dynamic address groups based on GCP Kubernetes Engine 
(GKE) filters. 

FortiOS 6.4.6 Administration Guide 311


Fortinet Technologies Inc.
Fortinet Security Fabric

To enable a GCP SDN connector to fetch IP addresses from GKE:

 1. Go to Security Fabric > External Connectors, and configure an SDN connector for GCP.

 2. Go to Policies & Objects > Addresses and create a dynamic firewall address for the configured SDN connector 


using the supported Kubernetes filter. 
 3. To filter out the Kubernetes IP addresses, select the address filter or filters.  T
  he following filters are supported:

Filter Description

k8s_cluster Name of Kubernetes cluster.

k8s_namespace Namespace of a Kubernetes service or pod.

k8s_svcname Name of a Kubernetes service.

k8s_nodename Name of a Kubernetes node.

k8s_zone Zone of a Kubernetes node.

k8s_region Region of a Kubernetes node.

k8s_podname Name of a Kubernetes pod.

k8s_label.xxx Name of label of a Kubernetes resource (cluster/service/node/Pod).

In this example, the GCP SDN connector will automatically populate and update IP addresses only for instances 
that belong to the zhm-kc3 cluster:

FortiOS 6.4.6 Administration Guide 312


Fortinet Technologies Inc.
Fortinet Security Fabric

 4. Configure the rest of the settings, then click OK.
The dynamic firewall address IP is resolved by the SDN connector.

To configure a GCP Kubernetes SDN connector through the CLI:

 1. Configure an SDN connector for Kubernetes:
config system sdn-connector
edit "gcp1"
set type gcp
set gcp-project "dev-project-001-166400"
set service-account "[email protected]"
set update-interval 30
next
end
 2. Create a dynamic firewall address for the SDN connector with a supported Kubernetes filter:
config firewall address
edit "gcp-k8s-cluster"

FortiOS 6.4.6 Administration Guide 313


Fortinet Technologies Inc.
Fortinet Security Fabric

set type dynamic


set sdn "gcp1"
set filter "K8S_Cluster=zhm-kc3"
next
end
The dynamic firewall address IP is resolved by the SDN connector:
config firewall address
edit "gcp-k8s-cluster"
set type dynamic
set sdn "gcp1"
set filter "K8S_Cluster=zhm-kc3"
config list
edit "10.0.2.4"
next
edit "10.0.2.7"
next
edit "10.28.0.13"
next
end
next
end

Oracle Kubernetes (OKE) SDN connector using certificates

OCI SDN connectors support dynamic address groups based on Oracle Kubernetes (OKE) filters.

To enable an OCI SDN connector to fetch IP addresses from Oracle Kubernetes:

 1. Configure the OCI SDN connector:
 a. Go to Security Fabric > External Connectors.
 b. Click Create New, and select Oracle Cloud Infrastructure (OCI).
 c. Configure as shown substituting the region, tenant and client IDs, and client secret for your deployment. The 
update interval is in seconds.   

FortiOS 6.4.6 Administration Guide 314


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. Create dynamic firewall addresses for the configured SDN connector with supported Kubernetes filter:
 a. Go  to Policy & Objects > Addresses.
 b. Click Create New, then select Address.
 c. In the Filter field, select the desired filters. The following filters are supported:   

Filter Description

k8s_cluster Name of Kubernetes cluster.

k8s_namespace Namespace of a Kubernetes service or pod.

k8s_svcname Name of a Kubernetes service.

k8s_nodename Name of a Kubernetes node.

k8s_zone Zone of a Kubernetes node.

k8s_region Region of a Kubernetes node.

k8s_podname Name of a Kubernetes pod.

k8s_label.xxx Name of label of a Kubernetes resource (cluster/service/node/Pod).

FortiOS 6.4.6 Administration Guide 315


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. Confirm that the SDN connector resolves dynamic firewall IP addresses:
 a. Go to Policy & Objects > Addresses.
 b. Hover over the address created in step 2 to see a list of IP addresses for instances:

To configure an SDN connector through the CLI:

 1. Configure the OCI SDN connector:
config system sdn-connector
edit "oci1"
set type oci
set tenant-id
"ocid1.tenancy.oc1..aaaaaaaambr3uzztoyhweohbzqqdo775h7d3t54zpmzkp4b2cf35vs5
5cxxx"
set user-id
"ocid1.user.oc1..aaaaaaaaq2lfspeo3uetzbzpiv2pqvzzevozccnys347stwssvizqlatfx
xx"
set compartment-id
"ocid1.compartment.oc1..aaaaaaaaelxxdjazqo7nzczpgypyiqcgkmytjry6nfq5345vw7e
avpwnmxxx"
set oci-region ashburn
set oci-cert "cert-sha2"
set update-interval 30
next
end
 2. Create dynamic firewall addresses for the configured SDN connector with supported Kubernetes filter:
config firewall address
edit "k8s_nodename"
set type dynamic
set sdn "oci1"
set filter "K8S_NodeName=129.213.120.172"
next
end
 3. Confirm that the SDN connector resolves dynamic firewall IP addresses:   
config firewall address
edit "k8s_nodename"
set type dynamic

FortiOS 6.4.6 Administration Guide 316


Fortinet Technologies Inc.
Fortinet Security Fabric

set sdn "oci1"


set filter "K8S_NodeName=129.213.120.172"
config list
edit "10.0.32.2"
next
edit "10.244.2.2"
next
edit "10.244.2.3"
next
edit "10.244.2.4"
next
edit "10.244.2.5"
next
end
next
end

Private cloud K8s SDN connector using secret token

FortiOS automatically updates dynamic and cluster IP addresses for Kubernetes (K8s) by using a K8s SDN connector, 
enabling FortiOS to manage K8s pods as global address objects, as with other connectors. This includes mapping the 
following attributes from K8s instances to dynamic address groups in FortiOS:

Filter Description

Namespace Filter service IP addresses in a given namespace.

ServiceName Filter service IP addresses by the given service name.

NodeName Filter node IP addresses by the given node name.

PodName Filter IP addresses by the pod name.

Label.XXX Filter service or node IP addresses with the given label XXX.  For example: K8S_
Label.app=nginx.

FortiOS 6.2.3 and later collects cluster IP addresses in addition to external IP addresses for exposed K8s services.

There is no maximum limit for the number of IP addresses populated with the filters.

To configure K8s SDN connector using the GUI:

 1. Configure the K8s SDN connector:
 a. Go to Security Fabric > External Connectors > Create New Connector.
 b. Select Kubernetes.
 c. In the IP field, enter the IP address that you obtained in Obtaining the IP address, port, and secret token in 
Kubernetes.
 d. In the Port field,   select Specify, then enter the port that you obtained in Obtaining the IP address, port, and 
secret token in Kubernetes.

FortiOS 6.4.6 Administration Guide 317


Fortinet Technologies Inc.
Fortinet Security Fabric

 e. In the Secret token field, enter the token that you obtained in Obtaining the IP address, port, and secret token in 


Kubernetes.
 f. Configure the other fields as desired.
 2. Create a dynamic firewall address for the configured K8S SDN connector:
 a. Go to Policy & Objects > Addresses.
 b. Click Create New, then select Address.
 c. Configure the address as shown, selecting the desired filter in the Filter dropdown list. In this example, the 
K8s SDN connector will automatically populate and update IP addresses only for node instances that match 
the specified node name:

 3. Ensure that the K8s SDN connector resolves dynamic firewall IP addresses:
 a. Go to Policy & Objects > Addresses.
 b. Hover over the address created in step 2 to see a list of IP addresses for node instances that match the node 
name configured in step 2:

To configure K8s SDN connector using CLI commands:

 1. Configure the K8s SDN connector:   
config system sdn-connector
edit "kubernetes1"
set type kubernetes

FortiOS 6.4.6 Administration Guide 318


Fortinet Technologies Inc.
Fortinet Security Fabric

set server "<IP address obtained in Obtaining the IP address, port, and secret
token in Kubernetes>"
set server-port <Port obtained in Obtaining the IP address, port, and secret token
in Kubernetes>
set secret-token <Secret token obtained in Obtaining the IP address, port, and
secret token in Kubernetes>
set update-interval 30
next
end
 2. Create a dynamic firewall address for the configured K8s SDN connector with the supported K8s filter. In this 
example, the K8s SDN connector will automatically populate and update IP addresses only for node instances that 
match the specified node name:   
config firewall address
edit "k8s_nodename"
set type dynamic
set sdn "kubernetes1"
set filter "K8S_NodeName=van-201669-pc1"
next
end
 3. Confirm that the K8s SDN connector resolves dynamic firewall IP addresses  using the configured filter:   
config firewall address
edit "k8s_nodename"
set type dynamic
set sdn "kubernetes1"
set filter "K8S_NodeName=van-201669-pc1"
config list
edit "172.16.65.227"
next
end
next
end

To troubleshoot the connection:

 1. In FortiOS, run the following commands:   
diagnose deb application kubed -1
diagnose debug enable
 2. Reset the connection on the web UI to generate logs and troubleshoot the issue. The following shows the output in 
the case of a failure: 

The following shows the output in the case of a success:

FortiOS 6.4.6 Administration Guide 319


Fortinet Technologies Inc.
Fortinet Security Fabric

Nuage SDN connector using server credentials

You can use Nuage SDN connectors in dynamic firewall addresses.
The Fortinet SDN Connector for Cisco ACI and Nuage Networks is a standalone connector that connects to SDN 
controllers within Cisco ACI and Nuage Networks. You must configure a connection to the Fortinet SDN connector in 
FortiOS to query the dynamic addresses.

To configure a Nuage connector in the GUI:

 1. Create the Nuage SDN connector:
 a. Go to Security Fabric > External Connectors and click Create New.
 b. In the Private SDN section, click Nuage Virtualized Services Platform.
 c. Configure the settings as needed.
 d. Click OK.

 2. Create the dynamic firewall address for the connector:
 a. Go to Policy & Objects > Addresses and click Create New > Address.
 b. Configure the following settings:
 i. For Type, select Dynamic.
 ii. For Sub Type, select Fabric Connector Address.

FortiOS 6.4.6 Administration Guide 320


Fortinet Technologies Inc.
Fortinet Security Fabric

 iii. For SDN Connector, select the Nuage connector.


 iv. Configure the remaining settings as needed.
 c. Click OK.

To verify the SDN connector resolves the dynamic firewall IP addresses in the GUI:

 1. Go to Policy & Objects > Addresses.


 2. In the address table, hover over an address to view which IP addresses it resolves to.

To configure a Nuage connector in the CLI:

 1. Create the SDN connector:
config system sdn-connector
edit "nuage1"
set type nuage
set server "172.18.64.27"
set server-port 5671
set username "admin"
set password xxxxxxx
next
end

 2. Create the dynamic firewall address for the connector:
config firewall address
edit "nuage-address1"
set type dynamic
set sdn "nuage1"
set color 19
set organization "nuage/L3"
set subnet-name "Subnet20"
next
end

To verify the SDN connector resolves the dynamic firewall IP addresses in the CLI:

# diagnose firewall dynamic list

List all dynamic addresses:


nuage1.nuage.nuage/L3.Subnet20.*: ID(196)

FortiOS 6.4.6 Administration Guide 321


Fortinet Technologies Inc.
Fortinet Security Fabric

ADDR(192.168.20.92)
ADDR(192.168.20.240)

OCI SDN connector using certificates

You can configure SDN connector integration with Oracle Cloud Infrastructure (OCI).

To configure an OCI SDN connector in the GUI:

 1. Go to Security Fabric > External Connectors and click Create New.


 2. In the Public SDN section, select Oracle Cloud Infrastructure (OCI).
 3. Configure the connector as desired:   
 a. User ID: Enter the OCID of the OCI user who belongs to the administrator group. See Certificate-based SDN 
connector requirements.
 b. For the OCI Certificate field, you must select a certificate that satisfies OCI key size limits. The minimum size is 
2048 bits. Do one of the following:
 i. Select the built-in default certificate called Fortinet_Factory.
 ii. Follow steps 1-2 in Using custom certificates to configure a custom certificate.

 4. Click OK.
 5. At this stage, you must register the certificate's fingerprint to the specified OCI user.
 a. Go to the OCI user, then API Keys > Add Public Key.   
 b. If you selected the Fortinet_Factory certificate in step 2f, do the following:
 i. In FortiOS, go to System > Certificate. Select Fortinet_Factory, then click Download.
 ii. You now have the Fortinet_Factory.cer file. Create a public key file in PEM format from it, using a freely 
available tool of your choice such as OpenSSL.
 c. Copy and paste the content of the certificate PEM key file in the Add Public Key window in OCI. Click Add.

FortiOS 6.4.6 Administration Guide 322


Fortinet Technologies Inc.
Fortinet Security Fabric

 d. You now see the fingerprint.   

You can configure the following for the fingerprint:
 1. Update Interval: The default value is 60 seconds. You can change the value to between 1 and 3600 
seconds.
 2. Status: Green means that the connector is enabled. You can disable it at any time by toggling the switch.
 e. Click OK.
 6. Go to Policy & Objects > Addresses and click Create New > Address.
 7. Configure the address as needed, selecting the OCI connector in the SDN Connector field. The following filters are 
supported:
'vm_name=<vm name>': matches VM instance name.
'instance_id=<instance id>': matches instance OCID.
'tag.<key>=<value>': matches freeform tag key and its value.
'definedtag.<namespace>.<key>=<value>': matches a tag namespace, tag key, and its value.

 8. Click OK.

To configure an OCI SDN connector in the CLI:

 1. Configure an SDN connector:
config system sdn-connector
edit "oci1"
set status enable
set type oci
set tenant-id
"ocid1.tenancy.oc1..aaaaaaaaaaa3aaaaaaaaaaaaaaaaa77xxxxxx54bbbbbb4xxxx35xx55xxxx"
set user-id
"ocid1.user.oc1..aaaaaaaaa2laaaaa3aaaaaaaaaabbbbbbbbbbcccc3ccccccccccxxxxxxxx"
set compartment-id
"ocid1.compartment.oc1..aaaaaaaaaaaaaaaaaa7bbbbbbbbbbcccccccccc6xxx53xxxx7xxxxxxxxxx"
set oci-region "us-ashburn-1"

FortiOS 6.4.6 Administration Guide 323


Fortinet Technologies Inc.
Fortinet Security Fabric

set oci-region-type commercial


set oci-cert "cert-sha2"
set update-interval 30
next
end

 2. Create a dynamic firewall address for the SDN connector with a supported filter:
config firewall address
edit "oci-address-1"
set type dynamic
set sdn "oci1"
set filter "CompartmentName=DevelopmentEngineering"
next
end

To confirm that dynamic firewall addresses are resolved by the SDN connector:

 1. In the CLI, check that the addresses are listed:
config firewall address
edit "oci-address-1"
set type dynamic
set sdn "oci1"
set filter "CompartmentName=DevelopmentEngineering"
config list
edit "10.0.0.11"
next
edit "10.0.0.118"
next
...
next
end
next
end

 2. In the GUI, go to Policy & Objects > Addresses and hover the cursor over the address name.

OpenStack SDN connector using node credentials

To configure OpenStack SDN connector using node credentials:

 1. Go to Security Fabric > External Connectors.   


 2. Click Create New, then select OpenStack (Horizon).   

FortiOS 6.4.6 Administration Guide 324


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. Configure the fields as follows:
 a. Name: Name the connector as desired.
 b. IP: Enter the OpenStack management component's IP address. Generally you can find it in the OpenStack 
identity.

 c. User name: Enter the specified node's administrator name.


 d. Password: Enter the administrator password.

 4. Click OK. The SDN connector is now configured.

To configure a dynamic firewall address:

The next step is to create an address that will be used as an address group or single address that acts as the 
source/destination for firewall policies. The address is based on IP addresses and contains VM instances' IP addresses.
No matter what changes occur to the instances, the SDN connector populates and updates the changes automatically 
based on the specified filtering condition so that administrators do not need to reconfigure the address content manually. 
Appropriate firewall policies using the address are applied to instances that are members of the address.

FortiOS 6.4.6 Administration Guide 325


Fortinet Technologies Inc.
Fortinet Security Fabric

 1. Go to Policy & Objects > Address. Click Create New, then select Address.   


 2. Configure the address as follows:
 a. Name: Name the address as desired.
 b. Type: Select Dynamic.
 c. Sub Type: Select Fabric Connector Address.
 d. SDN Connector: Select openstack.
 e. Filter: The SDN connector automatically populates and updates only IP addresses belonging to the specified 
filter that matches the condition. OpenStack Horizon connectors support the following filters:   
 i. id=<instance id>: This matches a VM instance ID.
 ii. name=<instance name>: This matches a VM instance name.
 iii. flavor=<instance flavor name>: This matches an instance flavor name.
 iv. keypair=<key pair name>: This matches a key pair name.
 v. network=<net name>: This matches a network name.
 vi. project=<project name>: This matches a project name.
 vii. availabilityzone=<zone name>: This matches an availability zone name.
 viii. servergroup=<group name>: This matches a server group name.
 ix. securitygroup=<security group name>: This matches a security group name.
 x. metadata.<key>=<value>: This matches metadata with its key and value pair.
You can set filtering conditions using multiple entries with AND ("&") or OR ("|"). When both AND and OR are 
specified, AND is interpreted first, then OR.
For example, you could enter flavor=m1.nano&project=admin. In this case, IP addresses of instances that 
match both the flavor name and project name are populated. Wildcards (asterisks) are not allowed in values.

In this example, let's use project=admin, assuming the project name is admin.

FortiOS 6.4.6 Administration Guide 326


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. Click OK after completing all required fields.
 4. Ensure that the address was created.   

 5. After  a few minutes, the new address takes effect. Hover your cursor on the address to see a list of IP addresses 
and instances with the project name "admin".   

FortiOS 6.4.6 Administration Guide 327


Fortinet Technologies Inc.
Fortinet Security Fabric

VMware ESXi SDN connector using server credentials

Dynamic addresses for VMware ESXi and vCenter servers can be automatically updated by using a VMware ESXi 
SDN connector, including mapping the following attributes from VMware ESXi and vCenter objects to dynamic address 
groups in FortiOS:
 l vmid
 l host
 l name
 l uuid
 l vmuuid
 l vmnetwork
 l guestid
 l guestname
 l annotation

To configure VMware ESXi SDN connector using the GUI:

 1. Configure the VMware ESXi SDN connector:
 a. Go to Security Fabric > External Connectors.
 b. Click Create New, and select VMware ESXi.
 c. Configure as shown, substituting the server IP address, username, and password for your deployment.
The update interval is in seconds. The password cannot contain single or double quotes.

 2. Create a dynamic firewall address for the configured VMware ESXi SDN connector:
 a. Go to Policy & Objects > Addresses.
 b. Click Create New, then select Address.
 c. Configure the address as shown, selecting the desired filter in the Filter dropdown list. In this example, the 
VMware ESXi fabric connector will automatically populate and update IP addresses only for instances that 

FortiOS 6.4.6 Administration Guide 328


Fortinet Technologies Inc.
Fortinet Security Fabric

belong to VLAN80:

 3. Ensure that the VMware ESXi SDN connector resolves dynamic firewall IP addresses:
 a. Go to Policy & Objects > Addresses.
 b. Hover over the address created in step 2 to see a list of IP addresses for instances that belong to VLAN80 as 
configured in step 2:

To configure VMware ESXi SDN connector using CLI commands:

 1. Configure the VMware ESXi SDN connector:   
config system sdn-connector
edit "vmware1"
set type vmware
set server "172.17.48.222"
set username "example_username"
set password xxxxx
set update-interval 30
next
end
 2. Create a dynamic firewall address for the configured VMware ESXi SDN connector with the supported VMware 
ESXi filter. In this example, the VMware ESXi SDN connector will automatically populate and update IP addresses 
only for instances that belong to the specified VLAN:   
config firewall address

FortiOS 6.4.6 Administration Guide 329


Fortinet Technologies Inc.
Fortinet Security Fabric

edit "vmware-network"
set type dynamic
set sdn "vmware1"
set filter "vmnetwork=VLAN80"
next
end
 3. Confirm that the VMware ESXi SDN connector resolves dynamic firewall IP addresses using the configured filter:   
config firewall address
edit "vmware-network"
set type dynamic
set sdn "vmware1"
set filter "vmnetwork=VLAN80"
config list
edit "192.168.8.240"
next
end
next
end

VMware NSX-T Manager SDN connector using NSX-T Manager credentials

This feature provides SDN connector configuration for VMware NSX-T manager. You can import specific groups, or all 
groups from the NSX-T Manager.

To configure SDN connector for NSX-T Manager in the GUI:

 1. Go to Security Fabric > External Connectors and click Create New.


 2. In the Private SDN section, click VMware NSX.

FortiOS 6.4.6 Administration Guide 330


Fortinet Technologies Inc.
Fortinet Security Fabric

 3. Enter the settings and click OK.

To configure SDN connector for NSX-T Manager in the CLI:

config system sdn-connector


edit "nsx_t24"
set type nsx
set server "172.18.64.205"
set username "admin"
set password xxxxxx
next
end

To import a specific group from the NSX-T Manager:

# execute nsx group import nsx_t24 root csf_ns_group


[1] 336914ba-0660-4840-b0f1-9320f5c5ca5e csf_ns_group:
Name:csf_ns_group
Address:1.1.1.0

FortiOS 6.4.6 Administration Guide 331


Fortinet Technologies Inc.
Fortinet Security Fabric

Address:1.1.1.1
Address:172.16.10.104
Address:172.16.20.104
Address:172.16.30.104
Address:2.2.2.0
Address:2.2.2.2
Address:4.4.4.0
Address:5.5.5.0
Address:6.6.6.6
Address:7.7.7.7

To import all groups from NSX-T Manager:

# execute nsx group import nsx_t24 root


[1] 663a7686-b9a3-4659-b06f-b45c908349a0 ServiceInsertion_NSGroup:
Name:ServiceInsertion_NSGroup
Address:10.0.0.2
[2] 336914ba-0660-4840-b0f1-9320f5c5ca5e csf_ns_group:
Name:csf_ns_group
Address:1.1.1.0
Address:1.1.1.1
Address:172.16.10.104
Address:172.16.20.104
Address:172.16.30.104
Address:2.2.2.0
Address:2.2.2.2
Address:4.4.4.0
Address:5.5.5.0
Address:6.6.6.6
Address:7.7.7.7
[3] c462ec4d-d526-4ceb-aeb5-3f168cecd89d charlie_test:
Name:charlie_test
Address:1.1.1.1
Address:2.2.2.2
Address:6.6.6.6
Address:7.7.7.7
[4] ff4dcb08-53cf-46bd-bef4-f7aeda9c0ad9 fgt:
Name:fgt
Address:172.16.10.101
Address:172.16.10.102
Address:172.16.20.102
Address:172.16.30.103
[5] 3dd7df0d-2baa-44e0-b88f-bd21a92eb2e5 yongyu_test:
Name:yongyu_test
Address:1.1.1.0
Address:2.2.2.0
Address:4.4.4.0
Address:5.5.5.0

FortiOS 6.4.6 Administration Guide 332


Fortinet Technologies Inc.
Fortinet Security Fabric

To view the dynamic firewall IP addresses that are resolved by the SDN connector in the GUI:

 1. Go to Policy & Objects > Addresses to view the IP addresses resolved by an SDN connector.

To view the dynamic firewall IP addresses that are resolved by the SDN connector in the CLI:

# show firewall address csf_ns_group


config firewall address
edit "csf_ns_group"
set uuid ee4a2696-bacd-51e9-f828-59457565b880
set type dynamic
set sdn "nsx_t24"
set obj-id "336914ba-0660-4840-b0f1-9320f5c5ca5e"
config list
edit "1.1.1.0"
next
edit "1.1.1.1"
next
edit "172.16.10.104"
next
edit "172.16.20.104"
next
edit "172.16.30.104"
next
edit "2.2.2.0"
next
edit "2.2.2.2"
next
edit "4.4.4.0"
next
edit "5.5.5.0"
next
edit "6.6.6.6"
next
edit "7.7.7.7"

FortiOS 6.4.6 Administration Guide 333


Fortinet Technologies Inc.
Fortinet Security Fabric

next
end
next
end

Multiple concurrent SDN connectors

You can configure multiple instances configured for every SDN connector. The specific connector instance must be 
specified when creating a dynamic firewall address.
This topic provides examples of how to create two Microsoft Azure SDN connectors and use them in new dynamic 
firewall addresses.

To create and use two new SDN connectors with the CLI:

 1. Create two new SDN connectors:
config system sdn-connector
edit "azure1"
set type azure
set tenant-id "942b80cd-bbbb-42a1-8888-4b21dece61ba"
set subscription-id "2f96c44c-cccc-4621-bbbb-65ba45185e0c"
set client-id "14dbd5cc-3333-4ea4-8888-68738141feb1"
set client-secret xxxxx
set update-interval 30
next
edit "azure2"
set type azure
set tenant-id "942b80cd-bbbb-42a1-8888-4b21dece61ba"
set client-id "3baa0acc-ffff-4444-b292-0777a2c36be6"
set client-secret xxxxx
set update-interval 30
next
end

 2. Create new dynamic firewall addresses that use the new connectors:
config firewall address
edit "azure-address-location1"
set type dynamic
set color 2
set sdn azure1
set filter "location=WestUs"
next
edit "azure-address-location2"
set type dynamic
set color 2
set sdn azure2
set filter "location=NorthEurope"
next
end

FortiOS 6.4.6 Administration Guide 334


Fortinet Technologies Inc.
Fortinet Security Fabric

To create and use two new SDN connectors with the GUI:

 1. Create two new SDN connectors:
 a. Go to Security Fabric > External Connectors, and click Create New in the toolbar.
 b. Click on Microsoft Azure.
 c. Fill in the required information, then click OK.

 d. Repeat the above steps for the second connector.

Two Microsoft Azure connectors will now be created.

FortiOS 6.4.6 Administration Guide 335


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. Create new dynamic firewall addresses that use the new connectors:
 a. Go to Policy and Objects > Addresses and click Create New > Address in the toolbar.
 b. Enter a name for the address, and select Fabric Connector Address for the Type.
 c. Select one of the previously created SDN connectors from the SDN Connector drop down list.

 d. Configure the rest of the required information, then click OK to create the address.
 e. Repeat the above steps to create the second address, selecting the other Microsoft Azure SDN connector.

Filter lookup in SDN connectors

When configuring dynamic address mappings for filters in SDN connectors for Azure, GCP, OpenStack, Kubernetes, 
and AliCloud, FortiGate can query the filters automatically.

To use the filter lookup:

 1. Navigate to Policy & Objects > Addresses.


 2. Create or edit an SDN connector type dynamic IP address.
Supported SDN connector types include: AWS, Azure, GCP, OpenStack, Kubernetes, and AliCloud. The example 
below is for an Azure SDN connector.
 3. In the address Filter field, you can perform the following actions:
 l List all available filters.

FortiOS 6.4.6 Administration Guide 336


Fortinet Technologies Inc.
Fortinet Security Fabric

 l Search the available filters.

FortiOS 6.4.6 Administration Guide 337


Fortinet Technologies Inc.
Fortinet Security Fabric

 l Create custom filters.

FortiOS 6.4.6 Administration Guide 338


Fortinet Technologies Inc.
Fortinet Security Fabric

 l Set filter logic [and|or]. 

Support for wildcard SDN connectors in filter configurations

Wildcards are supported for SDN connectors when configuring dynamic address filters.
The following SDN connector types are currently supported:
 l AWS
 l Azure
 l Google Cloud Platform
 l Kubernetes
 l OpenStack
 l Oracle Cloud Infrastructure
 l VMware ESXi

To configure a dynamic address filter for AWS in the GUI:

 1. Create the SDN connector:
 a. Go to Security Fabric > External Connectors.
 b. Click Create New.
 c. In the Public SDN section, click Amazon Web Services (AWS).
 d. Configure the settings as needed.
 e. Click OK.
 2. Create the dynamic firewall address:
 a. Go to Policy & Objects > Addresses.
 b. Click Create New > Address 
 c. Enter a name for the address, then configure the following settings:
 l Set Type to Dynamic.
 l Set Sub Type to Fabric Connector Address.
 l Set SDN Connector to aws1.

FortiOS 6.4.6 Administration Guide 339


Fortinet Technologies Inc.
Fortinet Security Fabric

 l Set SDN address type to Private.


 l For Filter, click Create, enter Tag.Name=aws*, the click OK.

 d. Click OK.
 3. In the address table, hover over the address to view what IPs it resolves to.

 4. In AWS, verify to confirm the IP addresses match.

To configure a dynamic address filter for AWS in the CLI:

 1. Configure the SDN connector:
config firewall address
edit "aws-address-1"
set type dynamic
set sdn "aws1"
set filter "Tag.Name=aws*"
set sdn-addr-type public
next
end

 2. Create the dynamic firewall address and verify where the IP addresses resolve to:
config firewall address
edit "aws-address-1"
set type dynamic
set sdn "aws1"

FortiOS 6.4.6 Administration Guide 340


Fortinet Technologies Inc.
Fortinet Security Fabric

set filter "Tag.Name=aws*"


set sdn-addr-type public
config list
edit "18.234.167.123"
next
edit "3.81.41.167"
next
edit "52.87.157.127"
next
end
next
end

 3. In AWS, verify that the IP addresses match.

Endpoint/Identity connectors

SSO fabric connectors integrate SSO authentication into the network. This allows users to enter their credentials only 
once, and have those credentials reused when accessing other network resources through the FortiGate.
The following fabric connectors are available:
 l Fortinet single sign-on agent on page 341
 l Poll Active Directory server on page 342
 l Symantec endpoint connector on page 342
 l RADIUS single sign-on  agent on page 348
 l Exchange Server connector on page 351

Fortinet single sign-on agent

To create an FSSO agent connector in the GUI:

 1. Go to Security Fabric > External Connectors.


 2. Click Create New.
 3. In the Endpoint/Identity section, click FSSO Agent on Windows AD.

 4. Fill in the Name, and Primary FSSO Agent server IP address or name and Password.

FortiOS 6.4.6 Administration Guide 341


Fortinet Technologies Inc.
Fortinet Security Fabric

 5. Optionally, add more FSSO agents by clicking the plus icon.
 6. Optionally, enable Trusted SSL certificate and select or import a certificate.
 7. Select the User group source:
 l Collector Agent: User groups will be pushed to the FortiGate from the collector agent. Click Apply & Refresh to 
fetch group filters from the collector agent.
 l Local: User groups will be specified in the FortiGate unit's configuration. Select the LDAP server from the list, 
then click Edit to select the Users, Groups, and Organizational Units. Optionally, enable Proactively retrieve
from LDAP server and configure the Search filter and Interval.
 8. Click OK.

Poll Active Directory server

The FortiGate unit can authenticate users and allow them network access based on groups membership in Windows 
Active Directory (AD).

To create an AD server connector in the GUI:

 1. Go to Security Fabric > External Connectors.


 2. Click Create New.
 3. In the Endpoint/Identity section, click Poll Active Directory Server.

 4. Fill in the Server IP/Name, User, and Password for the AD server.


 5. Select the LDAP server from the list.
 6. If necessary, disable Enable Polling. This can be used to temporarily stop the FortiGate from polling security event 
logs on the Windows logon server, for troubleshooting purposes.
 7. Click OK.

Symantec endpoint connector

With the Fabric connector for Symantec Endpoint Protection Manager (SEPM), you can use the client IP information 
from SEPM to assign to dynamic IP addresses on FortiOS.
When communication between FortiGate and SEPM is established, FortiGate polls every minute for updates via TLS 
over port 8446. You can use the CLI to change the default one minute polling interval.
For example, you can create a dynamic Fabric Connector IP address subtype and use it in firewall policies as the source 
address. The dynamic IP address contains all IP addresses sent by SEPM.

FortiOS 6.4.6 Administration Guide 342


Fortinet Technologies Inc.
Fortinet Security Fabric

This example shows a dynamic IP address with SEPM and one client PC managed by SEPM using FortiGate as the 
default gateway.

To configure SEPM on a managed client PC:

 1. In SEPM, create client packages for client hosts and group them into SEPM groups.
You can install packages locally on clients or download them directly from SEPM.

 2. When a package is installed on the client host, the host is considered managed by SEPM.
Even if the host has multiple interfaces, only one IP per host is displayed.

To configure Symantec endpoint connector on FortiGate in the GUI:

 1. Go to Security Fabric > External Connectors and click Create New:


 a. In the Endpoint/Identity section, click Symantec Endpoint Protection.
 b. Fill in the Name, and set the Status and Update Interval.
 c. Set Server to the SEPM IP address.
 d. Enter the Username and Password for the server.

FortiOS 6.4.6 Administration Guide 343


Fortinet Technologies Inc.
Fortinet Security Fabric

 e. To limit the domain or group that is monitored, enter them in the requisite fields.

 f. Click OK. 
When the connection is established, you can see a green up arrow in the bottom right of the card. You might 
need to refresh your browser to see the established connection.
 2. Go to Policy & Objects > Addresses and click Create New > Address:   
 a. Fill in the address Name.
 b. Set Type to Dynamic.
 c. Set Sub Type to Fabric Connector Address.
 d. Set SDN Connector to the fabric connector that you just created.
 e. Add Filters as needed.

 f. Click OK.

Filter options are only available for active computers that are configured and registered 
in SEPM. Free-form filters can be created manually by clicking Create and  entering the 
filter, in the format: filter_type=value.
Possible manual filter types are: GroupName, GroupID, ComputerName, 
ComputerUUID, and OSName. For example: GroupName=MyGroup.

 3. Go to Policy & Objects > Addresses and hover the cursor over the name of the new address to see the resolved IP 


addresses of the host.

FortiOS 6.4.6 Administration Guide 344


Fortinet Technologies Inc.
Fortinet Security Fabric

 4. Go to Policy & Objects > Firewall Policy, click Create New, and add a policy that uses the dynamic IP address.

To verify the configuration:

 1. On the client PC, check that it is managed by SEPM to access the Internet.

FortiOS 6.4.6 Administration Guide 345


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. On the FortiGate, you can check in Dashboard > FortiView Sources and Log & Report > Forward Traffic.

Because this traffic is not authenticated traffic but is based on source IP address only, it is 
not shown in the GUI firewall monitor or in the diagnose firewall auth list CLI 
command.

To configure Symantec endpoint connector on FortiGate in the CLI:

 1. Create the fabric connector:
config system sdn-connector
edit "sepm-217"
set type sepm
set server "172.18.60.217"
set username "admin"
set password *********
set status enable
next
end

 2. Create the dynamic IP address:
config firewall address
edit "sepm-ip"
set type dynamic
set sdn "sepm-217"
set filter "ComputerName=win10-1"
config list
edit "10.1.100.187"
next
edit "10.6.30.187"
next

FortiOS 6.4.6 Administration Guide 346


Fortinet Technologies Inc.
Fortinet Security Fabric

edit "172.16.200.187"
next
end
next
end

 3. Add the dynamic IP address to the firewall policy:
config firewall policy
edit 1
set name "pol1"
set srcintf "port2"
set dstintf "port1"
set srcaddr "sepm-ip"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set ssl-ssh-profile "certificate-inspection"
set av-profile "default"
set logtraffic all
set fsso disable
set nat enable
next
end

To troubleshoot Symantec SD connector in the CLI:

# diagnose debug application sepmd -1

Output is sent every minute (default). All IPv4 learned from SEPM. IPv6 also sent but not
yet supported.

2019-09-09 12:01:09 sepmd sdn connector sepm-217 start updating IP addresses


2019-09-09 12:01:09 sepmd checking firewall address object sepm-ip, vd 0
2019-09-09 12:01:09 sepmd sdn connector sepm-217 finish updating IP addresses
2019-09-09 12:01:09 sepmd reap child pid: 18079
2019-09-09 12:02:09 sepmd sdn connector sepm-217 prepare to update
2019-09-09 12:02:09 sepmd sdn connector sepm-217 start updating
2019-09-09 12:02:09 sepm-217 sdn connector will retrieve token after 9526 secs
2019-09-09 12:02:09 sym_new_ip_addr ComputerName win10-1
ComputerUuid AC894D56-BD86-A786-7DDB-7FD98B718AE0, OsName Windows 10
IP 172.16.200.187
GroupName My Company\Windows-desktops, GroupId E61FDEA2AC10C80E46D0B31BB58D7CB3
DomainName Default, DomainId 6C507580AC10C80E5F3CAED5B1711A8E
2019-09-09 12:02:09 sym_new_ip_addr ComputerName win10-1
ComputerUuid AC894D56-BD86-A786-7DDB-7FD98B718AE0, OsName Windows 10
IP 10.6.30.187
GroupName My Company\Windows-desktops, GroupId E61FDEA2AC10C80E46D0B31BB58D7CB3
DomainName Default, DomainId 6C507580AC10C80E5F3CAED5B1711A8E
2019-09-09 12:02:09 sym_new_ip_addr ComputerName win10-1
ComputerUuid AC894D56-BD86-A786-7DDB-7FD98B718AE0, OsName Windows 10
IP 10.1.100.187
GroupName My Company\Windows-desktops, GroupId E61FDEA2AC10C80E46D0B31BB58D7CB3
DomainName Default, DomainId 6C507580AC10C80E5F3CAED5B1711A8E
2019-09-09 12:02:09 2001:0000:0000:0000:0000:0000:0000:0187 is not in IPv4 presentation

FortiOS 6.4.6 Administration Guide 347


Fortinet Technologies Inc.
Fortinet Security Fabric

format

2019-09-09 12:02:09 sepmd sdn connector sepm-217 start updating IP addresses


2019-09-09 12:02:09 sepmd checking firewall address object sepm-ip, vd 0
2019-09-09 12:02:09 sepmd sdn connector sepm-217 finish updating IP addresses
2019-09-09 12:02:09 sepmd reap child pid: 18089
2019-09-09 12:03:09 sepmd sdn connector sepm-217 prepare to update
2019-09-09 12:03:09 sepmd sdn connector sepm-217 start updating
2019-09-09 12:03:09 sepm-217 sdn connector will retrieve token after 9466 secs
2019-09-09 12:03:09 sym_new_ip_addr ComputerName win10-1
ComputerUuid AC894D56-BD86-A786-7DDB-7FD98B718AE0, OsName Windows 10
IP 172.16.200.187
GroupName My Company\Windows-desktops, GroupId E61FDEA2AC10C80E46D0B31BB58D7CB3
DomainName Default, DomainId 6C507580AC10C80E5F3CAED5B1711A8E
2019-09-09 12:03:09 sym_new_ip_addr ComputerName win10-1
ComputerUuid AC894D56-BD86-A786-7DDB-7FD98B718AE0, OsName Windows 10
IP 10.6.30.187
GroupName My Company\Windows-desktops, GroupId E61FDEA2AC10C80E46D0B31BB58D7CB3
DomainName Default, DomainId 6C507580AC10C80E5F3CAED5B1711A8E
2019-09-09 12:03:09 sym_new_ip_addr ComputerName win10-1
ComputerUuid AC894D56-BD86-A786-7DDB-7FD98B718AE0, OsName Windows 10
IP 10.1.100.187
GroupName My Company\Windows-desktops, GroupId E61FDEA2AC10C80E46D0B31BB58D7CB3
DomainName Default, DomainId 6C507580AC10C80E5F3CAED5B1711A8E
2019-09-09 12:03:09 2001:0000:0000:0000:0000:0000:0000:0187 is not in IPv4 presentation
format

To list the SEPM daemon SDN connectors:

# diagnose test application sepmd 1


sepm SDN connector list:
name: sepm-217, status: enabled, updater_interval: 60

To list the SEPM daemon SDN filters:

# diagnose test application sepmd 2


sepm SDN connector sepm-217 filter list:
name: sepm-ip, vd 0, filter 'ComputerName=win10-1'

RADIUS single sign-on agent

With RADIUS single sign-on (RSSO), a FortiGate can authenticate users who have authenticated on a  remote RADIUS  
server. Based on which user group the user belongs to, the security policy applies the appropriate UTM profiles. 
The FortiGate does not interact with the remote RADIUS server; it only monitors RADIUS accounting records that the 
server forwards (originating from the RADIUS client). These records include the user IP address and user group. The 
remote RADIUS server sends the following accounting messages to the FortiGate:

Message Action

Start If the information in the start message matches the RSSO configuration on the 
FortiGate, the user is added to the local list of authenticated firewall users.

FortiOS 6.4.6 Administration Guide 348


Fortinet Technologies Inc.
Fortinet Security Fabric

Message Action

Stop The user is removed from the local list of authenticated firewall users because the 
user session no longer exists on the RADIUS server.

You can configure an RSSO agent connector using the FortiOSGUI; however, in most cases, you will need to use the 
CLI. There are some default options you may need to modify, which can only be done in the CLI.

To configure an RSSO agent connector:

 1. Create the new connector:
 a. Go to Security Fabric > External Connectors.
 b. Click Create New.
 c. In the Endpoint/Identity section, click RADIUS Single Sign-On Agent. The New Fabric Connector pane opens.
 d. Enter the connector name.
 e. Enable Use RADIUS Shared Secret.

The value entered in Use RADIUS Shared Secret must be identical to what the remote 


RADIUS server uses to authenticate when it sends RADIUS accounting messages to 
the FortiGate.

 f. Enable Send RADIUS Responses.

You should enable Send RADIUS Responses because some RADIUS servers 


continue to send the same RADIUS accounting message several times  if there is no 
response.

 g. Click OK.
 2. Edit the network interface:
 a. Go to Network > Interfaces.
 b. Double-click the interface that will receive the RADIUS accounting messages. The Edit Interface pane opens.
 c. In the Administrative Access section, select the RADIUS Accounting checkbox. This will open listening for port 
1813 on this interface. The FortiGate will then be ready to receive RADIUS accounting messages.
 d. Click OK.
 3. Create a local RSSO user group:
 a. Go to User & Authentication > User Groups.
 b. Click Create New.
 c. Enter the group name.

FortiOS 6.4.6 Administration Guide 349


Fortinet Technologies Inc.
Fortinet Security Fabric

 d. For the Type field, click RADIUS Single-Sign-ON (RSSO).


 e. Enter a value for RADIUS Attribute Value.
This  value  by default is   the class attribute. The FortiGate uses the content of this attribute in RADIUS 
accounting start messages to map a user to a FortiGate group, which then can be used in firewall policies.  
In this example configuration, the FortiGate will only add  a remote RADIUS user to the local firewall user list if 
the class attribute in the RADIUS accounting START message contains the value group1. 

If your users are in multiple groups,  y  ou will need to add multiple local RSSO user 
group.

If the RADIUS attribute value used to  map users to a local RSSO group is different than 
the RADIUS attribute in the RADIUS accounting messages forwarded by the server, 
you must  change it  in the CLI. 

 f. Click OK. 
 4. Edit the local RSSO agent to modify default options using the CLI.
For example, the default value for rsso-endpoint-attribute might work in common remote access scenarios 
where users are identified by their  unique Calling-Station-Id, but in other scenarios the user name might be in 
a different attribute.
config user radius
edit "Local RSSO Agent"
set rsso-endpoint-attribute <attribute>
set sso-attribute <attribute>
next
end

 5. Add  the local RSSO user group to a firewall policy.

Verifying the RSSO configuration

Verification requires a working remote RADIUS server configured for RADIUS accounting forwarding  and wireless or 
wired clients that use RADIUS for user authentication.
For a quick test, you can use one of the publicly available RADIUS test tools  to send RADIUS accounting start and stop 
messages to the FortiGate. You can also use radclient.

To verify the RSSO configuration:

 1. In radclient, enter the RADIUS attributes. These attributes are then executed with the FortiGate IP parameters 
(sends accounting messages to port 1813) and shared password you configured. -x  is used for verbose output:

FortiOS 6.4.6 Administration Guide 350


Fortinet Technologies Inc.
Fortinet Security Fabric

root@ControlPC:~# echo "Acct-Status-Type =Start,Framed-Ip-Address=10.1.100.185,User-


Name=test2,Acct-Session-Id=0211a4ef,Class=group1,Calling-Station-Id=00-0c-29-44-BE-B8" |
radclient -x 10.1.100.1 acct 123456
Sending Accounting-Request of id 180 to 10.1.100.1 port 1813
Acct-Status-Type = Start
Framed-IP-Address = 10.1.100.185
User-Name = "test2"
Acct-Session-Id = "0211a4ef"
Class = 0x67726f757031
Calling-Station-Id = "00-0c-29-44-BE-B8"
rad_recv: Accounting-Response packet from host 10.1.100.1 port 1813, id=180, length=20
root@ControlPC:~#

 2. Verify that the user is in the local firewall user list with the correct type (rsso) and local firewall group (rsso-
group1):
# diagnose firewall auth l

10.1.100.185, test2
type: rsso, id: 0, duration: 5, idled: 5
flag(10): radius
server: vdom1
packets: in 0 out 0, bytes: in 0 out 0
group_id: 3
group_name: rsso-group-1

----- 1 listed, 0 filtered ------

Exchange Server connector

FortiGate can collect additional information about authenticated users from corporate Microsoft Exchange Servers. After 
a user logs in, the additional information can be viewed in various parts of the GUI.
The Exchange connector must be mapped to the LDAP server that is used for authentication.
The following attributes are retrieved:

USER_INFO_FULL_NAME USER_INFO_COMPANY USER_INFO_CITY


USER_INFO_FIRST_NAME USER_INFO_DEPARTMENT USER_INFO_STATE
USER_INFO_LAST_NAME USER_INFO_GROUP USER_INFO_POSTAL_CODE
USER_INFO_LOGON_NAME USER_INFO_TITLE USER_INFO_COUNTRY
USER_INFO_TELEPHONE USER_INFO_MANAGER USER_INFO_ACCOUNT_EXPIRES
USER_INFO_EMAIL USER_INFO_STREET  
USER_INFO_USER_PHOTO USER_INFO_POST_OFFICE_BOX  

Kerberos Key Distribution Center (KDC) automatic discovery is enabled by default. The FortiGate must be able to use 
DNS to resolve the KDC IP addresses, otherwise the FortiGate will be unable to retrieve additional user information from 
the Exchange Server.
KDC automatic discovery can be disabled, and one or more internal IP addresses that the FortiGate can reach can be 
configured for KDC.
The Override server IP address is enabled when the IP address of the Exchange server cannot be resolved by DNS and 
must be entered manually.

FortiOS 6.4.6 Administration Guide 351


Fortinet Technologies Inc.
Fortinet Security Fabric

To configure an Exchange connector in the GUI:

 1. Go to Security Fabric > External Connectors and click Create New.


 2. In the Endpoint/Identity section, click Exchange Server.
 3. Set Name to exchange140.
 4. Set Exchange account to [email protected].
Administrator is the username, W2K8-SERV1 is the exchange server name, and FORTINET-FSSO.COM is the 
domain name.
 5. Set Password to the password.
 6. Enable Override server IP address and set it to 10.1.100.140.
 7. Ensure that Auto-discover KDC is enabled.

If Auto-discover KDC is disabled, one or more KDC IP addresses can be manually entered.
 8. Click OK.

To link the connector to the LDAP server in the GUI:

 1. Go to User & Authentication > LDAP Servers.


 2. Edit an existing LDAP server, or click Create New to create a new one.
 3. Enable Exchange server, and select the connector from the list.
 4. Configure the remaining settings as required.

 5. Click OK.

FortiOS 6.4.6 Administration Guide 352


Fortinet Technologies Inc.
Fortinet Security Fabric

To configure an Exchange connector with automatic KDC discovery in the CLI:

config user exchange


edit "exchange140"
set server-name "W2K8-SERV1"
set domain-name "FORTINET-FSSO.COM"
set username "Administrator"
set password **********
set ip 10.1.100.140
set auto-discover-kdc enable
next
end

To link the connector to the LDAP server in the CLI:

config user ldap


edit "openldap"
set server "172.18.60.213"
set cnid "cn"
set dn "dc=fortinet-fsso,dc=com"
set type regular
set username "cn=Manager,dc=fortinet-fsso,dc=com"
set password **********
set group-member-check group-object
set group-object-filter "(&(objectclass=groupofnames)(member=*))"
set member-attr "member"
set user-info-exchange-server "exchange140"
next
end

Verification

To verify that KDC auto-discovery is working:

# diagnose wad debug enable category all


# diagnose wad debug enable level verbose
# diagnose debug enable
# diagnose wad user exchange test-auto-discover
wad_diag_session_acceptor(3115): diag socket 20 accepted.
__wad_fmem_open(557): fmem=0x12490bd8, fmem_name='cmem 9188 bucket', elm_sz=9188, block_
sz=73728, overhead=0, type=advanced
Starting auto-discover test for all configured user-exchanges.
[NOTE]: If any errors are returned, try manually configuring IPs for the reported errors.

wad_rpc_nspi_test_autodiscover_kdc(1835): Starting DNS SRV request for srv(0x7f938e052050)


query(_kerberos._udp.FORTINET-FSSO.COM)
wad_dns_send_srv_query(705): 1:0: sending DNS SRV request for remote peer _kerberos._
udp.FORTINET-FSSO.COM id=0
1: DNS response received for remote host _kerberos._udp.FORTINET-FSSO.COM req-id=0
wad_dns_parse_srv_resp(409): _kerberos._udp.FORTINET-FSSO.COM: resp_type(SUCCESS)
srv[0]: name(w2k12-serv1.fortinet-fsso.com) port(88) priority(0) weight(100)
addr[0]: 10.1.100.131
addr[1]: 10.6.30.131
addr[2]: 172.16.200.131

FortiOS 6.4.6 Administration Guide 353


Fortinet Technologies Inc.
Fortinet Security Fabric

addr[3]: 2003::131
addr[4]: 2001::131
srv[1]: name(fsso-core-DC.Fortinet-FSSO.COM) port(88) priority(0) weight(100)
addr[0]: 10.6.30.16
addr[1]: 172.16.200.16
srv[2]: name(w2k12-serv1.Fortinet-FSSO.COM) port(88) priority(0) weight(100)
addr[0]: 10.1.100.131
addr[1]: 172.16.200.131
addr[2]: 10.6.30.131
addr[3]: 2001::131
addr[4]: 2003::131
wad_rpc_nspi_dns_on_discover_kdc_done(1787): Received response for DNS autodiscover req
(0x7f938dfe8050) query(_kerberos._udp.FORTINET-FSSO.COM) n_rsp(3)

Completed auto-discover test for all configured user-exchanges.

To check the collected information after the user has been authenticated:

 1. In the GUI, go to Dashboard > Users & Devices, expand the Firewall Users widget, and hover over the user name. 


 2. In the CLI, run the following diagnose command:
# diagnose wad user info 20 test1
'username' = 'test1'
'sourceip' = '10.1.100.185'
'vdom' = 'root'
'cn' = 'test1'
'givenName' = 'test1'
'sn' = 'test101'
'userPrincipalName' = '[email protected]'
'telephoneNumber' = '604-123456'
'mail' = '[email protected]'
'thumbnailPhoto' = '/tmp/wad/user_info/76665fff62ffffffffffffffffffff75ff68fffffffffa'
'company' = 'Fortinet'
'department' = 'Release QA'
'memberOf' = 'CN=group321,OU=Testing,DC=Fortinet-FSSO,DC=COM'
'memberOf' = 'CN=g1,OU=Testing,DC=Fortinet-FSSO,DC=COM'
'memberOf' = 'CN=group21,OU=Testing,DC=Fortinet-FSSO,DC=COM'
'memberOf' = 'CN=group1,OU=Testing,DC=Fortinet-FSSO,DC=COM'
'manager' = 'CN=test6,OU=Testing,DC=Fortinet-FSSO,DC=COM'
'streetAddress' = 'One Backend Street 1901'
'l' = 'Burnaby'
'st' = 'BC'
'postalCode' = '4711'
'co' = 'Canada'
'accountExpires' = '9223372036854

If the results are not as expected, verify what information FortiGate can collect from the Exchanger Server:
# diagnose test application wad 2500
# diagnose test application wad 162

FortiOS 6.4.6 Administration Guide 354


Fortinet Technologies Inc.
Fortinet Security Fabric

Threat feeds

Threat feeds dynamically import an external block lists from an HTTP server in the form of a plain text file. Block lists can 
be used to enforce special security requirements, such as long term policies to always block access to certain websites, 
or short term requirements to block access to known compromised locations. The lists are dynamically imported, so that 
any changes are immediately imported by FortiOS.
There are four types of threat feeds:

FortiGuard The file contains one URL per line. It is available as a Remote Category in Web Filter profiles, 


Category SSL inspection exemptions, and proxy addresses. See Web rating override on page 1284 for 
more information.
Example:
http://example/com.url
https://example.com/url
http://example.com:8080/url

IP Address The file contains one IP/IP range/subnet per line. It is available as an External IP Block List in 


DNS Filter profiles, and as a Source/Destination in IPv4, IPv6, and proxy policies.
Example:
192.168.2.100
172.200.1.4/16
172.16.1.2/24
172.16.8.1-172.16.8.100
2001:0db8::eade:27ff:fe04:9a01/120
2001:0db8::eade:27ff:fe04:aa01-2001:0db8::eade:27ff:fe04:ab01

Domain Name The file contains one domain per line. Simple wildcards are supported. It is available as a 


Remote Category in DNS Filter profiles. See External resources for DNS filter on page 361 for 
more information.
Example:
mail.*.example.com
*-special.example.com
www.*example.com
example.com

Malware Hash The file contains one hash per line in the format <hex hash> [optional hash


description]. Each line supports MD5, SHA1, and SHA256 hex hashes. It is automatically 
used for virus outbreak prevention on antivirus profiles with external-blocklist enabled.
Note: For optimal performance, do not mix different hashes in the list. Only use one of MD5, 
SHA1, or SHA256.
Example:
292b2e6bb027cd4ff4d24e338f5c48de
dda37961870ce079defbf185eeeef905 Trojan-Ransom.Win32.Locky.abfl
3fa86717650a17d075d856a41b3874265f8e9eab Trojan-Ransom.Win32.Locky.abfl
c35f705df9e475305c0984b05991d444450809c35dd1d96106bb8e7128b9082f
Trojan-Ransom.Win32.Locky.abfl
See External malware block list on page 1132 for an example.

FortiOS 6.4.6 Administration Guide 355


Fortinet Technologies Inc.
Fortinet Security Fabric

External resources file format

File format requirements for an external resources file:
 l The file is in plain text format with each URL list, IP address, domain name, or malware hash occupying one line.
 l The file is limited to 10 MB or 128 × 1024 (131072) entries, whichever limit is hit first.
 l The entry limit also follows the table size limitation defined by CMDB per model.
 l The external resources update period can be set to 1 minute, hourly, daily, weekly, or monthly (43200 min, 30 days).
 l The external resources type as category (URL list) and domain (domain name list) share the category number 
range 192 to 221 (total of 30 categories).
 l There is no duplicated entry validation for the external resources file (entry inside each file or inside different files).
 l If the number of entries exceed the limit, a warning is displayed. Additional entries beyond the threshold will not be 
loaded.
For domain name list (type = domain):
 l Simple wildcards are allowed in the domain name list, for example: *.test.com.
 l IDN (international domain name) is supported.
For IP address list (type = address):
 l The IP address can be a single IP address, subnet address, or address range. For example, 192.168.1.1, 
192.168.10.0/24, or 192.168.100.1-192.168.100.254.
 l The address can be an IPv4 or IPv6 address. An IPv6 address does not need to be in [ ] format.
For URL list (type=category):
 l The scheme is optional, and will be truncated if found; https:// and http:// are not required.
 l Wildcards are allowed at the beginning or end or the URL, for example: *.domain.com or domain.com.*.
 l IDN and UTF encoding URL are supported .
 l The URL can be an IPv4 or IPv6 address. An IPv6 URL must be in [ ] format.

To determine the external resource table size limit for your device:

# print tablesize
...
system.external-resource: 0 256 512
...

For this device, a FortiGate 60E, the global limit is 512 and the limit per VDOM is 256.

Create a threat feed

To create a threat feed in the GUI:

 1. Go to Security Fabric > External Connectors.


 2. Click Create New.
 3. In the Thread Feeds section, click on the required feed type.

FortiOS 6.4.6 Administration Guide 356


Fortinet Technologies Inc.
Fortinet Security Fabric

 4. Configure the connector settings:

Name Enter a name for the threat feed connector.

URI of external resource Enter the link to the external resource file. The file should be a plain text file 


with one entry on each line.

HTTP basic authentication Enable/disable basic HTTP authentication. When enabled, enter the 


username and password in the requisite fields.

Refresh Rate The time interval to refresh the external resource, in minutes (1 - 43200, 


default = 5).
The applicable threat feed will be triggered to refresh between 0 minutes and 
the configured value. When the refresh is triggered, if another task is being 
processed be the schedule worker, the refresh task will be added to the queue.

Comments Optionally, enter a description of the connector.

Status Enable/disable the connector.

 5. Click OK.

To create a threat feed in the CLI:

config system external-resource


edit <name>
set status {enable | disable}
set type {category | address | domain | malware}
set category <integer>
set username <string>
set password <string>
set comments <string>
*set resource <resource-uri>
set user-agent <string>
*set refresh-rate <integer>
set source-ip <ip address>
set interface-select-method {auto | sdwan | specify}
next
end

Parameters marked with an asterisk (*) are mandatory and must be filled in. Other parameters either have default values 
or are optional.

Update history

To review the update history of a threat feed, go to Security Fabric > External Connectors, select a feed, and click Edit. 


The Last Update field shows the date and time that the feed was last updated.
Click View Entries to view the current entries in the list.

FortiOS 6.4.6 Administration Guide 357


Fortinet Technologies Inc.
Fortinet Security Fabric

External blocklist – Policy

You can use the external blocklist (threat feed) for web filtering, DNS, and  in firewall policies.

Sample configuration

In this example, an IP address blocklist connector is created so that it can be used in a firewall policy.

To configure an external block list connector in the GUI:

 1. Go to Security Fabric > External Connectors and click Create New.


 2. In the Threat Feeds section, click IP Address.
 3. Set Name to AWS_IP_Blocklist.
 4. Set the URI of external resource to https://s3.us-east-2.amazonaws.com/ip-blocklist/ip.txt.

 5. Configure the remaining settings as required, then click OK.

FortiOS 6.4.6 Administration Guide 358


Fortinet Technologies Inc.
Fortinet Security Fabric

 6. Edit the connector, then click View Entries to view the IP addresses in the feed.

The blocklist can now be used in web filter and DNS profiles, and in firewall policies.

To configure an external block list connector in the CLI:

config system external-resource


edit "AWS_IP_Blocklist"
set status enable
set type address
set username ' '
set password *********
set comments ''
set resource "https://s3.us-east-2.amazonaws.com/ip-blocklist/ip.txt"
set refresh-rate 15
next
end

To apply an external block list to a firewall policy in the CLI:

config firewall policy


edit 1
set name "policyid-1"
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "AWS_IP_Blocklist"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set auto-asic-offload disable
set nat enable
next
end

External blocklist - Authentication

Thread feed external connectors support username and password authentication. 

FortiOS 6.4.6 Administration Guide 359


Fortinet Technologies Inc.
Fortinet Security Fabric

To enable username and password authentication in a thread feed connector:

 1. Go to Security Fabric > External Connectors.


 2. Edit an existing Threat Feed or create a new one by selecting Create New.
 3. Enable HTTP basic authentication
 4. Enter the Username and Password.   

 5. Click OK.

External blocklist - File hashes

The malware hash threat feed connector supports a list of file hashes that can be used as part of virus outbreak 
prevention.
This example retrieves a malware hash from an Amazon S3 bucket, and then enables malware block lists in a antivirus 
profile.

To configure a malware hash connector in the GUI:

 1. Go to Security Fabric > External Connectors and click Create New.


 2. In the Threat Feeds section, click Malware Hash.
 3. Set Name to AWS_Malware_Hash.
 4. Set the URI of external resource to https://s3.us-west-2.amazonaws.com/malware-hash-feeds/fortinet-malware-
hash-list.   

 5. Click OK.

FortiOS 6.4.6 Administration Guide 360


Fortinet Technologies Inc.
Fortinet Security Fabric

 6. Edit the connector, then click View Entries to view the hash list.

 7. Go to Security Profiles > AntiVirus and create a new profile, or edit an existing one.


 8. Enable Use External Malware Block List.
 9. Click Apply.

To configure a malware hash connector in the CLI:

config system external-resource


edit "AWS_Malware_Hash"
set type malware
set resource "https://s3.us-west-2.amazonaws.com/malware-hash-feeds/fortinet-
malware-hash-list"
next
end
config antivirus profile
edit "av-profile"
config outbreak-prevention
set external-blocklist enable
end
next
end

Logs

The filehash and filehashsrc are included in outbreak prevention detection event logs.
This example shows the log generated when a file is detected by external malware hash list outbreak prevention:
1: date=2018-07-30 time=13:59:41 logid="0207008212" type="utm" subtype="virus"
eventtype="malware-list" level="warning" vd="root" eventtime=1532984381 msg="Blocked by
local malware list." action="blocked" service="HTTP" sessionid=174963 srcip=192.168.101.20
dstip=172.16.67.148 srcport=37045 dstport=80 srcintf="lan" srcintfrole="lan" dstintf="wan1"
dstintfrole="wan" policyid=1 proto=6 direction="incoming" filename="mhash_block.com"
checksum="90f0cb57" quarskip="No-skip" virus="mhash_block.com" dtype="File Hash"
filehash="93bdd30bd381b018b9d1b89e8e6d8753" filehashsrc="test_list"
url="http://172.16.67.148/mhash_block.com" profile="mhash_test" agent="Firefox/43.0"
analyticssubmit="false"

External resources for DNS filter

FortiOS 6.4.6 Administration Guide 361


Fortinet Technologies Inc.
Fortinet Security Fabric

External resources provides the ability to dynamically import  an external block list into an HTTP server. This feature 
enables the FortiGate to retrieve a dynamic URL, domain name, IP address, or malware hash list from an external HTTP 
server periodically. The FortiGate uses these external resources as the web filter's remote categories, DNS filter's 
remote categories, policy address objects, or antivirus profile's malware definitions. If external resources are updated, 
FortiGate objects are also updated dynamically.
External resource is divided into four types:
 l URL list (type = category)
 l Domain name list (type = domain)
 l IP address list (type = address)
 l Malware hash list (type = malware)

Remote categories and external IP block list

The DNS filter profile can use two types of external resources: domain type (domain name list) and address type (IP 


address list).
When a domain type external resource is configured, it is treated as a remote category in the DNS filter profile. If the 
domain name in DNS query matches the entry in this external resource file, it is treated as the remote category and 
follows the action configured for this category in DNS filter profile.
When an address type external resource is configured, it can be enabled as external-ip-blocklist in DNS filter profile. If a 
DNS resolved IP address in DNS response matches the entry in the external-ip-blocklist, this DNS query is blocked by 
the DNS filter.
For external resources file format and limits, see External resources file format on page 356.

Configuring external resources in the CLI

In the CLI, you can configure external resources files in an external HTTP server. Under global, configure the external 
resources file location and specify the resource type. 

To configure external resources:

config system external-resource


edit "Ext-Resource-Type-as-Domain-1"
set type domain
set category 194
set resource "http://172.16.200.66/external-resources/Ext-Resource-Type-as-Domain-
1.txt"
set refresh-rate 1
next
edit "Ext-Resource-Type-as-Address-1"
set status enable
set type address
set username ' '
set password *********
set comments ''
set resource "http://172.16.200.66/external-resources/Ext-Resource-Type-as-Address-
1.txt"
set refresh-rate 1

FortiOS 6.4.6 Administration Guide 362


Fortinet Technologies Inc.
Fortinet Security Fabric

next
end

In each VDOM, the domain type external resource can be used in the DNS filter as remote category. In this example, the 
domain name list in the Ext-Resource-Type-as-Domain-1.txt file is treated as a remote category (category ID 194). The 
IP address list in the Ext-Resource-Type-as-Address-1.txt file can be applied in the DNS filter as an external-ip-
blocklist. If the DNS resolved IP address matches any entry in the list in that file, the DNS query is blocked.

To configure the external IP block list and apply it to a policy:

config dnsfilter profile


edit "default"
set comment "Default dns filtering."
config ftgd-dns
config filters
edit 1
set category 194
set action block
next
edit 2
set category 12
next
edit 3
next
end
end
set block-botnet enable
set external-ip-blocklist "Ext-Resource-Type-as-Address-1"
next
end
config firewall policy
edit 1
set name "DNSFilter"
set srcintf "port10"
set dstintf "port9"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set logtraffic all
set dnsfilter-profile "default"
set profile-protocol-options "protocol"
set ssl-ssh-profile "protocols"
set nat enable
next
end

FortiOS 6.4.6 Administration Guide 363


Fortinet Technologies Inc.
Fortinet Security Fabric

Configuring external resources in the GUI

To configure, edit, or view the entries for external resources in the GUI:

 1. Go to Global > Security Fabric > External Connectors.


 2. Click Create New.
 3. In the Threat Feeds section, select Domain Name or IP Address.
 4. Enter the Resource Name, URL, location of the resource file, resource authentication credentials, and Refresh
Rate.

 5. Click OK.
 6. Double-click the Threat Feeds Object you just configured to open the Edit page
 7. Click View Entries to view the entry list in the external resources file.

 8. Go to VDOM > Security Profiles > DNS Filter and open a DNS filter profile. The configured external resources 

FortiOS 6.4.6 Administration Guide 364


Fortinet Technologies Inc.
Fortinet Security Fabric

displays, and you can apply it in each DNS filter profile (remote category or external IP block lists).

Log sample

Remote categories

Go to VDOM > Log & Report > DNS Query. Some domains that match  the remote category list are rated as remote 


category, overriding their original domain rating.

FortiOS 6.4.6 Administration Guide 365


Fortinet Technologies Inc.
Fortinet Security Fabric

Log example:

1: date=2019-01-18 time=13:49:12 logid="1501054802" type="utm" subtype="dns" eventtype="dns-


response" level="notice" vd="vdom1" eventtime=1547848151 policyid=1 sessionid=82998
srcip=10.1.100.18 srcport=42985 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="default" xid=38234
qname="www.example.com" qtype="A" qtypeval=1 qclass="IN" ipaddr="93.184.216.34" msg="Domain
is monitored" action="pass" cat=196 catdesc="Ext-Resource-Type-as-Domain-3"

2: date=2019-01-18 time=13:49:12 logid="1500054000" type="utm" subtype="dns" eventtype="dns-


query" level="information" vd="vdom1" eventtime=1547848151 policyid=1 sessionid=82998
srcip=10.1.100.18 srcport=42985 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="default" xid=38234
qname="www.example.com" qtype="A" qtypeval=1 qclass="IN"

External IP block lists

Go to VDOM > Log & Report > DNS Query.  If the DNS query resolved IP address matches the entry in the external-


ip-blocklist, the DNS query is blocked.

Log example:

1: date=2019-01-18 time=13:50:53 logid="1501054400" type="utm" subtype="dns" eventtype="dns-


response" level="warning" vd="vdom1" eventtime=1547848253 policyid=1 sessionid=83206
srcip=10.1.100.18 srcport=47281 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="default" xid=7501
qname="www.example.com" qtype="A" qtypeval=1 qclass="IN" msg="Domain was blocked because it
is in the domain-filter list" action="redirect" domainfilteridx=0 domainfilterlist="Ext-
Resource-Type-as-Address-1"

2: date=2019-01-18 time=13:50:53 logid="1500054000" type="utm" subtype="dns" eventtype="dns-


query" level="information" vd="vdom1" eventtime=1547848253 policyid=1 sessionid=83206
srcip=10.1.100.18 srcport=47281 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="default" xid=7501
qname="www.example.com" qtype="A" qtypeval=1 qclass="IN"

Monitoring the Security Fabric using FortiMonitor

The FortiMonitor app for AppleTV allows you to use a TV screen to monitor your entire Security Fabric. 
FortiMonitor is an analysis tool that provides easy to use NOC and SOC monitoring capabilities. The app features real-
time data traffic, visual alerts, as well as a general overview of hardware devices, operating systems, and interfaces. The 

FortiOS 6.4.6 Administration Guide 366


Fortinet Technologies Inc.
Fortinet Security Fabric

monitor also provides a wireless health summary of your entire network across multiple buildings. If an access point 
goes offline, you will be notified about the network's health. After the issues are resolved, you will immediately see the 
health update on your screen.

Getting started with FortiMonitor

Download FortiMonitor from the app store on AppleTV. After the app is installed, add devices using the AppleTV remote 
or by sharing a login profile with FortiExplorer. Once the devices are added, you can use FortiMonitor to view real-time 
data in the Network Operations Center, Security Operations Center, and Software-Defined Branch.

To get started with FortiMonitor:

 1. Download the app and add devices to FortiMonitor.   
You can add devices by  sharing a login profile with FortiExplorer or logging into the device directly on FortiMonitor. 
 2. View the physical topology of the Fabric to identify risks
 3. View the Fabric components as seen on the root FortiGate. 
 4. View an executive summary of the three largest areas of security focus in the Security Fabric. 
 5. View data collected by FortiAnalyzer on the endpoints on your network. 
 6. View vulnerability data collected by FortiClient EMS. 
 7. Use the Software-Defined Branch module to monitor interface SD-WAN usage and associated service level 
agreements.
 

NOC and SOC Example

In this example, you have configured your FortiGates, FortiAnalyzer and other devices in your Security Fabric. Now you 
want to use FortiMonitor to display the status of the devices on a TV in your Network Operation Center or Security 
Operation Center.

FortiOS 6.4.6 Administration Guide 367


Fortinet Technologies Inc.
Fortinet Security Fabric

Topology

This topology has a Headquarter and two Branches. Within the Headquarter is the Enterprise Core and two FortiGates 
acting as ISFWs. In addition, an on-premise FortiAnalyzer collects all logging information from the fabric devices. The 
FortiClient EMS manages all the endpoints within the topology.
The two branches are configured with SD-WAN with VPN overlays to the Enterprise Core. Traffic is steered towards the 
overlays and underlays based on SD-WAN Rules.
Using FortiMonitor, you will be able to monitor the different components in this topology. 

To take advantage of the views in the FortiMonitor, you should configure:
 l Security Fabric on all FortiGates. See Configuring the root FortiGate and downstream FortiGates on page 130.
 l FortiAnalyzer Logging. See Configuring FortiAnalyzer on page 137.
 l FortiClient EMS. See FortiClient EMS on page 151

Adding the root FortiGate to FortiMonitor

By adding the root FortiGate, you can view the entire topology and navigate to branch FortiGates in the SD-WAN view. If 
you are already using FortiExplorer on a mobile device, you can connect the same FortiGate device to AppleTV by 
sharing the login credentials on both devices. Alternatively, you can manually connect to your root FortiGate directly from 
the app. 

To share login credentials between FortiExplorer and FortiMonitor:

 1. Connect the FortiExplorer and FortiMonitor devices to the same network.
 2. On FortiMonitor, click New FortiGate.
 3. In FortiExplorer, go to My Fabric.

FortiOS 6.4.6 Administration Guide 368


Fortinet Technologies Inc.
Fortinet Security Fabric

 4. Swipe right on the device you want to share, and tap Share Login Profile.

 5. Tap Share to AppleTV.

FortiOS 6.4.6 Administration Guide 369


Fortinet Technologies Inc.
Fortinet Security Fabric

 6. On AppleTV, click Accept. FortiMonitor confirms the request and proceeds to the device main menu.

To add devices to FortiMonitor:

 1. In the Devices menu, click  New FortiGate. The Login to FortiGate dialog box is displayed.


 2. In the IP Address/Host Name field, take one of the following actions:
 l Enter the device IP address and port, if not using the default admin port 443
 l Enter the full host name including the domain. Enter port if not using the default admin port 443.

 3. Enter the Username and Password for the FortiGate device.
 4. Click Remember  to save time entering the login credentials later.

FortiOS 6.4.6 Administration Guide 370


Fortinet Technologies Inc.
Fortinet Security Fabric

 5. Click Login. The device is added to FortiMonitor.

If the IP or hostname is not defined in the CN or SAN field of your certificate, you will 
receive a prompt that "Your connection is not private". You may choose to continue with 
your connection.

Viewing the Fabric Topology monitor

Use the Fabric Topology monitor to view the physical topology of the Fabric to identify risks. FortiGate devices with 
versions 6.4. and above can drilldown further to see additional information for devices such as FortiGates, FortiAPs, and 
FortiSwitches.
To view the Fabric Topology monitor, go to Network Operations Center > Fabric Topology. This monitor displays the 
same information as  the Physical Topology  on the  FortiGate

Use your remote to navigate through the devices in the Fabric topology. Click a device to view the drilldown information. 
To return to the default view, click the Menu button.

FortiOS 6.4.6 Administration Guide 371


Fortinet Technologies Inc.
Fortinet Security Fabric

Viewing the Fabric Overview monitor

Use the Fabric Overview monitor to view the Fabric components as seen on the Dashboard of the Fabric Root FortiGate 
in the example topology. Each device must be authorized and be part of the Fabric. 
For information about configuring the Security Fabric, see Fortinet Security Fabric on page 127
To view the Fabric Overview monitor, go to Network Operations Center > Fabric Overview.

The Security Fabric monitor has multiple panes. To see data populated on the panes, ensure that proper configurations 
are applied on the Fabric devices:

Pane Description Configuration

Fabric Connectors Displays external SDN connectors that are  Configure Security Fabric > External


enabled. Connectors.

Security Fabric Displays the number of devices in the  Configure Security Fabric > Fabric


Overview topology. Connectors.

Attack Surface Displays devices detected by the FortiGate  Ensure Device Detection is configured on the 


with a server tag. interfaces(s). Go to Network > Interfaces.

Device Inventory Displays devices based on Hardware Vendor  Ensure Device Detection is configured on the 


and detected OS interface(s).  Go to Network > Interfaces.

Endpoint Coverage Displays the number of online devices and  Ensure Device Detection is configured on the 


the percentage of Unscanned, Vulnerable,  interface(s). Vulnerability scan results come 
and Secured devices. from FortiClient EMS.  Go to Network >
Interfaces.

Device related information only corresponds to devices local to the FortiGate. Device 
information from downstream FortiGates do not propagate to the Upstream FortiGate.

FortiOS 6.4.6 Administration Guide 372


Fortinet Technologies Inc.
Fortinet Security Fabric

Viewing the Security Rating monitor

The Security Rating monitor is separated into three major scorecards: Security Posture, Fabric Coverage, and 


Optimization, which provide an executive summary of the three largest areas of security focus in the Security Fabric.
To see the Security Rating summary, the root FortiGate and all FortiGates within the Fabric should have the proper 
FortiGuard Security Rating license. Security rating is performed on the root FortiGate. Its reports are generated 
periodically.
To view the Security Rating monitor, go to Network Operations Center > Security Rating.

The scorecards show an overall score of the performance and sub-categories. The point score represents the net score 
for all passed and failed items in that area.
For more information about the Security Rating score, see  Security Fabric score on page 224.

Viewing the Compromised Hosts monitor

The Compromised Hosts monitor leverages the data collected by FortiAnalyzer on the endpoints on your network. To 
see compromised hosts, the FortiAnalyzer must have a FortiGuard Indicators of Compromise license. The IOC service 
helps identify compromised hosts based on infected websites that it may have visited.
This monitor captures the same information as seen on the Compromised Hosts monitor on the FortiGate.

FortiOS 6.4.6 Administration Guide 373


Fortinet Technologies Inc.
Fortinet Security Fabric

To view the Compromised Hosts monitor:

 1. Go to Security Operations Center > Compromised Hosts.


 2. In the left-hand pane, scroll through the user list. The monitor displays three panes:   
 l The User Information pane displays the user's contact information and IP address.
 l The Topology View pane displays the user's location in the topology.
 l The Verdict View pane displays the Malware, Detected Method, and Security Action.

Viewing the Vulnerability Monitor

The Vulnerability Monitor obtains data from FortiClient EMS. It displays vulnerabilities detected by the FortiClient 
endpoint, categorized into Critical, High, Medium and Low risk. In this example, an on-premise FortiClient EMS is 
connected on the root FortiGate’s Fabric Connector.
This monitor captures the same information as seen on the Top Vulnerable Endpoint Devices monitor on the FortiGate.

FortiOS 6.4.6 Administration Guide 374


Fortinet Technologies Inc.
Fortinet Security Fabric

To view the Vulnerability Monitor:

 1. Go to Security Operations Center > Vulnerability Monitor. The monitor displays a user list and their vulnerabilities. 


 2. Use your remote to scroll through the user list. The vulnerability details are displayed on the right side of the monitor.
   
 l The User Information pane displays the user's contact details and IP address.
 l The Vulnerability Summary pane displays the number of vulnerabilities categorized into Critical, High, Medium 
and Low risk.
 l The Topology View pane displays the user's location in the topology.
 l The Top Vulnerabilities pane displays the top vulnerabilities by severity.

Using the SD-WAN monitor

In the example topology, the branches are configured to use SD-WAN. You can use the top-right navigation menu in the 
SD-WAN monitor to navigate to the Branch FortiGate to display information about the SD-WAN.
To view the SD-WAN monitor, go to Software-Defined Branch > SD-WAN Monitor. 
The SD-WAN monitor summarizes the SD-WAN members, Zones, SD-WAN Rules and health checks deployed on the 
FortiGate. It shows the interface member's SD-WAN usage and its associated service level agreements. The monitor 
contains a chart that shows if the ports are meeting the SLA target for bandwidth, jitter and latency per the health check 
in use in each SD-WAN Rule.

FortiOS 6.4.6 Administration Guide 375


Fortinet Technologies Inc.
Fortinet Security Fabric

Some of the SD-WAN statistics are only available in FOS 6.4.1 and higher.

To view SD-WAN usage charts:

 1. In the SD-WAN Overview area, Use your remote to select the SD-WAN Usage pane.


 2. Scroll left and right to view Bandwidth, Volume and Sessions charts for the VIRTUAL-WAN-LINK and Underlay 
interfaces in the SD-WAN Zones pane.

To view SLA targets:

 1. In the SD-WAN Rules  area, use your remote to scroll the rules pane at the left-side of the monitor. 


 l The Destinations pane displays the destination details. 
 l The Performance SLA pane displays the SLA targets for the rule.
 l The SD-WAN Active Interface pane displays a checkmark next to the active interface.

FortiOS 6.4.6 Administration Guide 376


Fortinet Technologies Inc.
Fortinet Security Fabric

 2. Use your remote to navigate between the Latency, Jitter, and Packet Loss charts.

To view a branch in the topology:

 1. Use your remote to swipe to the top navigation in the monitor. Wait for the topology to load.
 2. At the top-right of the monitor, select the current device.

 3. Select the device you want to view.

Troubleshooting

The following topics provide troubleshooting information for the Fortinet Security Fabric:

FortiOS 6.4.6 Administration Guide 377


Fortinet Technologies Inc.
Fortinet Security Fabric

 l Viewing a summary of all connected FortiGates in a Security Fabric on page 378
 l Diagnosing automation stitches on page 380

Viewing a summary of all connected FortiGates in a Security Fabric

In downstream FortiGates, the diagnose sys csf global command shows a summary of all of the connected 


FortiGates in the Security Fabric.

To view a Security Fabric summary on a downstream FortiGate:

# diagnose sys csf global


Current vision:
[
{
"path":"FGVM01TM19000001",
"mgmt_ip_str":"104.196.102.183",
"mgmt_port":10403,
"sync_mode":1,
"saml_role":"identity-provider",
"admin_port":443,
"serial":"FGVM01TM19000001",
"host_name":"admin-root",
"firmware_version_major":6,
"firmware_version_minor":2,
"firmware_version_patch":0,
"firmware_version_build":1010,
"subtree_members":[
{
"serial":"FGVM01TM19000002"
},
{
"serial":"FGVM01TM19000003"
},
{
"serial":"FGVM01TM19000004"
},
{
"serial":"FGVM01TM19000005"
}
]
},
{
"path":"FGVM01TM19000001:FGVM01TM19000002",
"mgmt_ip_str":"104.196.102.183",
"mgmt_port":10423,
"sync_mode":1,
"saml_role":"service-provider",
"admin_port":443,
"serial":"FGVM01TM19000002",
"host_name":"Branch_Office_01",
"firmware_version_major":6,
"firmware_version_minor":2,
"firmware_version_patch":0,
"firmware_version_build":1010,

FortiOS 6.4.6 Administration Guide 378


Fortinet Technologies Inc.
Fortinet Security Fabric

"upstream_intf":"Branch-HQ-A",
"upstream_serial":"FGVM01TM19000001",
"parent_serial":"FGVM01TM19000001",
"parent_hostname":"admin-root",
"upstream_status":"Authorized",
"upstream_ip":22569994,
"upstream_ip_str":"10.100.88.1",
"subtree_members":[
],
"is_discovered":true,
"ip_str":"10.0.10.2",
"downstream_intf":"To-HQ-A",
"idx":1
},
{
"path":"FGVM01TM19000001:FGVM01TM19000003",
"mgmt_ip_str":"104.196.102.183",
"mgmt_port":10407,
"sync_mode":1,
"saml_role":"service-provider",
"admin_port":443,
"serial":"FGVM01TM19000003",
"host_name":"Enterprise_Second_Floor",
"firmware_version_major":6,
"firmware_version_minor":2,
"firmware_version_patch":0,
"firmware_version_build":1010,
"upstream_intf":"port3",
"upstream_serial":"FGVM01TM19000001",
"parent_serial":"FGVM01TM19000001",
"parent_hostname":"admin-root",
"upstream_status":"Authorized",
"upstream_ip":22569994,
"upstream_ip_str":"10.100.88.1",
"subtree_members":[
],
"is_discovered":true,
"ip_str":"10.100.88.102",
"downstream_intf":"port1",
"idx":2
},
{
"path":"FGVM01TM19000001:FGVM01TM19000004",
"mgmt_ip_str":"104.196.102.183",
"mgmt_port":10424,
"sync_mode":1,
"saml_role":"service-provider",
"admin_port":443,
"serial":"FGVM01TM19000004",
"host_name":"Branch_Office_02",
"firmware_version_major":6,
"firmware_version_minor":2,
"firmware_version_patch":0,
"firmware_version_build":1010,
"upstream_intf":"HQ-MPLS",
"upstream_serial":"FGVM01TM19000001",

FortiOS 6.4.6 Administration Guide 379


Fortinet Technologies Inc.
Fortinet Security Fabric

"parent_serial":"FGVM01TM19000001",
"parent_hostname":"admin-root",
"upstream_status":"Authorized",
"upstream_ip":22569994,
"upstream_ip_str":"10.100.88.1",
"subtree_members":[
],
"is_discovered":true,
"ip_str":"10.0.12.3",
"downstream_intf":"To-HQ-MPLS",
"idx":3
},
{
"path":"FGVM01TM19000001:FGVM01TM19000005",
"mgmt_ip_str":"104.196.102.183",
"mgmt_port":10404,
"sync_mode":1,
"saml_role":"service-provider",
"admin_port":443,
"serial":"FGVM01TM19000005",
"host_name":"Enterprise_First_Floor",
"firmware_version_major":6,
"firmware_version_minor":2,
"firmware_version_patch":0,
"firmware_version_build":1010,
"upstream_intf":"port3",
"upstream_serial":"FGVM01TM19000001",
"parent_serial":"FGVM01TM19000001",
"parent_hostname":"admin-root",
"upstream_status":"Authorized",
"upstream_ip":22569994,
"upstream_ip_str":"10.100.88.1",
"subtree_members":[
],
"is_discovered":true,
"ip_str":"10.100.88.101",
"downstream_intf":"port1",
"idx":4
}
]

Diagnosing automation stitches

Diagnose commands are available to:
 l Test an automation stitch
 l Enable or disable log dumping for automation stitches
 l Display the settings of every automation stitch
 l Display statistics on every automation stitch

To test an automation stitch:

diagnose automation test <automation-stitch-name>

Example:

FortiOS 6.4.6 Administration Guide 380


Fortinet Technologies Inc.
Fortinet Security Fabric

# diagnose automation test HA-failover


automation test is done. stitch:HA-failover

To toggle log dumping:

diagnose test application autod 1

Examples:
# diagnose test application autod 1
autod log dumping is enabled
# diagnose test application autod 1
autod log dumping is disabled

autod logs dumping summary:


autod dumped total:7 logs, num of logids:4

To display the settings for all of the automation stitches:

diagnose test application autod 2

Example:
# diagnose test application autod 2
csf: enabled root:yes
total stitches activated: 3

stitch: Compromised-IP-Banned
destinations: all
trigger: Compromised-IP-Banned

local hit: 0 relayed to: 0 relayed from: 0


actions:
Compromised-IP-Banned_ban-ip type:ban-ip interval:0

stitch: HA-failover
destinations: HA-failover_ha-cluster_25;
trigger: HA-failover

local hit: 0 relayed to: 0 relayed from: 0


actions:
HA-failover_email type:email interval:0
subject: HA Failover
mailto:[email protected];

stitch: rebooot
destinations: all
trigger: reboot

local hit: 0 relayed to: 0 relayed from: 0


actions:
action1 type:alicloud-function interval:0
delay:1 required:yes
Account ID: id
Region: region
Function domain: fc.aliyuncs.com
Version: versoin

FortiOS 6.4.6 Administration Guide 381


Fortinet Technologies Inc.
Fortinet Security Fabric

Service name: serv


Function name: funcy
headers:

To display statistic on all of the automation stitches:

diagnose test application autod 3

Example:
stitch: Compromised-IP-Banned
local hit: 0 relayed to: 0 relayed from: 0
last trigger:Wed Dec 31 20:00:00 1969
last relay:Wed Dec 31 20:00:00 1969
actions:
Compromised-IP-Banned_ban-ip:
done: 1 relayed to: 0 relayed from: 0
last trigger:Wed Dec 31 20:00:00 1969
last relay:

stitch: HA-failover
local hit: 0 relayed to: 0 relayed from: 0
last trigger:Thu May 24 11:35:22 2018
last relay:Thu May 24 11:35:22 2018
actions:
HA-failover_email:
done: 1 relayed to: 1 relayed from: 1
last trigger:Thu May 24 11:35:22 2018
last relay:Thu May 24 11:35:22 2018

stitch: rebooot
local hit: 2 relayed to: 1 relayed from: 1
last trigger:Fri May 3 13:30:56 2019
last relay:Fri May 3 13:30:23 2019
actions:
action1
done: 1 relayed to: 0 relayed from: 0
last trigger:Fri May 3 13:30:56 2019
last relay:

logid2stitch mapping:
id:20103 local hit: 0 relayed to: 0 relayed from: 0
License Expiry
lambada

id:32138 local hit: 2 relayed to: 1 relayed from: 1


Compromised-IP-Banned
HA-failover
rebooot

action run cfg&stats:


total:2 cur:0 done:1 drop:1
email:
flags:10
stats: total:1 cur:0 done:1 drop:0
ios-notification:
flags:1

FortiOS 6.4.6 Administration Guide 382


Fortinet Technologies Inc.
Fortinet Security Fabric

stats: total:0 cur:0 done:0 drop:0


alert:
flags:0
stats: total:0 cur:0 done:0 drop:0
disable-ssid:
flags:7
stats: total:0 cur:0 done:0 drop:0
quarantine:
flags:7
stats: total:0 cur:0 done:0 drop:0
quarantine-forticlient:
flags:4
stats: total:0 cur:0 done:0 drop:0
quarantine-nsx:
flags:4
stats: total:0 cur:0 done:0 drop:0
ban-ip:
flags:7
stats: total:0 cur:0 done:0 drop:0
aws-lambda:
flags:11
stats: total:0 cur:0 done:0 drop:0
webhook:
flags:11
stats: total:0 cur:0 done:0 drop:0
cli-script:
flags:10
stats: total:0 cur:0 done:0 drop:0
azure-function:
flags:11
stats: total:1 cur:0 done:0 drop:1
google-cloud-function:
flags:11
stats: total:0 cur:0 done:0 drop:0
alicloud-function:
flags:11
stats: total:0 cur:0 done:0 drop:0

FortiOS 6.4.6 Administration Guide 383


Fortinet Technologies Inc.
Network

The following topics provide information about network settings:
 l Interfaces on page 384
 l DNS on page 430
 l Explicit and transparent proxies on page 443
 l SD-WAN on page 563
 l DHCP server on page 491
 l Static routing on page 497
 l RIP on page 520
 l OSPF on page 520
 l BGP on page 520
 l Multicast on page 520
 l FortiExtender on page 524
 l Direct IP support for LTE/4G on page 530
 l LLDP reception on page 533
 l Route leaking between VRFs on page 536
 l Route leaking between multiple VRFs on page 538
 l NetFlow on page 548

Interfaces

Physical and virtual interfaces allow traffic to flow between internal networks, and between the internet and internal 
networks. FortiGate has options for setting up interfaces and groups of subnetworks that can scale as your organization 
grows. You can create and edit VLAN, EMAC-VLAN, switch interface, zones, and so on.
The following topics provide information about interfaces:
 l Interface settings on page 385
 l Aggregation and redundancy on page 388
 l VLANs on page 390
 l Enhanced MAC VLANs on page 396
 l Inter-VDOM routing on page 399
 l Software switch on page 404
 l Hardware switch on page 406
 l Zone on page 408
 l Virtual Wire Pair on page 410
 l Virtual switch support for FortiGate 300E series on page 411
 l Failure detection for aggregate and redundant interfaces on page 413
 l VLAN inside VXLAN on page 414
 l Virtual Wire Pair with VXLAN on page 416
 l Assign a subnet with the FortiIPAM service on page 418

FortiOS 6.4.6 Administration Guide 384


Fortinet Technologies Inc.
Network

 l Configure a VRF ID on an interface on page 425
 l Interface MTU packet size on page 427
 l One-arm sniffer on page 429

Interface settings

Administrators can configure both physical and virtual FortiGate interfaces in Network > Interfaces. There are different 


options for configuring interfaces when FortiGate is in NAT mode or transparent mode.

To configure an interface in the GUI:

 1. Go to Network > Interfaces.


 2. Click Create New > Interface.
 3. Configure the interface fields:   

Interface Name Physical interface names cannot be changed.

Alias Enter an alternate name for a physical interface on the FortiGate unit. This 
field appears when you edit an existing physical interface. The alias does not 
appear in logs.
The maximum length of the alias is 25 characters.

Type The configuration type for the interface, such as VLAN or Software Switch.

Link Status Indicates whether the interface is connected to a network or not (link status is 


up or down). This field is available when you edit an existing physical interface.

Interface This field is available when Type is set to VLAN.
Select the name of the physical interface that you want to add a VLAN 
interface to. Once created, the VLAN interface is listed below its physical 
interface in the Interface list.
You cannot change the physical interface of a VLAN interface except when 
you add a new VLAN interface.

VLAN ID This field is available when Type is set to VLAN.
Enter the VLAN ID. The VLAN ID can be any number between 1 and 4094 and 
must match the VLAN ID added by the IEEE 802.1Q-compliant router or 
switch that is connected to the VLAN subinterface.
The VLAN ID cannot be edited after the interface is added.

Virtual Domain Select the virtual domain to add the interface to.


Only administrator accounts with the super_admin profile can change the 
Virtual Domain.

Role Set the role setting for the interface. Different settings will be shown or hidden 
when editing an interface depending on the role.
 l LAN: Used to connected to a local network of endpoints. It is default role 
for new interfaces.
 l WAN: Used to connected to the internet. When WAN is selected, the 
Estimated bandwidth setting is available, and the following settings are 

FortiOS 6.4.6 Administration Guide 385


Fortinet Technologies Inc.
Network

not: DHCP server,  Create address object matching subnet,  Device


detection,  Security mode,  One-arm sniffer,  Dedicate to extension/fortiap
modes, and  Admission Control.and will show Estimated Bandwidth 
settings.
 l DMZ: Used to connected to the DMZ. When selected, DHCP server and 
Security mode are not available.
 l Undefined: The interface has no specific role. When selected, Create
address object matching subnet is not available.

Interface Members This section can has different formats depending on the Type:


Software Switch: This field is read-only, and shows the interfaces that belong 
to the virtual interface of the software switch.
802.3ad Aggregate or Redundant Interface: This field includes the available 
and selected interface lists.

Addressing mode Select the addressing mode for the interface.


 l Manual: Add an IP address and netmask for the interface. If IPv6 
configuration is enabled,you can add both an IPv4 and an IPv6 address.
 l DHCP: Get the interface IP address and other network settings from a 
DHCP server.
 l PPPoE: Get the interface IP address and other network settings from a 
PPPoE server. This option is only available on the low-end FortiGate 
models.
 l Auto-managed by FortiIPAM: Assign subnets to prevent duplicate 
IP addresses from overlapping within the same Security Fabric. See 
Assign a subnet with the FortiIPAM service on page 418.
 l One-Arm Sniffer: Set the interface as a sniffer port so it can be used to 
detect attacks. 

IP/Netmask If Addressing Mode is set to Manual, enter an IPv4 address and subnet mask 


for the interface. FortiGate interfaces cannot have multiple IP addresses on 
the same subnet.

IPv6 Address/Prefix If Addressing Mode is set to Manual and IPv6 support is enabled, enter an 


IPv6 address and subnet mask for the interface. A single interface can have an 
IPv4 address, IPv6 address, or both.

Create address object This option is available when Role is set to LAN or DMZ.


matching subnet Enable this option to automatically create an address object that matches the 
interface subnet.

Secondary IP Address Add additional IPv4 addresses to this interface.

IPv4 Administrative Access Select the types of administrative access permitted for IPv4 connections to this 


interface. See Configure administrative access to interfaces on page 387.

IPv6 Administrative Access Select the types of administrative access permitted for IPv6 connections to this 


interface. See Configure administrative access to interfaces on page 387.

DHCP Server Select to enable a DHCP server for the interface.

Device Detection Enable/disable passively gathering device identity information about the 


devices on the network that are connected to this interface.

FortiOS 6.4.6 Administration Guide 386


Fortinet Technologies Inc.
Network

Security Mode Enable/disable captive portal authentication for this interface. After enabling 


captive portal authentication, you can configure the authentication portal, user 
and group access,  custom portal messages, exempt sources and 
destinations/services, and redirect after captive portal.

Outbound shaping profile Enable/disable traffic shaping on the interface. This allows you to enforce 


bandwidth limits on individual interfaces. See Interface-based traffic shaping 
profile on page 1095 for more information.

Comments Enter a description of the interface of up to 255 characters.

Status Enable/disable the interface.
 l Enabled: The interface is active and can accept network traffic.
 l Disabled: The interface is not active and cannot accept traffic.

 4. Click OK.

To configure an interface in the CLI:

config system interface


edit "<Interface_Name>"
set vdom "<VDOM_Name>"
set mode static/dhcp/pppoe
set ip <IP_address> <netmask>
set security-mode {none | captive-portal}
set egress-shaping-profile <Profile_name>
set device-identification {enable | disable}
set allowaccess ping https ssh http
set secondary-IP enable
config secondaryip
edit 1
set ip 9.1.1.2 255.255.255.0
set allowaccess ping https ssh snmp http
next
end
next
end

Configure administrative access to interfaces

You can configure the protocols that administrators can use to access interfaces on the FortiGate. This helps secure 
access to the FortiGate by restricting access to a limited number of protocols. It helps prevent users from accessing 
interfaces that you don't want them to access, such as public-facing ports.
As a best practice, you should configure administrative access when you're setting the IP address for a port.

To configure administrative access to interfaces in the GUI:

 1. Go to Network > Interfaces.


 2. Create or edit an interface.

FortiOS 6.4.6 Administration Guide 387


Fortinet Technologies Inc.
Network

 3. In the Administrative Access section, select which protocols to enable for IPv4 and IPv6 Administrative Access.

HTTPS Allow secure HTTPS connections to the FortiGate GUI through this interface. If 
configured, this option is enabled automatically.

HTTP Allow HTTP connections to the FortiGate GUI through this interface. This option can 
only be enabled if  HTTPS is already enabled.

PING The interface responds to pings. Use this setting to verify your installation and for 
testing.

FMG-Access Allow FortiManager authorization automatically during the communication 
exchanges between FortiManager and FortiGate devices.

SSH Allow SSH connections to the CLI through this interface.

SNMP Allow a remote SNMP manager to request SNMP information by connecting to this 
interface.

FTM Allow FortiToken Mobile Push (FTM) access.

RADIUS Accounting Allow RADIUS accounting information on this interface.

Security Fabric Allow Security Fabric access. This enables FortiTelemetry and CAPWAP.


Connection

Aggregation and redundancy

Link aggregation (IEEE 802.3ad) enables you to bind two or more physical interfaces together to form an aggregated 
(combined) link. This new link has the bandwidth of all the links combined. If a link in the group fails, traffic is transferred 
automatically to the remaining interfaces. The only noticeable effect is reduced bandwidth.
This feature is similar to redundant interfaces. The major difference is a redundant interface group only uses one link at a 
time, where an aggregate link group uses the total bandwidth of the functioning links in the group, up to eight (or more).
An interface is available to be an aggregate interface if:
 l It is a physical interface and not a VLAN interface or subinterface.
 l It is not already part of an aggregate or redundant interface.
 l It is in the same VDOM as the aggregated interface. Aggregate ports cannot span multiple VDOMs.
 l It does not have an IP address and is not configured for DHCP or PPPoE.
 l It is not referenced in any security policy, VIP, IP Pool, or multicast policy.
 l It is not an HA heartbeat interface.
 l It is not one of the FortiGate-5000 series backplane interfaces.
When an interface is included in an aggregate interface, it is not listed on the Network > Interfaces page. Interfaces still 
appear in the CLI although configuration for those interfaces do not take affect. You cannot configure the interface 
individually and it is not available for inclusion in security policies, VIPs, IP pools, or routing.

Sample configuration

This example creates an aggregate interface on a FortiGate-140D POE using ports 3-5 with an internal IP address of 
10.1.1.123, as well as the administrative access to HTTPS and SSH.

FortiOS 6.4.6 Administration Guide 388


Fortinet Technologies Inc.
Network

To create an aggregate interface using the GUI:

 1. Go to Network > Interfaces and select Create New > Interface.


 2. For Interface Name, enter Aggregate.
 3. For the Type, select 802.3ad Aggregate.
 4. In the physical Interface Members, click to add interfaces and select ports 4, 5, and 6.
 5. For Addressing mode, select Manual.
 6. For the IP address for the port, enter 10.1.1.123/24.
 7. For Administrative Access, select HTTPS and SSH.
 8. Select OK.

To create an aggregate interface using the CLI:

FG140P3G15800330 (aggregate) # show


config system interface
edit "aggregate"
set vdom "root"
set ip 10.1.1.123 255.255.255.0
set allowaccess ping https ssh snmp http fgfm radius-acct capwap ftm
set type aggregate
set member "port3" "port4" "port5"
set device-identification enable
set lldp-transmission enable
set fortiheartbeat enable
set role lan
set snmp-index 45
next
end

Redundancy

In a redundant interface, traffic only goes over one interface at any time. This differs from an aggregated interface where 
traffic goes over all interfaces for increased bandwidth. This difference means redundant interfaces can have more 
robust configurations with fewer possible points of failure. This is important in a fully-meshed HA configuration.
An interface is available to be in a redundant interface if:
 l It is a physical interface and not a VLAN interface.
 l It is not already part of an aggregated or redundant interface.
 l It is in the same VDOM as the redundant interface.
 l It does not have an IP address and is not configured for DHCP or PPPoE.
 l It has no DHCP server or relay configured on it.
 l It does not have any VLAN subinterfaces.
 l It is not referenced in any security policy, VIP, or multicast policy.
 l It is not monitored by HA.
 l It is not one of the FortiGate-5000 series backplane interfaces.
When an interface is included in a redundant interface, it is not listed on the Network > Interfaces page. You cannot 
configure the interface individually and it is not available for inclusion in security policies, VIPs, or routing.

FortiOS 6.4.6 Administration Guide 389


Fortinet Technologies Inc.
Network

Sample configuration

To create a redundant interface using the GUI:

 1. Go to Network > Interfaces and select Create New > Interface.


 2. For Interface Name, enter Redundant.
 3. For the Type, select Redundant Interface.
 4. In the physical Interface Members, click to add interfaces and select ports 4, 5, and 6.
 5. For Addressing mode, select Manual.
 6. For the IP address for the port, enter 10.13.101.100/24.
 7. For Administrative Access, select HTTPS and SSH.
 8. Select OK.

To create a redundant interface using the CLI:

config system interface


edit "red"
set vdom "root"
set ip 10.13.101.100 255.255.255.0
set allowaccess https http
set type redundant
set member "port4" "port5" "port6"
set device-identification enable
set role lan
set snmp-index 9
next
end

VLANs

Virtual Local Area Networks (VLANs) multiply the capabilities of your FortiGate unit and can also provide added network 
security. VLANs use ID tags to logically separate devices on a network into smaller broadcast domains. These smaller 
domains forward packets only to devices that are part of that VLAN domain. This reduces traffic and increases network 
security.

VLANs in NAT mode

In NAT mode, the FortiGate unit functions as a layer-3 device. In this mode, the FortiGate unit controls the flow of 
packets between VLANs and can also remove VLAN tags from incoming VLAN packets. The FortiGate unit can also 
forward untagged packets to other networks such as the Internet.
In NAT mode, the FortiGate unit supports VLAN trunk links with IEEE 802.1Q-compliant switches or routers. The trunk 
link transports VLAN-tagged packets between physical subnets or networks. When you add VLAN subinterfaces to the 
FortiGate's physical interfaces, the VLANs have IDs that match the VLAN IDs of packets on the trunk link. The FortiGate 
unit directs packets with VLAN IDs to subinterfaces with matching IDs.
You can define VLAN subinterfaces on all FortiGate physical interfaces. However, if multiple virtual domains are 
configured on the FortiGate unit, you only have access to the physical interfaces on your virtual domain. The FortiGate 
unit can tag packets leaving on a VLAN subinterface. It can also remove VLAN tags from incoming packets and add a 
different VLAN tag to outgoing packets.

FortiOS 6.4.6 Administration Guide 390


Fortinet Technologies Inc.
Network

Normally in VLAN configurations, the FortiGate unit's internal interface is connected to a VLAN trunk, and the external 
interface connects to an Internet router that is not configured for VLANs. In this configuration, the FortiGate unit can 
apply different policies for traffic on each VLAN interface connected to the internal interface, which results in less 
network traffic and better security.

Sample topology

In this example, two different internal VLAN networks share one interface on the FortiGate unit and share the connection 
to the Internet. This example shows that two networks can have separate traffic streams while sharing a single interface. 
This configuration can apply to two departments in a single company or to different companies.
There are two different internal network VLANs in this example. VLAN_100 is on the 10.1.1.0/255.255.255.0 subnet, and 
VLAN_200 is on the 10.1.2.0/255.255.255.0 subnet. These VLANs are connected to the VLAN switch.
The FortiGate internal interface connects to the VLAN switch through an 802.1Q trunk. The internal interface has an IP 
address of 192.168.110.126 and is configured with two VLAN subinterfaces (VLAN_100 and VLAN_200). The external 
interface has an IP address of 172.16.21.2 and connects to the Internet. The external interface has no VLAN 
subinterfaces.
When the VLAN switch receives packets from VLAN_100 and VLAN_200, it applies VLAN ID tags and forwards the 
packets of each VLAN both to local ports and to the FortiGate unit across the trunk link. The FortiGate unit has policies 
that allow traffic to flow between the VLANs, and from the VLANs to the external network. 

  

Sample configuration

In this example, both the FortiGate unit and the Cisco 2950 switch are installed and connected and basic configuration 
has been completed. On the switch, you need access to the CLI to enter commands. No VDOMs are enabled in this 
example.
General configuration steps include:
 1. Configure the external interface.
 2. Add two VLAN subinterfaces to the internal network interface.

FortiOS 6.4.6 Administration Guide 391


Fortinet Technologies Inc.
Network

 3. Add firewall addresses and address ranges for the internal and external networks.
 4. Add security policies to allow:
 l the VLAN networks to access each other.
 l the VLAN networks to access the external network.

To configure the external interface:

config system interface


edit external
set mode static
set ip 172.16.21.2 255.255.255.0
end

To add VLAN subinterfaces:

config system interface


edit VLAN_100
set vdom root
set interface internal
set type vlan
set vlanid 100
set mode static
set ip 10.1.1.1 255.255.255.0
set allowaccess https ping
next
edit VLAN_200
set vdom root
set interface internal
set type vlan
set vlanid 200
set mode static
set ip 10.1.2.1 255.255.255.0
set allowaccess https ping
end

To add the firewall addresses:

config firewall address


edit VLAN_100_Net
set type ipmask
set subnet 10.1.1.0 255.255.255.0
next
edit VLAN_200_Net
set type ipmask
set subnet 10.1.2.0 255.255.255.0
end

To add security policies:

Policies 1 and 2 do not need NAT enabled, but policies 3 and 4 do need NAT enabled.
config firewall policy
edit 1
set srcintf VLAN_100
set srcaddr VLAN_100_Net

FortiOS 6.4.6 Administration Guide 392


Fortinet Technologies Inc.
Network

set dstintf VLAN_200


set dstaddr VLAN_200_Net
set schedule always
set service ALL
set action accept
set nat disable
set status enable
next
edit 2
set srcintf VLAN_200
set srcaddr VLAN_200_Net
set dstintf VLAN_100
set dstaddr VLAN_100_Net
set schedule always
set service ALL
set action accept
set nat disable
set status enable
next
edit 3
set srcintf VLAN_100
set srcaddr VLAN_100_Net
set dstintf external
set dstaddr all
set schedule always
set service ALL
set action accept
set nat enable
set status enable
next
edit 4
set srcintf VLAN_200
set srcaddr VLAN_200_Net
set dstintf external
set dstaddr all
set schedule always
set service ALL
set action accept
set nat enable
set status enable
end

VLANs in transparent mode

In transparent mode, the FortiGate unit behaves like a layer-2 bridge but can still provide services such as antivirus 
scanning, web filtering, spam filtering, and intrusion protection to traffic. Some limitations of transparent mode is that you 
cannot use SSL VPN, PPTP/L2TP VPN, DHCP server, or easily perform NAT on traffic. The limits in transparent mode 
apply to IEEE 802.1Q VLAN trunks passing through the unit.
You can insert the FortiGate unit operating in transparent mode into the VLAN trunk without making changes to your 
network. In a typical configuration, the FortiGate unit internal interface accepts VLAN packets on a VLAN trunk from a 
VLAN switch or router connected to internal network VLANs. The FortiGate external interface forwards VLAN-tagged 
packets through another VLAN trunk to an external VLAN switch or router and on to external networks such as the 
Internet. You can configure the unit to apply different policies for traffic on each VLAN in the trunk.

FortiOS 6.4.6 Administration Guide 393


Fortinet Technologies Inc.
Network

To pass VLAN traffic through the FortiGate unit, you add two VLAN subinterfaces with the same VLAN ID, one to the 
internal interface and the other to the external interface. You then create a security policy to permit packets to flow from 
the internal VLAN interface to the external VLAN interface. If required, create another security policy to permit packets to 
flow from the external VLAN interface to the internal VLAN interface. Typically in transparent mode, you do not permit 
packets to move between different VLANs. Network protection features such as spam filtering, web filtering, and anti-
virus scanning, are applied through the UTM profiles specified in each security policy, enabling very detailed control over 
traffic.
When the FortiGate unit receives a VLAN-tagged packet on a physical interface, it directs the packet to the VLAN 
subinterface with the matching VLAN ID. The VLAN tag is removed from the packet and the FortiGate unit then applies 
security policies using the same method it uses for non-VLAN packets. If the packet exits the FortiGate unit through a 
VLAN subinterface, the VLAN ID for that subinterface is added to the packet and the packet is sent to the corresponding 
physical interface.

Sample topology

In this example, the FortiGate unit is operating in transparent mode and is configured with two VLANs: one with an ID of 
100 and the other with ID 200. The internal and external physical interfaces each have two VLAN subinterfaces, one for 
VLAN_100 and one for VLAN_200.
The IP range for the internal VLAN_100 network is 10.100.0.0/255.255.0.0, and for the internal VLAN_200 network is 
10.200.0.0/255.255.0.0.
The internal networks are connected to a Cisco 2950 VLAN switch which combines traffic from the two VLANs onto one 
in the FortiGate unit's internal interface. The VLAN traffic leaves the FortiGate unit on the external network interface, 
goes on to the VLAN switch, and on to the Internet. When the FortiGate units receives a tagged packet, it directs it from 
the incoming VLAN subinterface to the outgoing VLAN subinterface for that VLAN.
In this example, we create a VLAN subinterface on the internal interface and another one on the external interface, both 
with the same VLAN ID. Then we create security policies that allow packets to travel between the VLAN_100_int 
interface and the VLAN_100_ext interface. Two policies are required: one for each direction of traffic. The same is 
required between the VLAN_200_int interface and the VLAN_200_ext interface, for a total of four security policies.

FortiOS 6.4.6 Administration Guide 394


Fortinet Technologies Inc.
Network

Sample configuration

There are two main steps to configure your FortiGate unit to work with VLANs in transparent mode:
 1. Add VLAN subinterfaces.
 2. Add security policies.
You can also configure the protection profiles that manage antivirus scanning, web filtering, and spam filtering.

To add VLAN subinterfaces:

config system interface


edit VLAN_100_int
set type vlan
set interface internal
set vlanid 100
next
edit VLAN_100_ext
set type vlan
set interface external
set vlanid 100
next
edit VLAN_200_int
set type vlan
set interface internal
set vlanid 200
next
edit VLAN_200_ext
set type vlan
set interface external
set vlanid 200
end

To add security policies:

config firewall policy


edit 1
set srcintf VLAN_100_int
set srcaddr all
set dstintf VLAN_100_ext
set dstaddr all
set action accept
set schedule always
set service ALL
next
edit 2
set srcintf VLAN_100_ext
set srcaddr all
set dstintf VLAN_100_int
set dstaddr all
set action accept
set schedule always
set service ALL
next
edit 3
set srcintf VLAN_200_int

FortiOS 6.4.6 Administration Guide 395


Fortinet Technologies Inc.
Network

set srcaddr all


set dstintf VLAN_200_ext
set dstaddr all
set action accept
set schedule always
set service ALL
next
edit 4
set srcintf VLAN_200_ext
set srcaddr all
set dstintf VLAN_200_int
set dstaddr all
set action accept
set schedule always
set service ALL
end

Enhanced MAC VLANs

The Media Access Control (MAC) Virtual Local Area Network (VLAN) feature in Linux allows you to configure multiple 
virtual interfaces with different MAC addresses (and therefore different IP addresses) on a physical interface.
FortiGate implements an enhanced MAC VLAN consisting of a MAC VLAN with bridge functionality. Because each MAC 
VLAN has a unique MAC address, virtual IP addresses (VIPs) and IP pools are supported, and you can disable Source 
Network Address Translation (SNAT) in policies.
MAC VLAN cannot be used in a transparent mode virtual domain (VDOM). In a transparent mode VDOM, a packet 
leaves an interface with the MAC address of the original source instead of the interface’s MAC address. FortiGate 
implements an enhanced version of MAC VLAN where it adds a MAC table in the MAC VLAN which learns the MAC 
addresses when traffic passes through.
If you configure a VLAN ID for an enhanced MAC VLAN, it won’t join the switch of the underlying interface. When a 
packet is sent to this interface, a VLAN tag is inserted in the packet and the packet is sent to the driver of the underlying 
interface. When the underlying interface receives a packet, if the VLAN ID doesn’t match, it won’t deliver the packet to 
this enhanced MAC VLAN interface.

When using a VLAN ID, the ID and the underlying interface must be a unique pair, even if the 
belong to different VDOMs. This is because the underlying, physical interface uses the VLAN 
ID as the identifier to dispatch traffic among the VLAN and enhanced MAC VLAN interfaces.

If you use an interface in an enhanced MAC VLAN, do not use it for other purposes such as a management interface, HA 
heartbeat interface, or in Transparent VDOMs.
If a physical interface is used by an EMAC VLAN interface, you cannot use it in a Virtual Wire Pair.
In high availability (HA) configurations, enhanced MAC VLAN is treated as a physical interface. It’s assigned a unique 
physical interface ID and the MAC table is synchronized with the secondary devices in the same HA cluster.

FortiOS 6.4.6 Administration Guide 396


Fortinet Technologies Inc.
Network

Example 1: Enhanced MAC VLAN configuration for multiple VDOMs that use the same
interface or VLAN

In this example, a FortiGate is connected, through port 1 to a router that’s connected to the Internet. Three VDOMs share 
the same interface (port 1) which connects to the same router that’s connected to the Internet. Three enhanced MAC 
VLAN interfaces are configured on port 1 for the three VDOMs. The enhanced MAC VLAN interfaces are in the same IP 
subnet segment and each have unique MAC addresses.
The underlying interface (port 1) can be a physical interface, an aggregate interface, or a VLAN interface on a physical or 
aggregate interface.

To configure enhanced MAC VLAN for this example in the CLI:

config system interface


edit port1.emacvlan1
set vdom VDOM1
set type emac-vlan
set interface port1
next
edit port 1.emacvlan2
set vdom VDOM2
set type emac-vlan
set interface port1
next
edit port1.emacvlan3
set vdom VDOM3
set type emac-vlan
set interface port1
next
end

Example 2: Enhanced MAC VLAN configuration for shared VDOM links among multiple
VDOMs

In this example, multiple VDOMs can connect to each other using enhanced MAC VLAN on network processing unit 
(NPU) virtual link (Vlink) interfaces.

FortiOS 6.4.6 Administration Guide 397


Fortinet Technologies Inc.
Network

FortiGate VDOM links (NPU-Vlink) are designed to be peer-to-peer connections and VLAN interfaces on NPU Vlink 
ports use the same MAC address. Connecting more than two VDOMs using NPU Vlinks and VLAN interfaces is not 
recommended.

To configure enhanced MAC VLAN for this example in the CLI:

config system interface


edit npu0_vlink0.emacvlan1
set vdom VDOM1
set type emac-vlan
set interface npu0_vlink0
next
edit npu0_vlink0.emacvlan2
set vdom VDOM3
set type emac-vlan
set interface npu0_vlink0
next
edit npu0_vlink1.emacvlan1
set vdom VDOM2
set type emac-vlan
set interface npu0_vlink1
next
end

Example 3: Enhanced MAC VLAN configuration for unique MAC addresses for each
VLAN interface on the same physical port

Some networks require a unique MAC address for each VLAN interface when the VLAN interfaces share the same 
physical port. In this case, the enhanced MAC VLAN interface is used the same way as normal VLAN interfaces. 
To configure this, use the set vlanid command for the VLAN tag. The VLAN ID and interface must be a unique pair, 
even if they belong to different VDOMs. 

To configure enhanced MAC VLAN:

config system interface


edit <interface-name>
set type emac-vlan

FortiOS 6.4.6 Administration Guide 398


Fortinet Technologies Inc.
Network

set vlanid <VLAN-ID>


set interface <physical-interface>
next
end

Inter-VDOM routing

VDOM links allow VDOMs to communicate internally without using additional physical interfaces.
Inter-VDOM routing is the communication between VDOMs. VDOM links are virtual interfaces that connect VDOMs. A 
VDOM link contains a pair of interfaces, each one connected to a VDOM and forming either end of the inter-VDOM 
connection.
When VDOMs are configured on your FortiGate unit, configuring inter-VDOM routing and VDOM links is like creating a 
VLAN interface. VDOM links can be managed in either the CLI or in the network interface list in the GUI.

VDOM link does not support traffic offload. If you want to use traffic offload, use NPU-VDOM-
LINK.

To configure a VDOM link in the GUI:

 1. In the Global VDOM, go to Network > Interfaces.


 2. Click Create New > VDOM Link.
 3. Configure the fields, including the Name, Virtual Domain, IP information, Administrative Access, and others, then 
click OK.

By default, VDOM links are created as point-to-point (ppp) links. If required, the link type can 
be changed in the CLI.
For example, when running OSPF in IPv6, a link-local address is required in order to 
communicate with OSPF neighbors. For a VDOM link to obtain a link-local address its type 
must be set to ethernet.

To configure a VDOM link in the CLI:

config global
config system vdom-link
edit "<vdom-link-name>"
set type {ppp | ethernet}
next
end
config system interface
edit "<vdom-link-name0>"
set vdom "<VDOM Name>"
set type vdom-link
next
edit "<vdom-link-name1>"
set vdom "<VDOM Name>"
set type vdom-link
next

FortiOS 6.4.6 Administration Guide 399


Fortinet Technologies Inc.
Network

end
end

To delete a VDOM link in the GUI:

 1. In the Global VDOM, go to Network > Interfaces.


 2. Select a VDOM Link and click Delete.

To delete a VDOM link in the CLI:

config global
config system vdom-link
delete <VDOM-LINK-Name>
end
end

Example

This example shows how to configure a FortiGate unit to use inter-VDOM routing.
Two departments of a company, Accounting and Sales, are connected to one FortiGate. The company uses a single ISP 
to connect to the Internet.
This example includes the following general steps. We recommend following the steps in the order below.

Create the VDOMs

To enable VDOMs:

config system global


set vdom-mode multi-vdom
end

You will be logged out of the device when VDOM mode is enabled.

To create the Sales and Accounting VDOMs:

config global
config vdom
edit Accounting
next
edit Sales
next

FortiOS 6.4.6 Administration Guide 400


Fortinet Technologies Inc.
Network

end
end

Configure the physical interfaces

Next, configure the physical interfaces. This example uses three interfaces on the FortiGate unit: port2 (internal), port3 
(DMZ), and port1 (external). Port2 and port3 interfaces each have a department’s network connected. Port1 is for all 
traffic to and from the Internet and uses DHCP to configure its IP address, which is common with many ISPs.

To configure the interfaces:

config global
config system interface
edit port2
set alias AccountingLocal
set vdom Accounting
set mode static
set ip 172.100.1.1 255.255.0.0
set allowaccess https ping ssh
set description "The accounting dept internal interface"
next
edit port3
set alias SalesLocal
set vdom Sales
set mode static
set ip 192.168.1.1 255.255.0.0
set allowaccess https ping ssh
set description "The sales dept. internal interface"
next
edit port1
set alias ManagementExternal
set vdom root
set mode dhcp
set allowaccess https ssh snmp
set description "The system wide management interface."
next
end
end

Configure the VDOM links

To complete the connection between each VDOM and the management VDOM, add the two VDOM links. One pair is the 
Accounting – management link and the other is the Sales – management link.
When configuring inter-VDOM links, you do not have to assign IP addresses to the links unless you are using advanced 
features such as dynamic routing that require them. Not assigning IP addresses results in faster configuration and more 
available IP addresses on your networks.

To configure the Accounting and management VDOM link:

config global
config system vdom-link
edit AccountVlnk
next

FortiOS 6.4.6 Administration Guide 401


Fortinet Technologies Inc.
Network

end
config system interface
edit AccountVlnk0
set vdom Accounting
set ip 11.11.11.2 255.255.255.0
set allowaccess https ping ssh
set description "Accounting side of the VDOM link"
next
edit AccountVlnk1
set vdom root
set ip 11.11.11.1 255.255.255.0
set allowaccess https ping ssh
set description "Management side of the VDOM link"
next
end
end

To configure the Sales and management VDOM link:

config global
config system vdom-link
edit SalesVlnk
next
end
config system interface
edit SalesVlnk0
set vdom Sales
set ip 12.12.12.2 255.255.255.0
set allowaccess https ping ssh
set description "Sales side of the VDOM link"
next
edit SalesVlnk1
set vdom root
set ip 12.12.12.1 255.255.255.0
set allowaccess https ping ssh
set description "Management side of the VDOM link"
next
end
end

Configure the firewall and security profile

With the VDOMs, physical interfaces, and VDOM links configured, the firewall must now be configured to allow the 
proper traffic. Firewalls are configured per-VDOM, and firewall objects and routes must be created for each VDOM 
separately.

To configure the firewall policies from AccountingLocal to Internet:

config vdom
edit Accounting
config firewall policy
edit 1
set name "Accounting-Local-to-Management"
set srcintf port2
set dstintf AccountVlnk0

FortiOS 6.4.6 Administration Guide 402


Fortinet Technologies Inc.
Network

set srcaddr all


set dstaddr all
set action accept
set schedule always
set service ALL
set nat enable
next
end
next
edit root
config firewall policy
edit 2
set name "Accounting-VDOM-to-Internet"
set srcintf AccountVlnk1
set dstintf port1
set srcaddr all
set dstaddr all
set action accept
set schedule always
set service ALL
set nat enable
next
end
next
end

To configure the firewall policies from SalesLocal to the Internet:

config vdom
edit Sales
config firewall policy
edit 3
set name "Sales-local-to-Management"
set srcintf port3
set dstintf SalesVlnk0
set srcaddr all
set dstaddr all
set action accept
set schedule always
set service ALL
set nat enable
next
end
next
edit root
config firewall policy
edit 4
set name "Sales-VDOM-to-Internet"
set srcintf SalesVlnk1
set dstintf port1
set srcaddr all
set dstaddr all
set action accept
set schedule always
set service ALL
set nat enable

FortiOS 6.4.6 Administration Guide 403


Fortinet Technologies Inc.
Network

next
end
next
end

Test the configuration

When the inter-VDOM routing has been configured, test the configuration to confirm proper operation. Testing 
connectivity ensures that physical networking connections, FortiGate unit interface configurations, and firewall policies 
are properly configured.
The easiest way to test connectivity is to use the ping and traceroute commands to confirm the connectivity of 
different routes on the network.
Test both from AccountingLocal to the internet and from SalesLocal to the internet.

Software switch

A software switch is a virtual switch that is implemented at the software or firmware level and not at the hardware level. A 
software switch can be used to simplify communication between devices connected to different FortiGate interfaces. For 
example, using a software switch, you can place the FortiGate interface connected to an internal network on the same 
subnet as your wireless interfaces. Then devices on the internal network can communicate with devices on the wireless 
network without any additional configuration on the FortiGate unit, such as additional security policies.
A software switch can also be useful if you require more hardware ports for the switch on a FortiGate unit. For example, if 
your FortiGate unit has a 4-port switch, WAN1, WAN2, and DMZ interfaces, and you need one more port, you can create 
a soft switch that can include the four-port switch and the DMZ interface, all on the same subnet. These types of 
applications also apply to wireless interfaces, virtual wireless interfaces, and physical interfaces such as those in 
FortiWiFi and FortiAP units.
Similar to a hardware switch, a software switch functions like a single interface. It has one IP address and all the 
interfaces in the software switch are on the same subnet. Traffic between devices connected to each interface are not 
regulated by security policies, and traffic passing in and out of the switch are controlled by the same policy.
When setting up a software switch, consider the following:
 l Ensure that you have a back up of the configuration.
 l Ensure that you have at least one port or connection, such as the console port, to connect to the FortiGate unit. If 
you accidentally combine too many ports, you need a way to undo errors.
 l The ports that you include must not have any link or relation to any other aspect of the FortiGate unit, such as DHCP 
servers, security policies, and so on.
 l For increased security, you can create a captive portal for the switch to allow only specific user groups access to the 
resources connected to the switch.
Some of the difference between software and hardware switches are:

Feature Software switch Hardware switch

Processing Packets are processed in software by the  Packets are processed in hardware by the 


CPU. hardware switch controller, or SPU where 
applicable.

STP Not Supported Supported

FortiOS 6.4.6 Administration Guide 404


Fortinet Technologies Inc.
Network

Feature Software switch Hardware switch

Wireless SSIDs Supported Not Supported

Intra-switch traffic Allowed by default. Can be explicitly set to  Allowed by default.


require a policy.

To create a software switch in the GUI:

 1. Go to Network > Interfaces.


 2. Click Create New > Interface.
 3. Set Type to Software Switch.
 4. Configure the Name, Interface members, and other fields as required.
To add an interface to a software switch, it cannot be referenced by an existing configuration and its IP address 
must be set to 0.0.0.0/0.0.0.0.
 5. Click OK.

To create a software switch in the CLI:

config system switch-interface


edit <interface>
set vdom <vdom>
set member <interface_list>
set type switch
next
end
config system interface
edit <interface>
set vdom <vdom>
set type switch
set ip <ip_address>
set allowaccess https ssh ping
next
end

To add an interface to a software switch, it cannot be referenced by an existing configuration and its IP address must be 
set to 0.0.0.0/0.0.0.0.

Example

For this example, the wireless interface (WiFi) needs to be on the same subnet as the DMZ1 interface to facilitate 
wireless synchronizing from an iPhone and a local computer. Because synchronizing between two subnets is 
problematic, putting both interfaces on the same subnet allows the synchronizing will work. The software switch will 
accomplish this.
 1. Clear the interfaces and back up the configuration:
 a. Ensure the interfaces are not used for other security policy or for other use on the FortiGate unit.
 b. Check the WiFi and DMZ1 ports to ensure that DHCP is not enabled and that there are no other dependencies 
on these interfaces.
 c. Save the current configuration so that it can be recovered if something foes wrong.
 2. Merge the WiFi port and DMZ1 port to create a software switch named synchro with an IP address of 10.10.21.12 
and administrative access for HTTPS, SSH and PING:

FortiOS 6.4.6 Administration Guide 405


Fortinet Technologies Inc.
Network

config system switch-interface


edit synchro
set vdom "root"
set type switch
set member dmz1 wifi
next
end
config system interface
edit synchro
set ip 10.10.21.12 255.255.255.0
set allowaccess https ssh ping
next
end

After the switch is set up, you add security policies, DHCP servers, and any other settings that are required.

Hardware switch

A hardware switch is a virtual switch interface that groups different ports together so that the FortiGate can use the group 
as a single interface. Supported FortiGate models have a default hardware switch called either internal or lan. The 
hardware switch is supported by the chipset at the hardware level.
Ports that are connected to the same hardware switch behave like they are on the same physical switch in the same 
broadcast domain. Ports can be removed from a hardware switch and assigned to another switch or used as standalone 
interfaces.
Some of the difference between hardware and software switches are:

Feature Hardware switch Software switch

Processing Packets are processed in hardware by the  Packets are processed in software by the 


hardware switch controller, or SPU where  CPU.
applicable.

STP Supported Not Supported

Wireless SSIDs Not Supported Supported

Intra-switch traffic Allowed by default. Allowed by default. Can be explicitly set to 


require a policy.

FortiOS 6.4.6 Administration Guide 406


Fortinet Technologies Inc.
Network

To change the ports in a hardware switch in the GUI:

 1. Go to Network > Interface and edit the hardware switch.


 2. Click inside the Interface members field.

 3. Select interfaces to add or remove them from the hardware switch, then click Close. 
To add an interface to a hardware switch, it cannot be referenced by an existing configuration and its IP address 
must be set to 0.0.0.0/0.0.0.0.
 4. Click OK.
Removed interfaces will now be listed as standalone interfaces in the Physical Interface section.

To remove ports from a hardware switch in the CLI:

config system virtual-switch


edit "internal"
config port
delete internal2
delete internal5
...
end
next
end

To add ports to a hardware switch in the CLI:

config system virtual-switch


edit "internal"
set physical-switch "sw0"
config port
edit "internal1"
next
edit "internal3"
next
edit "internal4"
next
edit "internal6"
next
end
next
end

FortiOS 6.4.6 Administration Guide 407


Fortinet Technologies Inc.
Network

To add an interface to a hardware switch, it cannot be referenced by an existing configuration and its IP address must be 
set to 0.0.0.0/0.0.0.0.

Zone

Zones are a group of one or more physical or virtual FortiGate interfaces that you can apply security policies to control 
inbound and outbound traffic. Grouping interfaces and VLAN subinterfaces into zones simplifies the creation of security 
policies where a number of network segments can use the same policy settings and protection profiles.
When you add a zone, you select the names of the interfaces and VLAN subinterfaces to add to the zone. Each interface 
still has its own address. Routing is still done between interfaces, that is, routing is not affected by zones. You can use 
security policies to control the flow of intra-zone traffic.
For example, in the sample configuration below, the network includes three separate groups of users representing 
different entities on the company network. While each group has its own set of ports and VLANs in each area, they can 
all use the same security policy and protection profiles to access the Internet. Rather than the administrator making nine 
separate security policies, he can make administration simpler by adding the required interfaces to a zone and creating 
three policies.

Sample configuration

You can configure policies for connections to and from a zone but not between interfaces in a zone. For this example, 
you can create a security policy to go between zone 1 and zone 3, but not between WAN2 and WAN1, or WAN1 and 
DMZ1.

To create a zone in the GUI:

 1. Go to Network > Interfaces.

If VDOMs are enabled, go to the VDOM to create a zone.

 2. Click Create New > Zone.


 3. Configure the Name and add the Interface Members.

FortiOS 6.4.6 Administration Guide 408


Fortinet Technologies Inc.
Network

To configure a zone to include the internal interface and a VLAN using the CLI:

config system zone


edit Zone_1
set interface internal VLAN_1
set intrazone deny/allow
next
end

Using zone in a firewall policy

To configure a firewall policy to allow any interface to access the Internet using the CLI:

config firewall policy


edit 2
set name "2"
set srcintf "Zone_1"
set dstintf "port15"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

Intra-zone traffic

In the zone configuration you can set intrazone deny to prohibit the different interfaces in the same zone to talk to 


each other.
For example, if you have ten interfaces in your zone and the intrazone setting is deny. You now want to allow traffic 
between a very small number of networks on different interfaces that are part of the zone but you do not want to disable 
the intra-zone blocking.
In this example, the zone VLANs are defined as: 192.168.1.0/24, 192.168.2.0/24, ... 192.168.10.0/24.
This policy allows traffic from 192.168.1.x to 192.168.2.x even though they are in the same zone and intra-zone blocking 
is enabled. The intra-zone blocking acts as a default deny rule and you have to specifically override it by creating a policy 
within the zone.

To enable intra-zone traffic, create the following policy:

Source Interface Zone-name, e.g., Vlans

Source Address 192.168.1.0/24

Destination Zone-name (same as Source Interface, i.e., Vlans)

Destination Address 192.168.2.0/24

FortiOS 6.4.6 Administration Guide 409


Fortinet Technologies Inc.
Network

Virtual Wire Pair

A virtual wire pair consists of two interfaces that do not have IP addressing and are treated like a transparent mode 
VDOM. All traffic received by one interface in the virtual wire pair can only be forwarded to the other interface, provided a 
virtual wire pair firewall policy allows this traffic. Traffic from other interfaces cannot be routed to the interfaces in a virtual 
wire pair. Redundant and 802.3ad aggregate (LACP) interfaces can be included in a virtual wire pair.
Virtual wire pairs are useful for a typical topology where MAC addresses do not behave normally. For example, port 
pairing can be used in a Direct Server Return (DSR) topology where the response MAC address pair may not match the 
request’s MAC address pair.

Example

In this example, a virtual wire pair (port3 and port4) makes it easier to protect a web server that is behind a FortiGate 
operating as an Internal Segmentation Firewall (ISFW). Users on the internal network access the web server through the 
ISFW over the virtual wire pair.

Interfaces used in a virtual wire pair cannot be used to access the ISFW FortiGate. Before 
creating a virtual wire pair, make sure you have a different port configured to allow admin 
access using your preferred protocol.

To add a virtual wire pair using the CLI:

config system virtual-wire-pair


edit "VWP-name"
set member "port3" "port4"
set wildcard-vlan disable
next
end

To add a virtual wire pair using the GUI:

 1. Go to Network > Interfaces.


 2. Click Create New > Virtual Wire Pair.
 3. Select the Interface Members to add to the virtual wire pair.
These interfaces cannot be part of a switch, such as the default LAN/internal interface.
 4. If required, enable Wildcard VLAN and set the VLAN Filter.
 5. Click OK.

FortiOS 6.4.6 Administration Guide 410


Fortinet Technologies Inc.
Network

To create a virtual wire pair policy using the CLI:

config firewall policy


edit 1
set name "VWP-Policy"
set srcintf "port3" "port4"
set dstintf "port3" "port4"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set fsso disable
next
end

To create a virtual wire pair policy using the GUI:

 1. Go to Policy & Objects > Firewall Virtual Wire Pair Policy.
 2. Click Create New.
 3. Select the direction that traffic is allowed to flow.
 4. Configure the other fields.
 5. Click OK.

Virtual switch support for FortiGate 300E series

On the FortiGate 300E series, switch ports can be assigned to different VLANs.

To create a VLAN switch in the GUI:

 1. Go to Network > Interfaces and enable VLAN Switch Mode. 

 2. Click Create New > Interface.

FortiOS 6.4.6 Administration Guide 411


Fortinet Technologies Inc.
Network

 3. Enter an interface name and configure the following:
 a. For Type, select VLAN Switch.
 b. (Optional) Enter a VLAN ID (range is 3900–3999).
 c. If applicable, select a Virtual Domain.
 d. Add the Interface Members.
 e. Configure the Address and Administrative Access settings as needed.
 4. Click OK.

The new VLAN switch is visible in the interface table:

To create a VLAN switch in the CLI:

 1. Enable VLAN switch mode:
config system global
set virtual-switch-vlan enable
end

 2. Create the VLAN switch. Optionally, you can assign an ID to the VLAN:
The default ID is 0. You can use the default ID, or you can assign an ID to the VLAN (3900–3999).

FortiOS 6.4.6 Administration Guide 412


Fortinet Technologies Inc.
Network

config system virtual-switch


edit "VLAN switch"
set physical-switch "sw0"
set vlan 3900
config port
edit "port1"
next
edit "port3"
next
end
next
end

 3. Configure the VLAN switch interface:
config system interface
edit "VLAN switch"
set vdom "vdom1"
set ip 6.6.6.1 255.255.255.0
set allowaccess ping https ssh snmp http fgfm
set type hard-switch
set snmp-index 15
next
end

 4. (Optional) Create a trunk interface:
config system interface
edit port2
set trunk enable
next
end

Failure detection for aggregate and redundant interfaces

When an aggregate or redundant interface goes down, the corresponding fail-alert interface changes to down. When an 
aggregate or redundant interface comes up, the corresponding fail-alert interface changes to up.

Fail-detect for aggregate and redundant interfaces can be configured using the CLI.

To configure an aggregate interface so that port3 goes down with it:

config system interface


edit "agg1"
set vdom "root"
set fail-detect enable
set fail-alert-method link-down
set fail-alert-interfaces "port3"

FortiOS 6.4.6 Administration Guide 413


Fortinet Technologies Inc.
Network

set type aggregate


set member "port1" "port2"
next
end

To configure a redundant interface so that port4 goes down with it:

config system interface


edit "red1"
set vdom "root"
set fail-detect enable
set fail-alert-method link-down
set fail-alert-interfaces "port4"
set type redundant
set member "port1" "port2"
next
end

VLAN inside VXLAN

VLANs can be assigned to VXLAN interfaces. In a data center network where VXLAN is used to create an L2 overlay 
network and for multitenant environments, a customer VLAN tag  can be assigned to VXLAN interface. This allows the 
VLAN tag from VLAN traffic to be encapsulated within the VXLAN packet.

To configure VLAN inside VXLAN on HQ1:

 1. Configure VXLAN:
config system vxlan
edit "vxlan1"
set interface port1
set vni 1000
set remote-ip 173.1.1.1
next
end

 2. Configure system interface:
config system interface
edit vlan100
set vdom root
set vlanid 100
set interface dmz
next
edit vxlan100
set type vlan
set vlanid 100

FortiOS 6.4.6 Administration Guide 414


Fortinet Technologies Inc.
Network

set vdom root


set interface vxlan1
next
end

 3. Configure software-switch:
config system switch-interface
edit sw1
set vdom root
set member vlan100 vxlan100
set intra-switch-policy implicit
next
end

The default intra-switch-policy implicit behavior allows traffic between member 
interfaces within the switch. Therefore, it is not necessary to create firewall policies to allow 
this traffic.

Instead of creating a software-switch, it is possible to use a virtual-wire-pair as well. See 
Virtual Wire Pair with VXLAN on page 416.

To configure VLAN inside VXLAN on HQ2:

 1. Configure VXLAN:   
config system vxlan
edit "vxlan2"
set interface port25
set vni 1000
set remote-ip 173.1.1.2
next
end
 2. Configure system interface:   
config system interface
edit vlan100
set vdom root
set vlanid 100
set interface port20
next
edit vxlan100
set type vlan
set vlanid 100
set vdom root
set interface vxlan2
next
end
 3. Configure software-switch:   
config system switch-interface
edit sw1
set vdom root
set member vlan100 vxlan100
next
end

FortiOS 6.4.6 Administration Guide 415


Fortinet Technologies Inc.
Network

To verify the configuration:

Ping PC1 from PC2.
The following is captured on HQ2:

This captures the VXLAN traffic between 172.1.1.1 and 172.1.1.2 with the VLAN 100 tag inside.

Virtual Wire Pair with VXLAN

Virtual wire pairs can be used with VXLAN interfaces.
In this examples, VXLAN interfaces are added between FortiGate HQ1 and FortiGate HQ2, a virtual wire pair is added in 
HQ1, and firewall policies are created on both HQ1 and HQ2.

To create VXLAN interface on HQ1:

config system interface


edit "port11"
set vdom "root"
set ip 10.2.2.1 255.255.255.0
set allowaccess ping https ssh snmp telnet
next
end
config system vxlan
edit "vxlan1"
set interface "port11"
set vni 1000
set remote-ip "10.2.2.2"

FortiOS 6.4.6 Administration Guide 416


Fortinet Technologies Inc.
Network

next
end

To create VXLAN interface on HQ2:

config system interface


edit "port11"
set vdom "root"
set ip 10.2.2.2 255.255.255.0
set allowaccess ping https ssh snmp http
next
end
config system vxlan
edit "vxlan1"
set interface "port11"
set vni 1000
set remote-ip "10.2.2.1"
next
end
config system interface
edit "vxlan1"
set vdom "root"
set ip 10.1.100.2 255.255.255.0
set allowaccess ping https ssh snmp
next
end

To create a virtual wire pair on HQ1:

config system virtual-wire-pair


edit "vwp1"
set member "port10" "vxlan1"
next
end

To create a firewall policy on HQ1:

config firewall policy


edit 5
set name "vxlan-policy"
set srcintf "port10" "vxlan1"
set dstintf "port10" "vxlan1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set ssl-ssh-profile "certificate-inspection"
set av-profile "default"
set webfilter-profile "default"
set dnsfilter-profile "default"
set ips-sensor "default"
set application-list "default"
set fsso disable

FortiOS 6.4.6 Administration Guide 417


Fortinet Technologies Inc.
Network

next
end

To create a firewall policy on HQ2:

config firewall policy


edit 5
set name "1"
set srcintf "port13"
set dstintf "vxlan1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set fsso disable
set nat enable
next
end

Assign a subnet with the FortiIPAM service

The FortiIPAM (IP Address Management) service automatically assigns subnets to  FortiGate to prevent duplicate 
IP addresses from overlapping within the same Security Fabric.
After the FortiIPAM registration is synced to FortiGuard from FortiCare, FortiGate can use FortiIPAM to automatically 
assign IP addresses based on the configured network size for the FortiGate interface.

Requirements:

Register the FortiIPAM service for FortiGate in FortiCare. 

FortiIPAM is a paid service.

To verify the FortiIPAM service registration in the GUI:

 1. Go to System > FortiGuard to verify the FortiIPAM service is registered. If the service is registered, the FortiIPAM 


area at the bottom of the page displays a check mark as well as the license expiry date.   

FortiOS 6.4.6 Administration Guide 418


Fortinet Technologies Inc.
Network

Example

In this example, you will configure port5 on FortiGate Root  to be managed by FortiIPAM and specify the network size. 


Next you will enable DHCP on the interface to supply IP addresses to this network. 
Once FortiIPAM is designated as the IP source, you will configure the port5 interface on FortiGate Downstream  to obtain 
an IP from DHCP to connect it to FortiGate Root  and add it to the Security Fabric. Lastly, you will use FortiIPAM to 
assign IP addresses to the Internal Network.
 1. On FortiGate Root, edit port5 and configure the interface to be managed by FortiIPAM.   
 a. Go to Network > Interfaces, and double-click port5 to edit it. The Edit Interface window opens.
 b. From the Role dropdown, select LAN.
 c. In the Addressing mode area, select Auto-managed by FortiIPAM. An information icon appears next to 
IP/Netmask and below the Network Size dropdown indicating FortiIPAM will allocate an IP subnet with the 
selected size.
 d. From the Network Size dropdown, select the size of the network segment for this interface.
 e. Enable DHCP Server to allow the interface to supply IP addresses to this network.   
You do not need to configure Address range and Netmask. These will be configured by FortiIPAM.
 f. Click OK. Port5 gets an IP address from FortiIPAM corresponding to the network size. It will also start assigning 
addresses through DHCP. Refresh this page if an IP has not been assigned.

FortiOS 6.4.6 Administration Guide 419


Fortinet Technologies Inc.
Network

 2. View the IP allocation map.   
 a. Go to Network > Interfaces, and double-click port5 to view it.
 b. In the IP/Netmask area, click Show Global IP Allocation Map. You are redirected to FortiCloud.   

 c. Click Login. The FortiIPAM portal opens. The List View displays the assigned IP entries.


 d. Double-click an IP entry and click the Source tab. The IP source appears in the Device column. The Interface 
column displays the port. Assign Type displays Auto. Last Updated displays the assign time.   

 3. On FortiGate Root  go to Network > Interfaces. The  DHCP Server settings are configured automatically.   

FortiOS 6.4.6 Administration Guide 420


Fortinet Technologies Inc.
Network

 4. On FortiGate Downstream, configure port5 to obtain an IP from DHCP.   


 a. Go to System > FortiGuard, and verify FortiIPAM is licensed.
 b. Go to Network > Interfaces, and double click port5 to edit it.
 c. In the Addressing mode area, select DHCP and click OK. The interface will get its IP address from the DHCP 
server configured on FortiGate Root.
 d. In Network > Interfaces, double-click port5. The following fields appear in the Address area:   
 l Status. 
 l Obtained IP/Netmask
 l Expiry Date
 l Acquired DNS

 5. Add FortiGate Downstream  to the Security Fabric.   


 a. Go to Security Fabric > Fabric Connectors. In the Security Fabric Settings area, set Status to Enabled.
 b. In the Upstream FortiGate IP field, enter the IP address for FortiGate Root, and click OK. The Topology pane 
shows the connection is established.   

 6. On FortiGate Downstream, configure port6 to use FortiIPAM.   


 a. Go to Network > Interfaces. Double-click port6 to edit it.
 b. From the Role dropdown, select LAN.
 c. In the Address mode area, select Auto-managed by FortiIPAM.
 d. From the Network size dropdown, select a different network size. In this example, the network size was 
increased to 512.   

FortiOS 6.4.6 Administration Guide 421


Fortinet Technologies Inc.
Network

 e. Wait a while and then double-click port6. The IP/Netmask is auto-populated.
 f. Enable DHCP Server to allow the interface to supply IP addresses to this network.
 7. Go back to the FortiIPAM portal in FortiCloud.   
 a. The List View tab shows the IP addresses for the downstream FortiGates.
 b. Select a subnet, and click the Source tab. The source details show that the IP is different from the root 
FortiGate, preventing conflicts.

To view the FortiIPAM service details in the CLI:

Use the diagnose command to view the FortiIPAM service information in FortiGate.
Root-E (global) # diagnose test update info
...
System contracts:
...
IPMC,Thu Apr 15 17:00:00 2021

FortiOS 6.4.6 Administration Guide 422


Fortinet Technologies Inc.
Network

You can also use the REST API to get the FortiIPAM service information.
https://172.16.116.xxx/api/v2/monitor/license/status
..."fortiipam_cloud":{
"type":"live_cloud_service",
"status":"licensed",
"expires":1618531200,
"entitlement":"IPMC"
}

To configure FortiIPAM in the CLI:

 1. On FortiGate Root , edit port5 and configure the interface to be managed by FortiIPAM. Use managed-


subnetwork-size to specify the network size of the network segment for this interface.   
In this example, the network size 256.
config system interface
edit "port5"
set ip-managed-by-fortiipam enable
set managed-subnetwork-size 256
next
end
 2. On the same interface, enable DHCP server on this interface to supply IP addresses to this network.   

No configuration is required  unless you need to change the defaults. 

config system dhcp server


edit 1
set interface "port5"
set dhcp-settings-from-fortiipam enable
next
end
 3. Once FortiIPAM completes the address configuration, the configurations will appear as follows:  
show system interface
...
edit "port5"
set vdom "root"
set ip 10.128.6.1 255.255.255.0
set allowaccess ping https ssh http fabric
set type physical
set device-identification enable
set lldp-transmission enable
set role lan
set snmp-index 5
set ip-managed-by-fortiipam enable
next
...
end
show system dhcp server
edit 1
set dns-service default
set default-gateway 10.128.6.1
set netmask 255.255.255.0

FortiOS 6.4.6 Administration Guide 423


Fortinet Technologies Inc.
Network

set interface "port5"


config ip-range
edit 1
set start-ip 10.128.6.1
set end-ip 10.128.6.254
next
end
set dhcp-settings-from-fortiipam enable
config exclude-range
edit 1
set start-ip 10.128.6.1
set end-ip 10.128.6.1
next
end
next
end
 4. On FortiGate Downstream, configure port5 to obtain an IP from DHCP.   
config system interface
edit "port5"
set mode dhcp
next
end
 5. After the IP is assigned and the device is connected to FortiGate Root ,  add FortiGate Downstream  to the Security 
Fabric.
 6. Once FortiGate Downstream  is connected to the Security Fabric, you can configure the port6 interface  to use the 
FortiIPAM service as well.
 7. On FortiGate Downstream , set the interface to be managed by the FortiIPAM service, and increase the managed-
subnetwork-size value.   
In this example, the network size was increased to 512.
config system interface
edit "port5"
set ip-managed-by-fortiipam enable
set managed-subnetwork-size 512
next
end
 8. Configure the DHCP server on this port to assign  IP addresses to this subnet.   
config system dhcp server
edit 1
set interface "port6"
set dhcp-settings-from-fortiipam enable
next
end

FortiOS 6.4.6 Administration Guide 424


Fortinet Technologies Inc.
Network

 9. Go to the FortiIPAM Portal to view the IP addresses.   

Configure a VRF ID on an interface

From the Network > Interfaces page, users can configure VRF (virtual routing and forwarding) IDs directly on the 


interface. The VRF IDs can be displayed in the routing monitor and can be used to create blackhole static routes. 
VRF allows multiple routing table instances to co-exist on the same router. One or more interfaces may have a VRF, and 
packets are only forwarded between interfaces with the same VRF.

Enable Advanced Routing in System > Feature Visibility to use this feature.

To configure a VRF ID in the GUI:

 1. Configure the interface:
 a. Go to Network > Interfaces and click Create New > Interface.
 b. Enter a value in the VRF ID field.
 c. Configure the other settings as needed.

FortiOS 6.4.6 Administration Guide 425


Fortinet Technologies Inc.
Network

 d. Click OK.

 e. To add the VRF column in the interface table, click the gear icon, select VRF, and click Apply.

 2. Add a blackhole static route using the VRF ID:
 a. Go to Network > Static Routes and click Create New. 
 b. Enter the subnet.
 c. In the Interface field, select Blackhole.
 d. In the VRF ID field, enter the ID you created in step 1.

FortiOS 6.4.6 Administration Guide 426


Fortinet Technologies Inc.
Network

 e. Click OK. 

To configure a VRF ID in the CLI:

 1. Configure the interface:
config system interface
edit test_interface
...
set vrf 14
next
end

 2. Add a blackhole static route using the VRF ID:
config router static
edit 3
set dst 8.8.8.8 255.255.255.255
set blackhole enable
set vrf 14
next
end

Interface MTU packet size

Changing the maximum transmission unit (MTU) on FortiGate interfaces changes the size of transmitted packets. Most 
FortiGate device's physical interfaces support jumbo frames that are up to 9216 bytes, but some only support 9000 or 
9204 bytes.
To avoid fragmentation, the MTU should be the same as the smallest MTU in all of the networks between the FortiGate 
and the destination. If the packets sent by the FortiGate are larger than the smallest MTU, then they are fragmented, 
slowing down the transmission. Packets with the DF flag set in the IPv4 header are  dropped and not fragmented .
On many network and endpoint devices, the path MTU is used to determine the smallest MTU and to transmit packets 
within that size.
 l ASIC accelerated FortiGate interfaces, such as NP6, NP7, and SOC4 (np6xlite), support MTU sizes up to 9216 
bytes.
 l FortiGate VMs can have varying maximum MTU sizes, depending on the underlying interface and driver.
 l Virtual interfaces, such as VLAN interfaces, inherit their MTU size from their parent interface.

To verify the supported MTU size:

config system interface


edit <interface>
set mtu-override enable

FortiOS 6.4.6 Administration Guide 427


Fortinet Technologies Inc.
Network

set mtu ?
<integer> Maximum transmission unit (<min>-<max>)
next
end

To change the MTU size:

config system interface


edit <interface>
set mtu-override enable
set mtu <max bytes>
next
end

Maximum MTU size on a path

To manually test the maximum MTU size on a path, you can use the ping command on a Windows computer.
For example, you can send ICMP packets of a specific size with a DF flag, and iterate through increasing sizes until the 
ping fails.
 l The -f option specifies the Do not Fragment (DF) flag.
 l The -l option specifies the length, in bytes, of the Data field in the echo Request messages. This does not include 
the 8 bytes for the ICMP header and 20 bytes for the IP header. Therefore, if the maximum MTU is 1500 bytes, then 
the maximum supported data size is: 1500 - 8 - 20 = 1472 bytes.

To determine the maximum MTU size on a path:

 1. In Windows command prompt, try a likely MTU size:
>ping 4.2.2.1 -l 1472 -f
Pinging 4.2.2.1 with 1472 bytes of data:
Reply from 4.2.2.1: bytes=1472 time=41ms TTL=52
Reply from 4.2.2.1: bytes=1472 time=42ms TTL=52
Reply from 4.2.2.1: bytes=1472 time=103ms TTL=52
Reply from 4.2.2.1: bytes=1472 time=38ms TTL=52

Ping statistics for 4.2.2.1:


Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 38ms, Maximum = 103ms, Average = 56ms

 2. Increase the size and try the ping again:
>ping 4.2.2.1 -l 1473 -f

Pinging 4.2.2.1 with 1473 bytes of data:


Request timed out.

Ping statistics for 4.2.2.1:


Packets: Sent = 1, Received = 0, Lost = 1 (100% loss),

The second test fails, so the maximum MTU size on the path is 1472 bytes + 8-byte ICMP header + 20-byte IP 
header = 1500 bytes

FortiOS 6.4.6 Administration Guide 428


Fortinet Technologies Inc.
Network

Maximum segment size

The TCP maximum segment size (MSS) is the maximum amount of data that can be sent in a TCP segment. The MSS is 
the MTU size of the interface minus the 20 byte IP header and 20 byte TCP header. By reducing the TCP MSS, you can 
effectively reduce the MTU size of the packet.
The TCP MSS can be configured in a firewall policy, or directly on an interface.

To configure the MSS in a policy:

config firewall policy


edit <policy ID>
set srcintf "internal"
set dstintf "wan1"
set srcaddr "10.10.10.6"
set dstaddr "all"
set schedule "always"
set service "ALL"
set tcp-mss-sender 1448
set tcp-mss-receiver 1448
next
end

To configure the MSS on an interface:

config system interface


edit "wan2"
set vdom "root"
set mode dhcp
set allowaccess ping fgfm
set type physical
set tcp-mss 1448
set role wan
next
end

One-arm sniffer

You can use a one-arm sniffer to configure a physical interface as a one-arm intrusion detection system (IDS). Traffic 
sent to the interface is examined for matches to the configured security profile. The matches are logged, and then all 
received traffic is dropped. Sniffing only reports on attacks; it does not deny or influence traffic.
You can also use the one-arm sniffer to configure the FortiGate to operate as an IDS appliance to sniff network traffic for 
attacks without actually processing the packets. To configure a one-arm IDS, enable sniffer mode on a physical interface 
and connect the interface to the SPAN port of a switch or a dedicated network tab that can replicate the traffic to the 
FortiGate.
To assign an interface as a sniffer interface in the GUI, go to Network > Interfaces and edit the interface. For Addressing
mode, select One-Arm Sniffer.
If the option is not available, the interface is in use. Ensure that the interface is not selected in any firewall policies, 
routes, virtual IPs, or other features where a physical interface is specified. The option does not appear it the role is set to 
WAN. Ensure the role is set to LAN, DMZ, or undefined.

FortiOS 6.4.6 Administration Guide 429


Fortinet Technologies Inc.
Network

The following table lists some of the one-arm sniffer settings you can configure:

Field Description

Filters Enable this setting to include filters that define a more granular sniff of network 
traffic. Select specific hosts, ports, VLANs, and protocols.
In all cases, enter a number or range for the filter type. The standard protocols 
are:
 l UDP: 17
 l TCP: 6
 l ICMP: 1

Include IPv6 Packets If the network is running IPv4 and IPv6 addresses, enable this setting to sniff both 


types; otherwise, the FortiGate will only sniff IPv4 traffic.

Include Non-IPv6 Packets Enable this setting for a more intense content scan of the traffic.

Security Profiles The following profiles are configurable in the GUI and CLI:


 l Antivirus
 l Web filter
 l Application control
 l IPS
The following profiles are only configurable in the CLI:
 l Email filter
 l DLP
 l IPS DoS

CPU usage and packet loss

Traffic scanned on the one-arm sniffer interface is processed by the CPU, even if there is an SPU, such as NPU or CP, 
present. The one-arm sniffer may cause higher CPU usage and perform at a lower level than traditional inline scanning, 
which uses NTurbo or CP to accelerate traffic when present.
The absence of high CPU usage does not indicate the absence of packet loss. Packet loss may occur due to the 
capacity of the TAP devices hitting maximum traffic volume during mirroring, or on the FortiGate when the kernel buffer 
size is exceeded and it is unable to handle bursts of traffic.

DNS

Domain name system (DNS)  is used by devices to locate websites by mapping a domain name to a website’s IP 
address. 
A FortiGate can serve different roles based on user requirements:
 l A FortiGate can control what DNS server a network uses.
 l A FortiGate can function as a DNS server.
FortiGuard Dynamic DNS (DDNS) allows a remote administrator to access a FortiGate's Internet-facing interface using a 
domain name that remains constant even when its IP address changes.

FortiOS 6.4.6 Administration Guide 430


Fortinet Technologies Inc.
Network

FortiOS supports DNS configuration for both IPv4 and IPv6 addressing. When a user requests a website, the FortiGate 
looks to the configured DNS servers to provide the IP address of the website in order to know which server to contact to 
complete the transaction.
The FortiGate queries the DNS servers whenever it needs to resolve a domain name into an IP address, such as for NTP 
or web servers defined by their domain names.
The following topics provide information about DNS:
 l Important DNS CLI commands on page 431
 l DNS domain list on page 432
 l FortiGate DNS server on page 434
 l DDNS on page 436
 l DNS latency information on page 439
 l DNS over TLS on page 441
 l DNS troubleshooting on page 442
 

Important DNS CLI commands

DNS settings can be configured with the following CLI command:
config system dns
set primary <ip_address>
set secondary <ip_address>
set dns-over-tls {enable | disable | enforce}
set ssl-certificate <string>
set domain <domains>
set ip6-primary <ip6_address>
set ip6-secondary <ip6_address>
set timeout <integer>
set retry <integer>
set dns-cache-limit <integer>
set dns-cache-ttl <integer>
set cache-notfound-responses {enable | disable}
set source-ip <class_ip>
end

For a FortiGate with multiple logical CPUs, you can set the DNS process number from 1 to the number of logical CPUs. 
The default DNS process number is 1.
config system global
set dnsproxy-worker-count <integer>
end

dns-over-tls

DNS over TLS (DoT) is a security protocol for encrypting and wrapping DNS queries and answers via the Transport 
Layer Security (TLS) protocol. It can be enabled, disabled, or enforced: 
 l disable: Disable DNS over TLS (default).
 l enable: Use TLS for DNS queries if TLS is available.
 l enforce: Use only TLS for DNS queries. Does not fall back to unencrypted DNS queries if TLS is unavailable.

FortiOS 6.4.6 Administration Guide 431


Fortinet Technologies Inc.
Network

For more information, see DNS over TLS on page 441.

cache-notfound-responses

When enabled, any DNS requests that are returned with NOT FOUND can be stored in the cache. The DNS server is not 
asked to resolve the host name for NOT FOUND entries. By default, this option is disabled.

dns-cache-limit

Set the number of DNS entries that are stored in the cache (0 to 4294967295, default = 5000). Entries that remain in the 
cache provide a quicker response to requests than going out to the Internet to get the same information.

dns-cache-ttl

The duration that the DNS cache retains information, in seconds (60 to 86400 (1 day), default = 1800). 

DNS domain list

You can configure up to eight domains in the DNS settings using the GUI or the CLI. 
When a client requests a URL that does not include an FQDN, FortiOS resolves the URL by traversing through the DNS 
domain list and performing a query for each domain until the first match is found.
By default, FortiGate uses FortiGuard's DNS servers:
 l Primary: 208.91.112.53
 l Secondary: 208.91.112.52
You can also customize the DNS timeout time and the number of retry attempts.

To configure a DNS domain list in the GUI:

 1. Go to Network > DNS.


 2. Set DNS Servers to Specify.
 3. Configure the primary and secondary DNS servers as needed.
 4. In the Local Domain Name field, enter the first domain (sample.com in this example).
 5. Click the + to add more domains (example.com and domainname.com in this example). You can enter up to eight 
domains.

FortiOS 6.4.6 Administration Guide 432


Fortinet Technologies Inc.
Network

 6. Configure additional DNS settings as needed. 
 7. Click Apply.   

To configure a DNS domain list in the CLI:

config system dns


set primary 172.16.200.1
set domain "sample.com" "example.com" "domainname.com"
end

Verify the DNS configuration

In the following example, the local DNS server has the entry for host1 mapped to the FQDN of host1.sample.com, and 
the entry for host2 is mapped to the FQDN of host2.example.com.

To verify that the DNS domain list is configured:

 1. Open Command Prompt.
 2. Enter ping host1.
The system returns the following response:
PING host1.sample.com (1.1.1.1): 56 data bytes
As the request does not include an FQDN, FortiOS traverses the configured DNS domain list to find a match. 
Because host1 is mapped to the host1.sample.com, FortiOS resolves host1 to sample.com, the first entry in the 
domain list.
 3. Enter ping host2.
The system returns the following response:
PING host2.example.com (2.2.2.2): 56 data bytes
FortiOS traverses the domain list to find a match. It first queries sample.com, the first entry in the domain list, but 
does not find a match. It then queries the second entry in the domain list, example.com. Because host2 is mapped 
to the FQDN of host2.example.com, FortiOS resolves host2 to example.com.

DNS timeout and retry settings

The DNS timeout and retry settings can be customized using the CLI.

FortiOS 6.4.6 Administration Guide 433


Fortinet Technologies Inc.
Network

config system dns


set timeout <integer>
set retry <integer>
end

Variable Description

timeout <integer> The DNS query timeout interval, in seconds (1 - 10, default = 5).

retry <integer>  The number of times to retry the DNS query (0 - 5, default - 2).

FortiGate DNS server

You can create local DNS servers for your network. Depending on your requirements, you can either manually maintain 
your entries (primary DNS server), or use it to refer to an outside source (secondary DNS server). 
A local, primary DNS server requires that you to manually add all URL and IP address combinations. Using a primary 
DNS server for local services can minimize inbound and outbound traffic, and access time. Making it authoritative is not 
recommended, because IP addresses can change, and maintaining the list can become labor intensive. 
A secondary DNS server refers to an alternate source to obtain URL and IP address combinations. This is useful when 
there is a primary DNS server where the entry list is maintained.
FortiGate as a DNS server also supports TLS connections to a DNS client. See DNS over TLS on page 441 for details.
By default, DNS server options are not available in the FortiGate GUI.

To enable DNS server options in the GUI:

 1. Go to System > Feature Visibility.


 2. Enable DNS Database in the Additional Features section.
 3. Click Apply.

Example configuration

This section describes how to create an unauthoritative primary DNS server. The interface mode is recursive so that, if 
the request cannot be fulfilled, the external DNS servers will be queried.

To configure FortiGate as a primary DNS server in the GUI:

 1. Go to Network > DNS Servers.


 2. In the DNS Database table, click Create New.
 3. Set Type to Primary.
 4. Set View to Shadow. 
The View setting controls the accessibility of the DNS server. If you select Public, external users can access or use 
the DNS server. If you select Shadow, only internal users can use it.
 5. Enter a DNS Zone, for example, WebServer.
 6. Enter the Domain Name of the zone, for example, fortinet.com.
 7. Enter the Hostname of the DNS server, for example, Corporate.
 8. Enter the Contact Email Address for the administrator, for example, [email protected].

FortiOS 6.4.6 Administration Guide 434


Fortinet Technologies Inc.
Network

 9. Disable Authoritative.

 10. Add DNS entries:
 a. In the DNS Entries table, click Create New.
 b. Select a Type, for example Address (A).
 c. Set the Hostname, for example web.example.com.

 d. Configure the remaining settings as needed. The options vary depending on the selected Type.
 e. Click OK.
 11. Add more DNS entries as needed.
 12. Click OK.
 13. Enable DNS services on an interface:
 a. Go to Network > DNS Servers.
 b. In the DNS Service on Interface table, click Create New.
 c. Select the Interface for the DNS server, such as wan2.
 d. Set the Mode to Recursive.

 e. Click OK.

To configure FortiGate as a primary DNS server in the CLI:

config system dns-database


edit WebServer
set domain example.com
set type master

FortiOS 6.4.6 Administration Guide 435


Fortinet Technologies Inc.
Network

set view shadow


set ttl 86400
set primary-name corporate
set contact [email protected]
set authoritative disable
config dns-entry
edit 1
set hostname web.example.com
set type A
set ip 192.168.21.12
set status enable
next
end
next
end
config system dns-server
edit wan1
set mode recursive
next
end

DDNS

If your external IP address changes regularly and you have a static domain name, you can configure the external 
interface to use a dynamic DNS (DDNS) service. This ensures that external users and customers can always connect to 
your company firewall. If you have a FortiGuard subscription, you can use FortiGuard as the DDNS server.

 l FortiGate does not support DDNS for pure TP mode.
 l FortiGate models 1000D and higher do not support DDNS in the GUI.

You can configure FortiGuard as the DDNS server using the GUI or CLI.

Sample topology

FortiOS 6.4.6 Administration Guide 436


Fortinet Technologies Inc.
Network

In this example, FortiGuard DDNS is enabled and the DDNS server is set to float-zone.com. Other DDNS server options 
include fortiddns.com and fortidyndns.com.

To configure FortiGuard as the DDNS server in the GUI:

 1. Go to Network > DNS


 2. Enable FortiGuard DDNS.
 3. Select the Interface with the dynamic connection.
 4. Select the Server that you have an account with.
 5. Enter your Unique Location.

 6. Click Apply.

To configure FortiGuard as the DDNS server in the CLI:

config system ddns


edit 1
set ddns-server FortiGuardDDNS
set ddns-domain "branch.float-zone.com"
set monitor-interface "wan1"
next
end

DDNS servers other than FortiGuard

If you do not have a FortiGuard subscription, or want to use a different DDNS server, you can configure a DDNS server 
for each interface. Only the first configure port appears in the GUI. The available commands vary depending on the 
selected DDNS server.

To configure DDNS servers other than FortiGuard in the CLI:

config system ddns


edit <DDNS_ID>
set monitor-interface <external_interface>
set ddns-server <ddns_server_selection>
...
next
end

FortiOS 6.4.6 Administration Guide 437


Fortinet Technologies Inc.
Network

Refresh DDNS IP addresses

You can configure FortiGate to refresh DDNS IP addresses. FortiGate periodically checks the DDNS server that is 
configured.

To configure FortiGate to refresh DDNS IP addresses using the CLI:

config system ddns


edit 1
set ddns-server FortiGuardDDNS
set use-public-ip enable
set update-interval seconds
next
end

Disable cleartext

When clear-text is disabled, FortiGate uses the SSL connection to send and receive (DDNS) updates.  

To disable cleartext and set the SSL certificate using the CLI:

config system ddns


edit <1>
set clear-text disable
set ssl-certificate <cert_name>
next
end

DDNS update override

A DHCP server has an override command option that allows DHCP server communications to go through DDNS to 
perform updates for the DHCP client. This enforces a DDNS update of the A field every time even if the DHCP client 
does not request it. This allows support for the allow, ignore, and deny client-updates options.

To enable DDNS update override using the CLI:

config system dhcp server


edit 1
set ddns-update enable
set ddns-update_override enable
set ddns-server-ip <ddns_server_ip>
set ddns-zone <ddns_zone>
next
end

FortiOS 6.4.6 Administration Guide 438


Fortinet Technologies Inc.
Network

Troubleshooting

To debug DDNS:

# diagnose debug application ddnscd -1


# diagnose debug enable

To check if a DDNS server is available:

# diagnose test application ddnscd 3

Not available:
FortiDDNS status:
ddns_ip=0.0.0.0 ddns_port=443 svr_num=0 domain_num=0

Available:
FortiDDNS status:
ddns_ip=208.91.113.230 ddns_port=443 svr_num=1 domain_num=3
svr[0]= 208.91.113.230
domain[0]= fortiddns.com
domain[1]= fortidyndns.com
domain[2]= float-zone.com

DNS latency information

High latency in DNS traffic can result in an overall sluggish experience for end-users.  In the DNS Settings pane, you can 
quickly identify DNS latency issues in your configuration.
Go to Network > DNS to view DNS latency information in the right side bar. If you use FortiGuard DNS, latency 
information  for DNS, DNS filter, web filter, and outbreak prevention servers is also visible. Hover your pointer over a 
latency value to see when it was last updated.

To view DNS latency information using the CLI:

# diagnose test application dnsproxy 2


worker idx: 0
worker: count=1 idx=0
retry_interval=500 query_timeout=1495
DNS latency info:
vfid=0 server=2001::1 latency=1494 updated=73311
vfid=0 server=208.91.112.52 latency=1405 updated=2547

FortiOS 6.4.6 Administration Guide 439


Fortinet Technologies Inc.
Network

vfid=0 server=208.91.112.53 latency=19 updated=91


SDNS latency info:
vfid=0 server=173.243.138.221 latency=1 updated=707681
DNS_CACHE: alloc=35, hit=26
RATING_CACHE: alloc=1, hit=49
DNS UDP: req=66769 res=63438 fwd=83526 alloc=0 cmp=0 retrans=16855 to=3233
cur=111 switched=8823467 num_switched=294 v6_cur=80 v6_switched=7689041 num_v6_
switched=6
ftg_res=8 ftg_fwd=8 ftg_retrans=0
DNS TCP: req=0, res=0, fwd=0, retrans=0 alloc=0, to=0
FQDN: alloc=45 nl_write_cnt=9498 nl_send_cnt=21606 nl_cur_cnt=0
Botnet: searched=57 hit=0 filtered=57 false_positive=0

To view the latency from web filter and outbreak protection servers using the CLI:

# diagnose debug rating


Locale : english

Service : Web-filter
Status : Enable
License : Contract

Service : Antispam
Status : Disable

Service : Virus Outbreak Prevention


Status : Disable

-=- Server List (Tue Jan 22 08:03:14 2019) -=-

IP Weight RTT Flags TZ Packets Curr Lost Total Lost Updated Time
173.243.138.194 10 0 DI -8 700 0 2 Tue Jan 22 08:02:44
2019
173.243.138.195 10 0 -8 698 0 4 Tue Jan 22 08:02:44
2019
173.243.138.198 10 0 -8 698 0 4 Tue Jan 22 08:02:44
2019
173.243.138.196 10 0 -8 697 0 3 Tue Jan 22 08:02:44
2019
173.243.138.197 10 1 -8 694 0 0 Tue Jan 22 08:02:44
2019
96.45.33.64 10 22 D -8 701 0 6 Tue Jan 22 08:02:44
2019
64.26.151.36 40 62 -5 704 0 10 Tue Jan 22 08:02:44
2019
64.26.151.35 40 62 -5 703 0 9 Tue Jan 22 08:02:44
2019
209.222.147.43 40 70 D -5 696 0 1 Tue Jan 22 08:02:44
2019
66.117.56.42 40 70 -5 697 0 3 Tue Jan 22 08:02:44
2019
66.117.56.37 40 71 -5 702 0 9 Tue Jan 22 08:02:44
2019
65.210.95.239 40 74 -5 695 0 1 Tue Jan 22 08:02:44
2019
65.210.95.240 40 74 -5 695 0 1 Tue Jan 22 08:02:44

FortiOS 6.4.6 Administration Guide 440


Fortinet Technologies Inc.
Network

2019
45.75.200.88 90 142 0 706 0 12 Tue Jan 22 08:02:44
2019
45.75.200.87 90 155 0 714 0 20 Tue Jan 22 08:02:44
2019
45.75.200.85 90 156 0 711 0 17 Tue Jan 22 08:02:44
2019
45.75.200.86 90 159 0 704 0 10 Tue Jan 22 08:02:44
2019
62.209.40.72 100 157 1 701 0 7 Tue Jan 22 08:02:44
2019
62.209.40.74 100 173 1 705 0 11 Tue Jan 22 08:02:44
2019
62.209.40.73 100 173 1 699 0 5 Tue Jan 22 08:02:44
2019
121.111.236.179 180 138 9 706 0 12 Tue Jan 22 08:02:44
2019
121.111.236.180 180 138 9 704 0 10 Tue Jan 22 08:02:44
2019

DNS over TLS

DNS over TLS (DoT) is a security protocol for encrypting and wrapping DNS queries and answers via the TLS protocol. 
The goal of DNS over TLS is to increase user privacy and security by preventing eavesdropping and manipulation of 
DNS data via man-in-the-middle attacks. There is an option in the FortiOS DNS profile settings to enforce DoT for this 
added security.

To configure DoT in the GUI:

 1. Go to Network > DNS. The DNS Settings pane opens.


 2. For DNS over TLS, click Enforce.

 3. Click Apply.   

To configure DoT in the CLI:

config system dns


set primary 8.8.8.8
set dns-over-tls enforce
set ssl-certificate "Fortinet_Factory"
end

FortiOS 6.4.6 Administration Guide 441


Fortinet Technologies Inc.
Network

FortiGuard DNS rating service

DNS over TLS connections to the FortiGuard secure DNS server is supported. The CLI options are only available when 
fortiguard-anycast is enabled. DNS filtering connects to the FortiGuard secure DNS server over anycast by 
default.

To configure DoT to the secure DNS server in the CLI:

config system fortiguard


set fortiguard-anycast enable
set fortiguard-anycast-source fortinet
set anycast-sdns-server-ip 0.0.0.0
set anycast-sdns-server-port 853
end

DNS troubleshooting

The following diagnose command can be used to collect DNS debug information. If you do not specify worker ID, the 
default worker ID is 0.
# diagnose test application dnsproxy
worker idx: 0
1. Clear DNS cache
2. Show stats
3. Dump DNS setting
4. Reload FQDN
5. Requery FQDN
6. Dump FQDN
7. Dump DNS cache
8. Dump DNS DB
9. Reload DNS DB
10. Dump secure DNS policy/profile
11. Dump Botnet domain
12. Reload Secure DNS setting
13. Show Hostname cache
14. Clear Hostname cache
15. Show SDNS rating cache
16. Clear SDNS rating cache
17. DNS debug bit mask
99. Restart dnsproxy worker

To view useful information about the ongoing DNS connection:

# diagnose test application dnsproxy 3

Important fields include:

tls 1 if the connection is TLS, 0 if the connection is not TLS.
rt The round trip time of the DNS latency.
probe The number of probes sent.

FortiOS 6.4.6 Administration Guide 442


Fortinet Technologies Inc.
Network

To dump the second DNS worker's cache:

diagnose test application dnsproxy 7 1

To enable debug on the second worker:

diagnose debug application dnsproxy -1 1

To enable debug on all workers by specifying -1 as worker ID:

diagnose debug application dnsproxy -1 -1

Explicit and transparent proxies

This section contains instructions for configuring explicit and transparent proxies.
 l Explicit web proxy on page 443
 l Transparent proxy on page 448
 l FTP proxy on page 446
 l Proxy policy addresses on page 451
 l Proxy policy security profiles on page 459
 l Explicit proxy authentication on page 465
 l Transparent web proxy forwarding on page 471
 l Upstream proxy authentication in transparent proxy mode on page 472
 l Multiple dynamic header count on page 474
 l Restricted SaaS access (Office 365, G Suite, Dropbox) on page 476
 l Explicit proxy and FortiSandbox Cloud on page 479
 l Proxy chaining (web proxy forwarding servers) on page 481
 l Agentless NTLM authentication for web proxy on page 486
 l Multiple LDAP servers in Kerberos keytabs and agentless NTLM domain controllers on page 489
 l Learn client IP addresses on page 490

Explicit web proxy

Explicit web proxy can be configured on FortiGate for proxying HTTP and HTTPS traffic. 
To deploy explicit proxy, individual client browsers can be manually configured to send requests directly to the proxy, or 
they can be configured to download proxy configuration instructions from a Proxy Auto-Configuration (PAC) file.
When explicit proxy is configured on an interface, the interface IP address can be used by client browsers to forward 
requests directly to the FortiGate. FortiGate also supports PAC file configuration.

To configure explicit web proxy in the GUI:

 1. Enable and configure explicit web proxy:
 a. Go to Network > Explicit Proxy.
 b. Enable Explicit Web Proxy.

FortiOS 6.4.6 Administration Guide 443


Fortinet Technologies Inc.
Network

 c. Select port2 as the Listen on Interfaces and set the HTTP Port to 8080.


 d. Configure the remaining settings as needed.

 e. Click Apply.
 2. Create an explicit web proxy policy:
 a. Go to Policy & Objects > Proxy Policy.
 b. Click Create New.
 c. Set Proxy Type to Explicit Web and Outgoing Interface to port1.

FortiOS 6.4.6 Administration Guide 444


Fortinet Technologies Inc.
Network

 d. Also set Source and Destination to all, Schedule to always, Service to webproxy, and Action to ACCEPT.

 e. Click OK to create the policy.

This example creates a basic policy. If required, security profiles can be enabled, and deep 
SSL inspection can be selected to inspect HTTPS traffic.

 3. Configure a client to use the FortiGate explicit proxy:
Set the FortiGate IP address as the proxy IP address in the browser, or use an automatic configuration script for the 
PAC file.

To configure explicit web proxy in the CLI:

 1. Enable and configure explicit web proxy:
config web-proxy explicit
set status enable
set ftp-over-http enable
set socks enable
set http-incoming-port 8080
set ipv6-status enable
set unknown-http-version best-effort
end
config system interface

FortiOS 6.4.6 Administration Guide 445


Fortinet Technologies Inc.
Network

edit "port2"
set vdom "vdom1"
set ip 10.1.100.1 255.255.255.0
set allowaccess ping https ssh snmp http telnet
set type physical
set explicit-web-proxy enable
set snmp-index 12
end
next
end

 2. Create an explicit web proxy policy:
config firewall proxy-policy
edit 1
set proxy explicit-web
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set service "webproxy"
set action accept
set schedule "always"
set logtraffic all
next
end

This example creates a basic policy. If required, security profiles can be enabled, and deep 
SSL inspection can be selected to inspect HTTPS traffic.

 3. Configure a client to use the FortiGate explicit web proxy:
Set the FortiGate IP address as the proxy IP address in the browser, or use an automatic configuration script for the 
PAC file.

FTP proxy

FTP proxies can be configured on the FortiGate so that FTP traffic can be proxied. When the FortiGate is configured as 
an FTP proxy, FTP client applications should be configured to send FTP requests to the FortiGate.

To configure explicit FTP proxy in the GUI:

 1. Enable and configure explicit FTP proxy:
 a. Go to Network > Explicit Proxy.
 b. Enable Explicit FTP Proxy.
 c. Select port2 as the Listen on Interfaces and set the HTTP Port to 21.

FortiOS 6.4.6 Administration Guide 446


Fortinet Technologies Inc.
Network

 d. Configure the Default Firewall Policy Action as needed.

 e. Click Apply.
 2. Create an explicit FTP proxy policy:
 a. Go to Policy & Objects > Proxy Policy.
 b. Click Create New.
 c. Set Proxy Type to FTP and Outgoing Interface to port1.
 d. Also set Source and Destination to all, Schedule to always, and Action to ACCEPT.

 e. Click OK to create the policy.

This example creates a basic policy. If required, security profiles can be enabled.

 3. Configure the FTP client application to use the FortiGate IP address.

FortiOS 6.4.6 Administration Guide 447


Fortinet Technologies Inc.
Network

To configure explicit FTP proxy in the CLI:

 1. Enable and configure explicit FTP proxy:
config ftp-proxy explicit
set status enable
set incoming-port 21
end
config system interface
edit "port2"
set vdom "vdom1"
set ip 10.1.100.1 255.255.255.0
set allowaccess ping https ssh snmp http telnet
set type physical
set explicit-ftp-proxy enable
set snmp-index 12
end
next
end

 2. Create an explicit FTP proxy policy:
config firewall proxy-policy
edit 4
set proxy ftp
set dstintf "port2"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
next
end

This example creates a basic policy. If required, security profiles can be enabled.

 3. Configure the FTP client application to use the FortiGate IP address.

Transparent proxy

In a transparent proxy deployment, the user's client software, such as a browser, is unaware that it is communicating 
with a proxy.
Users request Internet content as usual, without any special client configuration, and the proxy serves their requests.  
FortiGate also allows user to configure in transparent proxy mode. 

To configure transparent proxy in the GUI:

 1. Configure a regular firewall policy with HTTP redirect:
 a. Go to Policy & Objects > Firewall Policy.
 b. Click Create New.
 c. Name the policy appropriately, set the  Incoming Interface to port2, and set the  Outgoing Interface to port1.
 d. Also set Source and Destination to all, Schedule to always, Service to ALL, and Action to ACCEPT.

FortiOS 6.4.6 Administration Guide 448


Fortinet Technologies Inc.
Network

 e. Set Inspection Mode to Proxy-based and SSL Inspection to deep-inspection.

 f. Configure the remaining settings as needed.
 g. Click OK.

By default, HTTP redirect can only be enabled in the CLI. Enable Policy Advanced
Options in Feature Visibility  to configure it in the GUI. See Feature visibility on page 
940 on page 1 for more information.
To redirect HTTPS traffic, SSL inspection is required.

 2. Configure a transparent proxy policy:
 a. Go to Policy & Objects > Proxy Policy.
 b. Click Create New.
 c. Set Proxy Type to Transparent Web, set the  Incoming Interface to port2, and set the  Outgoing Interface to 
port1.
 d. Also set Source and Destination to all, Scheduleto always, Service to webproxy, and Action to ACCEPT.

FortiOS 6.4.6 Administration Guide 449


Fortinet Technologies Inc.
Network

 e. Configure the remaining settings as needed.
 f. Click OK to create the policy.

This example creates a basic policy. If required, security profiles can be enabled, and deep 
SSL inspection can be selected to inspect HTTPS traffic.

 3. No special configure is required on the client to use FortiGate transparent proxy. As the client is using the FortiGate 
as its default gateway, requests will first hit the regular firewall policy, and then be redirected to the transparent 
proxy policy.

To configure transparent proxy in the CLI:

 1. Configure a regular firewall policy with HTTP redirect:
config firewall policy
edit 1
set name "1"
set srcintf "port2"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set inspection-mode proxy
set http-policy-redirect enable
set fsso disable
set ssl-ssh-profile "deep-inspection"
set nat enable
next
end

 2. Configure a transparent proxy policy:
config firewall proxy-policy
edit 5
set proxy transparent-web
set srcintf "port2"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set service "webproxy"
set action accept
set schedule "always"
next
end

This example creates a basic policy. If required, security profiles can be enabled, and deep 
SSL inspection can be selected to inspect HTTPS traffic.

 3. No special configure is required on the client to use FortiGate transparent proxy. As the client is using the FortiGate 
as its default gateway, requests will first hit the regular firewall policy, and then be redirected to the transparent 
proxy policy.

FortiOS 6.4.6 Administration Guide 450


Fortinet Technologies Inc.
Network

Proxy policy addresses

Proxy addresses are designed to be used only by proxy policies. The following address types are available:
 l Host regex match on page 451
 l URL pattern on page 452
 l URL category on page 453
 l HTTP method on page 454
 l HTTP header on page 455
 l User agent on page 456
 l Advanced (source) on page 457
 l Advanced (destination) on page 458

Fast policy match

The fast policy match function improves the performance of IPv4 explicit and transparent web proxies on FortiGate 
devices.
When enabled, after the proxy policies are configured, the FortiGate builds a fast searching table based on the different 
proxy policy matching criteria. When fast policy matching is disabled, web proxy traffic is compared to the policies one at 
a time from the beginning of the policy list.
Fast policy matching is enabled by default, and can be configured with the following CLI command:
config web-proxy global
set fast-policy-match {enable | disable}
end

Host regex match

In this address type, a user can create a hostname as a regular expression. Once created, the hostname address can be 
selected as a destination of a proxy policy. This means that a policy will only allow or block requests that match the 
regular expression.
This example creates a host regex match address with the pattern qa.[a-z]*.com.

To create a host regex match address in the GUI:

 1. Go to Policy & Objects > Addresses.


 2. Click Create New > Address.
 3. Set the following:
 l Category to Proxy Address,
 l Name to Host Regex,
 l Type to Host Regex Match, and 
 l Host Regex Pattern to qa.[a-z]*.com.

FortiOS 6.4.6 Administration Guide 451


Fortinet Technologies Inc.
Network

 4. Click OK.

To create a host regex match address in the CLI:

config firewall proxy-address


edit "Host Regex"
set type host-regex
set host-regex "qa.[a-z]*.com"
next
end

URL pattern

In this address type, a user can create a URL path as a regular expression. Once created, the path address can be 
selected as a destination of a proxy policy. This means that a policy will only allow or block requests that match the 
regular expression.
This example creates a URL pattern address with the pattern /filetypes/.

To create a URL pattern address in the GUI:

 1. Go to Policy & Objects > Addresses.


 2. Click Create New > Address.
 3. Set the following: 
 l Category to Proxy Address,
 l Name to URL Regex, 
 l Type to URL Pattern, 
 l Host to all, and 
 l URL Path Regex to /filetypes/.

FortiOS 6.4.6 Administration Guide 452


Fortinet Technologies Inc.
Network

 4. Click OK.

To create a URL pattern address in the CLI:

config firewall proxy-address


edit "URL Regex"
set type url
set host "all"
set path "/filetypes/"
next
end

URL category

In this address type, a user can create a URL category based on a FortiGuard URL ID. Once created, the address can be 
selected as a destination of a proxy policy. This means that a policy will only allow or block requests that match the URL 
category.
The example creates a URL category address for URLs in the Education category. For more information about 
categories, see https://fortiguard.com/webfilter/categories.
For information about creating and using custom local and remote categories, see Web rating override on page 1284 
and Threat feeds on page 355.

To create a URL category address in the GUI:

 1. Go to Policy & Objects > Addresses.


 2. Click Create New > Address.
 3. Set the following: 
 l Category to Proxy Address,
 l Name to url-category, 
 l Type to URL Category, 
 l Host to all, and 
 l URL Category to Education.

FortiOS 6.4.6 Administration Guide 453


Fortinet Technologies Inc.
Network

 4. Click OK.

To create a URL category address in the CLI:

config firewall proxy-address


edit "url-category"
set type category
set host "all"
set category 30
next
end

To see a list of all the categories and their numbers, when editing the address, enter set category ?.

HTTP method

In this address type, a user can create an address based on the HTTP request methods that are used. Multiple method 
options are supported, including: CONNECT, DELETE, GET, HEAD, OPTIONS, POST, PUT, and TRACE. Once 
created, the address can be selected as a source of a proxy policy. This means that a policy will only allow or block 
requests that match the selected HTTP method.
The example creates a HTTP method address that uses the GET method.

To create a HTTP method address in the GUI:

 1. Go to Policy & Objects > Addresses.


 2. Click Create New > Address.
 3. Set the following: 
 l Category to Proxy Address,
 l Name to method_get, 
 l Type to HTTP Method, 
 l Host to all, and 
 l Request Method to GET.

FortiOS 6.4.6 Administration Guide 454


Fortinet Technologies Inc.
Network

 4. Click OK.

To create a HTTP method address in the CLI:

config firewall proxy-address


edit "method_get"
set type method
set host "all"
set method get
next
end

HTTP header

In this address type, a user can create a HTTP header as a regular expression. Once created, the header address can 
be selected as a source of a proxy policy. This means that a policy will only allow or block requests where the HTTP 
header matches the regular expression.
This example creates a HTTP header address with the pattern Q[A-B].

To create a HTTP header address in the GUI:

 1. Go to Policy & Objects > Addresses.


 2. Click Create New > Address.
 3. Set the following: 
 l Category to Proxy Address,
 l Name to HTTP-header, 
 l Type to HTTP Header, 
 l Host to all,
 l Header Name to Header_Test, and 
 l Header Regex to Q[A-B].

FortiOS 6.4.6 Administration Guide 455


Fortinet Technologies Inc.
Network

 4. Click OK.

To create a HTTP header address in the CLI:

config firewall proxy-address


edit "method_get"
set type header
set host "all"
set header-name "Header_Test"
set header "Q[A-B]"
next
end

User agent

In this address type, a user can create an address based on the names of the browsers that are used as user agents. 
Multiple browsers are supported, such as Chrome, Firefox, Internet Explorer, and others. Once created, the address can 
be selected as a source of a proxy policy. This means that a policy will only allow or block requests from the specified 
user agent.
This example creates a user agent address for Google Chrome.

To create a user agent address in the GUI:

 1. Go to Policy & Objects > Addresses.


 2. Click Create New > Address.
 3. Set the following: 
 l Category to Proxy Address,
 l Name to UA-Chrome, 
 l Type to User Agent, 
 l Host to all, and 
 l User Agent to Google Chrome.

FortiOS 6.4.6 Administration Guide 456


Fortinet Technologies Inc.
Network

 4. Click OK.

To create a user agent address in the CLI:

config firewall proxy-address


edit "UA-Chrome"
set type ua
set host "all"
set ua chrome
next
end

Advanced (source)

In this address type, a user can create an address based on multiple parameters, including HTTP method, User Agent, 
and HTTP header. Once created, the address can be selected as a source of a proxy policy. This means that a policy will 
only allow or block requests that match the selected address.
This example creates an address that uses the get method, a user agent for Google Chrome, and an HTTP header with 
the pattern Q[A-B].

To create an advanced (source) address in the GUI:

 1. Go to Policy & Objects > Addresses.


 2. Click Create New > Address.
 3. Set the following: 
 l Category to Proxy Address,
 l Name to advanced_src, 
 l Type to Advanced (Source), 
 l Host to all,
 l Request Method to GET,
 l User Agent to Google Chrome, and 
 l HTTP header to Header_Test : Q[A-B].

FortiOS 6.4.6 Administration Guide 457


Fortinet Technologies Inc.
Network

 4. Click OK.

To create an advanced (source) address in the CLI:

config firewall proxy-address


edit "advance_src"
set type src-advanced
set host "all"
set method get
set ua chrome
config header-group
edit 1
set header-name "Header_Test"
set header "Q[A-B]"
next
end
next
end

Advanced (destination)

In this address type, a user can create an address based on URL pattern and URL category parameters. Once created, 
the address can be selected as a destination of a proxy policy. This means that a policy will only allow or block requests 
that match the selected address.
This example creates an address with the URL pattern /about that are in the Education category. For more information 
about categories, see https://fortiguard.com/webfilter/categories.

To create an advanced (destination) address in the GUI:

 1. Go to Policy & Objects > Addresses.


 2. Click Create New > Address.
 3. Set the following: 
 l Category to Proxy Address,
 l Name to Advanced-dst, 

FortiOS 6.4.6 Administration Guide 458


Fortinet Technologies Inc.
Network

 l Type to Advanced (Destination), 
 l Host to all,
 l URL Path Regex to /about, and
 l URL Category to Education.

 4. Click OK.

To create an advanced (destination) address in the CLI:

config firewall proxy-address


edit "Advanced-dst"
set type dst-advanced
set host "ubc"
set path "/about"
set category 30
next
end

Proxy policy security profiles

Web proxy policies support most security profile types.

Security profiles must be created before they can be used in a policy, see Security Profiles on 
page 1121 for information.

Explicit web proxy policy

The security profiles supported by explicit web proxy policies are:
 l AntiVirus
 l Web Filter
 l Application Control
 l IPS
 l DLP Sensor
 l ICAP

FortiOS 6.4.6 Administration Guide 459


Fortinet Technologies Inc.
Network

 l Web Application Firewall


 l SSL Inspection

To configure security profiles on an explicit web proxy policy in the GUI:

 1. Go to Policy & Objects > Proxy Policy.


 2. Click Create New.
 3. Set the following:

Proxy Type Explicit Web

Outgoing Interface port1

Source all

Destination all

Schedule always

Service webproxy

Action ACCEPT

 4. In the Firewall / Network Options section, set Protocol Options to default.


 5. In the Security Profiles section, make the following selections (for this example, these profiles have all already been 
created):

AntiVirus av

Web Filter urlfiler

Application Control app

IPS Sensor-1

DLP Sensor dlp

ICAP default

Web Application Firewall default

SSL Inspection deep-inspection

FortiOS 6.4.6 Administration Guide 460


Fortinet Technologies Inc.
Network

 6. Click OK to create the policy.

To configure security profiles on an explicit web proxy policy in the CLI:

config firewall proxy-policy


edit 1
set proxy explicit-web
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set service "web"
set action accept
set schedule "always"
set utm-status enable
set av-profile "av"
set webfilter-profile "urlfilter"
set dlp-sensor "dlp"
set ips-sensor "sensor-1"
set application-list "app"
set icap-profile "default"
set waf-profile "default"
set ssl-ssh-profile "deep-inspection"
next
end

FortiOS 6.4.6 Administration Guide 461


Fortinet Technologies Inc.
Network

Transparent proxy

The security profiles supported by transparent proxy policies are:
 l AntiVirus
 l Web Filter
 l Application Control
 l IPS
 l DLP Sensor
 l ICAP
 l Web Application Firewall
 l SSL Inspection

To configure security profiles on a transparent proxy policy in the GUI:

 1. Go to Policy & Objects > Proxy Policy.


 2. Click Create New.
 3. Set the following:

Proxy Type Explicit Web

Incoming Interfae port2

Outgoing Interface port1

Source all

Destination all

Schedule always

Service webproxy

Action ACCEPT

 4. In the Firewall / Network Options section, set Protocol Options to default.


 5. In the Security Profiles section, make the following selections (for this example, these profiles have all already been 
created):

AntiVirus av

Web Filter urlfiler

Application Control app

IPS Sensor-1

DLP Sensor dlp

ICAP default

Web Application Firewall default

SSL Inspection deep-inspection

FortiOS 6.4.6 Administration Guide 462


Fortinet Technologies Inc.
Network

 6. Click OK to create the policy.

To configure security profiles on a transparent proxy policy in the CLI:

config firewall proxy-policy


edit 2
set proxy transparent-web
set srcintf "port2"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set service "webproxy"
set action accept
set schedule "always"
set utm-status enable
set av-profile "av"
set webfilter-profile "urlfilter"
set dlp-sensor "dlp"
set ips-sensor "sensor-1"
set application-list "app"
set icap-profile "default"
set waf-profile "default"
set ssl-ssh-profile "certificate-inspection"
next
end

FortiOS 6.4.6 Administration Guide 463


Fortinet Technologies Inc.
Network

FTP proxy

The security profiles supported by FTP proxy policies are:
 l AntiVirus
 l Application Control
 l IPS
 l DLP Sensor

To configure security profiles on an FTP proxy policy in the GUI:

 1. Go to Policy & Objects > Proxy Policy.


 2. Click Create New.
 3. Set the following:

Proxy Type FTP

Outgoing Interface port1

Source all

Destination all

Schedule always

Action ACCEPT

 4. In the Firewall / Network Options section, set Protocol Options to default.


 5. In the Security Profiles section, make the following selections (for this example, these profiles have all already been 
created):

AntiVirus av

Application Control app

IPS Sensor-1

DLP Sensor dlp

FortiOS 6.4.6 Administration Guide 464


Fortinet Technologies Inc.
Network

 6. Click OK to create the policy.

To configure security profiles on an FTP proxy policy in the CLI:

config firewall proxy-policy


edit 3
set proxy ftp
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set utm-status enable
set av-profile "av"
set dlp-sensor "dlp"
set ips-sensor "sensor-1"
set application-list "app"
next
end

Explicit proxy authentication

FortiGate supports multiple authentication methods. This topic explains using an external authentication server with 
Kerberos as the primary and NTLM as the fallback.

To configure Explicit Proxy with authentication:

 1. Enable and configure the explicit proxy on page 466.
 2. Configure the authentication server and create user groups on page 466.
 3. Create an authentication scheme and rules on page 468.

FortiOS 6.4.6 Administration Guide 465


Fortinet Technologies Inc.
Network

 4. Create an explicit proxy policy and assign a user group to the policy on page 469.
 5. Verify the configuration on page 470. 

Enable and configure the explicit proxy

To enable and configure explicit web proxy in the GUI:

 1. Go to Network > Explicit Proxy.


 2. Enable Explicit Web Proxy.
 3. Select port2 as the Listen on Interfaces and set the HTTP Port to 8080.
 4. Configure the remaining settings as needed.
 5. Click Apply.

To enable and configure explicit web proxy in the CLI:

config web-proxy explicit


set status enable
set ftp-over-http enable
set socks enable
set http-incoming-port 8080
set ipv6-status enable
set unknown-http-version best-effort
end
config system interface
edit "port2"
set vdom "vdom1"
set ip 10.1.100.1 255.255.255.0
set allowaccess ping https ssh snmp http telnet
set type physical
set explicit-web-proxy enable
set snmp-index 12
end
next
end

Configure the authentication server and create user groups

Since we are using an external authentication server with Kerberos authentication as the primary and NTLM as the 
fallback, Kerberos authentication is configured first and then FSSO NTLM authentication is configured.
For successful authorization, the FortiGate checks if user belongs to one of the groups that is permitted in the security 
policy.

To configure an authentication server and create user groups in the GUI:

 1. Configure Kerberos authentication:
 a. Go to User & Authentication > LDAP Servers.
 b. Click Create New.

FortiOS 6.4.6 Administration Guide 466


Fortinet Technologies Inc.
Network

 c. Set the following:

Name ldap-kerberos

Server IP 172.18.62.220

Server Port 389

Common Name Identifier cn

Distinguished Name dc=fortinetqa,dc=local

 d. Click OK
 2. Define Kerberos as an authentication service. This option is only available in the CLI. For information on generating 
a keytab, see Generating a keytab on a Windows server on page 470.
 3. Configure FSSO NTLM authentication:
FSSO NTLM authentication is supported in a Windows AD network. FSSO can also provide NTLM authentication 
service to the FortiGate unit. When a user makes a request that requires authentication, the FortiGate initiates 
NTLM negotiation with the client browser, but does not process the NTLM packets itself. Instead, it forwards all the 
NTLM packets to the FSSO service for processing.
 a. Go to Security Fabric > External Connectors.
 b. Click Create New and select Fortinet Single Sign-On Agent from the Endpoint/Identity category. 
 c. Set the Name to FSSO, Primary FSSO Agent to 172.16.200.220, and enter a password.
 d. Click OK.
 4. Create a user group for Kerberos authentication:
 a. Go to User & Authentication > User Groups.
 b. Click Create New.
 c. Set the Name to Ldap-Group, and Type to Firewall.
 d. In the Remote Groups table, click Add, and set the Remote Server to the previously created ldap-kerberos 
server.
 e. Click OK.
 5. Create a user group for NTLM authentication:
 a. Go to User & Authentication > User Groups.
 b. Click Create New.
 c. Set the Name to NTLM-FSSO-Group, Type to Fortinet Single Sign-On (FSSO), and add FORTINETQA/FSSO 
as a member.
 d. Click OK.

To configure an authentication server and create user groups in the CLI:

 1. Configure Kerberos authentication:
config user ldap
edit "ldap-kerberos"
set server "172.18.62.220"
set cnid "cn"
set dn "dc=fortinetqa,dc=local"
set type regular
set username "CN=root,CN=Users,DC=fortinetqa,DC=local"
set password *********
next
end

FortiOS 6.4.6 Administration Guide 467


Fortinet Technologies Inc.
Network

 2. Define Kerberos as an authentication service:
config user krb-keytab
edit "http_service"
set pac-data disable
set principal "HTTP/[email protected]"
set ldap-server "ldap-kerberos"
set keytab
"BQIAAABFAAIAEEZPUlRJTkVUUUEuTE9DQUwABEhUVFAAFEZHVC5GT1JUSU5FVFFBLkxPQ0FMAAAAAQAAAAAEAAE
ACKLCMonpitnVAAAARQACABBGT1JUSU5FVFFBLkxPQ0FMAARIVFRQABRGR1QuRk9SVElORVRRQS5MT0NBTAAAAAE
AAAAABAADAAiiwjKJ6YrZ1QAAAE0AAgAQRk9SVElORVRRQS5MT0NBTAAESFRUUAAURkdULkZPUlRJTkVUUUEuTE9
DQUwAAAABAAAAAAQAFwAQUHo9uqR9cSkzyxdzKCEXdwAAAF0AAgAQRk9SVElORVRRQS5MT0NBTAAESFRUUAAURkd
ULkZPUlRJTkVUUUEuTE9DQUwAAAABAAAAAAQAEgAgzee854Aq1HhQiKJZvV4tL2Poy7hMIARQpK8MCB//BIAAAAB
NAAIAEEZPUlRJTkVUUUEuTE9DQUwABEhUVFAAFEZHVC5GT1JUSU5FVFFBLkxPQ0FMAAAAAQAAAAAEABEAEG49vHE
iiBghr63Z/lnwYrU="
next
end

For information on generating a keytab, see Generating a keytab on a Windows server on page 470.
 3. Configure FSSO NTLM authentication:
config user fsso
edit "1"
set server "172.18.62.220"
set password *********
next
end

 4. Create a user group for Kerberos authentication:
config user group
edit "Ldap-Group"
set member "ldap" "ldap-kerberos"
next
end

 5. Create a user group for NTLM authentication:
config user group
edit "NTLM-FSSO-Group"
set group-type fsso-service
set member "FORTINETQA/FSSO"
next
end

Create an authentication scheme and rules

Explicit proxy authentication is managed by authentication schemes and rules. An authentication scheme must be 
created first, and then the authentication rule. 

To create an authentication scheme and rules in the GUI:

 1. Create an authentication scheme:
 a. Go to Policy & Objects > Authentication Rules.
 b. Click Create New > Authentication Schemes.

FortiOS 6.4.6 Administration Guide 468


Fortinet Technologies Inc.
Network

 c. Set the Name to Auth-scheme-Negotiate and select Negotiate as the Method.
 d. Click OK.
 2. Create an authentication rule:
 a. Go to Policy & Objects > Authentication Rules.
 b. Click Create New > Authentication Rules.
 c. Set the Name to Auth-Rule, Source Address to all, and Protocol to HTTP.
 d. Enable Authentication Scheme, and select the just created Auth-scheme-Negotiate scheme.
 e. Click OK.

To create an authentication scheme and rules in the CLI:

 1. Create an authentication scheme:
config authentication scheme
edit "Auth-scheme-Negotiate"
set method negotiate <<< Accepts both Kerberos and NTLM as fallback
next
end

 2. Create an authentication rule:
config authentication rule
edit "Auth-Rule"
set status enable
set protocol http
set srcaddr "all"
set ip-based enable
set active-auth-method "Auth-scheme-Negotiate"
set comments "Testing"
next
end

Create an explicit proxy policy and assign a user group to the policy

To create an explicit proxy policy and assign a user group to it in the GUI:

 1. Go to Policy & Objects > Proxy Policy.


 2. Click Create New.
 3. Set Proxy Type to Explicit Web and Outgoing Interface to port1.
 4. Set Source to all, and the just created user groups NTLM-FSSO-Group and Ldap-Group.
 5. Also set Destination to all, Schedule to always, Service to webproxy, and Action to ACCEPT.
 6. Click OK.

To create an explicit proxy policy and assign a user group to it in the CLI:

config firewall proxy-policy


edit 1
set proxy explicit-web
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set service "web"

FortiOS 6.4.6 Administration Guide 469


Fortinet Technologies Inc.
Network

set action accept


set schedule "always"
set logtraffic all
set groups "NTLM-FSSO-Group" "Ldap-Group"
set av-profile "av"
set ssl-ssh-profile "deep-custom"
next
end

Verify the configuration

Log in using a domain and system that would be authenticated using the Kerberos server, then enter the diagnose
wad user list CLI command to verify:
# diagnose wad user list
ID: 8, IP: 10.1.100.71, VDOM: vdom1
user name : [email protected]
duration : 389
auth_type : IP
auth_method : Negotiate
pol_id : 1
g_id : 1
user_based : 0
expire : no
LAN:
bytes_in=4862 bytes_out=11893
WAN:
bytes_in=7844 bytes_out=1023

Log in using a system that is not part of the domain. The NTLM fallback server should be used:
# diagnose wad user list
ID: 2, IP: 10.1.100.202, VDOM: vdom1
user name : TEST31@FORTINETQA
duration : 7
auth_type : IP
auth_method : NTLM
pol_id : 1
g_id : 5
user_based : 0
expire : no
LAN:
bytes_in=6156 bytes_out=16149
WAN:
bytes_in=7618 bytes_out=1917

Generating a keytab on a Windows server

A keytab is used to allow services that are not running Windows to be configured with service instance accounts in the 
Active Directory Domain Service (AD DS). This allows Kerberos clients to authenticate to the service through Windows 
Key Distribution Centers (KDCs).
For an explanation of the process, see https://docs.microsoft.com/en-us/windows-server/administration/windows-
commands/ktpass.

FortiOS 6.4.6 Administration Guide 470


Fortinet Technologies Inc.
Network

To generate a keytab on a Windows server:

 1. On the server, create a user for the FortiGate:
 l The service name is the FQDN for the explicit proxy interface, such as the hostname in the client browser proxy 
configuration. In this example, the service name is FGT.
 l The account only requires domain users membership.
 l The password must be very strong.
 l The password is set to never expire.
 2. Add the FortiGate FQDN in to the Windows DNS domain, as well as in-addr.arpa.
 3. Generate the Kerberos keytab using the ktpass command on Windows servers and many domain workstations:
# ktpass -princ HTTP/<domain name of test fgt>@realm -mapuser <user> -pass <password> -
crypto all -ptype KRB5_NT_PRINCIPAL -out fgt.keytab

For example:
ktpass -princ HTTP/[email protected] -mapuser FGT -pass ***********
-crypto all -ptype KRB5_NT_PRINCIPAL -out fgt.keytab

If the FortiGate is handling multiple keytabs in Kerberos authentication, use different 
passwords when generating each keytab.

 4. Encode the keytab to base64 in a text file:
 l On Windows: certutil -encode fgt.keytab tmp.b64 && findstr /v /c:- tmp.b64 >
fgt.txt
 l On Linux: base64 fgt.keytab > fgt.txt
 l On MacOS: base64 -i fgt.keytab -o fgt.txt
 5. Use the code in fgt.txt as the keytab parameter when configuring the FortiGate.

Transparent web proxy forwarding

In FortiOS, there is an option to enable proxy forwarding for transparent web proxy policies and regular firewall policies 
for HTTP and HTTPS. 
In previous versions of FortiOS, you could forward proxy traffic to another proxy server (proxy chaining) with explicit 
proxy. Now, you can forward web traffic  to the upstream proxy without having to reconfigure your browsers or publish a 
proxy auto-reconfiguration (PAC) file.
Once configured, the FortiGate forwards traffic generated by a client  to the upstream proxy. The upstream proxy then 
forwards it to the server.

To enable proxy forwarding using the CLI:

 1. Configure the web proxy forwarding server:
config web-proxy forward-server
edit "PC_03"
set ip 172.16.200.46
set healthcheck enable
set monitor "http://www.google.ca"

FortiOS 6.4.6 Administration Guide 471


Fortinet Technologies Inc.
Network

next
end

 2. Append the web proxy forwarding server to a firewall policy:
config firewall policy
edit 1
set name "LAN to WAN"
set srcintf "port2"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set logtraffic all
set webproxy-forward-server "PC_03"
set fsso disable
set av-profile "av"
set ssl-ssh-profile "deep-custom"
set nat enable
next
end

Upstream proxy authentication in transparent proxy mode

A downstream proxy FortiGate that needs to be authenticated by the upstream web proxy can use the basic 
authentication method to send its username and password, in the base64 format, to the upstream web proxy for 
authentication. If the authentication succeeds, web traffic that is forwarded from the downstream proxy FortiGate to the 
upstream proxy can be accepted and forwarded to its destinations.
In this example, a school has a FortiGate acting as a downstream proxy that is configured with firewall policies for each 
user group (students and staff). In each policy, a forwarding server is configured to forward the web traffic to the 
upstream web proxy.
The username and password that the upstream web proxy uses to authenticate the downstream proxy are configured on 
the forwarding server, and are sent to the upstream web proxy with the forwarded HTTP requests.

Username Password

student.proxy.local:8080 students ABC123

staff.proxy.local:8081 staff 123456

On the downstream FortiGate, configure forwarding servers with the usernames and passwords for authentication on 
the upstream web proxy, then apply those servers to firewall policies for transparent proxy. For explicit web proxy, the 
forwarding servers can be applied to proxy policies.
When the transparent proxy is configured, clients can access websites without configuring a web proxy in their browser. 
The downstream proxy sends the username and password to the upstream proxy with forwarded HTTP requests to be 
authenticated.

FortiOS 6.4.6 Administration Guide 472


Fortinet Technologies Inc.
Network

To configure the forwarding server on the downstream FortiGate:

config web-proxy forward-server


edit "Student_Upstream_WebProxy"
set addr-type fqdn
set fqdn "student.proxy.local"
set port 8080
set username "student"
set password ABC123
next
edit "Staff_Upstream_WebProxy"
set addr-type fqdn
set fqdn "staff.proxy.local"
set port 8081
set username "staff"
set password 123456
next
end

To configure firewall policies for transparent proxy:

config firewall policy


edit 1
set srcintf "Vlan_Student"
set dstintf "port9"
set srcaddr "Student_Subnet"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set inspection-mode proxy
set ssl-ssh-profile "deep-inspection"
set av-profile "av"
set webproxy-forward-server "Student_Upstream_WebProxy"
set nat enable
next
edit 2
set srcintf "Vlan_Staff"
set dstintf "port9"
set srcaddr "Staff_Subnet"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set inspection-mode proxy
set ssl-ssh-profile "deep-inspection"
set av-profile "av"
set webproxy-forward-server "Staff_Upstream_WebProxy"
set nat enable
next
end

FortiOS 6.4.6 Administration Guide 473


Fortinet Technologies Inc.
Network

Multiple dynamic header count

Multiple dynamic headers are supported for web proxy profiles, as well as Base64 encoding and the append/new 
options. 
Administrators only have to select the dynamic header in the profile. The FortiGate will automatically display the 
corresponding static value. For example, if the administrator selects the $client-ip header, the FortiGate will display 
the actual client IP address.
The supported headers are:

$client-ip Client IP address
$user Authentication user name
$domain User domain name
$local_grp Firewall group name
$remote_grp Group name from authentication server
$proxy_name Proxy realm name

To configure dynamic headers using the CLI:

Since authentication is required, FSSO NTLM authentication is configured in this example.
 1. Configure LDAP:
config user ldap
edit "ldap-kerberos"
set server "172.18.62.220"
set cnid "cn"a
set dn "dc=fortinetqa,dc=local"
set type regular
set username "CN=root,CN=Users,DC=fortinetqa,DC=local"
set password *********
next
end

 2. Configure FSSO:
config user fsso
edit "1"
set server "172.18.62.220"
set password *********
next
end

 3. Configure a user group:
config user group
edit "NTLM-FSSO"
set group-type fsso-service
set member "FORTINETQA/FSSO"
next
end

FortiOS 6.4.6 Administration Guide 474


Fortinet Technologies Inc.
Network

 4. Configure an authentication scheme:
config authentication scheme
edit "au-sch-ntlm"
set method ntlm
next
end

 5. Configure an authentication rule:
config authentication rule
edit "au-rule-fsso"
set srcaddr "all"
set active-auth-method "au-sch-ntlm"
next
end

 6. Create a web proxy profile that adds a new dynamic and custom Via header:
config web-proxy profile
edit "test"
set log-header-change enable
config headers
edit 1
set name "client-ip"
set content "$client-ip"
next
edit 2
set name "Proxy-Name"
set content "$proxy_name"
next
edit 3
set name "user"
set content "$user"
next
edit 4
set name "domain"
set content "$domain"
next
edit 5
set name "local_grp"
set content "$local_grp"
next
edit 6
set name "remote_grp"
set content "$remote_grp"
next
edit 7
set name "Via"
set content "Fortigate-Proxy"
next
end
next
end

 7. In the proxy policy, append the web proxy profile created in the previous step:
config firewall proxy-policy
edit 1

FortiOS 6.4.6 Administration Guide 475


Fortinet Technologies Inc.
Network

set proxy explicit-web


set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set service "web"
set action accept
set schedule "always"
set logtraffic all
set groups "NTLM-FSSO"
set webproxy-profile "test"
set utm-status enable
set av-profile "av"
set webfilter-profile "content"
set ssl-ssh-profile "deep-custom"
next
end

 8. Once traffic is being generated from the client, look at the web filter logs to verify that it is working. 
The corresponding values for all the added header fields displays in the Change headers section at the bottom of 
the Log Details pane.
1: date=2019-02-07 time=13:57:24 logid="0344013632" type="utm" subtype="webfilter"
eventtype="http_header_change" level="notice" vd="vdom1" eventtime=1549576642 policyid=1
transid=50331689 sessionid=1712788383 user="TEST21@FORTINETQA" group="NTLM-FSSO"
profile="test" srcip=10.1.100.116 srcport=53278 dstip=172.16.200.46 dstport=80
srcintf="port2" srcintfrole="undefined" dstintf="port1" dstintfrole="undefined" proto=6
service="HTTP" url="http://172.16.200.46/" agent="curl/7.22.0" chgheaders="Added=client-
ip: 10.1.100.116|Proxy-Name: 1.1 100D.qa|user: TEST21|domain: FORTINETQA|local_grp:
NTLM-FSSO|remote_grp: FORTINETQA/FSSO|Via: Fortigate-Proxy"

Restricted SaaS access (Office 365, G Suite, Dropbox)

With the web proxy profile, you can specify access permissions for Microsoft Office 365, Google G Suite, and Dropbox. 
You can insert vendor-defined headers that restrict access to the specific accounts. You can also insert custom headers 
for any destination.

FortiOS 6.4.6 Administration Guide 476


Fortinet Technologies Inc.
Network

You can configure the web proxy profile  with the required headers for the specific destinations, and then directly apply it 
to a policy to control the  header's insertion.

To implement Office 365 tenant restriction, G Suite account access control, and Dropbox network
access control:

 1. Configure a web proxy profile according to the vendors' specifications:
 a. Define the traffic destination (service provider).
 b. Define the header name, defined by the service provider.
 c. Define the value that will be inserted into the traffic, defined by your settings.
 2. Apply the web proxy profile to a policy.
The following example creates a web proxy profile for Office 365, G Suite, and Dropbox access control.

Due to vendors' changing requirements, this example may no longer comply with the vendors' 
official guidelines.

To create a web proxy profile for access control using the CLI:

 1. Configure the web proxy profile:   
config web-proxy profile
edit "SaaS-Tenant-Restriction"
set header-client-ip pass
set header-via-request pass
set header-via-response pass
set header-x-forwarded-for pass
set header-front-end-https pass
set header-x-authenticated-user pass
set header-x-authenticated-groups pass
set strip-encoding disable
set log-header-change disable
config headers
edit 1
set name "Restrict-Access-To-Tenants" <---header name defined by
Office365 spec. input EXACTLY as it is
set dstaddr "Microsoft Office 365" <----built-in destination address for
Office365
set action add-to-request
set base64-encoding disable
set add-option new
set protocol https http
set content "contoso.onmicrosoft.com,fabrikam.onmicrosoft.com" <----
your tenants restriction configuration
next
edit 2
set name "Restrict-Access-Context" <----header name defined by
Office365 spec. input EXACTLY as it is
set dstaddr "Microsoft Office 365" <----build-in destination address
for Office365
set action add-to-request
set base64-encoding disable

FortiOS 6.4.6 Administration Guide 477


Fortinet Technologies Inc.
Network

set add-option new


set protocol https http
set content "456ff232-35l2-5h23-b3b3-3236w0826f3d" <----your directory
ID can find in Azure portal
next
edit 3
set name "X-GooGApps-Allowed-Domains" <----header name defined by
Google G suite.
set dstaddr "G Suite" <---- built-in G Suite destination address
set action add-to-request
set base64-encoding disable
set add-option new
set protocol https http
set content "abcd.com" <----your domain restriction when you create G
Suite account
next

edit 4
set name "X-Dropbox-allowed-Team-Ids" <----header defined by Dropbox
set dstaddr "wildcard.dropbox.com" <----build-in destination address
for Dropbox
set action add-to-request
set base64-encoding disable
set add-option new
set protocol https http
set content "dbmid:FDFSVF-DFSDF" <----your team-Id in Dropbox
next
end
next
end

 2. Apply the web proxy profile to a firewall policy:
config firewall policy
edit 1
set name "WF"
set srcintf "port10" "wifi"
set dstintf "port9"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set webproxy-profile "SaaS-Tenant-Restriction"
set utm-status enable
set utm-inspection-mode proxy
set logtraffic all
set webfilter-profile "blocktest2"
set application-list "g-default"
set profile-protocol-options "protocol"
set ssl-ssh-profile "protocols"
set nat enable
next
end

FortiOS 6.4.6 Administration Guide 478


Fortinet Technologies Inc.
Network

References

 l Office 365: Use tenant restrictions to manage access to SaaS cloud applications
 l G Suite: Block access to consumer accounts
 l Dropbox: Network control

Explicit proxy and FortiSandbox Cloud

Explicit proxy connections can leverage FortiSandbox Cloud for advanced threat scanning and updates. This allows 
FortiGates behind isolated networks to connect to FortiCloud services.

To configure FortiGuard services to communicate with an explicit proxy server:

config system fortiguard


set proxy-server-ip 172.16.200.44
set proxy-server-port 3128
set proxy-username "test1"
set proxy-password *********
end

To verify the explicit proxy connection to FortiSandbox Cloud:

# diagnose debug application forticldd -1


Debug messages will be on for 30 minutes.
# diagnose debug enable
[2942] fds_handle_request: Received cmd 23 from pid-2526, len 0
[40] fds_queue_task: req-23 is added to Cloud-sandbox-controller
[178] fds_svr_default_task_xmit: try to get IPs for Cloud-sandbox-controller
[239] fds_resolv_addr: resolve aptctrl1.fortinet.com
[169] fds_get_addr: name=aptctrl1.fortinet.com, id=32, cb=0x2bc089
[101] dns_parse_resp: DNS aptctrl1.fortinet.com -&gt; 172.16.102.21
[227] fds_resolv_cb: IP-1: 172.16.102.21
[665] fds_ctx_set_addr: server: 172.16.102.21:443
[129] fds_svr_default_pickup_server: Cloud-sandbox-controller: 172.16.102.21:443
[587] fds_https_start_server: server: 172.16.102.21:443
[579] ssl_new: SSL object is created
[117] https_create: proxy server 172.16.200.44 port:3128
[519] fds_https_connect: https_connect(172.16.102.21) is established.
[261] fds_svr_default_on_established: Cloud-sandbox-controller has connected to

FortiOS 6.4.6 Administration Guide 479


Fortinet Technologies Inc.
Network

ip=172.16.102.21
[268] fds_svr_default_on_established: server-Cloud-sandbox-controller handles cmd-23
[102] fds_pack_objects: number of objects: 1
[75] fds_print_msg: FCPC: len=109
[81] fds_print_msg: Protocol=2.0
[81] fds_print_msg: Command=RegionList
[81] fds_print_msg: Firmware=FG101E-FW-6.02-0917
[81] fds_print_msg: SerialNumber=FG101E4Q17002429
[81] fds_print_msg: TimeZone=-7
[75] fds_print_msg: http req: len=248
[81] fds_print_msg: POST https://172.16.102.21:443/FCPService HTTP/1.1
[81] fds_print_msg: User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
[81] fds_print_msg: Host: 172.16.102.21:443
[81] fds_print_msg: Cache-Control: no-cache
[81] fds_print_msg: Connection: close
[81] fds_print_msg: Content-Type: application/octet-stream
[81] fds_print_msg: Content-Length: 301
[524] fds_https_connect: http request to 172.16.102.21: header=248, ext=301.
[257] fds_https_send: sent 248 bytes: pos=0, len=248
[265] fds_https_send: 172.16.102.21: sent 248 byte header, now send 301-byte body
[257] fds_https_send: sent 301 bytes: pos=0, len=301
[273] fds_https_send: sent the entire request to server: 172.16.102.21:443
[309] fds_https_recv: read 413 bytes: pos=413, buf_len=2048
[332] fds_https_recv: received the header from server: 172.16.102.21:443, [HTTP/1.1 200
Content-Type: application/octet-stream
Content-Length: 279
Date: Thu, 20 Jun 2019 16:41:11 GMT
Connection: close]
[396] fds_https_recv: Do memmove buf_len=279, pos=279
[406] fds_https_recv: server: 172.16.102.21:443, buf_len=279, pos=279
[453] fds_https_recv: received a packet from server-172.16.102.21:443: sz=279, objs=1
[194] __ssl_data_ctx_free: Done
[839] ssl_free: Done
[830] ssl_disconnect: Shutdown
[481] fds_https_recv: obj-0: type=FCPR, len=87
[294] fds_svr_default_on_response: server-Cloud-sandbox-controller handles cmd-23
[75] fds_print_msg: fcpr: len=83
[81] fds_print_msg: Protocol=2.0
[81] fds_print_msg: Response=202
[81] fds_print_msg: ResponseItem=Region:Europe,Global,Japan,US
[81] fds_print_msg: existing:Japan
[3220] aptctrl_region_res: Got rsp: Region:Europe,Global,Japan,US
[3222] aptctrl_region_res: Got rsp: Region existing:Japan
[439] fds_send_reply: Sending 28 bytes data.
[395] fds_free_tsk: cmd=23; req.noreply=1
# [136] fds_on_sys_fds_change: trace
[2942] fds_handle_request: Received cmd 22 from pid-170, len 0
[40] fds_queue_task: req-22 is added to Cloud-sandbox-controller
[587] fds_https_start_server: server: 172.16.102.21:443
[579] ssl_new: SSL object is created
[117] https_create: proxy server 172.16.200.44 port:3128
[519] fds_https_connect: https_connect(172.16.102.21) is established.
[261] fds_svr_default_on_established: Cloud-sandbox-controller has connected to
ip=172.16.102.21
[268] fds_svr_default_on_established: server-Cloud-sandbox-controller handles cmd-22
[102] fds_pack_objects: number of objects: 1

FortiOS 6.4.6 Administration Guide 480


Fortinet Technologies Inc.
Network

[75] fds_print_msg: FCPC: len=146


[81] fds_print_msg: Protocol=2.0
[81] fds_print_msg: Command=UpdateAPT
[81] fds_print_msg: Firmware=FG101E-FW-6.02-0917
[81] fds_print_msg: SerialNumber=FG101E4Q17002429
[81] fds_print_msg: TimeZone=-7
[81] fds_print_msg: TimeZoneInMin=-420
[81] fds_print_msg: DataItem=Region:US
[75] fds_print_msg: http req: len=248
[81] fds_print_msg: POST https://172.16.102.21:443/FCPService HTTP/1.1
[81] fds_print_msg: User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
[81] fds_print_msg: Host: 172.16.102.21:443
[81] fds_print_msg: Cache-Control: no-cache
[81] fds_print_msg: Connection: close
[81] fds_print_msg: Content-Type: application/octet-stream
[81] fds_print_msg: Content-Length: 338
[524] fds_https_connect: http request to 172.16.102.21: header=248, ext=338.
[257] fds_https_send: sent 248 bytes: pos=0, len=248
[265] fds_https_send: 172.16.102.21: sent 248 byte header, now send 338-byte body
[257] fds_https_send: sent 338 bytes: pos=0, len=338
[273] fds_https_send: sent the entire request to server: 172.16.102.21:443
[309] fds_https_recv: read 456 bytes: pos=456, buf_len=2048
[332] fds_https_recv: received the header from server: 172.16.102.21:443, [HTTP/1.1 200
Content-Type: application/octet-stream
Content-Length: 322
Date: Thu, 20 Jun 2019 16:41:16 GMT
Connection: close]
[396] fds_https_recv: Do memmove buf_len=322, pos=322
[406] fds_https_recv: server: 172.16.102.21:443, buf_len=322, pos=322
[453] fds_https_recv: received a packet from server-172.16.102.21:443: sz=322, objs=1
[194] __ssl_data_ctx_free: Done
[839] ssl_free: Done
[830] ssl_disconnect: Shutdown
[481] fds_https_recv: obj-0: type=FCPR, len=130
[294] fds_svr_default_on_response: server-Cloud-sandbox-controller handles cmd-22
[75] fds_print_msg: fcpr: len=126
[81] fds_print_msg: Protocol=2.0
[81] fds_print_msg: Response=202
[81] fds_print_msg: ResponseItem=Server1:172.16.102.51:514
[81] fds_print_msg: Server2:172.16.102.52:514
[81] fds_print_msg: Contract:20210215
[81] fds_print_msg: NextRequest:86400
[615] parse_apt_contract_time_str: The APTContract is valid to Mon Feb 15 23:59:59 2021
[616] parse_apt_contract_time_str: FGT current local time is Thu Jun 20 09:41:16 2019
[3289] aptctrl_update_res: Got rsp: APT=172.16.102.51:514 APTAlter=172.16.102.52:514 next-
upd=86400
[395] fds_free_tsk: cmd=22; req.noreply=1

Proxy chaining (web proxy forwarding servers)

For the explicit web proxy you can configure web proxy forwarding servers to use proxy chaining to redirect web proxy 
sessions to other proxy servers. Proxy chaining can be used to forward web proxy sessions from the FortiGate unit to 
one or more other proxy servers on your network or on a remote network. You can use proxy chaining to integrate the 
FortiGate explicit web proxy with a web proxy solution that you already have in place.

FortiOS 6.4.6 Administration Guide 481


Fortinet Technologies Inc.
Network

A FortiGate unit can forward sessions to most web proxy servers including a remote FortiGate unit with the explicit web 
proxy enabled. No special configuration of the explicit web proxy on the remote FortiGate unit is required.
You can deploy the explicit web proxy with proxy chaining in an enterprise environment consisting of small satellite 
offices and a main office. If each office has a FortiGate unit, users at each of the satellite offices can use their local 
FortiGate unit as an explicit web proxy server. The satellite office FortiGate units can forward explicit web proxy sessions 
to an explicit web proxy server at the central office. From here the sessions can connect to web servers on the Internet.
FortiGate proxy chaining does not support web proxies in the proxy chain authenticating each other.
The following examples assume explicit web proxy has been enabled.

To enable explicit web proxy in the GUI:

 1. Go to System > Feature Visibility.


 2. In the Security Features column, enable Explicit Proxy.
 3. Configure the explicit web proxy settings.  See Explicit web proxy on page 443.

To add a web proxy forwarding server in the GUI:

 1. Go to Network > Explicit Proxy. The Explicit Proxy page opens.


 2. In the Web Proxy Forwarding Servers section, click Create New.
 3. Configure the server settings and click OK.   

Name Enter the name of the forwarding server. 

Proxy Address Type Select the type of IP address of the forwarding server. A forwarding server can 


have an FQDN or IP address.

Proxy Address Enter the IP address of the forwarding server.

Port Enter the port number on which the proxy receives connections. Traffic leaving 
the FortiGate explicit web proxy for this server has its destination port number 
changed to this number.

Server Down Action Select the action the explicit web proxy will take if the forwarding server is 


down.
 l Block: Blocks the traffic if the remote server is down.
 l Use Original Server:  Forwards the traffic from the FortiGate to its 
destination as if no forwarding server is configured.

Health Monitor Select to enable health check monitoring. 

Health Check Monitor Site Enter the address of a remote site.

Example

The following example adds a web proxy forwarding server named fwd-srv at address proxy.example.com and port 
8080.

To add a web proxy forwarding server in the CLI:

config web-proxy forward-server


edit fwd-srv
set addr-type fqdn

FortiOS 6.4.6 Administration Guide 482


Fortinet Technologies Inc.
Network

set fqdn proxy.example.com


set port 8080
end

Web proxy forwarding server monitoring and health checking

By default, a FortiGate unit monitors a web proxy forwarding server by forwarding a connection to the remote server 
every 10 seconds. The remote server is assumed to be down if it does not respond to the connection. FortiGate 
continues checking the server. The server is assumed to be back up when the server sends a response. If you enable 
health checking, the FortiGate unit attempts to get a response from a web server every 10 seconds by connecting 
through the remote forwarding server.
You can configure health checking for each remote server and specify a different website to check for each one.
If the remote server is found to be down you can configure the FortiGate unit to block sessions until the server comes 
back up or to allow sessions to connect to their destination, bypassing the remote forwarding server. You cannot 
configure the FortiGate unit to fail over to another remote forwarding server.

To configure proxy server monitor and health checking in the GUI:

 1. Go to Network > Explicit Proxy. The Explicit Proxy page opens.


 2. In the Web Proxy Forwarding Servers section, select a server and click Editi.
 3. Configure the Server Down Action and Health Monitor settings.   

Server Down Action Select the action the explicit web proxy will take if the forwarding server is 


down.
 l Block: Blocks the traffic if the remote server is down.
 l Use Original Server:  Forwards the traffic from the FortiGate to its 
destination as if no forwarding server configured.

Health Monitor Select to enable health check monitoring. 

Health Check Monitor Site Enter the address of a remote site.

 4. Click OK.

Example

The following example enables health checking for a web proxy forwarding server and sets the server down option to 
bypass the forwarding server if it is down.

To configure proxy server monitor and health checking in the CLI:

config web-proxy forward-server


edit fwd-srv
set healthcheck enable
set monitor http://example.com
set server-down-option pass
end

FortiOS 6.4.6 Administration Guide 483


Fortinet Technologies Inc.
Network

Grouping forwarding servers and load balancing traffic to the servers

You can add multiple web proxy forwarding servers to a forwarding server group and then add the server group to an 
explicit web proxy policy instead of adding a single server. Forwarding server groups are created from the FortiGate CLI 
but can be added to policies from the web-based manager (or from the CLI).
When you create a forwarding server group you can select a load balancing method to control how sessions are load 
balanced to the forwarding servers in the server group. Two load balancing methods are available:
 l Weighted load balancing sends more sessions to the servers with higher weights. You can configure the weight for 
each server when you add it to the group.
 l Least-session load balancing sends new sessions to the forwarding server that is processing the fewest sessions.
When you create a forwarding server group you can also enable affinity. Enable affinity to have requests from the same 
client processed by the same server. This can reduce delays caused by using multiple servers for a single multi-step 
client operation. Affinity takes precedence over load balancing.
You can also configure the behavior of the group if all of the servers in the group are down. You can select to block traffic 
or you can select to have the traffic pass through the FortiGate explicit proxy directly to its destination instead of being 
sent to one of the forwarding servers.

Example

The following example adds a forwarding server group that uses weighted load balancing to load balance traffic to three 
forwarding servers. Server weights are configured to send most traffic to server2. The group has affinity enabled 
and blocks traffic if all of the forward servers are down.

To configure load balancing in the CLI:

config web-proxy forward-server


edit server_1
set ip 172.20.120.12
set port 8080
next
edit server_2
set ip 172.20.120.13
set port 8000
next
edit server_3
set ip 172.20.120.14
set port 8090
next
end
config web-proxy forward-server-group
edit New-fwd-group
set affinity enable
set ldb-method weighted
set group-down-option block
config server-list
edit server_1
set weight 10
next
edit server_2
set weight 40
next
edit server_3

FortiOS 6.4.6 Administration Guide 484


Fortinet Technologies Inc.
Network

set weight 10
next
end

Adding proxy chaining to an explicit web proxy policy

You can enable proxy chaining for web proxy sessions by adding a web proxy forwarding server or server group to an 
explicit web proxy policy. In a policy you can select one web proxy forwarding server or server group. All explicit web 
proxy traffic accepted by this security policy is forwarded to the specified web proxy forwarding server or server group.

To add an explicit web proxy forwarding server in the GUI:

 1. Go to Policy & Objects > Proxy Policy and click Create New.   


 2. Configure the policy settings:   

Proxy Type Explicit Web

Outgoing Interface wan1

Source Internal_subnet

Destination all

Schedule always

Service webproxy

Action Accept

 3. Enable Web Proxy Forwarding Server and select the forwarding server, (for example,fwd-srv). 


 4. Click OK.

Example

The following example adds a security policy that allows all users on the 10.31.101.0 subnet to use the explicit web 
proxy for connections through the wan1 interface to the Internet. The policy forwards web proxy sessions to a remote 
forwarding server named fwd-srv.

To add an explicit web proxy forwarding server in the CLI:

config firewall proxy-policy


edit 0
set proxy explicit-web
set dstintf "wan1"
set srcaddr "Internal_subnet"
set dstaddr "all"
set service "webproxy"
set action accept
set schedule "always"
set webproxy-forward-server "fwd-srv"
end

Using TLS 1.3 with web proxy forward servers

A FortiGate can handle TLS 1.3 traffic in both deep and certificate inspection modes.

FortiOS 6.4.6 Administration Guide 485


Fortinet Technologies Inc.
Network

Example

The following example demonstrates that the Squid server and the FortiGate can handle TLS 1.3 traffic.

The following output from the Squid server demonstrates that the FortiGate supports TLS 1.3 traffic and forwards the 
hello retry request back to the client PC. The client PC then sends the client hello again, and the connection is 
successfully established.

Agentless NTLM authentication for web proxy

Agentless Windows NT LAN Manager (NTLM) authentication includes support for the following items:
 l Multiple servers
 l Individual users
You can use multiple domain controller servers for the agentless NTLM. They can be used for load balancing and high 
service stability. 
You can also use user-based matching in groups for Kerberos and agentless NTLM. In these scenarios, FortiOS 
matches the user's group information from an LDAP server. 

To support multiple domain controllers for agentless NTLM using the CLI:

 1. Configure an LDAP server:   
config user ldap
edit "ldap-kerberos"

FortiOS 6.4.6 Administration Guide 486


Fortinet Technologies Inc.
Network

set server "172.18.62.177"


set cnid "cn"
set dn "dc=fortinetqa,dc=local"
set type regular
set username "CN=root,CN=Users,DC=fortinetqa,DC=local"
set password *********
next
end
 2. Configure multiple domain controllers:   
config user domain-controller
edit "dc1"
set ip-address 172.18.62.177
config extra-server
edit 1
set ip-address 172.18.62.220
next
end
set ldap-server "ldap-kerberos"
next
end
 3. Create an authentication scheme and rule: 
config authentication scheme
edit "au-ntlm"
set method ntlm
set domain-controller "dc1"
next
end
config authentication rule
edit "ru-ntlm"
set srcaddr "all"
set ip-based disable
set active-auth-method "au-ntlm"
next
end
 4. In the proxy policy, append the user group for authorization:   
config firewall proxy-policy
edit 1
set proxy explicit-web
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set service "web"
set action accept
set schedule "always"
set groups "ldap-group"
set utm-status enable
set av-profile "av"
set ssl-ssh-profile "deep-custom"
next
end
This configuration uses a round-robin method. When the first user logs in, the FortiGate sends the authentication 
request to the first domain controller. Later when another user logs in, the FortiGate sends the authentication 
request to another domain  controller.
 5. Verify the behavior after the user successfully logs in:   
# diagnose wad user list

FortiOS 6.4.6 Administration Guide 487


Fortinet Technologies Inc.
Network

ID: 1825, IP: 10.1.100.71, VDOM: vdom1


user name : test1
duration : 497
auth_type : Session
auth_method : NTLM
pol_id : 1 g_id : 5
user_based : 0 e
xpire : 103
LAN:
bytes_in=2167 bytes_out=7657
WAN:
bytes_in=3718 bytes_out=270

To support individual users for agentless NTLM using the CLI:

 1. Configure an LDAP server:   
config user ldap
edit "ldap-kerberos"
set server "172.18.62.177"
set cnid "cn"
set dn "dc=fortinetqa,dc=local"
set type regular
set username "CN=root,CN=Users,DC=fortinetqa,DC=local"
set password *********
next
end
 2. Configure the user group and allow user-based matching:   
config user group
edit "ldap-group"
set member "ldap" "ldap-kerberos"
config match
edit 1
set server-name "ldap-kerberos"
set group-name "test1"
next
end
next
end
 3. Create an authentication scheme and rule:   
config authentication scheme
edit "au-ntlm"
set method ntlm
set domain-controller "dc1"
next
end
config authentication rule
edit "ru-ntlm"
set srcaddr "all"
set ip-based disable
set active-auth-method "au-ntlm"
next
end
 4. In the proxy policy, append the user group for authorization:
config firewall proxy-policy
edit 1
set proxy explicit-web

FortiOS 6.4.6 Administration Guide 488


Fortinet Technologies Inc.
Network

set dstintf "port1"


set srcaddr "all"
set dstaddr "all"
set service "web"
set action accept
set schedule "always"
set groups "ldap-group"
set utm-status enable
set av-profile "av"
set ssl-ssh-profile "deep-custom"
next
end
This implementation lets you configure a single user instead of a whole group. The FortiGate will now allow the user 
named test1. 

To verify the configuration using the CLI:

diagnose wad user list


ID: 1827, IP: 10.1.15.25, VDOM: vdom1
user name : test1
duration : 161
auth_type : Session
auth_method : NTLM
pol_id : 1
g_id : 5
user_based : 0
expire : 439
LAN:
bytes_in=1309 bytes_out=4410
WAN:
bytes_in=2145 bytes_out=544

Multiple LDAP servers in Kerberos keytabs and agentless NTLM domain controllers

Multiple LDAP servers can be configured in Kerberos keytabs and agentless NTLM domain controllers for multi-forest 
deployments.

To use multiple LDAP servers in Kerberos keytabs and agentless NTLM domain controllers:

 1. Add multiple LDAP servers:
config user ldap
edit "ldap-kerberos"
set server "172.16.200.98"
set cnid "cn"
set dn "dc=fortinetqa,dc=local"
set type regular
set username "CN=root,CN=Users,DC=fortinetqa,DC=local"
set password xxxxxxxxx
next
edit "ldap-two"
set server "172.16.106.128"
set cnid "cn"
set dn "OU=Testing,DC=ad864r2,DC=com"

FortiOS 6.4.6 Administration Guide 489


Fortinet Technologies Inc.
Network

set type regular


set username "cn=Testadmin,cn=users,dc=AD864R2,dc=com"
set password xxxxxxxxx
next
end

 2. Configure a Kerberos keytab entry that uses both LDAP servers:
config user krb-keytab
edit "http_service"
set pac-data disable
set principal "HTTP/[email protected]"
set ldap-server "ldap-kerberos" "ldap-two"
set keytab xxxxxxxxx
next
end

 3. Configure a domain controller that uses both LDAP servers:
config user domain-controller
edit "dc1"
set ip-address 172.16.200.98
set ldap-server "ldap-two" "ldap-kerberos"
next
end

Learn client IP addresses

Learning the actual client IP addresses is imperative for authorization. This function identifies the real client IP address 
when there is a NATing device between the FortiGate and the client.
config web-proxy global
set learn-client-ip {enable | disable}
set learn-client-ip-from-header {true-client-ip | x-real-ip | x-forwarded-for}
set learn-client-ip-srcaddr <address> ... <address>
end

learn-client-ip {enable | Enable/disable learning the client's IP address from headers.


disable}
learn-client-ip-from- Learn client IP addresses from the specified headers.
header {true-client-
ip | x-real-ip | x-
forwarded-for}
learn-client-ip-srcaddr The source address names.
<address> ...
<address>

Example

In this example, the real client IP address is used to match a policy for FSSO authentication.

FortiOS 6.4.6 Administration Guide 490


Fortinet Technologies Inc.
Network

To enable learning the client IP address:

config web-proxy global


set proxy-fqdn "default.fqdn"
set webproxy-profile "default"
set learn-client-ip enable
set learn-client-ip-from-header x-forwarded-for
set learn-client-ip-srcaddr "all"
end

To configure the proxy policy:

config firewall proxy-policy


edit 1
set proxy explicit-web
set dstintf "mgmt1"
set srcaddr "all"
set dstaddr "all"
set service "w"
set action accept
set schedule "always"
set groups "fsso1"
set utm-status enable
set av-profile "default"
set dlp-sensor "default"
set profile-protocol-options "default"
set ssl-ssh-profile "deep-inspection"
next
end

To configure the authentication scheme and rule:

config authentication scheme


edit "scheme1"
set method fsso
next
end
config authentication rule
edit "rule1"
set srcaddr "all"
set sso-auth-method "scheme1"
next
end

DHCP server

A DHCP server provides an address from a defined address range to a client on the network, when requested.
You can configure one or more DHCP servers on any FortiGate interface. A DHCP server dynamically assigns IP 
addresses to hosts on the network connected to the interface. The host computers must be configured to obtain their IP 
addresses using DHCP.

FortiOS 6.4.6 Administration Guide 491


Fortinet Technologies Inc.
Network

You can configure a FortiGate interface as a DHCP relay. The interface forwards DHCP requests from DHCP clients to 
an external DHCP server and returns the responses to the DHCP clients. The DHCP server must have appropriate 
routing so that its response packets to the DHCP clients arrive at the unit.
For more information about options, see:
 l DHCP options on page 492
 l IP address assignment with relay agent information option on page 494
 l DHCP client options on page 496

Configure DHCP on the FortiGate

To add a DHCP server on the GUI:

 1. Go to Network > Interfaces.


 2. Edit an interface.
 3. Enable the DHCP Server option and configure the settings.

To add a DHCP server on the CLI:

config system dhcp server


edit 1
set dns-service default
set default-gateway 192.168.1.2
set netmask 255.255.255.0
set interface "port1"
config ip-range
edit 1
set start-ip 192.168.1.1
set end-ip 192.168.1.1
next
edit 2
set start-ip 192.168.1.3
set end-ip 192.168.1.254
next
end
set timezone-option default
set tftp-server "172.16.1.2"
next
end

DHCP options

When adding a DHCP server, you can include DHCP codes and options. The DHCP options are BOOTP vendor 
information fields that provide additional vendor-independent configuration parameters to manage the DHCP server. For 
example, you might need to configure a FortiGate DHCP server that gives out a separate option as well as an IP 
address, such as an environment that needs to support PXE boot with Windows images.
The option numbers and codes are specific to the application. The documentation for the application indicates the values 
to use. Option codes are represented in a option value/HEX value pairs. The option is a value between 1 and 255.
You can add up to three DHCP code/option pairs per DHCP server.

FortiOS 6.4.6 Administration Guide 492


Fortinet Technologies Inc.
Network

For detailed information about DHCP options, see RFC 2132, DHCP Options and BOOTP Vendor Extensions.

To configure option 252 with value http://192.168.1.1/wpad.dat using the CLI:

config system dhcp server


edit <server_entry_number>
set option1 252 687474703a2f2f3139322e3136382e312e312f777061642e646174
next
end

Option 82

The DHCP relay agent information option (option 82 in RFC 3046) helps protect the FortiGate against attacks such as 
spoofing (forging) of IP addresses and MAC addresses, and DHCP IP address starvation. 
This option is disabled by default. However, when dhcp-relay-service is enabled, dhcp-relay-agent-option 
becomes enabled.

To configure the DHCP relay agent option using the CLI:

config system interface


edit <interface>
set vdom root
set dhcp-relay-service enable
set dhcp-relay-ip <ip>
set dhcp-relay-agent-option enable
set vlanid <id>
next
end

See IP address assignment with relay agent information option on page 494 for an example.

Option 42

This option specifies a list of the NTP servers available to the client by IP address.
config system dhcp server
edit 2
set ntp-service {local | default | specify}
set ntp-server1 <class_ip>
set ntp-server2 <class_ip>
set ntp-server3 <class_ip>
next
end

The NTP service options include:
 l local: The IP address of the interface that the DHCP server is added to becomes the client's NTP server 
IP address.
 l default: Clients are assigned the FortiGate's configured NTP servers.
 l specify: Specify up to three NTP servers in the DHCP server configuration.

FortiOS 6.4.6 Administration Guide 493


Fortinet Technologies Inc.
Network

IP address assignment with relay agent information option

Option 82 (DHCP relay information option) helps protect the FortiGate against attacks such as spoofing (or forging) of IP 
and MAC addresses, and DHCP IP address starvation.

The following CLI variables are included in the config system dhcp server > config reserved-address 


command:

circuit-id-type {hex | DHCP option type; hex or string (default).


string}
circuit-id <value> Option 82 circuit ID of the client that will get the reserved IP address.
Format: vlan-mod-port
 l vlan:  VLAN ID (2 bytes)
 l mod: 1 = snoop, 0 = relay (1 byte)
 l port: port number (1 byte)
remote-id-type {hex | DHCP option type; hex or string (default).
string}
remote-id <value> Option 82 remote ID of the client that will get the reserved IP address.
Format: the MAC address of the client.
type {mac | option82} The DHCP reserved address type; mac (default) or option82.

To create an IP address assignment rule using option 82 in the GUI:

 1. Go to Network > Interfaces.


 2. Edit an existing port, or create a new one.   

The port Role must be LAN or Undefined.

 3. Enable DHCP Server.


 4. Configure the address ranges and other settings as needed.
 5. Click + to expand the Advanced options.

FortiOS 6.4.6 Administration Guide 494


Fortinet Technologies Inc.
Network

 6. In the IP Address Assignment Rules table, click Create New.

The Create New IP Address Assignment Rule pane opens.


 7. Configure the new rule:
 a. For the Type, select DHCP Relay Agent.
 b. Enter the Circuit ID and Remote ID.
 c. Enter the IP address that will be reserved.
 8. Click OK.

To create an IP address assignment rule using option 82 with the CLI:

config system dhcp server


edit 1

FortiOS 6.4.6 Administration Guide 495


Fortinet Technologies Inc.
Network

set netmask 255.255.255.0


set interface "port4"
config ip-range
edit 1
set start-ip 100.100.100.1
set end-ip 100.100.100.99
next
edit 2
set start-ip 100.100.100.101
set end-ip 100.100.100.254
next
end
config reserved-address
edit 1
set type option82
set ip 100.100.100.12
set circuit-id-type hex
set circuit-id "00010102"
set remote-id-type hex
set remote-id "704ca5e477d6"
next
end
next
end

DHCP client options

When an interface is in DHCP addressing mode, DHCP client options can be configured in the CLI. For example, a 
vendor class identifier (usually DCHP client option 60) can be specified so that a request can be matched by a specific 
DHCP offer.
Multiple options can be configured, but any options not recognized by the DHCP server are discarded.

To configure client option 60 - vendor class identifier:

config system interface


edit port1
set vdom vdom1
set mode dhcp
config client-options
edit 1
set code 60
set type hex
set value aabbccdd
next
end
set type physical
set snmp-index 4
next
end

Variable Description
code <integer> DHCP client option code (0 - 255, default = 0).

FortiOS 6.4.6 Administration Guide 496


Fortinet Technologies Inc.
Network

Variable Description

See Dynamic Host Configuration Protocol (DHCP) and Bootstrap Protocol 
(BOOTP) Parameters for a list of possible options.
type {hex | string | ip | DHCP client option type (default = hex).
fqdn}
value <string> DHCP client option value.
ip <ip> DHCP client option IP address. This option is only available when type is ip.

Static routing

Static routing is one of the foundations of firewall configuration. It is a form of routing in which a device uses manually-
configured routes. In the most basic setup, a firewall will have a default route to its gateway to provide network access. In 
a more complex setup with dynamic routing, ADVPN, or SD-WAN involved, you would still likely find static routes being 
deployed.
This section explores concepts in using static routing and provides examples in common use cases:
 l Routing concepts on page 498
 l Policy routes on page 507
 l Equal cost multi-path on page 510
 l Dual internet connections on page 514
The following topics include additional information about static routes:
 l Deploying the Security Fabric on page 178
 l Security Fabric over IPsec VPN on page 195
 l Viewing and controlling network risks via topology view on page 177
 l Adding a static route on page 565
 l Configure VDOM-A on page 807
 l Configure VDOM-A on page 817
 l IPsec VPN in an HA environment on page 1425
 l IPsec VPN to Azure with virtual network gateway on page 1357
 l FortiGate as dialup client on page 1378
 l ADVPN with BGP as the routing protocol on page 1489
 l ADVPN with OSPF as the routing protocol on page 1498
 l ADVPN with RIP as the routing protocol on page 1507
 l Basic site-to-site VPN with pre-shared key on page 1319
 l Site-to-site VPN with digital certificate on page 1324
 l Site-to-site VPN with overlapping subnets on page 1331
 l Tunneled Internet browsing on page 1408
 l FortiGate multiple connector support on page 1814
 l IPsec aggregate for redundancy and traffic load-balancing on page 1431
 l Use MAC addresses in SD-WAN rules and policy routes on page 613
 l Using BGP tags with SD-WAN rules on page 649

FortiOS 6.4.6 Administration Guide 497


Fortinet Technologies Inc.
Network

Routing concepts

This section contains the following topics:
 l Default route on page 498
 l Adding or editing a static route on page 498
 l Configuring FQDNs as a destination address in static routes on page 499
 l Routing table on page 499
 l Viewing the routing database on page 502
 l Kernel routing table on page 503
 l Route cache on page 504
 l Route look-up on page 505
 l Blackhole routes on page 505
 l Reverse path look-up on page 506
 l Asymmetric routing on page 506
 l Routing changes on page 507

Default route

The default route has a destination of 0.0.0.0/0.0.0.0, representing the least specific route in the routing table. It is 
a catch all route in the routing table when traffic cannot match a more specific route. Typically this is configured with a 
static route with an administrative distance of 10. In most instances, you will configure the next hop interface and the 
gateway address pointing to your next hop. If your FortiGate is sitting at the edge of the network, your next hop will be 
your ISP gateway. This provides internet access for your network.
Sometimes the default route is configured through DHCP. On some desktop models, the WAN interface is preconfigured 
in DHCP mode. Once the WAN interface is plugged into the network modem, it will receive an IP address, default 
gateway, and DNS server. FortiGate will add this default route to the routing table with a distance of 5, by default. This 
will take precedence over any default static route with a distance of 10. Therefore, take caution when you are configuring 
an interface in DHCP mode, where Retrieve default gateway from server is enabled. You may disable it and/or change 
the distance from the Network > Interfaces page when you edit an interface.

Adding or editing a static route

To add a static route using the GUI:

 1. Go to Network > Static Routes and click Create New. 


 2. Enter the following information:   

Dynamic Gateway When enabled, a selected DHCP/PPPoE interface will automatically retrieve 
its dynamic gateway.

Destination  l Subnet   
Enter the destination IP address and netmask. A value of 
0.0.0.0/0.0.0.0 creates a default route.
 l Named Address   
Select an address or address group object. Only addresses with static 
route configuration enabled will appear on the list. This means a 

FortiOS 6.4.6 Administration Guide 498


Fortinet Technologies Inc.
Network

geography type address cannot be used.
 l Internet Service   
Select an Internet Service. These are known IP addresses of popular 
services across the Internet.

Interface Select the name of the interface that the static route will connect through.

Gateway Address Enter the gateway IP address. When selecting an IPsec VPN interface or SD-
WAN creating a blackhole route, the gateway cannot be specified.

Administrative Distance Enter the distance value, which will affect which routes are selected first by 
different protocols for route management or load balancing. The default is 10.

Advanced Options Optionally, expand Advanced Options and enter a Priority. When two routes 


have an equal distance, the route with a lower priority number will take 
precedence. The default is 0.

 3. Click OK.

Configuring FQDNs as a destination address in static routes

You can configure FQDN firewall addresses as destination addresses in a static route, using either the GUI or the CLI.
In the GUI, to add an FQDN firewall address to a static route in the firewall address configuration, enable the Static
Route Configuration option. Then, when you configure the static route, set Destination to Named Address.

To configure an FQDN as a destination address in a static route using the CLI:

config firewall address


edit 'Fortinet-Documentation-Website'
set type fqdn
set fqdn docs.fortinet.com
set allow-routing enable
end
config router static
edit 0
set dstaddr Fortinet-Documentation-Website
...
end

Routing table

A routing table consists of only the best routes learned from the different routing protocols. The most specific route 
always takes precedence. If there is a tie, then   the route with a lower administrative distance will be injected into the 
routing table. If administrative distances are also equal, then all the routes are injected into the routing table, and Cost 
and Priority become the deciding factors on which a route is preferred. If these are also equal, then FortiGate will use 
Equal cost multi-path on page 510 to distribute traffic between these routes.

Viewing the routing table in the GUI

You can view routing tables in the FortiGate GUI  under Dashboard > Network > Static & Dynamic Routing by default. 


Expand the widget to see the full page. Additionally, if you want to convert the widget into a dashboard, click on the Save

FortiOS 6.4.6 Administration Guide 499


Fortinet Technologies Inc.
Network

as Monitor icon on the top right of the page.
You can also monitor policy routes by toggling from Static & Dynamic to Policy on the top right corner of the page. The 
active policy routes include policy routes that you created, SD-WAN rules, and Internet Service static routes. It also 
supports downstream devices in the Security Fabric.
The following figure show an example of the static and dynamic routes in the Routing Monitor:

To view more columns, right-click on the column header to select the columns to be displayed:

Field Description

IP Version Shows whether the route is IPv4 or IPv6.

Network The IP addresses and network masks of destination networks that the FortiGate can reach.

Gateway IP The IP addresses of gateways to the destination networks.

Interfaces The interface through which packets are forwarded to the gateway of the destination network.

Distance The administrative distance associated with the route. A lower value means the route is 
preferable compared to other routes to the same destination.

Type The type values assigned to FortiGate routes (Static, Connected, RIP, OSPF, or BGP):
 l Connected: All routes associated with direct connections to FortiGate interfaces
 l Static: The static routes that have been added to the routing table manually 
 l RIP: All routes learned through RIP
 l RIPNG: All routes learned through RIP version 6 (which enables the sharing of routes 
through IPv6 networks)
 l BGP: All routes learned through BGP

FortiOS 6.4.6 Administration Guide 500


Fortinet Technologies Inc.
Network

Field Description

 l OSPF: All routes learned through OSPF
 l OSPF6: All routes learned through OSPF version 6 (which enables the sharing of routes 
through IPv6 networks)
 l IS-IS: All routes learned through IS-IS
 l HA: RIP, OSPF, and BGP routes synchronized between the primary unit and the 
subordinate units of a high availability (HA) cluster. HA routes are maintained on 
subordinate units and are visible only if you're viewing the router monitor from a virtual 
domain that is configured as a subordinate virtual domain in a virtual cluster.

Metric The metric associated with the route type. The metric of a route influences how the FortiGate 
dynamically adds it to the routing table. The following are types of metrics and the protocols 
they are applied to:
 l Hop count: Routes learned through RIP
 l Relative cost: Routes learned through OSPF
 l Multi-Exit Discriminator (MED): Routes learned through BGP. By default, the MED value 
associated with a BGP route is zero. However, the MED value can be modified 
dynamically. If the value was changed from the default, the Metric column displays a non-
zero value.

Priority In static routes, priorities are 0 by default. When two routes have an equal distance, the route 
with the lower priority number will take precedence.

VRF Virtual routing and forwarding (VRF) allows multiple routing table instances to co-exist. VRF 
can be assigned to an Interface. Packets are only forwarded between interfaces with the 
same VRF.

Up Since The total accumulated amount of time that a route learned through RIP, OSPF, or BGP has 
been reachable.

Viewing the routing table in the CLI

Viewing the routing table using the CLI displays the same routes as you would see from the GUI.
If VDOMs are enabled on the FortiGate, all routing-related CLI commands must be run within a VDOM and not in the 
global context.

To view the routing table using the CLI:

# get router info routing-table all


Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default
Routing table for VRF=0
S* 0.0.0.0/0 [1/0] via 172.31.0.1, MPLS [1/0]
via 192.168.2.1, port1 [1/0] via 192.168.122.1, port2
S 1.2.3.4/32 [10/0] via 172.16.100.81, VLAN100
C 10.10.2.0/24 is directly connected, hub
C 10.10.2.1/32 is directly connected, hub
O 10.10.10.0/24 [110/101] via 192.168.2.1, port1, 01:54:18

FortiOS 6.4.6 Administration Guide 501


Fortinet Technologies Inc.
Network

C 10.253.240.0/20 is directly connected, wqt.root


S 110.2.2.122/32 [22/0] via 2.2.2.2, port2, [3/3]
C 172.16.50.0/24 is directly connected, WAN1-VLAN50
C 172.16.60.0/24 is directly connected, WAN2-VLAN60
C 172.16.100.0/24 is directly connected, VLAN100
C 172.31.0.0/30 is directly connected, MPLS
C 172.31.0.2/32 is directly connected, MPLS
B 192.168.0.0/24 [20/0] via 172.31.0.1, MPLS, 00:31:43
C 192.168.2.0/24 is directly connected, port1
C 192.168.20.0/24 is directly connected, port3
C 192.168.99.0/24 is directly connected, Port1-VLAN99
C 192.168.122.0/24 is directly connected, port2
Routing table for VRF=10
C 172.16.101.0/24 is directly connected, VLAN101

Examining an entry:

B 192.168.0.0/24 [20/0] via 172.31.0.1, MPLS, 00:31:43

Value Description
B BGP. The routing protocol used.
192.168.0.0/24 The destination of this route, including netmask.
[20/0] 20 indicates an administrative distance of 20 out of a range of 0 to 255.  0 is an additional 
metric associated with this route, such as in OSPF.
172.31.0.1 The gateway or next hop.
MPLS The interface that the route uses.

00:31:43 The age of the route in HH:MM:SS.

Viewing the routing database

The routing database consists of all learned routes from all routing protocols before they are injected into the routing 
table. This likely lists more routes than the routing table as it consists of routes to the same destinations with different 
distances. Only the best routes are injected into the routing table. However, it is useful to see all learned routes for 
troubleshooting purposes.

To view the routing database using the CLI:

# get router info routing-table database


Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
> - selected route, * - FIB route, p - stale info
Routing table for VRF=0
S *> 0.0.0.0/0 [1/0] via 172.31.0.1, MPLS
*> [1/0] via 192.168.2.1, port1
*> [1/0] via 192.168.122.1, port2
S *> 1.2.3.4/32 [10/0] via 172.16.100.81, VLAN100

FortiOS 6.4.6 Administration Guide 502


Fortinet Technologies Inc.
Network

C *> 10.10.2.0/24 is directly connected, hub


C *> 10.10.2.1/32 is directly connected, hub
O *> 10.10.10.0/24 [110/101] via 192.168.2.1, port1, 02:10:17
C *> 10.253.240.0/20 is directly connected, wqt.root
S *> 110.2.2.122/32 [22/0] via 2.2.2.2, port2, [3/3]
C *> 172.16.50.0/24 is directly connected, WAN1-VLAN50
C *> 172.16.60.0/24 is directly connected, WAN2-VLAN60
C *> 172.16.100.0/24 is directly connected, VLAN100
O 172.31.0.0/30 [110/201] via 192.168.2.1, port1, 00:47:36
C *> 172.31.0.0/30 is directly connected, MPLS

Selected routes are marked by the > symbol. In the above example, the OSPF route to destination 172.31.0.0/30 is 
not selected.

Kernel routing table

The kernel routing table makes up the actual Forwarding Information Base (FIB) that used to make forwarding decisions 
for each packet. The routes here are often referred to as kernel routes. Parts of this table are derived from the routing 
table that is generated by the routing daemon.

To view the kernel routing table using the CLI:

# get router info kernel


tab=254 vf=0 scope=0 type=1 proto=11 prio=0 0.0.0.0/0.0.0.0/0->0.0.0.0/0 pref=0.0.0.0
gwy=172.31.0.1 flag=04 hops=0 oif=31(MPLS) gwy=192.168.2.1 flag=04 hops=0 oif=3(port1)
gwy=192.168.122.1 flag=04 hops=0 oif=4(port2)
tab=254 vf=0 scope=0 type=1 proto=17 prio=0 192.168.122.98/255.255.255.255/0->1.1.1.1/32
pref=0.0.0.0 gwy=192.168.122.1 dev=4(port2)
tab=254 vf=0 scope=0 type=1 proto=17 prio=0 172.31.0.2/255.255.255.255/0->1.1.1.1/32
pref=0.0.0.0 gwy=172.31.0.1 dev=31(MPLS)
tab=254 vf=0 scope=0 type=1 proto=17 prio=0 192.168.2.5/255.255.255.255/0->1.1.1.1/32
pref=0.0.0.0 gwy=192.168.2.1 dev=3(port1)
tab=254 vf=0 scope=0 type=1 proto=11 prio=0 0.0.0.0/0.0.0.0/0->1.2.3.4/32 pref=0.0.0.0
gwy=172.16.100.81 dev=20(VLAN100)
tab=254 vf=0 scope=0 type=1 proto=17 prio=0 192.168.122.98/255.255.255.255/0->8.8.8.8/32
pref=0.0.0.0 gwy=192.168.122.1 dev=4(port2)

The kernel routing table entries are:

Value Description
tab Table number: It will either be 254 (unicast) or 255 (multicast).
vf Virtual domain of the firewall: It is the VDOM index number. If 
VDOMs are not enabled, this number is 0.
type Type of routing connection. Valid values include:
 l 0 - unspecific
 l 1 - unicast
 l 2 - local
 l 3 - broadcast
 l 4 - anycast
 l 5 - multicast
 l 6 - blackhole

FortiOS 6.4.6 Administration Guide 503


Fortinet Technologies Inc.
Network

Value Description

 l 7 - unreachable
 l 8 - prohibited
proto Type of installation that indicates where the route came from. 
Valid values include:
 l 0 - unspecific
 l 2 - kernel
 l 11 - ZebOS routing module
 l 14 - FortiOS
 l 15 - HA
 l 16 - authentication based
 l 17 - HA1
prio Priority of the route. Lower priorities are preferred.

->0.0.0.0/0 The IP address and subnet mask of the destination.
(->x.x.x.x/mask)

pref Preferred next hop along this route.
gwy Gateway: The address of the gateway this route will use.
dev Outgoing interface index: This number is associated with the 
interface for this route. If VDOMs are enabled, the VDOM is 
also included here. If an interface alias is set for this interface, it 
is also displayed here.

Route cache

The route cache contains recently used routing entries in a  table. It is consulted before the routing table to speed up the 
route look-up process.

To view the route cache using the CLI:

# diagnose ip rtcache list


family=02 tab=254 vrf=0 vf=0 type=01 tos=0 flag=00000200
0.0.0.0@0->208.91.113.230@3(port1) gwy=192.168.2.1 prefsrc=192.168.2.5
ci: ref=0 lastused=1 expire=0 err=00000000 used=5 br=0 pmtu=1500
family=02 tab=254 vrf=0 vf=0 type=01 tos=0 flag=00000200
192.168.2.5@0->8.8.8.8@3(port1) gwy=192.168.2.1 prefsrc=0.0.0.0
ci: ref=0 lastused=0 expire=0 err=00000000 used=2 br=0 pmtu=1500
family=02 tab=254 vrf=0 vf=0 type=02 tos=8 flag=80000200
8.8.8.8@31(MPLS)->172.31.0.2@6(root) gwy=0.0.0.0 prefsrc=172.31.0.2
ci: ref=1 lastused=0 expire=0 err=00000000 used=0 br=0 pmtu=16436
family=02 tab=254 vrf=0 vf=0 type=02 tos=0 flag=84000200
192.168.20.6@5(port3)->192.168.20.5@6(root) gwy=0.0.0.0 prefsrc=192.168.20.5
ci: ref=2 lastused=0 expire=0 err=00000000 used=1 br=0 pmtu=16436
...

The size of the route cache is calculated by the kernel. However, you can modify it.

FortiOS 6.4.6 Administration Guide 504


Fortinet Technologies Inc.
Network

To modify the size of the route cache:

# config system global


set max-route-cache-size <number_of_cache_entries>
end

Route look-up

Route look-up typically occurs twice in the life of a session. Once when the first packet is sent by the originator and once 
more when the first reply packet is sent from the responder. When a route look-up occurs, the routing information is 
written to the session table and the route cache. If routing changes occur during the life of a session, additional routing 
look-ups may occur.
FortiGate performs a route look-up in the following order:
 1. Policy-based routes: If a match occurs and the action is to forward, traffic is forwarded based on the policy route.
 2. Route Cache: If there are no matches, FortiGate looks for the route in the route cache.
 3. Forwarding Information Base, otherwise known as the kernel routing table.
 4. If no match occurs, the packet is dropped.

Searching the routing table

When there are many routes in your routing table, you can perform a quick search by using the search bar to specify your 
criteria, or apply filters on the column header to display only certain routes. For example, if you want to only display static 
routes, you may use "static" as the search term, or filter by the Type field with value Static.
Route look-up on the other hand provides a utility for you to enter criteria such as Destination, Destination Port, Source, 
Protocol and/or Source Interface, in order to determine the route that a packet will take. Once you click Search, the 
corresponding route will be highlighted.
You can also use the CLI for a route look-up. The CLI provides a basic route look-up tool.

To look-up a route using the CLI:

# get router info routing-table details 4.4.4.4


Routing table for VRF=0
Routing entry for 0.0.0.0/0
Known via "static", distance 1, metric 0, best
* 172.31.0.1, via MPLS distance 0
* 192.168.2.1, via port1 distance 0
* 192.168.122.1, via port2 distance 0

Blackhole routes

Sometimes upon routing table changes, it is not desirable for traffic to be routed to a different gateway. For example, you 
may have traffic destined for a remote office routed through your IPsec VPN interface. When the VPN is down, traffic will 
try to re-route to another interface. However, this may not be viable and traffic will instead be routed to your default route 
through your WAN, which is not desirable. Traffic may also be routed to another VPN, which you do not want. For such 
scenarios, it is good to define a blackhole route so that traffic is dropped when your desired route is down. Upon 
reconnection, your desired route is once again added to the routing table and your traffic will resume routing to your 
desired interface. For this reason, blackhole routes are created when you configure an IPsec VPN using the IPsec 
wizard.

FortiOS 6.4.6 Administration Guide 505


Fortinet Technologies Inc.
Network

To create a blackhole route from the GUI:

 1. Go to Network > Static Routes.


 2. Click Create New. The New Static Route screen appears.
 3. Specify a Destination type.
 4. Select Blackhole from the Interface field.
 5. Type the desired Administrative Distance.
 6. Click OK.

Route priority for a Blackhole route can only be configured from the CLI.

Reverse path look-up

Whenever a packet arrives at one of the interfaces on a FortiGate, the FortiGate determines whether the packet was 
received on a legitimate interface by doing a reverse look-up using the source IP address in the packet header. This 
protects against IP spoofing attacks. If the FortiGate does not have a route to the source IP address through the interface 
on which the packet was received, the FortiGate drops the packet as per Reverse Path Forwarding (RPF) check. There 
are two modes of RPF – feasible path and strict. The default feasible RPF mode checks only for the existence of at least 
one active route back to the source using the incoming interface. The strict RPF check ensures the best route back to the 
source is used as the incoming interface.

To configure a strict Reverse Path Forwarding check using the CLI:

# config system settings


set strict-src-check enable
end

You can remove RPF state checks without needing to enable asymmetric routing by disabling state checks for traffic 
received on specific interfaces. Disabling state checks makes a FortiGate less secure and should only be done with 
caution for troubleshooting purposes.

To remove Reverse Path Forwarding checks from the state evaluation process using the CLI:

# config system interface


edit <interface_name>
set src-check disable
next
end

Asymmetric routing

The firewall tries to ensure symmetry in its traffic by using the same source-destination combination in the original and 
reverse path. Asymmetric routing occurs when traffic in the returning direction takes a different path than the original. 
There may be various scenarios in which this happens. For example, traffic in the original direction hits the firewall on 

FortiOS 6.4.6 Administration Guide 506


Fortinet Technologies Inc.
Network

port1, and is routed to port2. However, returning traffic is received on  port3 instead. In this scenario, asymmetric 
routing occurs and the returning traffic is blocked.
If for some specific reason it is required that a FortiGate unit should permit asymmetric routing, you can configure it by 
using CLI commands per VDOM.

To configure asymmetric routing per VDOM by using the CLI:

# config vdom
edit <vdom_name>
config system settings
set asymroute enable
end
next
end

Routing changes

When routing changes occur, routing look-up may occur on an existing session depending on certain configurations.

Routing Changes without SNAT

When a routing change occurs, FortiGate flushes all routing information from the session table and performs new routing 
look-up for all new packets on arrival by default. You can modify the default behavior using the following commands:
# config system interface
edit <interface>
set preserve-session-route enable
next
end

By enabling preserve-session-route, the FortiGate marks existing session routing information as persistent. 
Therefore, routing look-up only occurs on new sessions.

Routing Changes with SNAT

When SNAT is enabled, the default behavior is opposite to that of when SNAT is not enabled. After a routing change 
occurs, sessions with SNAT keep using the same outbound interface as long as the old route is still active. This may be 
the case if the priority of the static route was changed. You can modify this default behavior using the following 
commands:
# config system global
set snat-route-change enable
end

By enabling snat-route-change,  sessions with SNAT will require new route look-up when a routing change occurs. 
This will apply a new SNAT to the session.

Policy routes

Policy routing allows you to specify an interface to route traffic. This is useful when you need to route certain types of 
network traffic differently than you would if you were using the routing table. You can use the incoming traffic's protocol, 
source or destination address, source interface, or port number to determine where to send the traffic.

FortiOS 6.4.6 Administration Guide 507


Fortinet Technologies Inc.
Network

When a packet arrives, the FortiGate starts at the top of the policy route list and attempts to match the packet with a 
policy. For a match to be found, the policy must contain enough information to route the packet. At a minimum, this 
requires the outgoing interface to forward the traffic, and the gateway to route the traffic to. If one or both of these are not 
specified in the policy route, then the FortiGate searches the routing table to find the best active route that corresponds 
to the policy route. If no routes are found in the routing table, then the policy route does not match the packet. The 
FortiGate continues down the policy route list until it reaches the end. If no matches are found, then the FortiGate does a 
route lookup using the routing table.

Policy routes are sometimes referred to as Policy-based routes (PBR).

Configuring a policy route

In this example, a policy route is configured to send all FTP traffic received at port1 out through port4 and to a next hop 
router at 172.20.120.23. To route FTP traffic, the protocol is set to TCP (6) and  the destination ports are set to 21 (the 
FTP port). 

To configure a policy route in the GUI:

 1. Go to Network > Policy Routes.


 2. Click Create New > Policy Route.
 3. Configure the following fields:

Incoming interface port1

Source Address 0.0.0.0/0.0.0.0

Destination Address 0.0.0.0/0.0.0.0

Protocol TCP

Destination ports 21 - 21

Type of service 0x00

Bit Mask 0x00

Outgoing interface Enable and select port4

Gateway address 172.20.120.23

FortiOS 6.4.6 Administration Guide 508


Fortinet Technologies Inc.
Network

 4. Click OK.

To configure a policy route in the CLI:

config router policy


edit 1
set input-device "port1"
set src "0.0.0.0/0.0.0.0"
set dst "0.0.0.0/0.0.0.0"
set protocol 6
set start-port 21
set end-port 21
set gateway 172.20.120.23
set output-device "port4"
set tos 0x00
set tos-mask 0x00
next
end

Moving a policy route

A routing policy is added to the bottom of the table when it is created. Routing policies can be moved to a different 
location in the table to change the order of preference. In this example, routing policy 3 will be moved before routing 
policy 2.

To move a policy route in the GUI:

 1. Go to Network > Policy Routes.


 2. In the table, select the policy route.

FortiOS 6.4.6 Administration Guide 509


Fortinet Technologies Inc.
Network

 3. Drag the selected policy route to the desired position.

To move a policy route in the CLI:

config router policy


move 3 after 1
end

Policy routes on return traffic

If a policy route is configured to match return traffic, the policy route will not be checked.

For example: traffic from the client to the servers enters the FortiGate on either port1 or port2, and a policy route is 
defined to match traffic that is sent from the servers' subnet to port2.  The return traffic will not be checked against the 
policy route.
If auxiliary session is enabled, the traffic will egress from an interface based on the best route. If auxiliary session is 
disable, traffic will egress on the same interface where the incoming traffic arrived .
For more information, see Controlling return path with auxiliary session on page 791.

Equal cost multi-path

Equal cost multi-path (ECMP) is a mechanism that allows a FortiGate to load-balance routed traffic over multiple 
gateways. Just like routes in a routing table, ECMP is considered after policy routing, so any matching policy routes will 
take precedence over ECMP.
ECMP pre-requisites are as follows:
 l Routes must have the same destination and costs. In the case of static routes, costs include distance and priority
 l Routes are sourced from the same routing protocol. Supported protocols include static routing, OSPF, and BGP

ECMP and SD-WAN implicit rule

ECMP and SD-WAN implicit rule are essentially similar in the sense that an SD-WAN implicit rule is processed after SD-
WAN service rules are processed. See Implicit rule on page 599 to learn more.
The following table summarizes the different load-balancing algorithms supported by each:

FortiOS 6.4.6 Administration Guide 510


Fortinet Technologies Inc.
Network

ECMP SD-WAN Description

(GUI) (CLI)
source-ip-based Source IP source-ip-based Traffic is divided equally between the 
interfaces. Sessions that start at the same 
source IP address use the same path. 
This is the default selection.
weight-based Sessions  weight-based The workload is distributed based on the 
number of sessions that are connected 
through the interface.
The weight that you assign to each interface 
is used to calculate the percentage of the 
total sessions  allowed to connect through an 
interface, and the sessions are distributed to 
the interfaces accordingly.
usage-based Spillover  usage-based The interface is used until the traffic 
bandwidth exceeds the ingress and egress 
thresholds that you set for that interface. 
Additional traffic is then sent through the next 
interface member.
source-dest-ip- Source-Destination  source-dest-ip- Traffic is divided equally between the 
based IP based interfaces. Sessions that start at the same 
source IP address and go to the same 
destination IP address use the same path.

Not supported Volume  measured-volume- This mode is supported in SD-WAN only.


based
The workload is distributed based on the 
number of packets that are going through the 
interface.

To configure the ECMP algorithm from the CLI:

 l At the VDOM-level:   
config system settings
set v4-ecmp-mode {source-ip-based* | weight-based | usage-based | source-dest-ip-
based}
end
 l If SD-WAN is enabled, the above option is not available and ECMP is configured under the SD-WAN settings:   
config system sdwan
set sdwan enable
set load-balance-mode {source-ip-based* | weight-based | usage-based | source-dest-ip-
based | measured-volume-based}
end

For ECMP in IPv6, the mode must also be configured under SD-WAN.
# diagnose sys vd list
system fib version=63
list virtual firewall info:
name=root/root index=0 enabled fib_ver=40 use=168 rt_num=46 asym_rt=0 sip_helper=0, sip_nat_
trace=1, mc_fwd=0, mc_ttl_nc=0, tpmc_sk_pl=0

FortiOS 6.4.6 Administration Guide 511


Fortinet Technologies Inc.
Network

ecmp=source-ip-based, ecmp6=source-ip-based asym_rt6=0 rt6_num=55 strict_src_check=0 dns_


log=1 ses_num=20 ses6_num=0 pkt_num=19154477

To change the number of paths allowed by ECMP:

config system settings


set ecmp-max-paths <number of paths>
end

Setting ecmp-max-paths to the lowest value of 1 is equivalent to disabling ECMP.

ECMP configuration examples

The following examples demonstrate the behavior of ECMP in different scenarios:
 l Example 1: Default ECMP on page 512
 l Example 2: Same distance, different priority on page 513
 l Example 3: Weight-based ECMP on page 513
 l Example 4: Load-balancing BGP routes on page 514

Example 1: Default ECMP


config router static
edit 1
set gateway 172.16.151.1
set device "port1"
next
edit 2
set gateway 192.168.2.1
set device "port2"
next
end

# get router info routing-table all


Routing table for VRF=0
S* 0.0.0.0/0 [10/0] via 172.16.151.1, port1
[10/0] via 192.168.2.1, port2
C 172.16.151.0/24 is directly connected, port1
C 192.168.2.0/24 is directly connected, port2

FortiOS 6.4.6 Administration Guide 512


Fortinet Technologies Inc.
Network

Result:

Both routes are added to the routing table and load-balanced based on the source IP.

Example 2: Same distance, different priority


config router static
edit 1
set gateway 172.16.151.1
set priority 5
set device "port1"
next
edit 2
set gateway 192.168.2.1
set device "port2"
next
end

# get router info routing-table all


Routing table for VRF=0
S* 0.0.0.0/0 [10/0] via 192.168.2.1, port2
[10/0] via 172.16.151.1, port1, [5/0]
C 172.16.151.0/24 is directly connected, port1
C 192.168.2.0/24 is directly connected, port2

Result:

Both routes are added to the routing table, but traffic is routed to port2 which has a lower priority value with a default of 
0.

Example 3: Weight-based ECMP


config router static
edit 3
set dst 10.10.30.0 255.255.255.0
set weight 80
set device "vpn2HQ1"
next
edit 5
set dst 10.10.30.0 255.255.255.0
set weight 20
set device "vpn2HQ2"
next
end

# get router info routing-table all


Routing table for VRF=0
...
S 10.10.30.0/24 [10/0] is directly connected, vpn2HQ1, [0/80]
[10/0] is directly connected, vpn2HQ2, [0/20]
C 172.16.151.0/24 is directly connected, port1
C 192.168.0.0/24 is directly connected, port3
C 192.168.2.0/24 is directly connected, port2

FortiOS 6.4.6 Administration Guide 513


Fortinet Technologies Inc.
Network

Result:

Both routes are added to the routing table, but 80% of the sessions to 10.10.30.0/24 are routed to vpn2HQ1, and 
20% are routed to vpn2HQ2.

Example 4: Load-balancing BGP routes


config router bgp
set as 64511
set router-id 192.168.2.86
set ebgp-multipath enable
config neighbor
edit "192.168.2.84"
set remote-as 64512
next
edit "192.168.2.87"
set remote-as 64512
next
end
end

# get router info routing-table all


Routing table for VRF=0
...
C 172.16.151.0/24 is directly connected, port1
C 192.168.0.0/24 is directly connected, port3
C 192.168.2.0/24 is directly connected, port2
B 192.168.80.0/24 [20/0] via 192.168.2.84, port2, 00:00:33
[20/0] via 192.168.2.87, port2, 00:00:33

Result:

The network 192.168.80.0/24 is advertised by two BGP neighbors. Both routes are added to the routing table, and 
traffic is load-balanced based on Source IP. 
For multiple BGP paths to be added to the routing table, you must enable ebgp-multipath for eBGP or ibgp-
multipath for iBGP. These settings are disabled by default.

Dual internet connections

Dual internet connections, also referred to as dual WAN or redundant internet connections, refers to using two FortiGate 
interfaces to connect to the Internet. This is generally accomplished with SD-WAN, but this legacy solution provides the 
means to configure dual WAN without using SD-WAN. You can use dual internet connections in several ways:
 l Link redundancy: If one interface goes down, the second interface automatically becomes the main connection.
 l Load sharing: This ensures better throughput.
 l Use a combination of link redundancy and load sharing.

FortiOS 6.4.6 Administration Guide 514


Fortinet Technologies Inc.
Network

This section describes the following dual internet connection scenarios:
 l Scenario 1: Link redundancy and no load-sharing on page 515
 l Scenario 2: Load-sharing and no link redundancy on page 517
 l Scenario 3: Link redundancy and load-sharing on page 519

Scenario 1: Link redundancy and no load-sharing

Link redundancy ensures that if your Internet access is no longer available through a certain port, the FortiGate uses an 
alternate port to connect to the Internet.
In this scenario, two interfaces, WAN1 and WAN2, are connected to the Internet using two different ISPs. WAN1 is the 
primary connection. In the event of a failure of WAN1, WAN2 automatically becomes the connection to the Internet. For 
this configuration to function correctly, you must configure the following settings:
 l Link health monitor on page 515: To determine when the primary interface (WAN1) is down and when the 
connection returns.
 l Routing on page 516: Configure a default route for each interface.
 l Security policies on page 517: Configure security policies to allow traffic through each interface to the internal 
network.

Link health monitor

Adding a link health monitor is required for routing failover traffic. A link health monitor confirms the device interface 
connectivity by probing a gateway or server at regular intervals to ensure it is online and working. When the server is not 
accessible, that interface is marked as down.
Set the interval (how often to send a ping) and failtime (how many lost pings are considered a failure). A smaller 
interval value and smaller number of lost pings results in faster detection, but creates more traffic on your network.
The link health monitor supports both IPv4 and IPv6, and various other protocols including ping, tcp-echo, udp-echo, 
http, and twamp.

FortiOS 6.4.6 Administration Guide 515


Fortinet Technologies Inc.
Network

To add a link health monitor (IPv4) using the CLI:

config system link-monitor


edit <link-monitor-name>
set addr-mode ipv4
set srcintf <interface-name>
set server <server-IP-address>
set protocol {ping tcp-echo udp-echo http twamp}
set gateway-ip <gateway-IP-address>
set interval <seconds>
set failtime <retry-attempts>
set recoverytime <number-of-successful-responses>
set status enable
next
end

Option Description
set update-cascade-interface {enable | This option is used in conjunction with fail-detect and fail-
disable} alert options in interface settings to cascade the link 
failure down to another interface. See the Bring other 
interfaces down when link monitor fails KB article for 
details.
set update-static-route {enable | When the link fails, all static routes associated with the 
disable} interface will be removed.

Routing

You must configure a default route for each interface and indicate your preferred route as follows:
 l Specify different distances for the two routes. The lower of the two distance values is declared active and placed in 
the routing table
OR
 l Specify the same distance for the two routes, but give a higher priority to the route you prefer  by defining a lower 
value. Both routes will be added to the routing table, but the route with a higher priority will be chosen as the best 
route
In the following example, we will use the first method to configure different distances for the two routes. You might not be 
able to connect to the backup WAN interface because the FortiGate does not route traffic out of the backup interface. 
The FortiGate performs a reverse path look-up to prevent spoofed traffic. If an entry cannot be found in the routing table 
that sends the return traffic out through the same interface, the incoming traffic is dropped.

To configure the routing of the two interfaces using the GUI:

 1. Go to Network > Static Routes, and click Create New.


 2. Enter the following information:

Destination For an IPv4 route, enter a subnet of 0.0.0.0/0.0.0.0.
For an IPv6 route, enter a subnet of ::/0.

Interface Select the primary connection. For example, wan1.

FortiOS 6.4.6 Administration Guide 516


Fortinet Technologies Inc.
Network

Gateway Address Enter the gateway address.

Administrative Distance Leave as the default of 10.

 3. Click OK.
 4. Repeat the above steps to set Interface to wan2 and Administrative Distance to 20.

To configure the routing of the two interfaces using the CLI:

config router {static | static6}


edit 0
set dst 0.0.0.0 0.0.0.0
set device wan1
set gateway <gateway_address>
set distance 10
next
edit 0
set dst 0.0.0.0 0.0.0.0
set device wan2
set gateway <gateway_address>
set distance 20
next
end

Security policies

When you create security policies, you need to configure duplicate policies to ensure that after traffic fails over WAN1, 
regular traffic is allowed to pass through WAN2, as it did with WAN1. This ensures that failover occurs with minimal effect 
to users.

Scenario 2: Load-sharing and no link redundancy

Load sharing may be accomplished in a few of the following ways of the many possible ways:
 l By defining a preferred route with a lower distance, and specifying policy routes to route certain traffic to the 
secondary interface.
 l By defining routes with same distance values but different priorities, and specifying policy routes to route certain 
traffic to the secondary interface.
 l By defining routes with same distance values and priorities, and use equal-cost multi-path (ECMP) routing to 
equally distribute traffic between the WAN interfaces.
In our example, we will use the first option for our configuration. In this scenario, because link redundancy is not required, 
you do not have to configure a link monitor.

Traffic behaviour without a link monitor is as follows:
 l If the remote gateway is down but the primary WAN interface of a FortiGate is still up, the 
FortiGate will continue to route traffic to the primary WAN. This results in traffic 
interruptions.
 l If the primary WAN interface of a FortiGate is down due to physical link issues, the 
FortiGate will remove routes to it and the secondary WAN routes will become active. 
Traffic will failover to the secondary WAN.

FortiOS 6.4.6 Administration Guide 517


Fortinet Technologies Inc.
Network

Routing

Configure routing as you did in Scenario 1: Link redundancy and no load-sharing on page 515 above.

Policy routes

By configuring policy routes, you can redirect specific traffic to the secondary WAN interface. This works in this case 
because policy routes are checked before static routes. Therefore, even though the static route for the secondary WAN 
is not in the routing table, traffic can still be routed using the policy route.
In this example, we will create a policy route to route traffic from one address group to the secondary WAN interface.

To configure a policy route from the GUI:

 1. Go to Network > Policy Routes, and click Create New.


 2. Enter the following information:   

Incoming interface Define the source of the traffic. For example, internal.

Source Address If we prefer to route traffic only from a group of addresses, define an address or 
address group, and add here.

Destination Address Because we want to route all traffic from the address group here, we do not specify a 
destination address.

Protocol Specify any protocol.

Action Forward traffic.

Outgoing interface Select the secondary WAN as the outbound interface. For example, wan2.

Gateway address Input the gateway address for your secondary WAN.
Because its default route has a higher distance value and is not added to the routing 
table, the gateway address must be added here.

 3. Click OK.

To configure a policy route from the CLI:

config router policy


edit 1
set input-device "internal"
set srcaddr "Laptops"
set gateway <gateway_address>
set output-device "wan2"
next
end

Security policies

Your security policies should allow all traffic from internal to WAN1. Because link redundancy is not needed, you do 
not need to duplicate all WAN1 policies to WAN2. You will only need to define policies used in your policy route.

FortiOS 6.4.6 Administration Guide 518


Fortinet Technologies Inc.
Network

Scenario 3: Link redundancy and load-sharing

In this scenario, both the links are available to distribute Internet traffic with the primary WAN being preferred more. 
Should one of the interfaces fail, the FortiGate will continue to send traffic over the other active interface. The 
configuration is a combination of both the link redundancy and the load-sharing scenarios. The main difference is that 
the configured routes have equal distance values, with the route with a higher priority being preferred more. This ensures 
both routes are active in the routing table, but the route with a higher priority will be the best route.

Link health monitor

Link monitor must be configured for both the primary and the secondary WAN interfaces. This ensures that if the primary 
or the secondary WAN fails, the corresponding route is removed from the routing table and  traffic re-routed to the other 
WAN interface.
For configuration details, see sample configurations in Scenario 1: Link redundancy and no load-sharing on page 515.

Routing

Both WAN interfaces must have default routes with the same distance. However, preference is given to the primary 
WAN by giving it a higher priority.

To configure the routing of the two interfaces using the CLI:

config router {static | static6}


edit 0
set dst 0.0.0.0 0.0.0.0
set device wan1
set gateway <gateway_address>
set distance 10
set priority 0
next
edit 0
set dst 0.0.0.0 0.0.0.0
set device wan2
set gateway <gateway_address>
set distance 10
set priority 10
next
end

Policy routes

The policy routes configuration is very similar to that of the policy routes in Scenario 2: Load-sharing and no link 
redundancy on page 517, except that the gateway address should not be specified. When a policy route is matched and 
the gateway address is not specified, the FortiGate looks at the routing table to obtain the gateway. In case the 
secondary WAN fails, traffic may hit the policy route. Because there is no gateway specified and the route to the 
secondary WAN is removed by the link monitor, the policy route will by bypassed and traffic will continue through the 
primary WAN. This ensures that the policy route is not active when the link is down.

FortiOS 6.4.6 Administration Guide 519


Fortinet Technologies Inc.
Network

Security policies

When you create security policies, you need to configure duplicate policies to ensure that after traffic fails over WAN1, 
regular traffic is allowed to pass through WAN2, as it was with WAN1. This ensures that failover occurs with minimal 
effect to users.

RIP

The following topics include information about Routing Information Protocol (RIP):

 l ADVPN with RIP as the routing protocol on page 1507

OSPF

The following topics include information about Open Shortest Path First (OSPF):

 l OSPF with IPsec VPN for network redundancy on page 1418
 l IPsec aggregate for redundancy and traffic load-balancing on page 1431
 l ADVPN with OSPF as the routing protocol on page 1498

BGP

The following topics include information about Border Gateway Protocol (BGP):

 l ADVPN and shortcut paths on page 670
 l ADVPN with BGP as the routing protocol on page 1489
 l Applying BGP route-map to multiple BGP neighbors on page 661
 l BGP multiple path support on page 652
 l Configuring RADIUS SSO authentication on page 1699
 l Controlling traffic with BGP route mapping and service rules on page 655
 l IBGP and EBGP support in VRF on page 667
 l IKEv2 IPsec site-to-site VPN to an AWS VPN gateway on page 1351
 l Route leaking between VRFs on page 536
 l SD-WAN related diagnose commands on page 754
 l Using BGP tags with SD-WAN rules on page 649

Multicast

The following topics include information about multicast:

FortiOS 6.4.6 Administration Guide 520


Fortinet Technologies Inc.
Network

 l Multicast routing and PIM support on page 521
 l Configuring multicast forwarding on page 521

Multicast routing and PIM support

Multicasting (also called IP multicasting) consists of using a single multicast source to send data to many receivers. 
Multicasting can be used to send data to many receivers simultaneously while conserving bandwidth and reducing 
network traffic. Multicasting can be used for one-way delivery of media streams to multiple receivers and for one-way 
data transmission for news feeds, financial information, and so on. Many dynamic routing protocols such as RIPv2, 
OSPF, and EIGRP use multicasting to share hello packets and routing information.
A FortiGate can operate as a Protocol Independent Multicast (PIM) version 2 router. FortiGates support PIM sparse 
mode (RFC 4601) and PIM dense mode (RFC 3973), and can service multicast servers or receivers on the network 
segment to which a FortiGate interface is connected. Multicast routing is not supported in transparent mode.
To support PIM communications, the sending and receiving applications, and all connecting PIM routers in between, 
must be enabled with PIM version 2. PIM can use static routes, RIP, OSPF, or BGP to forward multicast packets to their 
destinations. To enable source-to-destination packet delivery, sparse mode or dense mode must be enabled on the PIM 
router interfaces. Sparse mode routers cannot send multicast messages to dense mode routers. If the FortiGate is 
located between a source and a PIM router, between two PIM routers, or is connected directly to a receiver, you must 
manually create a multicast policy to pass encapsulated (multicast) packets or decapsulated data (IP traffic) between the 
source and destination.

PIM domains

A PIM domain is a logical area comprising a number of contiguous networks. The domain contains at least one bootstrap 
router (BSR), and if sparse mode is enabled, a number of rendezvous points (RPs) and designated routers (DRs). When 
PIM is enabled, the FortiGate can perform any of these functions at any time as configured.
A PIM domain can be configured in the GUI by going to Network > Multicast, or in the CLI using config router
multicast. Note that PIM version 2 must be enabled on all participating routers between the source and receivers. Use 
config router multicast to set the global operating parameters.
When PIM is enabled, the FortiGate allocates memory to manage mapping information. The FortiGate communicates 
with neighboring PIM routers to acquire mapping information and, if required, processes the multicast traffic associated 
with specific multicast groups.
Instead of sending multiple copies of generated IP traffic to more than one specific IP destination address, PIM-enabled 
routers encapsulate the data and use a Class D multicast group address (224.0.0.0 to 239.255.255.255) to forward 
multicast packets to multiple destinations. A single stream of data can be sent because one destination address is used. 
Client applications receive multicast data by requesting that the traffic destined for a certain multicast group address be 
delivered to them.

Configuring multicast forwarding

There is sometimes confusion between the terms forwarding and routing. These two functions should not take place at 
the same time. Multicast forwarding should be enabled when the FortiGate is in NAT mode and you want to forward 
multicast packets between multicast routers and receivers. However, this function should not be enabled when the 
FortiGate itself is operating as a multicast router, or has an applicable routing protocol that uses multicast.

FortiOS 6.4.6 Administration Guide 521


Fortinet Technologies Inc.
Network

Multicast forwarding is not supported on enhanced MAC VLAN interfaces. To use multicast with enhanced MAC VLAN 
interfaces, use PIM (Multicast routing and PIM support on page 521).
There are two steps to configure multicast forwarding:
 1. Enable multicast forwarding
 2. Configure multicast policies

Enabling multicast forwarding

Multicast forwarding is enabled by default. If a FortiGate is operating in transparent mode, adding a multicast policy 
enables multicast forwarding. In NAT mode you must use the multicast-forward setting to enable or disable 
multicast forwarding. 

Multicast forwarding in NAT mode

When multicast-forward is enabled, the FortiGate forwards any multicast IP packets in which the TTL is 2 or higher 
to all interfaces and VLAN interfaces, except the receiving interface. The TTL in the IP header will be reduced by 1. Even 
though the multicast packets are forwarded to all interfaces, you must add multicast policies to allow multicast packets 
through the FortiGate.

To enable multicast forwarding in NAT mode:

config system settings


set multicast-forward enable
end

Prevent the TTL for forwarded packets from being changed

You can use the multicast-ttl-notchange option so that the FortiGate does not increase the TTL value for 
forwarded multicast packets. Use this option only if packets are expiring before reaching the multicast router.

To prevent the TTL for forwarded packets from being changed:

config system settings


set multicast-ttl-notchange enable
end

Disable multicast traffic from passing through the FortiGate without a policy check in
transparent mode

In transparent mode, the FortiGate does not forward frames with multicast destination addresses. The FortiGate should 
not interfere with the multicast traffic used by routing protocols, streaming media, or other multicast communication. To 
avoid any issues during transmission, you can disable multicast-skip-policy and configure multicast security 
policies.

To disable multicast traffic from passing through the FortiGate without a policy check in transparent
mode:

config system settings


set multicast-skip-policy disable

FortiOS 6.4.6 Administration Guide 522


Fortinet Technologies Inc.
Network

end

Configuring multicast policies

Multicast packets require multicast policies to allow packets to pass from one interface to another. Similar to firewall 
policies, in a multicast policy you specify the source and destination interfaces, and the allowed address ranges for the 
source and destination addresses of the packets. You can also use multicast policies to configure source NAT and 
destination NAT for multicast packets.
Keep the following in mind when configuring multicast policies:
 l The matched forwarded (outgoing) IP multicast source IP address is changed to the configured IP address.
 l The snat setting is optional. Use it when SNAT is needed.

Sample basic policy

In this basic policy, multicast packets received on an interface are flooded unconditionally to all interfaces on the 
forwarding domain, except the incoming interface.
config firewall multicast-policy
edit 1
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
next
end

The destination address (dstaddr) is a multicast address object. The all option corresponds to all multicast addresses 
in the range 224.0.0.0-239.255.255.255.

Sample policy with specific source and destination interfaces

This multicast policy only applies to the source port wan1 and the destination port internal.
config firewall multicast-policy
edit 1
set srcintf "wan1"
set dstintf "internal"
set srcaddr "all"
set dstaddr "all"
next
end

Sample policy with specific source address object

In this policy, packets are allowed to flow from wan1 to internal, and sourced by the address 172.20.120.129, which is 
represented by the example_addr-1 address object.
config firewall multicast-policy
edit 1
set srcintf "wan1"
set dstintf "internal"
set srcaddr "example_addr-1"
set dstaddr "all"

FortiOS 6.4.6 Administration Guide 523


Fortinet Technologies Inc.
Network

next
end

Sample detailed policy

This policy accepts multicast packets that are sent from a PC with IP address 192.168.5.18 to destination address range 
239.168.4.0-255. The policy allows the multicast packets to enter the internal interface and then exit the external 
interface. When the packets leave the external interface, their source address is translated to 192.168.18.10.
config firewall address
edit "192.168.5.18"
set subnet 192.168.5.18 255.255.255.255
next
end
config firewall multicast-address
edit "239.168.4.0"
set start-ip 239.168.4.0
set end-ip 239.168.4.255
next
end
config firewall multicast-policy
edit 1
set srcintf "internal"
set dstintf "external"
set srcaddr "192.168.5.18"
set dstaddr "239.168.4.0"
set snat enable
set snat-ip 192.168.18.10
next
end

To configure multicast policies in the GUI, enable Multicast Policy in System > Feature


Visibility.

FortiExtender

The following topics include information about FortiExtender:
 l FortiExtender models with two modems on page 524
 l Data plan profiles on page 528

FortiExtender models with two modems

FortiExtender models such as the FEX-202E and FEX-212E have two modems. Both modems can be configured so 
virtual interfaces can be associated to them. The following example uses an FEX-212E.

FortiOS 6.4.6 Administration Guide 524


Fortinet Technologies Inc.
Network

To configure the FortiExtender in the GUI:

 1. Configure the two modems:
 a. Go to Network > FortiExtender and in the top menu, click Extenders.
 b. Double-click the device to edit the settings.
 c. In the State section, ensure the Authorized toggle is enabled.
 d. In the Modem 1 section, in Interface dropdown, click + Create.
 e. Enter a name and configure the other settings as needed.
 f. Click OK.
 g. In the Interface dropdown, select the newly created interface.
 h. Repeat these steps for the Modem 2 section.
The FortiExtender now provides two virtual interfaces (fext and fext2) that will be used in the virtual WAN link 
interface.

 2. In the right panel, click Diagnostics and Tools  to view more details:


 a. Click Modems to review the modem status.

FortiOS 6.4.6 Administration Guide 525


Fortinet Technologies Inc.
Network

 b. Click SIM Status to review the SIM status.

 3. Configure the virtual WAN link:
 a. Go to Network > SD-WAN Zones and click Create New > SD-WAN Member.
 b. For Interface, select the modem 1 interface (fext) and ensure the Status is enabled.
 c. Click OK.
 d. Repeat these steps for the modem 2 interface (fext2). 

 4. Configure the default static route:
 a. Go to Network > Static Routes and edit the 0.0.0.0/0 route.
 b. For Interface, select SD-WAN.
 c. Ensure the Status is enabled.
 d. Click OK.
 5. Configure the firewall policy:
 a. Go to Policy & Objects > Firewall Policy and click Create New.
 b. For Outgoing Interface, select virtual-wan-link.
 c. Configure the other settings as needed.
 d. Click OK.

To configure the FortiExtender in the CLI:

 1. Configure the two modems:
config extender-controller extender
edit "FX212E5919000000"
set id "FX212E5919000000"
set authorized enable
config modem1
set ifname "fext"
config auto-switch
set disconnect enable

FortiOS 6.4.6 Administration Guide 526


Fortinet Technologies Inc.
Network

set signal enable


set dataplan enable
set switch-back-time "0:1 "
end
end
config modem2
set ifname "fext2"
config auto-switch
set dataplan enable
set switch-back-time "0:1 "
end
end
next
end

The FortiExtender now provides two virtual interfaces (fext and fext2) that will be used in the virtual WAN link 
interface.
 2. Verify the modem settings:
get extender modem-status FX212E5919000000 1
Modem 0:
physical_port: 2-1.2
manufacture: Sierra Wireless, Incorporated
product: Sierra Wireless, Incorporated
....

 3. Configure the virtual WAN link:
config system sdwan
set status enable
config zone
edit "virtual-wan-link"
next
end
config members
edit 1
set interface "fext"
next
edit 2
set interface "fext2"
next
end
end

 4. Configure the default static route:
config router static
edit 2
set distance 1
set sdwan enable
next
end

 5. Configure the firewall policy:
config firewall policy
edit 1
set name "fext-traffic"

FortiOS 6.4.6 Administration Guide 527


Fortinet Technologies Inc.
Network

set srcintf "wan1"


set dstintf "virtual-wan-link"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

Data plan profiles

The data plan profile allows users to configure connectivity settings based on modem, carrier, slot, SIM ID, or cost. Users 
can also specify billing details related to the data plan, as well as smart switch thresholds to define when to switch over to 
a different SIM.
A FortiExtender has multiple SIM card slots. Certain models also have multiple modems. Essentially, each modem can 
make one connection with one of the two SIMs associated with the modem. The data plan profile allows users to create 
general configurations that work across multiple SIMs, or specific profiles that work on a specific SIM. First, the data plan 
matches the criteria based on the modem ID and type.

Syntax
config extender-controller dataplan
edit <name>
set modem-id {modem1 | modem2 | all}
set type {carrier | slot | iccid | generic}

Variable Description

set modem-id (Available on in the  Select the match criterion based on the modem:


GUI)  l modem1: Use modem 1.
 l modem2: Use modem 2.
 l all: Use both modems (default).

set type (Type in the GUI) Select the match criterion based on the type:
carrier: Assign by SIM carrier.
slot: Assign to SIM slot 1 or 2.
iccid: Assign to a specific SIM by ICCID.
generic: Compatible with any SIM (default). Assigned if no other data plan 
matches the chosen SIM.

When a modem connects to the network through a SIM, it will read the SIM information and try to match a data plan 
based on the modem ID and type. It then uses the data plan connectivity settings to connect (authentication, PDN type, 
preferred subnet, APN, private network). The billing details (such as the monthly data limit) and smart switch threshold 
settings define how the SIMs will be switched. 
Multiple data plans can be configured:

FortiOS 6.4.6 Administration Guide 528


Fortinet Technologies Inc.
Network

Once the FortiExtender is controlled by the FortiGate, the data plan is sent to the FortiExtender. The format is identical 
between devices.

To configure a data plan in the GUI:

 1. Go to Network > FortiExtender and in the top menu, click Data plans.


 2. Click Create New.
 3. Enter a name and ensure the Status is enabled.
 4. For Available on, select a criterion  (Modem 1, Modem 2, or All Modems).
 5. For Type select a criterion (Carrier, ATCA Slot, ICCID, or generic).
 6. Configure the other settings as needed (Connectivity, Billing Details, and Smart Switch threshold).

 7. Click OK.

To configure a data plan in the CLI:

config extender-controller dataplan


edit "Telus-modem1"
set modem-id modem1
set type carrier
set carrier "Telus"
set capacity 2000
set billing-date 30
next
edit "Fido-modem2"
set modem-id modem2
set type carrier
set carrier "Generic"
set capacity 3000
next
edit "Bell"
set type carrier
set carrier "Bell"

FortiOS 6.4.6 Administration Guide 529


Fortinet Technologies Inc.
Network

set APN "pda.bell.ca"


set capacity 6000
next
end

Direct IP support for LTE/4G

Direct IP is a public IP address that is assigned to a computing device, which allows the device to directly access the 
internet.
When an LTE modem is enabled in FortiOS, a DHCP interface is created. As a result, the FortiGate can acquire direct IP 
(which includes IP, DNS, and gateway) from the LTE network carrier.
Since some LTE modems require users to input the access point name (APN) for the LTE network, the LTE modem 
configuration allows you to set the APN.

LTE modems can only be enabled by using the CLI.

To enable direct IP support using the CLI:

 1. Enable the LTE modem:   
config system lte-modem
set status enable
end

 2. Check that the LTE interface was created:   
config system interface
edit "wwan"
set vdom "root"
set mode dhcp
set status down
set distance 1
set type physical
set snmp-index 23
next
end

Shortly after the LTE modem joins its carrier network, wwan is enabled and granted direct IP:
# config system interface
(interface) # edit wwan
(wwan) # get
name : wwan
....
ip : 100.112.75.43 255.255.255.248
....
status : up
....
defaultgw : enable

FortiOS 6.4.6 Administration Guide 530


Fortinet Technologies Inc.
Network

DHCP Gateway : 100.112.75.41


Lease Expires : Thu Feb 21 19:33:27 2019
dns-server-override : enable
Acquired DNS1 : 184.151.118.254
Acquired DNS2 : 70.28.245.227
....

PCs can reach the internet via the following firewall policy:
config firewall policy
....
edit 5
set name "LTE"
set srcintf "port9"
set dstintf "wwan"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set fsso disable
set nat enable
next
end

Sample LTE interface

When an LTE modem is enabled, you can view the LTE interface in the GUI and check the acquired IP, DNS, and 
gateway.

To view the LTE interface in the GUI:

 1. Go to Network > Interfaces.


 2. Double-click the LTE interface to view the properties.
 3. Look in the Address section to view the:
 a. Obtained IP
 b. Acquired DNS
 c. Default Gateway

FortiOS 6.4.6 Administration Guide 531


Fortinet Technologies Inc.
Network

 4. Click Return.

To configure the firewall policy that uses the LTE interface:

 1. Go to Policy & Objects > Firewall Policy.


 2. Double-click  the LTE policy. The Edit Policy pane opens.
 3. In the Outgoing Interface field, select the interface (wwan in this example).
 4. Configure the rest of the policy as needed.

 5. Click OK. 

Limitations

 l Most LTE modems have a preset APN in their SIM card. Therefore, the APN does not need to be set in the FortiOS 
configuration. In cases where the internet cannot be accessed, consult with your carrier and set the APN in the LTE 
modem configuration (for example, inet.bell.ca):

FortiOS 6.4.6 Administration Guide 532


Fortinet Technologies Inc.
Network

config system lte-modem


set status enable
set apn "inet.bell.ca"
end

 l Some models, such as the FortiGate 30E-3G4G, have built-in LTE modems. In this scenario, the LTE modem is 
enabled by default. The firewall policy via the LTE interface is also created by default. Once you plug in a SIM card, 
your network devices can connect to the internet.   

Sample FortiGate 30E-3G4G default configuration:

config system lte-modem


set status enable
set extra-init ''
set manual-handover disable
set force-wireless-profile 0
set authtype none
set apn ''
set modem-port 255
set network-type auto
set auto-connect disable
set gpsd-enabled disable
set data-usage-tracking disable
set gps-port 255
end

config firewall policy


....
edit 3
set srcintf "internal"
set dstintf "wwan"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

LLDP reception

Natively, device detection can scan LLDP as a source for device identification. However, the FortiGate does not read or 
store the full information. Enabling LLDP reception allows the FortiGate to receive and store LLDP messages, learn 
about active neighbors, and makes the LLDP information available via the CLI, REST API, and SNMP.
You will need to enable device-identification at the interface level, and then lldp-reception can be enabled 
on three levels: globally, per VDOM, or per interface.

To configure device identification on an interface:

config system interface


edit <port>

FortiOS 6.4.6 Administration Guide 533


Fortinet Technologies Inc.
Network

set device-identification enable


next
end

To configure LLDP reception globally:

config system global


set lldp-reception enable
end

To configure LLDP reception per VDOM:

config system setting


set lldp-reception enable
end

To configure LLDP reception per interface:

config system interface


edit <port>
set lldp-reception enable
next
end

To view the LLDP information in the GUI:

 1. Go to Dashboard > Users & Devices.


 2. Hover over the Device Inventory widget, and click Expand to Full Screen.   

To view the received LLDP information in the CLI:

# diagnose user device list


hosts
vd root/0 44:0a:a0:0a:0a:0a gen 3 req S/2
created 10290s gen 1 seen 0s port3 gen 1
ip 172.22.22.22 src lldp
type 20 'Other Network Device' src lldp id 155 gen 2
os 'Artist EOS ' version '4.20.4' src lldp id 155
host 'artist' src lldp

To view additional information about LLDP neighbors and ports:

# diagnose lldprx neighbor {summary | details | clear}


# diagnose lldprx port {details | summary | neighbor | filter}
# diagnose lldprx port neighbor {summary | details}

FortiOS 6.4.6 Administration Guide 534


Fortinet Technologies Inc.
Network

Note that the port index in the output corresponds to the port index from the following command:
# diagnose netlink interface list port2 port3 | grep index
if=port2 family=00 type=1 index=4 mtu=1500 link=0 master=0
if=port3 family=00 type=1 index=5 mtu=1500 link=0 master=0

To view the received LLDP information in the REST API:

{
"http_method":"GET",
"results":[
{
"mac":"90:9c:9c:c9:c9:90",
"chassis_id":"90:9C:9C:C9:C9:90",
"port":19,
"port_id":"port12",
"port_desc":"port12",
"system_name":"S124DN3W00000000",
"system_desc":"FortiSwitch-124D v3.6.6,build0416,180515 (GA)",
"ttl":120,
"addresses":[
{
"type":"ipv4",
"address":"192.168.1.99"
}
]
}
],
"vdom":"root",
"path":"network",
"name":"lldp",
"action":"neighbors",
"status":"success",
"serial":"FG201E4Q00000000",
"version":"v6.2.0",
"build":866
}
{
"http_method":"GET",
"results":[
{
"name":"port1",
"rx":320,
"neighbors":1
}
],
"vdom":"root",
"path":"network",
"name":"lldp",
"action":"ports",
"mkey":"port1",
"status":"success",
"serial":"FG201E4Q00000000",
"version":"v6.2.0",
"build":866
}

FortiOS 6.4.6 Administration Guide 535


Fortinet Technologies Inc.
Network

Route leaking between VRFs

This feature provides generic route leaking capabilities between locally defined VRFs (VRF-lite). If VRF leaking is not 
configured, VRFs are isolated.
In this example,  interface npu0_vlink0 belongs to VRF 10 and is used to leak 1.2.2.2/32 from VRF10 to VRF20, and 
interface npu0_vlink1 belongs to VRF 20 and is used to leak 172.28.1.0/24 from VRF20 to VRF10. So, VRF10 can see 
172.28.1.0/24, and VRF20 can see 1.2.2.2/32.

To configure VRF leaking:

 1. Configure the prefix list and route map to filter what will be leaked:
config router prefix-list
edit "1"
config rule
edit 1
set prefix 1.2.2.2 255.255.255.255
next
end
next
edit "2"
config rule
edit 1
set prefix 172.28.1.0 255.255.255.0
next
end
next
end
config router route-map
edit "from10"
config rule
edit 1
set match-ip-address "1"
next
end
next
edit "from20"
config rule
edit 1
set match-ip-address "2"
next
end
next
end

 2. Configure the VDOM link interfaces for the leaking and routing:
config system interface
edit "npu0_vlink0"
set vdom "root"
set vrf 10
set ip 172.16.201.1 255.255.255.0
set allowaccess ping https ssh snmp http
next

FortiOS 6.4.6 Administration Guide 536


Fortinet Technologies Inc.
Network

edit "npu0_vlink1"
set vdom "root"
set vrf 20
set ip 172.16.201.2 255.255.255.0
set allowaccess ping https ssh snmp http telnet
next
end

 3. Configure the BGP VRF leak:
config router bgp
set as 44
set router-id 4.4.4.4
config neighbor
edit "172.16.200.1"
set soft-reconfiguration enable
set remote-as 11
set update-source "port1"
next
edit "172.16.202.1"
set soft-reconfiguration enable
set remote-as 22
set update-source "port3"
next
end
config vrf-leak
edit "10"
config target
edit "20"
set route-map "from10"
set interface "npu0_vlink0"
next
end
next
edit "20"
config target
edit "10"
set route-map "from20"
set interface "npu0_vlink1"
next
end
next
end
end

 4. Confirm that the filtered routed leaked as expected:
# get router info routing-table all
Routing table for VRF=10
B 1.1.1.1/32 [20/0] via 172.16.200.1, port1, 01:03:16
B 1.2.2.2/32 [20/0] via 172.16.200.1, port1, 01:03:16
B 172.28.1.0/24 [20/0] via 172.16.201.2, npu0_vlink0, 00:00:17
<<<<<<<<<<<<<<Leaked into VRF10 from VRF20

Routing table for VRF=20


B 1.2.2.2/32 [20/0] via 172.16.201.1, npu0_vlink1, 00:00:15 <<<<<<<<<<<<<<Leaked
into VRF 20 from VRF10

FortiOS 6.4.6 Administration Guide 537


Fortinet Technologies Inc.
Network

B 172.28.1.0/24 [20/0] via 172.16.202.1, port3, 01:03:16


B 172.28.2.0/24 [20/0] via 172.16.202.1, port3, 01:03:16

Route leaking between multiple VRFs

In this example, routing leaking between three VRFs in a star topology is configured. This allows the solution to be 
scaled to more VRFs without building  full mesh, one-to-one connections between each pair of VRFs. VLAN 
subinterfaces are created on VDOM links to connect each VRF to the central VRF, allowing routes to be leaked from a 
VRF to the central VRF, and then to the other VRFs. Static routes are used for route leaking in this eaxmple.
For instructions on creating route leaking between two VRFs, see Route leaking between VRFs on page 536.

Physical topology:

FortiOS 6.4.6 Administration Guide 538


Fortinet Technologies Inc.
Network

Logical topology:

In this example, a specific route is leaked from each of the VRFs to each of the other VRFs. VLAN subinterfaces are 
created based on VDOM links to connect each VRF to the core VRF router.
Multi VDOM mode is enabled so that NP VDOM links can be used. The setup could be configured without enabling multi 
VDOM mode by manually creating non-NP VDOM links, but this is not recommended as the links are not offloaded to the 
NPU.
After VDOMs are enabled, all of the configuration is done in the root VDOM.

To configure the FortiGate:

 1. Enable multi VDOM mode:
config system global
set vdom-mode multi-vdom
end

If the FortiGate has an NP, the VDOM links will be created:
# show system interface
config system interface
...
edit "npu0_vlink0"
set vdom "root"
set type physical
next
edit "npu0_vlink1"
set vdom "root"
set type physical
next
...
end

If multi VDOM mode is not used, the VDOM links can be manually created:

FortiOS 6.4.6 Administration Guide 539


Fortinet Technologies Inc.
Network

config system vdom-link


edit <name of vdlink>
next
end

 2. Allow interface subnets to use overlapping IP addresses:
config vdom
edit root
config system settings
set allow-subnet-overlap enable
end

 3. Configure the inter-connecting VLAN subinterfaces between VRF based on VDOM-LINK:
config system interface
edit "vlink0_Vlan_10"
set vdom "root"
set vrf 10
set ip 10.1.1.1 255.255.255.252
set allowaccess ping https ssh http
set alias "vlink0_Vlan_10"
set role lan
set interface "npu0_vlink0"
set vlanid 10
next
edit "vlink1_Vlan_10"
set vdom "root"
set vrf 31
set ip 10.1.1.2 255.255.255.252
set allowaccess ping https ssh http
set alias "vlink1_Vlan_10"
set role lan
set interface "npu0_vlink1"
set vlanid 10
next
edit "vlink0_Vlan_11"
set vdom "root"
set vrf 11
set ip 11.1.1.1 255.255.255.252
set allowaccess ping https ssh http
set alias "vlink0_Vlan_11"
set role lan
set interface "npu0_vlink0"
set vlanid 11
next
edit "vlink1_Vlan_11"
set vdom "root"
set vrf 31
set ip 11.1.1.2 255.255.255.252
set allowaccess ping https ssh http
set alias "vlink1_Vlan_11"
set role lan
set interface "npu0_vlink1"
set vlanid 11
next
edit "vlink0_Vlan_12"

FortiOS 6.4.6 Administration Guide 540


Fortinet Technologies Inc.
Network

set vdom "root"


set vrf 12
set ip 12.1.1.1 255.255.255.252
set allowaccess ping https ssh http
set alias "vlink0_Vlan_12"
set role lan
set interface "npu0_vlink0"
set vlanid 12
next
edit "vlink1_Vlan_12"
set vdom "root"
set vrf 31
set ip 12.1.1.2 255.255.255.252
set allowaccess ping https ssh http
set alias "vlink1_Vlan_12"
set role lan
set interface "npu0_vlink1"
set vlanid 12
next
end

 4. Configure a zone to allow intrazone traffic between VLANs in the central VRF:
config system zone
edit "Core-VRF-Router"
set intrazone allow
set interface "vlink1_Vlan_10" "vlink1_Vlan_11" "vlink1_Vlan_12"
next
end

 5. Add allow policies for the VRF31 core router:
config firewall policy
edit 0
set name "any_to_core_vrf31"
set srcintf "any"
set dstintf "Core-VRF-Router"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
edit 0
set name "core_vrf31_to_any"
set srcintf "Core-VRF-Router"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
end

 6. Configure VRF10, VRF11, and VRF12 on the Internal and WAN VLAN sub-interfaces:

FortiOS 6.4.6 Administration Guide 541


Fortinet Technologies Inc.
Network

config system interface


edit "Internal_VRF10"
set vdom "root"
set vrf 10
set ip 172.16.10.1 255.255.255.0
set allowaccess ping https ssh http
set alias "Internal_VRF10"
set role lan
set interface "internal"
set vlanid 10
next
edit "Internal_VRF11"
set vdom "root"
set vrf 11
set ip 172.16.11.1 255.255.255.0
set allowaccess ping https ssh http
set alias "Internal_VRF11"
set role lan
set interface "internal"
set vlanid 11
next
edit "Internal_VRF12"
set vdom "root"
set vrf 12
set ip 172.16.12.1 255.255.255.0
set allowaccess ping https ssh http
set alias "Internal_VRF12"
set role lan
set interface "internal"
set vlanid 12
next
edit "wan1_VRF10"
set vdom "root"
set vrf 10
set ip 202.100.10.1 255.255.255.0
set allowaccess ping
set alias "wan1_VRF10"
set role wan
set interface "wan1"
set vlanid 10
next
edit "wan1_VRF11"
set vdom "root"
set vrf 11
set ip 202.100.11.1 255.255.255.0
set allowaccess ping
set alias "wan1_VRF11"
set role wan
set interface "wan1"
set vlanid 11
next
edit "wan1_VRF12"
set vdom "root"
set vrf 12
set ip 202.100.12.1 255.255.255.0
set allowaccess ping

FortiOS 6.4.6 Administration Guide 542


Fortinet Technologies Inc.
Network

set alias "wan1_VRF12"


set role wan
set interface "wan1"
set vlanid 12
next
end

 7. Configure static routing and route leaking between each VRF and Core-VRF-Router:
config router static
edit 1
set dst 172.16.10.0 255.255.255.0
set gateway 10.1.1.1
set device "vlink1_Vlan_10"
set comment "VRF31_Core_Router"
next
edit 2
set dst 172.16.11.0 255.255.255.0
set gateway 11.1.1.1
set device "vlink1_Vlan_11"
set comment "VRF31_Core_Router"
next
edit 3
set dst 172.16.12.0 255.255.255.0
set gateway 12.1.1.1
set device "vlink1_Vlan_12"
set comment "VRF31_Core_Router"
next
edit 4
set dst 172.16.11.0 255.255.255.0
set gateway 10.1.1.2
set device "vlink0_Vlan_10"
set comment "VRF10_Route_Leaking"
next
edit 5
set dst 172.16.12.0 255.255.255.0
set gateway 10.1.1.2
set device "vlink0_Vlan_10"
set comment "VRF10_Route_Leaking"
next
edit 6
set dst 172.16.10.0 255.255.255.0
set gateway 11.1.1.2
set device "vlink0_Vlan_11"
set comment "VRF11_Route_Leaking"
next
edit 7
set dst 172.16.12.0 255.255.255.0
set gateway 11.1.1.2
set device "vlink0_Vlan_11"
set comment "VRF11_Route_Leaking"
next
edit 8
set dst 172.16.10.0 255.255.255.0
set gateway 12.1.1.2
set device "vlink0_Vlan_12"

FortiOS 6.4.6 Administration Guide 543


Fortinet Technologies Inc.
Network

set comment "VRF12_Route_Leaking"


next
edit 9
set dst 172.16.11.0 255.255.255.0
set gateway 12.1.1.2
set device "vlink0_Vlan_12"
set comment "VRF12_Route_Leaking"
next
edit 10
set gateway 202.100.10.254
set device "wan1_VRF10"
set comment "VRF10_Default_Route"
next
edit 11
set gateway 202.100.11.254
set device "wan1_VRF11"
set comment "VRF11_Default_Route"
next
edit 12
set gateway 202.100.12.254
set device "wan1_VRF12"
set comment "VRF12_Default_Route"
next
end

In the GUI, go to Network > Static Routes to view the static routes.


 8. Configure firewall policies for VRF10, VRF11, and VRF12
config firewall policy
edit 6
set name "VRF10_to_Internet_Policy"
set srcintf "Internal_VRF10"
set dstintf "wan1_VRF10"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set nat enable
next
edit 7
set name "VRF10_to_VRF_Leaking_Route"
set srcintf "Internal_VRF10"
set dstintf "vlink0_Vlan_10"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
edit 8
set name "VRF_Leaking_Route_to_VRF10"
set srcintf "vlink0_Vlan_10"
set dstintf "Internal_VRF10"

FortiOS 6.4.6 Administration Guide 544


Fortinet Technologies Inc.
Network

set srcaddr "all"


set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
edit 9
set name "VRF11_to_Internet_Policy"
set srcintf "Internal_VRF11"
set dstintf "wan1_VRF11"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set nat enable
next
edit 10
set name "VRF11_to_VRF_Leaking_Route"
set srcintf "Internal_VRF11"
set dstintf "vlink0_Vlan_11"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
edit 11
set name "VRF_Leaking_Route_to_VRF11"
set srcintf "vlink0_Vlan_11"
set dstintf "Internal_VRF11"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
edit 12
set name "VRF12_to_Internet_Policy"
set srcintf "Internal_VRF12"
set dstintf "wan1_VRF12"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set nat enable
next
edit 13
set name "VRF12_to_VRF_Leaking_Route"

FortiOS 6.4.6 Administration Guide 545


Fortinet Technologies Inc.
Network

set uuid 92bccf8e-b27b-51eb-3c56-6d5259af6299


set srcintf "Internal_VRF12"
set dstintf "vlink0_Vlan_12"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
edit 14
set name "VRF_Leaking_Route_to_VRF12"
set srcintf "vlink0_Vlan_12"
set dstintf "Internal_VRF12"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
end

In the GUI, go to Policy & Objects > Firewall Policy to view the policies.

To check the results:

 1. On the FortiGate, check the routing table to see each VRF:
# get router info routing-table all
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

Routing table for VRF=0


C 10.6.30.0/24 is directly connected, mgmt

Routing table for VRF=10


S* 0.0.0.0/0 [10/0] via 202.100.10.254, wan1_VRF10
C 10.1.1.0/30 is directly connected, vlink0_Vlan_10
C 172.16.10.0/24 is directly connected, Internal_VRF10
S 172.16.11.0/24 [10/0] via 10.1.1.2, vlink0_Vlan_10
S 172.16.12.0/24 [10/0] via 10.1.1.2, vlink0_Vlan_10
C 202.100.10.0/24 is directly connected, wan1_VRF10

Routing table for VRF=11


S* 0.0.0.0/0 [10/0] via 202.100.11.254, wan1_VRF11
C 11.1.1.0/30 is directly connected, vlink0_Vlan_11
S 172.16.10.0/24 [10/0] via 11.1.1.2, vlink0_Vlan_11
C 172.16.11.0/24 is directly connected, Internal_VRF11
S 172.16.12.0/24 [10/0] via 11.1.1.2, vlink0_Vlan_11
C 202.100.11.0/24 is directly connected, wan1_VRF11

FortiOS 6.4.6 Administration Guide 546


Fortinet Technologies Inc.
Network

Routing table for VRF=12


S* 0.0.0.0/0 [10/0] via 202.100.12.254, wan1_VRF12
C 12.1.1.0/30 is directly connected, vlink0_Vlan_12
S 172.16.10.0/24 [10/0] via 12.1.1.2, vlink0_Vlan_12
S 172.16.11.0/24 [10/0] via 12.1.1.2, vlink0_Vlan_12
C 172.16.12.0/24 is directly connected, Internal_VRF12
C 202.100.12.0/24 is directly connected, wan1_VRF12

Routing table for VRF=31


C 10.1.1.0/30 is directly connected, vlink1_Vlan_10
C 11.1.1.0/30 is directly connected, vlink1_Vlan_11
C 12.1.1.0/30 is directly connected, vlink1_Vlan_12
S 172.16.10.0/24 [10/0] via 10.1.1.1, vlink1_Vlan_10
S 172.16.11.0/24 [10/0] via 11.1.1.1, vlink1_Vlan_11
S 172.16.12.0/24 [10/0] via 12.1.1.1, vlink1_Vlan_12

 2. From the FW10-PC:
# ifconfig ens32
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.10.100 netmask 255.255.255.0 broadcast 172.16.10.255
inet6 fe80::dbed:c7fe:170e:e61c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:2a:3a:17 txqueuelen 1000 (Ethernet)
RX packets 1632 bytes 160001 (156.2 KiB)
RX errors 0 dropped 52 overruns 0 frame 0
TX packets 2141 bytes 208103 (203.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.10.1 0.0.0.0 UG 100 0 0 ens32
172.16.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens32
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

 a. Ping a public IP address through VRF10:
# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=113 time=4.33 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=113 time=4.17 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=113 time=4.04 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 4.049/4.188/4.336/0.117 ms

 b. Ping the internet gateway through VRF10:
# ping 202.100.10.254
PING 202.100.10.254 (202.100.10.254) 56(84) bytes of data.
64 bytes from 202.100.10.254: icmp_seq=1 ttl=254 time=0.294 ms
64 bytes from 202.100.10.254: icmp_seq=2 ttl=254 time=0.225 ms
64 bytes from 202.100.10.254: icmp_seq=3 ttl=254 time=0.197 ms
^C
--- 202.100.10.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.197/0.238/0.294/0.044 ms

FortiOS 6.4.6 Administration Guide 547


Fortinet Technologies Inc.
Network

 c. Ping the FW11-PC on VRF11 from VRF10:
# ping 172.16.11.100
PING 172.16.11.100 (172.16.11.100) 56(84) bytes of data.
64 bytes from 172.16.11.100: icmp_seq=1 ttl=61 time=0.401 ms
64 bytes from 172.16.11.100: icmp_seq=2 ttl=61 time=0.307 ms
64 bytes from 172.16.11.100: icmp_seq=3 ttl=61 time=0.254 ms
64 bytes from 172.16.11.100: icmp_seq=4 ttl=61 time=0.277 ms
64 bytes from 172.16.11.100: icmp_seq=5 ttl=61 time=0.262 ms
^C
--- 172.16.11.100 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.254/0.300/0.401/0.054 ms

 3. On the FortiGate, sniff traffic between VRF10 and VRF11:
# diagnose sniffer packet any "icmp and host 172.16.11.100" 4 l 0
interfaces=[any]
filters=[icmp and host 172.16.11.100]
10.086656 Internal_VRF10 in 172.16.10.100 -> 172.16.11.100: icmp: echo request
10.086705 vlink0_Vlan_10 out 172.16.10.100 -> 172.16.11.100: icmp: echo request
10.086706 npu0_vlink0 out 172.16.10.100 -> 172.16.11.100: icmp: echo request

10.086711 vlink1_Vlan_10 in 172.16.10.100 -> 172.16.11.100: icmp: echo request


10.086739 vlink1_Vlan_11 out 172.16.10.100 -> 172.16.11.100: icmp: echo request
10.086740 npu0_vlink1 out 172.16.10.100 -> 172.16.11.100: icmp: echo request

10.086744 vlink0_Vlan_11 in 172.16.10.100 -> 172.16.11.100: icmp: echo request


10.086929 Internal_VRF11 out 172.16.10.100 -> 172.16.11.100: icmp: echo request
10.086930 internal out 172.16.10.100 -> 172.16.11.100: icmp: echo request

10.087053 Internal_VRF11 in 172.16.11.100 -> 172.16.10.100: icmp: echo reply


10.087061 vlink0_Vlan_11 out 172.16.11.100 -> 172.16.10.100: icmp: echo reply
10.087062 npu0_vlink0 out 172.16.11.100 -> 172.16.10.100: icmp: echo reply

10.087066 vlink1_Vlan_11 in 172.16.11.100 -> 172.16.10.100: icmp: echo reply


10.087071 vlink1_Vlan_10 out 172.16.11.100 -> 172.16.10.100: icmp: echo reply
10.087072 npu0_vlink1 out 172.16.11.100 -> 172.16.10.100: icmp: echo reply

10.087076 vlink0_Vlan_10 in 172.16.11.100 -> 172.16.10.100: icmp: echo reply


10.087176 Internal_VRF10 out 172.16.11.100 -> 172.16.10.100: icmp: echo reply
10.087177 internal out 172.16.11.100 -> 172.16.10.100: icmp: echo reply
^C
20 packets received by filter
0 packets dropped by kernel

NetFlow

NetFlow allows you to collect IP network traffic statistics for an interface, and then export those statistics for analysis. 
Internet Protocol Flow Information Export (IPFIX) is the standardized internet protocol based on NetFlow version 9. It 
can be configured globally or per VDOM. NetFlow samplers, that sample every packet, are configured per interface. Full 
NetFlow is supported through the information maintained in the firewall session.

FortiOS 6.4.6 Administration Guide 548


Fortinet Technologies Inc.
Network

To configure NetFlow:

config system netflow


set collector-ip <ip>
set collector-port <port>
set source-ip <ip>
set active-flow-timeout <integer>
set inactive-flow-timeout <integer>
set template-tx-timeout <integer>
set template-tx-counter <integer>
end

collector-ip <ip> Collector IP address.


collector-port <port> NetFlow collector port number (0 - 65535)
source-ip <ip> Source IP address, for communication with the NetFlow agent.
active-flow-timeout Timeout to report active flows, in minutes (1 - 60, default = 30).
<integer>
inactive-flow-timeout Timeout for periodic report of finished flows, in seconds (10 - 600, default = 15).
<integer>
template-tx-timeout Timeout for periodic template flowset transmission, in minutes (1 - 1440, default = 
<integer> 30).
template-tx-counter Counter of flowset records, before resending a template flowset record (10 - 6000, 
<integer> default = 20).

To configure NetFlow in a specific VDOM:

config vdom
edit <vdom>
config system vdom-netflow
set vdom-netflow enable
set collector-ip <ip>
set collector-port <port>
set source-ip <ip>
end
next
end

To configure a NetFlow sampler on an interface:

config system interface


edit <interface>
set netflow-sampler {disable | tx | rx | both}
next
end

disable Disable the NetFlow protocol on this interface (default).
tx Monitor transmitted traffic on this interface.
rx Monitor received traffic on this interface.
both Monitor transmitted/received traffic on this interface.

FortiOS 6.4.6 Administration Guide 549


Fortinet Technologies Inc.
Network

Verification and troubleshooting

If data are not seen on the NetFlow collector after it has been configured, use the following sniffer commands to verify if 
the FortiGate and the collector are communicating:
 l By collector port:
# diagnose sniffer packet 'port <collector-port>' 6 0 a

 l By collector IP address:
# diagnose sniffer packet 'host <collector-ip>' 6 0 a

NetFlow uses the sflow daemon. The current NetFlow configuration can be viewed using test level 3 or 4:
# diagnose test application sflowd 3
# diagnose test application sflowd 4
Netflow Cache Stats:
vdoms=1 Collectors=1 Cached_intf=2 Netflow_enabled_intf=1 Live_sessions=0 Session cache max
count:71950

NetFlow templates

Netflow uses templates to capture and categorize the data that it collects. FortiOS supports the following Netflow 
templates:

Name Template ID Description

STAT_OPTIONS  256 Statistics information about exporter

APP_ID_OPTIONS  257 Application information

IPV4  258 No NAT IPv4 traffic

IPV6  259 No NAT IPv6 traffic

ICMP4 260 No NAT ICMPv4 traffic

ICMP6 261 No NAT ICMPv6 traffic

IPV4_NAT 262 Source/Destination NAT IPv4 traffic

IPV4_AF_NAT 263 AF NAT IPv4 traffic (4->6)

IPV6_NAT 264 Source/Destination NAT IPv6 traffic

IPV6_AF_NAT 265 AF NAT IPv6 traffic (6->4)

ICMP4_NAT 266 Source/Destination NAT ICMPv4 traffic

ICMP4_AF_NAT 267 AF NAT ICMPv4 traffic (4->6)

ICMP6_NAT 268 Source/Destination NAT ICMPv6 traffic

ICMPv6_AF_NAT 269 AF NAT ICMPv6 traffic (6->4)

FortiOS 6.4.6 Administration Guide 550


Fortinet Technologies Inc.
Network

256 - STAT_OPTIONS

Description Statistics information about exporter

Scope Field Count 1

Data Field Count 7

Option Scope Length 4

Option Length 28

Padding 0000

Scope fields

Field # Field Type Length

1 System System (1) 2

Data fields

Field # Field Type Length

1 TOTAL_BYTES_EXP TOTAL_BYTES_EXP (40) 8

2 TOTAL_PKTS_EXP TOTAL_PKTS_EXP (41) 8

3 TOTAL_FLOWS_EXP TOTAL_FLOWS_EXP (42) 8

4 FLOW_ACTIVE_TIMEOUT FLOW_ACTIVE_TIMEOUT (36) 2

5 FLOW_INACTIVE_TIMEOUT FLOW_INACTIVE_TIMEOUT (37) 2

6 SAMPLING_INTERVAL SAMPLING_INTERVAL (34) 4

7 SAMPLING_ALGORITHM SAMPLING_ALGORITHM (35) 1

257 - APP_ID_OPTIONS

Description Application information

Scope Field Count 1

Data Field Count 4

Option Scope Length 4

Option Length 16

Padding 0000

FortiOS 6.4.6 Administration Guide 551


Fortinet Technologies Inc.
Network

Scope fields

Field # Field Type Length

1 System System (1) 2

Data fields

Field # Field Type Length

1 APPLICATION_ID APPLICATION_ID (95) 9

2 APPLICATION_NAME APPLICATION_NAME (96) 64

3 APPLICATION_DESC APPLICATION_DESC (94) 64

4 applicationCategoryName applicationCategoryName (372) 32

258 - IPV4

Description No NAT IPv4 traffic

Data Field Count 17

Data fields

Field # Field Type Length

1 BYTES BYTES (1) 8

2 OUT_BYTES OUT_BYTES (23) 8

3 PKTS PKTS (2) 4

4 OUT_PKTS OUT_PKTS (24) 4

5 FIRST_SWITCHED FIRST_SWITCHED (22) 4

6 LAST_SWITCHED LAST_SWITCHED (21) 4

7 L4_SRC_PORT L4_SRC_PORT (7) 2

8 L4_DST_PORT L4_DST_PORT (11) 2

9 INPUT_SNMP INPUT_SNMP (10) 2

10 OUTPUT_SNMP OUTPUT_SNMP (14) 2

11 PROTOCOL PROTOCOL (4) 1

12 APPLICATION_ID APPLICATION_ID (95) 9

13 FLOW_FLAGS FLOW_FLAGS (65) 2

14 FORWARDING_STATUS FORWARDING_STATUS (89) 1

FortiOS 6.4.6 Administration Guide 552


Fortinet Technologies Inc.
Network

Field # Field Type Length

15 flowEndReason flowEndReason (136) 1

16 IP_SRC_ADDR IP_SRC_ADDR (8) 4

17 IP_DST_ADDR IP_DST_ADDR (12) 4

259 - IPV6

Description No NAT IPv6 traffic

Data Field Count 17

Data fields

Field # Field Type Length

1 BYTES BYTES (1) 8

2 OUT_BYTES OUT_BYTES (23) 8

3 PKTS PKTS (2) 4

4 OUT_PKTS OUT_PKTS (24) 4

5 FIRST_SWITCHED FIRST_SWITCHED (22) 4

6 LAST_SWITCHED LAST_SWITCHED (21) 4

7 L4_SRC_PORT L4_SRC_PORT (7) 2

8 L4_DST_PORT L4_DST_PORT (11) 2

9 INPUT_SNMP INPUT_SNMP (10) 2

10 OUTPUT_SNMP OUTPUT_SNMP (14) 2

11 PROTOCOL PROTOCOL (4) 1

12 APPLICATION_ID APPLICATION_ID (95) 9

13 FLOW_FLAGS FLOW_FLAGS (65) 2

14 FORWARDING_STATUS FORWARDING_STATUS (89) 1

15 flowEndReason flowEndReason (136) 1 

16 IPV6_SRC_ADDR  IPV6_SRC_ADDR (27) 16

17 IPV6_DST_ADDR  IPV6_DST_ADDR (28) 16 

260 - ICMP4

Description No NAT ICMPv4 traffic

Data Field Count 16

FortiOS 6.4.6 Administration Guide 553


Fortinet Technologies Inc.
Network

Data fields

Field # Field Type Length

1 BYTES BYTES (1) 8

2 OUT_BYTES OUT_BYTES (23) 8

3 PKTS PKTS (2) 4

4 OUT_PKTS OUT_PKTS (24) 4

5 FIRST_SWITCHED FIRST_SWITCHED (22) 4

6 LAST_SWITCHED LAST_SWITCHED (21) 4

7 INPUT_SNMP INPUT_SNMP (10) 2

8 OUTPUT_SNMP OUTPUT_SNMP (14) 2

9 ICMP_TYPE ICMP_TYPE (32) 2

10 PROTOCOL PROTOCOL (4) 1

11 APPLICATION_ID APPLICATION_ID (95) 9

12 FLOW_FLAGS FLOW_FLAGS (65) 2

13 FORWARDING_STATUS FORWARDING_STATUS (89) 1

14 flowEndReason flowEndReason (136) 1

15 IP_SRC_ADDR IP_SRC_ADDR (8) 4

16 IP_DST_ADDR IP_DST_ADDR(12) 4

261 - ICMP6

Description No NAT ICMPv6 traffic

Data Field Count 16

Data fields

Field # Field Type Length

1 BYTES BYTES (1) 8

2 OUT_BYTES OUT_BYTES (23)  8

3 PKTS PKTS (2) 4

4 OUT_PKTS OUT_PKTS (24) 4

5 FIRST_SWITCHED FIRST_SWITCHED (22) 4

6 LAST_SWITCHED  LAST_SWITCHED (21) 4

FortiOS 6.4.6 Administration Guide 554


Fortinet Technologies Inc.
Network

Field # Field Type Length

7 INPUT_SNMP INPUT_SNMP (10) 2

8 OUTPUT_SNMP OUTPUT_SNMP (14) 2

9 ICMP_TYPE ICMP_TYPE (32) 2

10 PROTOCOL PROTOCOL (4) 1

11 APPLICATION_ID APPLICATION_ID (95) 9

12 FLOW_FLAGS FLOW_FLAGS (65) 2

13 FORWARDING_STATUS FORWARDING_STATUS (89) 1

14 flowEndReason flowEndReason (136) 1

15 IPV6_SRC_ADDR IPV6_SRC_ADDR (27) 16

16 IPV6_DST_ADDR IPV6_DST_ADDR (28) 16

262 - IPV4_NAT

Description Source/Destination NAT IPv4 traffic

Data Field Count 21

Data fields

Field # Field Type Length

1 BYTES BYTES (1) 8

2 OUT_BYTES OUT_BYTES (23) 8

3 PKTS PKTS (2) 4

4 OUT_PKTS OUT_PKTS (24) 4

5 FIRST_SWITCHED FIRST_SWITCHED (22) 4

6 LAST_SWITCHED LAST_SWITCHED (21) 4

7 L4_SRC_PORT L4_SRC_PORT (7) 2

8 L4_DST_PORT L4_DST_PORT (11) 2

9 INPUT_SNMP INPUT_SNMP (10) 2

10 OUTPUT_SNMP OUTPUT_SNMP (14) 2

11 PROTOCOL PROTOCOL (4) 1

12 APPLICATION_ID APPLICATION_ID (95) 9

13 FLOW_FLAGS FLOW_FLAGS (65) 2

FortiOS 6.4.6 Administration Guide 555


Fortinet Technologies Inc.
Network

Field # Field Type Length

14 FORWARDING_STATUS FORWARDING_STATUS (89) 1

15 flowEndReason flowEndReason (136) 1

16 IP_SRC_ADDR IP_SRC_ADDR (8) 4

17 IP_DST_ADDR IP_DST_ADDR (12) 4

18 postNATSourceIPv4Address postNATSourceIPv4Address (225) 4

19 postNATDestinationIPv4Address postNATDestinationIPv4Address (226) 4

20 postNAPTSourceTransportPort postNAPTSourceTransportPort (227) 2

21 postNAPTDestinationTransportPort postNAPTDestinationTransportPort  2
(228)

263 - IPV4_AF_NAT

Description AF NAT IPv4 traffic (4->6)

Data Field Count 21

Data fields

Field # Field Type Length

1 BYTES BYTES (1) 8 

2 OUT_BYTES OUT_BYTES (23) 8

3 PKTS PKTS (2) 4

4 OUT_PKTS OUT_PKTS (24) 4

5 FIRST_SWITCHED FIRST_SWITCHED (22) 4

6 LAST_SWITCHED LAST_SWITCHED (21) 4

7 L4_SRC_PORT L4_SRC_PORT (7) 2

8 L4_DST_PORT L4_DST_PORT (11) 2

9 INPUT_SNMP INPUT_SNMP (10) 2

10 OUTPUT_SNMP OUTPUT_SNMP (14) 2

11 PROTOCOL PROTOCOL (4) 1

12 APPLICATION_ID APPLICATION_ID (95) 9

13 FLOW_FLAGS FLOW_FLAGS (65) 2

14 FORWARDING_STATUS FORWARDING_STATUS (89) 1

15 flowEndReason flowEndReason (136) 1

FortiOS 6.4.6 Administration Guide 556


Fortinet Technologies Inc.
Network

Field # Field Type Length

16 IPV6_SRC_ADDR IPV6_SRC_ADDR (27) 16

17 IPV6_DST_ADDR IPV6_DST_ADDR (28) 16

18 postNATSourceIPv6Address postNATSourceIPv6Address (281) 16

19 postNATDestinationIPv6Address postNATDestinationIPv6Address (282) 16

20 postNAPTSourceTransportPort postNAPTSourceTransportPort (227) 2

21 postNAPTDestinationTransportPort postNAPTDestinationTransportPort  2
(228)

264 - IPV6_NAT

Description Source/Destination NAT IPv6 traffic

Data Field Count 21

Data fields

Field # Field Type Length

1 BYTES BYTES (1) 8

2 OUT_BYTES  OUT_BYTES (23)  8

3 PKTS  PKTS (2)  4

4 OUT_PKTS  OUT_PKTS (24)  4

5 FIRST_SWITCHED FIRST_SWITCHED (22)  4

6 LAST_SWITCHED LAST_SWITCHED (21)  4

7 L4_SRC_PORT  L4_SRC_PORT (7) 2

8 L4_DST_PORT  L4_DST_PORT (11)  2

9 INPUT_SNMP  INPUT_SNMP (10)  2

10 OUTPUT_SNMP  OUTPUT_SNMP (14)  2

11 PROTOCOL  PROTOCOL (4)  1

12 APPLICATION_ID  APPLICATION_ID (95)  9

13 FLOW_FLAGS  FLOW_FLAGS (65) 2

14 FORWARDING_STATUS  FORWARDING_STATUS (89)  1

15 flowEndReason  flowEndReason (136)  1

16 IP_SRC_ADDR   IP_SRC_ADDR (8)  4

17 IP_DST_ADDR  IP_DST_ADDR (12)  4

FortiOS 6.4.6 Administration Guide 557


Fortinet Technologies Inc.
Network

Field # Field Type Length

18 postNATSourceIPv6Address  postNATSourceIPv6Address (281)  16

19 postNATDestinationIPv6Address  postNATDestinationIPv6Address (282)  16

20 postNAPTSourceTransportPort  postNAPTSourceTransportPort (227)  2

21 postNAPTDestinationTransportPort  postNAPTDestinationTransportPort  2
(228) 

265 - IPV6_AF_NAT

Description AF NAT IPv6 traffic (6->4)

Data Field Count 21

Data fields

Field # Field Type Length

1 BYTES BYTES (1) 8

2 OUT_BYTES OUT_BYTES (23) 8

3 PKTS PKTS (2) 4

4 OUT_PKTS OUT_PKTS (24) 4

5 FIRST_SWITCHED FIRST_SWITCHED (22) 4

6 LAST_SWITCHED LAST_SWITCHED (21) 4

7 L4_SRC_PORT L4_SRC_PORT (7) 2

8 L4_DST_PORT L4_DST_PORT (11) 2

9 INPUT_SNMP INPUT_SNMP (10) 2

10 OUTPUT_SNMP OUTPUT_SNMP (14) 2

11 PROTOCOL PROTOCOL (4) 1

12 APPLICATION_ID APPLICATION_ID (95) 9

13 FLOW_FLAGS FLOW_FLAGS (65) 2

14 FORWARDING_STATUS FORWARDING_STATUS (89) 1

15 flowEndReason flowEndReason (136) 1

16 IPV6_SRC_ADDR IPV6_SRC_ADDR (27) 16

17 IPV6_DST_ADDR IPV6_DST_ADDR (28) 16

18 postNATSourceIPv4Address postNATSourceIPv4Address (225) 4

19 postNATDestinationIPv4Address postNATDestinationIPv4Address (226) 4

FortiOS 6.4.6 Administration Guide 558


Fortinet Technologies Inc.
Network

Field # Field Type Length

20 postNAPTSourceTransportPort postNAPTSourceTransportPort (227) 2

21 postNAPTDestinationTransportPort postNAPTDestinationTransportPort  2
(228)

266 - ICMPV4_NAT

Description Source/Destination NAT ICMPv4 traffic

Data Field Count 20

Data fields

Field # Field Type Length

1 BYTES BYTES (1) 8

2 OUT_BYTES OUT_BYTES (23) 8

3 PKTS PKTS (2) 4

4 OUT_PKTS OUT_PKTS (24) 4

5 FIRST_SWITCHED FIRST_SWITCHED (22) 4

6 LAST_SWITCHED LAST_SWITCHED (21) 4

7 INPUT_SNMP INPUT_SNMP (10) 2

8 OUTPUT_SNMP OUTPUT_SNMP (14) 2

9 ICMP_TYPE ICMP_TYPE (32) 2

10 PROTOCOL PROTOCOL (4) 1

11 APPLICATION_ID APPLICATION_ID (95) 9

12 FLOW_FLAGS FLOW_FLAGS (65) 2

13 FORWARDING_STATUS FORWARDING_STATUS (89) 1

14 flowEndReason flowEndReason (136) 1

15 IP_SRC_ADDR IP_SRC_ADDR (8) 4

16 IP_DST_ADDR IP_DST_ADDR (12) 4

17 postNATSourceIPv4Address postNATSourceIPv4Address (225) 4

18 postNATDestinationIPv4Address postNATDestinationIPv4Address (226) 4

19 postNAPTSourceTransportPort postNAPTSourceTransportPort (227) 2

20 postNAPTDestinationTransportPort postNAPTDestinationTransportPort  2
(228)

FortiOS 6.4.6 Administration Guide 559


Fortinet Technologies Inc.
Network

267 - ICMPV4_AF_NAT

Description AF NAT ICMPv4 traffic (4->6)

Data Field Count 20

Data fields

Field # Field Type Length

1 BYTES BYTES (1) 8

2 OUT_BYTES OUT_BYTES (23) 8

3 PKTS PKTS (2) 4

4 OUT_PKTS OUT_PKTS (24) 4

5 FIRST_SWITCHED FIRST_SWITCHED (22) 4

6 LAST_SWITCHED LAST_SWITCHED (21) 4

7 INPUT_SNMP INPUT_SNMP (10) 2

8 OUTPUT_SNMP OUTPUT_SNMP (14) 2

9 ICMP_TYPE ICMP_TYPE (32) 2

10 PROTOCOL PROTOCOL (4) 1

11 APPLICATION_ID APPLICATION_ID (95) 9

12 FLOW_FLAGS FLOW_FLAGS (65) 2

13 FORWARDING_STATUS FORWARDING_STATUS (89) 1

14 flowEndReason flowEndReason (136) 1

15 IPV6_SRC_ADDR IPV6_SRC_ADDR (27) 16

16 IPV6_DST_ADDR IPV6_DST_ADDR (28) 16

17 postNATSourceIPv6Address postNATSourceIPv6Address (281) 16

18 postNATDestinationIPv6Address postNATDestinationIPv6Address (282) 16

19 postNAPTSourceTransportPort postNAPTSourceTransportPort (227) 2

20 postNAPTDestinationTransportPort postNAPTDestinationTransportPort  2
(228)

268 - ICMPV6_NAT

Description Source/Destination NAT ICMPv6 traffic

Data Field Count 20

FortiOS 6.4.6 Administration Guide 560


Fortinet Technologies Inc.
Network

Data fields

Field # Field Type Length

1 BYTES BYTES (1) 8

2 OUT_BYTES OUT_BYTES (23) 8

3 PKTS PKTS (2) 4

4 OUT_PKTS OUT_PKTS (24) 4

5 FIRST_SWITCHED FIRST_SWITCHED (22) 4

6 LAST_SWITCHED LAST_SWITCHED (21) 4

7 INPUT_SNMP INPUT_SNMP (10) 2

8 OUTPUT_SNMP OUTPUT_SNMP (14) 2

9 ICMP_TYPE ICMP_TYPE (32) 2

10 PROTOCOL PROTOCOL (4) 1

11 APPLICATION_ID APPLICATION_ID (95) 9

12 FLOW_FLAGS FLOW_FLAGS (65) 2

13 FORWARDING_STATUS FORWARDING_STATUS (89) 1

14 flowEndReason flowEndReason (136) 1

15 IP_SRC_ADDR IP_SRC_ADDR (8) 4

16 IP_DST_ADDR IP_DST_ADDR (12) 4

17 postNATSourceIPv6Address postNATSourceIPv6Address (281) 16

18 postNATDestinationIPv6Address postNATDestinationIPv6Address (282) 16

19 postNAPTSourceTransportPort postNAPTSourceTransportPort (227) 2

20 postNAPTDestinationTransportPort postNAPTDestinationTransportPort  2
(228)

269 - ICMPV6_AF_NAT

Description AF NAT ICMPv6 traffic (6->4)

Data Field Count 20

Data fields

Field # Field Type Length

1 BYTES BYTES (1) 8

FortiOS 6.4.6 Administration Guide 561


Fortinet Technologies Inc.
Network

Field # Field Type Length

2 OUT_BYTES OUT_BYTES (23) 8

3 PKTS PKTS (2) 4

4 OUT_PKTS OUT_PKTS (24) 4

5 FIRST_SWITCHED FIRST_SWITCHED (22) 4

6 LAST_SWITCHED LAST_SWITCHED (21) 4

7 INPUT_SNMP INPUT_SNMP (10) 2

8 OUTPUT_SNMP OUTPUT_SNMP (14) 2

9 ICMP_TYPE ICMP_TYPE (32) 2

10 PROTOCOL PROTOCOL (4) 1

11 APPLICATION_ID APPLICATION_ID (95) 9

12 FLOW_FLAGS FLOW_FLAGS (65) 2

13 FORWARDING_STATUS FORWARDING_STATUS (89) 1

14 flowEndReason flowEndReason (136) 1

15 IPV6_SRC_ADDR IPV6_SRC_ADDR (27) 16

16 IPV6_DST_ADDR IPV6_DST_ADDR (28) 16

17 postNATSourceIPv4Address postNATSourceIPv4Address (225) 4

18 postNATDestinationIPv4Address postNATDestinationIPv4Address (226) 4

19 postNAPTSourceTransportPort postNAPTSourceTransportPort (227) 2

20 postNAPTDestinationTransportPort postNAPTDestinationTransportPort  2
(228)

FortiOS 6.4.6 Administration Guide 562


Fortinet Technologies Inc.
SD-WAN

SD-WAN is a software-defined approach to managing Wide-Area Networks (WAN). It allows you to offload internet-
bound traffic, meaning that private WAN services remain available for real-time and mission critical applications. This 
added flexibility improves traffic flow and reduces pressure on the network.
SD-WAN platforms create hybrid networks that integrate broadband and other network services into the corporate WAN 
while maintaining the performance and security of real-time and sensitive applications.
SD-WAN with Application Aware Routing can measure and monitor the performance of multiple services in a hybrid 
network. It uses application routing to offer more granular control of where and when an application uses a specific 
service, allowing  better use of the overall network.
Some of the key benefits of SD-WAN include:
 l Reduced cost with transport independence across MPLS, 3G/4G LTE, and others.
 l Improve business application performance thanks to increased availability and agility.
 l Optimized user experience and efficiency with SaaS and public cloud applications.
SD-WAN has 4 objects:
 l SD-WAN zones
SD-WAN is divided into zones. SD-WAN member interfaces are assigned to zones, and zones are used in policies 
as source and destination interfaces. You can define multiple zones to group SD-WAN interfaces together, allowing 
logical groupings for overlay and underlay interfaces. See SD-WAN zones on page 574.
 l SD-WAN members
Also called interfaces, SD-WAN members are the ports and interfaces that are used to run traffic. At least one 
interface must be configured for SD-WAN to function; up to 255 member interfaces can be configured. See 
Configuring the SD-WAN interface on page 564.
 l Performance SLAs
Also called health-checks, performance SLAs are used to monitor member interface link quality, and to detect link 
failures. They can be used to remove routes, and to reroute traffic when an SD-WAN member cannot detect the 
server. They can also be used in SD-WAN rules to select the preferred member interface for forwarding traffic. See 
Performance SLA on page 579.
 l SD-WAN rules
Also called services, SD-WAN rules are used to control path selection. Specific traffic can be dynamically sent to the 
best link, or use a specific route. There are five modes:
 l auto: Assign interfaces a priority based on quality.
 l manual: Assign interfaces a priority manually.
 l priority: Assign interfaces a priority based on the link-cost-factor quality of the interface.
 l sla: Assign interfaces a priority based on selected SLA settings.
 l load-balance: Distribute traffic among all available links based on the load balance algorithm.
See SD-WAN rules on page 598.

SD-WAN quick start

FortiOS 6.4.6 Administration Guide 563


Fortinet Technologies Inc.
SD-WAN

This section provides an example of how to start using SD-WAN for load balancing and redundancy.
In this example, two ISP internet connections, wan1 (DHCP) and wan2 (static), use SD-WAN to balance traffic between 
them at 50% each. 

 1. Configuring the SD-WAN interface on page 564
 2. Adding a static route on page 565
 3. Selecting the implicit SD-WAN algorithm on page 565
 4. Configuring firewall policies for SD-WAN on page 566
 5. Link monitoring and failover on page 567
 6. Results on page 568
 7. Configuring SD-WAN in the CLI on page 572

Configuring the SD-WAN interface

First, SD-WAN must be enabled and member interfaces must be selected and added to a zone. The selected FortiGate 
interfaces can be of any type (physical, aggregate, VLAN, IPsec, and others), but must be removed from any other 
configurations on the FortiGate.
In this step, two interfaces are configured and added to the default SD-WAN zone (virtual-wan-link) as SD-WAN member 
interfaces. This example uses a mix of static and dynamic IP addresses; your deployment could also use only one or the 
other.
Once the SD-WAN members are created and added to a zone, the zone can be used in firewall policies, and the whole 
SD-WAN can be used in static routes.

To configure SD-WAN members:

 1. Configure the wan1 and wan2 interfaces. See Interface settings on page 385 for details.
 a. Set the wan1 interface Addressing mode to DHCP and Distance to 10.

By default, a DHCP interface has a distance of 5, and a static route has a distance of 
10. It is important to account for this when configuring your SD-WAN for 50/50 load 
balancing by setting the DHCP interface's distance to 10.

 b. Set the wan2 interface IP/Netmask to 10.100.20.1 255.255.255.0.


 2. Go to Network > SD-WAN Zones. Routing for each SD-WAN interface is defined here.
 3. Click Create New > SD-Member.

FortiOS 6.4.6 Administration Guide 564


Fortinet Technologies Inc.
SD-WAN

 4. Set the Interface to wan1.
 5. Leave SD-WAN Zone as virtual-wan-link.
 6. As wan1 uses DHCP, leave Gateway set to 0.0.0.0.
If IPv6 visibility is enabled in the GUI, an IPv6 gateway can also be added for each member. See Feature visibility 
on page 940 for details.
 7. Leave Cost as 0.
The Cost field is used by the Lowest Cost (SLA) strategy. The link with the lowest cost is chosen to pass traffic. The 
lowest possible Cost is 0.

 8. Set Status to Enable, and click OK.
 9. Repeat the above steps for wan2, setting Gateway to the ISP's gateway: 10.100.20.2.

Adding a static route

You must configure a default route for the SD-WAN. The default gateways for each SD-WAN member interface do not 
need to be defined in the static routes table. FortiGate will decide what route or routes are preferred using Equal Cost 
Multi-Path (ECMP) based on distance and priority.

To create a static route for SD-WAN:

 1. Go to Network > Static Routes.


 2. Click Create New. The New Static Route page opens.
 3. Set Destination to Subnet, and leave the IP address and subnet mask as 0.0.0.0/0.0.0.0.
 4. From the Interface drop-down list, select SD-WAN.

 5. Ensure that Status is Enabled.
 6. Click OK.

Selecting the implicit SD-WAN algorithm

FortiOS 6.4.6 Administration Guide 565


Fortinet Technologies Inc.
SD-WAN

SD-WAN rules define specific routing options to route traffic to an SD-WAN member.
If no routing rules are defined, the default Implicit rule is used. It can be configured to use one of five different load 
balancing algorithms. See Implicit rule on page 599 for more details and examples.
This example shows four methods to equally balance traffic between the two WAN connections.  Go to Network > SD-
WAN Rules and edit the sd-wan rule to select the method that is appropriate for your requirements.
 l Source IP (CLI command: source-ip-based):
Select this option to balance traffic equally between the SD-WAN members according to a hash algorithm based on 
the source IP addresses.
 l Session (weight-based):
Select this option to balance traffic equally between the SD-WAN members by the session numbers ratio among its 
members. Use weight 50 for each of the 2 members.
 l Source-Destination IP (source-dest-ip-based):
Select this option to balance traffic equally between the SD-WAN members according to a hash algorithm based on 
the source and destination IP addresses.
 l Volume (measured-volume-based):
Select this option to balance traffic equally between the SD-WAN members according to the bandwidth ratio among 
its members.

Configuring firewall policies for SD-WAN

SD-WAN zones can be used in policies as source and destination interfaces. Individual SD-WAN members cannot be 
used in policies.
You must configure a policy that allows traffic from your organization's internal network to the SD-WAN zone. Policies 
configured with the SD-WAN zone apply to all SD-WAN interface members in that zone.

To create a firewall policy for SD-WAN:

 1. Go to Policy & Objects > Firewall Policy.


 2. Click Create New. The New Policy page opens.

FortiOS 6.4.6 Administration Guide 566


Fortinet Technologies Inc.
SD-WAN

 3. Configure the following:

Name Enter a name for the policy.

Incoming Interface internal

Outgoing Interface virtual-wan-link

Source all

Destination all

Schedule always

Service ALL

Action ACCEPT

Firewall / Network Options Enable NAT and set IP Pool Configuration to Use Outgoing Interface Address.

Security Profiles Apply profiles as required.

Logging Options Enable Log Allowed Traffic and select All Sessions. This allows you to verify 


results later.

 4. Enable the policy, then click OK.

Link monitoring and failover

Performance SLA link monitoring measures the health of links that are connected to SD-WAN member interfaces by 
sending probing signals through each link to a server, and then measuring the link quality based on latency, jitter, and 
packet loss. If a link is broken, the routes on that link are removed and traffic is routed through other links. When the link 
is working again, the routes are re-enabled. This prevents traffic being sent to a broken link and lost.

 
In this example, the detection server IP address is 208.91.112.53. A performance SLA is created so that, if ping fails per 
the metrics defined, the routes to that interface are removed and traffic is detoured to the other interface. The ping 
protocol is used, but other protocols could also be selected as required. 

FortiOS 6.4.6 Administration Guide 567


Fortinet Technologies Inc.
SD-WAN

To configure a performance SLA:

 1. Go to Network > Performance SLA.


 2. Click Create New. The New Performance SLA page opens.
 3. Enter a name for the SLA and set Protocol to Ping.
 4. In the Server field, enter the detection server IP address (208.91.112.53 in this example).
 5. In the Participants field, select Specify and add wan1 and wan2.

SLA targets are not required for link monitoring.
 6. Configure the required metrics in Link Status.
 7. Ensure that Update static route is enabled. This disables static routes for the inactive interface and restores routes 
on recovery.
 8. Click OK.

Results

The following GUI pages show the function of the SD-WAN and can be used to confirm that it is setup and running 
correctly:
 l Interface usage on page 568
 l Performance SLA on page 570
 l Routing table on page 571
 l Firewall policy on page 572

Interface usage

Go to Network > SD-WAN Zones to review the SD-WAN interfaces' usage.

FortiOS 6.4.6 Administration Guide 568


Fortinet Technologies Inc.
SD-WAN

Bandwidth

Select Bandwidth to view the amount of downloaded and uploaded data for each interface.

Volume

Select Volume to see donut charts of the received and sent bytes on the interfaces.

Sessions

Select Sessions to see a donut chart of the number of active sessions on each interface.

FortiOS 6.4.6 Administration Guide 569


Fortinet Technologies Inc.
SD-WAN

Performance SLA

Go to Network > Performance SLA and select the SLA from the table (server in this example) to view the packet loss, 


latency, and jitter on each SD-WAN member in the health check server.

Packet loss

Select Packet Loss to see the percentage of packets lost for each member.

Latency

Select Latency to see the current latency, in milliseconds, for each member.

FortiOS 6.4.6 Administration Guide 570


Fortinet Technologies Inc.
SD-WAN

Jitter

Select Jitter to see the jitter, in milliseconds, for each member.

Routing table

Go to Dashboard > Network and expand the Static & Dynamic Routing widget to review all static and dynamic routes. 


For more information about the widget, see Static & Dynamic Routing Monitor on page 70.

FortiOS 6.4.6 Administration Guide 571


Fortinet Technologies Inc.
SD-WAN

Firewall policy

Go to Policy & Objects > Firewall Policy to review the SD-WAN policy.

Configuring SD-WAN in the CLI

This example can be entirely configured using the CLI.

To configure SD-WAN in the CLI:

 1. Configure the wan1 and wan2 interfaces:
config system interface
edit "wan1"
set alias to_ISP1
set mode dhcp
set distance 10
next
edit "wan2"
set alias to_ISP2
set ip 10.100.20.1 255.255.255.0
next
end

 2. Enable SD-WAN and add the interfaces as members:
config system sdwan
set status enable
config members
edit 1
set interface "wan1"
next
edit 2
set interface "wan2"
set gateway 10.100.20.2
next
end
end

If no SD-WAN zone is specified, members are added to the default virtual-wan-link zone.

FortiOS 6.4.6 Administration Guide 572


Fortinet Technologies Inc.
SD-WAN

 3. Create a static route for SD-WAN:
config router static
edit 1
set sdwan enable
next
end

 4. Select the implicit SD-WAN algorithm:
config system sdwan
set load-balance-mode {source-ip-based | weight-based | source-dest-ip-based |
measured-volume-based}
end

 5. Create a firewall policy for SD-WAN:
config firewall policy
edit <policy_id>
set name <policy_name>
set srcintf "internal"
set dstintf "virtual-wan-link"
set srcaddr all
set dstaddr all
set action accept
set schedule always
set service ALL
set utm-status enable
set ssl-ssh-profile <profile_name>
set av-profile <profile_name>
set webfilter-profile <profile_name>
set dnsfilter-profile <profile_name>
set emailfilter-profile <profile_name>
set ips_sensor <sensor_name>
set application-list <app_list>
set voip-profile <profile_name>
set logtraffic all
set nat enable
set status enable
next
end

 6. Configure a performance SLA:
config system sdwan
config health-check
edit "server"
set server "208.91.112.53"
set update-static-route enable
set members 1 2
next
end
end

FortiOS 6.4.6 Administration Guide 573


Fortinet Technologies Inc.
SD-WAN

Results

To view the routing table:

# get router info routing-table all

Routing table for VRF=0


Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

S* 0.0.0.0/0 [1/0] via 172.16.20.2, wan1


[1/0] via 10.100.20.2, wan2
C 10.100.20.0/24 is directly connected, wan2
C 172.16.20.2/24 is directly connected, wan1
C 192.168.0.0/24 is directly connected, internal

To diagnose the Performance SLA status:

FGT # diagnose sys sdwan health-check


Health Check(server):
Seq(1): state(alive), packet-loss(0.000%) latency(15.247), jitter(5.231) sla_map=0x0
Seq(2): state(alive), packet-loss(0.000%) latency(13.621), jitter(6.905) sla_map=0x0

SD-WAN zones

SD-WAN is divided into zones. SD-WAN member interfaces are assigned to zones, and zones are used in policies as 
source and destination interfaces.
You can define multiple zones to group SD-WAN interfaces together, allowing logical groupings for overlay and underlay 
interfaces. The zones are used in firewall policies to allow for more granular control. SD-WAN members cannot be used 
directly in policies.
Static routes use the entire SD-WAN, not just individual zones or members.

In the CLI:
 l config system sdwan has replaced config system virtual-wan-link.
 l diagnose sys sdwan has replaced diagnose sys virtual-wan-link.
 l When configuring a static route, the sdwan variable has replaced the virtual-wan-
link variable.

When the Security Fabric is configured, SD-WAN zones are included in the Security Fabric topology views.

FortiOS 6.4.6 Administration Guide 574


Fortinet Technologies Inc.
SD-WAN

To create an SD-WAN zone in the GUI:

 1. Go to Network > SD-WAN Zones.


The default SD-WAN zone is virtual-wan-link.

 2. Click Create New > SD-WAN Zone.


 3. Enter a name for the new zone.
 4. If SD-WAN members have already been created, add the required members to the zone.
Members can also be added to the zone after it has been created by editing the zone, or when creating or editing the 
member.

 5. Click OK.

FortiOS 6.4.6 Administration Guide 575


Fortinet Technologies Inc.
SD-WAN

To create an SD-WAN interface member in the GUI:

 1. Go to Network > SD-WAN Zones.


 2. Click Create New > SD-WAN Member.
 3. Select an interface. 
The interface can also be left as none and selected later, or click +VPN to create an IPsec VPN for the SD-WAN 
member.
 4. Select the SD-WAN zone that the member will join. A member can also be moved to a different zone at any time.

 5. Set the Gateway, Cost, and Status as required.
 6. Click OK.
The interface list at Network > Interfaces shows the SD-WAN zones and their members.

To create a policy using the SD-WAN zone in the GUI:

 1. Go to Policy & Objects > Firewall Policy, Policy & Objects > Proxy Policy, or Policy & Objects > Security Policy.
 2. Click Create New .
 3. Configure the policy settings as needed, selecting an SD-WAN zone or zones for the incoming and/or outgoing 
interface.

FortiOS 6.4.6 Administration Guide 576


Fortinet Technologies Inc.
SD-WAN

 4. Click OK.

To view SD-WAN zones in a Security Fabric topology:

 1. Go to Security Fabric > Physical Topology or Security Fabric > Logical Topology. The SD-WAN zones and their 
members are shown.

FortiOS 6.4.6 Administration Guide 577


Fortinet Technologies Inc.
SD-WAN

To configure SD-WAN in the CLI:

 1. Enable SD-WAN and create a zone:
config system sdwan
set status enable
config zone
edit "vpn-zone"
next
end
end

 2. Configure SD-WAN members and add them to a zone:
config system sdwan
config members
edit 1
set interface "to_FG_B_root"
set zone "vpn-zone"
next
edit 2
set interface "GRE_1"
set zone "vpn-zone"
next
end
end

To create a policy using the SD-WAN zone in the CLI:

config firewall policy


edit <policy_id>
set name <policy_name>
set srcintf internal
set dstintf vpn-zone

FortiOS 6.4.6 Administration Guide 578


Fortinet Technologies Inc.
SD-WAN

set srcaddr all


set dstaddr all
set action accept
set schedule always
set service ALL
set utm-status enable
set ssl-ssh-profile <profile_name>
set av-profile <profile_name>
set webfilter-profile <profile_name>
set dnsfilter-profile <profile_name>
set emailfilter-profile <profile_name>
set ips_sensor <sensor_name>
set application-list <app_list>
set voip-profile <profile_name>
set logtraffic all
set nat enable
set status enable
next
end

Performance SLA

The following topics provide instructions on configuring performance SLA:
 l Link health monitor on page 579
 l Factory default health checks on page 582
 l Health check options on page 584
 l Link monitoring example on page 587
 l SLA targets example on page 588
 l Health check packet DSCP marker support on page 590
 l Interface speedtest on page 590
 l Monitor performance SLA on page 592
 l SLA monitoring using the REST API on page 595

Link health monitor

Performance SLA link health monitoring measures the health of links that are connected to SD-WAN member interfaces 
by sending probing signals through each link to a server and measuring the link quality based on latency, jitter, and 
packet loss. If a link fails all of the health checks, the routes on that link are removed from the SD-WAN link load 
balancing group, and traffic is routed through other links. When the link is working again the routes are reestablished. 
This prevents traffic being sent to a broken link and lost.
When an SD-WAN member has multiple health checks configured, all of the checks must fail for the routes on that link to 
be removed from the SD-WAN link load balancing group.
Two health check servers can be configured to ensure that, if there is a connectivity issue, the interface is at fault and not 
the server. A server can only be used in one health check.

FortiOS 6.4.6 Administration Guide 579


Fortinet Technologies Inc.
SD-WAN

The FortiGate uses the first server configured in the health check server list to perform the health check. If the first server 
is unavailable, then the second server is used. The second server continues to be used until it becomes unavailable, and 
then the FortiGate returns to the first server, if it is available. If both servers are unavailable, then the health check fails.
You can configure the protocol that is used for status checks, including: Ping, HTTP, DNS, TCP echo, UDP echo, two-
way active measurement protocol (TWAMP), TCP connect, and FTP. In the GUI, only Ping, HTTP, and DNS are 
available.
You can view link quality measurements at Network > Performance SLA. The table shows the default health checks, the 
health checks that you configured, and information about each health check. The values shown in the Packet Loss, 
Latency, and Jitter columns are for the health check server that the FortiGate is currently using. The green up arrows 
indicate that the server is responding, and does not indicate if the health checks are being met. See Results on page 568 
for more information.

To configure a link health monitor in the GUI:

 1. Go to Network > Performance SLA and click Create New.


 2. Set a Name for the SLA.
 3. Set the Protocol that you need to use for status checks: Ping, HTTP, or DNS.
 4. Set Server to the IP addresses of up to two servers that all of the SD-WAN members in the performance SLA can 
reach.
 5. Set Participants to All SD-WAN Members, or select Specify to choose specific SD-WAN members.
 6. Set Enable probe packets to enable or disable sending probe packets.
 7. Configure SLA Target:
If the health check is used in an SD-WAN rule that uses Manual or Best Quality strategies, enabling SLA Target is 
optional. If the health check is used in an SD-WAN rule that uses Lowest Cost (SLA) or Maximum Bandwidth (SLA) 
strategies, then SLA Target is enabled. 
When SLA Target is enabled, configure the following:
 l Latency threshold: Calculated based on last 30 probes (default = 5ms).
 l Jitter threshold: Calculated based on last 30 probes (default = 5ms).
 l Packet Loss threshold: Calculated based on last 100 probes (default = 0%).
 8. In the Link Status section configure the following:
 l Check interval: The interval in which the FortiGate checks the interface, in milliseconds (500 - 3600000, default 
= 500).
 l Failures before inactive: The number of failed status checks before the interface shows as inactive (1 - 3600, 
default =5). This setting helps prevent flapping, where the system continuously transfers traffic back and forth 
between links
 l Restore link after: The number of successful status checks before the interface shows as active (1 - 3600, 
default = 5). This setting helps prevent flapping, where the system continuously transfers traffic back and forth 
between links
 9. In the Actions when Inactive section, enable Update static route to disable static routes for inactive interfaces and 
restore routes when interfaces recover.

FortiOS 6.4.6 Administration Guide 580


Fortinet Technologies Inc.
SD-WAN

 10. Click OK.

To configure a link health monitor in the CLI:

config system sdwan


config health-check
edit "PingSLA"
set addr-mode {ipv4 | ipv6}
set server <server1_IP_address> <server2_IP_address>
set protocol {ping | tcp-echo | udp-echo | http | twamp | dns | tcp-connect |
ftp}
set probe-timeout <integer>
set probe-packets {enable | disable}
set interval <integer>
set failtime <integer>
set recoverytime <integer>
set update-static-route {enable | disable}
set members <member_number> ... <member_number>
config sla
edit 1
set link-cost-factor {latency jitter packet-loss}
set latency-threshold <integer>
set jitter-threshold <integer>
set packetloss-threshold <integer>
next
end
next
end
end

Additional settings are available for some of the protocols:

Protocol Additional options

http port <port_number>


http-get <url>
http-match <response_string>

FortiOS 6.4.6 Administration Guide 581


Fortinet Technologies Inc.
SD-WAN

Protocol Additional options

twamp port <port_number>


security mode {none | authentication}
password <password>
packet-size <size>

ftp ftp {passive | port}


ftp-file <path>

For more examples see Health check options on page 584.

Factory default health checks

There are six predefined performance SLA profiles for newly created VDOMs or factory reset FortiGate devices:
 l AWS
 l System DNS
 l FortiGuard
 l Gmail
 l Google Search
 l Office 365
You can view and configure the SLA profiles in Network > Performance SLA.

After configuring a health check, you will be able to view packet loss, latency, and jitter data for the SLA profiles. If a 
value is colored red, it means that it failed to meet the SLA requirements.

FortiOS 6.4.6 Administration Guide 582


Fortinet Technologies Inc.
SD-WAN

To configure the performance SLA profiles in the CLI:

config health-check
edit "Default_AWS"
set server "aws.amazon.com"
set protocol http
set interval 1000
set probe-timeout 1000
set recoverytime 10
config sla
edit 1
set latency-threshold 250
set jitter-threshold 50
set packetloss-threshold 5
next
end
next
edit "Default_DNS"
set system-dns enable
set interval 1000
set probe-timeout 1000
set recoverytime 10
config sla
edit 1
set latency-threshold 250
set jitter-threshold 50
set packetloss-threshold 5
next
end
next
edit "Default_FortiGuard"
set server "fortiguard.com"
set protocol http
set interval 1000
set probe-timeout 1000
set recoverytime 10
config sla
edit 1
set latency-threshold 250
set jitter-threshold 50
set packetloss-threshold 5

FortiOS 6.4.6 Administration Guide 583


Fortinet Technologies Inc.
SD-WAN

next
end
next
edit "Default_Gmail"
set server "gmail.com"
set interval 1000
set probe-timeout 1000
set recoverytime 10
config sla
edit 1
set latency-threshold 250
set jitter-threshold 50
set packetloss-threshold 2
next
end
next
edit "Default_Google Search"
set server "www.google.com"
set protocol http
set interval 1000
set probe-timeout 1000
set recoverytime 10
config sla
edit 1
set latency-threshold 250
set jitter-threshold 50
set packetloss-threshold 5
next
end
next
edit "Default_Office_365"
set server "www.office.com"
set protocol http
set interval 1000
set probe-timeout 1000
set recoverytime 10
config sla
edit 1
set latency-threshold 250
set jitter-threshold 50
set packetloss-threshold 5
next
end
next
end

Health check options

Health checks include several protocols and protocol specific options.
The health check protocol options include:

ping Use PING to test the link with the server.

FortiOS 6.4.6 Administration Guide 584


Fortinet Technologies Inc.
SD-WAN

tcp-echo Use TCP echo to test the link with the server.

udp-echo Use UDP echo to test the link with the server.

http Use HTTP-GET to test the link with the server.

twamp Use TWAMP to test the link with the server.

dns Use DNS query to test the link with the server.
The FortiGate sends a DNS query for an A Record and the response matches the expected IP 
address.

tcp-connect Use a full TCP connection to test the link with the server.
The method to measure the quality of the TCP connection can be:
 l half-open: FortiGate sends SYN and gets SYN-ACK. The latency is based on the 
round trip between SYN and SYN-ACK (default).
 l half-close: FortiGate sends FIN and gets FIN-ACK. The latency is based on the 
round trip between FIN and FIN-ACK.

ftp Use FTP to test the link with the server.
The FTP mode can be:
 l passive: The FTP health-check initiates and establishes the data connection (default).
 l port: The FTP server initiates and establishes the data connection.

To use UDP-echo and TCP-echo as health checks:

config system sdwan


set status enable
config health-check
edit "h4_udp1"
set protocol udp-echo
set port 7
set server <server>
next
edit "h4_tcp1"
set protocol tcp-echo
set port 7
set server <server>
next
edit "h6_udp1"
set addr-mode ipv6
set server "2032::12"
set protocol udp-echo
set port 7
next
end
end

To use DNS as a health check, and define the IP address that the response must match:

config system sdwan


set status enable
config health-check
edit "h4_dns1"

FortiOS 6.4.6 Administration Guide 585


Fortinet Technologies Inc.
SD-WAN

set protocol dns


set dns-request-domain "ip41.forti2.com"
set dns-match-ip 1.1.1.1
next
edit "h6_dns1"
set addr-mode ipv6
set server "2000::15.1.1.4"
set protocol dns
set port 53
set dns-request-domain "ip61.xxx.com"
next
end
end

To use TCP Open (SYN/SYN-ACK) and TCP Close (FIN/FIN-ACK) to verify connections:

config system sdwan


set status enable
config health-check
edit "h4_tcpconnect1"
set protocol tcp-connect
set port 443
set quality-measured-method {half-open | half-close}
set server <server>
next
edit "h6_tcpconnect1"
set addr-mode ipv6
set server "2032::13"
set protocol tcp-connect
set port 444
set quality-measured-method {half-open | half-close}
next
end
end

To use active or passive mode FTP to verify connections:

config system sdwan


set status enable
config health-check
edit "h4_ftp1"
set protocol ftp
set port 21
set user "root"
set password ***********
set ftp-mode {passive | port}
set ftp-file "1.txt"
set server <server>
next
edit "h6_ftp1"
set addr-mode ipv6
set server "2032::11"
set protocol ftp
set port 21
set user "root"
set password ***********

FortiOS 6.4.6 Administration Guide 586


Fortinet Technologies Inc.
SD-WAN

set ftp-mode {passive | port}


set ftp-file "2.txt"
next
end
end

Link monitoring example

Performance SLA link monitoring measures the health of links that are connected to SD-WAN member interfaces by 
sending probing signals through each link to a server and measuring the link quality based on latency, jitter, and packet 
loss. If a link is broken, the routes on that link are removed, and traffic is routed through other links. When the link is 
working again, the routes are reenabbled. This prevents traffic being sent to a broken link and lost.

In this example:
 l Interfaces wan1 and wan2 connect to the internet through separate ISPs
 l The detection server IP address is 208.91.114.182
A performance SLA is created so that, if one link fails, its routes are removed and traffic is detoured to the other link. 

To configure a Performance SLA using the GUI:

 1. On the FortiGate, add wan1 and wan2 as SD-WAN members, then add a policy and static route. See SD-WAN 
quick start on page 563 for details.
 2. Go to Network > Performance SLA.
 3. Click Create New. The Performance SLA page opens.
 4. Enter a name for the SLA and select a protocol.
 5. In the Server field, enter the detection server IP address (208.91.114.182 in this example).

FortiOS 6.4.6 Administration Guide 587


Fortinet Technologies Inc.
SD-WAN

 6. In the Participants field, select both wan1 and wan2.

 7. Configured the remaining settings as needed, then click OK.

To configure a Performance SLA using the CLI:

config system sdwan


config health-check
edit "server"
set server "208.91.114.182"
set update-static-route enable
set members 1 2
next
end
end

To diagnose the Performance SLA status:

FGT # diagnose sys sdwan health-check


Health Check(server):
Seq(1): state(alive), packet-loss(0.000%) latency(15.247), jitter(5.231) sla_map=0x0
Seq(2): state(alive), packet-loss(0.000%) latency(13.621), jitter(6.905) sla_map=0x0

SLA targets example

SLA targets are a set of constraints that are used in SD-WAN rules to control the paths that traffic take.
The available constraints are:
 l Latency threshold:  Latency for SLA to make decision, in milliseconds (0 - 10000000, default = 5).
 l Jitter threshold: Jitter for SLA to make decision, in milliseconds (0 - 10000000, default = 5).
 l Packet loss threshold: Packet loss for SLA to make decision, in percentage (0 - 100, default = 0).

FortiOS 6.4.6 Administration Guide 588


Fortinet Technologies Inc.
SD-WAN

To configure Performance SLA targets using the GUI:

 1. On the FortiGate, add wan1 and wan2 as SD-WAN members, then add a policy and static route. See SD-WAN 
quick start on page 563 for details.
 2. Go to Network > Performance SLA.
 3. Create a new Performance SLA or edit an existing one. See Link monitoring example on page 587.
 4. Enable SLA Targetsand configure the constraints. To add multiple SLA targets, use the CLI. 

 5. Configured the remaining settings as needed, then click OK.

To configure Performance SLA targets using the GUI:

config system sdwan


config health-check
edit "server"
set server "208.91.114.182"
set members 1 2
config sla
edit 1
set link-cost-factor latency jitter packet-loss
set latency-threshold 10
set jitter-threshold 10
set packetloss-threshold 1

FortiOS 6.4.6 Administration Guide 589


Fortinet Technologies Inc.
SD-WAN

next
end
next
end
end

The link-cost-factor variable is used to select which constraints are enabled.

Health check packet DSCP marker support

SD-WAN health check probe packets support Differentiated Services Code Point (DSCP) markers for accurate 
evaluation of the link performance for high priority applications by upstream devices. 
When the SD-WAN health check packet is sent out, the DSCP can be set with a CLI command.

To mark health-check packets with DSCP:

config system sdwan


config health-check
edit <name>
set diffservcode <6 bits binary, range 000000-111111>
next
end
end

Interface speedtest

An interface speedtest can be performed on WAN interfaces in the GUI. The results of the test can be added to the 
interface's Estimated bandwidth. The estimated upstream and downstream bandwidths can be used in SD-WAN service 
rules to determine the best link to use when either Maximize Bandwidth or Best Quality strategies are selected. 
An SD-WAN Network Monitor license is required to use the speedtest. The License widget and the System > FortiGuard 
page show license status.

FortiOS 6.4.6 Administration Guide 590


Fortinet Technologies Inc.
SD-WAN

To run an interface speedtest in the GUI:

 1. Go to Network > Interfaces.


 2. Edit a WAN interface. The interfaces can be grouped by role using the grouping dropdown on the right side of the 
toolbar.
 3. Click Execute speed test in the right pane.

FortiOS 6.4.6 Administration Guide 591


Fortinet Technologies Inc.
SD-WAN

 4. When the test completes, click Apply results to estimated bandwidth.

The speedtest results are used to populate the Estimated bandwidth fields.
 5. Click OK.

The FortiGate must be connected to FortiGuard, and able to reach either the AWS or Google 
speedtest servers.

Monitor performance SLA

SD-WAN diagnostics can be used to help maintain your SD-WAN solution

Monitoring SD-WAN link quality status

Link quality plays a significant role in link selection for SD-WAN. Investigate any prolonged issues with packet loss, 
latency, or jitter to ensure that your network does not experience degraded performance or an outage.
You can monitor the link quality status of SD-WAN interface members at Network > Performance SLA.

The live charts show the packet loss, latency, or jitter for the selected health check. Hover the cursor over a line in the 
chart to see the specific value for that interface at that specific time.

FortiOS 6.4.6 Administration Guide 592


Fortinet Technologies Inc.
SD-WAN

The table shows information about each health check, including the configured servers, link quality data, and thresholds. 
The colored arrow indicates the status of the interface when the last status check was performed: green means that the 
interface was active, and red means that the interface was inactive. Hover the cursor over the arrow for additional 
information.

Monitoring system event logs

The features adds an SD-WAN daemon function to keep a short, 10 minute history of SLA that can be viewed in the CLI.
Performance SLA results related to interface selection, session failover, and other information, can be logged. These 
logs can then be used for long-term monitoring of traffic issues at remote sites, and for reports and views in 
FortiAnalyzer.
The time intervals that Performance SLA fail and pass logs are generated in can be configured.

To configure the fail and pass logs' generation time interval:

config system sdwan


config health-check
edit "PingSLA"
set sla-fail-log-period 30
set sla-pass-log-period 60
next
end
end

To view the 10 minute Performance SLA link status history:

FGDocs # diagnose sys sdwan sla-log PingSLA 1


Timestamp: Fri Sep 4 10:32:37 2020, vdom root, health-check PingSLA, interface: wan2,
status: up, latency: 4.455, jitter: 0.430, packet loss: 0.000%.
Timestamp: Fri Sep 4 10:32:37 2020, vdom root, health-check PingSLA, interface: wan2,
status: up, latency: 4.461, jitter: 0.436, packet loss: 0.000%.
Timestamp: Fri Sep 4 10:32:38 2020, vdom root, health-check PingSLA, interface: wan2,
status: up, latency: 4.488, jitter: 0.415, packet loss: 0.000%.
...
Timestamp: Fri Sep 4 10:42:36 2020, vdom root, health-check PingSLA, interface: wan2,
status: up, latency: 6.280, jitter: 0.302, packet loss: 0.000%.
Timestamp: Fri Sep 4 10:42:37 2020, vdom root, health-check PingSLA, interface: wan2,
status: up, latency: 6.261, jitter: 0.257, packet loss: 0.000%.
Timestamp: Fri Sep 4 10:42:37 2020, vdom root, health-check PingSLA, interface: wan2,
status: up, latency: 6.229, jitter: 0.245, packet loss: 0.000%.

SLA pass logs

The FortiGate generates Performance SLA logs at the specified pass log interval (sla-pass-log-period) when SLA 
passes.
3: date=2019-02-28 time=11:53:26 logid="0100022925" type="event" subtype="system"
level="information" vd="root" eventtime=1551383604 logdesc="Link monitor SLA information"
name="ping" interface="R160" status="up" msg="Latency: 0.013, jitter: 0.001, packet loss:
0.000%, inbandwidth: 0Mbps, outbandwidth: 0Mbps, bibandwidth: 0Mbps, sla_map: 0x1"
7: date=2019-02-28 time=11:52:26 logid="0100022925" type="event" subtype="system"
level="information" vd="root" eventtime=1551383545 logdesc="Link monitor SLA information"

FortiOS 6.4.6 Administration Guide 593


Fortinet Technologies Inc.
SD-WAN

name="ping" interface="R160" status="up" msg="Latency: 0.013, jitter: 0.002, packet loss:


0.000%, inbandwidth: 0Mbps, outbandwidth: 0Mbps, bibandwidth: 0Mbps, sla_map: 0x1"

In the FortiAnalyzer GUI:

SLA fail logs

The FortiGate generates Performance SLA logs at the specified fail log interval (sla-fail-log-period) when SLA 
fails.
6: date=2019-02-28 time=11:52:32 logid="0100022925" type="event" subtype="system"
level="notice" vd="root" eventtime=1551383552 logdesc="Link monitor SLA information"
name="ping" interface="R150" status="down" msg="Latency: 0.000, jitter: 0.000, packet loss:
100.000%, inbandwidth: 0Mbps, outbandwidth: 200Mbps, bibandwidth: 200Mbps, sla_map: 0x0"
8: date=2019-02-28 time=11:52:02 logid="0100022925" type="event" subtype="system"
level="notice" vd="root" eventtime=1551383522 logdesc="Link monitor SLA information"
name="ping" interface="R150" status="down" msg="Latency: 0.000, jitter: 0.000, packet loss:
100.000%, inbandwidth: 0Mbps, outbandwidth: 200Mbps, bibandwidth: 200Mbps, sla_map: 0x0"

In the FortiAnalyzer GUI:

FortiOS 6.4.6 Administration Guide 594


Fortinet Technologies Inc.
SD-WAN

SLA monitoring using the REST API

SLA log information and interface SLA information can be monitored using the REST API. This feature is also be used by 
FortiManager as part of its detailed SLA monitoring and drill-down features.

Interface log command example:

https://172.172.172.9/api/v2/monitor/virtual-wan/interface-log
{
"http_method":"GET",
"results":[
{
"interface":"port13",
"logs":[
{
"timestamp":1547087168,
"tx_bandwidth":3447,
"rx_bandwidth":3457,
"bi_bandwidth":6904,
"tx_bytes":748875,
"rx_bytes":708799,
"egress_queue":[
]
},
{
"timestamp":1547087178,
"tx_bandwidth":3364,
"rx_bandwidth":3400,
"bi_bandwidth":6764,
"tx_bytes":753789,
"rx_bytes":712835,
"egress_queue":[
]
},
....
....

SLA log command example:

https://172.172.172.9/api/v2/monitor/virtual-wan/sla-log
{
"http_method":"GET",
"results":[
{
"name":"ping",
"interface":"spoke11-p1",
"logs":[
{
"timestamp":1614813142,
"link":"up",
"latency":0.13763333857059479,
"jitter":0.02996666356921196,
"packetloss":0
},

FortiOS 6.4.6 Administration Guide 595


Fortinet Technologies Inc.
SD-WAN

"child_intfs":{
"spoke11-p1_0":[
{
"timestamp":1614813142,
"link":"up",
"latency":0.12413334846496582,
"jitter":0.028366668149828911,
"packetloss":0
},

{
"name":"ping",
"interface":"spoke12-p1",
"logs":[
{
"timestamp":1614813143,
"link":"up",
"latency":0.11373332887887955,
"jitter":0.023099998012185097,
"packetloss":0
},

"child_intfs":{
"spoke12-p1_0":[
{
"timestamp":1614813143,
"link":"up",
"latency":0.0930333212018013,
"jitter":0.011033335700631142,
"packetloss":0
},
....
....

Health check command example:

https://172.172.172.9/api/v2/monitor/virtual-wan/health-check
{
"http_method":"GET",
"results":{
"ping":{
"spoke11-p1":{
"status":"up",
"latency":0.13406667113304138,
"jitter":0.023000005632638931,
"packet_loss":0,
"packet_sent":29722,
"packet_received":29718,
"sla_targets_met":[
1
],
"session":2,
"tx_bandwidth":1353,
"rx_bandwidth":1536,
"state_changed":1614798274,
"child_intfs":{

FortiOS 6.4.6 Administration Guide 596


Fortinet Technologies Inc.
SD-WAN

"spoke11-p1_0":{
"status":"up",
"latency":0.12929999828338623,
"jitter":0.028200000524520874,
"packet_loss":0,
"packet_sent":29626,
"packet_received":29625,
"sla_targets_met":[
1
],
"session":0,
"tx_bandwidth":2608,
"rx_bandwidth":1491,
"state_changed":0
}
}
},
"spoke12-p1":{
"status":"up",
"latency":0.11356667429208755,
"jitter":0.015699999406933784,
"packet_loss":0,
"packet_sent":29722,
"packet_received":29717,
"sla_targets_met":[
1
],
"session":2,
"tx_bandwidth":1353,
"rx_bandwidth":1536,
"state_changed":1614798274,
"child_intfs":{
"spoke12-p1_0":{
"status":"up",
"latency":0.095466658473014832,
"jitter":0.0092999991029500961,
"packet_loss":0,
"packet_sent":29687,
"packet_received":29686,
"sla_targets_met":[
1
],
"session":0,
"tx_bandwidth":1309,
"rx_bandwidth":2553,
"state_changed":0
}
}
}
}
},
....
....

FortiOS 6.4.6 Administration Guide 597


Fortinet Technologies Inc.
SD-WAN

CLI diagnose commands:

# diagnose sys sdwan intf-sla-log port13


Timestamp: Wed Jan 9 18:33:49 2019, used inbandwidth: 3208bps, used outbandwidth:
3453bps, used bibandwidth: 6661bps, tx bytes: 947234bytes, rx bytes: 898622bytes.
Timestamp: Wed Jan 9 18:33:59 2019, used inbandwidth: 3317bps, used outbandwidth:
3450bps, used bibandwidth: 6767bps, tx bytes: 951284bytes, rx bytes: 902937bytes.
Timestamp: Wed Jan 9 18:34:09 2019, used inbandwidth: 3302bps, used outbandwidth:
3389bps, used bibandwidth: 6691bps, tx bytes: 956268bytes, rx bytes: 907114bytes.
Timestamp: Wed Jan 9 18:34:19 2019, used inbandwidth: 3279bps, used outbandwidth:
3352bps, used bibandwidth: 6631bps, tx bytes: 958920bytes, rx bytes: 910793bytes.
Timestamp: Wed Jan 9 18:34:29 2019, used inbandwidth: 3233bps, used outbandwidth:
3371bps, used bibandwidth: 6604bps, tx bytes: 964374bytes, rx bytes: 914854bytes.
Timestamp: Wed Jan 9 18:34:39 2019, used inbandwidth: 3235bps, used outbandwidth:
3362bps, used bibandwidth: 6597bps, tx bytes: 968250bytes, rx bytes: 918846bytes.
Timestamp: Wed Jan 9 18:34:49 2019, used inbandwidth: 3165bps, used outbandwidth:
3362bps, used bibandwidth: 6527bps, tx bytes: 972298bytes, rx bytes: 922724bytes.
Timestamp: Wed Jan 9 18:34:59 2019, used inbandwidth: 3184bps, used outbandwidth:
3362bps, used bibandwidth: 6546bps, tx bytes: 977282bytes, rx bytes: 927019bytes.
# diagnose sys sdwan sla-log ping 1 spoke11-p1_0
Timestamp: Wed Mar 3 15:35:20 2021, vdom root, health-check ping, interface: spoke11-
p1_0, status: up, latency: 0.135, jitter: 0.029, packet loss: 0.000%.

# diagnose sys sdwan sla-log ping 2 spoke12-p1_0


Timestamp: Wed Mar 3 15:36:08 2021, vdom root, health-check ping, interface: spoke12-
p1_0, status: up, latency: 0.095, jitter: 0.010, packet loss: 0.000%.
# diagnose sys sdwan health-check
Health Check(ping):
Seq(1 spoke11-p1): state(alive), packet-loss(0.000%) latency(0.156), jitter(0.043) sla_
map=0x1
Seq(1 spoke11-p1_0): state(alive), packet-loss(0.000%) latency(0.128), jitter(0.024)
sla_map=0x1
Seq(2 spoke12-p1): state(alive), packet-loss(0.000%) latency(0.125), jitter(0.028) sla_
map=0x1
Seq(2 spoke12-p1_0): state(alive), packet-loss(0.000%) latency(0.093), jitter(0.008)
sla_map=0x1

SD-WAN rules

The following topics provide instructions on configuring SD-WAN rules:
 l Implicit rule on page 599
 l Best quality strategy on page 603
 l Lowest cost (SLA) strategy on page 606
 l Maximize bandwidth (SLA) strategy on page 609
 l Minimum number of links for a rule to take effect on page 612
 l Use MAC addresses in SD-WAN rules and policy routes on page 613
 l SD-WAN traffic shaping and QoS on page 614
 l SDN dynamic connector addresses in SD-WAN rules on page 619

FortiOS 6.4.6 Administration Guide 598


Fortinet Technologies Inc.
SD-WAN

 l Application steering using SD-WAN rules on page 622
 l DSCP tag-based traffic steering in SD-WAN on page 633

Implicit rule

SD-WAN rules define specific policy routing options to route traffic to an SD-WAN member. When no explicit SD-WAN 
rules are defined, or if none of the rules are matched, then the default implicit rule is used.
In an SD-WAN configuration, the default route usually points to the SD-WAN interface, so each active member's 
gateway is added to the routing table's default route. FortiOS uses equal-cost multipath (ECMP) to balance traffic 
between the interfaces. One of five load balancing algorithms can be selected:

Source IP (source-ip-based) Traffic is divided equally between the interfaces, including the SD-WAN interface. 
Sessions that start at the same source IP address use the same path.
This is the default selection.

Sessions  (weight-based) The workload is distributing based on the number of sessions that are connected 
through the interface.
The weight that you assign to each interface is used to calculate the percentage of 
the total sessions that are allowed to connect through an interface, and the 
sessions are distributed to the interfaces accordingly.
Sessions with the same source and destination IP addresses (src-ip and dst-
ip) are forwarded to the same path, but are still considered in later session ratio 
calculations.
An interface's weight value cannot be zero.

Spillover  (usage-based) The interface is used until the traffic bandwidth exceeds the ingress and egress 
thresholds that you set for that interface. Additional traffic is then sent through the 
next SD-WAN interface member.

Source-Destination IP  (source- Traffic is divided equally between the interfaces. Sessions that start at the same 
dest-ip-based) source IP address and go to the same destination IP address use the same path.

Volume  (measured-volume- The workload is distributing based on the number of packets that are going 
based) through the interface.
The volume weight that you assign to each interface is used to calculate the 
percentage of the total bandwidth that is allowed to go through an interface, and 
the bandwidth is distributed to the interfaces accordingly.
An interface's volume value cannot be zero.

You cannot exclude an interface from participating in load balancing using the implicit rule. If 
the weight or volume were set to zero in a previous FortiOS version, the value is treated as a 
one.
Interfaces with static routes can be excluded from ECMP if they are configured with a lower 
priority than other static routes.

Examples

The following four examples demonstrate how to use the implicit rules (load-balance mode).

FortiOS 6.4.6 Administration Guide 599


Fortinet Technologies Inc.
SD-WAN

If no SD-WAN zone is specified, members are added to the default virtual-wan-link zone.

Example 1

Outgoing traffic is equally balanced between wan1 and wan2, using source-ip-based or source-dest-ip-based mode.

Using the GUI:

 1. On the FortiGate, enable SD-WAN and add wan1 and wan2 as SD-WAN members, then add a policy and static 
route. See SD-WAN quick start on page 563 for details.
 2. Go to Network > SD-WAN Rules.
 3. Edit the sd-wan rule (the last default rule).
 4. For the Load Balancing Algorithm, select either Source IP or Source-Destination IP.

 5. Click OK.

Using the CLI:

 1. Enable SD-WAN and add wan1 and wan2 as SD-WAN members, then add a policy and static route. See SD-WAN 
quick start on page 563 for details.
 2. Set the load balancing algorithm: 
Source IP based: 
config system sdwan
set load-balance-mode source-ip-based
end

Source-Destination IP based:

FortiOS 6.4.6 Administration Guide 600


Fortinet Technologies Inc.
SD-WAN

config system sdwan


set load-balance-mode source-dest-ip-based
end

Example 2

Outgoing traffic is balanced between wan1 and wan2 with a customized ratio, using weight-based mode: wan1 runs 80% 
of the sessions, and wan2 runs 20% of the sessions.
Sessions with the same source and destination IP addresses (src-ip and dst-ip) will be forwarded to the same 
path, but will still be considered in later session ratio calculations.

Using the GUI:

 1. Go to Network > SD-WAN Rules.


 2. Edit the sd-wan rule (the last default rule).
 3. For the Load Balancing Algorithm, select Sessions.
 4. Enter 80 in the wan1 field, and 20 in the wan2 field.

 5. Click OK.

Using the CLI:

config system sdwan


set load-balance-mode weight-based
config members
edit 1
set interface "wan1"
set weight 80
next
edit 2
set interface "wan2"
set weight 20
next
end
end

Example 3

Outgoing traffic is balanced between wan1 and wan2 with a customized ratio, using measured-volume-based mode: 
wan1 runs 80% of the volume, and wan2 runs 20% of the volume.

FortiOS 6.4.6 Administration Guide 601


Fortinet Technologies Inc.
SD-WAN

Using the GUI:

 1. Go to Network > SD-WAN Rules.


 2. Edit the sd-wan rule (the last default rule).
 3. For the Load Balancing Algorithm, select Volume.
 4. Enter 80 in the wan1 field, and 20 in the wan2 field.
 5. Click OK.

Using the CLI:

config system sdwan


set load-balance-mode measured-volume-based
config members
edit 1
set interface "wan1"
set volume-ratio 80
next
edit 2
set interface "wan2"
set volume-ratio 20
next
end
end

Example 4

Load balancing can be used to reduce costs  when internet connections are charged at different rates. For example, if 
wan2 charges based on volume usage and wan1 charges a fixed monthly fee, we can use wan1 at its maximum 
bandwidth, and use wan2 for overflow.
In this example, wan1's bandwidth is 10Mbps down and 2Mbps up. Traffic will use wan1 until it reaches its spillover limit, 
then it will start to use wan2. Note that auto-asic-offload must be disabled in the firewall policy.

Using the GUI:

 1. On the FortiGate, enable SD-WAN and add wan1 and wan2 as SD-WAN members, then add a policy and static 
route. See SD-WAN quick start on page 563 for details.
 2. Go to Network > SD-WAN Rules.
 3. Edit the sd-wan rule (the last default rule).
 4. For the Load Balancing Algorithm, select Spillover.
 5. Enter 10000 in the wan1 Ingress Spillover Threshold field, and 2000 in the wan1 Egress Spillover Threshold field.

FortiOS 6.4.6 Administration Guide 602


Fortinet Technologies Inc.
SD-WAN

 6. Click OK.

Using the CLI:

config system sdwan


set load-balance-mode usage-based
config members
edit 1
set interface "wan1"
set spillover-threshold 2000
set ingress-spillover-threshold 10000
next
end
end

Best quality strategy

SD-WAN rules are used to control how sessions are distributed to SD-WAN members. Rules can be configured in one of 
five modes:
 l auto: Interfaces are assigned a priority based on quality.
 l Manual (manual): Interfaces are manually assigned a priority.
 l Best Quality (priority): Interface are assigned a priority based on the link-cost-factor of the interface.
 l Lowest Cost (SLA) (sla): Interfaces are assigned a priority based on selected SLA settings. See Lowest cost (SLA) 
strategy on page 606.
 l Maximize Bandwith (SLA) (load-balance): Traffic is distributed among all available links based on the selected 
load balancing algorithm. See Maximize bandwidth (SLA) strategy on page 609.
When using Best Quality mode, SD-WAN will choose the best link to forward traffic by comparing the link-cost-factor, 
selected from one of the following:

GUI CLI Description

Latency latency Select a link based on latency.

Jitter jitter Select a link based on jitter. 

Packet Loss packet-loss Select a link based on packet loss. 

Downstream inbandwidth Select a link based on available bandwidth of incoming traffic. 

Upstream outbandwidth Select a link based on available bandwidth of outgoing traffic. 

Bandwidth bibandwidth Select a link based on available bandwidth of bidirectional traffic. 

Customized profile custom-profile-1 Select link based on customized profile. If selected, set the 


following weights:
 l packet-loss-weight:  Coefficient of packet-loss.
 l latency-weight:  Coefficient of latency.
 l jitter-weight:  Coefficient of jitter.
 l bandwidth-weight:  Coefficient of reciprocal of available 
bidirectional bandwidth.

FortiOS 6.4.6 Administration Guide 603


Fortinet Technologies Inc.
SD-WAN

If the Downstream (inbandwidth), Upstream (outbandwidth), or Bandwidth (bibandwidth) quality criteria is used, 
the FortiGate will compare the bandwidth based on the configured upstream and downstream bandwidth values.
The interface speedtest can be used to populate the bandwidth values based on the speedtest results. See Interface 
speedtest on page 590 for details.

To manually configure the upstream and downstream bandwidth values:

config system interface


edit <interface>
set estimated-upstream-bandwidth <speed in kbps>
set estimated-downstream-bandwidth <speed in kbps>
next
end

Example

In this example, your wan1 and wan2 SD-WAN interfaces connect to two ISPs that both go to the public internet, and you 
want Gmail services to use the link with the least latency.

To configure an SD-WAN rule to use Best Quality:

 1. On the FortiGate, add wan1 and wan2 as SD-WAN members, then add a policy and static route. See SD-WAN 
quick start on page 563 for details.
 2. Create a new Performance SLA named google. See Link monitoring example on page 587.
 3. Go to Network > SD-WAN Rules.
 4. Click Create New. The Priority Rule page opens.
 5. Enter a name for the rule, such as gmail.

FortiOS 6.4.6 Administration Guide 604


Fortinet Technologies Inc.
SD-WAN

 6. Configure the following settings:

Field Setting

Internet Service Google-Gmail

Strategy Best Quality

Interface preference wan1 and wan2

Measured SLA google (created in step 2).

Quality criteria Latency

 7. Click OK to create the rule.

To configure an SD-WAN rule to use priority:

config system sdwan


config health-check
edit "google"
set server "google.com"
set members 1 2
next
end
config service
edit 1
set name "gmail"
set mode priority
set internet-service enable
set internet-service-id 65646
set health-check "google"
set link-cost-factor latency
set priority-members 1 2
next

FortiOS 6.4.6 Administration Guide 605


Fortinet Technologies Inc.
SD-WAN

end
end

To diagnose the Performance SLA status:

FGT # diagnose sys sdwan health-check google


Health Check(google):
Seq(1): state(alive), packet-loss(0.000%) latency(14.563), jitter(4.334) sla_map=0x0
Seq(2): state(alive), packet-loss(0.000%) latency(12.633), jitter(6.265) sla_map=0x0

FGT # diagnose sys sdwan service 1


Service(1):

TOS(0x0/0x0), protocol(0: 1->65535), Mode(priority), link-cost-facotr(latency), link-


cost-threshold(10), health-check(google) Members:

1: Seq_num(2), alive, latency: 12.633, selected


2: Seq_num(1), alive, latency: 14.563, selected

Internet Service: Google-Gmail(65646)

As wan2 has a smaller latency, SD-WAN will put Seq_num(2) on top of Seq_num(1) and wan2 will be used to forward 
Gmail traffic.

Lowest cost (SLA) strategy

SD-WAN rules are used to control how sessions are distributed to SD-WAN members. Rules can be configured in one of 
five modes:
 l auto: Interfaces are assigned a priority based on quality.
 l Manual (manual): Interfaces are manually assigned a priority.
 l Best Quality (priority): Interface are assigned a priority based on the link-cost-factor of the interface. See Best 
quality strategy on page 603.
 l Lowest Cost (SLA) (sla): Interfaces are assigned a priority based on selected SLA settings.
 l Maximize Bandwidth (SLA) (load-balance): Traffic is distributed among all available links based on the selected 
load balancing algorithm. See Maximize bandwidth (SLA) strategy on page 609.
When using Lowest Cost (SLA) mode (sla in the CLI), SD-WAN will choose the lowest cost link that satisfies SLA to 
forward traffic. The lowest possible cost is 0. If multiple eligible links have the same cost, the Interface preference order 
will be used to select a link.

FortiOS 6.4.6 Administration Guide 606


Fortinet Technologies Inc.
SD-WAN

In this example, your wan1 and wan2 SD-WAN interfaces connect to two ISPs that both go to the public internet. The 
cost of wan2 is less than that of wan1. You want to configure  Gmail services to use the lowest cost interface, but the link 
quality must meet a standard of  latency: 10ms, and jitter: 5ms.

To configure an SD-WAN rule to use Lowest Cost (SLA):

 1. On the FortiGate, add wan1 and wan2 as SD-WAN members, then add a policy and static route. See SD-WAN 
quick start on page 563 for details.
 2. Create a new Performance SLA named google that includes an SLA Target with Latency threshold = 10ms and 
Jitter threshold = 5ms. See Link monitoring example on page 587.
 3. Go to Network > SD-WAN Rules.
 4. Click Create New. The Priority Rule page opens.
 5. Enter a name for the rule, such as gmail.
 6. Configure the following settings:

Field Setting

Internet Service Google-Gmail

FortiOS 6.4.6 Administration Guide 607


Fortinet Technologies Inc.
SD-WAN

Field Setting

Strategy Lowest Cost (SLA)

Interface preference wan1 and wan2

Required SLA target google (created in step 2).

 7. Click OK to create the rule.

To configure an SD-WAN rule to use SLA:

config system sdwan


config members
edit 1
set interface "wan1"
set cost 10
next
edit 2
set interface "wan2"
set cost 5
next
end
config health-check
edit "google"
set server "google.com"
set members 1 2
config sla
edit 1
set latency-threshold 10
set jitter-threshold 5
next
end
next
end
config service
edit 1
set name "gmail"
set mode sla
set internet-service enable
set internet-service-id 65646
config sla
edit "google"
set id 1
next
end
set priority-members 1 2
next
end
end

If no SD-WAN zone is specified, members are added to the default virtual-wan-link zone.

FortiOS 6.4.6 Administration Guide 608


Fortinet Technologies Inc.
SD-WAN

To diagnose the Performance SLA status:

FGT # diagnose sys sdwan health-check google


Health Check(google):
Seq(1): state(alive), packet-loss(0.000%) latency(14.563), jitter(4.334) sla_map=0x0
Seq(2): state(alive), packet-loss(0.000%) latency(12.633), jitter(6.265) sla_map=0x0

FGT # diagnose sys sdwan service 1


Service(1): Address Mode(IPV4) flags=0x0

TOS(0x0/0x0), Protocol(0: 1->65535), Mode(sla)


Members:<<BR>>

1: Seq_num(2), alive, sla(0x1), cfg_order(1), selected


2: Seq_num(1), alive, sla(0x1), cfg_order(0), selected

Internet Service: Google.Gmail(65646)

When both wan1 and wan2 meet the SLA requirements, Gmail traffic will only use wan2. If only wan1 meets the SLA 
requirements, Gmail traffic will only use wan1, even though it has a higher cost. If neither interface meets the 
requirements, wan2 will be used. 
If both interface had the same cost and both met the SLA requirements, the first link configured in set priority-
members would be used.

Maximize bandwidth (SLA) strategy

SD-WAN rules are used to control how sessions are distributed to SD-WAN members. Rules can be configured in one of 
five modes:
 l auto: Interfaces are assigned a priority based on quality.
 l Manual (manual): Interfaces are manually assigned a priority.
 l Best Quality (priority): Interface are assigned a priority based on the link-cost-factor of the interface. See Best 
quality strategy on page 603.
 l Lowest Cost (SLA) (sla): Interfaces are assigned a priority based on selected SLA settings. See Lowest cost (SLA) 
strategy on page 606.
 l Maximize Bandwidth (SLA) (load-balance): Traffic is distributed among all available links based on the selected 
load balancing algorithm.
When using Maximize Bandwidth mode (load-balance in the CLI), SD-WAN will choose all of the links that satisfies 
SLA to forward traffic based on a load balancing algorithm. The load balancing algorithm, or hash method, can be one of 
the following:

round-robin All traffic are distributed to selected interfaces in equal portions and circular order.
This is the default method, and the only option available when using the GUI.

source-ip-based All traffic from a source IP is sent to the same interface.

source-dest-ip- All traffic from a source IP to a destination IP is sent to the same interface.
based

inbandwidth All traffic are distributed to a selected interface with most available bandwidth for incoming traffic.

FortiOS 6.4.6 Administration Guide 609


Fortinet Technologies Inc.
SD-WAN

outbandwidth All traffic are distributed to a selected interface with most available bandwidth for outgoing traffic.

bibandwidth All traffic are distributed to a selected interface with most available bandwidth for both incoming 
and outgoing traffic.

When the inbandwidth, outbandwidth), or bibandwidth load balancing algorithm is used, the FortiGate will 
compare the bandwidth based on the configured upstream and downstream bandwidth values.
The interface speedtest can be used to populate the bandwidth values based on the speedtest results. See Interface 
speedtest on page 590 for details.

To manually configure the upstream and downstream bandwidth values:

config system interface


edit <interface>
set estimated-upstream-bandwidth <speed in kbps>
set estimated-downstream-bandwidth <speed in kbps>
next
end

ADVPN is not supported in this mode.

In this example, your wan1 and wan2 SD-WAN interfaces connect to two ISPs that both go to the public internet.  You 
want to configure  Gmail services to use both of the interface, but the link quality must meet a standard of  latency: 10ms, 
and jitter: 5ms. This can maximize the bandwidth usage.

To configure an SD-WAN rule to use Maximize Bandwidth (SLA):

 1. On the FortiGate, add wan1 and wan2 as SD-WAN members, then add a policy and static route. See SD-WAN 
quick start on page 563 for details.
 2. Create a new Performance SLA named google that includes an SLA Target 1 with Latency threshold = 10ms and 
Jitter threshold = 5ms. See Link monitoring example on page 587.
 3. Go to Network > SD-WAN Rules.
 4. Click Create New. The Priority Rule page opens.
 5. Enter a name for the rule, such as gmail.

FortiOS 6.4.6 Administration Guide 610


Fortinet Technologies Inc.
SD-WAN

 6. Configure the following settings:

Field Setting

Internet Service Google-Gmail

Strategy Maximize Bandwidth (SLA)

Interface preference wan1 and wan2

Required SLA target google (created in step 2).

 7. Click OK to create the rule.

To configure an SD-WAN rule to use SLA:

config system sdwan


config health-check
edit "google"
set server "google.com"
set members 1 2
config sla
edit 1
set latency-threshold 10
set jitter-threshold 5
next
end
next
end
config service
edit 1
set name "gmail"
set addr-mode ipv4
set mode load-balance
set hash-mode round-robin

FortiOS 6.4.6 Administration Guide 611


Fortinet Technologies Inc.
SD-WAN

set internet-service enable


set internet-service-name Google-Gmail
config sla
edit "google"
set id 1
next
end
set priority-members 1 2
next
end
end

To diagnose the performance SLA status:

FGT # diagnose sys sdwan health-check google


Health Check(google):
Seq(1): state(alive), packet-loss(0.000%) latency(14.563), jitter(4.334) sla_map=0x0
Seq(2): state(alive), packet-loss(0.000%) latency(12.633), jitter(6.265) sla_map=0x0

FGT # diagnose sys sdwan service 1


Service(1): Address Mode(IPV4) flags=0x0

TOS(0x0/0x0), Protocol(0: 1->65535), Mode(load-balance)


Members:<<BR>>

1: Seq_num(1), alive, sla(0x1), num of pass(1), selected


2: Seq_num(2), alive, sla(0x1), num of pass(1), selected

Internet Service: Google.Gmail(65646)

When both wan1 and wan2 meet the SLA requirements, Gmail traffic will use both wan1 and wan2. If only one of the 
interfaces meets the SLA requirements, Gmail traffic will only use that interface.
If neither interface meets the requirements but health-check is still alive, then wan1 and wan2 tie. The traffic will try to 
balance between wan1 and wan2, using both interfaces to forward traffic.

Minimum number of links for a rule to take effect

In sla and load-balance modes, you can specify the number of links that must be up for the rule to take effect.
Example
In this example, ports 1 to 4 each have 10Mbps of bandwidth, and port 5 has 50Mbps. An application requires 35Mbps of 
bandwidth, so the SD-WAN rule balances the traffic between ports 1 to 4. If one of the links goes down, all of the traffic 
must be passed to port 5, so the minimum required number of links is 4.

To set the minimum number of links in a rule:

config system sdwan


config service
edit 1
set mode load-balance
set minimum-sla-meet-members 4
set dst <destination>
config sla

FortiOS 6.4.6 Administration Guide 612


Fortinet Technologies Inc.
SD-WAN

edit <sla>
set id <id>
next
end
set priority-members 1 2 3 4
next
end
end

Use MAC addresses in SD-WAN rules and policy routes

You can use MAC addresses as the source in SD-WAN rules and policy routes. 
The FABRIC_DEVICE address object (a dynamic object that includes the IPs of Security Fabric devices) can be used as 
a source or destination in SD-WAN rules and policy routes. 
The diagnose ip proute match command accepts either the IP or MAC address format for the source:
diagnose ip proute match <destination> <source> <interface> <protocol> <port>

To configure a MAC address as a source for SD-WAN and a policy route:

 1. Configure the MAC address:
config firewall address
edit "mac-add"
set type mac
set start-mac 70:4c:a5:86:de:56
set end-mac 70:4c:a5:86:de:56
next
end

 2. Configure the policy route:
config router policy
edit 3
set srcaddr "mac-add"
set gateway 15.1.1.34
set output-device ha
next
end

 3. Configure the SD-WAN rule:
config system sdwan
config service
edit 1
set dst "all"
set src "mac-add"
set priority-members 1
next
edit 2
set dst "FABRIC_DEVICE"
set priority-members 2
next
end
end

FortiOS 6.4.6 Administration Guide 613


Fortinet Technologies Inc.
SD-WAN

To verify the policy route matching for a MAC address:

# diagnose ip proute match 3.1.1.34 70:4c:a5:86:de:56 port3 22 6


dst=3.1.1.34 src=0.0.0.0 smac=70:4c:a5:86:de:56 iif=11 protocol=22 dport=6
id=00000003 type=Policy Route
seq-num=3

SD-WAN traffic shaping and QoS

Use a traffic shaper in a firewall shaping policy to control traffic flow. You can use it to control maximum and guaranteed 
bandwidth, or put certain traffic to one of the three different traffic priorities: high, medium, or low.
An advanced shaping policy can classify traffic into 30 groups. Use a shaping profile to define the percentage of the 
interface bandwidth that is allocated to each group. Each group of traffic is shaped to the assigned speed limit based on 
the outgoing bandwidth limit configured on the interface.
For more information, see Traffic shaping on page 1080.

Sample topology

Sample configuration

This example shows a typical customer usage where the customer's SD-WAN uses the default zone, and has two 
member: wan1 and wan2, each set to 10Mb/s.
An overview of the procedures to configure SD-WAN traffic shaping and QoS with SD-WAN includes:
 1. Give HTTP/HTTPS traffic high priority and give FTP low priority so that if there are conflicts, FortiGate will forward 
HTTP/HTTPS traffic first.
 2. Even though FTP has low priority, configure FortiGate to give it a 1Mb/s guaranteed bandwidth on each SD-WAN 
member so that if there is no FTP traffic, other traffic can use all the bandwidth. If there is heavy FTP traffic, it can 
still be guaranteed a 1Mb/s bandwidth.
 3. Traffic going to specific destinations such as a VOIP server uses wan1 to forward, and SD-WAN forwards with an 
Expedited Forwarding (EF) DSCP tag 101110.

FortiOS 6.4.6 Administration Guide 614


Fortinet Technologies Inc.
SD-WAN

To configure SD-WAN traffic shaping and QoS with SD-WAN in the GUI:

 1. On the FortiGate, add wan1 and wan2 as SD-WAN members, then add a policy and static route.
See SD-WAN quick start on page 563.
 2. Add a firewall policy with Application Control enabled. See Configuring firewall policies for SD-WAN on page 566.
 3. Go to Policy & Objects > Traffic Shapers and edit low-priority.
 a. Enable Guaranteed Bandwidth and set it to 1000 kbps.
 4. Go to Policy & Objects > Traffic Shaping Policy and click Create New.
 a. Name the traffic shaping policy, for example, HTTP-HTTPS.
 b. Set the following:

Source all

Destination all

Service HTTP and HTTPS

Outgoing virtual-wan-link

Shared Shaper Enable and set to high-priority

Reverse Shaper Enable and set to high-priority

 c. Click OK.
 5. Go to Policy & Objects > Traffic Shaping Policy and click Create New.
 a. Name the traffic shaping policy, for example, FTP.
 b. Set the following:

Source all

Destination all

Service FTP, FTP_GET, and FTP_PUT

Outgoing virtual-wan-link

Shared Shaper Enable and set to low-priority

Reverse Shaper Enable and set to low-priority

 c. Click OK
 6. Go to Network > SD-WAN Rules and click Create New.
 a. Enter a name for the rule, such as Internet.
 b. In the Destination section, click Address and select the VoIP server that you created in the firewall address.
 c. Under Outgoing Interfaces select Manual.
 d. For Interface preference select wan1.
 e. Click OK.
 7. Use CLI commands to modify DSCP settings. See the DSCP CLI commands below.

To configure the firewall policy using the CLI:

connfig firewall policy


edit 1
set name "1"

FortiOS 6.4.6 Administration Guide 615


Fortinet Technologies Inc.
SD-WAN

set srcintf "dmz"


set dstintf "virtual-wan-link"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set ssl-ssh-profile "certificate-inspection"
set application-list "default"
set nat enable
next
end

To configure the firewall traffic shaper priority using the CLI:

config firewall shaper traffic-shaper


edit "high-priority"
set maximum-bandwidth 1048576
set per-policy enable
next
edit "low-priority"
set guaranteed-bandwidth 1000
set maximum-bandwidth 1048576
set priority low
set per-policy enable
next
end

To configure the firewall traffic shaping policy using the CLI:

config firewall shaping-policy


edit 1
set name "http-https"
set service "HTTP" "HTTPS"
set dstintf "virtual-wan-link"
set traffic-shaper "high-priority"
set traffic-shaper-reverse "high-priority"
set srcaddr "all"
set dstaddr "all"
next
edit 2
set name "FTP"
set service "FTP" "FTP_GET" "FTP_PUT"
set dstintf "virtual-wan-link"
set traffic-shaper "low-priority"
set traffic-shaper-reverse "low-priority"
set srcaddr "all"
set dstaddr "all"
next
end

To configure SD-WAN traffic shaping and QoS with SD-WAN in the CLI:

config system sdwan


set status enable

FortiOS 6.4.6 Administration Guide 616


Fortinet Technologies Inc.
SD-WAN

config members
edit 1
set interface "wan1"
set gateway 172.16.20.2
next
edit 2
set interface "wan2"
set gateway 10.100.20.2
next
end
config service
edit 1
set name "SIP"
set priority-members 1
set dst "voip-server"
set dscp-forward enable
set dscp-forward-tag 101110
next
end
end

If no SD-WAN zone is specified, members are added to the default virtual-wan-link zone.

To use the diagnose command to check if specific traffic is attached to the correct traffic shaper:

# diagnose firewall iprope list 100015

policy index=1 uuid_idx=0 action=accept


flag (0):
shapers: orig=high-priority(2/0/134217728) reply=high-priority(2/0/134217728)
cos_fwd=0 cos_rev=0
group=00100015 av=00000000 au=00000000 split=00000000
host=0 chk_client_info=0x0 app_list=0 ips_view=0
misc=0 dd_type=0 dd_mode=0
zone(1): 0 -> zone(2): 36 38
source(1): 0.0.0.0-255.255.255.255, uuid_idx=6,
dest(1): 0.0.0.0-255.255.255.255, uuid_idx=6,
service(2):
[6:0x0:0/(1,65535)->(80,80)] helper:auto
[6:0x0:0/(1,65535)->(443,443)] helper:auto

policy index=2 uuid_idx=0 action=accept


flag (0):
shapers: orig=low-priority(4/128000/134217728) reply=low-priority(4/128000/134217728)
cos_fwd=0 cos_rev=0
group=00100015 av=00000000 au=00000000 split=00000000
host=0 chk_client_info=0x0 app_list=0 ips_view=0
misc=0 dd_type=0 dd_mode=0
zone(1): 0 -> zone(2): 36 38
source(1): 0.0.0.0-255.255.255.255, uuid_idx=6,
dest(1): 0.0.0.0-255.255.255.255, uuid_idx=6,
service(3):
[6:0x0:0/(1,65535)->(21,21)] helper:auto

FortiOS 6.4.6 Administration Guide 617


Fortinet Technologies Inc.
SD-WAN

[6:0x0:0/(1,65535)->(21,21)] helper:auto
[6:0x0:0/(1,65535)->(21,21)] helper:auto

To use the diagnose command to check if the correct traffic shaper is applied to the session:

# diagnose sys session list


session info: proto=6 proto_state=01 duration=11 expire=3599 timeout=3600 flags=00000000
sockflag=00000000 sockport=0 av_idx=0 use=5
origin-shaper=low-priority prio=4 guarantee 128000Bps max 1280000Bps traffic 1050Bps drops
0B
reply-shaper=
per_ip_shaper=
class_id=0 shaping_policy_id=2 ha_id=0 policy_dir=0 tunnel=/ helper=ftp vlan_cos=0/255
state=may_dirty npu npd os mif route_preserve
statistic(bytes/packets/allow_err): org=868/15/1 reply=752/10/1 tuples=2
tx speed(Bps/kbps): 76/0 rx speed(Bps/kbps): 66/0
orgin->sink: org pre->post, reply pre->post dev=39->38/38->39 gwy=172.16.200.55/0.0.0.0
hook=post dir=org act=snat 10.1.100.11:58241->172.16.200.55:21(172.16.200.1:58241)
hook=pre dir=reply act=dnat 172.16.200.55:21->172.16.200.1:58241(10.1.100.11:58241)
pos/(before,after) 0/(0,0), 0/(0,0)
misc=0 policy_id=1 auth_info=0 chk_client_info=0 vd=4
serial=0003255f tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=0 sdwan_service_id=0
rpdb_link_id = 00000000
dd_type=0 dd_mode=0
npu_state=0x100000
npu info: flag=0x00/0x00, offload=0/0, ips_offload=0/0, epid=0/0, ipid=0/0,
vlan=0x0000/0x0000
vlifid=0/0, vtag_in=0x0000/0x0000 in_npu=0/0, out_npu=0/0, fwd_en=0/0, qid=0/0
no_ofld_reason: offload-denied helper
total session 1

To use the diagnose command to check the status of a shared traffic shaper:

# diagnose firewall shaper traffic-shaper list

name high-priority
maximum-bandwidth 131072 KB/sec
guaranteed-bandwidth 0 KB/sec
current-bandwidth 0 B/sec
priority 2
tos ff
packets dropped 0
bytes dropped 0

name low-priority
maximum-bandwidth 131072 KB/sec
guaranteed-bandwidth 125 KB/sec
current-bandwidth 0 B/sec
priority 4
tos ff
packets dropped 0
bytes dropped 0

name high-priority
maximum-bandwidth 131072 KB/sec

FortiOS 6.4.6 Administration Guide 618


Fortinet Technologies Inc.
SD-WAN

guaranteed-bandwidth 0 KB/sec
current-bandwidth 0 B/sec
priority 2
policy 1
tos ff
packets dropped 0
bytes dropped 0

name low-priority
maximum-bandwidth 131072 KB/sec
guaranteed-bandwidth 125 KB/sec
current-bandwidth 0 B/sec
priority 4
policy 2
tos ff
packets dropped 0
bytes dropped 0

SDN dynamic connector addresses in SD-WAN rules

SDN dynamic connector addresses can be used in SD-WAN rules. FortiGate supports both public (AWS, Azure, GCP, 
OCI, AliCloud) and private (Kubernetes, VMware ESXi and NSX, OpenStack, ACI, Nuage) SDN connectors.
The configuration procedure for all of the supported SDN connector types is the same. This example uses an Azure 
public SDN connector.

There are four steps to create and use an SDN connector address in an SD-WAN rule:
 1. Configure the FortiGate IP address and network gateway so that it can reach the Internet.
 2. Create an Azure SDN connector.
 3. Create a firewall address to associate with the configured SDN connector.
 4. Use the firewall address in an SD-WAN service rule.

To create an Azure SDN connector:

 1. Go to Security Fabric > External Connectors.


 2. Click Create New.
 3. In the Public SDN section, click Microsoft Azure.

FortiOS 6.4.6 Administration Guide 619


Fortinet Technologies Inc.
SD-WAN

 4. Enter the following:

Name azure1

Status Enabled

Update Interval Use Default

Server region Global

Directory ID 942b80cd-1b14-42a1-8dcf-4b21dece61ba

Application ID 14dbd5c5-307e-4ea4-8133-68738141feb1

Client secret xxxxxx

Resource path disabled

 5. Click OK.

To create a firewall address to associate with the configured SDN connector:

 1. Go to Policy & Objects > Addresses.


 2. Click Create New > Address.
 3. Enter the following:

Category Address

Name azure-address

Type Dynamic

Sub Type Fabric Connector Address

SDN Connector azure1

SDN address type Private

Filter SecurityGroup=edsouza-centos

Interface Any

 4. Click OK.

FortiOS 6.4.6 Administration Guide 620


Fortinet Technologies Inc.
SD-WAN

To use the firewall address in an SD-WAN service rule:

 1. Go to Network > SD-WAN Rules.


 2. Click Create New.
 3. Set the Name to Azure1.
 4. For the Destination Address select azure-address.
 5. Configure the remaining settings as needed. See SD-WAN rules on page 598 for details.
 6. Click OK.

Diagnostics

Use the following CLI commands to check the status of and troubleshoot the connector.

To see the status of the SDN connector:

# diagnose sys sdn status

SDN Connector Type Status Updating Last update


----------------------------------------------------------------------------------------
-
azure1 azure connected no n/a

To debug the SDN connector to resolve the firewall address:

# diagnose debug application azd -1


Debug messages will be on for 30 minutes.

...
azd sdn connector azure1 start updating IP addresses
azd checking firewall address object azure-address-1, vd 0
IP address change, new list:
10.18.0.4
10.18.0.12
...
...
# diagnose sys sdwan service

Service(2): Address Mode(IPV4) flags=0x0


TOS(0x0/0x0), Protocol(0: 1->65535), Mode(manual)
Service role: standalone
Member sub interface:
Members:
1: Seq_num(1), alive, selected
Dst address:
10.18.0.4 - 10.18.0.4
10.18.0.12 - 10.18.0.12
... ...
... ...
... ...

FortiOS 6.4.6 Administration Guide 621


Fortinet Technologies Inc.
SD-WAN

Application steering using SD-WAN rules

This topic covers how to use application steering in a topology with multiple WAN links. The following examples illustrate 
how to use different strategies to perform application steering to accommodate different business needs:
 l Static application steering with a manual strategy on page 622
 l Dynamic application steering with lowest cost and best quality strategies on page 625

Static application steering with a manual strategy

This example covers a  typical usage scenario where the SD-WAN has two members: MPLS and DIA. DIA is primarily 
used for direct internet access to internet applications, such as Office365, Google applications, Amazon, and Dropbox. 
MPLS is primarily used for SIP, and works as a backup when DIA is not working.

This example configures all SIP traffic to use MPLS while all other traffic uses DIA. If DIA is not working, the traffic will 
use MPLS.

To configure an SD-WAN rule to use SIP and DIA in the GUI:

 1. Add port1 (DIA) and port2 (MPLS) as SD-WAN members, and configure a static route. See Configuring the SD-
WAN interface on page 564 for details.
 2. Create a firewall policy with an Application Control profile configured. See Configuring firewall policies for SD-WAN 
on page 566 for details.
 3. Go to Network > SD-WAN Rules.
 4. Click Create New. The Priority Rule page opens.
 5. Enter a name for the rule, such as SIP.
 6. Click the Application field and select the applicable SIP applications from the Select Entries panel.
 7. Under Outgoing Interfaces, select Manual.
 8. For Interface preference, select MPLS.
 9. Click OK.
 10. Click Create New to create another rule.
 11. Enter a name for the rule, such as Internet.
 12. Click the Address field and select all from the panel.
 13. Under Outgoing Interfaces, select Manual.

FortiOS 6.4.6 Administration Guide 622


Fortinet Technologies Inc.
SD-WAN

 14. For Interface preference, select DIA.

 15. Click OK.

To configure the firewall policy using the CLI:

config firewall policy


edit 1
set name "1"
set srcintf "dmz"
set dstintf "virtual-wan-link"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set fsso disable
set application-list "default"
set ssl-ssh-profile "certificate-inspection"
set nat enable
next
end

To configure an SD-WAN rule to use SIP and DIA using the CLI:

config system sdwan


set status enable
config members
edit 1
set interface "MPLS"
next
edit 2
set interface "DIA"
next

FortiOS 6.4.6 Administration Guide 623


Fortinet Technologies Inc.
SD-WAN

end
config service
edit 1
set name "SIP"
set internet-service enable
set internet-service-app-ctrl 34640 152305677 38938 26180 26179 30251
set priority-members 2
next
edit 2
set name "Internet"
set dst "all"
set priority-members 1
next
end
end

All SIP traffic uses MPLS. All other traffic goes to DIA. If DIA is broken, the traffic uses MPLS. If you use VPN instead of 
MPLS to run SIP traffic, you must configure a VPN interface, for example vpn1, and then replace member 1 from MPLS 
to vpn1 for SD-WAN member.

If no SD-WAN zone is specified, members are added to the default virtual-wan-link zone.

To use the diagnose command to check performance SLA status using the CLI:

# diagnose sys sdwan service 1

Service(1): Address Mode(IPV4) flags=0x0

TOS(0x0/0x0), Protocol(0: 1->65535), Mode(manual)


Members:<<BR>>

1: Seq_num(1), alive, selected

Internet Service: SIP(4294836224 34640) SIP.Method(4294836225 152305677) SIP.Via.NAT


(4294836226 38938) SIP_Media.Type.Application(4294836227 26180) SIP_Message(4294836228
26179) SIP_Voice(4294836229 30251)
# diagnose sys sdwan service 2

Service(2): Address Mode(IPV4) flags=0x0

TOS(0x0/0x0), Protocol(0: 1->65535), Mode(manual)


Members:<<BR>>

1: Seq_num(2), alive, selected

Dst address: 0.0.0.0-255.255.255.255


# diagnose sys sdwan internet-service-app-ctrl-list
Ctrl application(SIP 34640):Internet Service ID(4294836224)
Ctrl application(SIP.Method 152305677):Internet Service ID(4294836225)
Ctrl application(SIP.Via.NAT 38938):Internet Service ID(4294836226)
Ctrl application(SIP_Media.Type.Application 26180):Internet Service ID(4294836227)

FortiOS 6.4.6 Administration Guide 624


Fortinet Technologies Inc.
SD-WAN

Ctrl application(SIP_Message 26179):Internet Service ID(4294836228)


Ctrl application(SIP_Voice 30251):Internet Service ID(4294836229)

Dynamic application steering with lowest cost and best quality strategies

In this example, the SD-WAN has three members: two ISPs (DIA_1 and DIA_2) that are used for access to internet 
applications, and an MPLS link that is used exclusively as a backup for business critical applications.

Business applications, such as Office365, Google, Dropbox, and SIP, use the Lowest Cost (SLA) strategy to provide 


application steering, and traffic falls back to MPLS only if both ISP1 and ISP2 are down. Non-business applications, such 
as Facebook and Youtube, use the Best Quality strategy to choose between the ISPs.

To configure the SD-WAN members, static route, and firewall policy in the GUI:

 1. Add port1 (DIA_1), port2 (DIA_2), and port3 (MPLS) as SD-WAN members. Set the cost of DIA_1 and DIA_2 to 0, 
and MPLS to 20. See Configuring the SD-WAN interface on page 564 for details.

 2. Configure a static route. See Adding a static route on page 565 for details.
 3. Create a firewall policy to allow traffic out on SD-WAN, with an Application Control profile configured. See 
Configuring firewall policies for SD-WAN on page 566 for details.

To configure the SD-WAN rule and performance SLA checks for business critical application in the GUI:

 1. Go to Network > SD-WAN Rules, and click Create New.


 2. Set the name to BusinessCriticalApps.
This rule will steer your business critical traffic to the appropriate link based on the Lowest Cost (SLA).
 3. Set Source address to all.

FortiOS 6.4.6 Administration Guide 625


Fortinet Technologies Inc.
SD-WAN

 4. Under Destination, set Application to your required applications. In this example: Microsoft.Office.365, 
Microsoft.Office.Online, Google.Docs, Dropbox, and SIP. 
 5. Under Outgoing Interfaces, select Lowest Cost (SLA).
The lowest cost is defined in the SD-WAN member interface settings (see Configuring the SD-WAN interface on 
page 564). The lowest possible cost is 0, which represents the most preferred link. In this example, DIA_1 and DIA_
2 both have a cost of 0, while MPLS has a cost of 20 because it is used for backup.
 6. In Interface preference, add the interfaces in order of preference when the cost of the links is tied. In this example, 
DIA_1, DIA_2, then MPLS. 
MPLS will always be chosen last, because it has the highest cost. DIA_1 and DIA_2 have the same cost, so an 
interface is selected based on their order in the Interface preference list.
 7. Set Required SLA target to ensure that only links that pass your SLA target are chosen in this SD-WAN rule:
 a. Click in the Required SLA target field.
 b. In the Select Entries pane, click Create. The New Performace SLA pane opens.
 c. Set Name to BusinessCritical_HC.
This health check is used for business critical applications in your SD-WAN rule.
 d. Leave Protocol set to Ping, and add up to two servers, such as office.com and google.com.
 e. Set Participants to Specify, and add all three interfaces: DIA_1, DIA_2, and MPLS.
 f. Enable SLA Target.
The attributes in your target determine the quality of your link. The SLA target of each link is compared when 
determining which link to use based on the lowest cost. Links that meet the SLA target are preferred over links 
that fail, and move to the next step of selection based on cost. If no links meet the SLA target, then they all 
move to the next step.
In this example, disable Latency threshold and Jitter threshold, and set Packet loss threshold to 1.
 g. Click OK.
 h. Select the new performance SLA to set it as the Required SLA target.
When multiple SLA targets are added, you can choose which target to use in the SD-WAN rule.

FortiOS 6.4.6 Administration Guide 626


Fortinet Technologies Inc.
SD-WAN

 8. Click OK to create the SD-WAN rule.

To configure the SD-WAN rule and performance SLA checks for non-business critical application in the
GUI:

 1. Go to Network > SD-WAN Rules, and click Create New.


 2. Set the name to NonBusinessCriticalApps.
This rule will steer your non-business critical traffic to the appropriate link based on the Best Quality. No SLA target 
must be met, as the best link is selected based on the configured quality criteria and interface preference order.
 3. Set Source address to all.
 4. Under Destination, set Application to your required applications. In this example: Facebook, and Youtube. 
 5. Under Outgoing Interfaces, select Best Quality.
 6. In Interface preference, add the interfaces in order of preference. 
By default, a more preferred link has an advantage of 10% over a less preferred link. For example, when latency is 
used, the preferred link’s calculated latency = real latency / (1+10%).

The preferred link advantage can be customized in the CLI when the mode is priority 
(Best Quality) or auto:
config system sdwan
config service
edit <id>
set link-cost-threshold <integer>
next
end
end

FortiOS 6.4.6 Administration Guide 627


Fortinet Technologies Inc.
SD-WAN

 7. Create and apply a new performance SLA profile:
 a. Click in the Measured SLA field.
 b. In the drop-down list, click Create. The New Performace SLA pane opens.
 c. Set Name to NonBusinessCritical_HC.
This health check is used for non-business critical applications in your SD-WAN rule.
 d. Leave Protocol set to Ping, and add up to two servers, such as youtube.com and facebook.com.
 e. Set Participants to Specify, and add the DIA_1 and DIA_2 interfaces. In this example, MPLS is not used for 
non-business critical applications.
 f. Leave SLA Target disabled.
 g. Click OK.
 h. Select the new performance SLA from the list to set it as the Measured SLA.
 8. Set Quality criteria as required. In this example, Latency is selected.
For bandwidth related criteria, such as Downstream, Upstream, and Bandwidth (bi-directional), the selection is 
based on available bandwidth. An estimated bandwidth should be configured on the interface to provide a baseline, 
maximum available bandwidth. 

 9. Click OK to create the SD-WAN rule.

To configure the SD-WAN members, static route, and firewall policy in the CLI:

 1. Configure the interfaces:
config system interface
edit "port1"
set ip <class_ip&net_netmask>
set alias "DIA_1"
set role wan
next
edit "port2"
set ip <class_ip&net_netmask>

FortiOS 6.4.6 Administration Guide 628


Fortinet Technologies Inc.
SD-WAN

set alias "DIA_2"


set role wan
next
edit "port3"
set ip <class_ip&net_netmask>
set alias "MPLS"
set role wan
next
end

 2. Configure the SD-WAN members:
config system sdwan
set status enable
config members
edit 1
set interface "port1"
set gateway 172.16.20.2
next
edit 2
set interface "port2"
set gateway 172.17.80.2
next
edit 3
set interface "port3"
set gateway 10.100.20.2
set cost 20
next
end
end

If no SD-WAN zone is specified, members are added to the default virtual-wan-link zone.

 3. Configure a static route. See Adding a static route on page 565 for details.
 4. Create a firewall policy to allow traffic out on SD-WAN, with an Application Control profile configured. See 
Configuring firewall policies for SD-WAN on page 566 for details.

To configure the SD-WAN rule and performance SLA checks for business critical application in the CLI:

 1. Configure the BusinessCriticalApps_HC health-check:
config system sdwan
config health-check
edit "BusinessCriticalApps_HC"
set server "office.com" "google.com"
set members 1 2 3
config sla
edit 1
set link-cost-factor packet-loss
set packetloss-threshold 1
next
end
next

FortiOS 6.4.6 Administration Guide 629


Fortinet Technologies Inc.
SD-WAN

end
end

 2. Configure the BusinessCriticalApps service to use Lowest Cost (SLA):


config system sdwan
config service
edit 1
set name "BusinessCriticalApps"
set mode sla
set src "all"
set internet-service enable
set internet-service-app-ctrl 17459 16541 33182 16177 34640
config sla
edit "BusinessCriticalApps_HC"
set id 1
next
end
set priority-members 1 2 3
next
end
end

To configure the SD-WAN rule and performance SLA checks for non-business critical application in the
CLI:

 1. Configure the nonBusinessCriticalApps_HC health-check:
config system sdwan
config health-check
edit "NonBusinessCriticalApps_HC"
set server "youtube.com" "facebook.com"
set members 1 2
next
end
end

 2. Configure the BusinessCriticalApps service to use Lowest Cost (SLA):


config system sdwan
config service
edit 4
set name "NonBusinessCriticalApps"
set mode priority
set src "all"
set internet-service enable
set internet-service-app-ctrl 15832 31077
set health-check "NonBusinessCriticalApps_HC"
set priority-members 1 2
next
end
end

Verification

Check the following GUI pages, and run the following CLI commands to confirm that your traffic is being steered by the 
SD-WAN rules.

FortiOS 6.4.6 Administration Guide 630


Fortinet Technologies Inc.
SD-WAN

Health checks

To verify the status of each of the health checks in the GUI:

 1. Go to Network > Performance SLA and select each of the health checks from the list.

To verify the status of each of the health checks in the CLI:

# diagnose sys sdwan health-check


Health Check(BusinessCritical_HC):
Seq(1 port1): state(alive), packet-loss(0.000%) latency(12.884), jitter(0.919) sla_map=0x1
Seq(2 port2): state(alive), packet-loss(0.000%) latency(13.018), jitter(0.723) sla_map=0x1
Seq(3 port3): state(alive), packet-loss(0.000%) latency(13.018), jitter(0.923) sla_map=0x1
Health Check(NonBusinessCritical_HC):
Seq(1 port1): state(alive), packet-loss(0.000%) latency(6.888), jitter(0.953) sla_map=0x0
Seq(2 port2): state(alive), packet-loss(0.000%) latency(6.805), jitter(0.830) sla_map=0x0

FortiOS 6.4.6 Administration Guide 631


Fortinet Technologies Inc.
SD-WAN

Rule members and hit count

To verify the active members and hit count of the SD-WAN rule in the GUI:

 1. Go to Network > SD-WAN Rules.   

The interface that is currently selected by the rule has a checkmark next to its name in the Members column. Hover 
the cursor over the checkmark to open a tooltip that gives the reason why that member is selected. If multiple 
members are selected, only the highest ranked member is highlighted (unless the mode is Maximize Bandwidth
(SLA)).

To verify the active members and hit count of the SD-WAN rule in the CLI:

# diagnose sys sdwan service

Service(3): Address Mode(IPV4) flags=0x0


Gen(13), TOS(0x0/0x0), Protocol(0: 1->65535), Mode(sla), sla-compare-order
Members:
1: Seq_num(1 port1), alive, sla(0x1), cfg_order(0), cost(0), selected
2: Seq_num(2 port2), alive, sla(0x1), cfg_order(1), cost(0), selected
3: Seq_num(3 port3), alive, sla(0x1), cfg_order(2), cost(20), selected
Internet Service: Dropbox(4294836727,0,0,0 17459) Google.Docs(4294836992,0,0,0 16541)
Microsoft.Office.365(4294837472,0,0,0 33182) Microsoft.Office.Online(4294837475,0,0,0 16177)
SIP(4294837918,0,0,0 34640)
Src address:
0.0.0.0-255.255.255.255

Service(4): Address Mode(IPV4) flags=0x0


Gen(211), TOS(0x0/0x0), Protocol(0: 1->65535), Mode(priority), link-cost-factor(latency),
link-cost-threshold(10), heath-check(NonBusinessCritical_HC)
Members:
1: Seq_num(1 port1), alive, latency: 5.712, selected
2: Seq_num(2 port2), alive, latency: 5.511, selected
Internet Service: Facebook(4294836806,0,0,0 15832) YouTube(4294838537,0,0,0 31077)
Src address:
0.0.0.0-255.255.255.255

Applications and sessions

To verify sessions in FortiView:

 1. Go to a dashboard and add the Top Cloud Applications by Bytes widget. See Cloud application view on page 114 


for details.

FortiOS 6.4.6 Administration Guide 632


Fortinet Technologies Inc.
SD-WAN

 2. Drill down on an application, such as YouTube, then select the Sessions tab.

To verify applications identified by Application Control in SD-WAN:

# diagnose sys sdwan internet-service-app-ctrl-list

Facebook(15832 4294836697): 31.13.67.20 6 443 Fri April 17 22:33:39 2020


Facebook(15832 4294836697): 31.13.67.35 6 443 Fri April 17 22:33:41 2020
Facebook(15832 4294836697): 31.13.70.36 6 443 Fri April 17 22:36:41 2020
Facebook(15832 4294836697): 157.240.11.22 6 443 Fri April 17 22:36:42 2020
Facebook(15832 4294836697): 157.240.11.35 6 443 Fri April 17 22:36:41 2020
YouTube(31077 4294838227): 172.217.24.150 6 443 Fri April 17 22:32:16 2020
YouTube(31077 4294838227): 172.217.25.78 6 443 Fri April 17 22:32:16 2020
YouTube(31077 4294838227): 216.58.220.129 6 443 Fri April 17 22:32:34 2020

DSCP tag-based traffic steering in SD-WAN

This document demonstrates the Differentiated Services Code Point (DSCP) tag-based traffic steering in Fortinet secure 
SD-WAN. You can use this guide as an example to deploy DSCP tag-based traffic steering in Fortinet secure SD-WAN.
DSCP tags are often used to categorize traffic to provide quality of service (QoS). Based on DSCP tags, you can provide 
SD-WAN traffic steering on an edge device.
In this example, we have two different departments at the Headquarters site - Customer Service and Marketing. Traffic 
from each of these departments is marked with separate DSCP tags by the core switch, and passes through the core 
switch to the edge FortiGate. The edge FortiGate reads the DSCP tags and steers traffic to the preferred interface based 
on the defined SD-WAN rules.

FortiOS 6.4.6 Administration Guide 633


Fortinet Technologies Inc.
SD-WAN

In our example, we consider two types of traffic - social media traffic and VoIP traffic. VoIP traffic from Customer Service 
is considered to be more important than social media traffic. Each of these traffic types is marked with a DSCP tag by the 
core switch - VoIP traffic is marked with the DSCP tag of 011100, and social media traffic is marked with the DSCP tag 
of 001100. The DSCP tagged traffic is then passed on to the edge FortiGate. The edge FortiGate identifies the DSCP 
tagged traffic and based on the defined SD-WAN rules, the edge FortiGate steers:
 l VoIP traffic to the preferred VPN overlay with the least jitter in order to provide the best quality of voice 
communication with the remote VoIP server (PBX)
 l Social media traffic to the preferred Internet link with a lower cost (less expensive and less reliable)
If you are familiar with SD-WAN configurations in FortiOS, you can directly jump to the Configuring SD-WAN rules on 
page 637 section to learn how to configure the SD-WAN rules to perform traffic steering. Otherwise, you can proceed 
with all of the following topics to configure the edge FortiGate:
 l Configuring IPsec tunnels on page 635
 l Configuring SD-WAN zones on page 635
 l Configuring firewall policies on page 636
 l Configuring Performance SLA test on page 636
 l Configuring SD-WAN rules on page 637
 l Results on page 641

FortiOS 6.4.6 Administration Guide 634


Fortinet Technologies Inc.
SD-WAN

Configuring IPsec tunnels

In our example, we have two interfaces Internet_A (port1) and Internet_B(port5) on which we have 
configured IPsec tunnels Branch-HQ-A and Branch-HQ-B respectively. To learn how to configure IPsec tunnels, refer 
to the IPsec VPNs on page 1294 section.
After you have configured the IPsec tunnels as required, verify your IPsec tunnels by navigating to VPN > IPsec Tunnels 
from the tree menu on the left side of the  GUI.

Configuring SD-WAN zones

In order for us to steer traffic based on SD-WAN rules, first we need to configure SD-WAN interface members and assign 
them to SD-WAN zones. To know more about SD-WAN zones, refer to theSD-WAN zones on page 574 section.
In our example, we created two SD-WAN zones. The virtual-wan-link SD-WAN zone for the underlay traffic 
passing through the Internet_A(port1) and Internet_B(port5) interfaces, and the Overlay SD-WAN zone for 
the overlay traffic passing through the Branch-HQ-A and Branch-HQ-B interfaces.
Verify the configurations on the Network > SD-WAN Zones screen:

FortiOS 6.4.6 Administration Guide 635


Fortinet Technologies Inc.
SD-WAN

In the screenshot above, we have configured the Internet_A(port1) and Internet_B
(port5) SD-WAN interface members with their Cost values being 0 and 10 respectively. A 
lower Cost value indicates that this member is the primary interface member, and is preferred 
more than a member with a higher Cost value when using the Lowest Cost (SLA) strategy.

We also need to configure a static route that points to the SD-WAN interface. To know more about static routes, refer to 
the Adding a static route on page 565 section.

Configuring firewall policies

Configure firewall policies for both the overlay and underlay traffic. To know more about firewall policies, refer to the 
Policies on page 957 section.
In this example, the Overlay-out policy governs the overlay traffic and the SD-WAN-Out policy governs the underlay 
traffic. The firewall policies are configured accordingly.
Once created, verify the firewall policies by navigating to Policy & Objects > Firewall Policy:

The Security Profiles column indicates that the Overlay-out firewall policy for the overlay traffic is set up to not scan any 
traffic, while the SD-WAN-Out firewall policy is set to scan all web traffic to identify and govern social media traffic as 
Application Control profile is active.

Configuring Performance SLA test

Configure a performance SLA test that will be tied to the SD-WAN interface members we created and assigned to SD-
WAN zones. To know more about Performance SLA, refer to the SLA targets example on page 588 section.

FortiOS 6.4.6 Administration Guide 636


Fortinet Technologies Inc.
SD-WAN

In this example, we created a Performance SLA test Default_DNS with Internet_A(port1) and Internet_B
(port5) interface members as participants. We will use the created Performance SLA test to steer all web traffic 
passing through the underlays other than social media traffic based on the Lowest Cost (SLA) strategy.

Configuring SD-WAN rules

Configure SD-WAN rules to govern the steering of DSCP tag-based traffic to the appropriate interfaces. Traffic will be 
steered based on the Criteria configured as part of the SD-WAN rules configuration.
In our example, we configured three different SD-WAN rules to govern DSCP tagged traffic. We have one SD-WAN rule 
each for VoIP traffic, social media traffic (Facebook in this case), and all other web traffic. VoIP traffic is always steered 
to either of the two overlay SD-WAN zones - VPN_A_tunnel(Branch-HQ-A) or VPN_B_tunnel(Branch-HQ-B). 
Similarly, social media traffic and other web traffic is always steered to either of the two underlay SD-WAN zones - 
Internet_A(port1) or Internet_B(port5). The interface that is preferred by the system over another depends 
upon the Criteria configured in the SD-WAN rule definition.
We configured the following SD-WAN rules:
 l SD-WAN rule for VoIP traffic on page 637
 l SD-WAN rule for social media traffic on page 638
 l SD-WAN rule for other web traffic on page 639

SD-WAN rule for VoIP traffic

To configure SD-WAN rule for DSCP tagged VoIP traffic using the CLI:

FortiGate # config sys sdwan


config service
edit 5
set name "VoIP-Steer"
set mode priority
set tos 0x70
set tos-mask 0xf0
set dst "all"
set health-check "Default_DNS"
set link-cost-factor jitter
set priority-members 4 3
end

FortiOS 6.4.6 Administration Guide 637


Fortinet Technologies Inc.
SD-WAN

The VoIP-Steer SD-WAN rule configured above governs the DSCP tagged VoIP traffic.
DSCP values commonly are 6-bit binary numbers that are padded with zeros at the end. Therefore, in this example, 
VoIP traffic with DSCP tag 011100 will become 01110000. This 8-bit binary number 01110000 is represented in its 
hexadecimal form 0x70 as the tos (Type of Service bit pattern) value.  T   he tos-mask (Type of Service evaluated bits) 
hexadecimal value of 0xf0 (binary 11110000) is used to check the four most significant bits from the tos value in this 
case. Hence, the first four bits of the tos (0111) will be used to match the first four bits of the DSCP tag in our policy 
above. Only the non-zero bit positions are used for comparison and the zero bit positions are ignored from the tos-
mask.
We used the Best Quality strategy to define the Criteria to select the preferred interface from the overlay SD-WAN zone. 
With the Best Quality strategy selected, the interface with the best measured performance  is selected. The system 
prefers the interface with the least Jitter.

To know more about configuring SD-WAN rules with the Best Quality strategy, refer to the Best quality strategy on page 
603 section.

SD-WAN rule for social media traffic

To configure SD-WAN rule for DSCP tagged social media traffic using the CLI:

FortiGate # config sys sdwan


config service
edit 3
set name "Facebook-DSCP-steer"
set tos 0x30
set tos-mask 0xf0
set dst "all"
set priority-members 2 1
end

FortiOS 6.4.6 Administration Guide 638


Fortinet Technologies Inc.
SD-WAN

The Facebook-DSCP-steer SD-WAN rule configured above governs the DSCP tagged social media traffic.
DSCP values commonly are 6-bit binary numbers that are padded with zeros at the end. Therefore, in this example, 
social media traffic with DSCP tag 001100 will become 00110000. This 8-bit binary number 00110000 is represented 
in its hexadecimal form 0x30 as the tos (Type of Service bit pattern) value.   The tos-mask (Type of Service evaluated 
bits) hexadecimal value of 0xf0 (binary 11110000) is used to check the four most significant bits from the tos value in 
this case. Hence, the first four bits of the tos (0011) will be used to match the first four bits of the DSCP tag in our policy 
above. Only the non-zero bit positions are used for comparison and the zero bit positions are ignored from the tos-
mask.
We used a manual strategy to select the preferred interface from the underlay SD-WAN zone. We manually select the 
preferred interface as Internet_B(port5) to steer all social media traffic to.

To know more about configuring SD-WAN rules with static application steering with a manual strategy, refer to the Static 
application steering with a manual strategy on page 622 section.

SD-WAN rule for other web traffic

To configure SD-WAN rule for all other web traffic using the CLI:

FortiGate # config sys sdwan


config service
edit 2
set name "All-traffic"
set mode sla
set dst "all"
config sla
edit "Default_DNS"
set id 1
next
end
set priority-members 1 2

FortiOS 6.4.6 Administration Guide 639


Fortinet Technologies Inc.
SD-WAN

end

The All-traffic SD-WAN rule configured above governs all other web traffic.
We used the Lowest Cost (SLA) strategy to define the Criteria to select the preferred interface from the underlay SD-
WAN zone. With the Lowest Cost (SLA) strategy selected, the interface that meets the defined Performance SLA targets 
(Default_DNS in our case) is selected. When there is a tie, the interface with the lowest assigned Cost (Internet_A
(port1) in our case) is selected.

To know more about configuring SD-WAN rules with the Lowest Cost (SLA) strategy, refer to the Lowest cost (SLA) 


strategy on page 606 section.
Once configured, verify your SD-WAN rules by navigating to Network > SD-WAN Rules:

FortiOS 6.4.6 Administration Guide 640


Fortinet Technologies Inc.
SD-WAN

Results

The following sections show the function of the FortiGate and specifically of secure SD-WAN with respect to DSCP 
tagged traffic steering, and can be used to confirm that it is setup and running correctly:
 l Verifying the DSCP tagged traffic on FortiGate on page 641
 l Verifying service rules on page 642
 l Verifying traffic steering as per the defined SD-WAN rules on page 643
 l Verifying steered traffic leaving the required interface on page 643

Verifying the DSCP tagged traffic on FortiGate

To verify the incoming DSCP tagged traffic, we used packet sniffing and converting the sniffed traffic to a desired format. 
To know more about packet sniffing, refer to the Using the FortiOS built-in packet sniffer guide on the Fortinet
Knowledge Base.

For VoIP traffic that is marked with DSCP tag 0x70:

FortiGate # diagnose sniffer packet any '(ip and ip[1] & 0xfc == 0x70)' 6 0 l

We used the open-source packet analyzer Wireshark to verify that VoIP traffic is tagged with the 0x70 DSCP tag.

FortiOS 6.4.6 Administration Guide 641


Fortinet Technologies Inc.
SD-WAN

For web traffic marked with DSCP tag 0x30:

FortiGate # diagnose sniffer packet any '(ip and ip[1] & 0xfc == 0x30)' 6 0 l

We used the open-source packet analyzer Wireshark to verify that web traffic is tagged with the 0x30 DSCP tag.

Verifying service rules

The following CLI commands show the appropriate DSCP tags and the corresponding interfaces selected by the SD-
WAN rules to steer traffic:
FortiGate # diagnose sys sdwan service

Service(5): Address Mode(IPV4) flags=0x0


Gen(1), TOS(0x70/0xf0), Protocol(0: 1->65535), Mode(manual)
Members:
1: Seq_num(4 Branch-HQ-B), alive, selected
Dst address:
0.0.0.0-255.255.255.255

Service(3): Address Mode(IPV4) flags=0x0


Gen(1), TOS(0x30/0xf0), Protocol(0: 1->65535), Mode(manual)
Members:

FortiOS 6.4.6 Administration Guide 642


Fortinet Technologies Inc.
SD-WAN

1: Seq_num(2 port5), alive, selected


Dst address:
0.0.0.0-255.255.255.255

Service(2): Address Mode(IPV4) flags=0x0


Gen(1), TOS(0x0/0x0), Protocol(0: 1->65535), Mode(sla), sla-compare-order
Members:
1: Seq_num(1 port1), alive, sla(0x1), cfg_order(0), cost(0), selected
2: Seq_num(2 port5), alive, sla(0x1), cfg_order(1), cost(10), selected
Dst address:
0.0.0.0-255.255.255.255

Verifying traffic steering as per the defined SD-WAN rules

Go to Network > SD-WAN Rules to review the Hit Count on the appropriate SD-WAN interfaces.

Verifying steered traffic leaving the required interface

Go to Dashboard > Top Policies to confirm that web traffic (port 443) flows through  the right underlay interface members, 


and VoIP traffic flows through the right overlay interface member.
Web traffic leaves either Interface_A(port1) or Interface_B(port5).

VoIP traffic leaves the preferred VPN_B_Tunnel(Branch-HQ-B) interface.

FortiOS 6.4.6 Administration Guide 643


Fortinet Technologies Inc.
SD-WAN

Advanced routing

The following topics provide instructions on SD-WAN advanced routing:
 l Self-originating traffic on page 644
 l Using BGP tags with SD-WAN rules on page 649
 l BGP multiple path support on page 652
 l Controlling traffic with BGP route mapping and service rules on page 655
 l Applying BGP route-map to multiple BGP neighbors on page 661
 l IBGP and EBGP support in VRF on page 667

Self-originating traffic

This topic applies to FortiOS 6.4.4 and later. In other versions, self-originating (local-out) traffic 
behaves differently. 

By default, self-originating traffic, such as Syslog, FortiAnalyzer logging, FortiGuard services, remote authentication, and 
others, relies on routing table lookups to determine the egress interface that is used to initiate the connection. Policy 
routes generated by SD-WAN rules do not apply to this traffic.
Explicit proxy traffic uses policy routes and SD-WAN rules to select an egress interface. Self-originating VXLAN traffic 
uses SD-WAN rules to select an egress interface.
For the following features, self-originating traffic can be configured to use SD-WAN rules or a specific interface:

PING

IPv4 and IPv6 pings can be configured to use  SD-WAN rules:
execute ping-options use-sdwan {yes | no}
execute ping6-options use-sd-wan {yes | no}

FortiOS 6.4.6 Administration Guide 644


Fortinet Technologies Inc.
SD-WAN

DNS

DNS and non-management VDOM DNS traffic can use SD-WAN rules or a specific interface:
config system {dns | vdom-dns}
set interface-select-method {auto | sdwan | specify}
set interface <interface>
end

interface-select-method {auto | Select the interface selection method:


sdwan | specify}  l auto: Set the outgoing interface automatically (default).
 l sdwan: Set the interface by SD-WAN or policy routing rules.
 l specify: Set the interface manually.

interface <interface> Specify the outgoing interface. This option is only available and must be 


configured when interface-select-method is specify. 

FortiGuard

FortiGuard traffic can use SD-WAN rules or a specific interface:
config system fortiguard
set interface-select-method {auto | sdwan | specify}
set interface <interface>
end

RADIUS

RADIUS, and individual accounting servers, traffic can use SD-WAN rules or a specific interface:
config user radius
edit <name>
set interface-select-method {auto | sdwan | specify}
set interface <interface>
config accounting-server
edit <name>
set interface-select-method {auto | sdwan | specify}
set interface <interface>
next
end
next
end

LDAP

LDAP traffic can use SD-WAN rules or a specific interface:
config user ldap
edit <name>
set interface-select-method {auto | sdwan | specify}
set interface <interface>
next
end

FortiOS 6.4.6 Administration Guide 645


Fortinet Technologies Inc.
SD-WAN

TACACS+

TACACS+ traffic can use SD-WAN rules or a specific interface:
config user tacacs+
edit <name>
set interface-select-method {auto | sdwan | specify}
set interface <interface>
next
end

Central management

Central management traffic can use SD-WAN rules or a specific interface:
config system central-management
set interface-select-method {auto | sdwan | specify}
set interface <interface>
end

FortiAnalyzer

FortiAnalyzer and FortiAnalyzer Cloud log traffic can use SD-WAN rules or a specific interface:
config log {fortianalyzer | fortianalyzer2 | fortianalyzer3 | fortianalyzer-cloud} {setting
| override-setting}
set interface-select-method {auto | sdwan | specify}
set interface <interface>
end

FortiGate Cloud logging

FortiGate Cloud log traffic can use SD-WAN rules or a specific interface:
config log fortiguard setting
set interface-select-method {auto | sdwan | specify}
set interface <interface>
end

Syslog

Syslog traffic can use SD-WAN rules or a specific interface:
config log {syslog | syslog2 | syslog3} {setting | override-setting}
set interface-select-method {auto | sdwan | specify}
set interface <interface>
end

Log disk upload

Log disk upload traffic can use SD-WAN rules or a specific interface:
config log disk setting
set interface-select-method {auto | sdwan | specify}
set interface <interface>
end

FortiOS 6.4.6 Administration Guide 646


Fortinet Technologies Inc.
SD-WAN

FortiSandbox

FortiSandbox traffic can use SD-WAN rules or a specific interface:
config system fortisandbox
set interface-select-method {auto | sdwan | specify}
set interface <interface>
end

FSSO

FSSO traffic can use SD-WAN rules or a specific interface:
config system fsso
set interface-select-method {auto | sdwan | specify}
set interface <interface>
end

NTP server

NTP server traffic can use SD-WAN rules or a specific interface:
config system ntp
config ntpserver
edit <id>
set interface-select-method {auto | sdwan | specify}
set interface <interface>
next
end
end

External resources

External resource traffic can use SD-WAN rules or a specific interface:
config system external-resource
set interface-select-method {auto | sdwan | specify}
set interface <interface>
end

DHCP proxy

DHCP proxy traffic can use SD-WAN rules or a specific interface:
config system settings
set dhcp-proxy-interface-select-method {auto | sdwan | specify}
set dhcp-proxy-interface <interface>
end

dhcp-proxy-interface-select- Select the interface selection method:
method {auto | sdwan |  l auto: Set the outgoing interface automatically (default).
specify}  l sdwan: Set the interface by SD-WAN or policy routing rules.
 l specify: Set the interface manually.

dhcp-proxy-interface Specify the outgoing interface. This option is only available and must be 
<interface> configured when interface-select-method is specify. 

FortiOS 6.4.6 Administration Guide 647


Fortinet Technologies Inc.
SD-WAN

DHCP relay

DHCP relay traffic can use SD-WAN rules or a specific interface:
config system interface
edit <interface>
set dhcp-relay-interface-select-method {auto | sdwan | specify}
set dhcp-relay-interface <interface>
next
end

dhcp-relay-interface-select- Select the interface selection method:
method {auto | sdwan |  l auto: Set the outgoing interface automatically (default).
specify}  l sdwan: Set the interface by SD-WAN or policy routing rules.
 l specify: Set the interface manually.

dhcp-relay-interface Specify the outgoing interface. This option is only available and must be 
<interface> configured when interface-select-method is specify. 

CA and local certificate renewal with SCEP

Certificate renewal with SCEP traffic can use SD-WAN rules or a specific interface:
config vpn certificate setting
set interface-select-method {auto | sdwan | specify}
set interface <interface>
end

IPS TLS protocol active probing

TLS active probing can use SD-WAN rules or a specific interface:
config ips global
config tls-active-probe
set interface-selection-method {auto | sdwan | specify}
set interface <interface>
set vdom <VDOM>
set source-ip <IPv4 address>
set source-ip6 <IPv6 address>
end
end

interface-select-method {auto | Select the interface selection method:


sdwan | specify}  l auto: Set the outgoing interface automatically (default).
 l sdwan: Set the interface by SD-WAN or policy routing rules.
 l specify: Set the interface manually.

interface <interface> Specify the outgoing interface. This option is only available and must be 


configured when interface-select-method is specify. 

vdom <VDOM> Specify the VDOM. This option is only available and must be configured when 


interface-select-method is sdwan or specify. 

FortiOS 6.4.6 Administration Guide 648


Fortinet Technologies Inc.
SD-WAN

source-ip <IPv4 address> Specify the source IPv4 address. This option is only available and must be 


configured when interface-select-method is sdwan or specify. 

source-ip6 <IPv6 address> Specify the source IPv6 address. This option is only available and must be 


configured when interface-select-method is sdwan or specify. 

Using BGP tags with SD-WAN rules

SD-WAN rules can use Border Gateway Protocol (BGP) learned routes as dynamic destinations.

In this example, a customer has two ISP connections, wan1 and wan2. wan1 is used primarily for direct access to 
internet applications, and wan2 is used primarily for traffic to the customer's data center. 
The customer could create an SD-WAN rule using the data center's IP address range as the destination to force that 
traffic to use wan2, but the data center's IP range is not static. Instead, a BGP tag can be used. 
For this example, wan2's BGP neighbor advertises the data center's network range with a community number of 30:5.
This example assumes that SD-WAN is enabled on the FortiGate, wan1 and wan2 are added as SD-WAN members in 
the virtual-wan-link SD-WAN zone, and a policy and static route have been created. See SD-WAN quick start on page 
563 for details.

FortiOS supports IPv4 and IPv6 route tags.

To configure BGP tags with SD-WAN rules:

 1. Configure the community list:
config router community-list
edit "30:5"
config rule
edit 1
set action permit
set match "30:5"
next

FortiOS 6.4.6 Administration Guide 649


Fortinet Technologies Inc.
SD-WAN

end
next
end

 2. Configure the route map:
config router route-map
edit "comm1"
config rule
edit 1
set match-community "30:5"
set set-route-tag 15
next
end
next
end

 3. Configure BGP:
config router bgp
set as xxxxx
set router-id xxxx
config neighbor
edit "10.100.20.2"
set soft-reconfiguration enable
set remote-as xxxxx
set route-map-in "comm1"
next
end
end

 4. Configure a firewall policy:
config firewall policy
edit 1
set name "1"
set srcintf "dmz"
set dstintf "virtual-wan-link"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

 5. Edit the SD-WAN configuration:
config system sdwan
set status enable
config members
edit 1
set interface "wan1"
set gateway 172.16.20.2
next
edit 2
set interface "wan2"
next

FortiOS 6.4.6 Administration Guide 650


Fortinet Technologies Inc.
SD-WAN

end
config service
edit 1
set name "DataCenter"
set mode manual
set route-tag 15
set priority-members 2
next
end
end

Troubleshooting BGP tags with SD-WAN rules

Check the network community

Use the get router info bgp network command to check the network community:


# get router info bgp network
BGP table version is 5, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight RouteTag Path


*> 0.0.0.0/0 10.100.1.5 32768 0 ?
*> 1.1.1.1/32 0.0.0.0 32768 0 ?
*> 10.1.100.0/24 172.16.203.2 32768 0 ?
*> 10.100.1.0/30 0.0.0.0 32768 0 ?
*> 10.100.1.4/30 0.0.0.0 32768 0 ?
*> 10.100.1.248/29 0.0.0.0 32768 0 ?
*> 10.100.10.0/24 10.100.1.5 202 10000 15 20 e
*> 172.16.200.0/24 0.0.0.0 32768 0 ?
*> 172.16.200.200/32
0.0.0.0 32768 0 ?
*> 172.16.201.0/24 172.16.200.4 32768 0 ?
*> 172.16.203.0/24 0.0.0.0 32768 0 ?
*> 172.16.204.0/24 172.16.200.4 32768 0 ?
*> 172.16.205.0/24 0.0.0.0 32768 0 ?
*> 172.16.206.0/24 0.0.0.0 32768 0 ?
*> 172.16.207.1/32 0.0.0.0 32768 0 ?
*> 172.16.207.2/32 0.0.0.0 32768 0 ?
*> 172.16.212.1/32 0.0.0.0 32768 0 ?
*> 172.16.212.2/32 0.0.0.0 32768 0 ?
*> 172.17.200.200/32
0.0.0.0 32768 0 ?
*> 172.27.1.0/24 0.0.0.0 32768 0 ?
*> 172.27.2.0/24 0.0.0.0 32768 0 ?
*> 172.27.5.0/24 0.0.0.0 32768 0 ?
*> 172.27.6.0/24 0.0.0.0 32768 0 ?
*> 172.27.7.0/24 0.0.0.0 32768 0 ?
*> 172.27.8.0/24 0.0.0.0 32768 0 ?
*> 172.29.1.0/24 0.0.0.0 32768 0 ?
*> 172.29.2.0/24 0.0.0.0 32768 0 ?
*> 192.168.1.0 0.0.0.0 32768 0 ?

Total number of prefixes 28

FortiOS 6.4.6 Administration Guide 651


Fortinet Technologies Inc.
SD-WAN

# get router info bgp network 10.100.11.0


BGP routing table entry for 10.100.10.0/24
Paths: (2 available, best 1, table Default-IP-Routing-Table)
Advertised to non peer-group peers:
172.10.22.2
20
10.100.20.2 from 10.100.20.2 (6.6.6.6)
Origin EGP metric 200, localpref 100, weight 10000, valid, external, best
Community: 30:5 <<<<===========================
Last update: Wen Mar 20 18:45:17 2019

Check dynamic BGP addresses

Use the get router info route-map-address command to check dynamic BGP addresses:


# get router info route-map-address
Extend-tag: 15, interface(wan2:16)
10.100.11.0/255.255.255.0

Check dynamic BGP addresses used in policy routes

Use the diagnose firewall proute list command to check dynamic BGP addresses used in policy routes:


# diagnose firewall proute list
list route policy info(vf=root):

id=4278779905 vwl_service=1(DataCenter) flags=0x0 tos=0x00 tos_mask=0x00 protocol=0


sport=0:65535 iif=0 dport=1-65535 oif=16
source wildcard(1): 0.0.0.0/0.0.0.0
destination wildcard(1): 10.100.11.0/255.255.255.0

BGP multiple path support

BGP supports multiple paths, allowing an ADVPN to advertise multiple paths. This allows BGP to extend and keep 
additional network paths according to RFC 7911.
In this example, Spoke1 and Spoke2 each have four VPN tunnels that are connected to the Hub with ADVPN. The 
Spoke-Hub has established four BGP neighbors on all four tunnels.

FortiOS 6.4.6 Administration Guide 652


Fortinet Technologies Inc.
SD-WAN

Spoke 1 and Spoke 2 can learn four different routes from each other.

To configure the hub:

config router bgp


set as 65505
set router-id 11.11.11.11
set ibgp-multipath enable
set additional-path enable
set additional-path-select 4
config neighbor-group
edit "gr1"
set capability-default-originate enable
set remote-as 65505
set additional-path both
set adv-additional-path 4
set route-reflector-client enable
next
end
config neighbor-range
edit 1
set prefix 10.10.0.0 255.255.0.0
set neighbor-group "gr1"
next
end
config network
edit 12
set prefix 11.11.11.11 255.255.255.255
next
end
end

To configure a spoke:

config router bgp


set as 65505
set router-id 2.2.2.2
set ibgp-multipath enable

FortiOS 6.4.6 Administration Guide 653


Fortinet Technologies Inc.
SD-WAN

set additional-path enable


set additional-path-select 4
config neighbor
edit "10.10.100.254"
set soft-reconfiguration enable
set remote-as 65505
set additional-path both
set adv-additional-path 4
next
edit "10.10.200.254"
set soft-reconfiguration enable
set remote-as 65505
set additional-path both
set adv-additional-path 4
next
edit "10.10.203.254"
set soft-reconfiguration enable
set remote-as 65505
set additional-path both
set adv-additional-path 4
next
edit "10.10.204.254"
set soft-reconfiguration enable
set remote-as 65505
set additional-path both
set adv-additional-path 4
next
end
config network
edit 3
set prefix 22.1.1.0 255.255.255.0
next
end
end

To view the BGP routing table on a spoke:

Spoke1 # get router info routing-table bgp


Routing table for VRF=0
B* 0.0.0.0/0 [200/0] via 10.10.200.254, vd2-2, 03:57:26
[200/0] via 10.10.203.254, vd2-3, 03:57:26
[200/0] via 10.10.204.254, vd2-4, 03:57:26
[200/0] via 10.10.100.254, vd2-1, 03:57:26
B 1.1.1.1/32 [200/0] via 11.1.1.1 (recursive via 12.1.1.1), 03:57:51
[200/0] via 11.1.1.1 (recursive via 12.1.1.1), 03:57:51
[200/0] via 11.1.1.1 (recursive via 12.1.1.1), 03:57:51
[200/0] via 11.1.1.1 (recursive via 12.1.1.1), 03:57:51
B 11.11.11.11/32 [200/0] via 10.10.200.254, vd2-2, 03:57:51
[200/0] via 10.10.203.254, vd2-3, 03:57:51
[200/0] via 10.10.204.254, vd2-4, 03:57:51
[200/0] via 10.10.100.254, vd2-1, 03:57:51
B 33.1.1.0/24 [200/0] via 10.10.204.3, vd2-4, 03:57:26
[200/0] via 10.10.203.3, vd2-3, 03:57:26
[200/0] via 10.10.200.3, vd2-2, 03:57:26
[200/0] via 10.10.100.3, vd2-1, 03:57:26
[200/0] via 10.10.204.3, vd2-4, 03:57:26

FortiOS 6.4.6 Administration Guide 654


Fortinet Technologies Inc.
SD-WAN

[200/0] via 10.10.203.3, vd2-3, 03:57:26


[200/0] via 10.10.200.3, vd2-2, 03:57:26
[200/0] via 10.10.100.3, vd2-1, 03:57:26
[200/0] via 10.10.204.3, vd2-4, 03:57:26
[200/0] via 10.10.203.3, vd2-3, 03:57:26
[200/0] via 10.10.200.3, vd2-2, 03:57:26
[200/0] via 10.10.100.3, vd2-1, 03:57:26
[200/0] via 10.10.204.3, vd2-4, 03:57:26
[200/0] via 10.10.203.3, vd2-3, 03:57:26
[200/0] via 10.10.200.3, vd2-2, 03:57:26
[200/0] via 10.10.100.3, vd2-1, 03:57:26

Controlling traffic with BGP route mapping and service rules

SD-WAN allows you to select different outbound WAN links based on performance SLAs. It is important that BGP 
neighbors are aware of these settings, and changes to them.
BGP can adapt to changes in SD-WAN link SLAs in the following ways:
 l Applying different route-maps based on the SD-WAN's health checks. For example, different BGP community 
strings can be advertised to BGP neighbors when SLAs are not met.
 l Traffic can be selectively forwarded based on the active BGP neighbor. If the SD-WAN service's role matches the 
active SD-WAN neighbor, the service is enabled. If there is no match, then the service is disabled.

Example

In this topology, a branch FortiGate has two SD-WAN gateways serving as the primary and secondary gateways. The 
gateways reside in different datacenters, but have a full mesh network between them.

This example shows how route-maps and service rules are selected based on performance SLAs and the member that 
is currently active. Traffic flows through the primary gateway unless the neighbor's health check is outside of its SLA. If 
that happens, traffic routes to the secondary gateway.
BGP NBR1 is the primary neighbor and BGP NBR2 is the secondary neighbor.
The branch FortiGate's wan1 and wan2 interfaces are members of the SD-WAN. When the SD-WAN neighbor status is 
primary, it will advertise community 20:1 to BGP NBR1 and 20:5 to BGP NBR2. When the SD-WAN neighbor status is 
secondary, it will advertise 20:5 to BGP NBR1 and 20:2 to BGP NBR2. 

FortiOS 6.4.6 Administration Guide 655


Fortinet Technologies Inc.
SD-WAN

Only one of the primary or secondary neighbors can be active at one time. The SD-WAN neighbor status is used to 
decide which neighbor is selected:
 l Primary: The primary neighbor takes precedence if its SLAs are met.
 l Secondary: If the primary neighbor's SLAs are not met, the secondary neighbor becomes active if its SLAs are met.
 l Standalone: If neither the primary or secondary neighbor's SLAs are met, the SD-WAN neighbor status becomes 
standalone.

Route map

SD-WAN is configured to let BGP advertise different communities when the SLA status changes. When the SLA is 
missed, it triggers BGP to advertise a different community to its BGP neighbor based on its route-map. The BGP 
neighbors can use the received community string to select the best path to reach the branch.

To configure BGP route-maps and neighbors:

 1. Configure an access for the routes to be matched:
config router access-list
edit "net192"
config rule
edit 1
set prefix 192.168.20.0 255.255.255.0
next
end
next
end

 2. Configure the primary neighbor's preferred route-map:
config router route-map
edit "comm1"
config rule
edit 1
set match-ip-address "net192"
set set-community "20:1"
next
end
next
end

 3. Configure the secondary neighbor's preferred route-map:
config router route-map
edit "comm2"
config rule
edit 1
set match-ip-address "net192"
set set-community "20:2"
next
end
next
end

FortiOS 6.4.6 Administration Guide 656


Fortinet Technologies Inc.
SD-WAN

 4. Configure the failed route-map:
config router route-map
edit "comm5"
config rule
edit 1
set match-ip-address "net192"
set set-community "20:5"
next
end
next
end

 5. Configure BGP neighbors:
config router bgp
set as 65412
set router-id 1.1.1.1
set ibgp-multipath enable
config neighbor
edit "10.100.1.1"
set soft-reconfiguration enable
set remote-as 20
set route-map-out "comm5"
set route-map-out-preferable "comm1"
next
edit "10.100.1.5"
set soft-reconfiguration enable
set remote-as 20
set route-map-out "comm5"
set route-map-out-preferable "comm2"
next
end
end

When SLAs are met, route-map-out-preferable is used. When SLAs are missed, route-map-out is used.

To configure SD-WAN:

 1. Configure the SD-WAN members:
config system sdwan
set status enable
config members
edit 1
set interface "port1"
next
edit 2
set interface "port2"
next
end
end

 2. Configure health checks for each member:
config system sdwan
config health-check
edit "ping"

FortiOS 6.4.6 Administration Guide 657


Fortinet Technologies Inc.
SD-WAN

set server "10.100.2.22"


set members 1
config sla
edit 1
set link-cost-factor packet-loss
set packetloss-threshold 1
next
end
next
edit "ping2"
set server "10.100.2.23"
set members 2
config sla
edit 1
set link-cost-factor packet-loss
set packetloss-threshold 1
next
end
next
end
end

 3. Configure the SD-WAN neighbors and assign them a role and the health checks used to determine if the neighbor 
meets the SLA:
SD-WAN neighbors can only be configured in the CLI.
config system sdwan
config neighbor
edit "10.100.1.1"
set member 1
set role primary
set health-check "ping"
set sla-id 1
next
edit "10.100.1.5"
set member 2
set role secondary
set health-check "ping2"
set sla-id 1
next
end
end

Service rules

Create SD-WAN service rules to direct traffic to the primary neighbor when its SLAs are met, and to the secondary 
neighbor when the primary neighbor's SLAs are missed.

To configure the SD-WAN service rules:

config system sdwan


config service
edit 1
set name "Primary-Out"
set role primary
set dst "all"

FortiOS 6.4.6 Administration Guide 658


Fortinet Technologies Inc.
SD-WAN

set src "all"


set priority-members 1
next
edit 2
set name "Secondary-Out"
set role secondary
set dst "all"
set src "all"
set priority-members 2
next
end
end

If neither the primary nor secondary neighbors are active, the SD-WAN neighbor status 
becomes standalone. Only service rules with standalone-action enabled will continue to 
pass traffic. This option is disabled by default.

Verification

To verify when the primary neighbor is passing traffic:

 1. Verify the health check status:
FortiGate-Branch # diagnose sys sdwan health-check
Health Check(ping):
Seq(1 port1): state(alive), packet-loss(0.000%) latency(0.569), jitter(0.061) sla_
map=0x1
Health Check(ping2):
Seq(2 port2): state(alive), packet-loss(0.000%) latency(3.916), jitter(2.373) sla_
map=0x1

 2. Verify SD-WAN neighbor status:
FortiGate-Branch # diagnose sys sdwan neighbor
SD-WAN neighbor status: hold-down(disable), hold-down-time(0), hold_boot_time(0)
Selected role(primary) last_secondary_select_time/current_time in seconds 0/572
Neighbor(10.100.1.1): member(1) role(primary)
Health-check(ping:1) sla-pass selected alive
Neighbor(10.100.1.5): member(2) role(secondary)
Health-check(ping2:1) sla-pass alive

 3. Verify service rules status:
FortiGate-Branch # diagnose sys sdwan service

Service(1): Address Mode(IPV4) flags=0x0


Gen(3), TOS(0x0/0x0), Protocol(0: 1->65535), Mode(manual)
Service role: primary
Members:
1: Seq_num(1 port1), alive, selected
Src address:
0.0.0.0-255.255.255.255

Dst address:
0.0.0.0-255.255.255.255

FortiOS 6.4.6 Administration Guide 659


Fortinet Technologies Inc.
SD-WAN

Service(2): Address Mode(IPV4) flags=0x0


Gen(6), TOS(0x0/0x0), Protocol(0: 1->65535), Mode(manual)
Service role: secondary, disabled by unselected.
Members:
1: Seq_num(2 port2), alive, selected
Src address:
0.0.0.0-255.255.255.255

Dst address:
0.0.0.0-255.255.255.255

 4. Verify neighbor routers:
 a. Primary neighbor router:
FGT-NBR1 # get router info bgp network 192.168.20.0
BGP routing table entry for 192.168.20.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
64512
10.100.1.2 from 10.100.1.2 (192.168.122.98)
Origin IGP metric 0, localpref 100, valid, external, best
Community: 20:1
Last update: Thu Apr 30 13:41:40 2020

 b. Secondary neighbor router:
FGT-NBR2 # get router info bgp network 192.168.20.0
VRF 0 BGP routing table entry for 192.168.20.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
Original VRF 0
64512
10.100.1.6 from 10.100.1.6 (192.168.122.98)
Origin IGP metric 0, localpref 100, valid, external, best
Community: 20:5
Last update: Thu Apr 30 13:41:39 2020

To verify when the secondary neighbor is passing traffic:

 1. Verify the health check status:
FortiGate-Branch # diagnose sys sdwan health-check
Health Check(ping):
Seq(1 port1): state(dead), packet-loss(54.000%) sla_map=0x0
Health Check(ping2):
Seq(2 port2): state(alive), packet-loss(0.000%) latency(4.339), jitter(3.701) sla_
map=0x1

 2. Verify SD-WAN neighbor status:
FortiGate-Branch # diagnose sys sdwan neighbor
SD-WAN neighbor status: hold-down(disable), hold-down-time(0), hold_boot_time(0)
Selected role(secondary) last_secondary_select_time/current_time in seconds
936/936
Neighbor(10.100.1.1): member(1) role(primary)
Health-check(ping:1) sla-fail dead
Neighbor(10.100.1.5): member(2) role(secondary)
Health-check(ping2:1) sla-pass selected alive

FortiOS 6.4.6 Administration Guide 660


Fortinet Technologies Inc.
SD-WAN

 3. Verify service rules status:
FortiGate-Branch # diagnose sys sdwan service

Service(1): Address Mode(IPV4) flags=0x0


Gen(4), TOS(0x0/0x0), Protocol(0: 1->65535), Mode(manual)
Service role: primary, disabled by unselected.
Members:
1: Seq_num(1 port1), alive, selected
Src address:
0.0.0.0-255.255.255.255

Dst address:
0.0.0.0-255.255.255.255

Service(2): Address Mode(IPV4) flags=0x0


Gen(7), TOS(0x0/0x0), Protocol(0: 1->65535), Mode(manual)
Service role: secondary
Members:
1: Seq_num(2 port2), alive, selected
Src address:
0.0.0.0-255.255.255.255

Dst address:
0.0.0.0-255.255.255.255

 4. Verify neighbor routers:
 a. Primary neighbor router:
FGT-NBR1 # get router info bgp network 192.168.20.0
BGP routing table entry for 192.168.20.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
64512
10.100.1.2 from 10.100.1.2 (192.168.122.98)
Origin IGP metric 0, localpref 100, valid, external, best
Community: 20:5
Last update: Thu Apr 30 15:41:58 2020

 b. Secondary neighbor router:
FGT-NBR2 # get router info bgp network 192.168.20.0
VRF 0 BGP routing table entry for 192.168.20.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
Original VRF 0
64512
10.100.1.6 from 10.100.1.6 (192.168.122.98)
Origin IGP metric 0, localpref 100, valid, external, best
Community: 20:2
Last update: Thu Apr 30 15:42:07 2020

Applying BGP route-map to multiple BGP neighbors

Controlling traffic with BGP route mapping and service rules explained how BGP can apply different route-maps to the 
primary and secondary SD-WAN neighbors based on SLA health checks. 

FortiOS 6.4.6 Administration Guide 661


Fortinet Technologies Inc.
SD-WAN

In this example, SD-WAN neighbors that are not bound to primary and secondary roles are configured.

The FortiGate has multiple SD-WAN links and has formed BGP neighbors with both ISPs.
ISP1 is used primarily for outbound traffic, and has an SD-WAN service rule using the lowest cost algorithm applied to it. 
When SLAs for ISP1 are not met, it will fail over to the MPLS line.
Inbound traffic is allowed by both WAN links, with each WAN advertising a community string when SLAs are met. When 
SLAs are not met, the WAN links advertise a different community string.
This example uses two SD-WAN links. The topology can be expanded to include more links as needed.

To configure BGP route-maps and neighbors:

 1. Configure an access list for routes to be matched:
config router access-list
edit "net192"
config rule
edit 1
set prefix 192.168.20.0 255.255.255.0
next
end
next
end

 2. Configure route-maps for neighbor ISP1:
config router route-map
edit "comm1"
config rule
edit 1
set match-ip-address "net192"
set set-community "64511:1"
next
end
next
edit "comm-fail1"
config rule
edit 1
set match-ip-address "net192"
set set-community "64511:5"
next

FortiOS 6.4.6 Administration Guide 662


Fortinet Technologies Inc.
SD-WAN

end
next
end

 3. Configure route-maps for neighbor ISP2:
config router route-map
edit "comm2"
config rule
edit 1
set match-ip-address "net192"
set set-community "64522:1"
next
end
next
edit "comm-fail2"
config rule
edit 1
set match-ip-address "net192"
set set-community "64522:5"
next
end
next
end

 4. Configure the BGP neighbors:
config router bgp
set as 64512
set keepalive-timer 1
set holdtime-timer 3
config neighbor
edit "192.168.2.1"
set soft-reconfiguration enable
set remote-as 64511
set route-map-out "comm-fail1"
set route-map-out-preferable "comm1"
next
edit "172.31.0.1"
set soft-reconfiguration enable
set remote-as 64522
set route-map-out "comm-fail2"
set route-map-out-preferable "comm2"
next
end
config network
edit 1
set prefix 192.168.20.0 255.255.255.0
next
end
end

When SLAs are met, route-map-out-preferable is used. When SLAs are missed, route-map-out is used.

FortiOS 6.4.6 Administration Guide 663


Fortinet Technologies Inc.
SD-WAN

To configure SD-WAN:

 1. Configure the SD-WAN members:
config system sdwan
set status enable
config members
edit 1
set interface "port1"
set gateway 192.168.2.1
next
edit 2
set interface "MPLS"
set cost 20
next
end
end

 2. Configure the health checks that must be met:
config system sdwan
config health-check
edit "pingserver"
set server "8.8.8.8"
set members 2 1
config sla
edit 1
set link-cost-factor packet-loss
set packetloss-threshold 2
next
end
next
end
end

 3. Configure the SD-WAN neighbors and assign them a role and the health checks used to determine if the neighbor 
meets the SLA:
When no role is defined, the default role, standalone, is used.
config system sdwan
config neighbor
edit "192.168.2.1"
set member 1
set health-check "pingserver"
set sla-id 1
next
edit "172.31.0.1"
set member 2
set health-check "pingserver"
set sla-id 1
next
end
end

FortiOS 6.4.6 Administration Guide 664


Fortinet Technologies Inc.
SD-WAN

Service rules

Create SD-WAN service rules to direct traffic to the SD-WAN links based on the lowest cost algorithm The same SLA 
health check and criteria that are used for the SD-WAN neighbor are used for this SD-WAN service rule.
When no roles are defined in the service rule, the default role, standalone, is used.

To configure the SD-WAN service rule:

config system sdwan


config service
edit 1
set name "OutboundAll"
set mode sla
set dst "all"
set src "all"
config sla
edit "pingserver"
set id 1
next
end
set priority-members 1 2
next
end
end

Verification

To verify that when both SLAs are met, port1 is selected due to its lower cost:

 1. Verify the health check status:
FortiGate-Branch # diagnose sys sdwan health-check
Health Check(pingserver):
Seq(2 MPLS): state(alive), packet-loss(0.000%) latency(24.709), jitter(14.996) sla_
map=0x1
Seq(1 port1): state(alive), packet-loss(0.000%) latency(28.771), jitter(14.840) sla_
map=0x1

 2. Verify SD-WAN neighbor status:
FortiGate-Branch # diagnose sys sdwan neighbor
Neighbor(192.168.2.1): member(1) role(standalone)
Health-check(pingserver:1) sla-pass selected alive
Neighbor(172.31.0.1): member(2) role(standalone)
Health-check(pingserver:1) sla-pass selected alive

 3. Verify service rules status:   
Because the service role is standalone, it matches both neighbors. The mode (SLA) determines that port1 is 
lower cost.
FortiGate-Branch # diagnose sys sdwan service

Service(1): Address Mode(IPV4) flags=0x0


Gen(1), TOS(0x0/0x0), Protocol(0: 1->65535), Mode(sla), sla-compare-order
Service role: standalone
Members:

FortiOS 6.4.6 Administration Guide 665


Fortinet Technologies Inc.
SD-WAN

1: Seq_num(1 port1), alive, sla(0x1), cfg_order(0), cost(0), selected


2: Seq_num(2 MPLS), alive, sla(0x1), cfg_order(1), cost(20), selected
Src address:
0.0.0.0-255.255.255.255

Dst address:
0.0.0.0-255.255.255.255

 4. Verify neighbor routers:
 a. Primary neighbor router:
FGT-NBR1 # get router info bgp network 192.168.20.0
BGP routing table entry for 192.168.20.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
64512
192.168.2.5 from 192.168.2.5 (192.168.122.98)
Origin IGP metric 0, localpref 100, valid, external, best
Community: 64511:1
Last update: Thu Apr 30 23:59:05 2020

 b. Secondary neighbor router:
FGT-NBR2 # get router info bgp network 192.168.20.0
VRF 0 BGP routing table entry for 192.168.20.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
Original VRF 0
64512
172.31.0.2 from 172.31.0.2 (192.168.122.98)
Origin IGP metric 0, localpref 100, valid, external, best
Community: 64522:1
Last update: Fri May 1 00:11:28 2020

To verify that when neighbor ISP1 misses SLAs, MPLS is selected and BGP advertises a different
community string for ISP1:

 1. Verify the health check status:
FortiGate-Branch # diagnose sys sdwan health-check
Health Check(pingserver):
Seq(2 MPLS): state(alive), packet-loss(0.000%) latency(25.637), jitter(17.820) sla_
map=0x1
Seq(1 port1): state(dead), packet-loss(16.000%) sla_map=0x0

 2. Verify SD-WAN neighbor status:
FortiGate-Branch # diagnose sys sdwan neighbor
Neighbor(192.168.2.1): member(1) role(standalone)
Health-check(pingserver:1) sla-fail dead
Neighbor(172.31.0.1): member(2) role(standalone)
Health-check(pingserver:1) sla-pass selected alive

 3. Verify service rules status:
As SLA failed for neighbor ISP1, MPLS is preferred.
FortiGate-Branch # diagnose sys sdwan service

FortiOS 6.4.6 Administration Guide 666


Fortinet Technologies Inc.
SD-WAN

Service(1): Address Mode(IPV4) flags=0x0


Gen(3), TOS(0x0/0x0), Protocol(0: 1->65535), Mode(sla), sla-compare-order
Service role: standalone
Members:
1: Seq_num(2 MPLS), alive, sla(0x1), cfg_order(1), cost(20), selected
2: Seq_num(1 port1), dead, sla(0x0), cfg_order(0), cost(0)
Src address:
0.0.0.0-255.255.255.255

Dst address:
0.0.0.0-255.255.255.255

 4. Verify neighbor routers:
The community received on ISP1 is updated.
 a. Primary neighbor router:
FGT-NBR1 # get router info bgp network 192.168.20.0
BGP routing table entry for 192.168.20.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
64512
192.168.2.5 from 192.168.2.5 (192.168.122.98)
Origin IGP metric 0, localpref 100, valid, external, best
Community: 64511:5
Last update: Fri May 1 00:33:26 2020

 b. Secondary neighbor router:
FGT-NBR2 # get router info bgp network 192.168.20.0
VRF 0 BGP routing table entry for 192.168.20.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
Original VRF 0
64512
172.31.0.2 from 172.31.0.2 (192.168.122.98)
Origin IGP metric 0, localpref 100, valid, external, best
Community: 64522:1
Last update: Fri May 1 00:22:42 2020

IBGP and EBGP support in VRF

Support is included for internal and external border gateway protocols (IBGP and EBGP) in virtual routing and forwarding 
(VRF).
FortiGate can establish neighbor connections with other FortiGates or routers, and the learned routes are put into 
different VRF tables according to the neighbor's settings.
This example uses the following topology:

FortiOS 6.4.6 Administration Guide 667


Fortinet Technologies Inc.
SD-WAN

 l BGP routes learned from the Router1 neighbor are put into vrf10.
 l BGP routes learned from the Router2 neighbor are put into vrf20. 

To configure this example:

config system interface


edit port1
set vrf 10
next
edit port2
set vrf 20
next
end
config router bgp
config neighbor
edit "192.168.1.1"
set update-source port1
next
edit "192.168.2.1"
set interface port2
next
end
end

Results

Using the above topology:
 l Both Router1 and Router2 establish OSPF and BGP neighbor with the FortiGate.
 l Router1 advertises 10.10.1.0/24 into OSPF and 10.10.2.0/24 into BGP.
 l Router2 advertises 20.20.1.0/24 into OSPF and 20.20.2.0/24 into BGP.
When port1 and port2 have not set VRF, all of the routing is in VRF=0:

FortiOS 6.4.6 Administration Guide 668


Fortinet Technologies Inc.
SD-WAN

# get router info routing-table all


Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

Routing table for VRF=0


S* 0.0.0.0/0 [5/0] via 10.0.1.254, port9
C 10.0.1.0/24 is directly connected, port9
O 10.10.1.0/24 [110/10] via 192.168.1.1, port1, 00:18:31
B 10.10.2.0/24 [20/200] via 192.168.1.1, port1, 00:01:31
O 20.20.1.0/22 [110/10] via 192.168.2.1, port2, 00:19:05
B 20.20.2.0/24 [20/200] via 192.168.2.1, port2, 00:01:31
C 192.168.1.0/24 is directly connected, port1
C 192.168.2.0/24 is directly connected, port2

After VRF is set for BGP, BGP routes are added to the VRF tables along with OSPF and connected routes:
# get router info routing-table all
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

Routing table for VRF=0


S* 0.0.0.0/0 [5/0] via 10.0.1.254, port9
C 10.0.1.0/24 is directly connected, port9

Routing table for VRF=10


O 10.10.1.0/24 [110/10] via 192.168.1.1, port1, 00:18:31
B 10.10.2.0/24 [20/200] via 192.168.1.1, port1, 00:01:31
C 192.168.1.0/24 is directly connected, port1

Routing table for VRF=20


O 20.20.1.0/22 [110/10] via 192.168.2.1, port2, 00:19:05
B 20.20.2.0/24 [20/200] via 192.168.2.1, port2, 00:01:31
C 192.168.2.0/24 is directly connected, port2

BGP neighbor groups

This feature is also supported in the BGP neighbor groups. For example:
config router bgp
config neighbor-group
edit "FGT"
set update-source "port1"
next
end
config neighbor-range
edit 1
set prefix 172.16.201.0 255.255.255.0
set neighbor-group "FGT"
next

FortiOS 6.4.6 Administration Guide 669


Fortinet Technologies Inc.
SD-WAN

end
end

Note that the set interface command is not supported.

VPN overlay

The following topics provide instructions on SD-WAN VPN overlays:
 l ADVPN and shortcut paths on page 670
 l SD-WAN monitor on ADVPN shortcuts on page 683
 l SD-WAN integration with OCVPN on page 684
 l Forward error correction on VPN overlay networks on page 691
 l Dual VPN tunnel wizard on page 694
 l Duplicate packets based on SD-WAN rules on page 695
 l Duplicate packets on other zone members on page 697

ADVPN and shortcut paths

This topic provides an example of how to use SD-WAN and ADVPN together.
ADVPN (Auto Discovery VPN) is an IPsec technology that allows a traditional hub-and-spoke VPN’s spokes to establish 
dynamic, on-demand, direct tunnels between each other to avoid routing through the topology's hub device. The primary 
advantage is that it provides full meshing capabilities to a standard hub-and-spoke topology. This greatly reduces the 
provisioning effort for full spoke-to-spoke low delay reachability, and addresses the scalability issues associated with 
very large fully meshed VPN networks.
If a customer's head office and branch offices all have two or more internet connections, they can build a dual-hub 
ADVPN network. Combined with SD-WAN technology, the customer can load-balance traffic to other offices on multiple 
dynamic tunnels, control specific traffic using specific connections, or choose better performance connections 
dynamically.

SD-WAN load-balance mode rules (or services) do not support ADVPN members. Other 
modes' rules, such as SLA and priority, support ADVPN members.

This topic covers three parts:
 1. Configure dual-hub ADVPN with multiple branches.
 2. Configure BGP to exchange routing information among hubs and spokes.
 3. Configure SD-WAN on spoke to do load-balancing and control traffic.

FortiOS 6.4.6 Administration Guide 670


Fortinet Technologies Inc.
SD-WAN

Configuration example

A typical ADVPN configuration with SD-WAN usually has two hubs, and each spoke connects to two ISPs and 
establishes VPN tunnels with both hubs.
This example shows a hub-and-spoke configuration using two hubs and one spoke:
 l Hub1 and Hub2 both use wan1 to connect to the ISPs and port10 to connect to internal network.
 l Spoke1 uses wan1 to connect to ISP1 and wan2 to connect to ISP2.
 l wan1 sets up VPN to hub1.
 l wan2 sets up VPN to hub2.
The SD-WAN is configured on the spoke. It uses the two VPN interfaces as members and two rules to control traffic to 
headquarters or other spokes using ADVPN VPN interfaces. You can create more rules if required.
For this example:
 l Use SD-WAN member 1 (via ISP1) and its dynamic shortcuts for financial department traffic if member 1 meets SLA 
requirements. If it doesn't meet SLA requirements, it will use SD-WAN member 2 (via ISP2).
 l Use SD-WAN member 2 (via ISP2) and its dynamic shortcuts for engineering department traffic.
 l Load balance other traffic going to hubs and other spokes between these two members.
 l Set up all other traffic to go with their original ISP connection. All other traffic does not go through SD-WAN.
 l Set up basic network configuration to let all hubs and spokes connect to their ISPs and the Internet.

FortiOS 6.4.6 Administration Guide 671


Fortinet Technologies Inc.
SD-WAN

Hub internal network 172.16.101.0/24

Spoke1 internal network 10.1.100.0/24

ADVPN 1 network 10.10.100.0/24

ADVPN 2 network 10.10.200.0/24

Hub1 wan1 IP 11.1.1.11

Hub2 wan1 IP 11.1.2.11

Hub1 VPN IP 10.10.100.254

Hub2 VPN IP 10.10.200.254

Spoke1 to hub1 VPN IP 10.10.100.2

Spoke1 to hub2 VPN IP 10.10.200.2

Ping server in Headquarters 11.11.11.11

Internal subnet of spoke1 22.1.1.0/24

Internal subnet of spoke2 33.1.1.0/24

Firewall addresses Configure hub_subnets and spoke_subnets before using in policies. These can 
be customized.

The GUI does not support some ADVPN related options, such as auto-discovery-sender, auto-discovery-receiver, auto-
discovery-forwarder, and IBGP neighbor-group setting, so this example only provides CLI configuration commands.

Hub1 sample configuration

To configure the IPsec phase1 and phase2 interface:

config vpn ipsec phase1-interface


edit "hub-phase1"
set type dynamic
set interface "wan1"
set peertype any
set net-device disable
set proposal aes128-sha256 aes256-sha256 3des-sha256 aes128-sha1 aes256-sha1 3des-
sha1
set add-route disable
set dpd on-idle
set auto-discovery-sender enable
set tunnel-search nexthop
set psksecret sample
set dpd-retryinterval 5
next
end
config vpn ipsec phase2-interface
edit "hub-phase2"
set phase1name "hub-phase1"
set proposal aes128-sha1 aes256-sha1 3des-sha1 aes128-sha256 aes256-sha256 3des-
sha256

FortiOS 6.4.6 Administration Guide 672


Fortinet Technologies Inc.
SD-WAN

next
end

To configure the VPN interface and BGP:

config system interface


edit "hub-phase1"
set ip 10.10.100.254 255.255.255.255
set remote-ip 10.10.100.253 255.255.255.0
next
end
config router bgp
set as 65505
config neighbor-group
edit "advpn"
set link-down-failover enable
set remote-as 65505
set route-reflector-client enable
next
end
config neighbor-range
edit 1
set prefix 10.10.100.0 255.255.255.0
set neighbor-group "advpn"
next
end
config network
edit 1
set prefix 172.16.101.0 255.255.255.0
next
edit 2
set prefix 11.11.11.0 255.255.255.0
next
end
end

To configure the firewall policy:

config firewall policy


edit 1
set name "spoke2hub"
set srcintf "hub-phase1"
set dstintf "port10"
set srcaddr "spoke_subnets"
set dstaddr "hub_subnets"
set action accept
set schedule "always"
set service "ALL"
set comments "allow traffic from spokes to headquater"
next
edit 2
set name "spoke2spoke"
set srcintf "hub-phase1"
set dstintf "hub-phase1"
set srcaddr "spoke_subnets"
set dstaddr "spoke_subnets"

FortiOS 6.4.6 Administration Guide 673


Fortinet Technologies Inc.
SD-WAN

set action accept


set schedule "always"
set service "ALL"
set comments "allow traffic from spokes to spokes"
next
edit 3
set name "internal2spoke"
set srcintf "port10"
set dstintf "hub-phase1"
set srcaddr "hub_subnets"
set dstaddr "spoke_subnets"
set action accept
set schedule "always"
set service "ALL"
set comments "allow traffic from headquater to spokes"
next
end

Hub2 sample configuration

Hub2 configuration is the same as hub1 except the wan1 IP address, VPN interface IP address, and BGP neighbor-
range prefix.

To configure the IPsec phase1 and phase2 interface:

config vpn ipsec phase1-interface


edit "hub-phase1"
set type dynamic
set interface "wan1"
set peertype any
set net-device disable
set proposal aes128-sha256 aes256-sha256 3des-sha256 aes128-sha1 aes256-sha1 3des-
sha1
set add-route disable
set dpd on-idle
set auto-discovery-sender enable
set tunnel-search nexthop
set psksecret sample
set dpd-retryinterval 5
next
end
config vpn ipsec phase2-interface
edit "hub-phase2"
set phase1name "hub-phase1"
set proposal aes128-sha1 aes256-sha1 3des-sha1 aes128-sha256 aes256-sha256 3des-
sha256
next
end

To configure the VPN interface and BGP:

config system interface


edit "hub-phase1"
set ip 10.10.200.254 255.255.255.255
set remote-ip 10.10.200.253 255.255.255.0

FortiOS 6.4.6 Administration Guide 674


Fortinet Technologies Inc.
SD-WAN

next
end
config router bgp
set as 65505
config neighbor-group
edit "advpn"
set link-down-failover enable
set remote-as 65505
set route-reflector-client enable
next
end
config neighbor-range
edit 1
set prefix 10.10.200.0 255.255.255.0
set neighbor-group "advpn"
next
end
config network
edit 1
set prefix 172.16.101.0 255.255.255.0
next
edit 2
set prefix 11.11.11.0 255.255.255.0
next
end
end

To configure the firewall policy:

config firewall policy


edit 1
set name "spoke2hub"
set srcintf "hub-phase1"
set dstintf "port10"
set srcaddr "spoke_subnets"
set dstaddr "hub_subnets"
set action accept
set schedule "always"
set service "ALL"
set comments "allow traffic from spokes to headquater"
next
edit 2
set name "spoke2spoke"
set srcintf "hub-phase1"
set dstintf "hub-phase1"
set srcaddr "spoke_subnets"
set dstaddr "spoke_subnets"
set action accept
set schedule "always"
set service "ALL"
set comments "allow traffic from spokes to spokes"
next
edit 3
set name "internal2spoke"
set srcintf "port10"
set dstintf "hub-phase1"

FortiOS 6.4.6 Administration Guide 675


Fortinet Technologies Inc.
SD-WAN

set srcaddr "hub_subnets"


set dstaddr "spoke_subnets"
set action accept
set schedule "always"
set service "ALL"
set comments "allow traffic from headquater to spokes"
next
end

Spoke1 sample configuration

To configure the IPsec phase1 and phase2 interface:

config vpn ipsec phase1-interface


edit "spoke1-phase1"
set interface "wan1"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set auto-discovery-receiver enable
set remote-gw 11.1.1.11
set psksecret sample
set dpd-retryinterval 5
next
edit "spoke1-2-phase1"
set interface "wan2"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set auto-discovery-receiver enable
set remote-gw 11.1.2.11
set psksecret sample
set dpd-retryinterval 5
next
end
config vpn ipsec phase2-interface
edit "spoke1-phase2"
set phase1name "spoke1-phase1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm aes256gcm
chacha20poly1305
set auto-negotiate enable
next
edit "spoke1-2-phase2"
set phase1name "spoke1-2-phase1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm aes256gcm
chacha20poly1305
set auto-negotiate enable
next
end

FortiOS 6.4.6 Administration Guide 676


Fortinet Technologies Inc.
SD-WAN

To configure the VPN interface and BGP:

config system interface


edit "spoke1-phase1"
set ip 10.10.100.2 255.255.255.255
set remote-ip 10.10.100.254 255.255.255.0
next
edit "spoke1-2-phase1"
set ip 10.10.200.2 255.255.255.255
set remote-ip 10.10.200.254 255.255.255.0
next
end
config router bgp
set as 65505
config neighbor
edit "10.10.100.254"
set advertisement-interval 1
set link-down-failover enable
set remote-as 65505
next
edit "10.10.200.254"
set advertisement-interval 1
set link-down-failover enable
set remote-as 65505
next
end
config network
edit 1
set prefix 10.1.100.0 255.255.255.0
next
end
end

To configure SD-WAN:

config system sdwan


set status enable
config members
edit 1
set interface "spoke1-phase1"
next
edit 2
set interface "spoke1-2-phase1"
next
end
config health-check
edit "ping"
set server "11.11.11.11"
set members 1 2
config sla
edit 1
set latency-threshold 200
set jitter-threshold 50
set packetloss-threshold 5
next
end

FortiOS 6.4.6 Administration Guide 677


Fortinet Technologies Inc.
SD-WAN

next
end
config service
edit 1
set mode sla
set dst "finacial-department"
config sla
edit "ping"
set id 1
next
end
set priority-member 1 2
next
edit 2
set member 2
set dst "engineering-department"
next
end
end

If no SD-WAN zone is specified, members are added to the default virtual-wan-link zone.

To configure the firewall policy:

config firewall policy


edit 1
set name "outbound_advpn"
set srcintf "internal"
set dstintf "virtual-wan-link"
set srcaddr "spoke_subnets"
set dstaddr "spoke_subnets" "hub_subnets"
set action accept
set schedule "always"
set service "ALL"
set comments "allow internal traffic going out to headquater and other spokes"
next
edit 2
set name "inbound_advpn"
set srcintf "virtual-wan-link"
set dstintf "internal"
set srcaddr "spoke_subnets" "hub_subnets"
set dstaddr "spoke_subnets"
set action accept
set schedule "always"
set service "ALL"
set comments "allow headquater and other spokes traffic coming in"
next
end

FortiOS 6.4.6 Administration Guide 678


Fortinet Technologies Inc.
SD-WAN

Troubleshooting ADVPN and shortcut paths

Before spoke vs spoke shortcut VPN is established

Use the following CLI commands to check status before spoke vs spoke shortcut VPN is established.
# get router info bgp summary
BGP router identifier 2.2.2.2, local AS number 65505
BGP table version is 13
3 BGP AS-PATH entries
0 BGP community entries

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd


10.10.100.254 4 65505 3286 3270 11 0 0 00:02:15 5
10.10.200.254 4 65505 3365 3319 12 0 0 00:02:14 5

Total number of neighbors 2


# get router info routing-table bgp

Routing table for VRF=0


B* 0.0.0.0/0 [200/0] via 10.10.200.254, spoke1-2-phase1, 00:00:58
[200/0] via 10.10.100.254, spoke1-phase1, 00:00:58
B 1.1.1.1/32 [200/0] via 11.1.1.1 (recursive via 12.1.1.1), 00:01:29
[200/0] via 11.1.1.1 (recursive via 12.1.1.1), 00:01:29
B 11.11.11.0/24 [200/0] via 10.10.200.254, spoke1-2-phase1, 00:01:29
[200/0] via 10.10.100.254, spoke1-phase1, 00:01:29
B 33.1.1.0/24 [200/0] via 10.10.200.3, spoke1-2-phase1, 00:00:58
[200/0] via 10.10.100.3, spoke1-phase1, 00:00:58
[200/0] via 10.10.200.3, spoke1-2-phase1, 00:00:58
[200/0] via 10.10.100.3, spoke1-phase1, 00:00:58
# diagnose vpn tunnel list
list all ipsec tunnel in vd 3
------------------------------------------------------
name=spoke1-phase1 ver=1 serial=5 12.1.1.2:0->11.1.1.11:0 dst_mtu=15324
bound_if=48 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu create_dev
frag-rfc accept_traffic=1

proxyid_num=1 child_num=0 refcnt=22 ilast=0 olast=0 ad=r/2


stat: rxp=1 txp=185 rxb=16428 txb=11111
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=4
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1 proto=0 sa=1 ref=4 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=15262 expire=42820/0B replaywin=2048
seqno=ba esn=0 replaywin_lastseq=00000002 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42903/43200
dec: spi=03e01a2a esp=aes key=16 56e673f0df05186aa657f55cbb631c13
ah=sha1 key=20 b0d50597d9bed763c42469461b03da8041f87e88
enc: spi=2ead61bc esp=aes key=16 fe0ccd4a3ec19fe6d520c437eb6b8897
ah=sha1 key=20 e3e669bd6df41b88eadaacba66463706f26fb53a
dec:pkts/bytes=1/16368, enc:pkts/bytes=185/22360
npu_flag=03 npu_rgwy=11.1.1.11 npu_lgwy=12.1.1.2 npu_selid=0 dec_npuid=1 enc_npuid=1
------------------------------------------------------
name=spoke1-2-phase1 ver=1 serial=6 112.1.1.2:0->11.1.2.11:0 dst_mtu=15324

FortiOS 6.4.6 Administration Guide 679


Fortinet Technologies Inc.
SD-WAN

bound_if=90 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu create_dev


frag-rfc accept_traffic=1

proxyid_num=1 child_num=0 refcnt=21 ilast=0 olast=0 ad=r/2


stat: rxp=1 txp=186 rxb=16498 txb=11163
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=74
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1-2 proto=0 sa=1 ref=4 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=15262 expire=42818/0B replaywin=2048
seqno=bb esn=0 replaywin_lastseq=00000002 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42901/43200
dec: spi=03e01a2b esp=aes key=16 fe49f5042a5ad236250bf53312db1346
ah=sha1 key=20 5dbb15c8cbc046c284bb1c6425dac2b3e15bec85
enc: spi=2ead61bd esp=aes key=16 d6d97be52c3cccb9e88f28a9db64ac46
ah=sha1 key=20 e20916ae6ea2295c2fbd5cbc8b8f5dd8b17f52f1
dec:pkts/bytes=1/16438, enc:pkts/bytes=186/22480
npu_flag=03 npu_rgwy=11.1.2.11 npu_lgwy=112.1.1.2 npu_selid=1 dec_npuid=1 enc_npuid=1
# diagnose sys sdwan service

Service(1): Address Mode(IPV4) flags=0x0


TOS(0x0/0x0), Protocol(0: 1->65535), Mode(sla)
Member sub interface:
Members:
1: Seq_num(1), alive, sla(0x1), cfg_order(0), cost(0), selected
2: Seq_num(2), alive, sla(0x1), cfg_order(1), cost(0), selected
Dst address: 33.1.1.1-33.1.1.100

Service(2): Address Mode(IPV4) flags=0x0


TOS(0x0/0x0), Protocol(0: 1->65535), Mode(manual)
Member sub interface:
Members:
1: Seq_num(2), alive, selected
Dst address: 33.1.1.101-33.1.1.200
# diagnose firewall proute list
list route policy info(vf=vd2):

id=2132869121 vwl_service=1 vwl_mbr_seq=1 dscp_tag=0xff 0xff flags=0x0 tos=0x00 tos_


mask=0x00 protocol=0 sport=0:65535 iif=0 dport=1-65535 oif=70 oif=71
destination(1): 33.1.1.1-33.1.1.100
source wildcard(1): 0.0.0.0/0.0.0.0

id=2132869122 vwl_service=2 vwl_mbr_seq=2 dscp_tag=0xff 0xff flags=0x0 tos=0x00 tos_


mask=0x00 protocol=0 sport=0:65535 iif=0 dport=1-65535 oif=71
destination(1): 33.1.1.101-33.1.1.200
source wildcard(1): 0.0.0.0/0.0.0.0

After spoke vs spoke shortcut VPN is established

Use the following CLI commands to check status after spoke vs spoke shortcut VPN is established.
# get router info routing-table bgp

Routing table for VRF=0

FortiOS 6.4.6 Administration Guide 680


Fortinet Technologies Inc.
SD-WAN

B* 0.0.0.0/0 [200/0] via 10.10.200.254, spoke1-2-phase1, 00:01:33


[200/0] via 10.10.100.254, spoke1-phase1, 00:01:33
B 1.1.1.1/32 [200/0] via 11.1.1.1 (recursive via 12.1.1.1), 00:02:04
[200/0] via 11.1.1.1 (recursive via 12.1.1.1), 00:02:04
B 11.11.11.0/24 [200/0] via 10.10.200.254, spoke1-2-phase1, 00:02:04
[200/0] via 10.10.100.254, spoke1-phase1, 00:02:04
B 33.1.1.0/24 [200/0] via 10.10.200.3, spoke1-2-phase1_0, 00:01:33
[200/0] via 10.10.100.3, spoke1-phase1_0, 00:01:33
[200/0] via 10.10.200.3, spoke1-2-phase1_0, 00:01:33
[200/0] via 10.10.100.3, spoke1-phase1_0, 00:01:33
# diagnose sys sdwan service

Service(1): Address Mode(IPV4) flags=0x0


TOS(0x0/0x0), Protocol(0: 1->65535), Mode(sla)
Member sub interface:
1: seq_num(1), interface(spoke1-phase1):
1: spoke1-phase1_0(111)
2: seq_num(2), interface(spoke1-2-phase1):
1: spoke1-2-phase1_0(113)
Members:
1: Seq_num(1), alive, sla(0x1), cfg_order(0), cost(0), selected
2: Seq_num(2), alive, sla(0x1), cfg_order(1), cost(0), selected
Dst address: 33.1.1.1-33.1.1.100

Service(2): Address Mode(IPV4) flags=0x0


TOS(0x0/0x0), Protocol(0: 1->65535), Mode(manual)
Member sub interface:
1: seq_num(2), interface(spoke1-2-phase1):
1: spoke1-2-phase1_0(113)
Members:
1: Seq_num(2), alive, selected
Dst address: 33.1.1.101-33.1.1.200
# diagnose vpn tunnel list
list all ipsec tunnel in vd 3
------------------------------------------------------
name=spoke1-phase1 ver=1 serial=5 12.1.1.2:0->11.1.1.11:0 dst_mtu=15324
bound_if=48 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu create_dev
frag-rfc accept_traffic=1

proxyid_num=1 child_num=1 refcnt=20 ilast=0 olast=0 ad=r/2


stat: rxp=1 txp=759 rxb=16428 txb=48627
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=4
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=vd2-1 proto=0 sa=1 ref=5 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=15262 expire=42536/0B replaywin=2048
seqno=2f8 esn=0 replaywin_lastseq=00000002 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42898/43200
dec: spi=03e01a42 esp=aes key=16 1f131bda108d33909d49fc2778bd08bb
ah=sha1 key=20 14131d3f0da9b741a2fd13d530b0553aa1f58983
enc: spi=2ead61d8 esp=aes key=16 81ed24d5cd7bb59f4a80dceb5a560e1f
ah=sha1 key=20 d2ccc2f3223ce16514e75f672cd88c4b4f48b681
dec:pkts/bytes=1/16360, enc:pkts/bytes=759/94434
npu_flag=03 npu_rgwy=11.1.1.11 npu_lgwy=12.1.1.2 npu_selid=0 dec_npuid=1 enc_npuid=1

FortiOS 6.4.6 Administration Guide 681


Fortinet Technologies Inc.
SD-WAN

------------------------------------------------------
name=spoke1-2-phase1 ver=1 serial=6 112.1.1.2:0->11.1.2.11:0 dst_mtu=15324
bound_if=90 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu create_dev
frag-rfc accept_traffic=1

proxyid_num=1 child_num=1 refcnt=19 ilast=0 olast=0 ad=r/2


stat: rxp=1 txp=756 rxb=16450 txb=48460
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=74
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=vd2-2 proto=0 sa=1 ref=5 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=15262 expire=42538/0B replaywin=2048
seqno=2f5 esn=0 replaywin_lastseq=00000002 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42900/43200
dec: spi=03e01a43 esp=aes key=16 7fc87561369f88b56d08bfda769eb45b
ah=sha1 key=20 0ed554ef231c5ac16dc2e71d1907d7347dda33d6
enc: spi=2ead61d9 esp=aes key=16 00286687aa1762e7d8216881d6720ef3
ah=sha1 key=20 59d5eec6299ebcf038c190860774e2833074d7c3
dec:pkts/bytes=1/16382, enc:pkts/bytes=756/94058
npu_flag=03 npu_rgwy=11.1.2.11 npu_lgwy=112.1.1.2 npu_selid=1 dec_npuid=1 enc_npuid=1
------------------------------------------------------
name=spoke1-phase1_0 ver=1 serial=55 12.1.1.2:0->13.1.1.3:0 dst_mtu=15324
bound_if=48 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/728 options[02d8]=npu
create_dev no-sysctl rgwy-chg frag-rfc accept_traffic=1

parent=vd2-1 index=0
proxyid_num=1 child_num=0 refcnt=18 ilast=8 olast=8 ad=r/2
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=vd2-1 proto=0 sa=1 ref=2 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=1a227 type=00 soft=0 mtu=15262 expire=42893/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42901/43200
dec: spi=03e01a44 esp=aes key=16 c3b77a98e3002220e2373b73af14df6e
ah=sha1 key=20 d18d107c248564933874f60999d6082fd7a78948
enc: spi=864f6dba esp=aes key=16 eb6181806ccb9bac37931f9eadd4d5eb
ah=sha1 key=20 ab788f7a372877a5603c4ede1be89a592fc21873
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
npu_flag=00 npu_rgwy=13.1.1.3 npu_lgwy=12.1.1.2 npu_selid=51 dec_npuid=0 enc_npuid=0
------------------------------------------------------
name=spoke1-2-phase1_0 ver=1 serial=57 112.1.1.2:0->113.1.1.3:0 dst_mtu=15324
bound_if=90 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/728 options[02d8]=npu
create_dev no-sysctl rgwy-chg frag-rfc accept_traffic=1

parent=vd2-2 index=0
proxyid_num=1 child_num=0 refcnt=17 ilast=5 olast=5 ad=r/2
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=vd2-2 proto=0 sa=1 ref=3 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0

FortiOS 6.4.6 Administration Guide 682


Fortinet Technologies Inc.
SD-WAN

SA: ref=3 options=1a227 type=00 soft=0 mtu=15262 expire=42900/0B replaywin=2048


seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42901/43200
dec: spi=03e01a45 esp=aes key=16 0beb519ed9f800e8b4c0aa4e1df7da35
ah=sha1 key=20 bc9f38db5296cce4208a69f1cc8a9f7ef4803c37
enc: spi=864f6dbb esp=aes key=16 1d26e3556afcdb9f8e3e33b563b44228
ah=sha1 key=20 564d05ef6f7437e1fd0a88d5fee7b6567f9d387e
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
npu_flag=00 npu_rgwy=113.1.1.3 npu_lgwy=112.1.1.2 npu_selid=53 dec_npuid=0 enc_npuid=0
# diagnose firewall proute list
list route policy info(vf=vd2):

id=2132869121 vwl_service=1 vwl_mbr_seq=1 dscp_tag=0xff 0xff flags=0x0 tos=0x00 tos_


mask=0x00 protocol=0 sport=0:65535 iif=0 dport=1-65535 oif=111 oif=70 oif=113 oif=71
destination(1): 33.1.1.1-33.1.1.100
source wildcard(1): 0.0.0.0/0.0.0.0

id=2132869122 vwl_service=2 vwl_mbr_seq=2 dscp_tag=0xff 0xff flags=0x0 tos=0x00 tos_


mask=0x00 protocol=0 sport=0:65535 iif=0 dport=1-65535 oif=113 oif=71
destination(1): 33.1.1.101-33.1.1.200
source wildcard(1): 0.0.0.0/0.0.0.0

SD-WAN monitor on ADVPN shortcuts

SD-WAN monitors ADVPN shortcut link quality by dynamically creating link monitors for each ADVPN link. The dynamic 
link monitor on the spoke will use ICMP probes and the IP address of the gateway as the monitored server. These ICMP 
probes will not be counted as actual user traffic that keeps the spoke-to-spoke tunnel alive.

 l When no shortcut is established:
# diagnose sys sdwan health-check
Health Check(ping):
Seq(1 tunnel-1): state(alive), packet-loss(0.000%) latency(0.038), jitter(0.006) sla_
map=0x3
Seq(2 tunnel-2): state(alive), packet-loss(0.000%) latency(0.035), jitter(0.004) sla_
map=0x3

FortiOS 6.4.6 Administration Guide 683


Fortinet Technologies Inc.
SD-WAN

 l When one shortcut is established:
# diagnose sys sdwan health-check
Health Check(ping):
Seq(1 tunnel-1): state(alive), packet-loss(0.000%) latency(0.039), jitter(0.003) sla_
map=0x3
Seq(1 tunnel-1_0): state(alive), packet-loss(0.000%) latency(0.060), jitter(0.023) sla_
map=0x3
Seq(2 tunnel-2): state(alive), packet-loss(0.000%) latency(0.035), jitter(0.002) sla_
map=0x3

 l When more than one shortcut is established:
# diagnose sys sdwan health-check
Health Check(ping):
Seq(1 tunnel-1): state(alive), packet-loss(0.000%) latency(0.036), jitter(0.004) sla_
map=0x3
Seq(1 tunnel-1_0): state(alive), packet-loss(0.000%) latency(0.041), jitter(0.009) sla_
map=0x3
Seq(2 tunnel-2): state(alive), packet-loss(0.000%) latency(0.030), jitter(0.005) sla_
map=0x3
Seq(2 tunnel-2_0): state(alive), packet-loss(0.000%) latency(0.031), jitter(0.004) sla_
map=0x3

SD-WAN integration with OCVPN

OCVPN has the capability to enable SD-WAN in order to dynamically add its tunnel interfaces as SD-WAN members. 
Users can configure SD-WAN health checks and service rules to direct traffic over the OCVPN tunnels.
The following example uses a dual hub and spoke topology. Each hub and spoke has two WAN link connections to the 
ISP. The spokes generate two IPsec tunnels to each hub (four tunnels in total). BGP neighbors are established over 
each tunnel and routes from the hubs and other spokes learned from all neighbors, which forms an ECMP scenario. All 
tunnels are placed as SD-WAN members, so traffic can be distributed across tunnels based on the configured SD-WAN 
service rules.

FortiOS 6.4.6 Administration Guide 684


Fortinet Technologies Inc.
SD-WAN

To integrate SD-WAN with OCVPN in the GUI:

 1. Configure the primary hub:
 a. Go to VPN > Overlay Controller VPN and set the Status to Enable.
 b. For Role, select Primary Hub.
 c. Enter the WAN interfaces (port15 and port16) and tunnel IP allocation block (10.254.0.0/16).

The WAN interface is position sensitive, meaning a tunnel will be created with the first 
position interface on the hub to the first position interface on the spoke, and so on. In 
this example, FGT_A (primary hub) will create two tunnels with FGT_C (spoke): 
 l FGT_A port15 <==> FGT_C internal1
 l FGT_A port16 <==> FGT_C internal2

 d. Enable Auto-discovery shortcuts.


 e. Enable Add OCVPN tunnels to SD-WAN. The IPsec tunnels will be added automatically to the SD-WAN 
members if SD-WAN is enabled.
 2. Configure the overlays on the primary hub:
 a. In the Overlays section, click Create New.
 b. Enter a name and add the local interface (port2). Note the overlay is either based on local subnets or local 
interfaces, but not both. 
By default, inter-overlay traffic is not enabled. Toggle Allow traffic from other overlays to enable it.
 c. Click OK and repeat these steps to create the second overlay (loop1).

 d. Click Apply.

 3. Configure the secondary hub with the same settings as the primary hub.
 4. Configure the spoke:
 a. Go to VPN > Overlay Controller VPN and set the Status to Enable.
 b. For Role, select Spoke.
 c. Enter the WAN interfaces (internal1 and internal2).
 d. Enable Auto-discovery shortcuts.
 e. Enable Add OCVPN tunnels to SD-WAN. The IPsec tunnels will be added automatically to the SD-WAN 
members if SD-WAN is enabled.

FortiOS 6.4.6 Administration Guide 685


Fortinet Technologies Inc.
SD-WAN

 f. Configure the overlays.

The overlay names on the spokes must match the hub for the traffic to be allowed 
through the same overlay.

 g. Click Apply.

 5. Configure the other spoke with the same settings.
 6. On a spoke, go to Network > SD-WAN Zones to view the configuration generated by OCVPN.

Firewall policies will be automatically generated by OCVPN between the local interfaces and the SD-WAN interface. 
Each policy will define the proper local and remote networks for its source and destination addresses.

To integrate SD-WAN with OCVPN in the CLI:

 1. Configure the primary hub:
config vpn ocvpn
set role primary-hub
set sdwan enable
set wan-interface "port15" "port16"
set ip-allocation-block 10.254.0.0 255.255.0.0
config overlays
edit "overlay1"
config subnets
edit 1
set type interface
set interface "port2"
next
end
next
edit "overlay2"
config subnets

FortiOS 6.4.6 Administration Guide 686


Fortinet Technologies Inc.
SD-WAN

edit 1
set type interface
set interface "loop1"
next
end
next
end
end

 2. Configure the secondary hub with the same settings as the primary hub.
 3. Configure the spoke:
config vpn ocvpn
set status enable
set sdwan enable
set wan-interface "internal1" "internal2"
config overlays
edit "overlay1"
config subnets
edit 1
set type interface
set interface "wan2"
next
end
next
edit "overlay2"
config subnets
edit 1
set type interface
set interface "loop1"
next
end
next
end
end

 4. Configure the other spoke with the same settings.
 5. Configure SD-WAN:
config system sdwan
set status enable
config members
edit 1
set interface "_OCVPN2-0a"
next
edit 2
set interface "_OCVPN2-0b"
next
edit 3
set interface "_OCVPN2-1a"
next
edit 4
set interface "_OCVPN2-1b"
next
end
end

FortiOS 6.4.6 Administration Guide 687


Fortinet Technologies Inc.
SD-WAN

Firewall policies will be automatically generated by OCVPN between the local interfaces and the SD-WAN interface. 
Each policy will define the proper local and remote networks for its source and destination addresses.

If no SD-WAN zone is specified, members are added to the default virtual-wan-link zone.

To verify the integration is working after the ADVPN shortcut is triggered:

 1. Check the routing table on the spoke:
FGT_C # get router info routing-table all
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

Routing table for VRF=0


S* 0.0.0.0/0 [10/0] via 172.16.17.2, internal1
[10/0] via 172.16.18.2, internal2
B 10.1.100.0/24 [200/0] via 10.254.7.254, _OCVPN2-0a, 00:10:24
[200/0] via 10.254.15.254, _OCVPN2-0b, 00:10:24
B 10.1.200.0/24 [200/0] via 10.254.7.254, _OCVPN2-0a, 00:10:24
[200/0] via 10.254.15.254, _OCVPN2-0b, 00:10:24
B 10.2.100.0/24 [200/0] via 10.254.71.254, _OCVPN2-1a, 00:10:15
[200/0] via 10.254.79.254, _OCVPN2-1b, 00:10:15
B 10.2.200.0/24 [200/0] via 10.254.71.254, _OCVPN2-1a, 00:10:15
[200/0] via 10.254.79.254, _OCVPN2-1b, 00:10:15
B 10.254.0.0/16 [200/0] via 10.254.7.254, _OCVPN2-0a, 00:10:15
[200/0] via 10.254.15.254, _OCVPN2-0b, 00:10:15
[200/0] via 10.254.71.254, _OCVPN2-1a, 00:10:15
[200/0] via 10.254.79.254, _OCVPN2-1b, 00:10:15
C 10.254.0.0/21 is directly connected, _OCVPN2-0a
C 10.254.0.1/32 is directly connected, _OCVPN2-0a
C 10.254.8.0/21 is directly connected, _OCVPN2-0b
C 10.254.8.1/32 is directly connected, _OCVPN2-0b
C 10.254.64.0/21 is directly connected, _OCVPN2-1a
C 10.254.64.1/32 is directly connected, _OCVPN2-1b_0 <==shortcut tunnel
C 10.254.64.2/32 is directly connected, _OCVPN2-1a
C 10.254.72.0/21 is directly connected, _OCVPN2-1b
C 10.254.72.2/32 is directly connected, _OCVPN2-1b
is directly connected, _OCVPN2-1b_0
C 172.16.17.0/24 is directly connected, internal1
C 172.16.18.0/24 is directly connected, internal2
C 172.16.200.0/24 is directly connected, wan1
C 192.168.1.0/24 is directly connected, internal
C 192.168.4.0/24 is directly connected, wan2
B 192.168.5.0/24 [200/0] via 10.254.0.2, _OCVPN2-0a, 00:00:10
[200/0] via 10.254.8.2, _OCVPN2-0b, 00:00:10
[200/0] via 10.254.0.2, _OCVPN2-0a, 00:00:10
[200/0] via 10.254.8.2, _OCVPN2-0b, 00:00:10
[200/0] via 10.254.64.1, _OCVPN2-1b_0, 00:00:10
[200/0] via 10.254.72.1, _OCVPN2-1b, 00:00:10

FortiOS 6.4.6 Administration Guide 688


Fortinet Technologies Inc.
SD-WAN

[200/0] via 10.254.64.1, _OCVPN2-1b_0, 00:00:10


[200/0] via 10.254.72.1, _OCVPN2-1b, 00:00:10
C 192.168.44.0/24 is directly connected, loop1
B 192.168.55.0/24 [200/0] via 10.254.0.2, _OCVPN2-0a, 00:00:10
[200/0] via 10.254.8.2, _OCVPN2-0b, 00:00:10
[200/0] via 10.254.0.2, _OCVPN2-0a, 00:00:10
[200/0] via 10.254.8.2, _OCVPN2-0b, 00:00:10
[200/0] via 10.254.64.1, _OCVPN2-1b_0, 00:00:10
[200/0] via 10.254.72.1, _OCVPN2-1b, 00:00:10
[200/0] via 10.254.64.1, _OCVPN2-1b_0, 00:00:10
[200/0] via 10.254.72.1, _OCVPN2-1b, 00:00:10

 2. Check the VPN tunnel state:
FGT_C # diagnose vpn tunnel list

list all ipsec tunnel in vd 0


------------------------------------------------------
name=_OCVPN2-1b_0 ver=2 serial=1c 172.16.18.3:0->172.16.15.4:0 dst_mtu=1500
bound_if=9 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/728 options[02d8]=npu
create_dev no-sysctl rgwy-chg frag-rfc accept_traffic=1 overlay_id=4

parent=_OCVPN2-1b index=0
proxyid_num=1 child_num=0 refcnt=15 ilast=0 olast=0 ad=r/2
stat: rxp=641 txp=1025 rxb=16436 txb=16446
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-1b proto=0 sa=1 ref=3 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=1438 expire=42650/0B replaywin=1024
seqno=407 esn=0 replaywin_lastseq=00000280 itn=0 qat=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=43186/43200
dec: spi=90f03d9d esp=aes key=16 6cb33685bbc67d5c85488e0176ecf7b0
ah=sha1 key=20 7d11b3babe62c840bf444b7b1f637b4324722a71
enc: spi=7bc94bda esp=aes key=16 b4d8fc731d411eb24448b4077a5872ca
ah=sha1 key=20 b724064d827304a6d80385ed4914461108b7312f
dec:pkts/bytes=641/16368, enc:pkts/bytes=2053/123426
npu_flag=03 npu_rgwy=172.16.15.4 npu_lgwy=172.16.18.3 npu_selid=1f dec_npuid=1 enc_
npuid=1
------------------------------------------------------
name=_OCVPN2-0a ver=2 serial=18 172.16.17.3:0->172.16.13.1:0 dst_mtu=1500
bound_if=8 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu create_
dev frag-rfc accept_traffic=1 overlay_id=1

proxyid_num=1 child_num=0 refcnt=20 ilast=0 olast=0 ad=r/2


stat: rxp=1665 txp=2922 rxb=278598 txb=70241
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=7
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-0a proto=0 sa=1 ref=4 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=1438 expire=41599/0B replaywin=1024
seqno=890 esn=0 replaywin_lastseq=00000680 itn=0 qat=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=42899/43200
dec: spi=90f03d95 esp=aes key=16 a6ffcc197bb1b46ec745d0b595cdd69a
ah=sha1 key=20 8007c134e41edf282f95daf9c9033d688ef05ccc

FortiOS 6.4.6 Administration Guide 689


Fortinet Technologies Inc.
SD-WAN

enc: spi=a1bf21bf esp=aes key=16 ead05be389b0dec222f969e2f9c46b1d


ah=sha1 key=20 b04105d34d4b0e61b018f2e60591f9b1510783bb
dec:pkts/bytes=1665/278538, enc:pkts/bytes=4237/265074
npu_flag=03 npu_rgwy=172.16.13.1 npu_lgwy=172.16.17.3 npu_selid=1b dec_npuid=1 enc_
npuid=1
------------------------------------------------------
name=_OCVPN2-1a ver=2 serial=1a 172.16.17.3:0->172.16.11.1:0 dst_mtu=1500
bound_if=8 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu create_
dev frag-rfc accept_traffic=1 overlay_id=3

proxyid_num=1 child_num=0 refcnt=17 ilast=0 olast=0 ad=r/2


stat: rxp=1 txp=2913 rxb=16376 txb=69642
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=5
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-1a proto=0 sa=1 ref=28 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=1438 expire=41653/0B replaywin=1024
seqno=887 esn=0 replaywin_lastseq=00000002 itn=0 qat=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=42900/43200
dec: spi=90f03d9b esp=aes key=16 ee03f5b0f617a26c6177e91d60abf90b
ah=sha1 key=20 f60cbbc4ebbd6d0327d23137da707b7ab2dc49e6
enc: spi=a543a7d3 esp=aes key=16 1d37efab13a5c0347b582b2198b15cb8
ah=sha1 key=20 427ee4c82bac6f26f0bcabfe04328c7f57ce682e
dec:pkts/bytes=1/16316, enc:pkts/bytes=4229/264036
npu_flag=03 npu_rgwy=172.16.11.1 npu_lgwy=172.16.17.3 npu_selid=1d dec_npuid=1 enc_
npuid=1
------------------------------------------------------
name=_OCVPN2-0b ver=2 serial=19 172.16.18.3:0->172.16.14.1:0 dst_mtu=1500
bound_if=9 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu create_
dev frag-rfc accept_traffic=1 overlay_id=2

proxyid_num=1 child_num=0 refcnt=20 ilast=0 olast=0 ad=r/2


stat: rxp=1665 txp=2917 rxb=278576 txb=69755
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=7
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-0b proto=0 sa=1 ref=4 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=1438 expire=41599/0B replaywin=1024
seqno=88b esn=0 replaywin_lastseq=00000680 itn=0 qat=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=42899/43200
dec: spi=90f03d96 esp=aes key=16 9d7eb233c1d095b30796c3711d53f2fd
ah=sha1 key=20 d8feacd42b5e0ba8b5e38647b2f2734c94644bd1
enc: spi=a1bf21c0 esp=aes key=16 d2c0984bf86dc504c5475230b24034f0
ah=sha1 key=20 3946e4033e1f42b0d9a843b94448f56fd5b57bee
dec:pkts/bytes=1665/278516, enc:pkts/bytes=4233/264411
npu_flag=03 npu_rgwy=172.16.14.1 npu_lgwy=172.16.18.3 npu_selid=1c dec_npuid=1 enc_
npuid=1
------------------------------------------------------
name=_OCVPN2-1b ver=2 serial=1b 172.16.18.3:0->172.16.12.1:0 dst_mtu=1500
bound_if=9 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu create_
dev frag-rfc accept_traffic=1 overlay_id=4

proxyid_num=1 child_num=1 refcnt=19 ilast=1 olast=0 ad=r/2


stat: rxp=1 txp=2922 rxb=16430 txb=70173

FortiOS 6.4.6 Administration Guide 690


Fortinet Technologies Inc.
SD-WAN

dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=4


natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-1b proto=0 sa=1 ref=28 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=1438 expire=41656/0B replaywin=1024
seqno=890 esn=0 replaywin_lastseq=00000002 itn=0 qat=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=42903/43200
dec: spi=90f03d9c esp=aes key=16 a655767c1ed6cff4575857eb3981ad81
ah=sha1 key=20 bfc2bccd7103a201be2641d4c6147d437d2c3f70
enc: spi=a543a7d4 esp=aes key=16 7221b814e483165b01edfdc8260d261a
ah=sha1 key=20 d54819643c2f1b20da2aea4282d50a1f1bc1d72a
dec:pkts/bytes=1/16370, enc:pkts/bytes=4238/265164
npu_flag=03 npu_rgwy=172.16.12.1 npu_lgwy=172.16.18.3 npu_selid=1e dec_npuid=1 enc_
npuid=1

 3. Check the SD-WAN state:
FGT_C # diagnose sys sdwan health-check
Health Check(Default_DNS):
Health Check(Default_Office_365):
Health Check(Default_Gmail):
Health Check(Default_AWS):
Health Check(Default_Google Search):
Health Check(Default_FortiGuard):
Health Check(ocvpn):
Seq(1 _OCVPN2-0a): state(alive), packet-loss(0.000%) latency(0.364), jitter(0.028) sla_
map=0x0
Seq(2 _OCVPN2-0b): state(alive), packet-loss(0.000%) latency(0.287), jitter(0.026) sla_
map=0x0
Seq(3 _OCVPN2-1a): state(dead), packet-loss(100.000%) sla_map=0x0
Seq(4 _OCVPN2-1b): state(dead), packet-loss(100.000%) sla_map=0x0
Seq(4 _OCVPN2-1b_0): state(alive), packet-loss(0.000%) latency(0.289), jitter(0.029)
sla_map=0x0

Forward error correction on VPN overlay networks

This topic shows an SD-WAN with forward error correction (FEC) on VPN overlay networks. FEC is a technique used to 
control and correct errors in data transmission by sending redundant data across the VPN. It uses six parameters in 
IPsec phase1/phase1-interface settings:

fec-ingress Enable/disable Forward Error Correction for ingress IPsec traffic (default = disable).
fec-egress Enable/disable Forward Error Correction for egress IPsec traffic (default = disable).
fec-base The number of base Forward Error Correction packets (1 - 100, default = 20).
fec-redundant The number of redundant Forward Error Correction packets (1 - 100, default = 10).
fec-send-timeout The time before sending Forward Error Correction packets,  in milliseconds (1 - 1000, default = 
8).
fec-receive- The time before dropping Forward Error Correction packets,  in milliseconds (1 - 1000, default 
timeout = 5000).

For every fec-base number of sent packets, the tunnel will send fec-redundant number of redundant packets.

FortiOS 6.4.6 Administration Guide 691


Fortinet Technologies Inc.
SD-WAN

If your FortiGate is NPU capable, disable npu-offload in your phase1 configurations:
config vpn ipsec phase1-interface
edit <name>
set npu-offload disable
next
end

Example

For example, a customer has two ISP connections, wan1 and wan2. Using these two connections, create two IPsec VPN 
interfaces as SD-WAN members. Configure FEC on each VPN interface to lower packet loss ratio by re-transmitting the 
packets using its backend algorithm.

To configure IPsec VPN:

config vpn ipsec phase1-interface


edit "vd1-p1"
set interface "wan1"
set peertype any
set net-device disable
set proposal aes256-sha256
set dhgrp 14
set remote-gw 172.16.201.2
set psksecret ftnt1234
set fec-egress enable
set fec-send-timeout 8
set fec-base 20
set fec-redundant 10
set fec-ingress enable
set fec-receive-timeout 5000
next
edit "vd1-p2"
set interface "wan2"
set peertype any

FortiOS 6.4.6 Administration Guide 692


Fortinet Technologies Inc.
SD-WAN

set net-device disable


set proposal aes256-sha256
set dhgrp 14
set remote-gw 172.16.202.2
set psksecret ftnt1234
set fec-egress enable
set fec-send-timeout 8
set fec-base 20
set fec-redundant 10
set fec-ingress enable
set fec-receive-timeout 5000
next
end
config vpn ipsec phase2-interface
edit "vd1-p1"
set phase1name "vd1-p1"
next
edit "vd1-p2"
set phase1name "vd1-p2"
next
end

To configure the interface:

config system interface


edit "vd1-p1"
set ip 172.16.211.1 255.255.255.255
set remote-ip 172.16.211.2 255.255.255.255
next
edit "vd1-p2"
set ip 172.16.212.1 255.255.255.255
set remote-ip 172.16.212.2 255.255.255.255
next
end

To configure the firewall policy:

config firewall policy


edit 1
set name "1"
set srcintf "dmz"
set dstintf ""virtual-wan-link""
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

To configure SD-WAN:

config system sdwan


set status enable
config members

FortiOS 6.4.6 Administration Guide 693


Fortinet Technologies Inc.
SD-WAN

edit 1
set interface "vd1-p1"
set gateway 172.16.211.2
next
edit 1
set interface "vd2-p2"
set gateway 172.16.212.2
next
end
end

If no SD-WAN zone is specified, members are added to the default virtual-wan-link zone.

To use the diagnose command to check VPN FEC status:

# diagnose vpn tunnel list


list all ipsec tunnel in vd 0
------------------------------------------------------
name=vd1 ver=1 serial=1 172.16.200.1:0->172.16.200.2:0
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/3600 options[0e10]=create_dev
frag-rfc fec-egress fec-ingress accept_traffic=1

proxyid_num=1 child_num=0 refcnt=11 ilast=8 olast=8 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
fec-egress: base=20 redundant=10 remote_port=50000 <<<<<<<<<<<<<<<<<<<<<<
fec-ingress: base=20 redundant=10 <<<<<<<<<<<<<<<<<<<<<<
proxyid=demo proto=0 sa=1 ref=2 serial=1
src: 0:10.1.100.0/255.255.255.0:0
dst: 0:173.1.1.0/255.255.255.0:0
SA: ref=3 options=10226 type=00 soft=0 mtu=1390 expire=42897/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42899/43200
dec: spi=181f4f81 esp=aes key=16 6e8fedf2a77691ffdbf3270484cb2555
ah=sha1 key=20 f92bcf841239d15d30b36b695f78eaef3fad05c4
enc: spi=0ce10190 esp=aes key=16 2d684fb19cbae533249c8b5683937329
ah=sha1 key=20 ba7333f89cd34cf75966bd9ffa72030115919213
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0

Dual VPN tunnel wizard

This wizard is used to automatically set up multiple VPN tunnels to the same destination over multiple outgoing 
interfaces. This includes automatically configuring IPsec, routing, and firewall settings, avoiding cumbersome and error-
prone configuration steps.

FortiOS 6.4.6 Administration Guide 694


Fortinet Technologies Inc.
SD-WAN

To create a new SD-WAN VPN interface using the tunnel wizard:

 1. Go to Network > SD-WAN Zones and click Create New > SD-WAN Member.


 2. In the Interface drop-down, click +VPN. The Create IPsec VPN for SD-WAN members pane opens.

 3. Enter the required information, then click Create.

 4. Click Close to return to the SD-WAN page.
The newly created VPN interface will be highlighted in the Interface drop-down list.

 5. Select the VPN interface to add it as an SD-WAN member, then click OK.

Duplicate packets based on SD-WAN rules

SD-WAN duplication rules can specify SD-WAN service rules to trigger packet duplication. This allows the duplication to 
occur based on an SD-WAN rule instead of the source, destination, and service parameters in the duplication rule.

FortiOS 6.4.6 Administration Guide 695


Fortinet Technologies Inc.
SD-WAN

 1. Packets can be forced to duplicate to all members of the same SD-WAN zone. See Duplicate packets on other zone 
members on page 697  for details.
For example, in Spoke 1 set packet-duplication to force so that when a client sends a packet to the server, it 
is duplicated to all members of the same zone as long as its health check is alive. If a members health check is 
dead, then the member is removed from the SD-WAN duplication zone.
 2. Packets can be duplicated to other members of the SD-WAN zone only when the condition of the link is not good 
enough.
Set packet-duplication to on-demand so that, when the SLA of the member does not match (sla_map=0) the 
packet is duplicated, but when the SLA does match (sla_map!=0) the packet is not duplicated.
 3. Packets can be duplicated to all members of the same SD-WAN zone when the traffic matches one or more regular 
SD-WAN service rules.
The following example shows the third type of packet duplication.

In this example, SD-WAN is configured with three members: vpn1, vpn2, and vpn3. Service rule 1 controls all traffic from 
10.100.20.0/24 to 172.16.100.0/24 using member 1.
To send a duplicate of the traffic that matches service rule 1 using member 2, members 1 and 2 are added to the same 
SD-WAN zone, and a duplicate rule is configured with service-id set to 1.

To send a duplicate of the traffic that matches service rule 1 using member 2:

config system sdwan


set status enable
config zone
edit "virtual-wan-link"
next
edit "zone2"
next
end
config members
edit 1
set interface "vpn1"
next
edit 2
set interface "vpn2"
next

FortiOS 6.4.6 Administration Guide 696


Fortinet Technologies Inc.
SD-WAN

edit 3
set interface "vpn3"
set zone "zone2"
next
end
config service
edit 1
set dst "172.16.100.0"
set src "10.100.20.0"
set priority-members 1
next
end
config duplication
edit 1
set service-id 1
set packet-duplication force
next
end
end

Duplicate packets on other zone members

When duplication rules are used, packets are duplicated on other good links within the SD-WAN zone and de-duplicated 
on the destination FortiGate. Use  force mode to force duplication on other links within the SD-WAN zone, or use on-
demand mode to trigger duplication only when SLA fails on the selected member.
The duplication rule is configured in the CLI by using the config duplication command. The following options can 
be configured:

Parameter Description

srcaddr Source address or address group names.

dstaddr Destination address or address group names.

srcaddr6 Source IPv6 address or IPv6 address group names.

dstaddr6 Destination IPv6 address or IPv6 address group names.

srcintf Incoming (ingress) interfaces or zones.

dstintf Outgoing (egress) interfaces or zones.

service Service and service group names.

packet-duplication Configure packet duplication method.
 l disable: Disable packet duplication (default).
 l force: Duplicate packets across all interface members of the SD-WAN zone.
 l on-demand: Duplicate packets across all interface members of the SD-WAN 
zone based on the link quality.

packet-de-duplication Enable/disable discarding of packets that have been duplicated (default = 
disable).

The duplication-max-num <integer> option under config system sdwan is the maximum number of 


interface members that a packet is duplicated on in the SD-WAN zone (2 - 4, default = 2). If this value is set to 3, the 

FortiOS 6.4.6 Administration Guide 697


Fortinet Technologies Inc.
SD-WAN

original packet plus two more copies are created. If there are three member interfaces in the SD-WAN zone and the 
duplication-max-num is set to 2, the packet duplication follows the configuration order, so the packets are 
duplicated on the second member.

Example

The packet duplication feature works best in a spoke-spoke or hub-and-spoke topology. In this example, a hub-and-
spoke ADVPN topology is used. Before shortcuts are established, Hub 1 forwards the duplicate packets from Spoke 1 to 
Spoke 2. Once shortcuts are established, Hub 1 is transparent, and duplicate packets are exchanged directly between 
the spokes.

To configure packet duplication between Spoke 1 and Spoke 2:

 1. Configure Spoke 1:
config system sdwan
set status enable
config zone
edit "virtual-wan-link"
next
edit "sdwanzone_v4"
next
end
config members
edit 1
set interface "t1"
set zone "sdwanzone_v4"
next
edit 4
set interface "t21"
set zone "sdwanzone_v4"
next
edit 2
set interface "t2"
set zone "sdwanzone_v4"

FortiOS 6.4.6 Administration Guide 698


Fortinet Technologies Inc.
SD-WAN

next
end
config health-check
edit "h1"
set server "10.34.1.1"
set interval 1000
set failtime 10
set members 1 2
config sla
edit 1
set packetloss-threshold 40
next
end
next
end
config duplication
edit 1
set srcaddr "all"
set dstaddr "all"
set srcintf "port1"
set dstintf "sdwanzone_v4"
set service "ALL"
set packet-duplication force
set packet-de-duplication enable
next
end
end

 2. Configure Spoke 2 with similar settings.

Advanced configuration

The following topics provide instructions on SD-WAN advanced configuration:
 l SD-WAN with FGCP HA on page 699
 l Configuring A-A SD-WAN with internal FortiGate hardware switches on page 706
 l SD-WAN configuration portability on page 709
See also Per packet distribution and tunnel aggregation on page 1442.

SD-WAN with FGCP HA

This example shows how to convert a standalone FortiGate SD-WAN solution to a FGCP HA cluster with full-mesh WAN 
set up. This configuration allows you to load balance your internet traffic between multiple ISP links. It also provides 
redundancy for your internet connection if your primary ISP in unavailable, or if one of the FortiGates in the HA cluster 
fails.
This example assumes that a standalone FortiGate has already been configured for SD-WAN by following the SD-WAN 
quick start on page 563.

FortiOS 6.4.6 Administration Guide 699


Fortinet Technologies Inc.
SD-WAN

Standalone FortiGate:

FGCP HA cluster:

The following devices are required to convert the topology to HA:
 l A second FortiGate that is the same model running the same firmware version.
 l Two switches for connecting each FortiGate's WAN interface to the corresponding ISP modem.
Before you begin:
 l Ensure that the licenses and subscriptions on both HA members match.
 l Ensure that there are one or more ports reserved for HA heartbeat.
 l Ensure you have physical access to both HA members.

Enabling HA and re-cabling the WAN interfaces will cause network interruptions. 
This procedure should be performed during a maintenance window.

FortiOS 6.4.6 Administration Guide 700


Fortinet Technologies Inc.
SD-WAN

Configuring the standalone FortiGate for HA

After running the following commands, the FortiGate negotiates to establish an HA cluster. You might temporarily lose 
connectivity with the FortiGate as FGCP negotiations take place and the MAC addresses of the FortiGate interfaces are 
changed to HA virtual MAC addresses.
This configurations sets the HA mode to active-passive.
The ha1 and ha2 interfaces are configured as the heartbeat interfaces, with priorities set to 200 and 100 respectively. 
Setting different priorities for the heartbeat interfaces is a best practice, but is not required.
If you have more than one cluster on the same network, each cluster should have a different group ID. Changing the 
group ID changes the cluster interface's virtual MAC addresses. If the group IP causes a MAC address conflict on your 
network, select a different group ID.
Enabling override and increasing the device priority  means that this FortiGate always becomes the primary unit.

To configure the standalone FortiGate for HA in the GUI:

 1. Go to System > Settings and change the Host name so that the FortiGate can be easily identified as the primary 


unit.
 2. Go to System > HA and configure the following options:

Mode Active-Passive

Device priority 250

Group name My-cluster

Password <password>

Heartbeat interfaces ha1 and ha2

Heartbeat Interface Priority port2 (ha1): 200


port3 (ha2): 100

Override and the group ID can only be configured from the CLI.

FortiOS 6.4.6 Administration Guide 701


Fortinet Technologies Inc.
SD-WAN

 3. Click OK.
Connectivity with the FortiGate will temporarily be lost.

To configure the standalone FortiGate for HA in the CLI:

 1. Change the host name so that the FortiGate can be easily identified:
config system global
set hostname primary_FG
end

 2. Configure HA:
config system ha
set mode a-p
set group-id 100
set group-name My-cluster
set password <password>
set priority 250
set override enable
set hbdev ha1 200 ha2 100
end

If HA mode does not start after running the above steps, ensure that none of the FortiGate's 
interfaces use DHCP or PPPoE addressing.

Configuring the secondary FortiGate for HA

The secondary FortiGate must be the same model and running the same firmware version as the primary FortiGate. The 
HA settings are the same as the for the primary unit, except the secondary device has a lower priority and override is not 
enabled.

It is best practice to reset the FortiGate to factory default settings prior to configuring HA. This 
reduces the chance of synchronization problems.
# execute factoryreset
This operation will reset the system to factory default!
Do you want to continue? (y/n) y

This is unnecessary if the device is new from the factory.

To configure the secondary FortiGate for HA in the GUI:

 1. Go to System > Settings and change the Host name so that the FortiGate can be easily identified as the backup unit.


 2. Go to System > HA and configure the options the same as for the primary FortiGate, except with a lower priority:

Mode Active-Passive

Device priority 128

Group name My-cluster

FortiOS 6.4.6 Administration Guide 702


Fortinet Technologies Inc.
SD-WAN

Password <password>

Heartbeat interfaces ha1 and ha2

Heartbeat Interface Priority port2 (ha1): 200


port3 (ha2): 100

 3. Click OK.

To configure the secondary FortiGate for HA in the CLI:

 1. Change the host name so that the secondary FortiGate can be easily identified:
config system global
set hostname secondary_FG
end

 2. Configure HA:
config system ha
set mode a-p
set group-id 100
set group-name My-cluster
set password <password>
set priority 128
set hbdev ha1 200 ha2 100
end

Connecting the heartbeat interfaces between the FortiGates

To connect and check the heartbeat interfaces:

 1. Connect the heartbeat interfaces ha1 and ha2 between the primary and secondary FortiGate.
 a. An HA primary device is selected. Because the primary FortiGate has a higher priority and override enabled, it 
assumes the role of HA primary.
 b. The secondary FortiGate synchronizes its configuration from the primary device.
 2. Verify that the checksums match between the primary and secondary FortiGates:
# diagnose sys ha checksum cluster

================== FG5H0XXXXXXXXXX0 ==================

is_manage_primary()=1, is_root_primary()=1
debugzone
global: 2b e9 81 38 c2 9d 4f db b7 0e 1f 49 42 c6 1e fb
root: af a6 48 c5 c2 9a 8b 81 a5 53 fb 27 e9 ae 01 6a
all: 89 1f 63 77 48 8a 30 ee 57 06 ca eb 71 e6 8e ad

checksum
global: 2b e9 81 38 c2 9d 4f db b7 0e 1f 49 42 c6 1e fb
root: af a6 48 c5 c2 9a 8b 81 a5 53 fb 27 e9 ae 01 6a
all: 89 1f 63 77 48 8a 30 ee 57 06 ca eb 71 e6 8e ad

================== FG5H0XXXXXXXXXX1 ==================

FortiOS 6.4.6 Administration Guide 703


Fortinet Technologies Inc.
SD-WAN

is_manage_primary()=0, is_root_primary()=0
debugzone
global: 2b e9 81 38 c2 9d 4f db b7 0e 1f 49 42 c6 1e fb
root: af a6 48 c5 c2 9a 8b 81 a5 53 fb 27 e9 ae 01 6a
all: 89 1f 63 77 48 8a 30 ee 57 06 ca eb 71 e6 8e ad

checksum
global: 2b e9 81 38 c2 9d 4f db b7 0e 1f 49 42 c6 1e fb
root: af a6 48 c5 c2 9a 8b 81 a5 53 fb 27 e9 ae 01 6a
all: 89 1f 63 77 48 8a 30 ee 57 06 ca eb 71 e6 8e ad

If all of the cluster members have identical checksums, then their configurations are synchronized. If the checksums 
are not the same, wait for a few minutes, then repeat the command. Some parts of the configuration might take a 
significant amount of time to synchronize (tens of minutes).

Connecting other traffic interfaces

After the device configurations are synchronized, you can connect the rest of the traffic interfaces. Making these 
connections will disrupt traffic as cables are disconnected and reconnected.
Switches must be used between the cluster and the ISPs, and between the cluster and the internal network, as shown in 
the topology diagram.

Checking cluster operations

The HA Status dashboard widget shows the synchronization status. Hover over the host names of each FortiGate in the 
widget to verify that they are synchronized and have the same checksum.
To view more information about the cluster status, including the number of sessions passing through the cluster 
members, go to System > HA.
See Check HA sync status on page 842 for more information.

Results

 1. Browse the internet on a computer in the internal network.
 2. Go to Network > SD-WAN Zones to see the bandwidth, volume, and sessions for traffic on the SD-WAN interfaces. 
See Results on page 568 for details.
 3. Go to Dashboard > Network, and expand the SD-WAN widget to see information about each interface, such as the 
number of sessions and the bit rate.

Testing HA failover

All traffic should currently be flowing through the primary FortiGate. If it becomes unavailable, traffic fails over to the 
secondary FortiGate. When the primary FortiGate rejoins the cluster, the secondary FortiGate continues to operate as 
the primary FortiGate.
To test this, ping a reliable IP address from a computer in the internal network, and then power off the primary FortiGate. 

FortiOS 6.4.6 Administration Guide 704


Fortinet Technologies Inc.
SD-WAN

There will be a momentary pause in the ping results until traffic diverts to the backup FortiGate, allowing the ping traffic to 
continue:
64 bytes from 184.25.76.114: icmp_seq=69 ttl=52 time=8.719 ms\
64 bytes from 184.25.76.114: icmp_seq=70 ttl=52 time=8.822 ms\
64 bytes from 184.25.76.114: icmp_seq=74 ttl=52 time=8.901 ms\
Request timeout for icmp_seq 75\
64 bytes from 184.25.76.114: icmp_seq=76 ttl=52 time=8.860 ms\
64 bytes from 184.25.76.114: icmp_seq=77 ttl=52 time=9.174 ms\
64 bytes from 184.25.76.114: icmp_seq=83 ttl=52 time=8.639 ms}

If you are using port monitoring, you can also unplug the primary FortiGate's internet facing 
interface to test failover.

After the secondary FortiGate becomes the primary, you can log into the cluster using the same IP address as before the 
fail over. If the primary FortiGate is powered off, you will be logged into the backup FortiGate. Check the host name to 
verify what device you have logged into. The FortiGate continues to operate in HA mode, and if you restart the primary 
FortiGate, it will rejoin the cluster and act as the backup FortiGate. Traffic is not disrupted when the restarted FortiGate 
rejoins the cluster.
You can also use the CLI to force an HA failover. See Force HA failover for testing and demonstrations on page 902 for 
information.

Testing ISP failover

To test a failover of the redundant internet configuration, you need to simulate a failed internet connection to one of the 
ports. You can do this by disconnecting power from the wan1 switch, or by disconnecting the wan1 interfaces of both 
FortiGates from ISP1.
After disconnecting, verify that users still have internet access
 l Go to Dashboard > Network, and expand the SD-WAN widget. The Upload and Download columns for wan1 show 
that traffic is not going through that interface.

 l Go to Network > SD-WAN Zones. The Bandwidth, Volume, and Sessions tabs show that traffic is entirely diverted to 


wan2.

Users on the network should not notice the wan1 failure. If you are using the wan1 gateway IP address to connect to the 
administrator dashboard, it will appear as though you are still connecting through wan1.
After verifying a successful failover, reestablish the connection to ISP1.

FortiOS 6.4.6 Administration Guide 705


Fortinet Technologies Inc.
SD-WAN

Configuring A-A SD-WAN with internal FortiGate hardware switches

This setup is not fully compliant with a regular HA configuration. Failover is also unnecessary. 
Flipping can occur if failover is configured using a ping server interface.

Two FortiGates with internal hardware switches can be configured as an active-active (A-A) HA pair. In the following 
topology, both FortiGates forward traffic through internal switches connected to service providers. SD-WAN is 
configured on all upstream interfaces and overlays.

This setup is not fully compliant with a regular HA configuration. In a regular HA configuration, two logical switches are 
used: one for incoming traffic and one for outgoing traffic. In this example, only incoming traffic has a switch while 
outgoing traffic uses the internal switch. This means that if FortiGate A loses power, ISP 1 will not be available.
Traffic will flow either through ISP 1 directly or through ISP 2 via a connection between FortiGate A and FortiGate B’s 
internal switch interface. FortiGate A decides how traffic will go through ISP 1 or ISP 2 based on SD-WAN rules. If ISP 1 
is not available, then traffic will go through ISP 2.
Failover is unnecessary in this setup. Because SD-WAN will automatically failover traffic to the accessible ISP, traffic is 
not blocked so there is no network downtime. Also, the hardware switch interface cannot be monitored as an HA 
interface. If HA failover is required, a ping server must be used. The ping server monitor interface has to be configured 
under HA settings. This failover setup, however, results in flipping. FortiGate B will act as the primary after failover and 
traffic will still flow to the available ISP. Since the broken link to one of the ISPs still fails, HA will start flipping until the link 
is back up.

To configure the HA A-A cluster with internal hardware switches:

 1. Configure two FortiGates with internal switches in an active-active HA cluster (follow the steps in HA active-active 
cluster setup on page 848), starting by connecting the heartbeat interface.
 2. On the primary FortiGate, remove the existing interface members:
 a. Go to Network > Interfaces.
 b. In the LAN section, double-click the internal interface to edit it.

FortiOS 6.4.6 Administration Guide 706


Fortinet Technologies Inc.
SD-WAN

 c. In the Interface Members box, remove all the interfaces.

 d. Click OK.
 3. On the primary FortiGate, configure the hardware switch interfaces for the two ISPs:
 a. Go to Network > Interfaces.
 b. Click Create New > Interface.
 c. Enter a name (HD_SW1).
 d. For type, select Hardware Switch.
 e. For Interface Members, add two interfaces (internal1 and internal2).
 f. Configure the remaining settings as needed.
 g. Click OK. 

 h. Repeat these steps to create a second hardware switch interface (HD_SW2) with two interface members 

FortiOS 6.4.6 Administration Guide 707


Fortinet Technologies Inc.
SD-WAN

(internal3 and internal4).

 4. On the primary FortiGate, set up SD-WAN:

The primary FortiGate makes all the SD-WAN decisions.

 a. Go to Network > SD-WAN Zones.


 b. Click Create New > SD-WAN Member. 
 c. In the Interface dropdown, select HD_SW1.
 d. Leave SD-WAN Zone set to virtual-wan-link.
 e. Enter the Gateway address.
 f. Click OK.
 g. Repeat these steps to add the second interface (HD_SW2).
 h. Click Apply.

 5. Connect the devices as shown in the topology:
 a. Connect the incoming interface to the internal switch on both FortiGates.
 b. On FortiGate A, connect ISP 1 to HD_SW1.

FortiOS 6.4.6 Administration Guide 708


Fortinet Technologies Inc.
SD-WAN

 c. On FortiGate B, connect ISP 2 to HD_SW2.
 d. For HD_SW1, connect FortiGate A directly to B.
 e. For HD_SW2, connect FortiGate A directly to B.

The default implicit rule load-balancing algorithm for SD-WAN is the source IP address. For 
more information about  rule types and configurations, see Implicit rule on page 599.

SD-WAN configuration portability

When configuring SD-WAN, adding interfaces to members is optional.
This allows the SD-WAN to be configured without associating any interfaces to SD-WAN members. It also allows a 
configuration to be copied directly from one device to another, without requiring the devices to have interfaces with the 
same names. 
After the configuration is created, add interfaces to the members make it functional.

Example 1

In this example, we create a template with two SD-WAN members configured without assigned interfaces that are used 
in a performance SLA and SD-WAN rule. The template can be used to configure new devices, as in Example 2 on page 
713. Interfaces are then assigned to the members, and the configuration becomes active.

To create the SD-WAN members in the GUI:

 1. Go to Network > SD-WAN Zones.


 2. Click Create New > SD-WAN Member.

FortiOS 6.4.6 Administration Guide 709


Fortinet Technologies Inc.
SD-WAN

 3. Leave all the settings set to their default values and click OK.

 4. Repeat the above steps to create a second member.
The empty members are listed on the SD-WAN Zones page.

The members are disabled until interfaces are configured, but can still be used in performance SLAs and SD-WAN 
rules.

To create a performance SLA in the GUI:

 1. Go to Network > Performance SLA.


 2. Click Create New.
 3. Configure the performance SLA, specifying the empty members as participants.

 4. Click OK.

To create an SD-WAN rule in the GUI:

 1. Go to Network > SD-WAN Rules.


 2. Click Create New.

FortiOS 6.4.6 Administration Guide 710


Fortinet Technologies Inc.
SD-WAN

 3. Configure the rule, adding both members to the Interface preference field:

 4. Click OK.

To assign interfaces to the SD-WAN members in the GUI:

 1. Go to Network > SD-WAN Zones.


 2. Edit the first member
 3. Set Interface to an actual interface.

 4. Click OK.
 5. Repeat the above steps to assign an interface to the second member.

To configure the SD-WAN in the CLI:

 1. Create SD-WAN members:
config system sdwan
set status enable
config members
edit 1
next
edit 2
next
end
end

FortiOS 6.4.6 Administration Guide 711


Fortinet Technologies Inc.
SD-WAN

 2. Create a health check (performance SLA):
config system sdwan
config health-check
edit "office"
set server "office365.com"
set protocol http
set sla-fail-log-period 300
set sla-pass-log-period 300
set members 2 1
config sla
edit 1
set latency-threshold 300
set jitter-threshold 200
next
edit 2
set link-cost-factor latency
set latency-threshold 20
next
end
next
end
end

 3. Create a service (rule):
config system sdwan
config service
edit 3
set name "Office365"
set mode sla
set internet-service enable
set internet-service-app-ctrl 33182
config sla
edit "office"
set id 2
next
end
set priority-members 1 2
next
end
end

The SD-WAN configuration can now be used in as a template for new spokes, as in Example 2 on page 713.

To assign interfaces to the SD-WAN members in the CLI:

config system sdwan


config members
edit 1
set interface "_OCVPN4-0.0"
next
edit 2
set interface "_OCVPN4-0.1"
next
end
end

FortiOS 6.4.6 Administration Guide 712


Fortinet Technologies Inc.
SD-WAN

If no SD-WAN zone is specified, members are added to the default virtual-wan-link zone.

Example 2

In this example, the configuration from Example 1 is copied onto a new FortiGate.

Using the CLI console and the GUI

To copy the SD-WAN configuration from the original FortiGate:

 1. Optionally, change the console screen paging setting. See Screen paging on page 31 for details.
 2. Open the CLI console.
 3. If necessary, click Clear console to empty the console.
 4. Enter the following command:
show system sdwan
 5. Either click Download and open the file in a text editor, or click Copy to clipboard and paste the content into a text 
editor.

 6. Edit the CLI configuration as necessary. For example, the first line that shows the show command should be 
deleted, and the default health checks can be removed.
 7. If required, save the CLI configuration as a text file.

To paste the SD-WAN configuration onto a new FortiGate:

 1. Copy the SD-WAN configuration from the text editor.
 2. On the new FortiGate, open the CLI console.
 3. Press Ctrl + v to paste the CLI commands.
 4. In necessary, press Enter to apply the last end command.
The SD-WAN configuration is copied to the new FortiGate.
If the interfaces do not exist, the SD-WAN members are created without interfaces, and are disabled until interfaces 
are configured.

FortiOS 6.4.6 Administration Guide 713


Fortinet Technologies Inc.
SD-WAN

To assign interfaces to the SD-WAN members:

 1. Go to Network > SD-WAN Zones.


 2. Edit the first member
 3. Set Interface to an actual interface.

 4. Click OK.
 5. Repeat the above steps to assign an interface to the second member.

Using a terminal emulator

The following instructions use PuTTy. The steps may vary in other terminal emulators.

To copy the SD-WAN configuration from the original FortiGate:

 1. Connect to the FortiGate. See Connecting to the CLI on page 23 for details.
 2. Enter the following command:
show system sdwan
 3. Select the output, press Ctrl + c to copy it, and then paste it into a text editor.
 4. Edit the CLI configuration as necessary. For example, the  default health checks can be removed.
 5. If required, save the CLI configuration as a text file.

To paste the SD-WAN configuration onto a new FortiGate:

 1. Copy the SD-WAN configuration from the text editor.
 2. Connect to the new FortiGate. See Connecting to the CLI on page 23 for details.
 3. Right-click to paste the SD-WAN configuration.
 4. In necessary, press Enter to apply the last end command.
The SD-WAN configuration is copied to the new FortiGate.
If the interfaces do not exist, the SD-WAN members are created without interfaces, and are disabled until interfaces 
are configured.

To assign interfaces to the SD-WAN members::

config system sdwan


config members
edit 1
set interface "_OCVPN4-0.0"
next
edit 2
set interface "_OCVPN4-0.1"
next
end
end

FortiOS 6.4.6 Administration Guide 714


Fortinet Technologies Inc.
SD-WAN

If no SD-WAN zone is specified, members are added to the default virtual-wan-link zone.

SD-WAN cloud on-ramp

In this example, you configure a connection to a new cloud deployment that has some remote servers. SD-WAN is used 
to steer traffic through the required overlay tunnel.
The on-premise FortiGate has two internet connections, each with a single VPN connection. The two VPN gateways are 
configured on the cloud for redundancy, one terminating at the FortiGate-VM, and the other at the native AWS VPN 
Gateway.
This example uses AWS as the Infrastructure as a Service (IaaS) provider, but the same configuration can also apply to 
other services. A full mesh VPN setup is not shown, but can be added later if required.

To connect to the servers that are behind the cloud FortiGate-VM, virtual IP addresses (VIPs) are configured on port2 to 
map to the servers:
 l VPN traffic terminating on port1 is routed to the VIP on port2 to access the web servers.
 l VPN traffic terminating on the VPN gateway accesses the VIPs on port2 directly.
There are four major steps to configure this setup:
 1. Configuring the VPN overlay between the HQ FortiGate and cloud FortiGate-VM on page 716
 2. Configuring the VPN overlay between the HQ FortiGate and AWS native VPN gateway on page 720
 3. Configuring the VIP to access the remote servers on page 724
 4. Configuring the SD-WAN to steer traffic between the overlays on page 726
After the configuration is complete, verify the traffic to ensure that the configuration is working as expected, see Verifying 
the traffic on page 731. 

FortiOS 6.4.6 Administration Guide 715


Fortinet Technologies Inc.
SD-WAN

Configuring the VPN overlay between the HQ FortiGate and cloud FortiGate-VM

Configure the cloud FortiGate-VM

To create an address for the VPN gateway:

 1. Go to Policy & Objects > Addresses and click Create New > Address.


 2. Set Name to local_subnet_10_0_2_0.
 3. Set IP/Netmask to 10.0.2.0/24.

 4. Click OK.

To configure a custom IPsec VPN:

 1. Go to VPN > IPsec Wizard.


 2. Set Name to Core_Dialup.
 3. Set Template type to Custom.

 4. Click Next.
 5. Configure Network settings:   

Remote Gateway Dialup User

Interface port1

NAT Traversal Enable

 6. Configure Authentication settings:   

Method Pre-shared Key

Pre-shared Key Enter the pre-shared key.

Version 1

Mode Aggressive
This setting allows the peer ID to be specified.

Accept Types Specific peer ID

FortiOS 6.4.6 Administration Guide 716


Fortinet Technologies Inc.
SD-WAN

Peer ID IaaS
The other end of the tunnel needs to have its local ID set to IaaS.

 7. Leave the default Phase 1 Proposal settings and disable XAUTH.


 8. Configure the Phase 2 Selector settings:   

Name Ent_Core

Local Address Named Address - local_subnet_10_0_2_0

Remote Address Named Address - all


This setting allows traffic originating from both the remote subnet 10.100.88.0 
and the health checks from the VPN interface on the remote FortiGate. For 
increased security, each subnet can be specified individually.

 9. Click OK.

To configure remote and local tunnel IP addresses:

 1. Go to Network > Interfaces and edit the Core_Dialup interface under port1.


 2. Set IP to 172.16.200.1.
 3. Set Remote IP/Netmask to 172.16.200.2 255.255.255.0. This is where remote health check traffic will come from.
 4. Enable Administrative access for HTTPS, PING, and SSH.

 5. Click OK.

FortiOS 6.4.6 Administration Guide 717


Fortinet Technologies Inc.
SD-WAN

To configure a route to the remote subnet through the tunnel:

 1. Go to Network > Static Routes and click Create New.


 2. Set Destination to Subnet and enter the IP address and netmask: 10.100.88.0/255.255.255.0.
 3. Set Interface to Core_Dialup.

 4. Click OK.

To configure a firewall policy to allow traffic from the tunnel to port2:

 1. Go to Policy & Objects > Firewall Policy and click Create New.


 2. Configure the following:   

Name Core_Dialup-to-port2

Incoming Interface Core_Dialup

Outgoing Interface port2

Source all

Destination local_subnet_10_0_2_0

Schedule always

Service ALL

Action ACCEPT

 3. Configure the remaining settings as required.
 4. Click OK.

FortiOS 6.4.6 Administration Guide 718


Fortinet Technologies Inc.
SD-WAN

Configure the HQ FortiGate

To create an address for the VPN gateway:

 1. Go to Policy & Objects > Addresses and click Create New > Address.


 2. Set Name to remote_subnet_10_0_2_0.
 3. Set IP/Netmask to 10.0.2.0/24.
 4. Click OK.

To configure a custom IPsec VPN:

 1. Go to VPN > IPsec Wizard.


 2. Set Name to FGT_AWS_Tun.
 3. Set Template type to Custom.
 4. Click Next.
 5. Configure Network settings:   

Remote Gateway Static IP Address

IP Address 100.21.29.17

Interface port5

NAT Traversal Enable

 6. Configure Authentication settings:   

Method Pre-shared Key

Pre-shared Key Enter the pre-shared key.

Version 1

Mode Aggressive
This setting allows the peer ID to be specified.

Accept Types Any peer ID

 7. Leave the default Phase 1 Proposal settings, except set Local ID to IaaS.


 8. Disable XAUTH.
 9. Configure the Phase 2 Selector settings:   

Name FGT_AWS_Tun 

Local Address Named Address - all


This setting allows traffic originating from both the local subnet 10.100.88.0 
and the health checks from the VPN interface. For increased security, each 
subnet can be specified individually.

Remote Address Named Address - remote_subnet_10_0_2_0

 10. Click OK.

FortiOS 6.4.6 Administration Guide 719


Fortinet Technologies Inc.
SD-WAN

To configure local and remote tunnel IP addresses:

 1. Go to Network > Interfaces and edit the FGT_AWS_Tun interface under port5.


 2. Set IP to 172.16.200.2.
 3. Set Remote IP/Netmask to 172.16.200.1 255.255.255.0.
 4. Enable Administrative access for HTTPS, PING, and SSH.
 5. Click OK.

Routing is defined when creating the SD-WAN interface. The firewall policy is created after the 
SD-WAN interface is defined.

Configuring the VPN overlay between the HQ FortiGate and AWS native VPN
gateway

This example uses static routing. It is assumed that the AWS VPN Gateway is already configured, and that proper 
routing is applied on the corresponding subnet.

Verify the AWS configuration

See Creating routing tables and associate subnets in the AWS Administration Guide for configuration details.

To check the AWS configuration:

 1. Go to Virtual Private Network (VPN) > Customer Gateways to confirm that the customer gateway defines the 


FortiGate IP address as its Gateway IP address, in this case 34.66.121.231.

 2. Go to Virtual Private Network (VPN) > Virtual Private Gateways to confirm that a virtual private gateway (VPG) has 


been created. In this case it is attached to the Cloud_onRamp VPC that contains the FortiGate and servers.

 3. Go to Virtual Private Network (VPN) > Site-to-Site VPN Connections to confirm that site-to-site VPN connections 


have been created and attached to the customer gateway and virtual private gateway.
If Routing Options is Static, the IP prefix of the remote subnet on the HQ FortiGate (10.100.88.0) is entered here.

AWS site-to-site VPN always creates two VPN tunnels for redundancy. In this example, only Tunnel 1 is used.

FortiOS 6.4.6 Administration Guide 720


Fortinet Technologies Inc.
SD-WAN

 4. Click Download Configuration to download the FortiGate's tunnel configurations. The configuration can be referred 


to when configuring the FortiGate VPN.
 5. The new VPG is attached to your VPC, but to successfully route traffic to the VPG, proper routing must be defined. 
Go to Virtual Private Cloud > Subnets, select the Cloud-OnRamp-VPN, and select the Route Table tab to verify that 
there are at least two routes to send traffic over the VPG.

 l 169.254.0.0/24 defines the tunnel IP address. Health check traffic originating from the FortiGate will come from 
this IP range.
 l 10.100.0.0/16 defines the remote subnet from the HQ FortiGate.
 l Both routes point to the just created VPG vgw-04xxxx.
 6. On the cloud FortiGate-VM EC2 instances, ensure that port1 and port2 both have Source/Dest. Check set to false. 
This allows the FortiGate to accept and route traffic to and from a different network.
If you launched the instance from the AWS marketplace, this setting defaults to true.

FortiOS 6.4.6 Administration Guide 721


Fortinet Technologies Inc.
SD-WAN

Configure routing to the VPG on the cloud FortiGate-VM

To configure routing to the VPG on the cloud FortiGate-VM:

 1. Go to Network > Static Routes and click Create New.


 2. Set Destination to Subnet and enter the IP address and netmask: 10.100.88.0/255.255.255.0.
 3. Set Gateway Address to Specify and enter 10.0.2.1.
 4. Set Interface to port2.

The new route must have the same Administrative Distance as the route that was created for traffic through the 
Core_Dialup tunnel to ensure that both routes are added to the routing table (see To configure a route to the remote 
subnet through the tunnel).
The Gateway Address is arbitrarily set to 10.0.2.1. The VPG does not have an IP address, but the address defined 
here allows the FortiGate to route traffic out of port2, while AWS routes the traffic based on its routing table.
 5. Click OK.
 6. Go to Network > Static Routes to view the configured static routes:

 7. If Optimal dashboards is selected, go to Dashboard > Network and expand the Routing widget to view the routing 


table.
If Comprehensive dashboards is selected, go to Dashboard > Routing Monitor and select Static & Dynamic in the 
widget toolbar to view the routing table:

FortiOS 6.4.6 Administration Guide 722


Fortinet Technologies Inc.
SD-WAN

Configure IPsec VPN on the HQ FortiGate

To configure a custom IPsec VPN:

 1. Go to VPN > IPsec Wizard.


 2. Set Name to AWS_VPG.
 3. Set Template type to Custom.
 4. Click Next.
 5. Configure Network settings:   

Remote Gateway Static IP Address

IP Address 34.210.19.225
This address is taken from the downloaded AWS configuration file.

Interface port1

NAT Traversal Enable

 6. Configure Authentication settings:   

Method Pre-shared Key

Pre-shared Key Enter the pre-shared key.

Version 1

Mode Main

 7. Configure the Phase 1 Proposal settings using information from the downloaded AWS configuration file.


 8. Disable XAUTH.
 9. Configure the Phase 2 Selector settings:   

Name AWS_VPG

Local Address Named Address - all


This setting allows traffic originating from both the local subnet 10.100.88.0 
and the health checks from the VPN interface. For increased security, each 
subnet can be specified individually.

Remote Address Named Address - remote_subnet_10_0_2_0

 10. Click OK.

To configure local and remote tunnel IP addresses:

 1. Go to Network > Interfaces and edit the AWS_VPG interface under port1.


 2. Set IP to 169.254.55.154.

FortiOS 6.4.6 Administration Guide 723


Fortinet Technologies Inc.
SD-WAN

 3. Set Remote IP/Netmask to 169.254.55.153 255.255.255.0.


 4. Enable Administrative access for HTTPS and PING.
 5. Click OK.

Routing is defined when creating the SD-WAN interface. The firewall policy is created after the 
SD-WAN interface is defined.

Configuring the VIP to access the remote servers

VIPs, interface IP addresses, and policies are created on the cloud FortiGate-VM to allow access to the remote servers.

To configure additional private IPs on AWS for the FortiGate VIP:

 1. On the FortiGate EC2 instance, edit the Elastic Network Interface that corresponds to port2. In this example, 


Network Interface eth1.
 2. Go to Actions > Manage IP Addresses.
 3. Add two private IP address in the 10.0.2.0/24 subnet.
These address will be used in the VIPs on the FortiGate. This ensures that traffic to these IP addresses is routed to 
the FortiGate by AWS.

 4. Click Yes, Update.

To configure VIPs on the cloud FortiGate-VM:

 1. Go to Policy & Objects > Virtual IPs and click Create New > Virtual IP.
 2. Configure the following:   

Name VIP-HTTP

Interface port2

External IP address/range 10.0.2.20

Mapped IP address/range 10.0.3.33

FortiOS 6.4.6 Administration Guide 724


Fortinet Technologies Inc.
SD-WAN

 3. Click OK.
 4. Create a second VIP for the FTP server with the following settings:   

Name VIP-FTP

Interface port2

External IP address/range 10.0.2.21

Mapped IP address/range 10.0.3.44

To configure firewall policies to allow traffic from port2 to port3:

 1. Go to Policy & Objects > Firewall Policy and click Create New.


 2. Configure the following:   

Name To-WebServer

Incoming Interface port2

Outgoing Interface port3

Source all

Destination VIP-HTTP

Schedule always

Service ALL

Action ACCEPT

NAT Enabled

FortiOS 6.4.6 Administration Guide 725


Fortinet Technologies Inc.
SD-WAN

 3. Configure the remaining settings as required.
 4. Click OK.
 5. Create a second policy for the FTP VIP with the following settings:   

Name To-FTP

Incoming Interface port2

Outgoing Interface port3

Source all

Destination VIP-FTP

Schedule always

Service ALL

Action ACCEPT

NAT Enabled

 6. Click OK.

Configuring the SD-WAN to steer traffic between the overlays

Configure the HQ FortiGate to use two overlay tunnels for SD-WAN, steering HTTPS and HTTP traffic through the FGT_
AWS_Tun tunnel, and SSH and FTP throguh the AWS_VPG tunnel.
 1. Add SD-WAN member interfaces
 2. Configure a route to the remote network
 3. Configure firewall policies

FortiOS 6.4.6 Administration Guide 726


Fortinet Technologies Inc.
SD-WAN

 4. Configure a health check
 5. Configure SD-WAN rules

To add SD-WAN member interfaces:

 1. Go to Network > SD-WAN Zones and click Create New > SD-WAN Member.


 2. Set Interface to AWS_VPG then click OK.

 3. Click Create New > SD-WAN Member again.


 4. Set Interface to FGT_AWS_Tun.
 5. Set Gateway to 172.16.200.1.
 6. Click OK.

To configure a route to the remote network 10.0.2.0/24:

 1. Go to Network > Static Routes and click Create New.


 2. Set Destination to Subnet and enter the IP address and netmask: 10.0.2.0/255.255.255.0.
 3. Set Interface to SD-WAN.

 4. Click OK.   
Individual routes to each tunnel are automatically added to the routing table with the same distance:

FortiOS 6.4.6 Administration Guide 727


Fortinet Technologies Inc.
SD-WAN

To configure firewall policies to allow traffic from the internal subnet to SD-WAN:

 1. Go to Policy & Objects > Firewall Policy and click Create New.


 2. Configure the following:   

Name ISFW-to-IaaS

Incoming Interface port3

Outgoing Interface virtual-wan-link

Source all

Destination all

Schedule always

Service ALL

Action ACCEPT

NAT Enabled

FortiOS 6.4.6 Administration Guide 728


Fortinet Technologies Inc.
SD-WAN

 3. Configure the remaining settings as required.
 4. Click OK.
Once the firewall policies are configured, the VPN tunnels should come up when there is traffic. 

To configure a health check to monitor the status of the tunnels:

As you are accessing the servers on the 10.0.2.0/24 subnet, it is preferable to use the FortiGate port2 interface as the 
ping server for detection. This ensures that, if the gateway is not reachable in either tunnel, its routes are brought down 
and traffic continues on the other tunnel.
 1. Go to Network > Performance SLA and click Create New.
 2. Configure the following:   

Name ping_AWS_Gateway

Protocol Ping

Server 10.0.2.10

Participants Specify
Add AWS_VPG and FGT_AWS_Tun as participants.

FortiOS 6.4.6 Administration Guide 729


Fortinet Technologies Inc.
SD-WAN

 3. Click OK.

Health check probes originate from the VPN interface's IP address. This is why the phase2 selectors are configured 
with Local Address set to all.

To configure SD-WAN rules to steer traffic:

HTTPS and HTTP traffic is steered to the FGT_AWS_Tun tunnel, and SSH and FTP traffic is steered to the AWS_VPG 
tunnel. The Manual algorithm is used in this example.
 1. Go to Network > SD-WAN Rules and click Create New.
 2. Configure the following:   

Name http-to-FGT_AWS_Tun

Source Address all

Address remote_subnet_10_0_2_0

Protocol TCP

Port range 80 - 80

Outgoing Interfaces Manual

Interface preference FGT_AWS_Tun

FortiOS 6.4.6 Administration Guide 730


Fortinet Technologies Inc.
SD-WAN

 3. Click OK.
 4. Create other SD-WAN rules as required:

Verifying the traffic

To verify that pings are sent across the IPsec VPN tunnels

 l On the HQ FortiGate, run the following CLI command:
# diagnose sniffer packet any 'host 10.0.2.10' 4 0 1 interfaces=[any]
filters=[host 10.0.2.10]
2020-06-05 11:35:14.822600 AWS_VPG out 169.254.55.154 -> 10.0.2.10: icmp: echo request
2020-06-05 11:35:14.822789 FGT_AWS_Tun out 172.16.200.2 -> 10.0.2.10: icmp: echo request
2020-06-05 11:35:14.877862 FGT_AWS_Tun in 10.0.2.10 -> 172.16.200.2: icmp: echo reply
2020-06-05 11:35:14.878887 AWS_VPG in 10.0.2.10 -> 169.254.55.154: icmp: echo reply

 l On the cloud FortiGate-VM, run the following CLI command:
# diagnose sniffer packet any 'host 10.0.2.10' 4 0 1 interfaces=[any]
filters=[host 10.0.2.10]
2020-06-05 11:37:57.176329 port2 in 169.254.55.154 -> 10.0.2.10: icmp: echo request
2020-06-05 11:37:57.176363 port2 out 10.0.2.10 -> 169.254.55.154: icmp: echo reply

FortiOS 6.4.6 Administration Guide 731


Fortinet Technologies Inc.
SD-WAN

2020-06-05 11:37:57.176505 Core_Dialup in 172.16.200.2 -> 10.0.2.10: icmp: echo request


2020-06-05 11:37:57.176514 Core_Dialup out 10.0.2.10 -> 172.16.200.2: icmp: echo reply

To verify the SLA health checks on the HQ FortiGate:

 1. Go to Network > Performance SLA and select Packet Loss and the ping_AWS_Gateway SLA:

 2. Run the following CLI command:
# diagnose sys sdwan health-check

Seq(1 AWS_VPG): state(alive), packet-loss(0.000%) latency(56.221), jitter(0.290) sla_
map=0x0
Seq(2 FGT_AWS_Tun): state(alive), packet-loss(0.000%) latency(55.039), jitter(0.223)
sla_map=0x0

To verify service rules:

 1. Go to Network > SD-WAN Rules:

 2. Run the following CLI command:
# diagnose sys sdwan service

Service(1): Address Mode(IPV4) flags=0x0


Gen(1), TOS(0x0/0x0), Protocol(6: 80->80), Mode(manual)
Members:
1: Seq_num(2 FGT_AWS_Tun), alive, selected
Src address:
0.0.0.0-255.255.255.255
Dst address:
10.0.2.0-10.0.2.255

FortiOS 6.4.6 Administration Guide 732


Fortinet Technologies Inc.
SD-WAN

Service(2): Address Mode(IPV4) flags=0x0


Gen(1), TOS(0x0/0x0), Protocol(6: 22->22), Mode(manual)
Members:
1: Seq_num(1 AWS_VPG), alive, selected
Src address:
0.0.0.0-255.255.255.255
Dst address:
10.0.2.0-10.0.2.255

Service(3): Address Mode(IPV4) flags=0x0


Gen(1), TOS(0x0/0x0), Protocol(6: 443->443), Mode(manual)
Members:
1: Seq_num(2 FGT_AWS_Tun), alive, selected
Src address:
0.0.0.0-255.255.255.255
Dst address:
10.0.2.0-10.0.2.255

Service(4): Address Mode(IPV4) flags=0x0


Gen(1), TOS(0x0/0x0), Protocol(0: 1->65535), Mode(manual)
Members:
1: Seq_num(1 AWS_VPG), alive, selected
Src address:
0.0.0.0-255.255.255.255
Dst address:
10.0.2.21-10.0.2.21

To verify that sessions are going to the correct tunnel:

 1. Run the following CLI command to verify that HTTPS and HTTP traffic destined for the Web server at 10.0.2.20 
uses FGT_AWS_Tun:
# diagnose sys session filter dst 10.0.2.20
# diagnose sys session list

session info: proto=6 proto_state=11 duration=2 expire=3597 timeout=3600 flags=00000000


socktype=0 sockport=0 av_idx=0 use=4
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=FGT_AWS_Tun/ vlan_cos=0/255
state=log may_dirty npu f00 csf_syncd_log app_valid
statistic(bytes/packets/allow_err): org=593/4/1 reply=3689/5/1 tuples=3
tx speed(Bps/kbps): 264/2 rx speed(Bps/kbps): 1646/13
orgin->sink: org pre->post, reply pre->post dev=0->18/18->0 gwy=172.16.200.1/0.0.0.0
hook=post dir=org act=snat 10.100.88.101:55589->10.0.2.20:80(172.16.200.2:55589)
hook=pre dir=reply act=dnat 10.0.2.20:80->172.16.200.2:55589(10.100.88.101:55589)
hook=post dir=reply act=noop 10.0.2.20:80->10.100.88.101:55589(0.0.0.0:0)
pos/(before,after) 0/(0,0), 0/(0,0)
src_mac=00:09:0f:00:03:01
misc=0 policy_id=32 auth_info=0 chk_client_info=0 vd=0
serial=00b7442c tos=ff/ff app_list=2000 app=34050 url_cat=0
sdwan_mbr_seq=0 sdwan_service_id=0
rpdb_link_id= ff000001 rpdb_svc_id=2154552596 ngfwid=n/a
npu_state=0x3041008

FortiOS 6.4.6 Administration Guide 733


Fortinet Technologies Inc.
SD-WAN

session info: proto=6 proto_state=66 duration=1 expire=3 timeout=3600 flags=00000000


socktype=0 sockport=0 av_idx=0 use=4
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=FGT_AWS_Tun/ vlan_cos=0/255
state=log may_dirty ndr f00 csf_syncd_log
statistic(bytes/packets/allow_err): org=48/1/0 reply=40/1/1 tuples=3
tx speed(Bps/kbps): 26/0 rx speed(Bps/kbps): 22/0
orgin->sink: org pre->post, reply pre->post dev=5->18/18->5
gwy=172.16.200.1/10.100.88.101
hook=post dir=org act=snat 10.100.88.101:55621->10.0.2.20:443(172.16.200.2:55621)
hook=pre dir=reply act=dnat 10.0.2.20:443->172.16.200.2:55621(10.100.88.101:55621)
hook=post dir=reply act=noop 10.0.2.20:443->10.100.88.101:55621(0.0.0.0:0)
pos/(before,after) 0/(0,0), 0/(0,0)
src_mac=00:09:0f:00:03:01
misc=0 policy_id=32 auth_info=0 chk_client_info=0 vd=0
serial=00b74b50 tos=ff/ff app_list=2000 app=0 url_cat=0
sdwan_mbr_seq=0 sdwan_service_id=0
rpdb_link_id= ff000003 rpdb_svc_id=2154552596 ngfwid=n/a
npu_state=0x3041008

 2. Run the following CLI command to verify that SSH and FTP traffic destined for the FTP server at 10.0.2.21 uses 
AWS_VPG:
# diagnose sys session filter dst 10.0.2.20
# diagnose sys session list

session info: proto=6 proto_state=11 duration=197 expire=3403 timeout=3600


flags=00000000 socktype=0 sockport=0 av_idx=0 use=4
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=AWS_VPG/ helper=ftp vlan_cos=0/255
state=log may_dirty ndr npu f00 csf_syncd_log app_valid
statistic(bytes/packets/allow_err): org=580/12/1 reply=863/13/1 tuples=3
tx speed(Bps/kbps): 2/0 rx speed(Bps/kbps): 4/0
orgin->sink: org pre->post, reply pre->post dev=5->17/17->5
gwy=169.254.55.153/10.100.88.101
hook=post dir=org act=snat 10.100.88.101:55528->10.0.2.21:21(169.254.55.154:55528)
hook=pre dir=reply act=dnat 10.0.2.21:21->169.254.55.154:55528(10.100.88.101:55528)
hook=post dir=reply act=noop 10.0.2.21:21->10.100.88.101:55528(0.0.0.0:0)
pos/(before,after) 0/(0,0), 0/(0,0)
src_mac=00:09:0f:00:03:01
misc=0 policy_id=32 auth_info=0 chk_client_info=0 vd=0
serial=00b72a5f tos=ff/ff app_list=2000 app=15896 url_cat=0
sdwan_mbr_seq=0 sdwan_service_id=0
rpdb_link_id= ff000004 rpdb_svc_id=2149689849 ngfwid=n/a
npu_state=0x3041008

session info: proto=6 proto_state=11 duration=3 expire=3596 timeout=3600 flags=00000000


socktype=0 sockport=0 av_idx=0 use=4
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=AWS_VPG/ vlan_cos=0/255
state=log may_dirty ndr npu f00 csf_syncd_log app_valid

FortiOS 6.4.6 Administration Guide 734


Fortinet Technologies Inc.
SD-WAN

statistic(bytes/packets/allow_err): org=1496/6/1 reply=1541/5/1 tuples=3


tx speed(Bps/kbps): 416/3 rx speed(Bps/kbps): 429/3
orgin->sink: org pre->post, reply pre->post dev=5->17/17->5
gwy=169.254.55.153/10.100.88.101
hook=post dir=org act=snat 10.100.88.101:55644->10.0.2.21:22(169.254.55.154:55644)
hook=pre dir=reply act=dnat 10.0.2.21:22->169.254.55.154:55644(10.100.88.101:55644)
hook=post dir=reply act=noop 10.0.2.21:22->10.100.88.101:55644(0.0.0.0:0)
pos/(before,after) 0/(0,0), 0/(0,0)
src_mac=00:09:0f:00:03:01
misc=0 policy_id=32 auth_info=0 chk_client_info=0 vd=0
serial=00b75287 tos=ff/ff app_list=2000 app=16060 url_cat=0
sdwan_mbr_seq=0 sdwan_service_id=0
rpdb_link_id= ff000002 rpdb_svc_id=2149689849 ngfwid=n/a
npu_state=0x3041008

To simulate an issue on an overlay VPN tunnel:

On the cloud FortiGate-VM, disable the firewall policy allowing Core_Dialup to port2.
 1. Health-checks through the FGT_AWS_Tun tunnel fail:   
 a. Go to Network > Performance SLA and select Packet Loss and the ping_AWS_Gateway SLA:   

 b. Run the following CLI command:
# diagnose sys sdwan health-check

Seq(1 AWS_VPG): state(alive), packet-loss(0.000%) latency(52.746), jitter(0.713) sla_
map=0x0
Seq(2 FGT_AWS_Tun): state(dead), packet-loss(19.000%) sla_map=0x0

 2. Service rules show that the member is down:   
 a. Go to Network > SD-WAN Rules:

FortiOS 6.4.6 Administration Guide 735


Fortinet Technologies Inc.
SD-WAN

 b. Run the following CLI command:
# diagnose sys sdwan service

Service(1): Address Mode(IPV4) flags=0x0


Gen(2), TOS(0x0/0x0), Protocol(6: 80->80), Mode(manual)
Members:
1: Seq_num(2 FGT_AWS_Tun), dead
Src address:
0.0.0.0-255.255.255.255
Dst address:
10.0.2.0-10.0.2.255

Service(2): Address Mode(IPV4) flags=0x0


Gen(1), TOS(0x0/0x0), Protocol(6: 22->22), Mode(manual)
Members:
1: Seq_num(1 AWS_VPG), alive, selected
Src address:
0.0.0.0-255.255.255.255
Dst address:
10.0.2.0-10.0.2.255

Service(3): Address Mode(IPV4) flags=0x0


Gen(2), TOS(0x0/0x0), Protocol(6: 443->443), Mode(manual)
Members:
1: Seq_num(2 FGT_AWS_Tun), dead
Src address:
0.0.0.0-255.255.255.255
Dst address:
10.0.2.0-10.0.2.255

Service(4): Address Mode(IPV4) flags=0x0


Gen(1), TOS(0x0/0x0), Protocol(0: 1->65535), Mode(manual)
Members:
1: Seq_num(1 AWS_VPG), alive, selected
Src address:
0.0.0.0-255.255.255.255
Dst address:
10.0.2.21-10.0.2.21

 3. Sessions are redirected to the working tunnel:   
 a. Run the following CLI command:
# diagnose sys session list

session info: proto=6 proto_state=11 duration=3 expire=3596 timeout=3600


flags=00000000 socktype=0 sockport=0 av_idx=0 use=4
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=AWS_VPG/ vlan_cos=0/255
state=log may_dirty ndr npu f00 csf_syncd_log app_valid
statistic(bytes/packets/allow_err): org=504/4/1 reply=620/3/1 tuples=3
tx speed(Bps/kbps): 150/1 rx speed(Bps/kbps): 184/1
orgin->sink: org pre->post, reply pre->post dev=0->17/17->0
gwy=169.254.55.153/0.0.0.0
hook=post dir=org act=snat 10.100.88.101:56373->10.0.2.20:80(169.254.55.154:56373)

FortiOS 6.4.6 Administration Guide 736


Fortinet Technologies Inc.
SD-WAN

hook=pre dir=reply act=dnat 10.0.2.20:80->169.254.55.154:56373(10.100.88.101:56373)


hook=post dir=reply act=noop 10.0.2.20:80->10.100.88.101:56373(0.0.0.0:0)
pos/(before,after) 0/(0,0), 0/(0,0)
src_mac=00:09:0f:00:03:01
misc=0 policy_id=32 auth_info=0 chk_client_info=0 vd=0
serial=00b87199 tos=ff/ff app_list=2000 app=34050 url_cat=0
rpdb_link_id= 80000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=0x3041008

session info: proto=6 proto_state=66 duration=3 expire=1 timeout=3600 flags=00000000


socktype=0 sockport=0 av_idx=0 use=4
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=AWS_VPG/ vlan_cos=0/255
state=log may_dirty ndr f00 csf_syncd_log
statistic(bytes/packets/allow_err): org=48/1/0 reply=40/1/1 tuples=3
tx speed(Bps/kbps): 15/0 rx speed(Bps/kbps): 12/0
orgin->sink: org pre->post, reply pre->post dev=5->17/17->5
gwy=169.254.55.153/10.100.88.101
hook=post dir=org act=snat 10.100.88.101:56383->10.0.2.20:443(169.254.55.154:56383)
hook=pre dir=reply act=dnat 10.0.2.20:443->169.254.55.154:56383(10.100.88.101:56383)
hook=post dir=reply act=noop 10.0.2.20:443->10.100.88.101:56383(0.0.0.0:0)
pos/(before,after) 0/(0,0), 0/(0,0)
src_mac=00:09:0f:00:03:01
misc=0 policy_id=32 auth_info=0 chk_client_info=0 vd=0
serial=00b876bb tos=ff/ff app_list=2000 app=0 url_cat=0
rpdb_link_id= 80000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=0x3041008
total session 2

 4. Routes to the FGT_AWS_Tun tunnel are removed:   
 a. If Optimal dashboards is selected, go to Dashboard > Network and expand the Routing widget to view the 
routing table.
If Comprehensive dashboards is selected, go to Dashboard > Routing Monitor and select Static & Dynamic in 
the widget toolbar to view the routing table:

 b. Run the following CLI command:
# get router info routing-table all
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

FortiOS 6.4.6 Administration Guide 737


Fortinet Technologies Inc.
SD-WAN

Routing table for VRF=0


S* 0.0.0.0/0 [1/0] via 10.100.64.254, port1
[1/0] via 10.100.65.254, port5
S 10.0.2.0/24 [1/0] via 169.254.55.153, AWS_VPG
C 10.0.10.0/24 is directly connected, Branch-HQ-A
C 10.0.10.1/32 is directly connected, Branch-HQ-A

Hub and spoke SD-WAN deployment example

This topology diagram shows an overview of the network that is configured in this example:

Datacenter configuration

The datacenter is configured to support:

FortiOS 6.4.6 Administration Guide 738


Fortinet Technologies Inc.
SD-WAN

 l Zero touch provisioning of new spokes
 l Point to multipoint VPN
 l Central management of access with the datacenter firewall
 l Dynamic peering, to share routing information between branches and the datacenter
 l VDOM compatibility, with inter-VDOM links for isolation and segmentation

To configure the datacenter, complete the following steps:

 1. Configure dial-up (dynamic) VPN
 2. Configure VPN interfaces
 3. Configure loopback interface
 4. Configure BGP
 5. Firewall policies
 6. Configure a black hole route

Configure dial-up (dynamic) VPN

Dial-up, or dynamic, VPNs are used to facilitate zero touch provisioning of new spokes to establish VPN connections to 
the hub FortiGate.
The exchange-interface-ip option is enabled to allow the exchange of IPsec interface IP addresses. This allows a 
point to multipoint connection to the hub FortiGate.
The add-route option is disabled to allow multiple dial-up tunnels to be established to the same host that is advertising 
the same network. This dynamic network discovery is facilitated by the BGP configuration; see Configure BGP on page 
741 for details.
Wildcard security associations are defined for the phase2 interface because routing is used to determine if traffic is 
subject to encryption and transmission through the IPsec VPN tunnel. The phase1 interface name must be 11 characters 
or less.
A dynamic VPN configuration must be defined for each interface that connects to the internet.

To configure the IPsec phase1 interfaces:

config vpn ipsec phase1-interface


edit "vpn-isp-a"
set type dynamic
set interface "port2"
set peertype any
set exchange-interface-ip enable
set proposal aes256-sha256
set add-route disable
set dhgrp 5
set net-device enable
set psksecret ********
next
edit "vpn-isp-b"
set type dynamic
set interface "port3"
set peertype any
set exchange-interface-ip enable
set proposal aes256-sha256

FortiOS 6.4.6 Administration Guide 739


Fortinet Technologies Inc.
SD-WAN

set add-route disable


set dhgrp 5
set net-device enable
set psksecret ********
next
end

To configure the IPsec phase2 interfaces:

config vpn ipsec phase2-interface


edit "vpn-isp-a_p2"
set phase1name "vpn-isp-a"
set proposal aes256-sha256
set pfs disable
set replay disable
next
edit "vpn-isp-b_p2"
set phase1name "vpn-isp-b"
set proposal aes256-sha256
set pfs disable
set replay disable
next
end

Configure VPN interfaces

To establish the BGP session, IP addresses must be assigned to the tunnel interfaces that BGP will use to peer.
The hub IP address is set to the address that the tunnels connect to. The remote IP address is set to highest unused IP 
address that is part of the tunnel network. This establishes two connected routes directly back to the branch FortiGate in 
the hub FortiGate's routing table.
Ping is allowed on the virtual interface to confirm that a point to point tunnel has been established between the hub and 
branch FortiGates.

To define IP addressses for VPN interfaces:

config system interface


edit "vpn-isp-a"
set vdom "root"
set ip 10.254.0.1 255.255.255.255
set allowaccess ping
set type tunnel
set remote-ip 10.254.0.254 255.255.255.255
set interface "port2"
next
edit "vpn-isp-b"
set vdom "root"
set ip 10.254.1.1 255.255.255.255
set allowaccess ping
set type tunnel
set remote-ip 10.254.1.254 255.255.255.255
set interface "port3"
next
end

FortiOS 6.4.6 Administration Guide 740


Fortinet Technologies Inc.
SD-WAN

Configure loopback interface

A loopback interface must be defined on the hub FortiGate to be used as a common probe point for the FortiGates that 
are using SD-WAN. The FortiGates send a probe packet from each of their SD-WAN member interfaces so that they can 
determine the best route according to their policies. Ping is allowed so that it can be used for measurements.

To configure the loopback interface on the hub FortiGate:

config system interface


edit "loopback_0"
set vdom "root"
set ip 10.255.255.1 255.255.255.255
set allowaccess ping
set type loopback
next
end

Configure BGP

Network route discovery is facilitated by BGP.
EBGP is used to prevent the redistribution of routes that are in the same Autonomous System (AS) number as the host. 
It is also required to influence route selection on the branches with AS-Path prepending. EBGP multipath is enabled so 
that the hub FortiGate can dynamically discover multiple paths for networks that are advertised at the branches.
The neighbor range and group settings are configured to allow peering relationships to be established without defining 
each individual peer. Connecting branches have their tunnel interfaces configured within the range of the BGP peer.
In order to facilitate the fastest route failovers, configure the following timers to their lowest levels: scan-time, 
advertisement-interval, keep-alive-timer, and holdtime-timer.

To configure BGP on the hub FortiGate:

config router bgp


set as 65500
set router-id 10.10.0.1
set ebgp-multipath enable
set graceful-restart enable
config neighbor-group
edit "branch-peers-1"
set soft-reconfiguration enable
set remote-as 65501
next
edit "branch-peers-2"
set soft-reconfiguration enable
set remote-as 65501
next
end
config neighbor-range
edit 1
set prefix 10.254.0.0 255.255.255.0
set neighbor-group "branch-peers-1"
next
edit 2

FortiOS 6.4.6 Administration Guide 741


Fortinet Technologies Inc.
SD-WAN

set prefix 10.254.1.0 255.255.255.0


set neighbor-group "branch-peers-2"
next
end
config network
edit 1
set prefix 10.200.1.0 255.255.255.0
next
edit 2
set prefix 10.200.0.0 255.255.255.0
next
edit 3
set prefix 10.200.3.0 255.255.255.0
next
end
end

Firewall policies

Centralized access is controlled from the hub FortiGate using Firewall policies. In addition to layer three and four 
inspection, security policies can be used in the policies for layer seven traffic inspection.
It is best practice to only allow the networks and services that are required for communication through the firewall. The 
following rules are the minimum that must be configured to allow SD-WAN to function:

Source Destination Source Destination Action Schedule Service Comments


Interface Interface Address Address

<vpn  <internal  <branch  <hub  Accept Always ICMP Allow health 


interfaces> Interface> tunnel IP  FortiGate  checks to the 
addresses> internal  hub 
interface> FortiGate

<vpn  <internal  <branch  <datacenter  Accept Always <allowed  Allow traffic 


interfaces> Interface> networks> networks> services> from branch 
networks

For this example, a simple policy that allows all traffic is configured.

To configure a firewall policy:

config firewall policy


edit 1
set name "Allow All"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
end

FortiOS 6.4.6 Administration Guide 742


Fortinet Technologies Inc.
SD-WAN

Configure a black hole route

If there is a temporary loss of connectivity to the branch routes, it is best practice to send the traffic that is destined for 
those networks into a black hole until connectivity is restored.

To configure a black hole route for branch networks:

config router static


edit 6
set dst 10.0.0.0/14
set distance 255
set blackhole enable
next
end

Branch configuration

The branches are configured to support:
 l Client side SD-WAN with intelligent load balancing based on link quality
 l Easy to create configuration templates for quick spoke deployment
 l Split tunnel deployment for local internet access
 l VDOM compatibility, with inter-VDOM links for isolation and segmentation

To configure a branch, complete the following steps:

 1. Configure VPN to the hub
 2. Configure VPN interfaces
 3. Configure BGP
 4. Configure SD-WAN
 5. Firewall configuration

Configure VPN to the hub

The branch uses a normal site-to-site VPN configuration.
Wildcard security associations are define in the phase2 configuration because dynamic routing with BGP determines 
what traffic must traverse the VPN tunnel for encryption/transmission.
To make sure that the VPN is established, auto-negotiate is enabled.

To configure the IPsec phase1 interfaces:

config vpn ipsec phase1-interface


edit "vpn_dc1-1"
set interface "port2"
set peertype any
set exchange-interface-ip enable
set proposal aes256-sha256
set dhgrp 5
set remote-gw 172.16.0.78

FortiOS 6.4.6 Administration Guide 743


Fortinet Technologies Inc.
SD-WAN

set psksecret ********


next
edit "vpn_dc1-2"
set interface "port3"
set peertype any
set exchange-interface-ip enable
set proposal aes256-sha256
set dhgrp 5
set remote-gw 172.16.0.82
set psksecret ********
next
end

To configure the IPsec phase2 interfaces:

config vpn ipsec phase2-interface


edit "vpn_dc1-1_p2"
set phase1name "vpn_dc1-1"
set proposal aes256-sha256
set pfs disable
set replay disable
set auto-negotiate enable
next
edit "vpn_dc1-2_p2"
set phase1name "vpn_dc1-2"
set proposal aes256-sha256
set pfs disable
set replay disable
set auto-negotiate enable
next
end

Configure VPN interfaces

The branch must define its local tunnel interface IP address, and the remote tunnel interface IP address of the 
datacenter FortiGate, to establish the point to multipoint VPN.

To define IP addressses for VPN interfaces:

config system interface


edit "vpn_dc1-1"
set vdom "root"
set ip 10.255.0.2 255.255.255.255
set allowaccess ping
set type tunnel
set remote-ip 10.255.0.1 255.255.255.255
set interface "port2"
next
edit "vpn_dc1-2"
set vdom "root"
set ip 10.255.1.2 255.255.255.255
set allowaccess ping
set type tunnel
set remote-ip 10.255.1.1 255.255.255.255

FortiOS 6.4.6 Administration Guide 744


Fortinet Technologies Inc.
SD-WAN

set interface "port3"


next
end

Configure BGP

BGP enables learning dynamic routes from the datacenter. The BGP configuration is normal, with the definition of the 
datacenter FortiGate tunnel IP addresses set as BGP peers.
Routes that have the same network mask, administrative distance, priority, and AS length are automatically considered 
for SD-WAN when the interfaces that those routes are on are added to the SD-WAN interface group.
In order to facilitate the fastest route failovers, configure the following timers to their lowest levels: scan-time, 
advertisement-interval, keep-alive-timer, and holdtime-timer.
The distance-external option might need to be configured if you need routes that are learned from BGP to take 
precedence over static routes.

To configure BGP on the branch FortiGate:

config router bgp


set as 65501
set router-id 10.254.0.2
set ebgp-multipath enable
config neighbor
edit "10.254.0.1"
set soft-reconfiguration enable
set remote-as 65500
next
edit "10.254.1.1"
set soft-reconfiguration enable
set remote-as 65500
next
end
end

Configure SD-WAN

SD-WAN configuration is required to load balance based on the quality of the links. It can be configured to select the best 
link based on characteristics such as jitter, packet loss, and latency. A policy route is created by the FortiGate to select 
the best link based on the defined criteria.
For SD-WAN interfaces, or members, the peer is defined to reference the BGP neighbor that is tied to that specific 
interface.
The health check is the ping server that gathers the link characteristics used for link selection. It is recommended that the 
minimum failtime be set to 2.
The service definition defines the criteria for the policy routes. It can match based on the following characteristics:
 l Protocol
 l Destination Address
 l Source Address
 l Identity Based Group

FortiOS 6.4.6 Administration Guide 745


Fortinet Technologies Inc.
SD-WAN

 l Internet Service Definition
 l Source Port
 l Destination Port
 l Destination Route Tag
To dynamically determine the networks of the policy routes, routes that are learned from a BGP neighbor are matched 
against a route map, and a tag is defined for the matching routes. The service rules learn the networks based on these 
tags, instead of defining objects based on the learned addresses' network prefixes . See Dynamic definition of SD-WAN 
routes on page 748 for details on configuring the FortiGate to use the destination tags for the SD-WAN service definition.

To define the SD-WAN member interfaces:

config system sdwan


set status enable
config members
edit 1
set interface "vpn_dc1-1"
next
edit 2
set interface "vpn_dc1-2"
next
end
end

To define the SD-WAN health checks:

config system sdwan


config health-check
edit "datacenter1"
set server "10.200.1.1"
set interval 1
set failtime 2
set recoverytime 10
next
end
end

To define the SD-WAN service rules:

config system sdwan


config service
edit 1
set mode priority
set dst n-corporate
set health-check "datacenter1"
set priority-members 1 2
next
end
end

FortiOS 6.4.6 Administration Guide 746


Fortinet Technologies Inc.
SD-WAN

Firewall configuration

Centralized access is controlled from the hub FortiGate using Firewall policies. In addition to layer three and four 
inspection, security policies can be used in the policies for layer seven traffic inspection.
It is best practice to only allow the networks and services that are required for communication through the firewall. The 
following rules are the minimum that must be configured to allow SD-WAN to function:

Source Destination Source Destination Action Schedule Service Comments


Interface Interface Address Address

<internal  <virtual wan  <branch  <datacenter  Accept Always <allowed  Allow traffic 


interface> link> networks> networks> services> from branch 
to datacenter

<virtual  <internal  <datacenter  <branch  Accept Always <allowed  Allow traffic 


wan link> Interface> networks> networks> services> from 
datacenter to 
branch

For this example, a simple policy that allows all traffic is configured.

To configure a firewall policy:

config firewall policy


edit 1
set name "Allow All"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
end

Validation

The following commands can be used to validate the connections on the datacenter and branches.

Datacenter

Routing table:

get router info routing-table all

VPN establishment:

diagnose vpn ike gateway list

FortiOS 6.4.6 Administration Guide 747


Fortinet Technologies Inc.
SD-WAN

Branch

SD-WAN validation:

diagnose sys sdwan member


diagnose sys sdwan service
diagnose sys sdwan health-check

Routing table:

get router info routing-table all


get router info route-map-address
get router info bgp route-map <route-map-name>

VPN establishment:

diagnose vpn ike gateway list

Troubleshooting

If VoIP calls are not failing over properly, try removing the SIP Application Layer Gateway.

To remove the SIP ALG:

config system session-helper


delete 13
end
config system settings
set sip-helper disable
set sip-nat-trace disable
set default-voip-alg-mode kernel-helper-based
end

Dynamic definition of SD-WAN routes

Dynamic definitions of SD-WAN routes alleviate administrators from needing to know the destination of the traffic that is 
being load balanced, which, in an environment where routes are constantly added and removed, required a significant 
amount of administrative overhead.
The FortiGate can be configured to apply a route map to a BGP neighbor, and tag the routes that are learned from that 
neighbor with the set-route-tag command. After those routes are assigned a tag ID in the route map, the ID can be 
referenced in the SD-WAN rule.

To define the route map to apply to the BGP neighbor:

config router route-map


edit "map-comm1"
config rule

FortiOS 6.4.6 Administration Guide 748


Fortinet Technologies Inc.
SD-WAN

edit 1
set match-origin igp
set set-route-tag 12
next
edit 2
set match-ip-address "pf-all-in"
set set-route-tag 11
next
end
next
end

To apply the route map to the BGP neighbor:

config router bgp


config neighbor
edit "10.254.0.1"
set route-map-in "map-comm1"
next
end
end

To reference tagged routes in an SD-WAN rule:

config system sdwan


config service
edit 1
set mode priority
set dst-tag 11
set health-check "datacenter1"
set priority-members 1 2
next
end
end

Adding another datacenter

Datacenter FortiGates should be configured to establish an OSPF neighbor relationship with the internal core router. 
This allows the dynamic redistribution of routes to the branches that are receiving updates from the datacenter 
FortiGates.
To ensure the fastest failover with OSPF, the following timers are set to their minimum levels: spf-timers, hello-
interval, dead-interval.
Bi-directional forwarding is enabled to allow the fastest convergence time if there is a failure with a peering neighbor.

To configure OSPF:

config router ospf


set router-id 10.10.10.10
set spf-timers 0 1
set distribute-list-in "pf-datacenter2-tunnel"
set restart-mode graceful-restart
config area

FortiOS 6.4.6 Administration Guide 749


Fortinet Technologies Inc.
SD-WAN

edit 10.10.10.10
next
end
config ospf-interface
edit "port5"
set interface "port5"
set dead-interval 3
set hello-interval 1
set bfd enable
next
end
config network
edit 1
set prefix 192.168.100.0 255.255.255.252
set area 10.10.10.10
next
end
config redistribute "connected"
set status enable
set routemap "redistribute-branch-tunnel"
end
config redistribute "static"
end
config redistribute "rip"
end
config redistribute "bgp"
set status enable
set routemap "redistribute-branch-networks"
end
config redistribute "isis"
end
end

Troubleshooting SD-WAN

The following topics provide instructions on SD-WAN troubleshooting:
 l Tracking SD-WAN sessions on page 750
 l Understanding SD-WAN related logs on page 751
 l SD-WAN related diagnose commands on page 754
 l SD-WAN bandwidth monitoring service on page 758
 l Using SNMP to monitor health check on page 761

Tracking SD-WAN sessions

You can check the destination interface in Dashboard > FortiView Sessions in order to see which port the traffic is being 


forwarded to.
The example below demonstrates a source-based load-balance between two SD-WAN members:

FortiOS 6.4.6 Administration Guide 750


Fortinet Technologies Inc.
SD-WAN

 l If the source IP address is an even number, it will go to port13.
 l If the source IP address is an odd number, it will go to port12.

Understanding SD-WAN related logs

This topic lists the SD-WAN related logs and explains when the logs will be triggered.

Health-check detects a failure:

 l When health-check detects a failure, it will record a log:
34: date=2019-03-23 time=17:26:06 logid="0100022921" type="event" subtype="system"
level="critical" vd="root" eventtime=1553387165 logdesc="Routing information changed"
name="test" interface="R150" status="down" msg="Static route on interface R150 may be
removed by health-check test. Route: (10.100.1.2->10.100.2.22 ping-down)"

 l When health-check detects a recovery, it will record a log:
32: date=2019-03-23 time=17:26:54 logid="0100022921" type="event" subtype="system"
level="critical" vd="root" eventtime=1553387214 logdesc="Routing information changed"
name="test" interface="R150" status="up" msg="Static route on interface R150 may be
added by health-check test. Route: (10.100.1.2->10.100.2.22 ping-up)"

Health-check has an SLA target and detects SLA qualification changes:

 l When health-check has an SLA target and detects SLA changes, and changes to fail:
5: date=2019-04-11 time=11:48:39 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1555008519816639290 logdesc="Virtual WAN Link status"
msg="SD-WAN Health Check(ping) SLA(1): number of pass members changes from 2 to 1."

 l When health-check has an SLA target and detects SLA changes, and changes to pass:
2: date=2019-04-11 time=11:49:46 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1555008586149038471 logdesc="Virtual WAN Link status"
msg="SD-WAN Health Check(ping) SLA(1): number of pass members changes from 1 to 2."

SD-WAN calculates a link's session/bandwidth over/under its ratio and stops/resumes traffic:

 l When SD-WAN calculates a link's session/bandwidth over its configured ratio and stops forwarding traffic:
3: date=2019-04-10 time=17:15:40 logid="0100022924" type="event" subtype="system"
level="notice" vd="root" eventtime=1554941740185866628 logdesc="Virtual WAN Link volume

FortiOS 6.4.6 Administration Guide 751


Fortinet Technologies Inc.
SD-WAN

status" interface="R160" msg="The member(3) enters into conservative status with limited
ablity to receive new sessions for too much traffic."

 l When SD-WAN calculates a link's session/bandwidth according to its ratio and resumes forwarding traffic:
1: date=2019-04-10 time=17:20:39 logid="0100022924" type="event" subtype="system"
level="notice" vd="root" eventtime=1554942040196041728 logdesc="Virtual WAN Link volume
status" interface="R160" msg="The member(3) resume normal status to receive new sessions
for internal adjustment."

The SLA mode service rule's SLA qualified member changes:

 l When the SLA mode service rule's SLA qualified member changes. In this example R150 fails the SLA check, but is 
still alive:
14: date=2019-03-23 time=17:44:12 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1553388252 logdesc="Virtual WAN Link status"
msg="Service2() prioritized by SLA will be redirected in seq-num order 2(R160) 1(R150)."
15: date=2019-03-23 time=17:44:12 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1553388252 logdesc="Virtual WAN Link status"
interface="R150" msg="The member1(R150) SLA order changed from 1 to 2. "
16: date=2019-03-23 time=17:44:12 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1553388252 logdesc="Virtual WAN Link status"
interface="R160" msg="The member2(R160) SLA order changed from 2 to 1. "

 l When the SLA mode service rule's SLA qualified member changes. In this example  R150 changes from fail to pass:
1: date=2019-03-23 time=17:46:05 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1553388365 logdesc="Virtual WAN Link status"
msg="Service2() prioritized by SLA will be redirected in seq-num order 1(R150) 2(R160)."
2: date=2019-03-23 time=17:46:05 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1553388365 logdesc="Virtual WAN Link status"
interface="R160" msg="The member2(R160) SLA order changed from 1 to 2. "
3: date=2019-03-23 time=17:46:05 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1553388365 logdesc="Virtual WAN Link status"
interface="R150" msg="The member1(R150) SLA order changed from 2 to 1. "

The priority mode service rule member's link status changes:

 l When priority mode service rule member's link status changes. In this example R150 changes to better than R160, 
and both are still alive:
1: date=2019-03-23 time=17:33:23 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1553387603 logdesc="Virtual WAN Link status"
msg="Service2() prioritized by packet-loss will be redirected in seq-num order 1(R150) 2
(R160)."
2: date=2019-03-23 time=17:33:23 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1553387603 logdesc="Virtual WAN Link status"
interface="R160" msg="The member2(R160) link quality packet-loss order changed from 1 to
2. "
3: date=2019-03-23 time=17:33:23 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1553387603 logdesc="Virtual WAN Link status"
interface="R150" msg="The member1(R150) link quality packet-loss order changed from 2 to
1. "

 l When priority mode service rule member's link status changes. In this example R160 changes to better than R150, 
and both are still alive:

FortiOS 6.4.6 Administration Guide 752


Fortinet Technologies Inc.
SD-WAN

6: date=2019-03-23 time=17:32:01 logid="0100022923" type="event" subtype="system"


level="notice" vd="root" eventtime=1553387520 logdesc="Virtual WAN Link status"
msg="Service2() prioritized by packet-loss will be redirected in seq-num order 2(R160) 1
(R150)."
7: date=2019-03-23 time=17:32:01 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1553387520 logdesc="Virtual WAN Link status"
interface="R150" msg="The member1(R150) link quality packet-loss order changed from 1 to
2. "
8: date=2019-03-23 time=17:32:01 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1553387520 logdesc="Virtual WAN Link status"
interface="R160" msg="The member2(R160) link quality packet-loss order changed from 2 to
1. "

SD-WAN member is used in service and it fails the health-check:

 l When SD-WAN member fails the health-check, it will stop forwarding traffic:
6: date=2019-04-11 time=13:33:21 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1555014801844089814 logdesc="Virtual WAN Link status"
interface="R160" msg="The member2(R160) link is unreachable or miss threshold. Stop
forwarding traffic. "

 l When SD-WAN member passes the health-check again, it will resume forwarding logs:
2: date=2019-04-11 time=13:33:36 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1555014815914643626 logdesc="Virtual WAN Link status"
interface="R160" msg="The member2(R160) link is available. Start forwarding traffic. "

Load-balance mode service rule's SLA qualified member changes:

 l When load-balance mode service rule's SLA qualified member changes. In this example R150 changes to not meet 
SLA:
2: date=2019-04-11 time=14:11:16 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1555017075926510687 logdesc="Virtual WAN Link status"
msg="Service1(rule2) will be load balanced among members 2(R160) with available
routing."
3: date=2019-04-11 time=14:11:16 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1555017075926508676 logdesc="Virtual WAN Link status"
interface="R150" msg="The member1(R150) SLA order changed from 1 to 2. "
4: date=2019-04-11 time=14:11:16 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1555017075926507182 logdesc="Virtual WAN Link status"
interface="R160" msg="The member2(R160) SLA order changed from 2 to 1. "

 l When load-balance mode service rule's SLA qualified member changes. In this example R150 changes to meet 
SLA:
1: date=2019-04-11 time=14:33:23 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1555017075926510668 logdesc="Virtual WAN Link status"
msg="Service1(rule2) will be load balanced among members 1(R150) 2(R160) with available
routing."
2: date=2019-03-23 time=14:33:23 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1553387603592651068 logdesc="Virtual WAN Link status"
interface="R160" msg="The member2(R160) link quality packet-loss order changed from 1 to
2. "
3: date=2019-03-23 time=14:33:23 logid="0100022923" type="event" subtype="system"
level="notice" vd="root" eventtime=1553387603592651068 logdesc="Virtual WAN Link status"

FortiOS 6.4.6 Administration Guide 753


Fortinet Technologies Inc.
SD-WAN

interface="R150" msg="The member1(R150) link quality packet-loss order changed from 2 to


1. "

SLA link status logs, generated with interval sla-fail-log-period or sla-pass-log-period:

 l When SLA fails, SLA link status logs will be generated with interval sla-fail-log-period:
7: date=2019-03-23 time=17:45:54 logid="0100022925" type="event" subtype="system"
level="notice" vd="root" eventtime=1553388352 logdesc="Link monitor SLA information"
name="test" interface="R150" status="up" msg="Latency: 0.016, jitter: 0.002, packet
loss: 21.000%, inbandwidth: 0Mbps, outbandwidth: 200Mbps, bibandwidth: 200Mbps, sla_map:
0x0"

 l When SLA passes, SLA link status logs will be generated with interval sla-pass-log-period:
5: date=2019-03-23 time=17:46:05 logid="0100022925" type="event" subtype="system"
level="information" vd="root" eventtime=1553388363 logdesc="Link monitor SLA
information" name="test" interface="R150" status="up" msg="Latency: 0.017, jitter:
0.003, packet loss: 0.000%, inbandwidth: 0Mbps, outbandwidth: 200Mbps, bibandwidth:
200Mbps, sla_map: 0x1"

SD-WAN related diagnose commands

This topic lists the SD-WAN related diagnose commands and related output.

To check SD-WAN health-check status:

FGT # diagnose sys sdwan health-check


Health Check(server):
Seq(1): state(alive), packet-loss(0.000%) latency(15.247), jitter(5.231) sla_map=0x0
Seq(2): state(alive), packet-loss(0.000%) latency(13.621), jitter(6.905) sla_map=0x0

FGT # diagnose sys sdwan health-check


Health Check(ping):
Seq(1): state(alive), packet-loss(0.000%) latency(0.683), jitter(0.082) sla_map=0x0
Seq(2): state(dead), packet-loss(100.000%) sla_map=0x0

FGT # diagnose sys sdwan health-check google


Health Check(google):
Seq(1): state(alive), packet-loss(0.000%) latency(14.563), jitter(4.334) sla_map=0x0
Seq(2): state(alive), packet-loss(0.000%) latency(12.633), jitter(6.265) sla_map=0x0

To check SD-WAN member status:

 l When SD-WAN load-balance mode is source-ip-based/source-dest-ip-based.
FGT # diagnose sys sdwan member
Member(1): interface: port13, gateway: 10.100.1.1 2004:10:100:1::1, priority: 0, weight:
0
Member(2): interface: port15, gateway: 10.100.1.5 2004:10:100:1::5, priority: 0, weight:
0

 l When SD-WAN load-balance mode is weight-based.
FGT # diagnose sys sdwan member
Member(1): interface: port13, gateway: 10.100.1.1 2004:10:100:1::1, priority: 0, weight:

FortiOS 6.4.6 Administration Guide 754


Fortinet Technologies Inc.
SD-WAN

33
Member(2): interface: port15, gateway: 10.100.1.5 2004:10:100:1::5, priority: 0, weight:
66

 l When SD-WAN load-balance mode is measured-volume-based.
 l Both members are under volume and still have room:
FGT # diagnose sys sdwan member
Member(1): interface: port13, gateway: 10.100.1.1 2004:10:100:1::1, priority: 0,
weight: 33
Config volume ratio: 33, last reading: 8211734579B, volume room 33MB
Member(2): interface: port15, gateway: 10.100.1.5 2004:10:100:1::5, priority: 0,
weight: 66
Config volume ratio: 66, last reading: 24548159B, volume room 66MB

 l Some members are overloaded and some still have room:
FGT # diagnose sys sdwan member
Member(1): interface: port1, gateway: 10.10.0.2, priority: 0, weight: 0
Config volume ratio: 10, last reading: 10297221000B, overload volume 1433MB
Member(2): interface: port2, gateway: 10.11.0.2, priority: 0, weight: 38
Config volume ratio: 50, last reading: 45944239916B, volume room 38MB

 l When SD-WAN load balance mode is usage-based/spillover.
 l When no spillover occurs:
FGT # diagnose sys virtual-wan-link member
Member(1): interface: port13, gateway: 10.100.1.1 2004:10:100:1::1, priority: 0,
weight: 255
Egress-spillover-threshold: 400kbit/s, ingress-spillover-threshold: 300kbit/s
Egress-overbps=0, ingress-overbps=0
Member(2): interface: port15, gateway: 10.100.1.5 2004:10:100:1::5, priority: 0,
weight: 254
Egress-spillover-threshold: 0kbit/s, ingress-spillover-threshold: 0kbit/s
Egress-overbps=0, ingress-overbps=0

 l When member has reached limit and spillover occurs:
FGT # diagnose sys sdwan member
Member(1): interface: port13, gateway: 10.100.1.1 2004:10:100:1::1, priority: 0,
weight: 255
Egress-spillover-threshold: 400kbit/s, ingress-spillover-threshold: 300kbit/s
Egress-overbps=1, ingress-overbps=1
Member(2): interface: port15, gateway: 10.100.1.5 2004:10:100:1::5, priority: 0,
weight: 254
Egress-spillover-threshold: 0kbit/s, ingress-spillover-threshold: 0kbit/s
Egress-overbps=0, ingress-overbps=0

 l You can also use the diagnose netlink dstmac list command to check if you are over the limit.


FGT # diagnose netlink dstmac list port13
dev=port13 mac=08:5b:0e:ca:94:9d rx_tcp_mss=0 tx_tcp_mss=0 egress_overspill_
threshold=51200 egress_bytes=103710 egress_over_bps=1 ingress_overspill_
threshold=38400 ingress_bytes=76816 ingress_over_bps=1 sampler_rate=0

FortiOS 6.4.6 Administration Guide 755


Fortinet Technologies Inc.
SD-WAN

To check SD-WAN service rules status:

 l Manual mode service rules.
FGT # diagnose sys sdwan service
Service(1): Address Mode(IPV4) flags=0x0
TOS(0x0/0x0), Protocol(0: 1->65535), Mode(manual)
Members:
1: Seq_num(2), alive, selected
Dst address: 10.100.21.0-10.100.21.255

 l Auto mode service rules.
FGT # diagnose sys sdwan service
Service(1): Address Mode(IPV4) flags=0x0
TOS(0x0/0x0), Protocol(0: 1->65535), Mode(auto), link-cost-factor(latency), link-cost-
threshold(10), health-check(ping)
Members:
1: Seq_num(2), alive, latency: 0.011
2: Seq_num(1), alive, latency: 0.018, selected
Dst address: 10.100.21.0-10.100.21.255

 l Priority mode service rules.
FGT # diagnose sys sdwan service
Service(1): Address Mode(IPV4) flags=0x0
TOS(0x0/0x0), Protocol(0: 1->65535), Mode(priority), link-cost-factor(latency), link-
cost-threshold(10), health-check(ping)
Members:
1: Seq_num(2), alive, latency: 0.011, selected
2: Seq_num(1), alive, latency: 0.017, selected
Dst address: 10.100.21.0-10.100.21.255

 l Load-balance mode service rules.
FGT # diagnose sys sdwan service
Service(1): Address Mode(IPV4) flags=0x0
TOS(0x0/0x0), Protocol(0: 1->65535), Mode(load-balance)
Members:
1: Seq_num(1), alive, sla(0x1), num of pass(1), selected
2: Seq_num(2), alive, sla(0x1), num of pass(1), selected
Dst address: 10.100.21.0-10.100.21.255

 l SLA mode service rules.
FGT # diagnose sys sdwan service
Service(1): Address Mode(IPV4) flags=0x0
TOS(0x0/0x0), Protocol(0: 1->65535), Mode(sla)
Members:
1: Seq_num(1), alive, sla(0x1), cfg_order(0), cost(0), selected
2: Seq_num(2), alive, sla(0x1), cfg_order(1), cost(0), selected
Dst address: 10.100.21.0-10.100.21.255

To check interface logs from the past 15 minutes:

FGT (root) # diagnose sys sdwan intf-sla-log R150


Timestamp: Fri Apr 12 11:08:36 2019, used inbandwidth: 0bps, used outbandwidth: 0bps, used
bibandwidth: 0bps, tx bytes: 860bytes, rx bytes: 1794bytes.
Timestamp: Fri Apr 12 11:08:46 2019, used inbandwidth: 1761bps, used outbandwidth: 1710bps,

FortiOS 6.4.6 Administration Guide 756


Fortinet Technologies Inc.
SD-WAN

used bibandwidth: 3471bps, tx bytes: 2998bytes, rx bytes: 3996bytes.


Timestamp: Fri Apr 12 11:08:56 2019, used inbandwidth: 2452bps, used outbandwidth: 2566bps,
used bibandwidth: 5018bps, tx bytes: 7275bytes, rx bytes: 7926bytes.
Timestamp: Fri Apr 12 11:09:06 2019, used inbandwidth: 2470bps, used outbandwidth: 3473bps,
used bibandwidth: 5943bps, tx bytes: 13886bytes, rx bytes: 11059bytes.
Timestamp: Fri Apr 12 11:09:16 2019, used inbandwidth: 2433bps, used outbandwidth: 3417bps,
used bibandwidth: 5850bps, tx bytes: 17946bytes, rx bytes: 13960bytes.
Timestamp: Fri Apr 12 11:09:26 2019, used inbandwidth: 2450bps, used outbandwidth: 3457bps,
used bibandwidth: 5907bps, tx bytes: 22468bytes, rx bytes: 17107bytes.

To check SLA logs in the past 10 minutes:

FGT (root) # diagnose sys sdwan sla-log ping 1


Timestamp: Fri Apr 12 11:09:27 2019, vdom root, health-check ping, interface: R150, status:
up, latency: 0.014, jitter: 0.003, packet loss: 16.000%.
Timestamp: Fri Apr 12 11:09:28 2019, vdom root, health-check ping, interface: R150, status:
up, latency: 0.015, jitter: 0.003, packet loss: 15.000%.
Timestamp: Fri Apr 12 11:09:28 2019, vdom root, health-check ping, interface: R150, status:
up, latency: 0.014, jitter: 0.003, packet loss: 14.000%.
Timestamp: Fri Apr 12 11:09:29 2019, vdom root, health-check ping, interface: R150, status:
up, latency: 0.015, jitter: 0.003, packet loss: 13.000%.

To check Application Control used in SD-WAN and the matching IP addresses:

FGT # diagnose sys sdwan internet-service-app-ctrl-list


Ctrl application(Microsoft.Authentication 41475):Internet Service ID(4294836224)
Protocol(6), Port(443)
Address(2): 104.42.72.21 131.253.61.96
Ctrl application(Microsoft.CDN 41470):Internet Service ID(4294836225)
Ctrl application(Microsoft.Lync 28554):Internet Service ID(4294836226)
Ctrl application(Microsoft.Office.365 33182):Internet Service ID(4294836227)
Ctrl application(Microsoft.Office.365.Portal 41468):Internet Service ID(4294836228)
Ctrl application(Microsoft.Office.Online 16177):Internet Service ID(4294836229)
Ctrl application(Microsoft.OneNote 40175):Internet Service ID(4294836230)
Ctrl application(Microsoft.Portal 41469):Internet Service ID(4294836231)
Protocol(6), Port(443)
Address(8): 23.58.134.172 131.253.33.200 23.58.135.29 204.79.197.200 64.4.54.254
23.59.156.241 13.77.170.218 13.107.22.200
Ctrl application(Microsoft.Sharepoint 16190):Internet Service ID(4294836232)
Ctrl application(Microsoft.Sway 41516):Internet Service ID(4294836233)
Ctrl application(Microsoft.Tenant.Namespace 41471):Internet Service ID(4294836234)

To check IPsec aggregate interface when SD-WAN uses the per-packet distribution feature:

# diagnose sys ipsec-aggregate list


agg1 algo=L3 member=2 run_tally=2
members:
vd1-p1
vd1-p2

To check BGP learned routes and determine if they are used in SD-WAN service:

FGT # get router info bgp network


FGT # get router info bgp network 10.100.11.0
BGP routing table entry for 10.100.10.0/24

FortiOS 6.4.6 Administration Guide 757


Fortinet Technologies Inc.
SD-WAN

Paths: (2 available, best 1, table Default-IP-Routing-Table)


Advertised to non peer-group peers:
172.10.22.2
20
10.100.20.2 from 10.100.20.2 (6.6.6.6)
Origin EGP metric 200, localpref 100, weight 10000, valid, external, best
Community: 30:5
Last update: Wen Mar 20 18:45:17 2019
FGT # get router info route-map-address
Extend-tag: 15, interface(wan2:16)
10.100.11.0/255.255.255.0

FGT # diagnose firewall proute list


list route policy info(vf=root):

id=4278779905 vwl_service=1(DataCenter) flags=0x0 tos=0x00 tos_mask=0x00 protocol=0


sport=0:65535 iif=0 dport=1-65535 oif=16
source wildcard(1): 0.0.0.0/0.0.0.0
destination wildcard(1): 10.100.11.0/255.255.255.0

SD-WAN bandwidth monitoring service

The bandwidth measuring tool is used to detect true upload and download speeds. Bandwidth tests can be run on 
demand or automated using a script, and can be useful when configuring SD-WAN SLA and rules to balance SD-WAN 
traffic.
The speed test tool requires a valid license, either with the 360 Protection Bundle in 6.2, or an SD-WAN Bandwidth 
Monitoring Service license.
The speed test tool is compatible with iperf3.6 with SSL support. It can test the upload bandwidth to the FortiGate Cloud 
speed test service. It can initiate the server connection and send download requests to the server. The tool can be run up 
to 10 times a day .
FortiGate downloads the speed test server list. The list expires after 24 hours. One of the speed test servers is selected, 
based on user input. The speed test runs, testing upload and download speeds. The test results are shown in the 
command terminal.

To download the speed test server list:

# execute speed-test-server download


Download completed.

To check the speed test server list:

# execute speed-test-server list


AWS_West valid
Host: 34.210.67.183 5204 fortinet
Host: 34.210.67.183 5205 fortinet
Host: 34.210.67.183 5206 fortinet
Host: 34.210.67.183 5207 fortinet
Google_West valid
Host: 35.197.55.210 5204 fortinet
Host: 35.197.55.210 5205 fortinet
Host: 35.197.55.210 5206 fortinet

FortiOS 6.4.6 Administration Guide 758


Fortinet Technologies Inc.
SD-WAN

Host: 35.197.55.210 5207 fortinet


Host: 35.230.2.124 5204 fortinet
Host: 35.230.2.124 5205 fortinet
Host: 35.230.2.124 5206 fortinet
Host: 35.230.2.124 5207 fortinet
Host: 35.197.18.234 5204 fortinet
Host: 35.197.18.234 5205 fortinet
Host: 35.197.18.234 5206 fortinet
Host: 35.197.18.234 5207 fortinet

To run the speed test:

You can run the speed test without specifying a server. The system will automatically choose one server from the list and 
run the speed test.
# execute speed-test auto
The license is valid to run speed test.
Speed test quota for 2/1 is 9
current vdom=root
Run in uploading mode.
Connecting to host 35.230.2.124, port 5206
[ 16] local 172.16.78.185 port 2475 connected to 35.230.2.124 port 5206
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 16] 0.00-1.01 sec 11.0 MBytes 91.4 Mbits/sec 0 486 KBytes
[ 16] 1.01-2.00 sec 11.6 MBytes 98.4 Mbits/sec 0 790 KBytes
[ 16] 2.00-3.01 sec 11.0 MBytes 91.6 Mbits/sec 15 543 KBytes
[ 16] 3.01-4.01 sec 11.2 MBytes 94.2 Mbits/sec 1 421 KBytes
[ 16] 4.01-5.01 sec 11.2 MBytes 93.5 Mbits/sec 0 461 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 16] 0.00-5.01 sec 56.1 MBytes 93.8 Mbits/sec 16 sender
[ 16] 0.00-5.06 sec 55.8 MBytes 92.6 Mbits/sec receiver

speed test Done.


Run in reverse downloading mode!
Connecting to host 35.230.2.124, port 5206
Reverse mode, remote host 35.230.2.124 is sending
[ 16] local 172.16.78.185 port 2477 connected to 35.230.2.124 port 5206
[ ID] Interval Transfer Bitrate
[ 16] 0.00-1.00 sec 10.9 MBytes 91.4 Mbits/sec
[ 16] 1.00-2.00 sec 11.2 MBytes 93.9 Mbits/sec
[ 16] 2.00-3.00 sec 11.2 MBytes 94.0 Mbits/sec
[ 16] 3.00-4.00 sec 11.2 MBytes 93.9 Mbits/sec
[ 16] 4.00-5.00 sec 10.9 MBytes 91.1 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 16] 0.00-5.03 sec 57.5 MBytes 95.9 Mbits/sec 40 sender
[ 16] 0.00-5.00 sec 55.4 MBytes 92.9 Mbits/sec receiver

speed test Done

To run the speed test on a server farm or data center:

# execute speed-test auto AWS_West


The license is valid to run speed test.
Speed test quota for 2/1 is 8

FortiOS 6.4.6 Administration Guide 759


Fortinet Technologies Inc.
SD-WAN

current vdom=root
Run in uploading mode.
Connecting to host 34.210.67.183, port 5205

To run the speed test on a local interface when there are multiple valid routes:

# execute speed-test port1 Google_West


The license is valid to run speed test.
Speed test quota for 2/1 is 6
bind to local ip 172.16.78.202
current vdom=root
Specified interface port1 does not comply with default outgoing interface port2 in routing
table!
Force to use the specified interface!
Run in uploading mode.
Connecting to host 35.197.18.234, port 5205
[ 11] local 172.16.78.202 port 20852 connected to 35.197.18.234 port 5205
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 11] 0.00-1.01 sec 10.7 MBytes 89.0 Mbits/sec 0 392 KBytes
[ 11] 1.01-2.01 sec 10.5 MBytes 88.5 Mbits/sec 1 379 KBytes
[ 11] 2.01-3.01 sec 11.3 MBytes 94.5 Mbits/sec 0 437 KBytes
[ 11] 3.01-4.01 sec 11.2 MBytes 94.3 Mbits/sec 0 478 KBytes
[ 11] 4.01-5.00 sec 11.3 MBytes 95.2 Mbits/sec 0 503 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 11] 0.00-5.00 sec 55.1 MBytes 92.3 Mbits/sec 1 sender
[ 11] 0.00-5.04 sec 54.5 MBytes 90.7 Mbits/sec receiver

speed test Done.


Run in reverse downloading mode!
Connecting to host 35.197.18.234, port 5205
Reverse mode, remote host 35.197.18.234 is sending
[ 11] local 172.16.78.202 port 20853 connected to 35.197.18.234 port 5205
[ ID] Interval Transfer Bitrate
[ 11] 0.00-1.00 sec 10.9 MBytes 91.1 Mbits/sec
[ 11] 1.00-2.00 sec 11.2 MBytes 94.0 Mbits/sec
[ 11] 2.00-3.00 sec 11.2 MBytes 94.0 Mbits/sec
[ 11] 3.00-4.00 sec 11.2 MBytes 94.0 Mbits/sec
[ 11] 4.00-5.00 sec 11.2 MBytes 94.0 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 11] 0.00-5.03 sec 57.4 MBytes 95.8 Mbits/sec 33 sender
[ 11] 0.00-5.00 sec 55.7 MBytes 93.4 Mbits/sec receiver

speed test Done.

To add a script to run a speed test automatically once every 24 hours:

config system auto-script


edit "speedtest"
set interval 86400
set repeat 0
set start auto
set script "
execute speed-test-server download
execute speed-test"

FortiOS 6.4.6 Administration Guide 760


Fortinet Technologies Inc.
SD-WAN

next
end

To view the results of the speed test script:

execute auto-script result speedtest

Using SNMP to monitor health check

You can monitor SD-WAN health check related statistics using SNMP. The MIB file can be downloaded by going to 
System > SNMP and clicking Download FortiGate MIB File.
The following OIDs can be monitored:

Name OID Description

fgVWLHealthCheckLinkNumber .1.3.6.1.4.1.12356.101.4.9.1 The number of health check links 


in fgVWLHealthCheckLinkTable

fgVWLHealthCheckLinkTable .1.3.6.1.4.1.12356.101.4.9.2 SD-WAN health check statistics 


table.
This table has a dependent 
expansion relationship with 
fgVdTable.Only health checks with 
a configured member link are 
present in this table.

fgVWLHealthCheckLinkTableEntry .1.3.6.1.4.1.12356.101.4.9.2.1 SD-WAN health check statistics on 


a virtual domain.

fgVWLHealthCheckLinkID .1.3.6.1.4.1.12356.101.4.9.2.1.1 SD-WAN health check link ID.


Only health checks with configured 
member link are present in this 
table. Virtual-wan-link health check 
link IDs are only unique within a 
virtual domain.

fgVWLHealthCheckLinkName .1.3.6.1.4.1.12356.101.4.9.2.1.2 Health check name.

fgVWLHealthCheckLinkSeq .1.3.6.1.4.1.12356.101.4.9.2.1.3 SD-WAN member link sequence.

fgVWLHealthCheckLinkState .1.3.6.1.4.1.12356.101.4.9.2.1.4 Health check state on a specific 


member link.

fgVWLHealthCheckLinkLatency .1.3.6.1.4.1.12356.101.4.9.2.1.5 The average latency of a health 


check on a specific member link 
within last 30 probes, in float 
number.

fgVWLHealthCheckLinkJitter .1.3.6.1.4.1.12356.101.4.9.2.1.6 The average jitter of a health check 


on a specific member link within 
last 30 probes, in float number.

FortiOS 6.4.6 Administration Guide 761


Fortinet Technologies Inc.
SD-WAN

Name OID Description

fgVWLHealthCheckLinkPacketSend .1.3.6.1.4.1.12356.101.4.9.2.1.7 The total number of packets sent 


by a health check on a specific 
member link.

fgVWLHealthCheckLinkPacketRecv .1.3.6.1.4.1.12356.101.4.9.2.1.8 The total number of packets 


received by a health check on a 
specific member link.

fgVWLHealthCheckLinkPacketLoss .1.3.6.1.4.1.12356.101.4.9.2.1.9 The packet loss percentage of a 


health check on a specific member 
link within last 30 probes, in float 
number.

fgVWLHealthCheckLinkVdom .1.3.6.1.4.1.12356.101.4.9.2.1.10 The VDOM that the link monitor 


entry exists in.
This name corresponds to the 
fgVdEntName used in fgVdTable.

fgVWLHealthCheckLinkBandwidthIn .1.3.6.1.4.1.12356.101.4.9.2.1.11 The available bandwidth of 


incoming traffic detected by a 
health check on a specific member 
link,  in Mbps,

fgVWLHealthCheckLinkBandwidthOut .1.3.6.1.4.1.12356.101.4.9.2.1.12 The available bandwidth of 


outgoing traffic detected by a 
health check on a specific member 
link,  in Mbps.

fgVWLHealthCheckLinkBandwidthBi .1.3.6.1.4.1.12356.101.4.9.2.1.13 The available bandwidth of bi-


direction traffic detected by a 
health check on a specific member 
link,  in Mbps.

fgVWLHealthCheckLinkIfName .1.3.6.1.4.1.12356.101.4.9.2.1.14 SD-WAN member interface name.

Example

This example shows a SD-WAN health check configuration and its collected statistics.

To configure the SD-WAN health check:

config system sdwan


set status enable
config zone
edit "virtual-wan-link"
next
end
config members
edit 1
set interface "port1"
set gateway 192.168.2.1

FortiOS 6.4.6 Administration Guide 762


Fortinet Technologies Inc.
SD-WAN

next
edit 2
set interface "MPLS"
set zone "SD-Zone2"
set cost 20
next
edit 3
set interface "port2"
next
end
config health-check
edit "pingserver"
set server "8.8.8.8"
set sla-fail-log-period 10
set sla-pass-log-period 20
set members 2 1 3
config sla
edit 1
set link-cost-factor jitter packet-loss
set packetloss-threshold 2
next
end
next
end
end

The collected statistics:

fgVWLHealthCheckLinkID .1.3.6.1.4.1.12356.101.4.9.2.1.1 1 2 3

fgVWLHealthCheckLinkName .1.3.6.1.4.1.12356.101.4.9.2.1.2 pingserver pingserver pingserver

fgVWLHealthCheckLinkSeq .1.3.6.1.4.1.12356.101.4.9.2.1.3 2 1 3

fgVWLHealthCheckLinkState .1.3.6.1.4.1.12356.101.4.9.2.1.4 0 0 0

fgVWLHealthCheckLinkLatency .1.3.6.1.4.1.12356.101.4.9.2.1.5 39.302 43.124 44.348

fgVWLHealthCheckLinkJitter .1.3.6.1.4.1.12356.101.4.9.2.1.6 4.346 3.951 5.05

fgVWLHealthCheckLinkPacketSend .1.3.6.1.4.1.12356.101.4.9.2.1.7 3657689 3657689 3657689

fgVWLHealthCheckLinkPacketRecv .1.3.6.1.4.1.12356.101.4.9.2.1.8 3196258 3220258 3219466

fgVWLHealthCheckLinkPacketLoss .1.3.6.1.4.1.12356.101.4.9.2.1.9 0 0 0

fgVWLHealthCheckLinkVdom .1.3.6.1.4.1.12356.101.4.9.2.1.1 root root root


0

fgVWLHealthCheckLinkBandwidthIn .1.3.6.1.4.1.12356.101.4.9.2.1.1 9999963 9999937 9999999


1

fgVWLHealthCheckLinkBandwidthO .1.3.6.1.4.1.12356.101.4.9.2.1.1 9999981 9999953 9999998


ut 2

fgVWLHealthCheckLinkBandwidthBi .1.3.6.1.4.1.12356.101.4.9.2.1.1 19999944 19999890 19999997


3

FortiOS 6.4.6 Administration Guide 763


Fortinet Technologies Inc.
SD-WAN

fgVWLHealthCheckLinkIfName .1.3.6.1.4.1.12356.101.4.9.2.1.1 MPLS port1 port2


4

FortiOS 6.4.6 Administration Guide 764


Fortinet Technologies Inc.
System

This topic contains information about FortiGate administration and system configuration that you can do after installing 
the FortiGate in your network.

Basic system settings

Administrators

By default, FortiGate has an administrator account with the username admin and no password. See Administrators on 
page 767 for more information.

Administrator profiles

An administrator profile defines what the administrator can see and do on the FortiGate. See Administrator profiles on 
page 767 for more information.

Password policy

Set up a password policy to enforce password criteria and change frequency. See Password policy on page 772 for 
more information.

Interfaces

Physical and virtual interface allow traffic to flow between internal networks, and between the internet and internal 
networks. See Interfaces on page 384 for more information.

Advanced system settings

SNMP

The simple network management protocol (SNMP) allows you to monitor hardware on your network. See SNMP on page 
907 for more information.

DHCP server

You can configure one or more DHCP servers on any FortiGate interface. See DHCP server on page 491 for more 
information.

FortiOS 6.4.6 Administration Guide 765


Fortinet Technologies Inc.
System

VDOM

You can use virtual domains (VDOMs) to divide a FortiGate into multiple virtual devices that function independently. See 
Virtual Domains on page 798 for more information.

High availability

You can configure multiple FortiGate devices, including private and public cloud VMs, in HA mode. See High Availability 
on page 820 for more information.

Certificates

You can manage certificates on the FortiGate. See Certificates on page 941 for more information.

Operating modes

A FortiGate or VDOM (in multi-vdom mode) can operate in either NAT/Route mode or Transparent mode.

NAT/Route mode

The FortiGate or VDOM is installed as a gateway between two networks, such as a private network and the internet. This 
allows the FortiGate to hide the IP addresses on the private network using NAT. NAT/Route mode can also be used 
when several ISPs are used for redundant internet connections.
By default, new VDOMs are set to NAT/Route operation mode.
See Configure VDOM-A on page 807 for more information.

Transparent mode

The FortiGate or VDOM is installed between the internal network and the router. The FortiGate does not changes any IP 
addresses, and only applies security scanning to traffic. When you add a FortiGate that is in transparent mode to a 
network, it only needs to be provided with a management IP address. 
Transparent mode is primarily used when increased network protection is needed without changing the network 
configuration.
See Configure VDOM-A on page 817 for more information.

To change the operating mode of a FortiGate or VDOM:

config system settings


set opmode {nat | transparent}
end

FortiOS 6.4.6 Administration Guide 766


Fortinet Technologies Inc.
System

Administrators

By default, FortiGate has an administrator account with the username admin and no password. To prevent unauthorized 
access to the FortiGate, this account must be protected with a password. Additional administrators can be added for 
various functions, each with a unique username, password, and set of access privileges.
The following topics provide information about administrators:
 l Administrator profiles on page 767
 l Add a local administrator on page 769
 l Remote authentication for administrators on page 769
 l Password policy on page 772
 l Admin profile option for diagnose access  on page 773
 l SSO administrators on page 774

Administrator profiles

Administrator profiles define what the administrator can do when logged into the FortiGate. When you set up an 
administrator account, you also assign an administrator profile which dictates what the administrator sees. Depending 
on the nature of the administrator’s work, access level or seniority, you can allow them to view and configure as much or 
as little as is required.
By default, the FortiGate has an admin administrator account that uses the super_admin profile.

super_admin profile

This profile has access to all components of FortiOS, including the ability to add and remove other system 
administrators. For certain administrative functions, such as backing up and restoring the configuration, super_admin 
access is required. To ensure that there is always a method to administer the FortiGate, the super_admin profile can't be 
deleted or modified.

Lower level administrator profiles can't backup or restore the FortiOS configuration.

The super_admin profile is used by the default admin account. It is recommended that you add a password and rename 
this account once you have set up your FortiGate. In order to rename the default account, a second admin account is 
required.

Creating customized profiles

To create a profile in the GUI:

 1. Go to System > Admin Profiles.


 2. Select Create New.

FortiOS 6.4.6 Administration Guide 767


Fortinet Technologies Inc.
System

 3. Configure the following settings:
 l Name.
 l Access permissions.
 l Override idle timeout.
 4. Select OK.

To create a profile in the CLI:

config system accprofile


edit "sample"
set secfabgrp read-write
set ftviewgrp read-write
set authgrp read-write
set sysgrp read-write
set netgrp read-write
set loggrp read-write
set fwgrp read-write
set vpngrp read-write
set utmgrp read-write
set wanoptgrp read-write
set wifi read-write
next
end

Edit profiles

To edit a profile in the GUI:

 1. Go to System > Admin Profiles.


 2. Choose the profile to be edited and select Edit.
 3. Select OK to save any changes made.

To edit a profile in the CLI:

config system accprofile


edit "sample"
set secfabgrp read
next
end

Delete profiles

To delete a profile in the GUI:

 1. Go to System > Admin Profiles.


 2. Choose the profile to be deleted and select Delete.
 3. Select OK.

FortiOS 6.4.6 Administration Guide 768


Fortinet Technologies Inc.
System

To delete a profile in the CLI:

config system accprofile


delete "sample"
end

Add a local administrator

By default, FortiGate has one super admin named admin. You can create more administrator accounts with different 
privileges.

To create an administrator account in the GUI:

 1. Go to System > Administrators.


 2. Select Create New > Administrator.
 3. Specify the Username.

Do not use the characters < > ( ) # " ' in the administrator username.


Using these characters in an administrator username might have a cross site scripting 
(XSS) vulnerability. 

 4. Set Type to Local User.


 5. Set the password and other fields.
 6. Click OK.

To create an administrator account in the CLI:

config system admin


edit <admin_name>
set accprofile <profile_name>
set vdom <vdom_name>
set password <password for this admin>
next
end

Remote authentication for administrators

Administrators can use remote authentication, such as LDAP, to connect to the FortiGate.
Setting up remote authentication for administrators includes the following steps:
 1. Configure the LDAP server on page 770
 2. Add the LDAP server to a user group on page 770
 3. Configure the administrator account on page 770

FortiOS 6.4.6 Administration Guide 769


Fortinet Technologies Inc.
System

Configure the LDAP server

To configure the LDAP server in the GUI:

 1. Go to User & Authentication > LDAP Servers and select Create New.


 2. Enter the server Name, Server IP address or Name.
 3. Enter the Common Name Identifier and Distinguished Name.
 4. Set the Bind Type to Regular and enter the Username and Password.
 5. Click OK.

To configure the LDAP server in the CLI:

config user ldap


edit <ldap_server_name>
set server <server_ip>
set cnid "cn"
set dn "dc=XYZ,dc=fortinet,dc=COM"
set type regular
set username "cn=Administrator,dc=XYA, dc=COM"
set password <password>
next
end

Add the LDAP server to a user group

After configuring the LDAP server, create a user group that includes that LDAP server.

To create a user group in the GUI:

 1. Go to User & Authentication > User Groups and select Create New.


 2. Enter a Name for the group.
 3. In the Remote groups section, select Create New.
 4. Select the Remote Server from the dropdown list.
 5. Click OK.

To create a user group in the CLI:

config user group


edit <Group_name>
set member "ldap_server_name"
next
end

Configure the administrator account

After configuring the LDAP server and adding it to a user group, create a new administrator. For this administrator, 
instead of entering a password, use the new user group and the wildcard option for authentication.

FortiOS 6.4.6 Administration Guide 770


Fortinet Technologies Inc.
System

To create an administrator in the GUI:

 1. Go to System > Administrators.


 2. Select Create New > Administrator.
 3. Specify the Username.
 4. Set Type to Match a user on a remote server group.
 5. In Remote User Group, select the user group you created.
 6. Select Wildcard.
The Wildcard option allows LDAP users to connect as this administrator.
 7. Select an Administrator Profile.
 8. Click OK.

To create an administrator in the CLI:

config system admin


edit <admin_name>
set remote-auth enable
set accprofile super_admin
set wild card enable
set remote-group ldap
end

Other methods of administrator authentication

Administrator accounts can use different methods for authentication, including RADIUS, TACACS+, and PKI.

RADIUS authentication for administrators

To use a RADIUS server to authenticate administrators, you must:
 l Configure the FortiGate to access the RADIUS server.
 l Create the RADIUS user group.
 l Configure an administrator to authenticate with a RADIUS server.

TACACS+ authentication for administrators

To use a TACACS+ server to authenticate administrators, you must:
 l Configure the FortiGate to access the TACACS+ server.
 l Create a TACACS+ user group.
 l Configure an administrator to authenticate with a TACACS+ server.

PKI certificate authentication for administrators

To use PKI authentication for an administrator, you must:
 l Configure a PKI user.
 l Create a PKI user group.
 l Configure an administrator to authenticate with a PKI certificate.

FortiOS 6.4.6 Administration Guide 771


Fortinet Technologies Inc.
System

Password policy

Brute force password software can launch more than just dictionary attacks. It can discover common passwords where a 
letter is replaced by a number. For example, if p4ssw0rd is used as a password, it can be cracked.
Using secure passwords is vital for preventing unauthorized access to your FortiGate. When changing the password, 
consider the following to ensure better security:
 l Do not use passwords that are obvious, such as the company name, administrator names, or other obvious words 
or phrases.
 l Use numbers in place of letters, for example: passw0rd.
 l Administrator passwords can be up to 64 characters.
 l Include a mixture of numbers, symbols, and upper and lower case letters.
 l Use multiple words together, or possibly even a sentence, for example: correcthorsebatterystaple.
 l Use a password generator.
 l Change the password regularly and always make the new password unique and not a variation of the existing 
password. for example, do not change from password to password1.
 l Make note of the password and store it in a safe place away from the management computer, in case you forget it; 
or ensure at least two people know the password in the event one person becomes unavailable. Alternatively, have 
two different admin logins.
FortiGate allows you to create a password policy for administrators and IPsec pre-shared keys. With this policy, you can 
enforce regular changes and specific criteria for a password policy, including:
 l Minimum length between 8 and 64 characters.
 l If the password must contain uppercase (A, B, C) and/or lowercase (a, b, c) characters.
 l If the password must contain numbers (1, 2, 3).
 l If the password must contain special or non-alphanumeric characters (!, @, #, $, %, ^, &, *, (, and )).
 l Where the password applies (admin or IPsec or both).
 l The duration of the password before a new one must be specified.
If you add a password policy or change the requirements on an existing policy, the next time that administrator logs into 
the FortiGate, the administrator is prompted to update the password to meet the new requirements before proceeding to 
log in. 
For information about setting passwords, see Default administrator password on page 783.

To create a system password policy the GUI:

 1. Go to System > Settings.


 2. In the Password Policy section, change the Password scope to Admin, IPsec, or Both.
 3. Configure the password policy options.
 4. Click Apply.

To create a system password policy the CLI:

config system password-policy


set status {enable | disable}
set apply-to {admin-password | ipsec-preshared-key}
set minimum-length <8-128>
set min-lower-case-letter <0-128>
set min-upper-case-letter <0-128>

FortiOS 6.4.6 Administration Guide 772


Fortinet Technologies Inc.
System

set min-non-alphanumeric <0-128>


set min-number <0-128>
set change-4-characters {enable | disable}
set expire-status {enable | disable}
set expire-day <1-999>
set reuse-password {enable | disable}
end

Admin profile option for diagnose access

The system-diagnostics command in an administrator profile can be used to control access to diagnose commands 
for global and VDOM level administrators.

To block an administrator's access to diagnose commands:

 1. Create an admin profile that cannot access diagnose commands:
config system accprofile
edit "nodiagnose"
...
set system-diagnostics disable
next
end

 2. Apply the profile to an administrator:
config system admin
edit "nodiag"
set accprofile "nodiagnose"
set vdom "root"
set password ********
next
end

 3. Log in as that administrator and confirm that they cannot access diagnose commands:
$ ?
config Configure object.
get Get dynamic and system information.
show Show configuration.
execute Execute static commands.
alias Execute alias commands.
exit Exit the CLI.

Associating a FortiToken to an administrator account

You can also associate FortiTokens with  administrator accounts.

To associate a FortiToken to an administrator account using the GUI:

 1. Ensure that you have successfully added your FortiToken serial number to FortiOS and that its status is Available.
 2. Go to System > Administrators. Edit the admin account. This example assumes that the account is fully configured 
except for two-factor authentication.
 3. Enable Two-factor Authentication.

FortiOS 6.4.6 Administration Guide 773


Fortinet Technologies Inc.
System

 4. From the Token dropdown list, select the desired FortiToken serial number.
 5. In the Email Address field, enter the administrator's email address.
 6. Click OK.

For a mobile token, click Send Activation Code to send the activation code to the configured 


email address. The admin uses this code to activate their mobile token. You must have 
configured an email service in System > Settings to send the activation code.

To associate a FortiToken to an administrator account using the CLI:

config system admin


edit <username>
set password "myPassword"
set two-factor fortitoken
set fortitoken <serial_number>
set email-to "[email protected]"
next
end

The fortitoken keyword is not visible until you select fortitoken for the two-factor option.

Before you can use a new FortiToken, you may need to synchronize it due to clock drift.

SSO administrators

SSO administrators are automatically created when the FortiGate acts as a SAML service provider (SP) with SAML
Single Sign-On enabled in the Security Fabric  settings. 
On the system login page, an administrator can log in with their username and password against the root FortiGate 
acting as the identity provider (IdP) in the Security Fabric. After the first successful login, this user is added to the 
administrators table (System > Administrators under Single Sign-On Administrator). The default profile selected is based 
on the SP  settings (Default admin profile). See Configuring a downstream FortiGate as an SP on page 204 for more 
information.

SSO administrators can be manually configured in FortiOS.

FortiOS 6.4.6 Administration Guide 774


Fortinet Technologies Inc.
System

To manually configure an SSO administrator:

 1. Go to System > Administrators and click Create New > SSO Admin.


 2. Enter the username.
 3. Select an administrator profile.
 4. Click OK.

Firmware

Fortinet periodically updates the FortiGate firmware to include new features and resolve important issues. After you have 
registered your FortiGate unit,  firmware updates can be downloaded from the Fortinet Customer Service & Support 
website.

Always back up the current configuration before installing new firmware. See Configuration 
backups on page 52.

Before you install any new firmware, follow the below steps:
 1. Review the Release Notes for a new firmware release.
 2. Review the Supported Upgrade Paths.
 3. Download a copy of the currently installed firmware, in case you need to revert to it. See Downloading a firmware 
image on page 776 and Downgrading to a previous firmware version on page 780 for details.
 4. Have a plan in place in case there is a critical failure, such as the FortiGate not coming back online after the update.
This could include having console access to the device (Connecting to the CLI on page 23), ensuring that you TFTP 
server is working (Installing firmware from system reboot on page 781), and preparing a USB drive (Restoring from 
a USB drive on page 782).
 5. Backup the current configuration, including local certificates. See Configuration backups on page 52 for details.
 6. Test the new firmware until you are satisfied that it applies to your configuration. See Testing a firmware version on 
page 778 and Controlled upgrade on page 783 for details.
Installing new firmware without reviewing release notes or testing the firmware may result in changes to settings and 
unexpected issues.

Only FortiGate admin users and administrators whose access profiles contain system read 
and write privileges can change the FortiGate firmware.

Firmware upgrade notifications

FortiGates with a firmware upgrade license that are connected to FortiGuard display upgrade notifications in the setup 
window, banner, and FortiGuard menu. The firmware notifications are enabled by default.

FortiOS 6.4.6 Administration Guide 775


Fortinet Technologies Inc.
System

To configure firmware notifications in the CLI:

config system global


set gui-firmware-upgrade-setup-warning {enable | disable}
end

To use the firmware upgrade notifications in the GUI:

 1. When you log in to FortiGate, the FortiGate Setup window includes an Upgrade firmware step.  C


  lick Begin.   

 2. Follow the steps in the Setup Progress, then click Review Firmware Upgrade.   

The System > Firmware page opens.


 3. Notifications appear below the Notification icon in the banner, and beside Firmware in the tree menu.   

Downloading a firmware image

Firmware images for all FortiGate units are available on the Fortinet Customer Service & Support website.

To download firmware:

 1. Log into the support site with your user name and password.
 2. Go to Download > Firmware Images.
A list of Release Notes is shown. If you have not already done so, download and review the Release Notes for the 
firmware version that you are upgrading your FortiGate unit to.
 3. Select the Download tab.
 4. Navigate to the folder for the firmware version that you are upgrading to.

FortiOS 6.4.6 Administration Guide 776


Fortinet Technologies Inc.
System

 5. Find your device model from the list. FortiWiFi devices have file names that start with FWF.
 6. Click HTTPS in the far right column to download the firmware image to your computer.

Firmware can also be downloaded using FTP, but as FTP is not an encrypted file transferring 
protocol, HTTPS downloading is recommended.

FortiOS image signing and verification

Official FortiOS firmware images are signed by the Fortinet CA. The BIOS checks the validity of an image when it is 
uploaded to the device. If the image is not signed by the Fortinet CA, a warning message is shown in the GUI.

Unsigned image:

Signed image:

This feature is implemented on all FortiGate F-series models and E-series models released in 2019 and later.

FortiOS 6.4.6 Administration Guide 777


Fortinet Technologies Inc.
System

Testing a firmware version

The integrity of firmware images downloaded from Fortinet's support portal can be verified using a file checksum. A file 
checksum that does not match the expected value indicates a corrupt file. The corruption could be caused by errors in 
transfer or by file modification. A list of expected checksum values for each build of released code is available on 
Fortinet’s support portal.
Image integrity is also verified when the FortiGate is booting up. This integrity check is done through a cyclic redundancy 
check (CRC). If the CRC fails, the FortiGate unit will encounter an error during the boot process.
Firmware images are signed and the signature is attached to the code as it is built. When upgrading an image, the 
running OS will generate a signature and compare it with the signature attached to the image. If the signatures do not 
match, the new OS will not load.

Testing before installation

FortiOS lets you test a new firmware image by installing the firmware image from a system reboot and saving it to system 
memory. After completing this procedure, the FortiGate unit operates using the new firmware image with the current 
configuration. The new firmware image is not permanently installed. The next time the FortiGate unit restarts, it operates 
with the originally installed firmware image using the current configuration. If the new firmware image operates 
successfully, you can install it permanently using the procedure explained in Upgrading the firmware. 
For this procedure, you must install a TFTP server that you can connect to from the FortiGate internal interface. The 
TFTP server should be on the same subnet as the internal interface. 

To test the new firmware version:

 1. Connect to the CLI using an RJ-45 to USB (or DB-9) or null modem cable. 
 2. Ensure that the TFTP server is running.
 3. Copy the new firmware image file to the root directory on the TFTP server.
 4. Ensure that the FortiGate unit can connect to the TFTP server using the execute ping command.
 5. Restart the FortiGate unit: execute reboot. The following message is shown:
This operation will reboot the system!
Do you want to continue? (y/n)
 6. Type y. As the FortiGate unit starts, a series of system startup messages appears.
 7. When the following messages appears:
Press any key to display configuration menu..........
Immediately press any key to interrupt the system startup.
You have only three seconds to press any key. If you do not press a key during this time, the FortiGate will reboot, 
and you will have to log in and repeat the execute reboot command.
If you successfully interrupt the startup process, the following messages appears:
[G]: Get firmware image from TFTP server.
[F]: Format boot device.
[B]: Boot with backup firmware and set as default
[C]: Configuration and information
[Q]: Quit menu and continue to boot with default firmware.
[H]: Display this list of options.
Enter G, F, Q, or H:
 8. Type G to get the new firmware image from the TFTP server. The following message appears: Enter TFTP
server address [192.168.1.168]:

FortiOS 6.4.6 Administration Guide 778


Fortinet Technologies Inc.
System

 9. Type the address of the TFTP server, then press Enter. The following message appears: Enter Local Address


[192.168.1.188]:
 10. Type the IP address of the FortiGate unit to connect to the TFTP server. 

The IP address must be on the same network as the TFTP server. 
Make sure that you do not enter the IP address of another device on this network.

The following message appears:
Enter File Name [image.out]:
 11. Enter the firmware image file name then press Enter. The TFTP server uploads the firmware image file to the 
FortiGate unit and the following message appears:
Save as Default firmware/Backup firmware/Run image without saving: [D/B/R]
 12. Type R. The FortiGate image is installed to system memory and the FortiGate unit starts running the new firmware 
image, but with its current configuration.
Test the new firmware image as required. When done testing, reboot the FortiGate unit, and the it will resume using the 
firmware that was running before you installed the test firmware.

Upgrading the firmware

Installing a new firmware image replaces the current antivirus and attack definitions, along with the definitions included 
with the firmware release that is being installing. After you install new firmware, make sure that the antivirus and attack 
definitions are up to date.

Back up your configuration before making any firmware changes.

To upgrade the firmware in the GUI:

 1. Log into the FortiGate GUI as the admin administrative user. 
 2. Go to System > Firmware.
 3. Under Upload Firmware, click Browse and locate the previously downloaded firmware image file (see Downloading 
a firmware image on page 776).
 4. Click Backup config and upgrade.   
The FortiGate unit backs up the current configuration to the management computer, uploads the firmware image 
file, upgrades to the new firmware version, and restarts. This process takes a few minutes.

To upgrade the firmware in the CLI:

 1. Make sure that the TFTP server is running. 
 2. Copy the new firmware image file to the root directory of the TFTP server. 
 3. Log into the CLI. 
 4. Ping the TFTP server to ensure that the FortiGate can connect to it: 
execute ping <tftp_ipv4>
 5. Enter the following command to copy the firmware image from the TFTP server to the FortiGate unit:
execute restore image tftp <filename> <tftp_ipv4>

FortiOS 6.4.6 Administration Guide 779


Fortinet Technologies Inc.
System

The FortiGate unit responds with the message: 
This operation will replace the current firmware version!
Do you want to continue? (y/n)
 6. Type y. The FortiGate unit uploads the firmware image file, upgrades to the new firmware version, and restarts. This 
process takes a few minutes. 
 7. Reconnect to the CLI.
 8. Update the antivirus and attack definitions:
execute update-now

Downgrading to a previous firmware version

Downgrading the firmware is not recommended.

This procedure downgrades the FortiGate to a previous firmware version. The backup configuration might not be able to 
be restored after downgrading.

To downgrade to a previous firmware version in the GUI:

 1. Log into the FortiGate GUI as the admin administrative user. 
 2. Go to System > Firmware.
 3. Under Upload Firmware, click Browse and locate the previously downloaded firmware image file (see Downloading 
a firmware image on page 776).
 4. Click Confirm version downgrade.
 5. Click Backup config and downgrade.   
The FortiGate unit backs up the current configuration to the management computer, uploads the firmware image 
file, upgrades to the new firmware version, and restarts. This process takes a few minutes.

To downgrade to a previous firmware version in the CLI:

 1. Make sure that the TFTP server is running. 
 2. Copy the new firmware image file to the root directory of the TFTP server. 
 3. Log into the CLI. 
 4. Ping the TFTP server to ensure that the FortiGate can connect to it: 
execute ping <tftp_ipv4>
 5. Enter the following command to copy the firmware image from the TFTP server to the FortiGate unit:
execute restore image tftp <filename> <tftp_ipv4>
The FortiGate unit responds with the message: 
This operation will replace the current firmware version!
Do you want to continue? (y/n)
 6. Type y. The FortiGate unit uploads the firmware image file, then a message similar to the following is shown:
Get image from tftp server OK.
Check image OK.
This operation will downgrade the current firmware version!
Do you want to continue? (y/n)
 7. Type y. The FortiGate unit downgrades to the old firmware version and restarts. This process takes a few minutes. 
 8. Reconnect to the CLI.

FortiOS 6.4.6 Administration Guide 780


Fortinet Technologies Inc.
System

 9. Update the antivirus and attack definitions:
execute update-now

Installing firmware from system reboot

In the event that the firmware upgrade does not load properly and the FortiGate unit will not boot, or continuously 
reboots, it is best to perform a fresh install of the firmware from a reboot using the CLI. If configured, the firmware can 
also be automatically installed from a USB drive; see Restoring from a USB drive on page 782 for details.
This procedure installs a firmware image and resets the FortiGate unit to factory default settings. You can use this 
procedure to upgrade to a new firmware version, revert to an older firmware version, or re-install the current firmware.
To use this procedure, you must connect to the CLI using the FortiGate console port and a RJ-45 to USB (or DB-9), or 
null modem cable. You must also  install a TFTP server that you can connect to from the FortiGate internal interface. The 
TFTP server should be on the same subnet as the internal interface. 
Before beginning this procedure, ensure that you backup the FortiGate unit configuration. See Configuration backups on 
page 52 for details. If you are reverting to a previous FortiOS version, you might not be able to restore the previous 
configuration from the backup configuration file. 
Installing firmware replaces your current antivirus and attack definitions, along with the definitions included with the 
firmware release you are installing. After you install new firmware, make sure that antivirus and attack definitions are up 
to date.

To install firmware from a system reboot:

 1. Connect to the CLI using the RJ-45 to USB (or DB-9) or null modem cable.
 2. Ensure that the TFTP server is running.
 3. Copy the new firmware image file to the root directory of the TFTP server. 
 4. Ensure that the FortiGate unit can connect to the TFTP server using the execute ping command.
 5. Restart the FortiGate unit: execute reboot. The following message is shown:
This operation will reboot the system!
Do you want to continue? (y/n)
 6. Type y. As the FortiGate unit starts, a series of system startup messages appears.
 7. When the following messages appears:
Press any key to display configuration menu..........
Immediately press any key to interrupt the system startup.
You have only three seconds to press any key. If you do not press a key during this time, the FortiGate will reboot, 
and you will have to log in and repeat the execute reboot command.
If you successfully interrupt the startup process, the following messages appears:
[C]: Configure TFTP parameters.
[R]: Review TFTP parameters.
[T]: Initiate TFTP firmware transfer.
[F]: Format boot device.
[I]: System information.
[B]: Boot with backup firmware and set as default.
[Q]: Quit menu and continue to boot.
[H]: Display this list of options.

Enter C,R,T,F,I,B,Q,or H:

FortiOS 6.4.6 Administration Guide 781


Fortinet Technologies Inc.
System

 8. If necessary, type C to configure the TFTP parameters, then type Q to return to the previous menu:
[P]: Set firmware download port.
[D]: Set DHCP mode.
[I]: Set local IP address.
[S]: Set local subnet mask.
[G]: Set local gateway.
[V]: Set local VLAN ID.
[T]: Set remote TFTP server IP address.
[F]: Set firmware file name.
[E]: Reset TFTP parameters to factory defaults.
[R]: Review TFTP parameters.
[N]: Diagnose networking(ping).
[Q]: Quit this menu.
[H]: Display this list of options.

Enter P,D,I,S,G,V,T,F,E,R,N,Q,or H:

The IP address must be on the same network as the TFTP server. 
Make sure that you do not enter the IP address of another device on this network.

 9. Type T get the new firmware image from the TFTP server.
The FortiGate unit loads the firmware.
 10. Save the firmware as the default (D) or backup (B) firmware image, or run the image without saving it (R).
The FortiGate unit  installs the new firmware image and restarts.  The installation might take a few minutes to 
complete.

Restoring from a USB drive

The FortiGate firmware can be manually restored from a USB drive, or installed automatically from a USB drive after a 
reboot.

To restore the firmware from a USB drive:

 1. Copy the firmware file to the root directory on the USB drive.
 2. Connect the USB drive to the USB port of the FortiGate device.
 3. Connect to the FortiGate CLI using the RJ-45 to USB (or DB-9) or null modem cable.
 4. Enter the following command:
execute restore image usb <filename>
The FortiGate unit responds with the following message:
This operation will replace the current firmware version! Do you want to continue?
(y/n)
 5. Type y. The FortiGate unit restores  the firmware and restarts. This process takes a few minutes. 
 6. Update the antivirus and attack definitions:
execute update-now

To install firmware automatically from a USB drive:

 1. Go to System > Settings.


 2. In the Start Up Settings section, enable Detect firmware and enter the name of the firmware file.

FortiOS 6.4.6 Administration Guide 782


Fortinet Technologies Inc.
System

 3. Copy the firmware file to the root directory on the USB drive.
 4. Connect the USB drive to the USB port of the FortiGate device.
 5. Reboot the FortiGate device.

Controlled upgrade

Using a controlled upgrade, you can upload a new version of the FortiOS firmware to a separate partition in the FortiGate 
memory for later upgrade. The FortiGate unit can be configured so that when it is rebooted, it will automatically load the 
new firmware. Using this option, you can stage multiple FortiGate units to  upgrade simultaneously  using FortiManager or 
a script.

To load the firmware for later installation:

execute restore secondary-image {ftp | tftp | usb} <filename_str>

To set the FortiGate unit so that when it reboots, the new firmware is loaded:

execute set-next-reboot {primary | secondary}

where {primary | secondary} is the partition with the preloaded firmware.

Settings

The default administrator password should be configured immediately after the FortiGate is installed, see Default 
administrator password on page 783.
After that, there are several system settings that should also be configured in System > Settings:
 l Changing the host name on page 784
 l Setting the system time on page 785
 l Configuring ports on page 788
 l Setting the idle timeout time on page 789
 l Setting the password policy on page 789
 l Changing the view settings on page 789
 l Setting the administrator password retries and lockout time on page 790
 l TLS configuration on page 791
 l Controlling return path with auxiliary session on page 791
 l Email alerts on page 795

Default administrator password

By default, your FortiGate has an administrator account set up with the username admin and no password. In order to 
prevent unauthorized access to the FortiGate, it is highly recommended that you add a password to this account.

FortiOS 6.4.6 Administration Guide 783


Fortinet Technologies Inc.
System

In FortiOS 6.2.1 and later, adding a password to the admin administrator is mandatory. You 
will be prompted to configured it the first time you log in to the FortiGate using that account, 
after a factory reset, and after a new image installation.

To change the default password in the GUI:

 1. Go to System > Administrators. 


 2. Edit the admin account.
 3. Click Change Password.
 4. If applicable, enter the current password in the Old Password field.
 5. Enter a password in the New Password field, then enter it again in the Confirm Password field.
 6. Click OK.

To change the default password in the CLI:

config system admin


edit admin
set password <password>
next
end

It is also recommended that you change the user name of this account; however, since you 
cannot change the user name of an account that is currently in use, a second administrator 
account must be created in order to do this. 

Changing the host name

The FortiGate host name is shown in the Hostname field in the System Information widget on a dashboard, as the 
command prompt in the CLI, as the SNMP system name, as the device name on FortiGate Cloud, and other places. If 
the FortiGate is in an HA cluster, use a unique host name to distinguish it from the other devices in the cluster.
An administrator requires System > Configuration read/write access to edit the host name. See Administrator profiles on 
page 767 for details.

To change the host name in the GUI:

 1. Go to System > Settings.


 2. In the Host name field, enter a new name.
 3. Click Apply.

To change the host name in the CLI:

config system global


set hostname <hostname>
end

FortiOS 6.4.6 Administration Guide 784


Fortinet Technologies Inc.
System

Setting the system time

You can either manually set the FortiOS system time, or configure the device to automatically keep its system time 
correct by synchronizing with a Network Time Protocol (NTP) server.
Daylight savings time is enabled by default, and can only be configured in the CLI.

For many features to work, including scheduling, logging, and SSL-dependent features, the 
FortiOS system time must be accurate.

To configure the date and time in the GUI:

 1. Go to System > Settings.


 2. In the System Time section, configure the following settings to either manually set the time or use an NTP server:

Time Zone Select a time zone from the list. This should be the time zone that the 


FortiGate is in.

Set Time Select to either Synchronize with an NTP Server, or use Manual settings.

Synchronize with To use an NTP server other than FortiGuard, the CLI must be used.


an NTP Server In the Sync interval field, enter how often, in minutes, that the device 
synchronizes its time with the NTP server. 

Manual settings Manually enter the Date, Hour (in 24-hour format), Minute, and Second in their 


fields.

Setup device as local NTP Enable to configure the FortiGate as a local NTP server.


server In the Listen on Interfaces field, set the interface or interfaces that the 
FortiGate will listen for NTP requests on.

 3. Click Apply.

To configure the date and time in the CLI:

 1. Configure the timezone and daylight savings time:
config system global
set timezone <integer>
set dst {enable | disable}
end

 2. Either manually configure the date and time, or configure an NTP server:
Manual:
execute date <yyyy-mm-dd>
execute time <hh:mm:ss>

NTP server:
config system ntp
set ntpsync enable
set type {fortiguard | custom}

FortiOS 6.4.6 Administration Guide 785


Fortinet Technologies Inc.
System

set syncinterval <integer>


set source-ip <ip_address>
set source-ip6 <ip6_address>
set server-mode {enable | disable}
set interface <interface>
set authentication {enable | disable}
set key-type {MD5 | SHA1}
set key <password>
set key-id <integer>
config ntpserver
edit <server_id>
set server <ip_address or hostname>
set ntpv3 {enable | disable}
set authentication {enable | disable}
set key <password>
set key-id <integer>
next
end
end

SHA-1 authentication support (for NTPv4)

SHA-1 authentication support allows the NTP client to verify that severs are known and trusted and not intruders 
masquerading (accidentally or intentionally) as legitimate servers. In cryptography, SHA-1 is a cryptographic hash 
algorithmic function.

SHA-1 authentication support is only available for NTP clients, not NTP servers.

To configure authentication on a FortiGate NTP client:

config system ntp


set ntpsync enable
set type custom
set syncinterval 1
config ntpserver
edit "883502"
set server "10.1.100.11"
set authentication enable
set key
ENCi9NmcqsV3xBJvOkgIL3lFxA8mnNs2XKfB7spOQoUw4cm8FOOP0nrCbqx6rJ+om95+hVUHpaVZmepdd4KznPlAHNiu
liPgPOk
set key-id 1
next
end
end

Command Description
authentication <enable | Enable/disable MD5/SHA1 authentication (default = disable).
disable>

FortiOS 6.4.6 Administration Guide 786


Fortinet Technologies Inc.
System

Command Description
key <passwd> Key for MD5/SHA1 authentication. Enter a password value.
key-id <integer> Key ID for authentication. Enter an integer value from 0 to 4294967295.

To confirm that NTP authentication is set up correctly:

# diagnose sys ntp status


synchronized: yes, ntpsync: enabled, server-mode: disabled
ipv4 server(10.1.100.11) 10.1.100.11 -- reachable(0xff) S:4 T:6 selected
server-version=4, stratum=3

If NTP authentication is set up correctly, the server version is equal to 4. 

PTPv2

Precision time protocol (PTP) is used to synchronize network clocks. It is best suited to situations where time accuracy is 
of the utmost importance, as it supports accuracy in the sub-microsecond range. Conversely, NTP accuracy is in the 
range of milliseconds or tens of milliseconds. 
The following CLI commands are available:
config system ptp
set status {enable | disable}
set mode {multicast | hybrid}
set delay-mechanism {E2E | P2P}
set request-interval <integer>
set interface <interface>
end

Command Description

status {enable | disable} Enable or disable the FortiGate system time by synchronizing with a PTP server 
(default = disable).

mode {multicast | hybrid} Use multicast or hybrid transmission (default = multicast).

delay-mechanism {E2E | P2P} Use end-to-end (E2E) or peer-to-peer (P2P) delay detection (default = E2E).

request-interval <integer> The logarithmic mean interval between the delay request messages sent by the 
client to the server in seconds (default = 1).

interface <interface> The interface that the PTP client will reply through.

Sample configuration

This example uses the following topology:

FortiOS 6.4.6 Administration Guide 787


Fortinet Technologies Inc.
System

To configure a FortiGate to act as a PTP client that synchronizes itself with a Linux PTP server:

 1. Enable debug messages:
# diagnose debug application ptpd -1
This command will provide details to debug the PTP communication with the server.
 2. Check the system date:
# execute date
current date is: 2020-01-01
 3. Configure PTP in global mode:
config system ptp
set status enable
set interface wan2
end
 4. Check the system date again after synchronization with the PTP server:
# execute date
current date is: 2020-01-14

Configuring ports

To improve security, the default ports for administrative connections to the FortiGate can be changed. Port numbers 
must be unique. If a conflict exists with a particular port, a warning message is shown.
When connecting to the FortiGate after a port has been changed, the port number be included, for example: 
https://192.168.1.99:100.

To configure the ports in the GUI:

 1. Go to System > Settings.


 2. In the Administration Settings section, set the HTTP, HTTPS, SSH, and Telnet ports.
 3. Enable Redirect to HTTPS to prevent HTTP from being used by administrators.
 4. Click Apply.

To configure the ports in the CLI:

config system global


set admin-port <port>
set admin-sport <port>
set admin-https-redirect {enable | disable}
set admin-ssh-port <port>
set admin-telnet-port <port>
end

Custom default service port range

The default service port range can be customized using the following CLI command:
config system global
set default-service-source-port <port range>
end

Where <port range> is the new default service port range, that can have a minimum value of 0 and a maximum value 
up to 65535. The default value is 1 to 65535.

FortiOS 6.4.6 Administration Guide 788


Fortinet Technologies Inc.
System

This change effects the TCP/UDP protocol.

Setting the idle timeout time

The idle timeout period is the amount of time that an administrator will stay logged in to the GUI without any activity. This 
is to prevent someone from accessing the FortiGate if the management PC is left unattended. By default, it is set to five 
minutes.

A setting of higher than 15 minutes will have a negative effect on a security rating score. See  
Security rating on page 220 for more information.

To change the idle timeout in the GUI:

 1. Go to System > Settings.


 2. In the Administration Settings section, set the Idle timeout to up to 480 minutes.
 3. Click Apply.

To change the idle timeout in the CLI:

config system global


set admintimeout <integer>
end

Setting the password policy

A password policy can be created for administrators and IPsec pre-shared keys. See Password policy on page 772 for 
information.

Changing the view settings

The view settings change the look and language of the FortiOS GUI.

To change the view settings in the GUI:

 1. Go to System > Settings.


 2. In the View Settings section, configure the following settings:

Language Set the GUI language: English, French, Spanish, Portuguese, Japanese, 
Traditional Chinese, Simplifies Chinese, Korean.

Lines per page Set the number of lines per page, from 20 to 100.

FortiOS 6.4.6 Administration Guide 789


Fortinet Technologies Inc.
System

Theme Set the theme color: Green, Red, Blue, Melongene, or Mariner.

Date/Time Display Set the date and time to display using the FortiGate's or the browser's 


timezone. 

NGFW Mode Set the NGFW mode to either Profile-based (default) or Policy-based.


If Policy-based is selected, the SSL/SSH Inspection profile must be selected.

 3. Click Apply.

To change the view settings in the CLI:

config system global


set language {english | french | spanish | portuguese | japanese | trach | simch |
korean}
set gui-lines-per-page <integer>
set gui-theme {green | red | blue | melongene | mariner}
set gui-date-time-source {system | browser}
end
config system settings
set ngfw-mode {profile-based | policy-based}
set ssl-ssh-profile {certificate-inspection | custom-deep-inspection | deep-inspection |
no-inspection}
end

Setting the administrator password retries and lockout time

By default, the number password retry attempts is set to three, allowing the administrator a maximum of three attempts 
at logging in to their account before they are locked out for a set amount of time (by default, 60 seconds).
The number of attempts and the default wait time before the administrator can try to enter a password again can be 
configured using the CLI.
A maximum of ten retry attempts can be configured, and the lockout period can be 1 to 2147483647 seconds (over 68 
years). The higher the retry attempts, the higher the risk that someone might be able to guess the password.

To configure the lockout options:

config system global


set admin-lockout-threshold <failed_attempts>
set admin-lockout-duration <seconds>
end

For example, to set the number of retry attempts to 1, and the lockout time to 5 minutes:
config system global
set admin-lockout-threshold 1
set admin-lockout-duration 300
end

If the time span between the first failed log in attempt and the lockout threshold failed attempt 
is less than lockout time, the lockout will be triggered. 

FortiOS 6.4.6 Administration Guide 790


Fortinet Technologies Inc.
System

TLS configuration

The minimum TLS version that is used for local out connections from the FortiGate can be configured in the CLI:
config system global
set ssl-min-proto-version {SSLv3 | TLSv1 | TLSv1-1 | TLSv1-2 | TLSv1-3}
end

By default, the minimum version is TLSv1.2. The FortiGate will try to negotiate a connection using the configured version 
or higher. If the server that FortiGate is connecting to does not support the version, then the connection will not be made. 
Some FortiCloud and FortiGuard services do not support TLSv1.3.
Minimum SSL/TLS versions can also be configured individually for the following settings, not all of which support 
TLSv1.3:

Setting CLI

Email server config system email-server

Certificate config vpn certificate setting

FortiSandbox config system fortisandbox

FortiGuard config log fortiguard setting

FortiAnalyzer config log fortianalyzer setting

Syslog config log syslogd setting

User Authentication config user setting

LDAP server config user ldap

POP3 server config user pop3

Exchange server config user exchange

A minimum (ssl-min-proto-ver) and a maximum (ssl-max-proto-ver) version can be configured for SSL VPN. 
See TLS 1.3 support on page 1670

Controlling return path with auxiliary session

When multiple incoming or outgoing interfaces are used in SD-WAN or for load balancing, changes to routing or 
incoming or return traffic interfaces impacts how an existing sessions handles the traffic. In FortiOS 6.2.3 and later, 
auxiliary sessions can be used to handle these changes to traffic patterns.
 l In FortiOS 6.0 and earlier, the auxiliary session feature is not supported.
 l In FortiOS 6.2.0 to 6.2.2, the auxiliary session feature is permanently enabled.
 l In FortiOS 6.2.3 and later, the auxiliary session feature is disabled by default, and can be enabled if required.

To enable the auxiliary session feature:

config system settings


set auxiliary-session {enable | disable*}
end

FortiOS 6.4.6 Administration Guide 791


Fortinet Technologies Inc.
System

Scenarios

Incoming traffic is from the client to the server. Return traffic is from the server to the client.

Scenario 1 - Return traffic returns on the original outgoing interface

In this scenario, a session is established between port1 and port3. When the return traffic hits port3:

Auxiliary sessions disabled:

The reply to the client egresses on the original incoming interface, port1. If policy routes or SD-WAN rules are 
configured, they are not checked.

Auxiliary sessions enabled:

The reply to the client egresses on the best route in the routing table:
 l If the best route is port1, then it will egress on port1.
 l If the best route is port2, then it will egress on port2.

If policy routes or SD-WAN rules are configured, they are not checked.

Scenario 2 - Return traffic returns on an interfaces other than the original outgoing interfaces

In this scenario, a session is established between port1 and port3. When the return traffic hits port4:

Auxiliary sessions disabled:

 l The session is dirtied and then gets refreshed, and interfaces on the session are updated.
 l If there is a high traffic volume or flapping between the interfaces, the CPU usage increases.

Auxiliary sessions enabled:

An auxiliary session is created for the existing session, and traffic returns to the client as normal on the auxiliary session.

Scenario 3 - Incoming traffic enters on an interfaces other than the original incoming interfaces

In this scenario, a session is established between port1 and port3. When the incoming traffic hits port2:

Auxiliary sessions disabled:

The session is dirtied and then gets refreshed, and interfaces on the session are updated.

FortiOS 6.4.6 Administration Guide 792


Fortinet Technologies Inc.
System

Auxiliary sessions enabled:

An auxiliary session is created for the existing session, and traffic is forwarded to the server as normal on the auxiliary 
session.

Scenario 4 - the routing table is changed

In this scenario, a session has been established between port1 and port3, when a new route on port4 is updated as the 
route to the server.

Auxiliary sessions disabled:

As long as there is a route to the destination, the session will not be dirtied or refreshed. Even though there is a better 
route, traffic continues on the original path between port1 and port3.

Auxiliary sessions enabled:

The session is dirtied and then gets refreshed, and interfaces on the session are updated.

Effect on NPU offloading sessions

When the auxiliary session feature is disabled, there is always one session. If the incoming or return interface changes, 
the FortiGate marks the session as dirty and updates the session's interfaces. This cannot be done by the NPU, so the 
session is not offloaded to the NPU, and is processed by the CPU instead. If Equal-Cost Multi-Path (ECMP) causes the 
interface to keep changing, then it will use significant CPU resources.
When the auxiliary session feature is enabled and the incoming or return interface changes, it creates an auxiliary 
session, and all traffic can continue to be processed by the NPU.

Verification

When an auxiliary, or reflect, session is created, it will appear as a reflect session below the existing session:
# diagnose sys session list
session info: proto=17 proto_state=00 duration=111 expire=175 timeout=0 flags=00000000
socktype=0 sockport=0 av_idx=0 use=4
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ vlan_cos=0/255
state=may_dirty npu
statistic(bytes/packets/allow_err): org=131/4/1 reply=0/0/0 tuples=2
tx speed(Bps/kbps): 0/0 rx speed(Bps/kbps): 0/0
orgin->sink: org pre->post, reply pre->post dev=36->38/38->36 gwy=10.1.2.3/0.0.0.0
hook=pre dir=org act=noop 10.1.100.22:51926->172.16.204.44:5001(0.0.0.0:0)
hook=post dir=reply act=noop 172.16.204.44:5001->10.1.100.22:51926(0.0.0.0:0)
src_mac=90:6c:ac:19:19:58
misc=0 policy_id=1 auth_info=0 chk_client_info=0 vd=2
serial=00002b11 tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=0 sdwan_service_id=0
rpdb_link_id=00000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=0x000400

FortiOS 6.4.6 Administration Guide 793


Fortinet Technologies Inc.
System

npu info: flag=0x91/0x00, offload=8/0, ips_offload=0/0, epid=129/0, ipid=142/0,


vlan=0x0016/0x0000
vlifid=142/0, vtag_in=0x0016/0x0000 in_npu=1/0, out_npu=1/0, fwd_en=0/0, qid=4/0
no_ofld_reason:
reflect info 0:
dev=37->38/38->37
npu_state=0x000400
npu info: flag=0x91/0x00, offload=8/0, ips_offload=0/0, epid=129/0, ipid=142/0,
vlan=0x0017/0x0000
vlifid=142/0, vtag_in=0x0017/0x0000 in_npu=1/0, out_npu=1/0, fwd_en=0/0, qid=4/0
total reflect session num: 1
total session 1

When a session is dirtied, a dirty flag is added to it:
# diagnose sys session list
session info: proto=17 proto_state=00 duration=28 expire=152 timeout=0 flags=00000000
socktype=0 sockport=0 av_idx=0 use=3
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ vlan_cos=0/255
state=dirty may_dirty npu
statistic(bytes/packets/allow_err): org=68/2/1 reply=0/0/0 tuples=2
tx speed(Bps/kbps): 2/0 rx speed(Bps/kbps): 0/0
orgin->sink: org pre->post, reply pre->post dev=0->0/0->0 gwy=0.0.0.0/0.0.0.0
hook=pre dir=org act=noop 10.1.100.22:51926->172.16.204.44:5001(0.0.0.0:0)
hook=post dir=reply act=noop 172.16.204.44:5001->10.1.100.22:51926(0.0.0.0:0)
src_mac=90:6c:ac:19:19:58 dst_mac=02:6c:ac:5c:c6:f9
misc=0 policy_id=1 auth_info=0 chk_client_info=0 vd=2
serial=00002b2c tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=0 sdwan_service_id=0
rpdb_link_id=00000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=0x000400
npu info: flag=0x00/0x00, offload=0/0, ips_offload=0/0, epid=0/0, ipid=0/0,
vlan=0x0000/0x0000
vlifid=0/0, vtag_in=0x0000/0x0000 in_npu=0/0, out_npu=0/0, fwd_en=0/0, qid=0/0
no_ofld_reason:
total session 1

When an auxiliary session is created, NPU offloading will continue in the reflect session:
# diagnose sys session list
session info: proto=17 proto_state=01 duration=169 expire=129 timeout=0 flags=00000000
socktype=0 sockport=0 av_idx=0 use=4
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ vlan_cos=0/255
state=may_dirty npu
statistic(bytes/packets/allow_err): org=131/4/1 reply=66/2/1 tuples=2
tx speed(Bps/kbps): 0/0 rx speed(Bps/kbps): 0/0
orgin->sink: org pre->post, reply pre->post dev=36->38/38->36 gwy=10.1.2.3/172.17.2.1
hook=pre dir=org act=noop 10.1.100.22:51926->172.16.204.44:5001(0.0.0.0:0)
hook=post dir=reply act=noop 172.16.204.44:5001->10.1.100.22:51926(0.0.0.0:0)
src_mac=90:6c:ac:19:19:58
misc=0 policy_id=1 auth_info=0 chk_client_info=0 vd=2
serial=00002b11 tos=ff/ff app_list=0 app=0 url_cat=0

FortiOS 6.4.6 Administration Guide 794


Fortinet Technologies Inc.
System

sdwan_mbr_seq=0 sdwan_service_id=0
rpdb_link_id=00000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=0x000c00
npu info: flag=0x91/0x81, offload=8/8, ips_offload=0/0, epid=129/142, ipid=142/128,
vlan=0x0016/0x0016
vlifid=142/128, vtag_in=0x0016/0x0016 in_npu=1/1, out_npu=1/1, fwd_en=0/0, qid=4/4
reflect info 0:
dev=37->38/38->37
npu_state=0x000400
npu info: flag=0x91/0x00, offload=8/0, ips_offload=0/0, epid=129/0, ipid=142/0,
vlan=0x0017/0x0000
vlifid=142/0, vtag_in=0x0017/0x0000 in_npu=1/0, out_npu=1/0, fwd_en=0/0, qid=4/0
total reflect session num: 1
total session 1

Email alerts

Alert emails are used to notify administrators about events on the FortiGate device, allowing a quick response to any 
issues.
There are two methods that can be used to configure email alerts:
 l Automation stitches on page 796
 l Alert emails on page 798

The FortiGate has a default SMTP server, notification.fortinet.com, that provides secure mail service with SMTPS. It is 
used for all emails that are sent by the FortiGate, including alert emails, automation stitch emails, and FortiToken Mobile 
activations. You can also configure a custom email service.

To configure a custom email service in the GUI:

 1. Go to System > Settings.


 2. In the Email Service section, enable Use custom settings.
 3. Configure the following settings:

SMTP Server Enter the address or name of the SMTP server, such as smtp.example.com.

Port If required, select Specify and enter a specific port number. The default is port 
465.

Authentication If required by the email server, enable authentication.
If enabled, enter the Username and Password.

Security Mode Set the security mode: None, SMTPS, or STARTTLS.

Default Reply To Optionally, enter the reply to email address, such as [email protected].


This address will override the from address that is configured for an alert 
email.

FortiOS 6.4.6 Administration Guide 795


Fortinet Technologies Inc.
System

 4. Click Apply.

To configure a custom email service in the CLI:

config system email-server


set reply-to "[email protected]"
set server "smtp.fortinet.net"
set port 465
set authenticate enable
set username "fortigate"
set password **********
set security smtps
end

Automation stitches

Automation stitches can be configured to send emails based on a variety of triggers, giving you control over the events 
that cause an alert, and who gets alerted. For more information, see Automation stitches on page 225.
In this example, the default mail service sends an email to two recipients when there is a configuration change or an 
Admin login failed event occurs.

To configure the automation stitch in the GUI:

 1. On the root FortiGate, go to Security Fabric > Automation and click Create New.


 2. Enter a name for the stitch, such as Admin Fail.
 3. In the Trigger section, select FortiOS Event Log.
 4. Click in the Event field, and in the slide out pane, search for and select Admin login failed.
 5. In the Action section, select Email.
 6. Configure the Email settings:
 a. In the To field, click the plus icon, then enter the two email recipients' addresses, such as [email protected] 
and [email protected].
 b. Enter the Email subject, such as Admin log in failed.
 c. Edit the Email body as required. By default, the email body will include all the fields from the log event that 
triggered the stitch.

FortiOS 6.4.6 Administration Guide 796


Fortinet Technologies Inc.
System

 7. Click OK.
 8. Create a second stitch, selecting Configuration Change as the trigger.

To configure the automation stitch in the CLI:

 1. Create automation actions to send the email messages:
config system automation-action
edit "Config Change_email"
set action-type email
set email-to "[email protected]" "[email protected]"
set email-subject "Configuration Change Detected"
next
edit "Admin Fail_email"
set action-type email
set email-to "[email protected]" "[email protected]"
set email-subject "Admin log in failed"
next
end

 2. Create the automation triggers:
config system automation-trigger
edit "Config Change"
set event-type config-change
next
edit "Admin Fail"
set event-type event-log
set logid 32002
next
end

 3. Create the automation stitches:

FortiOS 6.4.6 Administration Guide 797


Fortinet Technologies Inc.
System

config system automation-stitch


edit "Config Change"
set trigger "Config Change"
set action "Config Change_email"
next
edit "Admin Fail"
set trigger "Admin Fail"
set action "Admin Fail_email"
next
end

Alert emails

When configuring an alert email, you can define the threshold when an issue becomes critical and requires attention. 
When the threshold is reached, an email is sent to up to three recipients on the configured schedule to notify them of the 
issue.
Alert email messages can be configured in the CLI. For more information on the available CLI commands, see Configure 
alert email settings.
In this example, the FortiGate is configured to send email messages to two addresses, [email protected] and 
[email protected], every two minutes when multiple intrusions, administrator log in or out events, or configuration 
changes occur.

To configure an alert email:

config alertemail setting


set username [email protected]
set mailto1 [email protected]
set mailto2 [email protected]
set filter-mode category
set email-interval 2
set IPS-logs enable
set configuration-changes-logs enable
set admin-login-logs enable
end

Virtual Domains

Virtual Domains (VDOMs) are used to divide a FortiGate  into two or more virtual units that function independently. 
VDOMs can provide separate security policies and, in NAT mode, completely separate configurations for routing and 
VPN services for each connected network.
There are two VDOM modes:
 l Split-task VDOM mode: One VDOM is used only for management, and the other is used to manage traffic. See 
Split-task VDOM mode on page 801.
 l Multi VDOM mode: Multiple VDOMs can be created and managed as independent units. See Multi VDOM mode on 
page 804.
By default, most FortiGate units support 10 VDOMs, and many FortiGate models support purchasing a license key to 
increase the maximum number.

FortiOS 6.4.6 Administration Guide 798


Fortinet Technologies Inc.
System

Global settings are configured outside of a VDOM. They effect the entire FortiGate, and include settings such as 
interfaces, firmware, DNS, some logging and sandboxing options, and others. Global settings should only be changed 
by top level administrators.

Enable the following to prevent accidentally creating VDOMs in the CLI:
config system global
set edit-vdom-prompt enable
end

The FortiGate displays a prompt to confirm before the VDOM is created.

Switching VDOM modes

Current VDOM mode New VDOM mode Rule

No VDOM Split-task VDOM Allowed

Split-task VDOM No VDOM Allowed

No VDOM Multi VDOM Allowed only if the FortiGate is not a member 


of a Security Fabric. See Configuring the root 
FortiGate and downstream FortiGates on 
page 130 for more information.

Multi VDOM No VDOM Allowed

Split-task VDOM Multi VDOM Allowed only if the FortiGate is not a member 


of a Security Fabric. See Configuring the root 
FortiGate and downstream FortiGates on 
page 130 for more information.

Multi VDOM Split-task VDOM Not Allowed. User must first switch to No


VDOM

Global and per-VDOM resources

Global and per-VDOM resources can be configured when the FortiGate is in Split-Task or Multi VDOM mode. Global 
resources apply to resources that are shared by the whole FortiGate, while per-VDOM resources are specific to each 
VDOM.
By default, all per-VDOM resource settings are set to have no limits. This means that any single VDOM can use all of the 
FortiGate device's resources. This could deprive other VDOMs of the resources that they require, to the point that could 
be unable to function. We recommend settings maximum values on the resources that are vital to you.

FortiOS 6.4.6 Administration Guide 799


Fortinet Technologies Inc.
System

To configure global resources:

 1. In the Global VDOM, go to System > Global Resources.


 2. Enable the resource's override in the Override Maximum column, then enter the override value.   

 3. Click Apply.
To reset the all of the override values, click Reset All.

To configure per-VDOM resources:

 1. In the Global VDOM, go to System > VDOM.


 2. Edit the VDOM whose resources need to be configured.
 3. Enable the resource's override in the Override Maximum column, then enter the override value.
 4. Optionally, enter a value in the Guaranteed column.   

 5. Click OK.
To reset the all of the override values, click Reset All.

FortiOS 6.4.6 Administration Guide 800


Fortinet Technologies Inc.
System

Split-task VDOM mode

In split-task VDOM mode, the FortiGate has two VDOMs: the management VDOM (root) and the traffic VDOM (FG-
traffic).

The management VDOM is used to manage the FortiGate, and cannot be used to process traffic.
The following GUI sections are available when in the management VDOM:
 l The Status dashboard
 l Security Fabric topology and settings (read-only, except for HTTP Service settings)
 l Interface and static route configuration
 l FortiClient configuration
 l Replacement messages
 l Certificates
 l System events
 l Log and email alert settings
 l Threat weight definitions
The traffic VDOM provides separate security policies, and is used to process all network traffic.
The following GUI sections are available when in the traffic VDOM:
 l The Status, Top Usage LAN/DMZ, and Security dashboards
 l Security Fabric topology, settings (read-only, except for HTTP Service settings), and External Connectors 
(Endpoint/Identity connectors only)
 l FortiView
 l Interface configuration
 l Packet capture
 l SD-WAN, SD-WAN Rules, and Performance SLA
 l Static and policy routes
 l RIP, OSPF, BGP, and Multicast
 l Replacement messages
 l Feature visibility
 l Tags
 l Certificates
 l Policies and objects
 l Security profiles
 l VPNs
 l User and device authentication
 l Wifi and switch controller
 l Logging
 l Monitoring
Split-task VDOM mode is not available on all FortiGate models. The Fortinet Security Fabric supports split-task VDOM 
mode.

FortiOS 6.4.6 Administration Guide 801


Fortinet Technologies Inc.
System

Enable split-task VDOM mode

Split-task VDOM mode can be enabled in the GUI or CLI. Enabling it does not require a reboot, but does log you out of 
the FortiGate.

When split-task VDOM mode is enabled, all current management configuration is assigned to 
the root VDOM, and all non-management settings, such as firewall policies and security 
profiles, are deleted.

On VMs and FortiGate 60 series models and lower, VDOMs can only be enabled using the 
CLI.

To enable split-task VDOM mode in the GUI:

 1. On the FortiGate, go to System > Settings.


 2. In the System Operation Settings section, enable Virtual Domains.

 3. Select Split-Task VDOM for the VDOM mode.


 4. Select a Dedicated Management Interface from the Interface list. This interface is used to access the management 
VDOM, and cannot be used in firewall policies.
 5. Click OK.

To enable split-task VDOM mode with the CLI:

config system global


set vdom-mode split-vdom
end

Assign interfaces to a VDOM

An interface can only be assigned to one of the VDOMs. When split-task VDOM mode is enabled, all interfaces are 
assigned to the root VDOM. To use an interface in a policy, it must first be assigned to the traffic VDOM.
An interface cannot be moved if it is referenced in an existing configuration.

FortiOS 6.4.6 Administration Guide 802


Fortinet Technologies Inc.
System

In the GUI, the interface list Ref. column shows if the interface is referenced in an existing 
configuration, and allows you to quickly access and edit those references.

To assign an interface to a VDOM in the GUI:

 1. On the FortiGate, go to Global > Network > Interfaces.


 2. Edit the interface that will be assigned to a VDOM.
 3. Select the VDOM that the interface will be assigned to from the Virtual Domain list.

 4. Click OK.

To assign an interface to a VDOM using the CLI:

config global
config system interface
edit <interface>
set vdom <VDOM_name>
next
end
end

Create per-VDOM administrators

Per-VDOM administrators can be created that can access only the management or traffic VDOM. These administrators 
must use either the prof_admin administrator profile, or a custom profile.
A per-VDOM administrator can only access the FortiGate through a network interface that is assigned to the VDOM that 
they are assigned to. The interface must also be configured to allow management access. They can also connect to the 
FortiGate using the console port.
To assign an administrator to multiple VDOMs, they must be created at the global level. When creating an administrator 
at the VDOM level, the super_admin administrator profile cannot be used.

FortiOS 6.4.6 Administration Guide 803


Fortinet Technologies Inc.
System

To create a per-VDOM administrator in the GUI:

 1. On the FortiGate, connect to the management VDOM.
 2. Go to Global > System > Administrators and click Create New > Administrator.
 3. Fill in the required information, setting the Type as Local User.
 4. In the Virtual Domains field, add the VDOM that the administrator will be assigned to, and if necessary, remove the 
other VDOM from the list.

 5. Click OK.

To create a per-VDOM administrator using the CLI:

config global
config system admin
edit <name>
set vdom <VDOM_name>
set password <password>
set accprofile <admin_profile>
...
next
end
end

Multi VDOM mode

In multi VDOM mode, the FortiGate can have multiple VDOMs that function as independent units. One VDOM is used to 
manage global settings. The root VDOM cannot be deleted, and remains in the configuration even if it is not processing 
any traffic.
Multi VDOM mode isn't available on all FortiGate models. The Fortinet Security Fabric does not support multi VDOM 
mode.
There are three main configuration types in multi VDOM mode:

FortiOS 6.4.6 Administration Guide 804


Fortinet Technologies Inc.
System

Independent VDOMs:

Multiple, completely separate VDOMs are created. Any VDOM can be the management VDOM, as long as it has Internet 
access. There are no inter-VDOM links, and each VDOM is independently managed.

Management VDOM:

A management VDOM is located between the other VDOMs and the Internet, and the other VDOMs connect to the 
management VDOM with inter-VDOM links. The management VDOM has complete control over Internet access, 
including the types of traffic that are allowed in both directions. This can improve security, as there is only one point of 
ingress and egress.
There is no communication between the other VDOMs.

Meshed VDOMs:

VDOMs can communicate with inter-VDOM links. In full-mesh configurations, all the VDOMs are interconnected. In 
partial-mesh configurations, only some of the VDOMs are interconnected.
In this configuration, proper security must be achieved by using firewall policies and ensuring secure account access for 
administrators and users.

FortiOS 6.4.6 Administration Guide 805


Fortinet Technologies Inc.
System

Multi VDOM configuration examples

The following examples show how to configure per-VDOM settings, such as operation mode, routing, and security 
policies,  in a network that includes the following VDOMs:
 l VDOM-A: allows the internal network to access the Internet.
 l VDOM-B: allows external connections to an FTP server.
 l root: the management VDOM.

You can use VDOMs in either NAT or transparent mode on the same FortiGate. By default, VDOMs operate in NAT 
mode.
For both examples, multi VDOM mode must be enabled, and VDOM-A and VDOM-B must be created.

Enable multi VDOM mode

Multi VDOM mode can be enabled in the GUI or CLI. Enabling it does not require a reboot, but does log you out of the 
device. The current configuration is assigned to the root VDOM.

On VMs and FortiGate 60 series models and lower, VDOMs can only be enabled using the 
CLI.

To enable multi VDOM mode in the GUI:

 1. On the FortiGate, go to System > Settings.


 2. In the System Operation Settings section, enable Virtual Domains.
 3. Select Multi VDOM for the VDOM mode.
 4. Click OK.

To enable multi VDOM mode with the CLI:

config system global


set vdom-mode multi-vdom
end

FortiOS 6.4.6 Administration Guide 806


Fortinet Technologies Inc.
System

Create the VDOMs

To create the VDOMs in the GUI:

 1. In the Global VDOM, go to System > VDOM, and click Create New. The New Virtual Domain page opens.

 2. In the Virtual Domain field, enter VDOM-A.


 3. If required, set the NGFW Mode. If the NGFW Mode is Policy-based, select an SSL/SSH Inspection from the list.
 4. Optionally, enter a comment.
 5. Click OK to create the VDOM.
 6. Repeat the above steps for VDOM-B.

To create the VDOMs with the CLI:

config vdom
edit <VDOM-A>
next
edit <VDOM-B>
next
end
end

NAT mode

In this example, both VDOM-A and VDOM-B use NAT mode. A VDOM link is created that allows users on the internal 
network to access the FTP server.
This configuration requires the following steps:
 1. Configure VDOM-A on page 807
 2. Configure VDOM-B on page 809
 3. Configure the VDOM link on page 812

Configure VDOM-A

VDOM-A allows connections from devices on the internal network to the Internet. WAN 1 and port 1 are assigned to this 
VDOM.
The per-VDOM configuration for VDOM-A includes the following:
 l A firewall address for the internal network
 l A static route to the ISP gateway
 l A security policy allowing the internal network to access the Internet
All procedures in this section require you to connect to VDOM-A, either using a global or per-VDOM administrator 
account. 

FortiOS 6.4.6 Administration Guide 807


Fortinet Technologies Inc.
System

To add the firewall addresses in the GUI:

 1. Go to Policy & Objects > Addresses and create a new address.


 2. Enter the following information:   

Name internal-network

Type Subnet

Subnet / IP Range 192.168.10.0/255.255.255.0

Interface port1

Show in Address List enabled

To add the firewall addresses with the CLI:

config vdom
edit VDOM-A
config firewall address
edit internal-network
set associated-interface port1
set subnet 192.168.10.0 255.255.255.0
next
end
next
end

To add a default route in the GUI:

 1. Go to Network > Static Routes and create a new route.


 2. Enter the following information:   

Destination Subnet

IP address 0.0.0.0/0.0.0.0

Gateway 172.20.201.7

Interface wan1

Distance 10

To add a default route with the CLI:

config vdom
edit VDOM-A
config router static
edit 0
set gateway 172.20.201.7
set device wan1
next
end
next
end

FortiOS 6.4.6 Administration Guide 808


Fortinet Technologies Inc.
System

To add the security policy in the GUI:

 1. Connect to VDOM-A.
 2. Go to Policy & Objects > Firewall Policy and create a new policy.
 3. Enter the following information:   

Name VDOM-A-Internet

Incoming Interface port1

Outgoing Interface wan1

Source internal-network

Destination all

Schedule always

Service ALL

Action ACCEPT

NAT enabled

To add the security policy with the CLI:

config vdom
edit VDOM-A
config firewall policy
edit 0
set name VDOM-A-Internet
set srcintf port1
set dstintf wan1
set srcaddr internal-network
set dstaddr all
set action accept
set schedule always
set service ALL
set nat enable
next
end
next
end

Configure VDOM-B

VDOM-B allows external connections to reach an internal FTP server. WAN 2 and port 2 are assigned to this VDOM.
The per-VDOM configuration for VDOM-B includes the following:
 l A firewall address for the FTP server
 l A virtual IP address for the FTP server
 l A static route to the ISP gateway
 l A security policy allowing external traffic to reach the FTP server

FortiOS 6.4.6 Administration Guide 809


Fortinet Technologies Inc.
System

All procedures in this section require you to connect to VDOM-B, either using a global or per-VDOM administrator 
account.

To add the firewall addresses in the GUI:

 1. Go to Policy & Objects > Addresses and create a new address.


 2. Enter the following information:   

Address Name FTP-server

Type Subnet

Subnet / IP Range 192.168.20.10/32

Interface port2

Show in Address List enabled

To add the firewall addresses with the CLI:

config vdom
edit VDOM-B
config firewall address
edit FTP-server
set associated-interface port2
set subnet 192.168.20.10 255.255.255.255
next
end
next
end

To add the virtual IP address in the GUI:

 1. Go to Policy & Objects > Virtual IPs and create a new virtual IP address.


 2. Enter the following information:   

Name FTP-server-VIP

Interface wan2

External IP Address/Range 172.25.177.42

Internal IP Address/Range 192.168.20.10

To add the virtual IP address with the CLI:

config firewall vip


edit FTP-server-VIP
set extip 172.25.177.42
set extintf wan2
set mappedip 192.168.20.10
next
end

FortiOS 6.4.6 Administration Guide 810


Fortinet Technologies Inc.
System

To add a default route in the GUI:

 1. Go to Network > Static Routes and create a new route.


 2. Enter the following information:   

Destination Subnet

IP address 0.0.0.0/0.0.0.0

Gateway 172.20.10.10

Interface wan2

Distance 10

To add a default route with the CLI:

config vdom
edit VDOM-B
config router static
edit 0
set device wan2
set gateway 172.20.10.10
next
end
next
end

To add the security policy in the GUI:

 1. Go to Policy & Objects > Firewall Policy and create a new policy.


 2. Enter the following information:   

Name Access-server

Incoming Interface wan2

Outgoing Interface port2

Source all

Destination FTP-server-VIP

Schedule always

Service FTP

Action ACCEPT

NAT enabled

To add the security policy with the CLI:

config vdom
edit VDOM-B
config firewall policy
edit 0
set name Access-server

FortiOS 6.4.6 Administration Guide 811


Fortinet Technologies Inc.
System

set srcintf wan2


set dstintf port2
set srcaddr all
set dstaddr FTP-server-VIP
set action accept
set schedule always
set service FTP
set nat enable
next
end
next
end

Configure the VDOM link

The VDOM link allows connections from VDOM-A to VDOM-B. This allows users on the internal network to access the 
FTP server through the FortiGate.
The configuration for the VDOM link includes the following:
 l The VDOM link interface
 l Firewall addresses for the FTP server on VDOM-A and for the internal network on VDOM-B
 l Static routes for the FTP server on VDOM-A and for the internal network on VDOM-B
 l Policies allowing traffic using the VDOM link
All procedures in this section require you to connect to the global VDOM using a global administrator account. 

To add the VDOM link in the GUI:

 1. Connect to root.
 2. Go to Global > Network > Interfaces and select Create New > VDOM link.
 3. Enter the following information:   

Name VDOM-link 

Interface 0

Virtual Domain VDOM-A

IP/Netmask 0.0.0.0/0.0.0.0

Interface 1

Virtual Domain VDOM-B

IP/Netmask 0.0.0.0/0.0.0.0

To add the VDOM link with the CLI:

config global
config system vdom-link
edit vlink
end
config system interface
edit VDOM-link0
set vdom VDOM-A

FortiOS 6.4.6 Administration Guide 812


Fortinet Technologies Inc.
System

set ip 0.0.0.0 0.0.0.0


next
edit VDOM-link1
set vdom VDOM-B
set ip 0.0.0.0 0.0.0.0
next
end
end

To add the firewall address on VDOM-A in the GUI:

 1. Connect to VDOM-A.
 2. Go to Policy & Objects > Addresses and create a new address.
 3. Enter the following information:   

Address Name FTP-server

Type Subnet

Subnet / IP Range 192.168.20.10/32

Interface VDOM-link0

Show in Address List enabled

Static Route Configuration enabled

To add the firewall addresses on VDOM-A with the CLI:

config vdom
edit VDOM-B
config firewall address
edit FTP-server
set associated-interface VDOM-link0
set allow-routing enable
set subnet 192.168.20.10 255.255.255.255
next
end
next
end

To add the static route on VDOM-A in the GUI:

 1. Connect to VDOM-A.
 2. Go to Network > Static Routes and create a new route.
 3. Enter the following information:   

Destination Named Address

Named Address FTP-server

Gateway 0.0.0.0

Interface VDOM-link0

FortiOS 6.4.6 Administration Guide 813


Fortinet Technologies Inc.
System

To add the static route on VDOM-A with the CLI:

config vdom
edit VDOM-A
config router static
edit 0
set device VDOM-link0
set dstaddr FTP-server
next
end
next
end

To add the security policy on VDOM-A in the GUI:

 1. Connect to VDOM-A.
 2. Go to Policy & Objects > Firewall Policy and create a new policy.
 3. Enter the following information:   

Name Access-FTP-server

Incoming Interface port1

Outgoing Interface VDOM-link0

Source internal-network

Destination FTP-server

Schedule always

Service FTP

Action ACCEPT

NAT disabled

To add the security policy on VDOM-A with the CLI:

config vdom
edit VDOM-A
config firewall policy
edit 0
set name Access-FTP-server
set srcintf port1
set dstintf VDOM-link0
set srcaddr internal-network
set dstaddr FTP-server
set action accept
set schedule always
set service FTP
next
end
next
end

FortiOS 6.4.6 Administration Guide 814


Fortinet Technologies Inc.
System

To add the firewall address on VDOM-B in the GUI:

 1. Connect to VDOM-B.
 2. Go to Policy & Objects > Addresses and create a new address.
 3. Enter the following information:   

Address Name internal-network

Type Subnet

Subnet / IP Range 192.168.10.0/24

Interface VDOM-link1

Show in Address List enabled

Static Route Configuration enabled

To add the firewall addresses on VDOM-B with the CLI:

config vdom
edit VDOM-B
config firewall address
edit internal-network
set associated-interface VDOM-link1
set allow-routing enable
set subnet 192.168.10.0 255.255.255.0
next
end
next
end

To add the static route on VDOM-B in the GUI:

 1. Connect to VDOM-B.
 2. Go to Network > Static Routes and create a new route.
 3. Enter the following information:   

Destination Named Address

Named Address internal-network

Gateway 0.0.0.0

Interface VDOM-link1

To add the static route on VDOM-B with the CLI:

config vdom
edit VDOM-B
config router static
edit 0
set device VDOM-link1
set dstaddr internal-network
next
end
next

FortiOS 6.4.6 Administration Guide 815


Fortinet Technologies Inc.
System

end

To add the security policy on VDOM-B in the GUI:

 1. Connect to VDOM-B.
 2. Go to Policy & Objects > Firewall Policy and create a new policy.
 3. Enter the following information:   

Name Internal-server-access

Incoming Interface VDOM-link1

Outgoing Interface port2

Source internal-network

Destination FTP-server

Schedule always

Service FTP

Action ACCEPT

NAT disabled

To add the security policy on VDOM-B with the CLI:

config vdom
edit VDOM-B
config firewall policy
edit 0
set name Internal-server-access
set srcintf VDOM-link1
set dstintf port2
set srcaddr internal-network
set dstaddr FTP-server
set action accept
set schedule always
set service FTP
next
end
next
end

NAT and transparent mode

In this example, VDOM-A uses NAT mode and VDOM-B uses transparent mode. 
This configuration requires the following steps:
 1. Configure VDOM-A on page 817
 2. Configure VDOM-B on page 819

FortiOS 6.4.6 Administration Guide 816


Fortinet Technologies Inc.
System

Configure VDOM-A

VDOM-A allows connections from devices on the internal network to the Internet. WAN 1 and port 1 are assigned to this 
VDOM.
The per-VDOM configuration for VDOM-A includes the following:
 l A firewall address for the internal network
 l A static route to the ISP gateway
 l A security policy allowing the internal network to access the Internet
All procedures in this section require you to connect to VDOM-A, either using a global or per-VDOM administrator 
account. 

To add the firewall addresses in the GUI:

 1. Go to Policy & Objects > Addresses and create a new address.


 2. Enter the following information:   

Name internal-network

Type Subnet

Subnet / IP Range 192.168.10.0/24

Interface port1

Show in Address List enabled

To add the firewall addresses with the CLI:

config vdom
edit VDOM-A
config firewall address
edit internal-network
set associated-interface port1
set subnet 192.168.10.0 255.255.255.0
next
end
next
end

To add a default route in the GUI:

 1. Go to Network > Static Routes and create a new route.


 2. Enter the following information:   

Destination Subnet

IP address 0.0.0.0/0.0.0.0

Gateway 172.20.201.7

Interface wan1

Distance 10

FortiOS 6.4.6 Administration Guide 817


Fortinet Technologies Inc.
System

To add a default route with the CLI:

config vdom
edit VDOM-A
config router static
edit 0
set gateway 172.20.201.7
set device wan1
next
end
next
end

To add the security policy in the GUI:

 1. Connect to VDOM-A.
 2. Go to Policy & Objects > Firewall Policy and create a new policy.
 3. Enter the following information:   

Name VDOM-A-Internet

Incoming Interface port1

Outgoing Interface wan1

Source internal-network

Destination all

Schedule always

Service ALL

Action ACCEPT

NAT enabled

To add the security policy with the CLI:

config vdom
edit VDOM-A
config firewall policy
edit 0
set name VDOM-A-Internet
set srcintf port1
set dstintf wan1
set srcaddr internal-network
set dstaddr all
set action accept
set schedule always
set service ALL
set nat enable
next
end
next
end

FortiOS 6.4.6 Administration Guide 818


Fortinet Technologies Inc.
System

Configure VDOM-B

VDOM-B allows external connections to reach an internal FTP server. WAN 2 and port 2 are assigned to this VDOM.
The per-VDOM configuration for VDOM-B includes the following:
 l A firewall address for the FTP server
 l A static route to the ISP gateway
 l A security policy allowing external traffic to reach the FTP server
All procedures in this section require you to connect to VDOM-B, either using a global or per-VDOM administrator 
account.

To add the firewall addresses in the GUI:

 1. Go to Policy & Objects > Addresses and create a new address.


 2. Enter the following information:   

Address Name FTP-server

Type Subnet

Subnet / IP Range 172.25.177.42/32

Interface port2

Show in Address List enabled

To add the firewall addresses with the CLI:

config vdom
edit VDOM-B
config firewall address
edit FTP-server
set associated-interface port2
set subnet 172.25.177.42 255.255.255.255
next
end
next
end

To add a default route in the GUI:

 1. Go to Network > Routing Table and create a new route.


 2. Enter the following information:   

Destination Subnet

IP address 0.0.0.0/0.0.0.0

Gateway 172.20.10.10

To add a default route with the CLI:

config vdom
edit VDOM-B

FortiOS 6.4.6 Administration Guide 819


Fortinet Technologies Inc.
System

config router static


edit 0
set gateway 172.20.10.10
next
end
next
end

To add the security policy in the GUI:

 1. Connect to VDOM-B.
 2. Go to Policy & Objects > Firewall Policy and create a new policy.
 3. Enter the following information:   

Name Access-server

Incoming Interface wan2

Outgoing Interface port2

Source all

Destination FTP-server

Schedule always

Service FTP

Action ACCEPT

To add the security policy with the CLI:

config vdom
edit VDOM-B
config firewall policy
edit 0
set name Access-server
set srcintf wan2
set dstintf port2
set srcaddr all
set dstaddr FTP-server-VIP
set action accept
set schedule always
set service FTP
next
end
next
end

High Availability

The following sections provide instructions on configuring High Availability (HA):

FortiOS 6.4.6 Administration Guide 820


Fortinet Technologies Inc.
System

 l Introduction to the FGCP cluster on page 821
 l Failover protection on page 823
 l FGSP (session synchronization) peer setup on page 824
 l UTM inspection on asymmetric traffic in FGSP on page 825
 l UTM inspection on asymmetric traffic on L3 on page 827
 l Encryption for L3 on asymmetric traffic in FGSP on page 829
 l Synchronizing sessions between FGCP clusters on page 829
 l Session synchronization interfaces in FGSP on page 833
 l Using standalone configuration synchronization on page 831
 l Out-of-band management with reserved management interfaces on page 835
 l In-band management on page 841
 l Troubleshoot an HA formation on page 842
 l Check HA sync status on page 842
 l Disabling stateful SCTP inspection on page 844
 l Upgrading FortiGates in an HA cluster on page 845
 l HA cluster setup examples on page 846
 l FGSP example with devices using different hardware and firmware on page 855
 l HA between remote sites over managed FortiSwitches on page 891
 l Routing NetFlow data over the HA management interface on page 896
 l Override FortiAnalyzer and syslog server settings on page 898
 l Force HA failover for testing and demonstrations on page 902
 l Querying autoscale clusters for FortiGate VM on page 905
 l VDOM exceptions on page 906

Introduction to the FGCP cluster

High availability (HA) is usually required in a system where there is high demand for little downtime. There are usually 
hot-swaps, backup routes, or standby backup units and as soon as the active entity fails, backup entities will start 
functioning. This results in minimal interruption for the users.
The FortiGate Clustering Protocol (FGCP) is a proprietary HA solution whereby FortiGates can find other member 
FortiGates to negotiate and create a cluster. A FortiGate HA cluster consists of at least two FortiGates (members) 
configured for HA operation. All FortiGates in the cluster must be the same model and have the same firmware installed. 
Cluster members must also have the same hardware configuration (such as the same number of hard disks). All cluster 
members share the same configurations except for their host name and priority in the HA settings. The cluster works like 
a device but always has a hot backup device.

FortiOS 6.4.6 Administration Guide 821


Fortinet Technologies Inc.
System

Critical cluster components

The following are critical components in an HA cluster:
 l Heartbeat connections: members will use this to communicate with each other. In general, a two-member cluster is 
most common. We recommend double back-to-back heartbeat connections.
 l Identical connections for internal and external interfaces: as demonstrated in the topology, we recommend similar 
connections from each member to the switches for the cluster to function properly.

General operation

The following are best practices for general cluster operation:
 l Ensure that heartbeat communication is present.
 l Enable the session synchronization option in daily operation (see FGSP (session synchronization) peer setup on 
page 824).
 l Monitor traffic flowing in and out of the interfaces.

Failover

FGCP provides failover protection in the following scenarios:
 l The active device loses power.
 l A monitored interface loses a connection.
After failover occurs, the user will not notice any difference, except that the active device has changed. See Failover 
protection on page 823 for more information.

Synchronizing the configuration

FGCP uses a combination of incremental and periodic synchronization to make sure that the configuration of all cluster 
units is synchronized to that of the primary unit.
The following settings are not synchronized between cluster units:
 l The FortiGate host name
 l GUI Dashboard widgets

FortiOS 6.4.6 Administration Guide 822


Fortinet Technologies Inc.
System

 l HA override
 l HA device priority
 l The virtual cluster priority
 l The HA priority setting for a ping server (or dead gateway detection) configuration
 l The system interface settings of the HA reserved management interface
 l The HA default route for the reserved management interface, set using the ha-mgmt-interface-gateway 
option of the config system ha command
Most subscriptions and licenses are not synchronized, as each FortiGate must be licensed individually. FortiToken 
Mobile is an exception; they are registered to the primary unit and synchronized to the secondary units.
The primary unit synchronizes all other configuration settings, including the other HA configuration settings.
All synchronization activity takes place over the HA heartbeat link using TCP/703 and UDP/703 packets.

Failover protection

The FortiGate Clustering Protocol (FGCP) provides failover protection, meaning that a cluster can provide FortiGate 
services even when one of the devices in the cluster encounters a problem that would result in the complete loss of 
connectivity for a stand-alone FortiGate unit. Failover protection provides a backup mechanism that can be used to 
reduce the risk of unexpected downtime, especially in mission-critical environments.
FGCP supports failover protection in three ways:
 1. Link failover maintains traffic flow if a link fails.
 2. If a device loses power, it automatically fails over to a backup unit with minimal impact on the network.
 3. Optionally, if an SSD fails, it can automatically fail over to a backup unit.
When session-pickup is enabled in the HA settings, existing TCP session are kept, and users on the network are not 
impacted by downtime as the traffic can be passed without reestablishing the sessions.

When and how the failover happens

1. Link fails

Before triggering a failover when a link fails, the administrator must ensure that monitor interfaces are configured. 
Normally, the internal interface that connects to the internal network, and an outgoing interface for traffic to the internet or 
outside the network, should be monitored. Any of those links going down will trigger a failover.

2. Loss of power for active unit.

When an active (primary) unit loses power, a backup (secondary) unit automatically becomes the active, and the impact 
on traffic is minimal. There are no settings for this kind of fail over.

3. SSD failure

HA failover can be triggered by an SSD failure.

To enable an SSD failure triggering HA fail over:

config system ha
set ssd-failover enable

FortiOS 6.4.6 Administration Guide 823


Fortinet Technologies Inc.
System

end

FGSP (session synchronization) peer setup

The FortiGate Session Life Support Protocol (FGSP) is a proprietary HA solution for only sharing sessions between two 
entities and is based on a  peer-to-peer structure. The entities could be standalone FortiGates or an FGCP cluster.
Connect all necessary interfaces as per the topology diagram below. Interfaces may be changed depending on the 
models in use. Interface names in the topology diagram are for example purposes only.

To setup an FGSP peer through the CLI:

These instructions assume that the device has been connected to the console, the CLI is accessible, and that all 
FortiGates have been factory reset.
 1. Connect all necessary interfaces as per the topology diagram.
 2. Enter the following command to change the FortiGate unit host name:
config system global
set hostname Example1_host(Example2_host, etc)
end

FortiOS 6.4.6 Administration Guide 824


Fortinet Technologies Inc.
System

 3. On each FGSP peer device, enter the following command:
config system cluster-sync
set peerip xx.xx.xx.xx --->> peer's interface IP for session info to be
passed.
end

 4. Set up identical firewall policies.
FGSP peers share the same session information which goes from the same incoming interface (example: port1) to 
the outgoing interface (example: port2). Firewall policies should be identical as well, and can be copied from one 
device to its peer.

To test the setup:

 1. Initiate TCP traffic (like HTTP access) to go through FortiGateA.
 2. Check the session information.
For example:
diagnose sys session filter src xxx.xxx.xxx.xxx (your PCs IP)
diagnose sys session list
 3. Use the same command on FortiGateB to determine if the same session information appeared.

UTM inspection on asymmetric traffic in FGSP

When traffic passes asymmetrically through FGSP peers, UTM inspection can be supported by always forwarding traffic 
back to the session owner for processing. The session owner is the FortiGate that receives the first packet of the 
session.
In this example, traffic from the internal network first hits FGT_1, but the return traffic is routed to FGT_2. Consequently, 
traffic bounces from FGT_2 port1 to FGT_1 port1 using FGT_1’s MAC address. Traffic is then inspected by FGT_1.
This example requires the following settings:
 l The internal and outgoing interfaces of both FortiGates in the FGSP pair are in the same subnet. 
 l Both peers have layer 2 access with each other.

FortiOS 6.4.6 Administration Guide 825


Fortinet Technologies Inc.
System

To configure FTG_1:

 1. Configure the cluster, setting the peer IP to the IP address of FGT_2:
config system cluster-sync
edit 1
set peerip 10.2.2.2
next
end

 2. Configure FGSP cluster attributes:
config system standalone-cluster
set standalone-group-id 1
set group-member-id 0
set layer2-connection available
unset session-sync-dev
end

 3. Configure the firewall policy:
config firewall policy
edit 1
set srcintf "port2"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set av-profile "default"
set logtraffic all
set nat enable
next
end

To configure FTG_2:

 1. Configure the cluster, setting the peer IP to the IP address of FGT_1:
config system cluster-sync
edit 1
set peerip 10.2.2.1
next
end

 2. Configure FGSP cluster attributes:
config system standalone-cluster
set standalone-group-id 1
set group-member-id 1
set layer2-connection available
unset session-sync-dev
end

FortiOS 6.4.6 Administration Guide 826


Fortinet Technologies Inc.
System

 3. Configure the firewall policy:
config firewall policy
edit 1
set srcintf "port2"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set av-profile "default"
set logtraffic all
set nat enable
next
end

Results

Capture packets on FGT_2 to see that traffic bounced from FGT_2 to FGT_1 over the traffic interface.
FGT_2 # diagnose sniffer packet any 'host 10.1.100.15 and host 172.6.200.55' 4
interfaces=[any]
filters=[host 10.1.100.15 and host 172.16.200.55]
91.803816 port1 in 172.16.200.55.80 -> 10.1.100.15.40008: syn 2572073713 ack 261949279
92.800480 port1 in 172.16.200.55.80 -> 10.1.100.15.40008: syn 2572073713 ack 261949279
92.800486 port1 out 172.16.200.55.80 -> 10.1.100.15.40008: syn 2572073713 ack 261949279
92.800816 port1 in 172.16.200.55.80 -> 10.1.100.15.40008: syn 2572073713 ack 261949279
92.800818 port1 out 172.16.200.55.80 -> 10.1.100.15.40008: syn 2572073713 ack 261949279

UTM inspection on asymmetric traffic on L3

When traffic passes asymmetrically through FGSP peers, UTM inspection can be supported by always forwarding traffic 
back to the session owner for processing. The session owner is the FortiGate that receives the first packet of the 
session.
For networks where L2 connectivity is not available, such as cloud environments, traffic bound for the session owner are 
forwarded through the peer interface using a UDP connection.
In this example, traffic from the internal network first hits FGT_1, but the return traffic is routed to FGT_2. Consequently, 
return traffic is packed and sent from FGT_2 to FGT_1 using UDP encapsulation between two peer interfaces (port 3).  
Traffic is then inspected by FGT_1.

FortiOS 6.4.6 Administration Guide 827


Fortinet Technologies Inc.
System

To configure FTG_1:

 1. Configure the cluster, setting the peer IP to the IP address of FGT_2:
config system cluster-sync
edit 1
set peerip 10.2.2.2
next
end

 2. Configure FGSP cluster attributes:
config system standalone-cluster
set standalone-group-id 1
set group-member-id 0
set layer2-connection unavailable
unset session-sync-dev
end

 3. Configure the firewall policy:
config firewall policy
edit 1
set srcintf "port2"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set av-profile "default"
set logtraffic all
set nat enable
next
end

FortiOS 6.4.6 Administration Guide 828


Fortinet Technologies Inc.
System

To configure FTG_2:

 1. Configure the cluster, setting the peer IP to the IP address of FGT_1:
config system cluster-sync
edit 1
set peerip 10.2.2.1
next
end

 2. Configure FGSP cluster attributes:
config system standalone-cluster
set standalone-group-id 1
set group-member-id 1
set layer2-connection unavailable
unset session-sync-dev
end

 3. Configure the firewall policy:
config firewall policy
edit 1
set srcintf "port2"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set av-profile "default"
set logtraffic all
set nat enable
next
end

Encryption for L3 on asymmetric traffic in FGSP

In scenarios where asymmetric routing between FGSP members occurs, the return traffic can be encrypted and routed 
back to the session owner on Layer 3 (L3). 

To encrypt L3 traffic in FGSP:

 1. Run the following on both FortiGates:
config system standalone-cluster
set encryption enable
set psksecret xxxxxxxxx
end

Synchronizing sessions between FGCP clusters

Synchronizing sessions between FGCP clusters is useful when data centers in different locations are used for load-
balancing, and traffic must be shared and flow freely based on demand.

FortiOS 6.4.6 Administration Guide 829


Fortinet Technologies Inc.
System

There are some limitations when synchronizing sessions between FGCP clusters:
 l All FortiGates must have the same model and generation, hardware configuration, and FortiOS version.
 l Currently, a total of 16 clusters can share sessions.

To configure session synchronization between two clusters:

 1. Configure the two clusters (see HA active-passive cluster setup on page 846 or HA active-active cluster setup on 
page 848).
 2. On cluster A, configure the peer IP for the interface:
config system interface
edit "port5"
set vdom "root"
set ip 10.10.10.1 255.255.255.0
set allowaccess ping https ssh snmp http telnet
next
end

In this example, cluster A uses port5 and its IP address, 10.10.10.1, is reachable from another cluster.
 3. On cluster A, configure cluster and session synchronization:
config system cluster-sync
edit 1
set peerip 10.10.10.2
next
end

FortiOS 6.4.6 Administration Guide 830


Fortinet Technologies Inc.
System

 4. On cluster A, configure additional FGSP attributes as needed:
config system standalone-cluster
set standalone-group-id 1
set group-member-id 0
set session-sync-dev <interface>
end

The standalone-group-id must match between FGSP members. The group-member-id is unique for each 
FGCP cluster. session-sync-dev is an optional command to specify the interfaces to sync sessions.
 5. On cluster B, configure the peer IP for the interface:
config system interface
edit "port5"
set vdom "root"
set ip 10.10.10.2 255.255.255.0
set allowaccess ping https ssh snmp http telnet
next
end

In this example, cluster B uses port5 and its IP address, 10.10.10.2, is reachable from another cluster.
 6. On cluster B, configure cluster and session synchronization:
config system cluster-sync
edit 1
set peerip 10.10.10.1
next
end

 7. On cluster B, configure additional FGSP attributes as needed:
config system standalone-cluster
set standalone-group-id 1
set group-member-id 1
set session-sync-dev <interface>
end

Using standalone configuration synchronization

You can configure synchronization from one standalone FortiGate to another standalone FortiGate (standalone-
config-sync). With the exception of some configurations that do not sync (settings that identify the FortiGate to the 
network), the rest of the configurations are synced, such as firewall policies, firewall addresses, and UTM profiles. 
This option is useful in situations when you need to set up FGSP peers, or when you want to quickly deploy several 
FortiGates with the same configurations. You can set up standalone-config-sync for multiple members.

standalone-config-sync is an independent feature and should be used with caution as 
there are some limitations. We recommend disabling it once the configurations have been 
synced over.

Limitations

When standalone configuration synchronization is enabled, there are some limitations, including but not limited to the 
following:

FortiOS 6.4.6 Administration Guide 831


Fortinet Technologies Inc.
System

 l Network interruptions occur during firmware upgrades: when upgrading the firmware, all members in the 
standalone-config-sync group are upgraded simultaneously. This creates downtime if the FortiGates are the 
only outgoing gateway in the network. We recommend disabling the option before upgrading firmware. 
 l Some unwanted configurations might be synced: the current design and implementation of standalone-config-
sync is based on requirements from specific customers. Thus, some users may find that unwanted parts of the 
configurations are synced. Should this occur, we recommend disabling the option and modifying those 
configurations  manually.
 l The wrong primary device might be selected accidentally: standalone-config-sync is derived from the HA 
primary unit selection mechanism. All members in the group will join the selection process in the same way as a the 
HA cluster selection process. It is important to select the correct device as the primary, otherwise the wrong device 
could be selected and existing configurations could be overwritten.
 l Layer 2 heartbeat connections must be present: similar to HA heartbeat requirements, one or more layer 2 
heartbeat connections are needed to sync configurations between the primary and secondary devices.

Setting up standalone configuration synchronization

Two or more standalone FortiGates should be connected to each other with one or more heartbeat interfaces, either 
back-to-back or via a switch. In the following example, the device supplying the configurations is called "conf-prim," and 
the devices receiving the configurations are called "conf-secos."

To set up standalone configuration synchronization:

 1. Configure the conf-prim device for the group:
config system ha
set hbdev ha1 50 ha2 100
set priority 255
set override enable
set standalone-config-sync enable
end

 2. Configure the conf-prim device as needed to be functional.
 3. Configure the other group members as conf-secos:
config system ha
set standalone-config-sync enable
end

 4. Wait 10–15 minutes for the configurations to sync over.
 5. Verify the synchronization status:
# get system ha status
path=system, objname=ha, tablename=(null), size=5912
HA Health Status:
WARNING: FG201E4Q17900771 has hbdev down;
WARNING: FG201ETK19900991 has hbdev down;
Model: FortiGate-201E
Mode: ConfigSync
Group: 0

FortiOS 6.4.6 Administration Guide 832


Fortinet Technologies Inc.
System

Debug: 0
Cluster Uptime: 0 days 0:0:51
Cluster state change time: 2019-09-03 17:46:07
Primary selected using:
<2019/09/03 17:46:07> FG201ETK19900991 is selected as the primary because it has the
largest value of override priority.
ses_pickup: disable
override: disable
Configuration Status:
FG201E4Q17900771(updated 3 seconds ago): out-of-sync
FG201ETK19900991(updated 1 seconds ago): in-sync
System Usage stats:
FG201E4Q17900771(updated 3 seconds ago):
sessions=1, average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=16%
FG201ETK19900991(updated 1 seconds ago):
sessions=1, average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=16%
HBDEV stats:
FG201E4Q17900771(updated 3 seconds ago):
wan2: physical/1000auto, up, rx-bytes/packets/dropped/errors=114918/266/0/0,
tx=76752/178/0/0
ha: physical/00, down, rx-bytes/packets/dropped/errors=0/0/0/0, tx=0/0/0/0
FG201ETK19900991(updated 1 seconds ago):
wan2: physical/1000auto, up, rx-bytes/packets/dropped/errors=83024/192/0/0,
tx=120216/278/0/0
ha: physical/00, down, rx-bytes/packets/dropped/errors=0/0/0/0, tx=0/0/0/0
Secondary: FortiGate-201E, FG201E4Q17900771, HA cluster index = 1
Primary: FortiGate-201E, FG201ETK19900991, HA cluster index = 0
number of vcluster: 1
vcluster 1: work 169.254.0.1
Secondary: FG201E4Q17900771, HA operating index = 1
Primary: FG201ETK19900991, HA operating index = 0

If all members are in-sync, this means all members share the same configurations, except those that should not 
be synced. If any members are out-of-sync, this means the member failed to sync with the primary device. 

Debugging is similar when a cluster is out of sync.   

Session synchronization interfaces in FGSP

When peering over FGSP, by default, the FortiGates or FGCP clusters share information over L3 between the interfaces 
that are configured with Peer IP addresses. When a session synchronization interface is configured and FGSP peers are 
directly connected on this interface, then session synchronization is done over L2, only falling back to L3 if the session 
synchronization interface becomes unavailable.
When using a session synchronization interface, the synchronization process is offloaded to the kernel. A fast, 
dedicated, and stable L2 connection should be used for the session synchronization interface between the FGSP peers. 
For redundancy, multiple synchronization interfaces can be configured.
To provide full redundancy, FGCP clusters can be used in FGSP peering. This is called FGCP over FGSP.

FortiOS 6.4.6 Administration Guide 833


Fortinet Technologies Inc.
System

To configure session-sync interfaces:

config system standalone-cluster


set session-sync-dev <interface 1> [<interface 2>] ... [<interface n>]
set layer2-connection {available | unavailable}
set encryption {enable | disable}
end

The layer2-connection setting is for forwarded traffic between FGSP peers. Set it to available if the peer 
interface user for traffic forwarding is directly connected and supports L2 forwarding. See UTM inspection on asymmetric 
traffic in FGSP on page 825 for more information.

Session synchronization in FGCP over FGSP

The following topology uses multiple session synchronization interfaces with a full mesh backbone to prevent any single 
point of failure.

The state diagram summarizes the session synchronization of a TCP session. It assumes that the session is connected 
over FGCP Cluster 1 and processed entirely by the primary unit, Cluster-1A.

FortiOS 6.4.6 Administration Guide 834


Fortinet Technologies Inc.
System

 1. The session starts with the Client SYN packet.
 2. As the session is established, Cluster-1A synchronizes the session with Cluster-1B over the heartbeat interface, 
and with Cluster-2A over the session synchronization interface.
 3. Cluster-2A then synchronizes the session with Cluster-2B over its heartbeat interface.
 4. The process then repeats as it transitions to different states.

Session synchronization if links fail

In the previous topology, if any single session synchronization link fails on the primary member of each cluster, session 
synchronization will continue on the second link from the pair of session of session synchronization interfaces.
If the second link on the primary member of the same cluster then fails, L2 session synchronization over the session 
synchronization interface stops, and synchronization fails over to L3 between the peer IP links.
If the Peer IP link then fails, the FGSP peers are effectively disconnected, and no session synchronization will occur.

Out-of-band management with reserved management interfaces

As part of an HA configuration, you can reserve up to four management interfaces to provide direct management access 
to all cluster units. For each reserved management interface, you can configure a different IP address, administrative 
access, and other interface settings, for each cluster unit. By connecting these interfaces to your network, you can 
separately manage each cluster unit from different IP addresses. 

FortiOS 6.4.6 Administration Guide 835


Fortinet Technologies Inc.
System

 l Reserved management interfaces provide direct management access to each cluster unit, and give each cluster 
unit a different identity on your network. This simplifies using external services, such as SNMP, to monitor and 
managed separate cluster units.
 l Reserved management interfaces are not assigned HA virtual MAC addresses. They retain the permanent 
hardware address of the physical interface, unless you manually change it using the config system
interface command.
 l Reserved management interfaces and their IP addresses should not be used for managing a cluster using 
FortiManager. To manage a FortiGate HA cluster with FortiManager, us the IP address of one of the cluster unit 
interfaces.
 l Configuration changes to a reserved management interface are not synchronized to other cluster units. Other 
configuration changes are automatically synchronized to all cluster units.

You can configure an in-band management interface for a cluster unit. See In-band 
management on page 841 for information. In-band management does not reserve the 
interface exclusively for HA management.

Management interface

Enable HTTPS or HTTP administrative access on the reserved management interfaces to connect to the GUI of each 
cluster unit. On secondary units, the GUI has the same features as the primary unit, except for unit specific information, 
for example:
 l The System Information widget on the Status dashboard shows the secondary units serial number.
 l In the cluster members list at System > HA, you can change the HA configuration of the unit that you are logged into. 
You can only change the host name and device priority of the primary and other secondary units.
 l The system events logs shows logs for the device that you are logged into. Use the HA device drop down to view the 
log messages for other cluster units, including the primary unit.
Enable SSH administrative access on the reserved management interfaces to connect to the CLI of each cluster unit. 
The CLI prompt includes the host of the cluster unit that you are connected to. Use the execute ha manage command 
to connect to other cluster unit CLIs.
Enable SNMP administrative access on a reserved management interface to use SNMP to monitor each cluster unit 
using the interface's IP address. Direct management of cluster members must also be enabled, see Configuring SNMP 
remote management of individual cluster units example on page 837.
Reserved management interfaces are available in both NAT and transparent mode, and when the cluster is operating 
with multiple VDOMs.

FortiCloud, FortiSandbox, and other management services

By default, management services such as FortiCloud, FortiSandbox, SNMP, remote logging, and remote authentication, 
use a cluster interface. This means that communication from each cluster unit will come from a cluster interface, and not 
from the individual cluster unit's interface.
You can configure HA reserved management interfaces  to be used for communication with management services by 
enabling the ha-direct option. This separates management traffic for each cluster unit, and allows each unit to be 
individually managed. This is especially useful when cluster unit are in different physical locations.
The following management features will then use the HA reserved management interface:

FortiOS 6.4.6 Administration Guide 836


Fortinet Technologies Inc.
System

 l Remote logging, including syslog, FortiAnalyzer, and FortiCloud
 l SNMP queries and traps
 l Remote authentication and certificate verification
 l Communication with FortiSandbox
 l Netflow and sflow, see Routing NetFlow data over the HA management interface on page 896 for information.

The HA reserved management interfaces can also be configured for only SNMP remote management, see Configuring 
SNMP remote management of individual cluster units example on page 837.

To configure HA reserved management interfaces for communication with management services:

config system ha
set ha-direct enable
end

Enabling ha-direct in a non-HA environment will make SNMP unusable.

Configuring SNMP remote management of individual cluster units example

In this example, two FortiGate units are already operating in a cluster. On each unit, port8 is connected to the internal 
network through a switch and configured as a reserved management interface with SNMP remote management.

Configuration changes to the reserved management interface are not synchronized to other 
cluster units.

To configure management interface reservation in the GUI:

 1. Go to System > HA and edit the primary unit.


 2. Enable Management Interface Reservation.

FortiOS 6.4.6 Administration Guide 837


Fortinet Technologies Inc.
System

 3. Set Interface to port8. This interface must not be referenced anywhere else.
 4. Set Gateway to 10.11.101.2. The gateway is not synchronized to secondary units.

 5. Optionally, enter a Destination subnet to indicate the destinations that should use the defined gateway. By default, 


0.0.0.0/0 is used.
 6. Click OK.

To configure management interface reservation in the CLI:

config system ha
set ha-mgmt-status enable
config ha-mgmt-interfaces
edit 1
set interface "port8"
set gateway 10.11.101.2
next
end
end

The reserved management interface default route is not synchronized to other cluster units.

GUI access

To configure the primary unit's reserved management interface, configure an IP address and management access on 
port8. Then, to configure the secondary unit's reserved management interface, access the unit's CLI through the primary 
unit, and configure an IP address and management access on port8. Configuration changes to the reserved 
management interface are not synchronized to other cluster units.

To configure the primary unit reserved management interface to allow GUI access in the CLI:

 1. From a computer on the internal network, connect to the CLI at 10.11.101.100.
 2. Change the port8 IP address and management access:
config system interface
edit port8
set ip 10.11.101.101/24
set allowaccess https ping ssh snmp
next
end

You can now log into the primary unit's GUI by browsing to https://10.11.101.101. You can also log into the primary 
unit's CLI by using an SSH client to connect to 10.11.101.101.

FortiOS 6.4.6 Administration Guide 838


Fortinet Technologies Inc.
System

To configure secondary unit reserved management interfaces to allow GUI access:

 1. From a computer on the internal network, connect to the primary unit's CLI.
 2. Connect to the secondary unit with the following command:
execute ha manage <unit id> <username> <password>

 3. Change the port8 IP address and management access:
config system interface
edit port8
set ip 10.11.101.102/24
set allowaccess https ping ssh snmp
next
end
exit

You can now log into the secondary unit's GUI by browsing to https://10.11.101.102. You can also log into the 
secondary unit's CLI by using an SSH client to connect to 10.11.101.102.

SNMP management

The SNMP server can get status information from the cluster members. To use the reserved management interfaces, 
you must add at least one HA direct management host to an SNMP community. If the SNMP configuration includes 
SNMP users with user names and passwords, HA direct management must be enabled for the users.

To configure the cluster for SNMP management using the reserved management interfaces in the CLI:

 1. Add an SNMP community with a host for the reserved management interface of each cluster member. The host 
includes the IP address of the SNMP server.
config system snmp community
edit 1
set name "Community"
config hosts
edit 1
set ip 10.11.101.20 255.255.255.255
set ha-direct enable
next
end
next
end

Enabling ha-direct in a non-HA environment will make SNMP unusable.

 2. Add an SNMP user for the reserved management interface
config system snmp user
edit "1"
set notify-hosts 10.11.101.20
set ha-direct enable
next
end

FortiOS 6.4.6 Administration Guide 839


Fortinet Technologies Inc.
System

The SNMP configuration is synchronized to all cluster units.

To get CPU, memory, and network usage information from the SNMP manager for each cluster unit
using the reserved management IP addresses:

 1. Connect to the SNMP manager CLI.
 2. Get resource usage information for the primary unit using the MIB fields:
snmpget -v2c -c Community 10.11.101.101 fgHaStatsCpuUsage
snmpget -v2c -c Community 10.11.101.101 fgHaStatsMemUsage
snmpget -v2c -c Community 10.11.101.101 fgHaStatsNetUsage

 3. Get resource usage information for the primary unit using the OIDs:
snmpget -v2c -c Community 10.11.101.101 1.3.6.1.4.1.12356.101.13.2.1.1.3.1
snmpget -v2c -c Community 10.11.101.101 1.3.6.1.4.1.12356.101.13.2.1.1.4.1
snmpget -v2c -c Community 10.11.101.101 1.3.6.1.4.1.12356.101.13.2.1.1.5.1

 4. Get resource usage information for the secondary unit using the MIB fields:
snmpget -v2c -c Community 10.11.101.102 fgHaStatsCpuUsage
snmpget -v2c -c Community 10.11.101.102 fgHaStatsMemUsage
snmpget -v2c -c Community 10.11.101.102 fgHaStatsNetUsage

 5. Get resource usage information for the primary unit using the OIDs:
snmpget -v2c -c Community 10.11.101.102 1.3.6.1.4.1.12356.101.13.2.1.1.3.1
snmpget -v2c -c Community 10.11.101.102 1.3.6.1.4.1.12356.101.13.2.1.1.4.1
snmpget -v2c -c Community 10.11.101.102 1.3.6.1.4.1.12356.101.13.2.1.1.5.1

Firewall local-in policies for the reserved management interface

Enabling ha-mgmt-intf-only applies the local-in policy only to the VDOM that contains the reserved management 
interface. The incoming interface is set to match any interface in the VDOM..

To add local-in policies for the reserved management interface:

config firewall local-in-policy


edit 0
set ha-mgmt-intf-only enable
set intf any
set srcaddr internal-net
set dstaddr mgmt-int
set action accept
set service HTTPS
set schedule weekdays
next
end

FortiOS 6.4.6 Administration Guide 840


Fortinet Technologies Inc.
System

NTP over reserved management interfaces

If reserved management interfaces are configured for each cluster member, and NTP is enabled, then the primary unit 
will contact the NTP server using the reserved management interface. The system time is then synchronized to the 
secondary units over the HA heartbeat interface.
config system interface
edit port5
set ip 172.16.79.46 255.255.255.0
next
end
config system ha
set group-name FGT-HA
set mode a-p
set ha-mgmt-status enable
config ha-mgmt-interfaces
edit 1
set interface port5
set gateway 172.16.79.1
next
end
set ha-direct enable
end
config system ntp
set ntpsync enable
set syncinterval 5
end

In-band management

In-band management IP addresses are an alternative to reserved HA management interfaces, and do not require 
reserving an interface exclusively for management access. They can be added to multiple interfaces on each cluster 
unit.
The in-band management IP address is accessible from the network that the cluster interface is connected to. It should 
be in the same subnet as the interface that you are adding it to. It cannot be in the same subnet as other interface 
IP addresses.
In-band management interfaces support ping, HTTP, HTTPS, and SNMP administrative access options.
Primary and secondary units send packets differently from an interface with a management IP address configured:
 l On the primary unit, packets are sent to destinations based on routing information.
 l On secondary units, packets can only be sent to destinations with the same management IP address segment.

In-band management IP address configuration is not synchronized to other cluster units.

FortiOS 6.4.6 Administration Guide 841


Fortinet Technologies Inc.
System

To add an in-band management IP address to port23 with HTTPS, SSH, and SNMP access:

config system interface


edit port23
set management-ip 172.25.12.5/24
set allowaccess https ssh snmp
next
end

Troubleshoot an HA formation

The following are requirements for setting up an HA cluster or FGSP peers.
Cluster members must have:
 l The same model.
 l The same hardware configuration.
 l The same connections.
 l The same generation.

The requirement to have the same generation is done as a best practice as it avoids issues 
that can occur later on. If you are unsure if the FortiGates are from the same generation, 
please contact customer service.

Troubleshooting common HA formation errors

One member keeps shutting down during HA setup (hard drive failure):

If one member has a hard drive failure but the other does not, the one with the hard drive failure will be shut down during 
HA setup. In this case, RMA the member to resolve the issue.

All members are primaries and members cannot see other members:

Typically, this is a heartbeat issue. It is recommended that for a two-member cluster, you use a back-to-back connection 
for heartbeat communication. If there are more than three members in the cluster, a separate switch should be used to 
connect all heartbeat interfaces.

Check HA sync status

The HA sync status can be viewed in the GUI through either a widget on the Dashboard or on the System > HA page. It 


can also be confirmed through the CLI. When a cluster is out of sync, administrators should correct the issue as soon as 
possible as it affects the configuration integrity and can cause issues to occur.

HA sync status in the GUI

 l Dashboard widget:
 l Following HA setup, the HA Status widget can be added to the Dashboard. The widget shows the HA sync 
status by displaying a green checkmark next to each member in sync. A red mark indicates the member is out 

FortiOS 6.4.6 Administration Guide 842


Fortinet Technologies Inc.
System

of sync.

 l System > HA page:


 l The same set of icons will be displayed on the System > HA page to indicate if the member is in sync. 

HA sync status in the CLI

In the CLI, run the get system ha status command to see if the cluster is in sync. The sync status is reported under 


Configuration Status. In the following example, both members are in sync:
# get system ha status
HA Health Status: OK
Model: FortiGate-VM64
Mode: HA A-P
Group: 0
Debug: 0
Cluster Uptime: 0 days 0:29:2
Cluster state change time: 2020-09-25 08:23:09
Primary selected using:
<2020/09/25 08:23:09> FGVME000000JUG0E is selected as the primary because it has the
largest value of override priority.
<2020/09/25 08:23:09> FGVMEV00000M6S87 is selected as the primary because it's the only
member in the cluster.
ses_pickup: disable
override: disable
Configuration Status:
FGVME000000JUG0E(updated 2 seconds ago): in-sync
FGVMEV00000M6S87(updated 4 seconds ago): in-sync
System Usage stats:
FGVME000000JUG0E(updated 2 seconds ago):
sessions=11, average-cpu-user/nice/system/idle=1%/0%/1%/98%, memory=69%
FGVMEV00000M6S87(updated 4 seconds ago):
sessions=1, average-cpu-user/nice/system/idle=0%/0%/1%/99%, memory=69%
HBDEV stats:
FGVME000000JUG0E(updated 2 seconds ago):
port1: physical/1000auto, up, rx-bytes/packets/dropped/errors=60578029/155605/0/0,

FortiOS 6.4.6 Administration Guide 843


Fortinet Technologies Inc.
System

tx=13360110/25218/0/0
FGVMEV00000M6S87(updated 4 seconds ago):
port1: physical/1000auto, up, rx-bytes/packets/dropped/errors=7006310/19328/0/0,
tx=6220835/13974/0/0
MONDEV stats:
FGVME000000JUG0E(updated 2 seconds ago):
port1: physical/1000auto, up, rx-bytes/packets/dropped/errors=60578029/155605/0/0,
tx=13360110/25218/0/0
port2: physical/1000auto, up, rx-bytes/packets/dropped/errors=70459776/175970/0/0,
tx=36854/226/0/0
FGVMEV00000M6S87(updated 4 seconds ago):
port1: physical/1000auto, up, rx-bytes/packets/dropped/errors=7006310/19328/0/0,
tx=6220835/13974/0/0
port2: physical/1000auto, up, rx-bytes/packets/dropped/errors=7197677/20580/0/0,
tx=29200/83/0/0
Primary : HA1 , FGVME000000JUG0E, HA cluster index = 0
Secondary : HA2 , FGVMEV00000M6S87, HA cluster index = 1
number of vcluster: 1
vcluster 1: work 169.254.0.1
Primary: FGVME000000JUG0E, HA operating index = 0
Secondary: FGVMEV00000M6S87, HA operating index = 1

Disabling stateful SCTP inspection

There is an option in FortiOS to disable stateful SCTP inspection. This option is useful when FortiGates are deployed in a 
high availability (HA) cluster that uses the FortiGate Clustering Protocol (FGCP) and virtual clustering in a multihoming 
topology. In this configuration, the primary stream control transmission protocol (SCTP) path traverses the primary 
FortiGate node by using its active VDOM (for example, VDOM1), and the backup SCTP path traverses the other passive 
FortiGate node by using its active VDOM (for example, VDOM2).
When stateful SCTP inspection is enabled, SCTP heartbeat traffic fails by means of the backup path because the 
primary path goes through a different platform and VDOM. Since there is no state sharing between VDOMs, the passive 
FortiGate is unaware of the original SCTP session and drops the heartbeats because of no associated sessions. When 
stateful SCTP inspection is disabled, the passive node permits the SCTP heartbeats to pass.
When set to enable, SCTP session creation without SCTP INIT is enabled. When set to disable, SCTP session 
creation without SCTP INIT is disabled (this is the default setting): 
config system settings
set sctp-session-without-init {enable | disable}
end

The following is an example topology and scenario:

FortiOS 6.4.6 Administration Guide 844


Fortinet Technologies Inc.
System

In this example, FGT_A and FGT_B are in HA a-p mode with two virtual clusters. Two primaries exist on different 
FortiGate units. PC1 eth1 can access PC5 eth1 through VDOM1, and PC1 eth2 can access PC5 eth2 through VDOM2.
On PC5, to listen for an SCTP connection:
sctp_darn -H 172.16.200.55 -B 172.17.200.55 -P 2500 -l

On PC1, to start an SCTP connection:
sctp_darn -H 10.1.100.11 -B 20.1.100.11 -P 2600 -c 172.16.200.55 -c 172.17.200.55 -p 2500
-s

An SCTP four-way handshake is on one VDOM, and a session is created on that VDOM. With the default configuration, 
there is no session on any other VDOM, and the heartbeat on another path (another VDOM) is dropped. After enabling 
sctp-session-without-init, the other VDOM creates the session when it receives the heartbeat, and the 
heartbeat is forwarded:
config system settings
set sctp-session-without-init enable
end

Upgrading FortiGates in an HA cluster

You can upgrade the firmware on an HA cluster in the same way as on a standalone FortiGate. During a firmware 
upgrade, the cluster upgrades the primary unit and all of the subordinate units to the new firmware image. 

Before upgrading a cluster, back up your configuration (Configuration backups on page 52), 
schedule a maintenance window, and make sure that you are using a supported upgrade path 
(https://docs.fortinet.com/upgrade-tool). 

Uninterrupted upgrade

An uninterrupted upgrade occurs without interrupting communication in the cluster.
To upgrade the cluster firmware without interrupting communication, the following steps are followed. These steps are 
transparent to the user and the network, and might result in the cluster selecting a new primary unit.
 1. The administrator uploads a new firmware image using the GUI or CLI. See Firmware on page 775 for details.
 2. The firmware is upgraded on all of the subordinate units.

FortiOS 6.4.6 Administration Guide 845


Fortinet Technologies Inc.
System

 3. A new primary unit is selected from the upgraded subordinates.
 4. The firmware is upgraded on the former primary unit.
 5. Primary unit selection occurs, according to the standard primary unit selection process.
If all of the subordinate units crash or otherwise stop responding during the upgrade process, the primary unit will 
continue to operate normally, and will not be upgraded until at least one subordinate rejoins the cluster.

Interrupted upgrade

An interrupted upgrade upgrades all cluster members at the same time. This takes less time than an uninterrupted 
upgrade, but it interrupts communication in the cluster. Interrupted upgrade is disabled by default.

To enable interrupted upgrade:

config system ha
set uninterruptible-upgrade disable
end

HA cluster setup examples

The following examples provide instructions on HA cluster setup:
 l HA active-passive cluster setup on page 846
 l HA active-active cluster setup on page 848
 l HA virtual cluster setup on page 849
 l HA using a hardware switch to replace a physical switch on page 852

HA active-passive cluster setup

An HA Active-Passive (A-P) cluster can be set up using the GUI or CLI.
This example uses the following network topology:

FortiOS 6.4.6 Administration Guide 846


Fortinet Technologies Inc.
System

To set up an HA A-P cluster using the GUI:

 1. Make all the necessary connections as shown in the topology diagram.
 2. Log into one of the FortiGates.
 3. Go to System > HA and set the following options:

Mode Active-Passive

Device priority 128 or higher

Group name Example_cluster

Heartbeat interfaces ha1 and ha2

Except for the device priority, these settings must be the same on all FortiGates in the cluster.

 4. Leave the remaining settings  as their default values. They can be changed after the cluster is in operation.
 5. Click OK.
The FortiGate negotiates to establish an HA cluster. Connectivity with the FortiGate may be temporarily lost as the 
HA cluster negotiates and the FGCP changes the MAC addresses of the FortiGate's interfaces.
 6. Factory reset the other FortiGate that will be in the cluster, configure GUI access, then repeat steps 1 to 5, omitting 
setting the device priority, to join the cluster.

To set up an HA A-P cluster using the CLI:

 1. Make all the necessary connections as shown in the topology diagram.
 2. Log into one of the FortiGates.
 3. Change the hostname of the FortiGate:
config system global
set hostname Example1_host
end

Changing the host name makes it easier to identify individual cluster units in the cluster operations.
 4. Enable HA:
config system ha
set mode a-p
set group-name Example_cluster

FortiOS 6.4.6 Administration Guide 847


Fortinet Technologies Inc.
System

set hbdev ha1 10 ha2 20


end

 5. Leave the remaining settings  as their default values. They can be changed after the cluster is in operation.
 6. Repeat steps 1 to 5 on the other FortiGate devices to join the cluster.

HA active-active cluster setup

An HA Active-Active (A-A) cluster can be set up using the GUI or CLI.
This example uses the following network topology:

To set up an HA A-A cluster using the GUI:

 1. Make all the necessary connections as shown in the topology diagram.
 2. Log into one of the FortiGates.
 3. Go to System > HA and set the following options:

Mode Active-Active

Device priority 128 or higher

Group name Example_cluster

Heartbeat interfaces ha1 and ha2

Except for the device priority, these settings must be the same on all FortiGates in the cluster.

FortiOS 6.4.6 Administration Guide 848


Fortinet Technologies Inc.
System

 4. Leave the remaining settings  as their default values. They can be changed after the cluster is in operation.
 5. Click OK.
The FortiGate negotiates to establish an HA cluster. Connectivity with the FortiGate may be temporarily lost as the 
HA cluster negotiates and the FGCP changes the MAC addresses of the FortiGate's interfaces.
 6. Factory reset the other FortiGate that will be in the cluster, configure GUI access, then repeat steps 1 to 5, omitting 
setting the device priority, to join the cluster.

To set up an HA A-A cluster using the CLI:

 1. Make all the necessary connections as shown in the topology diagram.
 2. Log into one of the FortiGates.
 3. Change the hostname of the FortiGate:
config system global
set hostname Example1_host
end

Changing the host name makes it easier to identify individual cluster units in the cluster operations.
 4. Enable HA:
config system ha
set mode a-a
set group-name Example_cluster
set hbdev ha1 10 ha2 20
end

 5. Leave the remaining settings  as their default values. They can be changed after the cluster is in operation.
 6. Repeat steps 1 to 5 on the other FortiGate devices to join the cluster.

HA virtual cluster setup

An HA virtual cluster can be set up using the GUI or CLI.
This example uses the following network topology:

FortiOS 6.4.6 Administration Guide 849


Fortinet Technologies Inc.
System

HA virtual clusters are based on VDOMs and are more complicated than regular clusters.

The root VDOM can only be associated with virtual cluster 1.
The VDOM that is assigned as the management VDOM can also only be associated with 
virtual cluster 1.

To set up an HA virtual cluster using the GUI:

 1. Make all the necessary connections as shown in the topology diagram.
 2. Log into one of the FortiGates.
 3. Go to System > HA and set the following options:

Mode Active-Passive

Device priority 128 or higher

Group name Example_cluster

Heartbeat interfaces ha1 and ha2

Except for the device priority, these settings must be the same on all FortiGates in the cluster.
 4. Leave the remaining settings  as their default values. They can be changed after the cluster is in operation.
 5. Click OK.
The FortiGate negotiates to establish an HA cluster. Connectivity with the FortiGate may be temporarily lost as the 
HA cluster negotiates and the FGCP changes the MAC addresses of the FortiGate's interfaces.

FortiOS 6.4.6 Administration Guide 850


Fortinet Technologies Inc.
System

 6. Factory reset the other FortiGate that will be in the cluster, configure GUI access, then repeat steps 1 to 5, omitting 
setting the device priority, to join the cluster.
 7. Go to System > Settings and enable Virtual Domains. 
 8. Click Apply. You will be logged out of the FortiGate.
 9. Log back into the FortiGate, ensure that you are in the global VDOM, and go to System > VDOM.
 10. Create two new VDOMs, such as VD1 and VD2:
 a. Click Create New. The New Virtual Domain page opens.
 b. Enter a name for the VDOM in the Virtual Domain field, then click OK to create the VDOM.
 c. Repeat these steps to create a second new VDOM.
 11. Implement a virtual cluster by moving the new VDOMs to Virtual cluster 2:
 a. Go to System > HA.
 b. Enable VDOM Partitioning.
 c. Click on the Virtual cluster 2 field and select the new VDOMs.

 d. Click OK.

To set up an HA virtual cluster using the CLI:

 1. Make all the necessary connections as shown in the topology diagram.
 2. Set up a regular A-P cluster. See HA active-passive cluster setup on page 846.
 3. Enable VDOMs:
config system global
set vdom-mode multi-vdom
end

You will be logged out of the FortiGate.
 4. Create two VDOMs:
config vdom
edit VD1
next
edit VD2

FortiOS 6.4.6 Administration Guide 851


Fortinet Technologies Inc.
System

next
end

 5. Reconfigure the HA settings to be a virtual cluster:
config global
config system ha
set vcluster2 enable
config secondary-vcluster
set vdom "VD1" "VD2"
end
end
end

HA using a hardware switch to replace a physical switch

Using a hardware switch to replace a physical switch is not recommended, as it offers no redundancy or interface 
monitoring.
 l If one FortiGate loses power, all of the clients connected to that FortiGate device cannot go to another device until 
that FortiGate recovers. 
 l A hardware switch cannot be used as a monitor interface in HA. Any incoming or outgoing link failures on hardware 
member interfaces will not trigger failover; this can affect traffic.

Examples

The examples use the following topology:

Traffic between hardware switches

When using Hardware switch in HA environment, a client device connected to the hardware switch on the primary 
FortiGate can communicate with client devices connected to the hardware switch on secondary FortiGates as long as 
there is a direct connection between the two switches.
No configuration is required after setting up the hardware switches. If a client connected to both of the hardware switches 
needs to reach destinations outside of the cluster, the firewall must be configured for it.

FortiOS 6.4.6 Administration Guide 852


Fortinet Technologies Inc.
System

To configure the FortiGate devices:

 1. Connect the devices as shown in the topology diagram.
 2. On each FortiGate, configure HA:
config system ha
set mode a-a
set group-name Example_cluster
set hbdev ha1 10 ha2 20
end

 3. On the primary FortiGate, configure the hardware switch:
config system virtual-switch
edit Hardware-SW
set physical-switch sw0
config port
edit port3
next
edit port5
next
end
next
end

 4. On each FortiGate, configure the IP addresses on the hardware switches:
config system interface
edit Hardware-SW
set ip 6.6.6.1 255.255.255.0
set allowaccess ping ssh http https
next
end

After configuring the hardware switches, PC1 and PC2 can now communicate with each other.

Traffic passes through FortiGate

If client device needs to send traffic through the FortiGate, additional firewall configuration on the FortiGate is required.
All traffic from the hardware switches on either the primary or secondary FortiGate reaches the primary FortiGate first. 
The traffic is then directed according to the HA mode and firewall configuration.

To configure the FortiGate devices:

 1. Connect the devices as shown in the topology diagram.
 2. On each FortiGate, configure HA:
config system ha
set mode a-a
set group-name Example_cluster
set hbdev ha1 10 ha2 20
end

 3. On the primary FortiGate, configure the hardware switch:
config system virtual-switch
edit Hardware-SW

FortiOS 6.4.6 Administration Guide 853


Fortinet Technologies Inc.
System

set physical-switch sw0


config port
edit port3
next
edit port5
next
end
next
edit Hardware-SW2
set physical-switch sw0
config port
edit port1
next
end
next
end

 4. On each FortiGate, configure the IP addresses on the hardware switch:
config system interface
edit Hardware-SW
set ip 6.6.6.1 255.255.255.0
set allowaccess ping ssh http https
next
edit Hardware-SW2
set ip 172.16.200.1 255.255.255.0
set allowaccess ping ssh http https
next
end

 5. On each FortiGate, configure a firewall policy:
config firewall policy
edit 1
set srcintf Hardware-SW
set dstintf Hardware-SW2
set srcaddr all
set dstaddr all
set service ALL
set action accept
set schedule always
set nat enable
next
end

 6. On each FortiGate, configure a static route:
config router static
edit 1
set device Hardware-SW2
set gateway 172.16.200.254
next
end

Traffic from PC1 and PC2 can now reach destinations outside of the FortiGate cluster.

FortiOS 6.4.6 Administration Guide 854


Fortinet Technologies Inc.
System

FGSP example with devices using different hardware and firmware

This example demonstrates the following functionalities between different FortiGate models and firmware running the 
FortiGate Session Life Support Protocol (FGSP):
 l Session synchronization between all FGSP members on page 886
 l Session continuation while FGSP members fail on page 889
In this setup, it is possible to migrate to new FortiGate members that are different models while minimizing traffic 
interruptions. It is also possible to offload traffic to new FortiGate members in order to perform maintenance duties on the 
original FGSP members.

Session synchronization between all FGSP members

Session synchronization between FGSP members with the same firmware occurs when cluster-sync peers are 
specified, and the types of traffic to be synchronized are specified under config system ha. An external router or 
load-balancer directs the traffic to the peers. Sessions are then synchronized between the peers.
In this example, instead of configuring two FortiGates of the same model and firmware together in FGSP,  a third 
FortiGate is added with  a different model running different firmware. Once peering is established, sessions are 
synchronized between the members.
The diagnose sys session {sync | list} commands can be used to verify session synchronization.

Prerequisites

The following conditions are required for session synchronization to occur:
 l The VDOMs must be identical between FGSP members.
 l The names of the logical interfaces used for traffic policies must match between FGSP members, even if their 
underlying physical interfaces are different.
 l The names of the IPsec tunnel interfaces must match between FGSP members.
 l Identical policy tables should be used.
See Session synchronization between all FGSP members on page 886 for the results.

Session continuation while FGSP members fail

This example also demonstrates a failure where one member fails. In the topology, BGP routing on page 858 with AS-
Path prepending is used so that traffic through one FortiGate is always preferred. However, any type of routing or 
external load-balancer can be used.
When the member that is actively passing traffic goes down, routing updates ensure a path to the next preferred 
FortiGate. As traffic is directed to the next FGSP member, previous sessions are already synchronized so traffic 
continues to flow through this firewall.
See Session continuation while FGSP members fail on page 889 for the results.

Devices

The following devices are used:

FortiOS 6.4.6 Administration Guide 855


Fortinet Technologies Inc.
System

 l FG-3400-1: FortiGate 3401E running FortiOS 6.2.3 (build 1066)
 l FG-3600-1: FortiGate 3601E running FortiOS 6.4.0 (build 1571)
 l FG-3600-2: FortiGate 3601E running FortiOS 6.4.0 (build 1572)

This example demonstrates forming FGSP between specific FortiGate models and FortiOS 
firmware. In addition, it demonstrates a working scenario in a specific topology and 
configuration. Use caution when performing similar operations on different model units and 
firmware in production. 
It is strongly advised to first perform testing in a lab environment before deploying this in 
production. It is also advisable to be on site with physical access to each unit while performing 
these operations to ensure business continuity in any unforeseen situations.
See FGSP for more information about FGSP support and limitations.

Physical topology

FG-3400-1,  FG-3600-1, and FG-3600-2 are FGSP members. The Simulator FG-3600 has multiple VDOMs, acting as 
both the CORP firewall and firewalls in the cloud. The Tester is a traffic generator for simulating traffic.
In this example, the traffic makes the following round-trip: Tester > Simulator FG-3600 > Active FGSP member >  
Simulator FG-3600 > Tester.
See the logical topologies for more details:
 l Configuring the FortiGate 3400-1 on page 858
 l Configuring the FortiGate 3600-1 on page 866
 l Configuring the FortiGate 3600-2 on page 874
Identical policies are configured on each VDOM of each FGSP member. Each interface, VIP, and IP pool are configured 
with the same names.

HA configurations

For the HA configurations, each device peers with the other member devices by specifying their peer IP.

FortiOS 6.4.6 Administration Guide 856


Fortinet Technologies Inc.
System

To configure HA on FG-3400-1:

The IP of this device is 10.0.0.73 and it is running FortiOS 6.2.3.
config system cluster-sync
edit 1
set peerip 10.0.0.82
set ipsec-tunnel-sync disable
next
edit 2
set peerip 10.0.0.8
set ipsec-tunnel-sync disable
next
end

To configure HA on FG-3600-1:

The IP of this device is 10.0.0.82 and it is running FortiOS 6.4.0. 
config system standalone-cluster
set standalone-group-id 1
set group-member-id 1
end

In FortiOS 6.4.0, config system standalone-cluster is used to configure session 


synchronization. The standalone-group-id must be the same among members.

config system cluster-sync


edit 1
set peerip 10.0.0.73
set ipsec-tunnel-sync disable
next
edit 2
set peerip 10.0.0.8
set ipsec-tunnel-sync disable
next
end

To configure HA on FG-3600-2:

The IP of this device is 10.0.0.8 and it is running FortiOS 6.4.0.
config system standalone-cluster
set standalone-group-id 1
set group-member-id 1
end
config system cluster-sync
edit 1
set peerip 10.0.0.73
set ipsec-tunnel-sync disable
next
edit 2
set peerip 10.0.0.82
set ipsec-tunnel-sync disable

FortiOS 6.4.6 Administration Guide 857


Fortinet Technologies Inc.
System

next
end

To configure the types of sessions to synchronize on each FortiGate:

config system ha
set session-pickup enable
set session-pickup-connectionless enable
set session-pickup-expectation enable
set session-pickup-nat enable
end

BGP routing

FGSP does not natively perform session load-balancing or session failover. These are done by external load-balancers 
or routers. BGP routing is used in this example to control which FGSP member receives traffic when one member goes 
down:
 l There is BGP peering on all interfaces, and route maps are used to control route propagation between neighbors.
 l AS-Path prepending is used to guarantee the traffic flow on the same device.
 l For routes announced via the FG-3600-1 and FG-3600-2, an extra AS is added to the route map so that the 
preferred routes are on the FG-3400E-1.
 l For the overlapping subnet between the Customer cloud and CORP, there are two IPsec VPN tunnels created on 
the Customer VDOM on the FGSP member FortiGates. There is BGP running over the IPsec tunnel.
 l IPsec SA synchronization between members is disabled in order to avoid conflict.
See Routes learned by the simulator FortiGate 3600E  on page 882 for more information.

Configuring the FortiGate 3400-1

The FG-3400-1 is running FortiOS 6.2.3 (build 1066) and has the following local topology:

FortiOS 6.4.6 Administration Guide 858


Fortinet Technologies Inc.
System

Configured VDOMs:

Configuring BGP

To configure the root VDOM:

config router prefix-list


edit "Subnet_192.168.254"
config rule
edit 1
set prefix 192.168.254.0 255.255.255.0
unset ge
unset le
next
end
next
edit "Subnet_172.26"
config rule

FortiOS 6.4.6 Administration Guide 859


Fortinet Technologies Inc.
System

edit 1
set prefix 172.26.1.0 255.255.255.0
unset ge
unset le
next
edit 2
set prefix 172.26.2.0 255.255.255.0
unset ge
unset le
next
end
next
edit "Subnet_192_168_255_128"
config rule
edit 1
set prefix 192.168.254.0 255.255.254.0
unset ge
unset le
next
end
next
edit "Subnet_192_168_255_0"
config rule
edit 1
set prefix 192.168.255.0 255.255.255.0
unset ge
unset le
next
end
next
edit "CORP_LAN"
config rule
edit 1
set prefix 192.168.2.0 255.255.255.0
unset ge
unset le
next
end
next
end
config router route-map
edit "Subnet_192.168.254"
config rule
edit 1
set match-ip-address "Subnet_192.168.254"
next
end
next
edit "To_CORP"
config rule
edit 1
set match-ip-address "Subnet_172.26"
next
edit 2
set match-ip-address "Subnet_192.168.254"
next

FortiOS 6.4.6 Administration Guide 860


Fortinet Technologies Inc.
System

end
next
edit "To_Cust_VDOM"
config rule
edit 1
set match-ip-address "Subnet_192_168_255_0"
next
end
next
edit "CORP_LAN_ToCloud"
config rule
edit 1
set match-ip-address "CORP_LAN"
next
end
next
end
config router bgp
set as 64512
set keepalive-timer 1
set holdtime-timer 3
set network-import-check disable
config neighbor
edit "10.100.255.254"
set remote-as 64513
set route-map-out "CORP_LAN_ToCloud"
next
edit "10.102.255.254"
set remote-as 64515
set route-map-out "To_Cust_VDOM"
next
edit "10.101.255.254"
set remote-as 64514
set route-map-out "CORP_LAN_ToCloud"
next
edit "192.168.1.1"
set remote-as 64530
set route-map-out "To_CORP"
next
end
config network
edit 1
set prefix 192.168.255.0 255.255.255.0
next
end
end

To configure the Azure VDOM:

config router bgp


set as 64513
set keepalive-timer 1
set holdtime-timer 3
config neighbor
edit "10.100.255.253"
set remote-as 64512

FortiOS 6.4.6 Administration Guide 861


Fortinet Technologies Inc.
System

next
edit "172.16.2.1"
set remote-as 64516
next
end
end

To configure the AWS VDOM:

config router bgp


set as 64514
set keepalive-timer 1
set holdtime-timer 3
config neighbor
edit "10.101.255.253"
set remote-as 64512
next
edit "172.16.1.1"
set remote-as 64517
next
end
end

To configure the Customer VDOM:

config router prefix-list


edit "Subnet_192_168_254_0"
config rule
edit 1
set prefix 192.168.254.0 255.255.255.0
unset ge
unset le
next
end
next
edit "Subnet_192.168.255.0"
config rule
edit 1
set prefix 192.168.255.0 255.255.255.0
unset ge
unset le
next
end
next
end
config router route-map
edit "To_CORP_Side"
config rule
edit 1
set match-ip-address "Subnet_192_168_254_0"
next
end
next
edit "To_Customer"
config rule

FortiOS 6.4.6 Administration Guide 862


Fortinet Technologies Inc.
System

edit 1
set match-ip-address "Subnet_192.168.255.0"
next
end
next
end
config router static
edit 1
set dst 10.200.255.252 255.255.255.252
set gateway 172.16.1.1
set device "VLAN_Cust"
next
end
config router bgp
set as 64515
set keepalive-timer 1
set holdtime-timer 3
set network-import-check disable
config neighbor
edit "10.102.255.253"
set remote-as 64512
set route-map-out "To_CORP_Side"
next
edit "10.201.255.254"
set remote-as 64518
set route-map-out "To_Customer"
next
end
config network
edit 1
set prefix 192.168.254.0 255.255.255.0
next
edit 2
set prefix 192.168.254.128 255.255.255.128
next
end
end

Configuring the policies

To configure the root VDOM:

config firewall ippool


edit "Pool"
set startip 192.168.255.1
set endip 192.168.255.127
next
end
config firewall vip
edit "VIPCust"
set extip 192.168.255.129-192.168.255.254
set extintf "Root_Cust"
set color 7
set mappedip "192.168.2.129-192.168.2.254"

FortiOS 6.4.6 Administration Guide 863


Fortinet Technologies Inc.
System

next
end
config firewall policy
edit 2
set name "VIP_2_CORP"
set srcintf "Root_Cust"
set dstintf "CORP_LAN"
set srcaddr "all"
set dstaddr "VIPCust"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
edit 3
set name "CORP_2_Customer"
set srcintf "CORP_LAN"
set dstintf "Root_Cust"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set ippool enable
set poolname "Pool"
set nat enable
next
edit 1
set name "policy"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
end

To configure the Azure VDOM:

config firewall policy


edit 1
set name "policy"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic disable
next
end

FortiOS 6.4.6 Administration Guide 864


Fortinet Technologies Inc.
System

To configure the AWS VDOM:

config firewall policy


edit 1
set name "policy"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic disable
next
end

To configure the Customer VDOM:

config firewall ippool


edit "Pool"
set startip 192.168.254.1
set endip 192.168.254.127
next
end
config firewall vip
edit "VIP_2Customer"
set extip 192.168.254.129-192.168.254.254
set extintf "Cust_Root"
set mappedip "192.168.2.129-192.168.2.254"
next
end
config firewall policy
edit 3
set name "toCORPNetwork"
set srcintf "to_Customer"
set dstintf "Cust_Root"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set ippool enable
set poolname "Pool"
set nat enable
next
edit 2
set name "VIP"
set srcintf "Cust_Root"
set dstintf "to_Customer"
set srcaddr "all"
set dstaddr "VIP_2Customer"
set action accept
set schedule "always"
set service "ALL"

FortiOS 6.4.6 Administration Guide 865


Fortinet Technologies Inc.
System

set logtraffic all


next
edit 1
set name "policy"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
end

Configuring the FortiGate 3600-1

The FG-3600-1 is running FortiOS 6.4.0 (build 1571) and has the following local topology:

Configured VDOMs:

FortiOS 6.4.6 Administration Guide 866


Fortinet Technologies Inc.
System

Configuring BGP

To configure the root VDOM:

config router prefix-list


edit "allroutes"
config rule
edit 1
set prefix 0.0.0.0 0.0.0.0
unset ge
unset le
next
end
next
edit "Subnet_192.168.254"
config rule
edit 1
set prefix 192.168.254.0 255.255.255.0
unset ge
unset le
next
end
next
edit "Subnet_172.26"
config rule
edit 1
set prefix 172.26.1.0 255.255.255.0
unset ge
unset le
next
edit 2
set prefix 172.26.2.0 255.255.255.0
unset ge
unset le
next
end
next
edit "Subnet_192_168_255_128"
config rule
edit 1
set prefix 192.168.254.0 255.255.254.0
unset ge
unset le
next
end
next
edit "Subnet_192_168_255_0"
config rule
edit 1
set prefix 192.168.255.0 255.255.255.0
unset ge
unset le
next
end
next
edit "CORP_LAN"

FortiOS 6.4.6 Administration Guide 867


Fortinet Technologies Inc.
System

config rule
edit 1
set prefix 192.168.2.0 255.255.255.0
unset ge
unset le
next
end
next
end

config router route-map


edit "allroutes"
config rule
edit 1
set match-ip-address "allroutes"
set set-aspath "65001"
next
end
next
edit "To_CORP"
config rule
edit 1
set match-ip-address "Subnet_172.26"
set set-aspath "65001"
next
edit 2
set match-ip-address "Subnet_192.168.254"
set set-aspath "65001"
next
end
next
edit "Subnet_192.168.254"
config rule
edit 1
set match-ip-address "Subnet_192.168.254"
next
end
next
edit "To_Cust_VDOM"
config rule
edit 1
set match-ip-address "Subnet_192_168_255_0"
set set-aspath "65001"
next
end
next
edit "CORP_LAN_ToCloud"
config rule
edit 1
set match-ip-address "CORP_LAN"
set set-aspath "65001"
next
end
next
end

FortiOS 6.4.6 Administration Guide 868


Fortinet Technologies Inc.
System

config router bgp


set as 64522
set keepalive-timer 1
set holdtime-timer 3
set network-import-check disable
config neighbor
edit "10.100.253.254"
set remote-as 64523
set route-map-out "CORP_LAN_ToCloud"
next
edit "10.101.253.254"
set remote-as 64524
set route-map-out "CORP_LAN_ToCloud"
next
edit "10.102.253.254"
set remote-as 64525
set route-map-out "To_Cust_VDOM"
next
edit "192.168.1.1"
set remote-as 64530
set route-map-out "To_CORP"
next
end
end

To configure the Azure VDOM:

config router bgp


set as 64523
set keepalive-timer 1
set holdtime-timer 3
config neighbor
edit "10.100.253.253"
set remote-as 64522
next
edit "172.16.2.1"
set remote-as 64516
next
end
end

To configure the AWS VDOM:

config router bgp


set as 64524
set keepalive-timer 1
set holdtime-timer 3
config neighbor
edit "10.101.253.253"
set remote-as 64522
next
edit "172.16.1.1"
set remote-as 64517
next
end
end

FortiOS 6.4.6 Administration Guide 869


Fortinet Technologies Inc.
System

To configure the Customer VDOM:

config router prefix-list


edit "Subnet_192_168_255_0"
config rule
edit 1
set prefix 192.168.255.0 255.255.255.0
unset ge
unset le
next
end
next
edit "Subnet_192_168_254_0"
config rule
edit 1
set prefix 192.168.254.0 255.255.255.0
unset ge
unset le
next
end
next
end
config router route-map
edit "To_CORP_Side"
config rule
edit 1
set match-ip-address "Subnet_192_168_254_0"
next
end
next
edit "To_Cust_Side"
config rule
edit 1
set match-ip-address "Subnet_192_168_255_0"
set set-aspath "65002"
next
end
next
end
config router route-map
edit "To_CORP_Side"
config rule
edit 1
set match-ip-address "Subnet_192_168_254_0"
next
end
next
edit "To_Cust_Side"
config rule
edit 1
set match-ip-address "Subnet_192_168_255_0"
set set-aspath "65002"
next
end

FortiOS 6.4.6 Administration Guide 870


Fortinet Technologies Inc.
System

next
end
config router static
edit 1
set dst 10.200.255.252 255.255.255.252
set gateway 172.16.1.1
set device "VLAN_Cust"
next
end
config router bgp
set as 64525
set keepalive-timer 1
set holdtime-timer 3
set network-import-check disable
config neighbor
edit "10.102.253.253"
set remote-as 64522
set route-map-out "To_CORP_Side"
next
edit "10.202.255.254"
set remote-as 64518
set route-map-out "To_Cust_Side"
next
end
config network
edit 1
set prefix 192.168.254.0 255.255.255.0
next
edit 2
set prefix 192.168.254.128 255.255.255.128
next
end
end

Configuring the policies

To configure the root VDOM:

config firewall ippool


edit "Pool"
set startip 192.168.255.1
set endip 192.168.255.127
next
end
config firewall vip
edit "VIPCust"
set extip 192.168.255.129-192.168.255.254
set extintf "Root_Cust"
set color 7
set mappedip "192.168.2.129-192.168.2.254"
next
end

FortiOS 6.4.6 Administration Guide 871


Fortinet Technologies Inc.
System

config firewall policy


edit 2
set name "VIP_2_CORP"
set srcintf "Root_Cust"
set dstintf "CORP_LAN"
set srcaddr "all"
set dstaddr "VIPCust"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
edit 3
set name "CORP_2_Customer"
set srcintf "CORP_LAN"
set dstintf "Root_Cust"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set ippool enable
set poolname "Pool"
set nat enable
next
edit 1
set name "policy"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
end

To configure the Azure VDOM:

config firewall policy


edit 1
set name "policy"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic disable
next
end

FortiOS 6.4.6 Administration Guide 872


Fortinet Technologies Inc.
System

To configure the AWS VDOM:

config firewall policy


edit 1
set name "policy"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic disable
next
end

To configure the Customer VDOM:

config firewall ippool


edit "Pool"
set startip 192.168.254.1
set endip 192.168.254.127
next
end
config firewall vip
edit "VIP_2Customer"
set extip 192.168.254.129-192.168.254.254
set extintf "Cust_Root"
set mappedip "192.168.2.129-192.168.2.254"
next
end
config firewall policy
edit 3
set name "toCORPNetwork"
set srcintf "to_Customer"
set dstintf "Cust_Root"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set ippool enable
set poolname "Pool"
set nat enable
next
edit 2
set name "VIP"
set srcintf "Cust_Root"
set dstintf "to_Customer"
set srcaddr "all"
set dstaddr "VIP_2Customer"
set action accept
set schedule "always"
set service "ALL"

FortiOS 6.4.6 Administration Guide 873


Fortinet Technologies Inc.
System

set logtraffic all


next
edit 1
set name "policy"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
end

Configuring the FortiGate 3600-2

The FG-3600-2 is running FortiOS 6.4.0 (build 1572) and has the following local topology:

Configured VDOMs:

FortiOS 6.4.6 Administration Guide 874


Fortinet Technologies Inc.
System

Configuring BGP

To configure the root VDOM:

config router prefix-list


edit "allroutes"
config rule
edit 1
set prefix 0.0.0.0 0.0.0.0
unset ge
unset le
next
end
next
edit "Subnet_192.168.254"
config rule
edit 1
set prefix 192.168.254.0 255.255.255.0
unset ge
unset le
next
end
next
edit "Subnet_172.26"
config rule
edit 1
set prefix 172.26.1.0 255.255.255.0
unset ge
unset le
next
edit 2
set prefix 172.26.2.0 255.255.255.0
unset ge
unset le
next
end
next
edit "Subnet_192_168_255_128"
config rule
edit 1
set prefix 192.168.254.0 255.255.254.0
unset ge
unset le
next
end
next
edit "Subnet_192_168_255_0"
config rule
edit 1
set prefix 192.168.255.0 255.255.255.0
unset ge
unset le
next
end
next
edit "CORP_LAN"

FortiOS 6.4.6 Administration Guide 875


Fortinet Technologies Inc.
System

config rule
edit 1
set prefix 192.168.2.0 255.255.255.0
unset ge
unset le
next
end
next
end
config router route-map
edit "allroutes"
config rule
edit 1
set match-ip-address "allroutes"
set set-aspath "65001"
next
end
next
edit "To_CORP"
config rule
edit 1
set match-ip-address "Subnet_172.26"
set set-aspath "65001" "65002"
next
edit 2
set match-ip-address "Subnet_192.168.254"
set set-aspath "65001" "65002"
next
end
next
edit "Subnet_192.168.254"
config rule
edit 1
set match-ip-address "Subnet_192.168.254"
next
end
next
edit "To_Cust_VDOM"
config rule
edit 1
set match-ip-address "Subnet_192_168_255_0"
set set-aspath "65001" "65002"
next
end
next
edit "CORP_LAN_ToCloud"
config rule
edit 1
set match-ip-address "CORP_LAN"
set set-aspath "65001 65001"
next
end
next
end

FortiOS 6.4.6 Administration Guide 876


Fortinet Technologies Inc.
System

config router bgp


set as 64532
set keepalive-timer 1
set holdtime-timer 3
set network-import-check disable
config neighbor
edit "10.100.253.254"
set remote-as 64533
set route-map-out "CORP_LAN_ToCloud"
next
edit "10.101.253.254"
set remote-as 64534
set route-map-out "CORP_LAN_ToCloud"
next
edit "10.102.253.254"
set remote-as 64535
set route-map-out "To_Cust_VDOM"
next
edit "192.168.1.1"
set remote-as 64530
set route-map-out "To_CORP"
next
end
config network
edit 1
set prefix 192.168.255.0 255.255.255.0
next
end
end

To configure the Azure VDOM:

config router bgp


set as 64533
set keepalive-timer 1
set holdtime-timer 3
config neighbor
edit "10.100.253.253"
set remote-as 64532
next
edit "172.16.2.1"
set remote-as 64516
next
end
end

To configure the AWS VDOM:

config router bgp


set as 64534
set keepalive-timer 1
set holdtime-timer 3
config neighbor
edit "10.101.253.253"
set remote-as 64532
next

FortiOS 6.4.6 Administration Guide 877


Fortinet Technologies Inc.
System

edit "172.16.1.1"
set remote-as 64517
next
end
end

To configure the Customer VDOM:

config router prefix-list


edit "Subnet_192_168_255_0"
config rule
edit 1
set prefix 192.168.255.0 255.255.255.0
unset ge
unset le
next
end
next
edit "Subnet_192_168_254_0"
config rule
edit 1
set prefix 192.168.254.0 255.255.255.0
unset ge
unset le
next
end
next
end
config router route-map
edit "To_CORP_Side"
config rule
edit 1
set match-ip-address "Subnet_192_168_254_0"
next
end
next
edit "To_Cust_Side"
config rule
edit 1
set match-ip-address "Subnet_192_168_255_0"
set set-aspath "65002" "65003"
next
end
next
end
config router static
edit 1
set dst 10.200.255.252 255.255.255.252
set gateway 172.16.1.1
set device "VLAN_Cust"
next
end
config router bgp
set as 64535

FortiOS 6.4.6 Administration Guide 878


Fortinet Technologies Inc.
System

set keepalive-timer 1
set holdtime-timer 3
set network-import-check disable
config neighbor
edit "10.102.253.253"
set remote-as 64532
set route-map-out "To_CORP_Side"
next
edit "10.203.255.254"
set remote-as 64518
set route-map-out "To_Cust_Side"
next
end
config network
edit 1
set prefix 192.168.254.0 255.255.255.0
next
edit 2
set prefix 192.168.254.128 255.255.255.128
next
end
end

Configuring the policies

To configure the root VDOM:

config firewall ippool


edit "Pool"
set startip 192.168.255.1
set endip 192.168.255.127
next
end
config firewall vip
edit "VIPCust"
set extip 192.168.255.129-192.168.255.254
set extintf "Root_Cust"
set color 7
set mappedip "192.168.2.129-192.168.2.254"
next
end
config firewall policy
edit 2
set name "VIP_2_CORP"
set srcintf "Root_Cust"
set dstintf "CORP_LAN"
set srcaddr "all"
set dstaddr "VIPCust"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
edit 3
set name "CORP_2_Customer"

FortiOS 6.4.6 Administration Guide 879


Fortinet Technologies Inc.
System

set srcintf "CORP_LAN"


set dstintf "Root_Cust"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set ippool enable
set poolname "Pool"
set nat enable
next
edit 1
set name "policy"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
end

To configure the Azure VDOM:

config firewall policy


edit 1
set name "policy"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic disable
next
end

To configure the AWS VDOM:

config firewall policy


edit 1
set name "policy"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic disable
next
end

FortiOS 6.4.6 Administration Guide 880


Fortinet Technologies Inc.
System

To configure the Customer VDOM:

config firewall ippool


edit "Pool"
set startip 192.168.254.1
set endip 192.168.254.127
next
end
config firewall vip
edit "VIP_2Customer"
set extip 192.168.254.129-192.168.254.254
set extintf "Cust_Root"
set mappedip "192.168.2.129-192.168.2.254"
next
end
config firewall policy
edit 3
set name "toCORPNetwork"
set srcintf "to_Customer"
set dstintf "Cust_Root"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set ippool enable
set poolname "Pool"
set nat enable
next
edit 2
set name "VIP"
set srcintf "Cust_Root"
set dstintf "to_Customer"
set srcaddr "all"
set dstaddr "VIP_2Customer"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
edit 1
set name "policy"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
end

FortiOS 6.4.6 Administration Guide 881


Fortinet Technologies Inc.
System

Routes learned by the simulator FortiGate 3600E

The following routes are learned by the simulator FG-3600E (CORP_SIM_3600E) in each of its VDOMs.

Simulator-side routing in AWS (AS 64517):

CORP_SIM_3600E (AWS) # get router info routing-table all

Routing table for VRF=0


Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

C 10.200.255.252/30 is directly connected, AWS_Cust


C 172.16.1.0/24 is directly connected, VLAN_AWS
C 172.26.1.0/24 is directly connected, AWS_Tester
B 192.168.2.0/24 [20/0] via 172.16.1.254, VLAN_AWS, 12:59:18

CORP_SIM_3600E (AWS) # get router info bgp summary


BGP router identifier 172.26.1.254, local AS number 64517
BGP table version is 3
19 BGP AS-PATH entries
0 BGP community entries

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd


172.16.1.252 4 64534 52526 52565 2 0 0 12:58:15 1
172.16.1.253 4 64524 56475 56493 1 0 0 12:58:17 1
172.16.1.254 4 64514 54271 54310 2 0 0 12:58:14 1

Total number of neighbors 3


CORP_SIM_3600E (AWS) # get router info bgp network 192.168.2.0
BGP routing table entry for 192.168.2.0/24
Paths: (3 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
64514 64512 64530
172.16.1.254 from 172.16.1.254 (10.101.255.254)
Origin IGP metric 0, localpref 100, valid, external, best
Last update: Wed Mar 25 17:20:12 2020

64534 64532 65001 65001 64530


172.16.1.252 from 172.16.1.252 (172.16.1.252)
Origin IGP metric 0, localpref 100, valid, external
Last update: Wed Mar 25 17:20:10 2020

64524 64522 65001 64530


172.16.1.253 from 172.16.1.253 (172.16.1.253)
Origin IGP metric 0, localpref 100, valid, external
Last update: Wed Mar 25 17:20:10 2020

FortiOS 6.4.6 Administration Guide 882


Fortinet Technologies Inc.
System

Simulator-side routing in Azure (AS 64516):

CORP_SIM_3600E (Azure) # get router info routing-table all

Routing table for VRF=0


Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

C 172.16.2.0/24 is directly connected, VLAN_Azure


C 172.26.2.0/24 is directly connected, Azure_Traffic
B 192.168.2.0/24 [20/0] via 172.16.2.254, VLAN_Azure, 12:54:58
CORP_SIM_3600E (Azure) # get router info bgp summary
BGP router identifier 172.26.2.254, local AS number 64516
BGP table version is 2
19 BGP AS-PATH entries
0 BGP community entries

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd


172.16.2.252 4 64533 51969 51975 1 0 0 12:55:27 1
172.16.2.253 4 64523 56446 56471 1 0 0 12:55:27 1
172.16.2.254 4 64513 54394 54440 1 0 0 12:55:27 1
CORP_SIM_3600E (Azure) # get router info bgp network 192.168.2.0
BGP routing table entry for 192.168.2.0/24
Paths: (3 available, best #2, table Default-IP-Routing-Table)
Not advertised to any peer
64523 64522 65001 64530
172.16.2.253 from 172.16.2.253 (172.16.2.253)
Origin IGP metric 0, localpref 100, valid, external
Last update: Wed Mar 25 17:25:09 2020

64513 64512 64530


172.16.2.254 from 172.16.2.254 (10.100.255.254)
Origin IGP metric 0, localpref 100, valid, external, best
Last update: Wed Mar 25 17:25:08 2020

64533 64532 65001 65001 64530


172.16.2.252 from 172.16.2.252 (172.16.2.252)
Origin IGP metric 0, localpref 100, valid, external
Last update: Wed Mar 25 17:25:08 2020

Simulator-side routing in Customer (AS 64518):

config system interface


edit "to_3400E_FGCP"
set vdom "Cust"
set ip 10.201.255.254 255.255.255.255
set type tunnel
set remote-ip 10.201.255.253 255.255.255.255
set snmp-index 61
set interface "Cust_AWS"
next

FortiOS 6.4.6 Administration Guide 883


Fortinet Technologies Inc.
System

edit "to_3600E_FGCP"
set vdom "Cust"
set ip 10.202.255.254 255.255.255.255
set type tunnel
set remote-ip 10.202.255.253 255.255.255.255
set snmp-index 68
set interface "Cust_AWS"
next
edit "Next_3600E"
set vdom "Cust"
set ip 10.203.255.254 255.255.255.255
set type tunnel
set remote-ip 10.203.255.253 255.255.255.255
set snmp-index 69
set interface "Cust_AWS"
next
end
CORP_SIM_3600E (Cust) # get router info routing-table all

Routing table for VRF=0


Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

C 10.200.255.252/30 is directly connected, Cust_AWS


C 10.201.255.253/32 is directly connected, to_3400E_FGCP
C 10.201.255.254/32 is directly connected, to_3400E_FGCP
C 10.202.255.253/32 is directly connected, to_3600E_FGCP
C 10.202.255.254/32 is directly connected, to_3600E_FGCP
C 10.203.255.253/32 is directly connected, New_3600E
C 10.203.255.254/32 is directly connected, New_3600E
S 172.16.1.0/24 [10/0] via 10.200.255.254, Cust_AWS
C 192.168.2.0/24 is directly connected, Customer_traff
B 192.168.255.0/24 [20/0] via 10.201.255.253, to_3400E_FGCP, 13:36:43
CORP_SIM_3600E (Cust) # get router info bgp summary
BGP router identifier 192.168.2.254, local AS number 64518
BGP table version is 23
19 BGP AS-PATH entries
0 BGP community entries

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd


10.201.255.253 4 64515 54421 54447 21 0 0 13:37:15 1
10.202.255.253 4 64525 56726 56754 19 0 0 14:19:47 1
10.203.255.253 4 64535 50853 50860 22 0 0 13:20:13 1

Total number of neighbors 3


CORP_SIM_3600E (Cust) # get router info bgp network 192.168.255.0
BGP routing table entry for 192.168.255.0/24
Paths: (3 available, best #2, table Default-IP-Routing-Table)
Not advertised to any peer
64535 65002 65003 64532 65001 65002
10.203.255.253 from 10.203.255.253 (172.16.1.202)

FortiOS 6.4.6 Administration Guide 884


Fortinet Technologies Inc.
System

Origin IGP metric 0, localpref 100, valid, external


Last update: Wed Mar 25 17:02:51 2020

64515 64512
10.201.255.253 from 10.201.255.253 (10.201.255.253)
Origin IGP metric 0, localpref 100, valid, external, best
Last update: Wed Mar 25 16:45:21 2020

64525 65002 64522 65001


10.202.255.253 from 10.202.255.253 (172.16.1.201)
Origin IGP metric 0, localpref 100, valid, external
Last update: Wed Mar 25 16:02:49 2020

Simulator-side routing in CORP LAN (AS 64530):

CORP_SIM_3600E (CORP) # get router info routing-table all

Routing table for VRF=0


Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

B 172.26.1.0/24 [20/0] via 192.168.1.254, VLAN_CORP, 13:03:47


B 172.26.2.0/24 [20/0] via 192.168.1.254, VLAN_CORP, 12:58:32
C 192.168.1.0/24 is directly connected, VLAN_CORP
C 192.168.2.0/24 is directly connected, port32
B 192.168.254.0/24 [20/0] via 192.168.1.254, VLAN_CORP, 13:39:20
CORP_SIM_3600E (CORP) # get router info bgp summary
BGP router identifier 192.168.2.254, local AS number 64530
BGP table version is 13
19 BGP AS-PATH entries
0 BGP community entries

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd


192.168.1.252 4 64532 50642 50636 12 0 0 13:22:29 1
192.168.1.253 4 64522 4633 4619 4 0 0 1d18h52m 1
192.168.1.254 4 64512 54683 54685 11 0 0 13:39:33 1

Total number of neighbors 3


CORP_SIM_3600E (CORP) # get router info bgp network 192.168.254.0
BGP routing table entry for 192.168.254.0/24
Paths: (3 available, best #2, table Default-IP-Routing-Table)
Not advertised to any peer
64532 65001 65002 64535
192.168.1.252 from 192.168.1.252 (192.168.1.252)
Origin IGP metric 0, localpref 100, valid, external
Last update: Wed Mar 25 17:02:47 2020

64512 64515
192.168.1.254 from 192.168.1.254 (10.102.255.253)
Origin IGP metric 0, localpref 100, valid, external, best
Last update: Wed Mar 25 16:45:00 2020

FortiOS 6.4.6 Administration Guide 885


Fortinet Technologies Inc.
System

64522 65001 64525


192.168.1.253 from 192.168.1.253 (192.168.1.253)
Origin IGP metric 0, localpref 100, valid, external
Last update: Tue Mar 24 11:33:06 2020

Verification

Generate traffic from the Tester to target the following sessions numbers:
 l There will be 2500 sessions on each component between AWS-CORP, CORP-AWS, Azure-CORP, and CORP-
Azure.
 l There will be 200 sessions on each component between the Customer-CORP and CORP-Customer networks. 
These sessions are SNAT and DNAT on the corresponding VDOMs.
 l In order to observe failover cases to ensure that there is no session failure, the sessions will be opened, kept active, 
and data will be sent inside each session. When the target session number is reached, new sessions will no longer 
be created, but data will continue to be sent over the open sessions.

Session synchronization between all FGSP members

The VDOM data shows that the sessions are synchronized between FGSP members. Because the FG-3600-1 and FG-
3600-2 have AS-Path prepending, the FG-3400-1 is chosen as the preferred route. Sessions are synchronized among 
the FGSP members, but traffic only passes through the FG-3400-1.

Global VDOM

FG-3400-1:

FG-3600-1:

FG-3600-2:

FortiOS 6.4.6 Administration Guide 886


Fortinet Technologies Inc.
System

AWS VDOM

FG-3400-1:

FG-3600-1:

FG-3600-2:

Azure VDOM

FG-3400-1:

FG-3600-1:

FG-3600-2:

FortiOS 6.4.6 Administration Guide 887


Fortinet Technologies Inc.
System

Customer VDOM

FG-3400-1:

FG-3600-1:

FG-3600-2:

Root VDOM

FG-3400-1:

FG-3600-1:

FG-3600-2:

Example SNAT and DNAT output from Customer VDOM:

(Cust) # get system session list

FortiOS 6.4.6 Administration Guide 888


Fortinet Technologies Inc.
System

Session continuation while FGSP members fail

When the FG-3400-1 and FG-3600-1 are rebooted in that order, traffic continues to flow on FGSP members based on 
route preference.

FortiOS 6.4.6 Administration Guide 889


Fortinet Technologies Inc.
System

FG-3400-1 SNMP statistics during reboot test:

FG-3600-1 SNMP statistics during reboot test:

FortiOS 6.4.6 Administration Guide 890


Fortinet Technologies Inc.
System

FG-3600-2 SNMP statistics during reboot test:

Summary

In these two scenarios,  sessions are successfully synchronized between FGSP members with different models and 
firmware. In the event of failure, traffic successfully gets re-routed to the next preferred firewall and continues to flow.
These functions can be applied to broader use cases where a new FortiGate model can be rolled out into production with 
minimal downtime by using FGSP to peer with existing FortiGates and executing session synchronization. Another use 
case is to temporarily offload traffic to a standby FortiGate of a different model in order to performance maintenance on 
the production firewall.

HA between remote sites over managed FortiSwitches

In a multi-site FortiGate HA topology that uses managed FortiSwitches in a multi-chassis link aggregation group 
(MCLAG) to connect between sites, HA heartbeat signals can be sent through the switch layer of the FortiSwitches, 
instead of through back-to-back links between the heartbeat interfaces. This means that two fiber connections can be 
used, instead of four. The FortiSwitches can be different models, but must all support MCLAG and be running version 
6.4.2 or later.
This example shows how to configure heartbeat VLANs to assign to the access ports that the heartbeat interfaces 
connect to, passing over the trunk between the FortiSwitches on the two sites.

FortiOS 6.4.6 Administration Guide 891


Fortinet Technologies Inc.
System

FortiGate HA is with two FortiGates in separate locations and the switch layer connection between the FortiSwitches is 
used for the heartbeat signal.

To configure the example:

 1. Disconnect the physical connections between Site 1 and Site 2:
 l Disconnect the cable on Site 1 FSW-1 port 12.
 l Disconnect the cable on Site 1 FSW-2 port 10.

FortiOS 6.4.6 Administration Guide 892


Fortinet Technologies Inc.
System

 2. Configure Site 1:
 a. On the FortiGate, go to WiFi & Switch Controller > FortiLink Interface and configure FortiLink:

 b. Go to System > HA and configure HA:


 i. Set the heartbeat ports to the ports that are connected to FortiSwitch.
 ii. Adjust the priority and enable override so that this FortiGate becomes the primary.

 c. Go to WiFi & Switch Controller > FortiSwitch VLANs and create a switch VLAN that is dedicated to the 


FortiGate HA heartbeats between the two FortiGates.

FortiOS 6.4.6 Administration Guide 893


Fortinet Technologies Inc.
System

 d. Assign the native VLAN of the switch ports that are connected to the heartbeat ports to the created VLAN:
 i. Go to WiFi & Switch Controller > FortiSwitch Ports.
 ii. In the Native VLAN column for the port, click the edit icon and select the Heartbeat VLAN.

 e. On each FortiSwitch, enable MCLAG-ICL on the trunk port:
config switch trunk
edit D243Z17000032-0
set mclag-icl enable
next
end

 3. Configure Site 2 the same as Site 1, except set the HA priority so that the FortiGate becomes the secondary.
 4. Disconnect the physical connections for FortiGate HA and FortiLink interfaces on Site 2:
 l Disconnect the cable on Site 2 FSW-1 ports 47 and 48.
 l Disconnect the cable on Site 2 FSW-2 ports 47 and 48.
 5. Connect cables between the FortiSwitch MCLAG in Site 1 and Site 2:
 l Connect a cable from Site 1 FSW-1 port 12 to Site 2 FSW-1 port 22.
 l Connect a cable from Site 1 FSW-2 port 10 to Site 2 FSW-2 port 20.

FortiOS 6.4.6 Administration Guide 894


Fortinet Technologies Inc.
System

 6. On all of the FortiSwitches, configure the auto-isl-port-group. The group must match on both sides.
 a. Site 1 FSW-1:
Set members to the port that is connected to Site 2 FSW-1:
config switch auto-isl-port-group
edit 1
set members port12
next
end

 b.  Site 1 FSW-2:
Set members to the port that is connected to Site 1 FSW-1:
config switch auto-isl-port-group
edit 1
set members port22
next
end

 c.  Site 2 FSW-1:
Set members to the port that is connected to Site 2 FSW-2:
config switch auto-isl-port-group
edit 1
set members port10
next
end

 d.  Site 2 FSW-2:
Set members to the port that is connected to Site 1 FSW-2:
config switch auto-isl-port-group
edit 1
set members port20
next
end

 7. Connect the FortiGate HA and FortiLink interface connections on Site 2.
 8. Configure a firewall policy and route for traffic so that the client can reach the internet.
 9. Wait for HA to finish synchronizing and for all of the FortiSwitches to come online, then on FortiGate-1, go to WiFi &
Switch Controller > Managed FortiSwitch.
The page should look similar to the following:

FortiOS 6.4.6 Administration Guide 895


Fortinet Technologies Inc.
System

To test the configuration to confirm what happens when there is a failover:

 1. On both PC-1 and PC-2, access the internet and monitor traffic. The traffic should be going through the primary 
FortiGate.
 2. Perform a continuous ping to an outside IP address, then reboot any one of the FortiSwitches.
Traffic from both Site 1 and Site 2 to the internet should be recovered in approximately five seconds.
 3. Perform a continuous ping to an outside IP address, then force an HA failover (see Force HA failover for testing and 
demonstrations on page 902).
Traffic from both Site 1 and Site 2 to the internet should be recovered in approximately five seconds.
 4. After an HA failover, on the new primary FortiGate, go to WiFi & Switch Controller > Managed FortiSwitch.
The switch layer tiering will be changed so that the directly connected FortiSwitches are at the top of the topology.

Routing NetFlow data over the HA management interface

In an HA environment, the ha-direct option allows data from services such as syslog, FortiAnalyzer, SNMP, and 
NetFlow to be routed over the outgoing interface.
The following example shows how NetFlow data can be routed over the HA management interface mgmt1.

To route NetFlow data over the HA management interface:

 1. On the primary unit (FortiGate A), configure the HA and mgmt1 interface settings:
(global) # config system ha
set group-name "test-ha"
set mode a-p
set password *********
set hbdev "port6" 50
set hb-interval 4
set hb-lost-threshold 10
set session-pickup enable
set ha-mgmt-status enable
config ha-mgmt-interfaces

FortiOS 6.4.6 Administration Guide 896


Fortinet Technologies Inc.
System

edit 1
set interface "mgmt1"
next
end
set override enable
set priority 200
set ha-direct enable
end
(global) # config system interface
edit "mgmt1"
set ip 10.6.30.111 255.255.255.0
set allowaccess ping https ssh http telnet fgfm
set type physical
set dedicated-to management
set role lan
set snmp-index 1
next
end

 2. On the secondary unit (FortiGate B), configure the HA and mgmt1 interface settings:
(global) # config system ha
set group-name "test-ha"
set mode a-p
set password *********
set hbdev "port6" 50
set hb-interval 4
set hb-lost-threshold 10
set session-pickup enable
set ha-mgmt-status enable
config ha-mgmt-interfaces
edit 1
set interface "mgmt1"
next
end
set override enable
set priority 100
set ha-direct enable
end
(global) # config system interface
edit "mgmt1"
set ip 10.6.30.112 255.255.255.0
set allowaccess ping https ssh http telnet fgfm
set type physical
set dedicated-to management
set role lan
set snmp-index 1
next
end

 3. On the primary unit (FortiGate A), configure the NetFlow setting:
(global) # config system netflow
set collector-ip 10.6.30.59
end

FortiOS 6.4.6 Administration Guide 897


Fortinet Technologies Inc.
System

 4. Verify that NetFlow uses the mgmt1 IP:
(global) # diagnose test application sflowd 3

 5. Verify that the NetFlow packets are being sent by the mgmt1 IP:
(vdom1) # diagnose test application sflowd 3
interfaces=[any]
filters=[udp and port 2055]
8.397265 mgmt1 out 10.6.30.111.1992 -> 10.6.30.59.2055: udp 60
23.392175 mgmt1 out 10.6.30.111.1992 -> 10.6.30.59.2055: udp 188
23.392189 mgmt1 out 10.6.30.111.1992 -> 10.6.30.59.2055: udp 60
...
3 packets received by filter
0 packets dropped by kernel

 6. On the secondary device (FortiGate B), change the priority so that it becomes the primary:
(global) # config system ha
set priority 250
end

 7. Verify the NetFlow status on FortiGate A, which is using the new primary's mgmt1 IP:
(global) # diagnose test application sflowd 3

 8. Verify that the NetFlow packets use the new source IP on FortiGate B:
(vdom1) # diagnose sniffer packet any 'udp and port 2055' 4
interfaces=[any]
filters=[udp and port 2055]
7.579574 mgmt1 out 10.6.30.112.3579 -> 10.6.30.59.2055: udp 60
22.581830 mgmt1 out 10.6.30.112.3579 -> 10.6.30.59.2055: udp 60
29.038336 mgmt1 out 10.6.30.112.3579 -> 10.6.30.59.2055: udp 1140
^C
3 packets received by filter
0 packets dropped by kernel

Override FortiAnalyzer and syslog server settings

In an HA cluster, secondary devices can be configured to use different FortiAnalyzer devices and syslog servers than the 
primary device. VDOMs can also override global syslog server settings. 

FortiOS 6.4.6 Administration Guide 898


Fortinet Technologies Inc.
System

Configure a different syslog server on a secondary HA device

To configure the primary HA device:

 1. Configure a global syslog server:
config global
config log syslog setting
set status enable
set server 172.16.200.44
set facility local6
set format default
end
end

 2. Set up a VDOM exception to enable setting the global syslog server on the secondary HA device:
config global
config system vdom-exception
edit 1
set object log.syslogd.setting
next
end
end

To configure the secondary HA device:

 1. Configure a global syslog server:
config global
config log syslogd setting
set status enable
set server 172.16.200.55
set facility local5
end
end

FortiOS 6.4.6 Administration Guide 899


Fortinet Technologies Inc.
System

 2. After the primary and secondary device synchronize, generate logs on the secondary device.

To confirm that logs are been sent to the syslog server configured on the secondary device:

 1. On the primary device, retrieve the following packet capture from the secondary device's syslog server:
# diagnose sniffer packet any "host 172.16.200.55" 6
interfaces=[any]
filters=[host 172.16.200.55]

​266.859494 port2 out 172.16.200.2.7434 -> 172.16.200.55.514: udp 278


0x0000 0000 0000 0000 0009 0f09 0004 0800 4500 ..............E.
0x0010 0132 f3c7 0000 4011 9d98 ac10 c802 ac10 .2....@.........
0x0020 c837 1d0a 0202 011e 4b05 3c31 3734 3e64 .7......K.<174>d
0x0030 6174 653d 3230 3230 2d30 332d 3134 2074 ate=2020-03-14.t
0x0040 696d 653d 3132 3a30 303a 3035 2064 6576 ime=12:00:05.dev
0x0050 6e61 6d65 3d22 466f 7274 6947 6174 652d name="FGT-81E-Sl
0x0060 3831 455f 4122 2064 6576 6964 3d22 4647 ave-A".devid="FG
0x0070 5438 3145 3451 3136 3030 3030 3438 2220 T81E4Q16000048".
0x0080 6c6f 6769 643d 2230 3130 3030 3230 3032 logid="010002002
0x0090 3722 2074 7970 653d 2265 7665 6e74 2220 7".type="event".
0x00a0 7375 6274 7970 653d 2273 7973 7465 6d22 subtype="system"
0x00b0 206c 6576 656c 3d22 696e 666f 726d 6174 .level="informat
0x00c0 696f 6e22 2076 643d 2276 646f 6d31 2220 ion".vd="vdom1".
0x00d0 6576 656e 7474 696d 653d 3135 3834 3231 eventtime=158421
0x00e0 3234 3035 3835 3938 3335 3639 3120 747a 2405859835691.tz
0x00f0 3d22 2d30 3730 3022 206c 6f67 6465 7363 ="-0700".logdesc
0x0100 3d22 4f75 7464 6174 6564 2072 6570 6f72 ="Outdated.repor
0x0110 7420 6669 6c65 7320 6465 6c65 7465 6422 t.files.deleted"
0x0120 206d 7367 3d22 4465 6c65 7465 2031 206f .msg="Delete.1.o
0x0130 6c64 2072 6570 6f72 7420 6669 6c65 7322 ld.report.files"

Configure a different syslog server in the root VDOM on a secondary HA device

FortiOS 6.4.6 Administration Guide 900


Fortinet Technologies Inc.
System

To configure the primary HA device:

 1. Configure a global syslog server:
config global
config log syslog setting
set status enable
set server 172.16.200.44
set facility local6
set format default
end
end

 2. Set up a VDOM exception to enable syslog-override in the secondary HA device root VDOM:
config global
config system vdom-exception
edit 1
set object log.syslogd.override-setting
set scope inclusive
set vdom root
next
end
end

 3. In the VDOM, enable syslog-override in the log settings, and set up the override syslog server:
config root
config log setting
set syslog-override enable
end
config log syslog override-setting
set status enable
set server 172.16.200.44
set facility local6
set format default
end
end

After syslog-override is enabled, an override syslog server must be configured, as logs will not be sent to the global 
syslog server.

To configure the secondary HA device:

 1. Configure an override syslog server in the root VDOM:
config root
config log syslogd override-setting
set status enable
set server 172.16.200.55
set facility local5
set format default
end
end

 2. After the primary and secondary device synchronize, generate logs in the root VDOM on the secondary device.

FortiOS 6.4.6 Administration Guide 901


Fortinet Technologies Inc.
System

To confirm that logs are been sent to the syslog server configured for the root VDOM on the secondary
device:

 1. On the primary device, retrieve the following packet capture from the syslog server configured in the root VDOM on 
the secondary device:
# diagnose sniffer packet any "host 172.16.200.55" 6
interfaces=[any]
filters=[host 172.16.200.55]

156.759696 port2 out 172.16.200.2.1165 -> 172.16.200.55.514: udp 277


0x0000 0000 0000 0000 0009 0f09 0004 0800 4500 ..............E.
0x0010 0131 f398 0000 4011 9dc8 ac10 c802 ac10 .1....@.........
0x0020 c837 048d 0202 011d af5f 3c31 3734 3e64 .7......._<174>d
0x0030 6174 653d 3230 3230 2d30 332d 3134 2074 ate=2020-03-14.t
0x0040 696d 653d 3131 3a33 353a 3035 2064 6576 ime=11:35:05.dev
0x0050 6e61 6d65 3d22 466f 7274 6947 6174 652d name="FGT-81E-Sl
0x0060 3831 455f 4122 2064 6576 6964 3d22 4647 ave-A".devid="FG
0x0070 5438 3145 3451 3136 3030 3030 3438 2220 T81E4Q16000048".
0x0080 6c6f 6769 643d 2230 3130 3030 3230 3032 logid="010002002
0x0090 3722 2074 7970 653d 2265 7665 6e74 2220 7".type="event".
0x00a0 7375 6274 7970 653d 2273 7973 7465 6d22 subtype="system"
0x00b0 206c 6576 656c 3d22 696e 666f 726d 6174 .level="informat
0x00c0 696f 6e22 2076 643d 2272 6f6f 7422 2065 ion".vd="root".e
0x00d0 7665 6e74 7469 6d65 3d31 3538 3432 3130 venttime=1584210
0x00e0 3930 3537 3539 3334 3132 3632 2074 7a3d 905759341262.tz=
0x00f0 222d 3037 3030 2220 6c6f 6764 6573 633d "-0700".logdesc=
0x0100 224f 7574 6461 7465 6420 7265 706f 7274 "Outdated.report
0x0110 2066 696c 6573 2064 656c 6574 6564 2220 .files.deleted".
0x0120 6d73 673d 2244 656c 6574 6520 3220 6f6c msg="Delete.2.ol
0x0130 6420 7265 706f 7274 2066 696c 6573 22 d.report.files"

Force HA failover for testing and demonstrations

This command should only be used for testing, troubleshooting, maintenance, and 
demonstrations.
Do not use it in a live production environment outside of an active maintenance window.

HA failover can be forced on an HA primary device. The device will stay in a failover state regardless of the conditions. 
The only way to remove the failover status is by manually turning it off.

Syntax
execute ha failover set <cluster_id>
execute ha failover unset <cluster_id>

Variable Description
<cluster_id> The cluster ID is 1 for any cluster that is not in virtual cluster mode, and can be 1 
or 2 if virtual cluster mode is enabled. 

FortiOS 6.4.6 Administration Guide 902


Fortinet Technologies Inc.
System

Example

To manually force an HA failover:

# execute ha failover set 1


Caution: This command will trigger an HA failover.
It is intended for testing purposes.
Do you want to continue? (y/n)y

To view the failover status:

# execute ha failover status


failover status: set

To view the system status of a device in forced HA failover:

# get system ha status


HA Health Status: OK
Model: FortiGate-300D
Mode: HA A-P
Group: 240
Debug: 0
Cluster Uptime: 0 days 2:11:46
Cluster state change time: 2020-03-12 17:38:04
Primary selected using:
<2020/03/12 17:38:04> FGT3HD3914800153 is selected as the primary because it has EXE_
FAIL_OVER flag set.
<2020/03/12 15:27:26> FGT3HD3914800069 is selected as the primary because it has the
largest value of override priority.
ses_pickup: disable
override: enable
Configuration Status:
FGT3HD3914800069(updated 4 seconds ago): in-sync
FGT3HD3914800153(updated 3 seconds ago): in-sync
System Usage stats:
FGT3HD3914800069(updated 4 seconds ago):
sessions=5, average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=30%
FGT3HD3914800153(updated 3 seconds ago):
sessions=41, average-cpu-user/nice/system/idle=0%/0%/0%/99%, memory=30%
HBDEV stats:
FGT3HD3914800069(updated 4 seconds ago):
port3: physical/1000auto, up, rx-bytes/packets/dropped/errors=15914162/42929/0/0,
tx=15681840/39505/0/0
port5: physical/1000auto, up, rx-bytes/packets/dropped/errors=17670346/52854/0/0,
tx=20198409/54692/0/0
FGT3HD3914800153(updated 3 seconds ago):
port3: physical/1000auto, up, rx-bytes/packets/dropped/errors=16636700/45544/0/0,
tx=15529791/39512/0/0
port5: physical/1000auto, up, rx-bytes/packets/dropped/errors=20199928/54699/0/0,
tx=17672146/52862/0/0
Secondary: FortiGate-300D , FGT3HD3914800069, HA cluster index = 1
Primary: FortiGate-300D , FGT3HD3914800153, HA cluster index = 0
number of vcluster: 1
vcluster 1: standby 169.254.0.1

FortiOS 6.4.6 Administration Guide 903


Fortinet Technologies Inc.
System

Secondary: FGT3HD3914800069, HA operating index = 1


Primary: FGT3HD3914800153, HA operating index = 0

To stop the failover status:

# execute ha failover unset 1


Caution: This command may trigger an HA failover.
It is intended for testing purposes.
Do you want to continue? (y/n)y

To view the system status of a device after forced HA failover is disabled:

# get system ha status


HA Health Status: OK
Model: FortiGate-300D
Mode: HA A-P
Group: 240
Debug: 0
Cluster Uptime: 0 days 2:14:55
Cluster state change time: 2020-03-12 17:42:17
Primary selected using:
<2020/03/12 17:42:17> FGT3HD3914800069 is selected as the primary because it has the
largest value of override priority.
<2020/03/12 17:38:04> FGT3HD3914800153 is selected as the primary because it has EXE_
FAIL_OVER flag set.
<2020/03/12 15:27:26> FGT3HD3914800069 is selected as the primary because it has the
largest value of override priority.
ses_pickup: disable
override: enable
Configuration Status:
FGT3HD3914800069(updated 3 seconds ago): in-sync
FGT3HD3914800153(updated 2 seconds ago): in-sync
System Usage stats:
FGT3HD3914800069(updated 3 seconds ago):
sessions=0, average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=30%
FGT3HD3914800153(updated 2 seconds ago):
sessions=38, average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=30%
HBDEV stats:
FGT3HD3914800069(updated 3 seconds ago):
port3: physical/1000auto, up, rx-bytes/packets/dropped/errors=16302442/43964/0/0,
tx=16053848/40454/0/0
port5: physical/1000auto, up, rx-bytes/packets/dropped/errors=18161941/54088/0/0,
tx=20615650/55877/0/0
FGT3HD3914800153(updated 2 seconds ago):
port3: physical/1000auto, up, rx-bytes/packets/dropped/errors=17033009/46641/0/0,
tx=15907891/40462/0/0
port5: physical/1000auto, up, rx-bytes/packets/dropped/errors=20617180/55881/0/0,
tx=18163135/54091/0/0
Primary: FortiGate-300D , FGT3HD3914800069, HA cluster index = 1
Secondary: FortiGate-300D , FGT3HD3914800153, HA cluster index = 0
number of vcluster: 1
vcluster 1: work 169.254.0.2
Primary: FGT3HD3914800069, HA operating index = 0
Secondary: FGT3HD3914800153, HA operating index = 1

FortiOS 6.4.6 Administration Guide 904


Fortinet Technologies Inc.
System

Querying autoscale clusters for FortiGate VM

When a FortiGate VM secondary device is added to a cluster, the new secondary member can  query the cluster about its 
autoscale environment. FortiManager can then run this query on the new secondary member to update its autoscale 
record.

To view cluster information from a secondary member:

# diagnose sys ha checksum autoscale-cluster

Cluster information sample

Sample cloud topology:


FGT_BYOL; primary; 10.0.0.6; FGVM04TM00000066
FGT_BYOL; secondary; 10.0.0.7; FGVM00000000056
FGT_PAYG; secondary; 10.0.0.4; FGTAZ000000000CD
FGT_PAYG; secondary; 10.0.0.5; FGTAZ0000000003D

From the secondary device, you can see cluster checksums and the primary device:
# diagnose sys ha checksum autoscale-cluster
================== FGTAZ000000000CD ==================
is_autoscale_master()=0
debugzone
global: 56 49 b3 02 f2 b7 5b 82 ec 2d c2 1a ff 80 8c 79
root: bf 18 cf 83 1e 04 c3 04 4c e4 66 bc 38 fe 3a dc
all: 77 06 d0 89 6e 06 c0 86 17 98 53 72 33 85 ae ff
checksum
global: 56 49 b3 02 f2 b7 5b 82 ec 2d c2 1a ff 80 8c 79
root: bf 18 cf 83 1e 04 c3 04 4c e4 66 bc 38 fe 3a dc
all: 77 06 d0 89 6e 06 c0 86 17 98 53 72 33 85 ae ff
================== FGVM04TM00000066 ==================
is_autoscale_master()=1
debugzone
global: 56 49 b3 02 f2 b7 5b 82 ec 2d c2 1a ff 80 8c 79
root: bf 18 cf 83 1e 04 c3 04 4c e4 66 bc 38 fe 3a dc
all: 77 06 d0 89 6e 06 c0 86 17 98 53 72 33 85 ae ff
checksum
global: 56 49 b3 02 f2 b7 5b 82 ec 2d c2 1a ff 80 8c 79
root: bf 18 cf 83 1e 04 c3 04 4c e4 66 bc 38 fe 3a dc
all: 77 06 d0 89 6e 06 c0 86 17 98 53 72 33 85 ae ff
================== FGVM00000000056 ==================
is_autoscale_master()=0
debugzone
global: 56 49 b3 02 f2 b7 5b 82 ec 2d c2 1a ff 80 8c 79
root: bf 18 cf 83 1e 04 c3 04 4c e4 66 bc 38 fe 3a dc
all: 77 06 d0 89 6e 06 c0 86 17 98 53 72 33 85 ae ff
checksum
global: 56 49 b3 02 f2 b7 5b 82 ec 2d c2 1a ff 80 8c 79
root: bf 18 cf 83 1e 04 c3 04 4c e4 66 bc 38 fe 3a dc
all: 77 06 d0 89 6e 06 c0 86 17 98 53 72 33 85 ae ff
================== FGTAZ0000000003D ==================
is_autoscale_master()=0
debugzone
global: 56 49 b3 02 f2 b7 5b 82 ec 2d c2 1a ff 80 8c 79

FortiOS 6.4.6 Administration Guide 905


Fortinet Technologies Inc.
System

root: bf 18 cf 83 1e 04 c3 04 4c e4 66 bc 38 fe 3a dc
all: 77 06 d0 89 6e 06 c0 86 17 98 53 72 33 85 ae ff
checksum
global: 56 49 b3 02 f2 b7 5b 82 ec 2d c2 1a ff 80 8c 79
root: bf 18 cf 83 1e 04 c3 04 4c e4 66 bc 38 fe 3a dc
all: 77 06 d0 89 6e 06 c0 86 17 98 53 72 33 85 ae ff

To get ha sync information from the secondary device:

# get test hasync 50


autoscale_count=69. current_jiffies=41235125
10.0.0.6, timeo=31430, serial_no=FGVM04TM19001766
10.0.0.7, timeo=31430, serial_no=FGVM04TM19008156
10.0.0.5, timeo=31430, serial_no=FGTAZR7UZRKKNR3D

VDOM exceptions

VDOM exceptions are settings that can be selected for specific VDOMs or all VDOMs that are not synchronized to other 
HA members. This can be required when cluster members are not in the same physical location, subnets, or availability 
zones in a cloud environment.
Some examples of possible use cases include:
 l You use different source IP addresses for FortiAnalyzer logging from each cluster member. See Override 
FortiAnalyzer and syslog server settings on page 898 for more information.
 l You need to keep management interfaces that have specific VIPs or local subnets that cannot transfer from being 
synchronized.
 l In a unicast HA cluster in the cloud, you use NAT with different IP pools in different subnets, so IP pools must be 
exempt.
When a VDOM exception is configured, the object will not be synchronized between the primary and secondary devices 
when the HA forms. Different options can be configured for every object.
When VDOM mode is disabled, the configured object is excluded for the entire device. To define a scope, VDOM mode 
must be enabled and the object must be configurable in a VDOM.
VDOM exceptions are synchronized to other HA cluster members.

To configure VDOM exceptions:

config global
config system vdom-exception
edit 1
set object <object name>
set scope {all* | inclusive | exclusive}
set vdom <vdom name>
next
end
end

object The name of the configuration object that can be configured independently for 
some or all of the VDOMs.
See Objects on page 907 for a list of available settings and resources.

FortiOS 6.4.6 Administration Guide 906


Fortinet Technologies Inc.
System

scope Determine if the specified object is configured independently for all VDOMs or a 
subset of VDOMs.
 l all: Configure the object independently on all VDOMs.
 l inclusive: Configure the object independently only on the specified 
VDOMs.
 l exclusive: Configure the object independently on all of the VDOMs that 
are not specified.
vdom The names of the VDOMs that are included or excluded.

Objects

The following settings and resources can be exempt from synchronization in an HA cluster:

log.fortianalyzer.setting system.interface
log.fortianalyzer.override-setting vpn.ipsec.phase1-interface
log.fortianalyzer2.setting vpn.ipsec.phase2-interface
log.fortianalyzer2.override-setting router.bgp
log.fortianalyzer3.setting router.route-map
log.fortianalyzer3.override-setting router.prefix-list
log.fortianalyzer-cloud.setting firewall.ippool
log.fortianalyzer-cloud.override-setting firewall.ippool6
log.syslogd.setting router.static
log.syslogd.override-setting router.static6
log.syslogd2.setting firewall.vip
log.syslogd2.override-setting firewall.vip6
log.syslogd3.setting firewall.vip46
log.syslogd3.override-setting firewall.vip64
log.syslogd4.setting system.sdwan
log.syslogd4.override-setting system.saml
system.central-management router.policy
system.csf router.policy6
user.radius

SNMP

SNMP enables you to monitor hardware on your network. You can configure the hardware, such as the FortiGate SNMP 
agent, to report system information and send traps (alarms or event messages) to SNMP managers.  SNMP traps alert 
you to events that happen, such as when a log disk is full or a virus is detected.
The FortiGate SNMP implementation is read-only. SNMP v1/v2c, and v3 compliant SNMP managers have read-only 
access to FortiGate system information through queries, and can receive trap messages from the FortiGate unit. 

FortiOS 6.4.6 Administration Guide 907


Fortinet Technologies Inc.
System

 l Interface access on page 908
 l MIB files on page 908
 l FortiGate Rugged 30D SNMP bridge MIB module support on page 909
 l SNMP agent on page 911
 l SNMP v1/v2c communities on page 911
 l SNMP v3 users on page 913
 l Important SNMP traps on page 914
 l SNMP traps and query for monitoring DHCP pool on page 916

Interface access

Before a remote SNMP manager can connect to the FortiGate SNMP agent, you must configure one or more FortiGate 
interfaces to accept SNMP connections.

To configure a FortiGate interface to accept SNMP connections in the GUI:

 1. Go to Network > Interfaces.


 2. Edit the interface.
 3. In the Administrative Access options, enable SNMP.
 4. Click OK.

To configure a FortiGate interface to accept SNMP connections in the CLI:

config system interface


edit <interface>
append allowaccess snmp
set snmp-index <integer>
config ipv6
append ip6-allowaccess snmp
end
next
end

MIB files

The FortiGate SNMP agent supports Fortinet proprietary MIBs, as well as  the parts of RFC 2665 and RFC 1213 that 
apply to FortiGate unit configuration. 
Your SNMP manager may already include standard and private MIBs in a compiled database that is ready to use. You 
must add the Fortinet proprietary MIBs to this database to have access to Fortinet specific information.

MIB file or RFC Description

FORTINET-CORE-MIB.mib The Fortinet core MIB includes all system configuration and trap information that 
is common to all Fortinet products.
Your SNMP manager requires this information to monitor Fortinet device settings 
and receive traps from the FortiGate SNMP agent.

FortiOS 6.4.6 Administration Guide 908


Fortinet Technologies Inc.
System

MIB file or RFC Description

FORTINET-FORTIGATE- The FortiGate MIB includes all system configuration information and trap 
MIB.mib  information that is specific to FortiGate units. 
Your SNMP manager requires this information to monitor FortiGate settings and 
receive traps from the FortiGate SNMP agent.

RFC-1213 (MIB II) The FortiGate SNMP agent supports MIB II groups with the following exceptions:
 l No support for the EGP group from MIB II (RFC 1213, section 3.11 and 6.10).
 l Protocol statistics returned for MIB II groups (IP/ICMP/TCP/UDP/etc.) do not 
accurately capture all Fortinet traffic activity. More accurate information can 
be obtained from the information reported by the Fortinet MIB.

RFC-2665 (Ethernet-like MIB) The FortiGate SNMP agent supports Ethernet-like MIB information.
FortiGate SNMP does not support for the dot3Tests and dot3Errors groups.

To download the MIB files:

 1. Go to System > SNMP.


 2. Click Download FortiGate MIB File and save the file to the management computer.
 3. Click Download Fortinet Core MIB File and save the file to the management computer.

FortiGate Rugged 30D SNMP bridge MIB module support

SNMP bridge MIB  module support is available on FortiGates with 802.1p to monitor STP activity.

Object name OID

dot1dBridge.dot1dBase.dot1dBaseBridgeAddress 1.3.6.1.2.1.17.1.1

dot1dBridge.dot1dBase.dot1dBaseNumPorts 1.3.6.1.2.1.17.1.2

dot1dBridge.dot1dBase.Type 1.3.6.1.2.1.17.1.3

dot1dBridge.dot1dBase.dot1dBasePortEntry.dot1dBasePortIfIndex 1.3.6.1.2.1.17.1.4.1.2

dot1dBridge.dot1dBase.dot1dBasePortEntry.dot1dBasePortCircuit 1.3.6.1.2.1.17.1.4.1.3

dot1dBridge.dot1dBase.dot1dBasePortEntry.dot1dBasePortDelayExceededDiscards 1.3.6.1.2.1.17.1.4.1.5

dot1dBridge.dot1dBase.dot1dBasePortEntry.dot1dBasePortMtuExceededDiscards 1.3.6.1.2.1.17.1.4.1.5

dot1dBridge.dot1dStp.dot1dStpProtocolSpecification 1.3.6.1.2.1.17.2.1

dot1dBridge.dot1dStp.dot1dStpPriority 1.3.6.1.2.1.17.2.2

dot1dBridge.dot1dStp.dot1dStpDesignatedRoot 1.3.6.1.2.1.17.2.5

dot1dBridge.dot1dStp.dot1dStpRootCost 1.3.6.1.2.1.17.2.6

dot1dBridge.dot1dStp.dot1dStpRootPort 1.3.6.1.2.1.17.2.7

dot1dBridge.dot1dStp.dot1dStpMaxAge 1.3.6.1.2.1.17.2.8

FortiOS 6.4.6 Administration Guide 909


Fortinet Technologies Inc.
System

Object name OID

dot1dBridge.dot1dStp.dot1dStpHelloTime 1.3.6.1.2.1.17.2.9

dot1dBridge.dot1dStp.dot1dStpForwardDelay 1.3.6.1.2.1.17.2.11

dot1dBridge.dot1dStp.dot1dStpBridgeMaxAge 1.3.6.1.2.1.17.2.12

dot1dBridge.dot1dStp.dot1dStpBridgeHelloTime 1.3.6.1.2.1.17.2.13

dot1dBridge.dot1dStp.dot1dStpBridgeForwardDelay 1.3.6.1.2.1.17.2.14

dot1dBridge.dot1dStp.dot1dStpPortEntry.dot1dStpPortPriority 1.3.6.1.2.1.17.2.15.1.2

dot1dBridge.dot1dStp.dot1dStpPortEntry.dot1dStpPortState 1.3.6.1.2.1.17.2.15.1.3

dot1dBridge.dot1dStp.dot1dStpPortEntry.dot1dStpPortEnable 1.3.6.1.2.1.17.2.15.1.4

dot1dBridge.dot1dStp.dot1dStpPortEntry.dot1dStpPortPathCost 1.3.6.1.2.1.17.2.15.1.5

To configure an SNMP bridge MIB module:

 1. On the FortiGate, configure SNMP:
config system snmp sysinfo
set status enable
set description "BRIDGE_MIB"
set contact-info "Strike Freedom"
set location "QA LAB"
end
config system snmp community
edit 1
set name "REGR-SWITCH"
config hosts
edit 1
set ip 172.16.200.55 255.255.255.255
next
edit 2
set ip 172.18.60.149 255.255.255.255
next
end
set events cpu-high mem-low log-full intf-ip vpn-tun-up vpn-tun-down ha-switch
ha-hb-failure ips-anomaly av-oversize av-fragmented fm-conf-change ha-member-up ha-
member-down av-conserve av-bypass av-oversize-blocked ips-pkg-update ips-fail-open faz-
disconnect
next
end

 2. On the SNMP server, run snmpwalk on the OID from the newly added bridge MIB.
The OID is for the bridge hello time. The SNMP server is able to query the bridge hello time from the FortiGate:
root@ControlPC:~# snmpwalk -v1 -c REGR-SWITCH 172.16.200.2 1.3.6.1.2.1.17.2.13
BRIDGE-MIB::dot1dStpBridgeHelloTime.0 = INTEGER: 200 centi-seconds

FortiOS 6.4.6 Administration Guide 910


Fortinet Technologies Inc.
System

SNMP agent

The SNMP agent sends SNMP traps originating on the FortiGate to an external monitoring SNMP manager defined in a 
SNMP community. The SNMP manager can monitor the FortiGate system to determine if it is operating properly, or if 
any critical events occurring. 
The description, location, and contact information for this FortiGate system will be part of the information that the SNMP 
manager receives. This information is useful if the SNMP manager is monitoring many devices, and enables faster 
responses when the FortiGate system requires attention.

To configure the SNMP agent in the GUI:

 1. Go to System > SNMP.


 2. Enable SNMP Agent.
 3. Enter a description of the agent.
 4. Enter the location of the FortiGate unit.
 5. Enter a contact or administrator for the SNMP Agent or FortiGate unit.
 6. Click Apply.

To configure the SNMP agent in the CLI:

config system snmp sysinfo


set status enable
set description <string>
set contact-info <string>
set location <string>
end

SNMP v1/v2c communities

An SNMP community is a grouping of equipment for network administration purposes. A single device can belong to 
multiple communities.
You must add an SNMP community to the FortiGate so that the SNMP manager can receive traps and system 
information. Up to three communities can be added. 

FortiOS 6.4.6 Administration Guide 911


Fortinet Technologies Inc.
System

To create a n SNMP v1/v2c community in the GUI:

 1. Go to System > SNMP.


 2. In the SNMP v1/v2c table, click Create New.

 3. Enter a Community Name and enable the community.


 4. In the Hosts section, enter the IP Address and select the Host Type for each SNMP manager.
 5. In the Queries section, enable or disable v1 and v2c queries, then enter the port numbers that the SNMP managers 
in this community use for them.
 6. In the Traps section, enable or disable v1 and v2c traps, then enter the local and remote port numbers that the 
SNMP managers in this community use for them.
 7. In the SNMP Events section, enable or disable the events that activate traps in this community.
 8. Click OK.

To create a n SNMP v1/v2c community in the CLI:

config system snmp community


edit 2
set name <string>
set status {enable | disable}
config hosts
edit <host_id>
set ip <ip/mask>
set source-ip <class_ip>
set ha-direct {enable | disable}
set host-type {any | query | trap}
next
end
set query-v1-port <port_number>
set query-v1-status {enable | disable}
set query-v2c-port <port_number>
set query-v2c-status {enable | disable}
set trap-v1-lport <port_number>
set trap-v1-rport <port_number>

FortiOS 6.4.6 Administration Guide 912


Fortinet Technologies Inc.
System

set trap-v1-status {enable | disable}


set trap-v2c-lport <port_number>
set trap-v2c-rport <port_number>
set trap-v2c-status {enable | disable}
set events <events>
next
end

SNMP v3 users

Authentication is used to ensure the identity of users. Privacy allows for encryption of SNMP v3 messages to ensure 
confidentiality of data. These protocols provide a higher level of security than is available in SNMP v1 and v2c, which use 
community strings for security. Both authentication and privacy are optional.

To create a n SNMP v3 user in the GUI:

 1. Go to System > SNMP.


 2. In the SNMP v3 table, click Create New.

 3. Enter a User Name and enable the user.


 4. In the Security Level section, configure the security level:
 l No Authentication: No authentication or encryption.
 l Authentication: Select the authentication algorithm and password.
 l Authentication and Private: Select both the authentication and encryption algorithms and password.
 5. In the Hosts section, enter the IP Address for each SNMP manager.
 6. In the Queries section, enable or disable queries, then enter the port number that the SNMP managers use for 
them.
 7. In the Traps section, enable or disable traps, then enter the local and remote port numbers that the SNMP 
managers use for them.
 8. In the SNMP Events section, enable or disable the events that activate traps.
 9. Click OK.

FortiOS 6.4.6 Administration Guide 913


Fortinet Technologies Inc.
System

To create an SNMP v3 user in the CLI:

config system snmp user


edit <user>
set status {enable | disable}
set trap-status {enable | disable}
set trap-lport <port_number>
set trap-rport <port_number>
set queries {enable | disable}
set query-port <port_number>
set notify-hosts <class_ip> ... <class_ip>
set source-ip <class_ip>
set ha-direct {enable | disable}
set events <events>
set security-level {no-auth-no-priv | auth-no-priv | auth-priv}
set auth-proto {md5 | sha | sha224 | sha256 | sha384 | sha512}
set auth-pwd <password>
set priv-proto {aes | des | aes256 | aes256cisco}
set priv-pwd <password>
next
end

Important SNMP traps

Link Down and Link Up traps

This trap is sent when a FortiGate port either goes down or is brought up.
For example, the following traps are generated when the state of port34 is set to down using set status down, and 
then brought up using set status up:
NET-SNMP version 5.7.3 2019-01-31 14:11:48 10.1.100.1(via UDP: [10.1.100.1]:162->
[10.1.100.11]:162) TRAP, SNMP v1, community REGR-SYS SNMPv2-MIB::snmpTraps Link Down Trap
(0) Uptime: 0:14:44.95 IF-MIB::ifIndex.42 = INTEGER: 42 IF-MIB::ifAdminStatus.42 = INTEGER:
down(2) IF-MIB::ifOperStatus.42 = INTEGER: down(2) FORTINET-CORE-MIB::fnSysSerial.0 =
STRING: FG140P3G15800330 SNMPv2-MIB::sysName.0 = STRING: FortiGate-140D-POE
2019-01-31 14:11:48 <UNKNOWN> [UDP: [10.1.100.1]:162->[10.1.100.11]:162]: DISMAN-EVENT-
MIB::sysUpTimeInstance = Timeticks: (88495) 0:14:44.95 SNMPv2-MIB::snmpTrapOID.0 = OID: IF-
MIB::linkDown IF-MIB::ifIndex.42 = INTEGER: 42 IF-MIB::ifAdminStatus.42 = INTEGER: down(2)
IF-MIB::ifOperStatus.42 = INTEGER: down(2) FORTINET-CORE-MIB::fnSysSerial.0 = STRING:
FG140P3G15800330 SNMPv2-MIB::sysName.0 = STRING: FortiGate-140D-POE 2019-01-31 14:12:01
10.1.100.1(via UDP: [10.1.100.1]:162->[10.1.100.11]:162) TRAP, SNMP v1, community REGR-SYS
SNMPv2-MIB::snmpTraps Link Up Trap (0) Uptime: 0:14:57.98 IF-MIB::ifIndex.42 = INTEGER: 42
IF-MIB::ifAdminStatus.42 = INTEGER: up(1) IF-MIB::ifOperStatus.42 = INTEGER: up(1) FORTINET-
CORE-MIB::fnSysSerial.0 = STRING: FG140P3G15800330 SNMPv2-MIB::sysName.0 = STRING:
FortiGate-140D-POE
2019-01-31 14:12:01 <UNKNOWN> [UDP: [10.1.100.1]:162->[10.1.100.11]:162]: DISMAN-EVENT-
MIB::sysUpTimeInstance = Timeticks: (89798) 0:14:57.98 SNMPv2-MIB::snmpTrapOID.0 = OID: IF-
MIB::linkUp IF-MIB::ifIndex.42 = INTEGER: 42 IF-MIB::ifAdminStatus.42 = INTEGER: up(1) IF-
MIB::ifOperStatus.42 = INTEGER: up(1) FORTINET-CORE-MIB::fnSysSerial.0 = STRING:
FG140P3G15800330 SNMPv2-MIB::sysName.0 = STRING: FortiGate-140D-POE

FortiOS 6.4.6 Administration Guide 914


Fortinet Technologies Inc.
System

fgFmTrapIfChange trap

This trap is sent when any changes are detected on the interface. The change can be very simple, such as giving an 
IPV4 address.
For example, the user has given the IP address of 1.2.3.4/24 to port 1 and the EMS Manager has detected the following 
trap:
DISMAN-EXPRESSION-MIB::sysUpTimeInstance = Timeticks: (7975058) 22:09:10.58 SNMPv2-
MIB::snmpTrapOID.0 = OID: FORTINET-FORTIGATE-MIB::fgFmTrapIfChange FORTINET-CORE-
MIB::fnSysSerial.0 = STRING: FG140P3G15800330 IF-MIB::ifName.45 = STRING: port1 FORTINET-
FORTIGATE-MIB::fgManIfIp.0 = IpAddress: 1.2.3.4 FORTINET-FORTIGATE-MIB::fgManIfMask.0 =
IpAddress: 255.255.255.0 FORTINET-FORTIGATE-MIB::fgManIfIp6.0 = STRING: 0:0:0:0:0:0:0:0

entConfigChange trap

The change to the interface in the previous example has also triggered the ConfChange Trap which is sent along with 
the fgFmTrapIfChange trap:
2018-11-15 09:30:23 FGT_A [UDP: [172.16.200.1]:162->[172.16.200.55]:162]: DISMAN-EXPRESSION-
MIB::sysUpTimeInstance = Timeticks: (8035097) 22:19:10.97 SNMPv2-MIB::snmpTrapOID.0 = OID:
ENTITY-MIB::entConfigChange

fgTrapDeviceNew trap

This trap is triggered when a new device, like a FortiSwitch, is connected to the FortiGate.
For example, the following scenario has given the device a new trap for adding FortiAP on a PoE interface a FortiGate 
140D-POE. The trap has important information about the device name, device MAC address, and when it was last seen.
2018-11-15 11:17:43 UDP/IPv6: [2000:172:16:200::1]:162 [UDP/IPv6: [2000:172:16:200::1]:162]:
DISMAN-EXPRESSION-MIB::sysUpTimeInstance = Timeticks: (520817) 1:26:48.17 SNMPv2-
MIB::snmpTrapOID.0 = OID: FORTINET-FORTIGATE-MIB::fgTrapDeviceNew FORTINET-CORE-
MIB::fnSysSerial.0 = STRING: FG140P3G15800330 SNMPv2-MIB::sysName.0 = STRING: FGT_A IF-
MIB::ifIndex.0 = INTEGER: 0 FORTINET-FORTIGATE-MIB::fgVdEntIndex.0 = INTEGER: 0 FORTINET-
FORTIGATE-MIB::fgDeviceCreated.0 = Gauge32: 5 FORTINET-FORTIGATE-MIB::fgDeviceLastSeen.0 =
Gauge32: 5 FORTINET-FORTIGATE-MIB::fgDeviceMacAddress.0 = STRING: 90:6c:ac:f9:97:a0
2018-11-15 11:17:43 FGT_A [UDP: [172.16.200.1]:162->[172.16.200.55]:162]: DISMAN-EXPRESSION-
MIB::sysUpTimeInstance = Timeticks: (520817) 1:26:48.17 SNMPv2-MIB::snmpTrapOID.0 = OID:
FORTINET-FORTIGATE-MIB::fgTrapDeviceNew FORTINET-CORE-MIB::fnSysSerial.0 = STRING:
FG140P3G15800330 SNMPv2-MIB::sysName.0 = STRING: FGT_A IF-MIB::ifIndex.0 = INTEGER: 0
FORTINET-FORTIGATE-MIB::fgVdEntIndex.0 = INTEGER: 0 FORTINET-FORTIGATE-
MIB::fgDeviceCreated.0 = Gauge32: 5 FORTINET-FORTIGATE-MIB::fgDeviceLastSeen.0 = Gauge32: 5
FORTINET-FORTIGATE-MIB::fgDeviceMacAddress.0 = STRING: 90:6c:ac:f9:97:a0

fgTrapAvOversize trap

The fgTrapAvOversize trap is generated when the antivirus scanner detects an oversized file:
019-01-31 13:22:04 10.1.100.1(via UDP: [10.1.100.1]:162->[10.1.100.11]:162) TRAP, SNMP v1,
community REGR-SYS FORTINET-FORTIGATE-MIB::fgt140P Enterprise Specific Trap (602) Uptime: 1
day, 3:41:10.31 FORTINET-CORE-MIB::fnSysSerial.0 = STRING: FG140P3G15800330 SNMPv2-
MIB::sysName.0 = STRING: FortiGate-140D-POE 2019-01-31 13:22:29 <UNKNOWN> [UDP:

FortiOS 6.4.6 Administration Guide 915


Fortinet Technologies Inc.
System

[10.1.100.1]:162->[10.1.100.11]:162]: DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks:


(9967031) 1 day, 3:41:10.31 SNMPv2-MIB::snmpTrapOID.0 = OID: FORTINET-FORTIGATE-
MIB::fgTrapAvOversize FORTINET-CORE-MIB::fnSysSerial.0 = STRING: FG140P3G15800330 SNMPv2-
MIB::sysName.0 = STRING: FortiGate-140D-POE

SNMP traps and query for monitoring DHCP pool

The SNMP DHCP event contains three traps and one query.
Traps are sent when:
 l DHCP server IP pool usage reaches 90%
 l DHCP server detect an IP address that is already in use
 l DHCP client receives DHCP NAK
SNMP queries are accepted for DHCP lease usage information (OID = 1.3.6.1.4.1.12356.101.23). The query result is 
based on the leased out percentage.

To enable the SNMP DHCP event in the GUI:

 1. Go to System > SNMP.


 2. Click Create New in either the SNMP v1/v2c table or SNMP v3 table, or edit an existing community or user.
 3. Configure the settings as required.
 4. In the SNMP Events list, enable snmp-event::dhcp.

 5. Click OK.

To enable the SNMP DHCP event in the CLI:

config system snmp community


edit 1
set name "REGR-SYS"
config hosts
edit 1
set ip 10.1.100.11 255.255.255.255
next
edit 2
set ip 172.16.200.55 255.255.255.255
next
end

FortiOS 6.4.6 Administration Guide 916


Fortinet Technologies Inc.
System

set events dhcp


next
end
config system snmp user
edit "1"
set notify-hosts 172.10.1.0 172.20.1.0
set events dhcp
set security-level auth-priv
set auth-proto sha384
set auth-pwd ********************
set priv-proto aes256
set priv-pwd *********************
next
end

Replacement messages

FortiOS has replacement messages that are  HTML and text files. These messages can be customized to meet user 
requirements. The content can be modified, and images can be added. 

Modifying replacement messages

The Replacement Messages page has two views. Simple View (the default view) shows the most commonly used 


replacement messages. Extended View shows the entire list and all replacement message categories.

To modify a replacement message in the GUI:

 1. Go to System > Replacement Messages.


 2. Select a replacement message and click Edit. 
If the message you want to edit is not visible, click Extended View in the upper right-hand corner of the top menu.

FortiOS 6.4.6 Administration Guide 917


Fortinet Technologies Inc.
System

 3. Edit the HTML code.
The message is visible on the left alongside the HTML code on the right. The message view updates in real-time as 
you edit the content.

 4. Click Save.

Click Restore Defaults to return to the original message and code base.

To modify a replacement message in the CLI:

For example, to modify the Traffic Quota Limit Exceeded Page message:

FortiOS 6.4.6 Administration Guide 918


Fortinet Technologies Inc.
System

config system replacemsg traffic-quota "per-ip-shaper-block"


set buffer "<html>
<head>
<title>
Traffic Quota Control
</title>
</head>
<body>
<font size=2>
<table width=\"100%\">
<tr>
<td bgcolor=#3300cc align=\"center\" colspan=2>
<font color=#ffffff>
<b>
Traffic blocked because exceeded session quota
</b>
</font>
</td>
</tr>
</table>
<br>
<br>
Traffic blocked because it exceeded the per IP shaper session quota. Please contact
the system administrator.
<br>
%%QUOTA_INFO%%
<br>
<br>
<hr>
</font>
</body>
</html>"
set header http
set format html
end

Replacement message images

Images can be added to replacement messages on:
 l Disclaimer pages
 l Login pages
 l Declined disclaimer pages
 l Login failed pages
 l Login challenge pages
 l Keepalive pages

The supported image formats are GIF, JPEG, TIFF, and PNG. The maximum file size 
supported is 24 KB.

FortiOS 6.4.6 Administration Guide 919


Fortinet Technologies Inc.
System

Adding images to replacement messages

To add images to replacement messages in the GUI:

 1. Go to System > Replacement Messages.


 2. In the top menu, click Manage Images.
 3. Click Create New.
 4. Enter a name for the image.
 5. Click Upload Image and locate the file.

 6. Click OK.
The file is now visible in the list.

To add images to replacement messages in the CLI:

config system replacemsg-image


edit <image_name>
set image-type {gif | jpg | tiff | png}
set image-base64 <string>
next
end

FortiOS 6.4.6 Administration Guide 920


Fortinet Technologies Inc.
System

Replacement message groups

Replacement message groups allow users to customize replacement messages for individual policies and profiles.
There are two types of replacement message groups:

Type Usage Customizable categories

utm Used with UTM settings in firewall policies.  l admin


 l alertmail
 l custom-message
 l fortiguard-wf
 l ftp
 l http
 l icap
 l mail
 l nac-quar
 l spam
 l sslvpn
 l traffic-quota
 l utm
 l webproxy

auth Used with authentication pages in firewall   l auth


policies.  l webproxy

The messages added to a group do not need to be customized. The message body content, header type, and format will 
use the default values if not customized.

To make replacement message groups visible in the GUI:

config system settings


set gui-replacement-message-groups enable
end

In the following example, two replacement message groups are created. The UTM message group includes custom 
mail-related messages and is assigned to an email filter profile. The authentication message group has a custom 
authentication success message that is applied to a proxy-based firewall policy that has an assigned email filter profile.

To create replacement message groups in the GUI:

 1. Create the Security replacement message group: 
 a. Go to System > Replacement Message Groups.
 b. Click Create New.
 c. For Name, enter newutm.
 d. In the Comments field, enter UTM message group.
 e. For Group Type, select Security.

FortiOS 6.4.6 Administration Guide 921


Fortinet Technologies Inc.
System

 f. Click OK.

 2. Customize the replacement messages in the newutm group:
 a. Go to System > Replacement Message Groups.
 b. Edit the newutm group.
 c. Select the AV Engine Load Error Email Block Message.
 d. Edit the message and click Save.

 e. Select the Partial Email Block Message.


 f. Edit the message and click Save.
 3. Create the Authentication replacement message group:   
 a. Go to System > Replacement Message Groups.
 b. Click Create New.
 c. For Name, enter newauth.
 d. In the Comments field, enter Authentication message group.
 e. For Group Type, select Authentication.
 f. Click OK.

FortiOS 6.4.6 Administration Guide 922


Fortinet Technologies Inc.
System

 4. Apply the newutm replacement message group to an email filter profile in the CLI:
config emailfilter profile
edit "newmsgs"
set replacemsg-group "newutm"
next
end

 5. Apply the newauth replacement message group and the email filter profile to a firewall policy in the CLI:
config firewall policy
edit 1
...
set replacemsg-override-group "newauth"
set inspection-mode proxy
set emailfilter-profile "newmsgs"
...
next
end

To create replacement message groups in the CLI:

 1. Create the replacement message groups:
config system replacemsg-group
edit "newutm"
set group-type utm
config mail
edit "partial"
set buffer "Fragmented emails are blocked, sorry."
next
edit "email-av-fail"
set buffer "The email has been blocked for reasons."
next
end
next
edit "newauth"
set group-type auth
config auth
edit "auth-success-msg"
set buffer "Welcome to the firewall. Your authentication has been
accepted, please reconnect."
set header none
set format text
next
end
next
end

 2. Apply the message group to the email filter:
config emailfilter profile
edit "newmsgs"
set replacemsg-group "newutm"
next
end

FortiOS 6.4.6 Administration Guide 923


Fortinet Technologies Inc.
System

 3. Apply the email filter and message group to the policy:
config firewall policy
edit 1
...
set replacemsg-override-group "newauth"
set inspection-mode proxy
set emailfilter-profile "newmsgs"
...
next
end

FortiGuard

FortiGuard services can be purchased and registered to your FortiGate unit. The FortiGate must be connected to the 
Internet in order to automatically connect to the FortiGuard Distribution Network (FDN) to validate the license and 
download FDN updates.
The FortiGuard subscription update services include:
 l Antivirus (AV)
 l Intrusion Protection Service (IPS)
 l Application Control
 l Antispam
 l Web Filtering
 l Web Application Firewall (WAF) 
To view FDN support contract information, go to System > FortiGuard. The License Information table shows the status of 
your FortiGate’s support contract.
 l IPv6 FortiGuard connections on page 925
 l Configuring FortiGuard updates on page 925
 l Manual updates on page 926
 l Automatic updates on page 927
 l Sending malware statistics to FortiGuard on page 928
 l Update server location on page 929
 l Filtering on page 930
 l Override FortiGuard servers on page 931
 l Online security tools on page 932
 l FortiGuard anycast and third-party SSL validation on page 932
 l Using FortiManager as a local FortiGuard server on page 935
 l Cloud service communication statistics on page 936
 l  IoT detection service  on page 937
 l FortiAP query to FortiGuard IoT service to determine device details on page 939

FortiOS 6.4.6 Administration Guide 924


Fortinet Technologies Inc.
System

IPv6 FortiGuard connections

The Fortinet DNS can resolve FortiGuard related servers to both IPv4 and IPv6 addresses. FortiOS daemons (update, 
forticldd, url) connect using either IPv4 or IPv6 addresses. The first available connection will be used for updates or the 
rating service.

To configure an interface and route for IPv6:

config system interface


edit "wan1"
set vdom "root"
config ipv6
set ip6-address 2000:172:16:200::1/64
end
next
end
config router static6
edit 1
set gateway 2000:172:16:200::254
set device "wan1"
next
end

To configure push updates:

config system autoupdate push-update


set status enable
set override enable
set address "2620:101:9005:3860::94"
end

Configuring FortiGuard updates

To configure FortiGuard updates:

 1. Go to System > FortiGuard


 2. Scroll down to the FortiGuard Updates section.
 3. Configure the antivirus and IPS options for connecting and downloading definition files:

Accept push updates Enable to allow updates to be sent automatically to your FortiGate. New 


definitions will be added as soon as they are released by FortiGuard. See 
Push updates on page 927.

Use override push Only available if Accept push updates is enabled. See Override push on page 


928.

Scheduled Updates Enable to schedule updates to be sent to the FortiGate at the specified time. 


See Scheduled updates on page 927.

FortiOS 6.4.6 Administration Guide 925


Fortinet Technologies Inc.
System

Improve IPS quality Enable to send information to the FortiGuard servers when an attack occurs. 


This can help keep the FortiGuard database current as attacks evolve, and 
improve IPS signatures.

Use extended IPS signature Enable to use the extended IPS database, that includes protection from legacy 


package attacks, along with the regular IPS database that protects against the latest 
common and in-the-wild attacks.

Update server location The FortiGuard update server location. See Update server location on page 


929 for details.

 4. Click Apply.

Manual updates

When needed, FortiGuard Distribution Network (FDN) updates can be manually uploaded.

To manually update the signature definitions files:

 1. Log in to the Fortinet Support website.
 2. Go to Download > FortiGuard Service Updates.
 3. Select your OS Version from the dropdown list.
 4. Locate your device in the table, and download the signature definitions files.
 5. On the FortiGate, go to System > FortiGuard.
 6. In the License Information table, locate and expand the definitions that you are updating, and click Upgrade
Database in the rightmost column.
 7. In the pane that opens, click Upload, locate the downloaded definitions file on your computer, then click Open.
The download may take a few minutes to complete.

 8. Click OK.

FortiOS 6.4.6 Administration Guide 926


Fortinet Technologies Inc.
System

Automatic updates

The FortiGate can be configured to request updates from FDN on a schedule, or via push notification.

Scheduled updates

Scheduling updates ensures that the virus and IPS definitions are downloaded to your FortiGate on a regular basis.
Updating definitions can cause a brief disruption in traffic that is currently being scanned while the FortiGate unit applies 
the new signature database. Updates should be scheduled during off-peak hours when network usage is at a minimum 
to ensure that network activity will not be affected by downloading the definitions files.

A schedule of once a week means any urgent updates will not be pushed until the scheduled 
time. If an urgent update is required, click the Update Licenses & Definitions Now button to 
manually update the definitions.

To configure scheduled updates in the GUI:

 1. Go to System > FortiGuard


 2. In the FortiGuard Updates section, enable Scheduled Updates.
 3. Configure the update schedule:

 4. Click Apply.

To configure scheduled updates in the CLI:

config system autoupdate schedule


set status enable
set frequency {every | daily | weekly}
set time <hh:mm>
set day <day_of_week>
end

Push updates

Push updates enable you to get immediate updates when new viruses or intrusions are discovered and new signatures 
are created. This ensures that the latest signature are sent to the FortiGate as soon as possible. 
When a push notification occurs, the FortiGuard server sends a notice to the FortiGate that a new signature definition file 
available. The FortiGate then initiates a download of the definition file. For maximum security, both scheduled and push 
updates should be enabled.

FortiOS 6.4.6 Administration Guide 927


Fortinet Technologies Inc.
System

To enable push updates - GUI:

 1. Go to System > FortiGuard


 2. In the FortiGuard Updates section, enable Accept push updates.
 3. Click Apply.

To enable push updates in the CLI:

config system autoupdate push-update


set status enable
end

Override push

If the FortiGate is behind a NAT device (or another FortiGate), or if your organization provides updates using their own 
FortiGuard server, an override server must be used to ensure that the FortiGate receives push update notifications. The 
FDS will connect to the NAT device when attempting to reach the FortiGate, and the NAT device must be configured to 
forward FDS traffic to the FortiGate on UDP port 9443.
Push updates must be enabled to configure a push update override.
For example, if the NAT device is another FortiGate:
 1. On the FortiGate NAT device, add a port forwarding virtual IP address in Policy & Objects > Virtual IPs. See  for 
details.
 2. On the FortiGate NAT device, add a security policy that connects to the internet and includes the port forwarding 
VIP.
 3. On the internal FortiGate device, configure Push update override.

To configure push update override in the GUI:

 1. Go to System > FortiGuard


 2. In the FortiGuard Updates section, enable Accept push updates.
 3. Enable Use override push, and enter the IP address and port number configured on the NAT device.
 4. Click Apply.

To configure push update override in the CLI:

config system autoupdate push-update


set status enable
set override
set address <vip_address>
set port <port_number>
end

Sending malware statistics to FortiGuard

FortiGate devices periodically send encrypted antivirus, IPS, botnet IP list, and application control statistics to 
FortiGuard. Included with these data is the IP address and serial number of the FortiGate, and the country that it is in. 
This information is never shared with external parties, Fortinet Privacy Policy.

FortiOS 6.4.6 Administration Guide 928


Fortinet Technologies Inc.
System

The malware statistics are used to improve various aspects of FortiGate malware protection. For example, antivirus data 
allow FortiGuard to determine what viruses are currently active. Signatures for those viruses are kept in the Active AV 
Signature Database that is used by multiple Fortinet products.Inactive virus signatures are moved to the Extended AV 
Signature Database (see Configuring FortiGuard updates on page 925). When events for inactive viruses start 
appearing in the malware data, the signatures are moved back into the AV Signature Database.
The FortiGate and FortiGuard servers go through a 2-way SSL/TLS 1.2 authentication before any data is transmitted. 
The certificates used in this process must be trusted by each other and signed by the Fortinet CA server.
The FortiGate only accepts data from authorized FortiGuard severs. Fortinet products use DNS to find FortiGuard 
servers and periodically update their FortiGate server list. All other servers are provided by a list that is updated through 
the encrypted channel.
Malware statistics are accumulated and sent  every 60 minutes by default.
To configure sharing this information, use the following CLI command:
config system global
set fds-statistics {enable | disable}
set fds-statistics-period <minutes>
end

The submission of malware data is in accordance with the Fortinet Privacy Policy.
There is no sensitive or personal information included in these submissions. Only malware 
statistics are sent.
Fortinet uses the malware statistics collected  in this manner to improve the performance of the 
FortiGate services and to display statistics on the Fortinet Support website for customers 
registered FortiGate devices.
Fortinet may also publish or share statistics or results derived from this malware data with 
various audiences. The malware statistics shared in this way do not include any customer 
data.

 
 
 

Update server location

The location of the FortiGuard update server that the FortiGate connects to can be set to either only servers in the USA 
only, or to the servers with the lowest latency.
On hardware FortiGate devices, the default is Lowest latency locations. On VM devices, the default is US only.

To configure the update server location in the GUI:

 1. Go to System > FortiGuard


 2. In the FortiGuard Updates section, set Update server location to US only or Lowest latency locations.
 3. Click Apply.

FortiOS 6.4.6 Administration Guide 929


Fortinet Technologies Inc.
System

To configure the update server location in the CLI:

config system fortiguard


set update-server-location {usa | any}
end

Filtering

Web filtering is used to block access to harmful, inappropriate, and dangerous web sites (see FortiGuard filter on page 
1161).
Email filtering is used to detect and block spam messages (see FortiGuard-based filters on page 1237). 

To configure filtering in the GUI:

 1. Go to System > FortiGuard


 2. Scroll down to the Filtering section.
 3. Configure the settings as needed:

Web Filter Cache Enable/disable web filter cache, and set the amount of time that the FortiGate 


will store a blocked IP address or URL locally. After the time expires, the 
FortiGate contacts the FDN to verify the address.

Email Filter Cache Enable/disable email filter cache, and set the amount of time that the FortiGate 


will store an email address locally.

FortiGuard filtering services The protocol and port used to contact the FortiGuard servers. These options 


can be changed in the CLI.

Filtering Service Availability The status of the filtering service. Click Test Connectivity if the filtering service 


is not available.

Request re-evaluation of a Click to re-evaluate a URL category rating on the FortiGuard web filter service.


URL's category

 4. Click Apply.

To configure filtering in the CLI:

config system fortiguard


set protocol {https | udp}
set port {443 | 53 | 8888}
set antispam-force-off {enable | disable}

FortiOS 6.4.6 Administration Guide 930


Fortinet Technologies Inc.
System

set antispam-cache {enable | disable}


set antispam-cache-ttl <integer>
set antispam-cache-mpercent <percent>
set antispam-timeout <integer>
set webfilter-force-off {enable | disable}
set webfilter-cache {enable | disable}
set webfilter-cache-ttl <integer>
set webfilter-timeout <integer>
end

When anycast is enabled (by default) the protocol is HTTPS and the port is 443.

Override FortiGuard servers

By default, FortiOS will update signature packages and query rating servers using public FortiGuard servers. This list 
can be overridden by adding servers to the override server list. Communication with public FortiGuard servers can also 
be disabled.

To add an override FortiGuard server in the GUI:

 1. Go to System > FortiGuard


 2. In the Override FortiGuard Servers table, click Create New. The Create New Override FortiGuard Server pane 
opens.

 3. Select the server address type: IPv4, IPv6, or FQDN.
 4. Enter the server address of the selected type in the Address field.
 5. Select the type of server: AntiVirus & IPS Updates, Filtering, or Both.
 6. Click OK, then click Apply.

To add an override FortiGuard server in the CLI:

config system central-management


set type fortiguard
config server-list
edit <integer>
set server-type {update rating}
set server-address <ip_address>
next
end
end

FortiOS 6.4.6 Administration Guide 931


Fortinet Technologies Inc.
System

Online security tools

FortiGuard Labs provides a number of online security tools, including but not limited to:
 l URL lookup
Enter a website address to see if it has been rated and what category and classification it is filed as. If you find a site  
that has been wrongly categorized, use this page to request that the site be re-evaluated: 
https://www.fortiguard.com/webfilter
 l Threat Encyclopedia
Browse FortiGuard Labs extensive encyclopedia of threats. Search for viruses, botnet C&C, IPS, endpoint 
vulnerabilities, and mobile malware: https://www.fortiguard.com/encyclopedia
 l Application Control
Browse FortiGuard Labs extensive encyclopedia of applications: https://www.fortiguard.com/appcontrol

FortiGuard anycast and third-party SSL validation

Anycast optimizes routing performance to FortiGuard servers. It is the default FortiGuard access mode.
Using Fortinet DNS servers, the FortiGate receives a single IP address for the domain name of each FortiGuard service. 
BGP routing optimization is transparent to the FortiGate. The domain name of each FortiGuard service is the common 
name in that service's certificate, which  is signed by a third-party intermediate CA.  The FortiGuard server uses third-
party certificate verification and the Online Certificate Status Protocol (OCSP) stapling check, so that the FortiGate can 
always validate the FortiGuard server certificate efficiently.
FortiGate will only complete the TLS handshake with an anycast server that has a good OCSP status for its certificate. 
Any other status will result in a failed SSL connection. OCSP stapling is reflected on the signature interval so that good 
means that the certificate is not revoked at that timestamp.  The FortiGuard servers query the CA's OCSP responder 
every four hours and update its OCSP status. If the FortiGuard is unable to reach the OCSP responder, it will keep the 
last known OCSP status for up to seven days. This cached OCSP status will be sent out immediately when a client 
connection request is made, optimizing the response time.
FortiGuard represents all cloud based servers; see Anycast and unicast services for details.
The anycast server has one IP address to match its domain name. The FortiGate connects with a single server address, 
using HTTPS and port 443, regardless of where the FortiGate is located.

FortiOS 6.4.6 Administration Guide 932


Fortinet Technologies Inc.
System

To configure the anycast FortiGuard access mode:

config system fortiguard


set fortiguard-anycast {enable | disable}
set fortiguard-anycast-source {fortinet | aws}
end

Connection process

The following process is used to connect to an anycast server:

FortiOS 6.4.6 Administration Guide 933


Fortinet Technologies Inc.
System

 1. The FortiGate embeds the CA_bundle certificate, which includes the root CA with CRL list and third-party 
intermediate CA, in the root CA level.
 2. The FortiGate finds the FortiGuard IP address from its domain name from DNS.
 3. The FortiGate starts a TLS handshake with the FortiGuard IP address. The client hello includes an extension of the 
status request.
 4. The FortiGuard servers provide a certificate with its OCSP status: good, revoked, or unknown.
 5. The FortiGate verifies the CA chain against the root CA in the CA_bundle.
 6. The FortiGate verifies the intermediate CA's revoke status against the root CA's CRL.
 7. The FortiGate verifies the FortiGuard certificate's OCSP status:
OCSP Response Data:
OCSP Response Status: successful (0x0)
Response Type: Basic OCSP Response
Version: 1 (0x0)
Responder Id: 3DD350A5D6A0ADEEF34A600A65D321D4F8F8D60F
Produced At: Aug 20 07:50:58 2019 GMT
Responses:
Certificate ID:
Hash Algorithm: sha1
Issuer Name Hash: 49F4BD8A18BF760698C5DE402D683B716AE4E686
Issuer Key Hash: 3DD350A5D6A0ADEEF34A600A65D321D4F8F8D60F
Serial Number: 02555C9F3901B799DF1873402FA9392D
Cert Status: good
This Update: Aug 20 07:50:58 2019 GMT
Next Update: Aug 27 07:05:58 2019 GMT

Abort conditions include:
 l The CN in the server's certificate does not match the domain name resolved from the DNS.
 l The OCSP status is not good.
 l The issuer-CA is revoked by the root-CA.
 8. Once the SSL handshake is established, the FortiGate can engage the server.

FortiOS 6.4.6 Administration Guide 934


Fortinet Technologies Inc.
System

Example Wireshark PCAP:

Using FortiManager as a local FortiGuard server

FortiManager can provide a local FortiGuard server with port 443 access.
Anycast FortiGuard settings force the rating process to use port 443, even with an override server. Using a unique 
address in the same subnet as the FortiManager access IP address, the FortiManager can provide local FortiGuard 
updates and rating access with a dedicated IP address and port 443.

To use a FortiManager as a local FortiGuard server:

config system central-management


set type fortimanager
set fmg "172.18.37.148"
config server-list
edit 1
set server-type update
set server-address 172.18.37.150
next
edit 2
set server-type rating
set server-address 172.18.37.149
next
end
set fmg-update-port 443
set include-default-servers enable
end

When fmg-update-port is set to 443, the update process will use port 443 to connect to the override update server, 
which is the local FortiGuard server in the FortiManager. If this is not set, the update process will use port 8890, and the 
server address setting has to be the FortiManager access IP address. Override FortiGuard services come from the 
server list that is the local FortiGuard server in the FortiManager, and use the traditional, non-OCSP TLS handshake. If 
override servers in the FortiManager are not available, the default FortiGuard servers are connected, and the anycast 
OCSP TLS handshake is used.

FortiOS 6.4.6 Administration Guide 935


Fortinet Technologies Inc.
System

Cloud service communication statistics

Fortinet service communications statistics are displayed on the FortiGuard page. The statistics  correspond with the 
output from diagnose sys service-communication. The traffic volume values in the GUI are the sums of data 
from the last 24 hours.

To view Fortinet service communications statistics:

 1. Go to System > FortiGuard. 


The Fortinet Service Communications statistics are displayed on the right side of the screen:

 2. Enter the following CLI command:
# diagnose sys service-communication
FortiCare:
The last 1 hour(in bytes): 0 0 0 0 0 0 0 0 0 0 0 0
The last 24 hours(in bytes): 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The last 7 days(in bytes): 0 0 0 0 0 0 0
FortiGuard Download:
The last 1 hour(in bytes): 0 0 0 336 1992 0 0 0 0 0 0 0
The last 24 hours(in bytes): 0 2328 6752 4450632 0 33696 0 5666528 0 49712 0 28840 0
29840 0 4185832 0 31488 0 76424 0 4226808 0 173880
The last 7 days(in bytes): 14454160 14985496 9532184 0 0 0 0
FortiGuard Query:
The last 1 hour(in bytes): 0 0 0 372 1107 0 0 0 0 0 0 0
The last 24 hours(in bytes): 0 1479 4828 929 0 929 0 929 0 929 0 929 0 929 0 1858 0 929
0 1858 0 1858 0 929
The last 7 days(in bytes): 13739 15793 13624 0 0 0 0
FortiCloud Log:
The last 1 hour(in bytes): 0 343 563 899 1014 405 0 0 0 570 405 0
The last 24 hours(in bytes): 0 4535 6004 2184 684 1906 1938 680 861 1933 685 1020 687
1772 693 978 1023 1574 1195 697 1035 1323 1020 678
The last 7 days(in bytes): 26560 26136 0 0 0 0 0
FortiSandbox Cloud:
The last 1 hour(in bytes): 0 0 0 0 0 0 0 0 0 0 0 0
The last 24 hours(in bytes): 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

FortiOS 6.4.6 Administration Guide 936


Fortinet Technologies Inc.
System

The last 7 days(in bytes): 0 0 0 0 0 0 0


FortiGuard.com:
The last 1 hour(in bytes): 0 0 122162 123544 122162 244324 0 0 0 0 0 0
The last 24 hours(in bytes): 0 612192 532887 1939 1143 122162 44924 5039 0 125091 43096
1939 0 123305 43090 1939 0 123305 43096 1939 0 122162 42478 4930
The last 7 days(in bytes): 1658746 1347340 1421746 0 0 0 0
OCVPN Service:
The last 1 hour(in bytes): 1044 9382 0 0 0 0 0 0 0 0 0 0
The last 24 hours(in bytes): 1044 9382 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The last 7 days(in bytes): 10426 0 0 0 0 0 0
SDNS Service:
The last 1 hour(in bytes): 0 0 0 0 0 0 0 0 0 0 0 0
The last 24 hours(in bytes): 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The last 7 days(in bytes): 0 0 0 0 0 0 0
FortiToken Registration:
The last 1 hour(in bytes): 0 0 0 0 0 0 0 0 0 0 0 0
The last 24 hours(in bytes): 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The last 7 days(in bytes): 0 0 0 0 0 0 0
SMS Service:
The last 1 hour(in bytes): 0 0 0 0 0 0 0 0 0 0 0 0
The last 24 hours(in bytes): 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The last 7 days(in bytes): 0 0 0 0 0 0 0

IoT detection service

Internet of Things (IoT) detection is a subscription service that allows FortiGate to detect unknown devices in FortiGuard 
that are not detected by the local Device Database (CIDB). When the service is activated, FortiGate can send device 
information to the FortiGuard collection server. When a new device is detected, FortiGate queries the results from the 
FortiGuard query for more information about the device.
The IoT detection service requires an IOTH contract, which is part of the Enterprise and 360 Protection bundle, or can be 
purchased on its own.

FortiGate device requirements:

The FortiGate device must be:
 l Registered with FortiCare 
 l Connected to an anycast FortiGuard server 

How the service works:

 1. Enable Device Detection on an interface..
 2. FortiGate uses the interface to detect device traffic flow.
 3. Upon detecting traffic from an unknown device, FortiGate sends the device data to the FortiGuard collection server.
 4. The collection server returns data about the new device to the FortiGuard query server.
 5. If the device signature does not appear in the local Device Database (CIDB) or some fields are not complete, 
FortiGate queries FortiGuard for more information about the device. 
To view the latest device information in the GUI, go to Dashboard > Users & Devices and expand the Device Inventory 
widget.

FortiOS 6.4.6 Administration Guide 937


Fortinet Technologies Inc.
System

To debug the daemon in the CLI:

 1. Disable the local device database in order to force all queries to go to FortiGuard.
# diagnose src-vis local-sig disable
 2. Enable iotd debugs.
# diagnose debug application iotd -1
# diagnose debug enable
FortiGate sends the device data  to the FortiGuard collection server.
FortiWiFi-60E # [iotd] recv request from caller size:61
[iotd] service:collect hostname: ip: fd:-1 request tlv_len:41
[iotd] txt(.....y...w.....Jasons-iPhone6....579=23..)
[iotd] hex
(02010007017903060f77fc0203000e4a61736f6e732d6950686f6e6536020400083537393d32330cf
f)
[iotd] service:collect hostname:qadevcollect.fortinet.net ip: fd:-1 got server hostname
[iotd] service:collect hostname:qadevcollect.fortinet.net ip:192.168.100.133 fd:-1 got
server ip
[iotd] service:collect hostname:qadevcollect.fortinet.net ip:192.168.100.133 fd:13
socket created
[iotd] service:collect hostname:qadevcollect.fortinet.net ip:192.168.100.133 fd:13
connecting
[iotd] fd:13 monitor event:pollout
[iotd] service:collect hostname:qadevcollect.fortinet.net ip:192.168.100.133 fd:13 build
req packet
[iotd] service:collect hostname:qadevcollect.fortinet.net ip:192.168.100.133 fd:13
collect resp:1(pending)
The FortiGuard collection server returns new device data  to the FortiGuard query server.
[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17 got query
resp
[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17 id:0
total_len:48 header_len:16 tlv_len:32 confidence:100 mac:f8:87:f1:1f:ab:95
[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17
remaining_len:32 type:1 len:6
[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17 got tlv
category:'Mobile'
[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17
remaining_len:24 type:2 len:6

FortiOS 6.4.6 Administration Guide 938


Fortinet Technologies Inc.
System

[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17 got tlv


sub_category:'Mobile'
[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17
remaining_len:16 type:3 len:5
[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17 got tlv
vendor:'Apple'
[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17
remaining_len:9 type:4 len:0
[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17
remaining_len:7 type:5 len:3
[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17 got tlv
os:'iOS'
[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17
remaining_len:2 type:6 len:0
[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17 send
query response to caller size:48
[iotd] txt(............d0 ...Mobile..Mobile..Apple....iOS..)
[iotd] hex
(f887f11fab950000000000006430200001064d6f62696c6502064d6f62696c6503054170706c650400
0503694f530600)
[iotd] service:query hostname:qadevquery.fortinet.net ip:192.168.100.248 fd:17 read
resp:0(good)
 3. The query returns the device information  including the information source (src fortiguard).
# diagnose user device list
vd root/0 f8:87:f1:1f:ab:95 gen 26 req OUA/34
created 503s gen 23 seen 102s lan gen 7
ip 192.168.1.110 src arp
hardware vendor 'Apple' src fortiguard id 0 weight 100
type 'Mobile' src fortiguard id 0 weight 100
family 'Mobile' src fortiguard id 0 weight 100
os 'iOS' src fortiguard id 0 weight 100
host 'Jasons-iPhone6' src dhcp

FortiAP query to FortiGuard IoT service to determine device details

A FortiAP collects packets from devices and queries FortiGuard with the help of the FortiGate. Device detection results 
are reported back to the FortiGate where this information is displayed. Querying the FortiGuard service requires an IoT 
Detection Service license.
The following attributes can be configured in wireless-controller setting:

Attribute Description

device-weight <integer> Set the device upper limit of confidence  (0 - 255, default = 1, 0 = disable).

device-holdoff <integer> Set the device lower limit of creation time, in minutes (0 - 60, default = 5).

device-idle <integer> Set the device upper limit of idle time, in minutes (0 - 14400, default = 1440).

To query the FortiGuard IoT service:

config wireless-controller setting


...
set device-weight 1
set device-holdoff 5

FortiOS 6.4.6 Administration Guide 939


Fortinet Technologies Inc.
System

set device-idle 1440


...
end
# diagnose user device list
vd root/0 54:27:1e:e6:26:3d gen 89 req OUA/34
created 70s gen 86 seen 2s port29 gen 28
ip 10.29.1.214 src mac
hardware vendor 'Asustek compute' src fortiguard id 0 weight 21
type 'Home & Office' src fortiguard id 0 weight 21
family 'Computer' src fortiguard id 0 weight 21
os 'Linux' src dhcp id 822 weight 128
host 'test-wifi' src dhcp

Feature visibility

Feature visibility is used to control which features are visible in the GUI.  This allows features that are not in use to be 
hidden.  Some features are also invisible by default and must be made visible before they can be configure in the GUI. 
The visibility of a feature does not affect its functionality or configuration. Invisible features can still be configured using 
the CLI.

To change the visibility of features:

 1. Go to System > Feature Visibility.


 2. Change the visibility of the features as required. To simplify setting security features, a feature set can be selected 
from the dropdown list.
For information about what settings each option affects, click on the + icon to the right of the feature name.
Changes are listed on the right of the screen.
 3. Click Apply.

Security feature presets

Six system presets are available:
 l NGFW: for networks that require application control and protection from external attacks.
 l ATP: for networks that require protection from viruses and other external threats.
 l WF: for networks that require web filtering.
 l NGFW + ATP: for networks that require protection from external threats and attacks.
 l UTM: for networks that require protection from external threats and wish to use security features that control 
network usage. This is the default setting.
 l Full UTM: for networks that require the normal UTM features, as well as antivirus, application control, endpoint 
control, and web filtering.
 l Custom should be chosen for networks that require customization of available features (including the ability to 
select all features).

FortiOS 6.4.6 Administration Guide 940


Fortinet Technologies Inc.
System

Certificates

The following topics provide instructions about certificates:
 l Microsoft CA deep packet inspection on page 941
 l Procure and import a signed SSL certificate on page 946
 l Provision a trusted certificate with Let's Encrypt on page 949

Microsoft CA deep packet inspection

In most production environments, you want to use a certificate issued be your own PKI for deep packet inspection (DPI). 
An existing Microsoft root CA can be used to issue a subordinate CA (sub CA) certificate that is installed as a DPI 
certificate on the FortiGate.
Complete the following steps to create your own sub CA certificate and use it for DPI:
 1. Create a Microsoft sub CA certificate
 2. Export the certificate and private key
 3. Import the certificate and private key into the FortiGate
 4. Configure a firewall policy for DPI
 5. Verify that the sub CA certificate is being used for DPI
The FortiGate firewall uses information in the original web server certificate, then issues a new certificate signed by the 
Microsoft DPI certificate. The FortiGate then sends this certificate with the issuing DPI certificate to the client's web 
browser when the SSL session is being established.
The browser verifies that the certificate was issued by a valid CA, then looks for the issuing CA of the Microsoft DPI 
certificate in its loca trusted root CA store to complete the path to trusted root CA.
The Microsoft CA root certificate is normally deployed to all client PCs in the Windows domain, so the client can 
complete the certificate path up to a trusted root CA. The FortiGate now controlsand can inspect the two HTTPS 
sessions: one with the external web server, and one with the client PC.

Create a Microsoft sub CA certificate

A Microsoft sub CA certificate can be created on a Microsoft CA server, or remotely using a web browser.
Creating a certificate remotely requires that the web enrollment option is configured on the Microsoft CA server. Remote 
certificate requests require HTTPS; requests are not allowed with HTTP.

To create a Microsoft sub CA certificate remotely:

 1. Open a web browser and go to one of the following URLs:   
 l https://<FQDN-CA-server>/CertSrv
 l https://<IP-CA-server>/CertSrv.

FortiOS 6.4.6 Administration Guide 941


Fortinet Technologies Inc.
System

 2. Log in to a domain administrator account that has web enrollment rights.

 3. Click Request a certificate.


 4. Click advanced certificate request.

 5. Click Create and submit a request to this CA, then click Yes in the Web Access Confirmation warning.


 6. For the Certificate Template, select Subordinate Certification Authority.
 7. Enable Mark keys as exportable.
 8. Fill out the remaining information according to your security policy.

 9. Submit the request.
 10. Click Yes in the Web Access Confirmation warning.
 11. Click Install this certificate.
The certificate and private key are located in the current user's certificate store.

FortiOS 6.4.6 Administration Guide 942


Fortinet Technologies Inc.
System

Export the certificate and private key

To export the certificate and private key:

 1. Open the Microsoft Management Console (MMC) and add the Certificate Snap-in.


 2. Go to the user's certificate store to locate the sub CA certificate that you just installed.

 3. Right-click the certificate and select All Tasks > Export.


 4. Click Next to start the Microsoft Certificate Export Wizard.
 5. Follow the steps in the wizard:
 l When asked, select Yes, export the private key.
 l Only the PKCS #12 (.PFX) format is available, and it requires a password.
 l When selecting the encryption type, select TripleDES-SHA1 if you are using an older version of FortiOS (5.6.9 
and earlier). Otherwise, select AES256-SHA256.

 6. Complete the wizard, and save the DPI certificate to a local folder.

Import the certificate and private key into the FortiGate

The certificate can be imported from the local computer using the GUI, or from a TFTP server using the CLI.
After importing the certificate, you can view it in the GUI to verify that it was successfully imported.

To import the certificate and private key into the FortiGate in the GUI:

 1. Go to System > Certificates.


 2. Select Import > Local Certificate.
 3. Set Type to PKCS #12 Certificate.
 4. Click Upload and locate the certificate file.
 5. Enter the Password.

FortiOS 6.4.6 Administration Guide 943


Fortinet Technologies Inc.
System

 6. Optionally, modify the Certificate Name.

 7. Click OK.

To import the certificate and private key into the FortiGate in the CLI:

execute vpn certificate local import <certificate file name> <tftp ip address> <password>

To verify that the certificate was imported:

 1. Go to System > Certificates. By default, the Certificate option is not visible, see Feature visibility on page 940 for 


information.
 2. Locate the newly imported certificate in the table.
 3. Select the certificate and click View Details to view the certificate details.

Configure a firewall policy for DPI

The certificate is used in an SSL/SSH inspection profile that is then used in a firewall policy.

FortiOS 6.4.6 Administration Guide 944


Fortinet Technologies Inc.
System

To configure a firewall policy for DPI:

 1. Go to Security Profiles > SSL/SSH Inspection.


 2. Click Create New.
 3. Configure the inspection profile, selecting the new certificate 

 4. Click Apply.
 5. Go to Policy & Objects > Firewall Policy.
 6. Create a new policy, or edit an existing policy.
 7. In the SSL Inspection field, select the new SSL inspection profile.

 8. Configure the remaining settings as needed.
 9. Click OK.

FortiOS 6.4.6 Administration Guide 945


Fortinet Technologies Inc.
System

Verify that the sub CA certificate is being used for DPI

You can verify that the certificate is being used for resigning web server certificates when a user connects to an external 
HTTPS website.

To verify that the certificate is being used:

 1. On a client PC that is behind the FortiGate, go to an external HTTPS website.
When connecting to the website, no certificate warning should be shown.
 2. In your web browser, view the certificate and certificate path.
The methods for doing this vary depending on the browser. See your browsers documentation for information.

Procure and import a signed SSL certificate

A signed SSL certificate can be used when configuring SSL VPN, for administrator GUI access, and for other functions 
that require a certificate.

Before creating a certificate, you must have a registered domain. With a valid FortiGuard 
subscription, FortiDDNS can be used to register a domain; see DDNS on page 436 for more 
information.

Follow these instructions to purchase, import, and use a signed SSL certificate:
 l Obtain, setup, and download an SSL certificate package from a certificate authority
 l Generate a CSR
 l Import the signed certificate into your FortiGate
 l Configure your FortiGate to use the signed certificate

Obtain, setup, and download an SSL certificate package from a certificate authority

SSL certificate packages can be purchased from any Certificate Authority (CA), such as DigiCert, GoDaddy, or 
GlobalSign.

Let's Encrypt can be used to generate a free, trusted SSL certificate. See Provision a trusted 
certificate with Let's Encrypt on page 949 for details.

A third party CA might not sign a certificate with an intranet name or IP address. For details, 
see Can I request a certificate for an intranet name or IP address?

The process for purchasing, setting up, and downloading a certificate will vary depending on the CA that is used, and if a 
CSR must be generated on the FortiGate.

FortiOS 6.4.6 Administration Guide 946


Fortinet Technologies Inc.
System

To purchase a certificate package:

 1. Create an account with your chosen vendor, or use the account that you used to purchase your domain.
 2. Locate the SSL Certificates page.
 3. Purchase a basic SSL certificate for domain validation only. If required, a more secure SSL certificate can be 
purchased.
 4. If required, load the CSR, either by uploaded the text file or copying and pasting the contents into the requisite text 
box. See Generate a CSR on page 947 for information on generating the CSR on the FortiGate.
 5. If required, set the server type to Other.
 6. Verify the certificate per the requirements of the CA.
 7. Download the signed certificate to your computer.
 8. Import the signed certificate into your FortiGate; see Import the signed certificate into your FortiGate on page 948.

Generate a CSR

Some CAs can auto-generate the CSR during the signing process, or provide tools for creating CSRs. If necessary, a 
CSR can be created in your FortiGate device’s GUI.

To generate a CSR on your FortiGate:

 1. Go to System > Certificates. By default, the Certificates option is not visible, see Feature visibility on page 940 for 


information.
 2. Click Generate. The Generate Certificate Signing Request page opens.

 3. Configure the CSR request:
 l Ensure that the certificate has a unique name.
 l Set the ID Type to Domain Name and enter a Domain Name.
 l An email address is required.
 l Ensure that the Key Size is set to 2048 Bit.
 l Set the Enrollment Method to File Based.

FortiOS 6.4.6 Administration Guide 947


Fortinet Technologies Inc.
System

 4. Click OK.
The CSR will be added to the certificate list with a status of PENDING.
 5. In the certificate list, select the new CSR then click Download to save the CSR to your computer.
The CSR file can be opened in any text editor, and will resemble the following:
-----BEGIN CERTIFICATE REQUEST-----
MIICuTCCAaECAQAwSzEcMBoGA1UEAxMTZm9ydGlzc2x2cG5kZW1vLmNvbTErMCkG
CSqGSIb3DQEJARYcZm9ydGlzc2x2cG5kZW1vQGZvcnRpbmV0LmNvbTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMtnpNoR20NH2+UEX/NsyCmZhQqc4af3
Be1u9iOoNbo9Fk42gw47r71moAN+1jTL/Tcp3hRhXtpgoI7Zh3vjZnBbD2wwU8Ow
U7d1h5MULyMehR9r4T6OAJl4KbKPt5u90r5SpIb6mM1OIKvzMncuRS66rW1St0KP
mp/f6QjpjMrthnyJkCejgyTA1YwWNuT9BcO6PTkxBqVMLaRP6TUH6He9uhOx1Cj/
5tzvSdAozZIr2moMieQy0lNd6oQcgpdzaB9QN41+cZOlUXRCMPoH7E4KUe3/Gnis
+NMdQ8rIBijvWCXrKj20wb6sUEjAGJkcXlqVHWYCKWXl6Owejmc4ipkCAwEAAaAp
MCcGCSqGSIb3DQEJDjEaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBaAwDQYJKoZI
hvcNAQELBQADggEBAJKhtz2BPIKeHH9HcJKnfBKL+a6vu1l+1sW+YqnyD+3oR9ec
0eCmLnPxyyxsVel/tRsUg4DTfmooLNDhOjgfMsWxAGUQgrDH2k87cw6kiDAPCqv1
b+hFPNKZQSd09+HXAvOpXrMlrw5YdSaoRnau6Q02yUIYennKTIzFIscgh1mk4FSe
mb12DhPF+QydDCGDgtqnQbfxlDC0WmDcmxwa/0ZktoQhhhEbYgJ2O7l4TMqOxs/q
AZgwJlSNGBALLA2AxkIRUMKUteDdXz0QE8xNrvZpLTbWCNIpYJdRRqSd5C1w2VF4
CFgugTjFaJ13kYmBimeMRQsFtjLV5AxN+bUUsnQ=
-----END CERTIFICATE REQUEST-----

Import the signed certificate into your FortiGate

To import the signed certificate into your FortiGate:

 1. Unzip the file downloaded from the CA.
There should be two CRT files: a CA certificate with bundle in the file name, and a local certificate.
 2. Log in to your FortiGate unit and go to System > Certificates.
 3. Click Import > Local Certificate.

 4. Upload the local certificate file, then click OK.
 5. The status of the certificate will change from PENDING to OK.
 6. Click Import > CA Certificate.
 7. Set the Type to File, upload the CA certificate file, then click OK.
The CA certificate will be listed in the CA Certificates section of the certificates list.

FortiOS 6.4.6 Administration Guide 948


Fortinet Technologies Inc.
System

Configure your FortiGate to use the signed certificate

After the signed certificates have been imported, you can use it when configuring SSL VPN, for administrator GUI 
access, and for other functions that require a certificate.

To configure your FortiGate to use the signed certificate for SSL VPN:

 1. Go to VPN > SSL-VPN Settings.


 2. Set Server Certificate to the new certificate.
 3. Configure other settings as needed.
 4. Click Apply.
For more information on configuring SSL VPN, see SSL VPN on page 1557 and the Setup SSL VPN video in the Fortinet 
Video Library. 

To configure using the certificate for administrator GUI access in the CLI:

config system global


set admin-server-cert fortisslvpndemo
end

To change the certificate that is used for administrator GUI access in the GUI:

 1. Go to System > Settings.


 2. In the Administration Settings section, change HTTPS server certificate as needed.
 3. Click Apply. You will be logged out of FortiOS.

Provision a trusted certificate with Let's Encrypt

Let's Encrypt can be used to generate a free, trusted certificate that can be used by FortiGate to establish valid SSL 
connections that do not generate certificate warnings. See the Let's Encrypt documentation for more information and 
different methods of generating a trusted certificate.

Let's Encrypt certificates have 90 day lifespans. They recommend replacing the certificate 
every 60 days.

The main requirements for using Let's Encrypt are:
 l An FQDN that is publicly resolvable to an IP address that you own.
 l Proof of ownership of the domain.
 l An application that uses Automatic Certificate Management Environment (ACME) to generate the certificate.

Fortinet has a dynamic DNS service that you can use if you do not have your own domain. See 
DDNS on page 436 for more information.

FortiOS 6.4.6 Administration Guide 949


Fortinet Technologies Inc.
System

This example uses Certbot to satisfy proof of ownership and generation of the certificate. It is an ACME client with a built-
in, temporary webserver used for proof of domain ownership. Follow the instructions on the Certbot website to install the 
correct version in your Linux environment; this example uses Debian.
The Certbot application must be reachable by Let's Encrypt on TCP port 80 on the IP address that your FQDN resolves 
to.

Configure your FortiGate to reach the Linux environment

You can use a VIP to forward requests to your Linux environment on port 80. In this example, the  Linux environment has 
the IP address 10.100.80.200.

To create a VIP to forward requests to your Linux environment on port 80 in the GUI:

 1. Go to Policy & Objects > Virtual IPs and click Create New. 


 2. Enter a name for the VIP and set the interface.
 3. Set the Mapped IP address/range to the IP address of the Linux environment, in this case 10.100.80.20.
 4. Enable Port Forwarding, set Protocol to TCP, and set External service port and Map to port to 80.

 5. Click OK.

To add the VIP to a policy to allow traffic to reach your Linux environment in the GUI:

 1. Go to Policy & Objects > Firewall Policy and click Create New.


 2. Set Incoming Interface to the interface used in the VIP.
 3. Set Destination to the VIP, in this example: Linux VM.

FortiOS 6.4.6 Administration Guide 950


Fortinet Technologies Inc.
System

 4. Configure the remaining settings as required. 

 5. Click OK.

To create a VIP and add it to a policy in the CLI:

config firewall vip


edit "Linux VM"
set mappedip "10.100.80.200"
set extintf "wan1"
set portforward enable
set extport 80
set mappedport 80
next
end
config firewall policy
edit 2
set name "To_Linux_VM"
set srcintf "wan1"
set dstintf "internal5"
set srcaddr "all"
set dstaddr "Linux VM"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set nat enable
next
end

Create and upload the certificate

To manually request a certificate:

 1. In the Linux command line enter:
certbot certonly
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

FortiOS 6.4.6 Administration Guide 951


Fortinet Technologies Inc.
System

1: Spin up a temporary webserver (standalone)


2: Place files in webroot directory (webroot)

 2. Press 1 to load a temporary webserver.
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to
cancel):

 3. Enter your FQDN, such as company.domain.com.
Four files should be generated:
 l cert.pem
 l chain.pem
 l fullchain.pem
 l privkey.pem

To import the certificate and private key into the FortiGate in the GUI:

 1. Go to System > Certificates. By default, the Certificates option is not visible, see Feature visibility on page 940 for 


information.
 2. Click Import > Local Certificate.
 3. Set Type to Certificate.
 4. For Certificate File, upload the fullchain.pem file.
 5. For Key File, upload the privkey.pem file.
 6. Enter a password.
 7. Optionally, change the Certificate Name.

 8. Click OK.

Configure your FortiGate to use the signed certificate

After the signed certificates have been imported, you can use it when configuring SSL VPN, for administrator GUI 
access, and for other functions that require a certificate.

To configure your FortiGate to use the signed certificate for SSL VPN:

 1. Go to VPN > SSL-VPN Settings.


 2. Set Server Certificate to the new certificate.
 3. Configure other settings as needed.
 4. Click Apply.
For more information on configuring SSL VPN, see SSL VPN on page 1557 and the Setup SSL VPN video in the Fortinet 
Video Library. 

FortiOS 6.4.6 Administration Guide 952


Fortinet Technologies Inc.
System

To configure using the certificate for administrator GUI access in the CLI:

config system global


set admin-server-cert fullchain
end

To change the certificate that is used for administrator GUI access in the GUI:

 1. Go to System > Settings.


 2. In the Administration Settings section, change HTTPS server certificate as needed.
 3. Click Apply. You will be logged out of FortiOS.

Configuration scripts

Configuration scripts are text files that contain CLI command sequences. They can be created using a text editor or 
copied from a CLI console, either manually or using the Record CLI Script function.
Scripts can be used to run the same task on multiple devices. For example, if your devices use the same security 
policies, you can enter or record the commands to create those policies in a script, and then run the script on each 
device. You could also create the policies in the GUI, and then copy and paste the CLI commands from the CLI Console 
using the show command.
If the FortiGate is managed by FortiManager, scripts can be uploaded to FortiManager and then run on any other 
FortiGates that are managed by that FortiManager. See Scripts in the FortiManager Administration Guide.

A comment line in a script starts with the number sign (#). Comments are not executed. 

To run a script using the GUI:

 1. Click on your username and select Configuration > Scripts.


 2. Click Run Script.
 3. Select the text file containing the script on your management computer, then click OK.
The script runs immediately, and the Script Execution History table is updated, showing if the script ran 
successfully.

FortiOS 6.4.6 Administration Guide 953


Fortinet Technologies Inc.
System

Workspace mode

Workspace mode allows administrators to make a batch of changes that are not implemented until the transaction is 
committed. Prior to committing, the changes can be reverted or edited as needed without impacting current operations.
When an object is edited in workspace mode it is locked, preventing other administrators from editing that object. A 
warning message will be shown to let the administrator know that the object is currently being configured in another 
transaction.
All administrators can use workspace mode; their permissions in workspace mode are the same as defined in their 
account profile.
A workspace mode transaction times out after five minutes if there is no activity. When a transaction times out, all 
changes are discarded. A warning message will be shown to let the administrator know that a timeout is imminent, or has 
already happened:
config transaction id=1 will expire in 30 seconds
config transaction id=1 will expire in 20 seconds
config transaction id=1 will expire in 10 seconds
config transaction id=1 has expired

The following  commands are not changeable in a workspace transaction:
config system console
config system resource-limits
config system elbc
config system global
set split-port
set vdom-admin
set management-vdom
set wireless-mode
set internal-switch-mode
end
config system settings
set opmode
end
config system npu
config system np6
config system wireless
set mode
end
config system vdom-property
config system storage

The execute batch command cannot be used in or to start workspace mode.

To use workspace mode:

 1. Start workspace mode:
execute config-transaction
Once in workspace mode, the administrator can make configuration changes, all of which are made in a local CLI 
process that is not viewable by other processes.
 2. Commit configuration changes:
execute config-transaction commit
After performing the commit, the changes are available for all other processes, and are also made in the kernel.

FortiOS 6.4.6 Administration Guide 954


Fortinet Technologies Inc.
System

 3. Abort configuration changes:
execute config-transaction abort
If changes are aborted, no changes are made to the current configuration or the kernel.

Diagnose commands

diagnose sys config-transaction show txn-meta

Show config transaction meta information. For example:
# diagnose sys config-transaction show txn-meta
txn_next_id=8, txn_nr=2

diagnose sys config-transaction show txn-info

Show config transaction information. For example:
# diagnose sys config-transaction show txn-info
current_jiffies=680372

txn_id=6, expire_jiffies=706104, clicmd_fpath='/dev/cmdb/txn/6_EiLl9G.conf'


txn_id=7, expire_jiffies=707427, clicmd_fpath='/dev/cmdb/txn/7_UXK6wY.conf'

diagnose sys config-transaction show txn-entity

Show config transaction entity. For example:
# diagnose sys config-transaction show txn-entity
vd='global', cli-node-oid=37(system.vdom), txn_id=7. location: fileid=0, storeid=0,
pgnr=0, pgidx=0
vd='global', cli-node-oid=46(system.interface), txn_id=7. location: fileid=3,
storeid=0, pgnr=0, pgidx=0

diagnose sys config-transaction show txn-lock

Show transaction lock status. For example:
# diagnose sys config-transaction show txn-lock
type=-1, refcnt=0, value=256, pid=128

diagnose sys config-transaction status

Show the transaction status in the current CLI.

Custom languages

Custom languages can be uploaded and used for SSL VPN web portals. Custom languages must be enabled before 
they can be added in the GUI.

To enable custom languages:

config system global


set gui-custom-language enable
end

FortiOS 6.4.6 Administration Guide 955


Fortinet Technologies Inc.
System

To configure a custom language in the GUI:

 1. Go to System > Custom Languages and click Create New.


 2. Enter the name of the language.
 3. Optionally, enter a comment.
 4. Click Upload and upload the language JSON file from your management computer.
 5. Click OK.

To configure a language in an SSL VPN web portal in the GUI:

 1. Go to VPN > SSL-VPN Portals.


 2. Edit an existing portal, or click Create New to create a new one.
 3. Enable Web Mode, then select the language from the Language field.
 4. Click OK.

To configure a custom language in the CLI:

config system custom-language


edit <language>
set filename <file>
next
end

To configure a language in an SSL VPN web portal in the GUI:

config vpn ssl web portal


edit <portal>
set web-mode enable
set custom-lang <language>
next
end

FortiOS 6.4.6 Administration Guide 956


Fortinet Technologies Inc.
Policy and Objects

This section contains topics on configuring policies and traffic shaping:
 l Policies on page 957
 l Objects on page 1053
 l Traffic shaping on page 1080

Policies

The firewall policy is the axis around which most features of the FortiGate revolve. Many firewall settings end up relating 
to or being associated with the firewall policies and the traffic they govern. Any traffic going through a FortiGate has to be 
associated with a policy. These policies are essentially discrete compartmentalized sets of instructions that control the 
traffic flow going through the firewall. These instructions control where the traffic goes, how it is processed, if it is 
processed, and whether or not it is allowed to pass through the FortiGate.
When the firewall receives a connection packet, it analyzes the source address, destination address, and service (by 
port number). It also registers the incoming interface, the outgoing interface it needs to use, and the time of day. Using 
this information, the FortiGate firewall attempts to locate a security policy that matches the packet. If a policy matches 
the parameters, then the FortiGate takes the required action for that policy. If it is Accept, the traffic is allowed to proceed 
to the next step. If the action is Deny or a match cannot be found, the traffic is not allowed to proceed.
The two basic actions at the initial connection are either Accept or Deny:
 l If the action is Accept, the policy permits communication sessions. There may be other packet processing 
instructions, such as requiring authentication to use the policy or restrictions on the source and destination of the 
traffic.
 l If the action is Deny, the policy blocks communication sessions, and you can optionally log the denied traffic. If no 
security policy matches the traffic, the packets are dropped. A Deny security policy is needed when it is required to 
log the denied traffic, also called violation traffic.
One other action can be associated with the policy:
 l IPsec: this is an Accept action that is specifically for IPsec VPNs.
The following topics provide instructions on configuring policies:
 l Firewall policy parameters on page 958
 l Profile-based NGFW vs policy-based NGFW on page 959
 l NGFW policy mode application default service on page 963
 l Application logging in NGFW policy mode on page 965
 l Policy views and policy lookup on page 966
 l Policy with source NAT on page 968
 l Policy with destination NAT on page 982
 l Policy with Internet Service on page 994
 l NAT64 policy and DNS64 (DNS proxy) on page 1012
 l NAT46 policy on page 1015

FortiOS 6.4.6 Administration Guide 957


Fortinet Technologies Inc.
Policy and Objects

 l Local-in policies on page 1019
 l DoS protection on page 1019
 l Access control lists on page 1027
 l Mirroring SSL traffic in policies on page 1028
 l Inspection mode per policy on page 1030
 l OSPFv3 neighbor authentication on page 1033
 l Firewall anti-replay option per policy on page 1035
 l Enabling advanced policy options in the GUI on page 1035
 l Recognize anycast addresses in geo-IP blocking on page 1036
 l Matching GeoIP by registered and physical location on page 1037
 l Authentication policy extensions on page 1039
 l HTTP to HTTPS redirect for load balancing on page 1040
 l GTPv2 in policies on page 1041
 l Use active directory objects directly in policies on page 1043
 l FortiGate Cloud / FDN communication through an explicit proxy on page 1046
 l No session timeout on page 1048
 l MAP-E support on page 1049

Firewall policy parameters

For traffic to flow through the FortiGate firewall, there must be a policy that matches its parameters:
 l Incoming interface(s)
 l Outgoing interface(s)
 l Source address(es)
 l User(s) identity
 l Destination address(es)
 l Internet service(s)
 l Schedule
 l Service
Without all six (possibly eight) of these things matching, the traffic is declined.
Traffic flow initiated from each direction requires a policy, that is, if sessions can be initiated from both directions, each 
direction requires a policy.
Just because packets can go from point A to point B on port X does not mean that the traffic can flow from point B to point 
A on port X. A policy must be configured for each direction.
When designing a policy, there is often reference to the traffic flow, but most communication is two-way so trying to 
determine the direction of the flow might be confusing. If traffic is HTTP web traffic, the user sends a request to the 
website, but most of the traffic flow will be coming from the website to the user or in both directions? For the purposes of 
determining the direction for a policy, the important factor is the direction of the initiating communication. The user is 
sending a request to the website, so this is the initial communication; the website is responding so the traffic is from the 
user's network to the Internet.

FortiOS does not perform a reverse-path check on reply traffic that matches an allowed 
session based on the IP tuple. The request traffic can be sent on one interface and the reply 
traffic could return on another interface.

FortiOS 6.4.6 Administration Guide 958


Fortinet Technologies Inc.
Policy and Objects

Profile-based NGFW vs policy-based NGFW

Profile-based next-generation firewall (NGFW) mode is the traditional mode where you create a profile (antivirus, web 
filter, and so on) and then apply the profile to a policy.
In policy-based NGFW mode, you allow applications and URL categories to be used directly in security policies, without 
requiring web filter or application control profiles.
In policy-based mode:
 l Central NAT is always enabled. If no Central SNAT policy exists, you must create one. See Central SNAT on page 
975 for more information.
 l Pre-match rules are defined separately from security policies, and define broader rules, such as SSL inspection and 
user authentication.
If your FortiGate operates in NAT mode, rather than enabling source NAT in individual NGFW policies, go to Policy &
Objects > Central SNAT and add source NAT policies that apply to all matching traffic. In many cases, you may only 
need one SNAT policy for each interface pair.
The NGFW mode is set per VDOM, and it is only available when the VDOM inspection mode is flow-based. You can 
operate your entire FortiGate or individual VDOMs in NGFW policy mode.

Switching from profile-based to policy-based mode converts your policies to policy-based. To 
avoid issues, you could create a new VDOM for the policy-based mode. We recommend 
backing up your configuration before switching modes. See Configuration backups on page 52 
for information.

Enabling policy-based NGFW mode

To enable policy-based NGFW mode without VDOMs in the GUI:

 1. Go to System > Settings.


 2. In NGFW Mode, select Policy-based.
 3. Click Apply.

To enable policy-based NGFW mode with VDOMs in the GUI:

 1. Go to System > VDOM .


 2. Double-click a VDOM to edit the settings.
 3. In NGFW Mode, select Policy-based.
 4. Click OK.

To enable policy-based NGFW mode without VDOMs in the CLI:

config system settings


set ngfw-mode policy-based
end

FortiOS 6.4.6 Administration Guide 959


Fortinet Technologies Inc.
Policy and Objects

To enable policy-based NGFW mode with VDOMs in the CLI:

config vdom
edit <vdom>
config system settings
set ngfw-mode policy-based
end
next
end

Security and SSL Inspection & Authentication policies

Security policies work with SSL Inspection & Authentication policies to inspect traffic. To allow traffic from a specific user 
or user group, both Security and SSL Inspection & Authentication policies must be configured. A default SSL Inspection 
& Authentication policy with the certificate-inspection SSL Inspection profile is preconfigured. Traffic will match the SSL 
Inspection & Authentication policy first. If the traffic is allowed, packets are sent to the IPS engine for application, URL 
category, user, and user group match, and then, if enabled, UTM inspection (antivirus, IPS, DLP, and email filter) is 
performed.
SSL Inspection & Authentication policies are used to pre-match traffic before sending the packets to the IPS engine:
 l There are no schedule or action options; traffic matching the policy is always redirected to the IPS engine. 
 l SSL inspection, formerly configured in the VDOM settings, is configured in an SSL Inspection & Authentication 
policy. 
 l Users and user groups that require authentication must be configured in an SSL Inspection & Authentication policy.

Security policies work with SSL Inspection & Authentication policies to inspect traffic:
 l Applications and URL categories can be configured directly in the policy. 
 l Users and user groups that require authentication must also be configured in a security policy.
 l The available actions are Accept or Deny.
 l The Service option can be used to enforce the standard port for the selected applications. See NGFW policy mode 
application default service on page 963 for details.
 l UTM inspection is configured in a security policy.

FortiOS 6.4.6 Administration Guide 960


Fortinet Technologies Inc.
Policy and Objects

To configure policies for Facebook and Gmail access in the CLI:

 1. Configure an SSL Inspection & Authentication policy:
config firewall policy
edit 1
set name "Policy-1"
set srcintf "port18"
set dstintf "port17"
set srcaddr "all"
set dstaddr "all"
set service "ALL"
set ssl-ssh-profile "new-deep-inspection"
set groups "Dev" "HR" "QA" "SYS"
next
end

 2. Configure security policies:
config firewall security-policy
edit 2
set name "allow-QA-Facebook"
set srcintf "port18"
set dstintf "port17"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set application 15832
set groups "Dev" "QA"
next
edit 4
set name "allow-QA-Email"
set srcintf "port18"
set dstintf "port17"

FortiOS 6.4.6 Administration Guide 961


Fortinet Technologies Inc.
Policy and Objects

set srcaddr "all"


set dstaddr "all"
set action accept
set schedule "always"
set url-category 23
set groups "QA"
next
end

Logs

In the application control and web filter logs, securityid maps to the security policy ID.
Application control log:
date=2019-06-17 time=16:35:47 logid="1059028704" type="utm" subtype="app-ctrl"
eventtype="signature" level="information" vd="vd1" eventtime=1560814547702405829 tz="-0700"
appid=15832 user="Jack" group="QA" srcip=10.1.100.102 dstip=157.240.3.29 srcport=56572
dstport=443 srcintf="port18" srcintfrole="undefined" dstintf="port17"
dstintfrole="undefined" proto=6 service="P2P" direction="incoming" policyid=1
sessionid=42445 appcat="Social.Media" app="Facebook" action="pass" hostname="external-sea1-
1.xx.fbcdn.net" incidentserialno=1419629662 url="/" securityid=2 msg="Social.Media:
Facebook," apprisk="medium" scertcname="*.facebook.com" scertissuer="DigiCert SHA2 High
Assurance Server CA"

Web filter log:
date=2019-06-17 time=16:42:41 logid="0317013312" type="utm" subtype="webfilter"
eventtype="ftgd_allow" level="notice" vd="vd1" eventtime=1560814961418114836 tz="-0700"
policyid=4 sessionid=43201 user="Jack" group="QA" srcip=10.1.100.102 srcport=56668
srcintf="port18" srcintfrole="undefined" dstip=172.217.3.165 dstport=443 dstintf="port17"
dstintfrole="undefined" proto=6 service="HTTPS" hostname="mail.google.com"
action="passthrough" reqtype="direct" url="/" sentbyte=709 rcvdbyte=0 direction="outgoing"
msg="URL belongs to an allowed category in policy" method="domain" cat=23 catdesc="Web-based
Email" securityid=4

Traffic logs:
date=2019-06-17 time=16:35:53 logid="0000000013" type="traffic" subtype="forward"
level="notice" vd="vd1" eventtime=1560814553778525154 tz="-0700" srcip=10.1.100.102
srcport=56572 srcintf="port18" srcintfrole="undefined" dstip=157.240.3.29 dstport=443
dstintf="port17" dstintfrole="undefined" poluuid="b740d418-8ed3-51e9-5a7b-114e99ab6370"
sessionid=42445 proto=6 action="server-rst" user="Jack" group="QA" policyid=1
policytype="consolidated" centralnatid=1 service="HTTPS" dstcountry="United States"
srccountry="Reserved" trandisp="snat" transip=172.16.200.2 transport=56572 duration=6
sentbyte=276 rcvdbyte=745 sentpkt=5 rcvdpkt=11 appid=15832 app="Facebook"
appcat="Social.Media" apprisk="medium" utmaction="allow" countapp=1 utmref=65531-294

2: date=2019-06-17 time=16:47:45 logid="0000000013" type="traffic" subtype="forward"


level="notice" vd="vd1" eventtime=1560815265058557636 tz="-0700" srcip=10.1.100.102
srcport=56668 srcintf="port18" srcintfrole="undefined" dstip=172.217.3.165 dstport=443
dstintf="port17" dstintfrole="undefined" poluuid="b740d418-8ed3-51e9-5a7b-114e99ab6370"
sessionid=43201 proto=6 action="timeout" user="Jack" group="QA" policyid=1
policytype="consolidated" centralnatid=1 service="HTTPS" dstcountry="United States"
srccountry="Reserved" trandisp="snat" transip=172.16.200.2 transport=56668 duration=303
sentbyte=406 rcvdbyte=384 sentpkt=4 rcvdpkt=4 appcat="unscanned" utmaction="allow"
countweb=1 utmref=65531-3486

FortiOS 6.4.6 Administration Guide 962


Fortinet Technologies Inc.
Policy and Objects

Other NGFW policy-based mode options

You can combine Application Control and Web Filter in the same NGFW mode policy.


The following security profiles can be used in NGFW policy-based mode:
 l AntiVirus
 l Web Filter
 l Intrusion Prevention
 l File Filter
 l Email Filter
Logging can also be enabled in security policies.

NGFW policy mode application default service

In NGFW policy-based mode, the application default service enforces applications running only on their default service 
port. The applications specified in the policy are monitored, and if traffic is detected from a nonstandard port, it is 
blocked, and a log entry is recorded with a port-violation event type.
If you are not using the default ports, and  need to pick specific services, select Specify to select the required services.

Example

In this example, the standard port is enforced for HTTPS traffic using the HTTP.Audio application.
First, an SSL Inspection & Authentication policy is created do to traffic pre-match, and then a security policy is created to 
allow the HTTP.Audio application when using the default port. Fetching an MP3 file from an HTTP server using port 443 
is allowed, but is blocked when using a nonstandard port, such as 8443.

To enforce the HTTP.Audio application using the default port in the GUI:

 1. Create a new SSL Inspection & Authentication policy, or use the default policy.
 2. Go to Policy & Objects > Security Policy, and click Create New.
 3. Enter a name for the policy, such as allow_HTTP.Audio.
 4. Configure the ports as needed.
 5. Set Service to App Default.
 6. In the Application field, select HTTP.Audio.

FortiOS 6.4.6 Administration Guide 963


Fortinet Technologies Inc.
Policy and Objects

 7. Set the Action to Accept.

 8. Click OK.

To enforce the HTTP.Audio application using the default port in the CLI:

 1. Create a firewall policy:
config firewall policy
edit 1
set name "consolidated_all"
set srcintf "port13"
set dstintf "port14"
set srcaddr "all"
set dstaddr "all"
set service "ALL"
set ssl-ssh-profile "new-deep-inspection"
next
end

 2. Create a security policy:
config firewall security-policy
edit 1
set name "allow_HTTP.Audio"
set srcintf "port13"
set dstintf "port14"
set srcaddr "all"
set enforce-default-app-port enable
set action accept
set schedule "always"
set logtraffic all
set application 15879
next
end

FortiOS 6.4.6 Administration Guide 964


Fortinet Technologies Inc.
Policy and Objects

Logs

The application logs show logs with an event type of port-violation for traffic on port 8443 that is blocked, and an 
event type of signature for traffic on port 443 that is allowed.
Blocked:
2: date=2019-06-18 time=16:15:40 logid="1060028736" type="utm" subtype="app-ctrl"
eventtype="port-violation" level="warning" vd="vd1" eventtime=1560899740218875746 tz="-0700"
appid=15879 srcip=10.1.100.22 dstip=172.16.200.216 srcport=52680 dstport=8443
srcintf="port13" srcintfrole="undefined" dstintf="port14" dstintfrole="undefined" proto=6
service="HTTPS" direction="incoming" policyid=1 sessionid=5041 appcat="Video/Audio"
app="HTTP.Audio" action="block" hostname="172.16.200.216" incidentserialno=1906780850
url="/app_data/story.mp3" securityid=2 msg="Video/Audio: HTTP.Audio," apprisk="elevated"

Allowed:
1: date=2019-06-18 time=16:15:49 logid="1059028704" type="utm" subtype="app-ctrl"
eventtype="signature" level="information" vd="vd1" eventtime=1560899749258579372 tz="-0700"
appid=15879 srcip=10.1.100.22 dstip=172.16.200.216 srcport=54527 dstport=443
srcintf="port13" srcintfrole="undefined" dstintf="port14" dstintfrole="undefined" proto=6
service="HTTPS" direction="incoming" policyid=1 sessionid=5064 appcat="Video/Audio"
app="HTTP.Audio" action="pass" hostname="172.16.200.216" incidentserialno=1139663486
url="/app_data/story.mp3" securityid=2 msg="Video/Audio: HTTP.Audio," apprisk="elevated"

Application logging in NGFW policy mode

In NGFW policy mode, if an application, application category, or application group is selected on a security policy, and 
traffic logging is set to UTM or All, then application control logs will be generated. In addition, when a signature is set to 
the ACCEPT action under a security policy, all corresponding child signatures will be assessed and logged as well.

FortiOS 6.4.6 Administration Guide 965


Fortinet Technologies Inc.
Policy and Objects

To verify application logging:

 1. Go to Policy & Objects > Security Policy  and configure a new policy for YouTube.


 2. Set Action to ACCEPT and Log Allowed Traffic to Security Events.

 3. Configure the remaining settings as required, then click OK.
 4. On a client system, play some YouTube videos.
 5. On FortiOS, go to Log & Report > Application Control and view the logs.
There are logs not only for YouTube, but also for YouTube_Video.Play, YouTube_Video.Access, and so on, as 
verified from the Application Name column.

Policy views and policy lookup

This topic provides a sample of firewall policy views and firewall policy lookup.

FortiOS 6.4.6 Administration Guide 966


Fortinet Technologies Inc.
Policy and Objects

Policy views

In Policy & Objects policy list page, there are two policy views: Interface Pair View and By Sequence view.


Interface Pair View displays the policies in the order that they are checked for matching traffic, grouped by the pairs of 
Incoming and Outgoing interfaces. For example, all policies referencing traffic from WAN1 to DMZ are in one section. 
The policies referencing traffic from DMZ to WAN1 are in another section. The sections are collapsible so that you only 
need to look at the sections you want.

By Sequence displays policies in the order that they are checked for matching traffic without any grouping.

The default display is Interface Pair View. You can switch between the two views except if any or multiple-interfaces are 


applied in the policy.

How Any or multiple-interfaces policy can change the Interface Pair View

The FortiGate unit automatically changes the view on the policy list page to By Sequence whenever there is a policy 
containing any or multiple-interfaces as the Source or Destination interface. If the Interface Pair View is grayed out, it is 
likely that one or more policies have used the any or multiple-interfaces.
When you use the any or multiple-interfaces, the policy goes into multiple sections because it might be any one of a 
number of interface pairings. Policies are divided into sectioned using the interface pairings, for example, port1 to  port2.
Each section has its own policy order. The order in which a policy is checked for matching criteria to a packet’s 
information is based solely on the position of the policy within its section or within the entire list of policies. If the policy is 
in multiple sections, FortiGate cannot place the policy in order in multiple sections. Therefore the view can only be By
Sequence.

FortiOS 6.4.6 Administration Guide 967


Fortinet Technologies Inc.
Policy and Objects

Policy lookup

Firewall policy lookup is based on the Source_interfaces/Protocol/Source_Address/Destination_
Address that matches the source-port and dst-port of the protocol. Use this tool to find out which policy matches 
specific traffic from a number of policies. After completing the lookup, the matching firewall policy is highlighted on the 
policy list page.
The Policy Lookup tool has the following requirements:
 l Transparent mode does not support Policy lookup function.
 l When executing the policy lookup, you need to confirm whether the relevant route required for the policy work 
already exists.

Sample configuration

This example uses the TCP protocol to show how policy lookup works:
 1. In  Policy & Objects policy list page, click Policy Lookup and enter the traffic parameters.

 2. Click Search to display the policy lookup results.

Policy with source NAT

The following topics provide instructions on configuring policies with source NAT:

FortiOS 6.4.6 Administration Guide 968


Fortinet Technologies Inc.
Policy and Objects

 l Static SNAT on page 969
 l Dynamic SNAT on page 970
 l Central SNAT on page 975
 l Configuring an IPv6 SNAT policy on page 978
 l SNAT policies with virtual wire pairs on page 980

Static SNAT

Network Address Translation (NAT) is the process that enables a single device such as a router or firewall to act as an 
agent between the Internet or Public Network and a local or private network. This agent acts in real time to translate the 
source or destination IP address of a client or server on the network interface. For the source IP translation, this enables 
a single public address to represent a significantly larger number of private addresses. For the destination IP translation, 
the firewall can translate a public destination address to a private address. So we don't have to configure a real public IP 
address for the server deployed in a private network.
We can subdivide NAT into two types: source NAT (SNAT) and destination NAT (DNAT). This topic is about SNAT, We 
support three NAT working modes: static SNAT, dynamic SNAT, and central SNAT.
In static SNAT all internal IP addresses are always mapped to the same public IP address. This is a port address 
translation, Since we have 60416 available port numbers, this one public IP address can handle the conversion of 
60,416 internal IP addresses. See example below.

FortiGate firewall configurations commonly use the Outgoing Interface address.

Sample configuration

The following example of static SNAT uses an internal network with subnet 10.1.100.0/24 (vlan20) and an external/ISP 
network with subnet 172.16.200.0/24 (vlan30).
When the clients in internal network need to access the servers in external network, We need to translate IP addresses 
from 10.1.100.0/24 to an IP address 172.16.200.0/24, In this example, we implement static SNAT by creating a firewall 
policy.

To configure static NAT:

 1. In Policy & Objects > Firewall Policy, click Create New.


 2. Enter the required policy parameters.
 3. Enable NAT and select Use Outgoing Interface Address.
 4. If needed, enable Preserve Source Port.
Enable Preserve Source Port to keep the same source port for services that expect traffic to come from a specific 
source port.
Disable Preserve Source Port to allow more than one connection through the firewall for that service.

FortiOS 6.4.6 Administration Guide 969


Fortinet Technologies Inc.
Policy and Objects

For packets that match this policy, its source IP address is translated to the IP address of the outgoing interface.

Dynamic SNAT

Dynamic SNAT maps the private IP addresses to the first available public address from a pool of addresses. In the 
FortiGate firewall, this can be done by using IP pools. IP pools is a mechanism that allows sessions leaving the FortiGate 
firewall to use NAT. An IP pool defines a single IP address or a range of IP addresses to be used as the source address 
for the duration of the session. These assigned addresses are used instead of the IP address assigned to that FortiGate 
interface.

IP pool types

FortiGate uses four types of IPv4 IP pools. This topic focuses on some of the differences between them.

Overload

This type of IP pool is similar to static SNAT mode. We need to define an external IP range that contains one or more IP 
addresses. When there is only one IP address it is almost the same as static SNAT, the outgoing interface address is 
used. When it contains multiple IP addresses, it is equivalent to an extended mode of static SNAT.
For instance, if we define an overload type IP pool with two external IP addresses (172.16.200.1—172.16.200.2), since 
there are 60,416 available port numbers per IP, this IP pool can handle 60,416*2 internal IP addresses.

The mapped IP address can be calculated from the source IP address. The index number of the address in the pool is 
the remainder of the source IP address, in decimal, divided by the number addresses in the pool.

FortiOS 6.4.6 Administration Guide 970


Fortinet Technologies Inc.
Policy and Objects

To calculate the decimal value of the source IP address, either use an online calculator, or use 
the following equation:
a.b.c.d = a * (256)3 + b * (256)2 + c * (256) + d
For example:
192.168.0.1 = 192 * (256)3 + 168 * (256)2 + 0 * (256) + 1 = 3232235521

If there is one IP pool, where:
 l P1 = the first address in the IP pool
 l R1 = the number of IP addresses in the IP pool
 l X = the source IP address as a decimal number
 l Y = the mapped IP address
Then the equation to determine the mapped address is:
Y = P1 + X mod R1
For example:

IP pool Source IP address

172.26.73.20 to 172.26.73.90 192.168.1.200

 1. Convert the source IP address to a decimal number:   
192 * (256)3 + 168 * (256)2 + 1 * (256) + 200 = 3232235976
 2. Determine the number of IP addresses in the pool:   
172.26.73.90 - 172.26.73.20 = 71
 3. Find the remainder of the source IP address divided by the number of addresses in the pool:   
3232235976 mod 71 = 26
 4. Add the remainder to the first IP address in the pool:   
172.26.73.20 + 26 = 172.26.73.46
So, the mapped IP address is 172.26.73.46.
If there are multiple IP pools, the calculation is similar to when there is only one pool.
If there are two IP pools, where:
 l P1 = the first address in the first IP pool
 l P2 = the first address in the second IP pool
 l R1 = the number of IP addresses in the first IP pool
 l R2 = the number of IP addresses in the second IP pool
 l X = the source IP address as a decimal number
 l Y = the mapped IP address
Then the equations to determine the mapped address are:
If X mod (R1 + R2) >= P1, then Y = P2 + X mod R2
If X mod (R1 + R2) < P1, then Y = P1 + X mod R1
For example:

FortiOS 6.4.6 Administration Guide 971


Fortinet Technologies Inc.
Policy and Objects

IP pools Source IP address

pool01: 172.26.73.20 to 172.26.73.90 192.168.1.200

pool02: 172.26.75.50 to 172.26.75.150

 1. Convert the source IP address to a decimal number:   
192 * (256)3 + 168 * (256)2 + 1 * (256) + 200 = 3232235976
 2. Determine the total number of IP addresses in the pools:   
(172.26.73.90 - 172.26.73.20) + (172.26.75.50 - 172.26.75.150) = 71 + 101 = 172
 3. Find the remainder of the source IP address divided by the number of addresses in the pools:   
3232235976 mod 172 = 108
 4. The remainder is greater than the number of addresses in pool01, so the address is selected from pool02 and the 
remainder is recalculated based only on pool02:
3232235976 mod 101 = 40
 5. Add the new remainder to the first IP address in pool02:
172.26.75.50 + 40 = 172.26.75.90
So, the mapped IP address is 172.26.75.90.

One-to-one

This type of IP pool means that the internal IP address and the external (translated) IP address match one-to-one. The 
port address translation (PAT) is disabled when using this type of IP pool. For example, if we define a one-to-one type IP 
pool with two external IP addresses (172.16.200.1 - 172.16.200.2), this IP pool only can handle two internal IP 
addresses.

Fixed port range

For the overload and one-to-one IP pool types, we do not need to define the internal IP range. For the fixed port range 
type of IP pool, we can define both internal IP range and external IP range. Since each external IP address and the 
number of available port numbers is a specific number, if the number of internal IP addresses is also determined, we can 
calculate the port range for each address translation combination. So we call this type fixed port range. This type of IP 
pool is a type of port address translation (PAT).
For instance, if we define one external IP address (172.16.200.1) and ten internal IP addresses (10.1.100.1-
10.1.100.10), we have translation IP+Port combination like following table:

FortiOS 6.4.6 Administration Guide 972


Fortinet Technologies Inc.
Policy and Objects

Port block allocation

This type of IP pool is also a type of port address translation (PAT). It gives users a more flexible way to control the way 
external IPs and ports are allocated. Users need to define Block Size/Block Per User and external IP range. Block Size 
means how many ports each Block contains. Block per User means how many blocks each user (internal IP) can use.
The following is a simple example:
 l External IP Range: 172.16.200.1—172.16.200.1
 l Block Size: 128
 l Block Per User: 8
Result:
 l Total-PBAs: 472 (60416/128)
 l Maximum ports can be used per User (Internal IP Address): 1024 (128*8)
 l How many Internal IP can be handled: 59 (60416/1024 or 472/8)

Sample configuration

To configure overload IP pool in the GUI:

 1. In Policy & Objects > IP Pools, click Create New.


 2. Select IPv4 Pool and then select Overload.

To configure overload IP pool in the CLI:

config firewall ippool


edit "Overload-ippool"
set startip 172.16.200.1
set endip 172.16.200.1
next
end

FortiOS 6.4.6 Administration Guide 973


Fortinet Technologies Inc.
Policy and Objects

To configure one-to-one IP pool using the GUI:

 1. In Policy & Objects > IP Pools, click Create New.


 2. Select IPv4 Pool and then select One-to-One.

To configure one-to-one IP pool in the CLI:

config firewall ippool


edit "One-to-One-ippool"
set type one-to-one
set startip 172.16.200.1
set endip 172.16.200.2
next
end

To configure fixed port range IP pool in the GUI:

 1. In Policy & Objects > IP Pools, click Create New.


 2. Select IPv4 Pool and then select Fixed Port Range.

To configure fixed port range IP pool in the CLI:

config firewall ippool


edit "FPR-ippool"
set type fixed-port-range
set startip 172.16.200.1
set endip 172.16.200.1
set source-startip 10.1.100.1
set source-endip 10.1.100.10
next
end

FortiOS 6.4.6 Administration Guide 974


Fortinet Technologies Inc.
Policy and Objects

To configure port block allocation IP pool in the GUI:

 1. In Policy & Objects > IP Pools, click Create New.


 2. Select IPv4 Pool and then select Port Block Allocation.

To configure port block allocation IP pool in the CLI:

config firewall ippool


edit PBA-ippool
set type port-block-allocation
set startip 172.16.200.1
set endip 172.16.200.1
set block-size 128
set num-blocks-per-user 8
next
end

Central SNAT

The central SNAT table enables you to define and control (with more granularity) the address translation performed by 
FortiGate. With the NAT table, you can define the rules for the source address or address group, and which IP pool the 
destination address uses.
While similar in functionality to IP pools where a single address is translated to an alternate address from a range of IP 
addresses, with IP pools there is no control over the translated port. When using the IP pool for source NAT, you can 
define a fixed port to ensure the source port number is unchanged. If no fixed port is defined, the port translation is 
randomly chosen by FortiGate. With the central NAT table, you have full control over both the IP address and port 
translation.
FortiGate reads the NAT rules from the top down until it hits a matching rule for the incoming address. This enables you 
to create multiple NAT policies that dictate which IP pool is used based on the source address. NAT policies can be 
rearranged within the policy list. NAT policies are applied to network traffic after a security policy.
The central SNAT table allows you to create, edit, delete, and clone central SNAT entries.

Central SNAT notes

 l The central NAT feature in not enabled by default.
 l If central NAT is enabled, the NAT option under IPv4 policies is skipped and SNAT must be done via central-
snat-map. The firewall policy list and dialog boxes have messages and redirection links to show this information.
 l If NGFW mode is policy-based, then it is assumed that central NAT (specifically SNAT) is enabled implicitly.

FortiOS 6.4.6 Administration Guide 975


Fortinet Technologies Inc.
Policy and Objects

 l The option to toggle NAT in central-snat-map policies has been added. Previously it was only shown in NGFW 
policy-based mode.
 l In the central SNAT policy dialog box, the port mapping fields for the original port have been updated to accept 
ranges.
 l If per VDOM NAT is enabled, NAT is skipped in firewall policy.
 l The central SNAT window contains a table of all the central SNAT policies.

Sample configuration

To enable or disable central SNAT using the CLI:

config system settings


set central-nat [enable | disable]
end

When central NAT is enabled, Policy & Objects displays the Central SNAT section.

To create central SNAT using the GUI:

 1. In Policy & Objects > Central SNAT.


The right pane displays a table of Central SNAT entries.
 2. To create a new entry, click Create New in the right pane.
To edit an entry, double-click the policy you want to edit.
 3. To set the Incoming Interface, click + in that field.
 4. In the pane on the right, select an interface to add it.
You can select multiple interfaces.
 5. To set the Outgoing Interface, click click + in that field.
 6. In the pane on the right, select an interface to add it.
You can select multiple interfaces.
 7. To set the Source Address, click click + in that field.
 8. In the pane on the right, select an address to add it.
You can select multiple addresses.
 9. To set the Destination Address, click click + in that field.
 10. In the pane on the right, select an address to add it.
You can select multiple addresses.
 11. In NAT > IP Pool Configuration, select either Use Outgoing Interface Address or Use Dynamic IP Pool.
If you select Use Dynamic IP Pool, click + and select which IP pool to use.
 12. Select one of the following Protocol parameters.
 l ANY. Use any protocol traffic.
 l TCP. Use TCP traffic only. Protocol number is set to 6.
 l UDP. Use UDP traffic only. Protocol number is set to 17.
 l SCTP. Use SCTP traffic only. Protocol number is set to 132.
 l Specify. You can specify the traffic filter protocol by setting the protocol number.
 13. If you use the Overload type of IP pool, you can enable Explicit Port Mapping.
 a. If you enable Explicit Port Mapping, set the Original Source Port to the start number of the source port range.
 b. Set the Translated Port to the start number of the translated port range.
 14. Click OK.

FortiOS 6.4.6 Administration Guide 976


Fortinet Technologies Inc.
Policy and Objects

To configure central SNAT using the CLI:

config firewall central-snat-map


edit <policyID number>set status [enable|disable]
set orig-addr <valid address object preconfigured on the FortiGate>
set srcintf <name of interface on the FortiGate>
set dst-addr <valid address object preconfigured on the FortiGate>
set dstintf <name of interface on the FortiGate>
set protocol <integer for protocol number>
set orig-port <integer for original port number>
set nat-port <integer for translated port number>
set comments <string>
end

To set NAT to be not available regardless of NGFW mode:

config firewall central-snat-map


edit 1
set orig-addr "192-86-1-86"
set srcintf "port23"
set dst-addr "192-96-1-96"
set dstintf "port22"
set nat-ippool "pool1"
set protocol 17
set orig-port 2896-2897
set nat enable
next
end

To hide NAT port if NAT IP pool is not set or if NAT is disabled:

config firewall central-snat-map


edit 1
set orig-addr "192-86-1-86"
set srcintf "port23"
set dst-addr "192-96-1-96"
set dstintf "port22"
set nat-ippool "pool1"
set protocol 17
set orig-port 2896-2897
set nat disable
next
end

To change original port to accept range:

config firewall central-snat-map


edit 1
set orig-addr "192-86-1-86"
set srcintf "port23"
set dst-addr "192-96-1-96"
set dstintf "port22"
set nat-ippool "pool1"
set protocol 17
set orig-port 2896-2897 (help text changed to: Original port or port range).

FortiOS 6.4.6 Administration Guide 977


Fortinet Technologies Inc.
Policy and Objects

set nat-port 35804-35805


next
end

Configuring an IPv6 SNAT policy

IPv4 and IPv6 central SNAT maps are displayed in the same table.

To configure an IPv6 policy with central SNAT in the GUI:

 1.  Enable central SNAT:
 a. In the Global VDOM, go to System > VDOM. 
 b. Select a VDOM and click Edit. The Edit Virtual Domain Settings pane opens.
 c. Enable Central SNAT.
 d. Click OK.

 2. Go in to the VDOM with central SNAT enabled (FG-traffic in this example).
 3. Go Policy & Objects > Central SNAT and click Create New.
 4. Configure the policy settings:
 a. For Type, select IPv6.
 b. Enter the interface, address, and IP pool information.
 c. Configure the other settings as needed.

FortiOS 6.4.6 Administration Guide 978


Fortinet Technologies Inc.
Policy and Objects

 d. Click OK.

The matching SNAT traffic will be handled by the IPv6 central SNAT map.

To configure an IPv6 policy with central SNAT in the CLI:

 1. Enable central SNAT:
config vdom
edit FG-traffic
config system settings
set central-nat enable
end
next
end

 2. Create an IPv6 central SNAT policy:
config vdom
edit FG-traffic
config firewall central-snat-map
edit 2
set type ipv6
set srcintf "wan2"
set dstintf "wan1"
set orig-addr6 "all"
set dst-addr6 "all"
set nat-ippool6 "test-ippool6-1"
next
end
next
end

 3. Verify the SNAT traffic:
(FG-traffic) # diagnose sniffer packet any icmp6 4
interfaces=[any]
filters=[icmp6]

FortiOS 6.4.6 Administration Guide 979


Fortinet Technologies Inc.
Policy and Objects

3.602891 wan2 in 2000:10:1:100::41 -> 2000:172:16:200::55: icmp6: echo request seq 0


3.602942 wan1 out 2000:172:16:200::199 -> 2000:172:16:200::55: icmp6: echo request seq 0
3.603236 wan1 in 2000:172:16:200::55 -> 2000:172:16:200::199: icmp6: echo reply seq 0
3.603249 wan2 out 2000:172:16:200::55 -> 2000:10:1:100::41: icmp6: echo reply seq 0
4.602559 wan2 in 2000:10:1:100::41 -> 2000:172:16:200::55: icmp6: echo request seq 1
4.602575 wan1 out 2000:172:16:200::199 -> 2000:172:16:200::55: icmp6: echo request seq 1
4.602956 wan1 in 2000:172:16:200::55 -> 2000:172:16:200::199: icmp6: echo reply seq 1
4.602964 wan2 out 2000:172:16:200::55 -> 2000:10:1:100::41: icmp6: echo reply seq 1
^C
8 packets received by filter
0 packets dropped by kernel

SNAT policies with virtual wire pairs

Source NAT (SNAT) can be configured in IPv4 and IPv6 policies with virtual wire pair (VWP) interfaces, and between 
VWP interfaces when central NAT is enabled.

To configure a policy using SNAT and a VWP interface when central NAT is disabled:

 1. Create the VWP interface:
config system virtual-wire-pair
edit "test-vw-1"
set member "port1" "port4"
next
end

 2. Create the IP pool. The IP pool must have a different subnet than the VWP peers.
config firewall ippool
edit "vwp-pool-1"
set startip 172.16.222.99
set endip 172.16.222.100
next
end

 3. Configure the firewall policy:
config firewall policy
edit 88
set srcintf "port4"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set nat enable
set ippool enable
set poolname "vwp-pool-1"
next
end

FortiOS 6.4.6 Administration Guide 980


Fortinet Technologies Inc.
Policy and Objects

 4. Verify the IP pool functions as expected and traffic passes through:
# diagnose sniffer packet any icmp 4
interfaces=[any]
filters=[icmp]
23.438095 port4 in 172.16.200.11 -> 172.16.200.156: icmp: echo request
23.438126 port1 out 172.16.222.100 -> 172.16.200.156: icmp: echo request
23.438492 port1 in 172.16.200.156 -> 172.16.222.100: icmp: echo reply
23.438501 port4 out 172.16.200.156 -> 172.16.200.11: icmp: echo reply
24.439305 port4 in 172.16.200.11 -> 172.16.200.156: icmp: echo request
24.439319 port1 out 172.16.222.100 -> 172.16.200.156: icmp: echo request
24.439684 port1 in 172.16.200.156 -> 172.16.222.100: icmp: echo reply
24.439692 port4 out 172.16.200.156 -> 172.16.200.11: icmp: echo reply

8 packets received by filter


0 packets dropped by kernel

To configure a SNAT between VWP interfaces when central NAT is enabled:

 1. Enable central NAT:
config system settings
set central-nat enable
end

 2. Create the VWP interface:
config system virtual-wire-pair
edit "test-vw-1"
set member "port1" "port4"
next
end

 3. Create the IP pool. The IP pool must have a different subnet than the VWP peers.
config firewall ippool
edit "vwp-pool-1"
set startip 172.16.222.99
set endip 172.16.222.100
next
end

 4. Configure the SNAT policy:
config firewall central-snat-map
edit 2
set srcintf "port4"
set dstintf "port1"
set orig-addr "all"
set dst-addr "all"
set nat-ippool "vwp-pool-1"
next
end

 5. Configure the firewall policy:
config firewall policy
edit 90
set srcintf "port4"
set dstintf "port1"

FortiOS 6.4.6 Administration Guide 981


Fortinet Technologies Inc.
Policy and Objects

set srcaddr "all"


set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
end

Policy with destination NAT

The following topics provide instructions on configuring policies with destination NAT:
 l Static virtual IPs on page 982
 l Virtual IP with services on page 983
 l Virtual IPs with port forwarding on page 985
 l Virtual server on page 987

Static virtual IPs

Mapping a specific IP address to another specific IP address is usually called Destination NAT (DNAT). When this 
central NAT table is not used, FortiOS calls this a Virtual IP address (VIP). DNAT, or VIP, is are used to map an external 
IP address to an IP address or address range. The mapping can include all TCP/UDP ports or, if port forwarding is 
enabled, it only refers to the specific configured ports. As the central NAT table is disabled by default, the term VIP is 
usually used.
VIPs are typically used to NAT external or public IP addresses to internal or private IP addresses. Using a VIP between 
two internal interfaces made up of private IP addresses is possible, but rare, because the two networks can just use the 
IP addresses of the networks without any address translation. Using a VIP for traffic going from the inside to the internet 
is supported, but unlikely to be required.

Sample configuration

To create a virtual IP using the GUI:

 1. In Policy & Objects > Virtual IPs.


 2. Click Create New and select Virtual IP.
 3. Select a VIP Type based on the IP versions used:
 l If IPv4 is on both sides of the FortiGate unit, select IPv4.
 l If IPv6 is on both sides of the FortiGate unit, select IPv6.
 l If traffic goes from an IPv4 network to an IPv6 network, select NAT46.
 l If traffic goes from an IPv6 network to an IPv4 network, select NAT64.

FortiOS 6.4.6 Administration Guide 982


Fortinet Technologies Inc.
Policy and Objects

 4. Enter a unique name for the virtual IP and fill in the other fields.

To create a virtual IP using the CLI:

config firewall vip


edit "Internal_WebServer"
set extip 10.1.100.199
set extintf "any"
set mappedip "172.16.200.55"
next
end

To apply a virtual IP to policy using the CLI:

config firewall policy


edit 8
set name "Example_Virtual_IP_in_Policy"
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "Internal_WebServer"
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

Virtual IP with services

Virtual IP with services is a more flexible virtual IP mode. This mode allows users to define services to a single port 
number mapping.
This topic shows how to use virtual IP with services enabled. This example has one public external IP address. We map 
TCP ports 8080, 8081, and 8082 to an internal WebServer TCP port 80. This allows remote connections to communicate 
with a server behind the firewall.

FortiOS 6.4.6 Administration Guide 983


Fortinet Technologies Inc.
Policy and Objects

Sample configuration

To create a virtual IP with services using the GUI:

 1. In Policy & Objects > Virtual IPs.


 2. Click Create New and select Virtual IP.
 3. For VIP Type, select IPv4.
 4. Enter a unique name for the virtual IP and fill in the other fields.
 5. Configure the fields in the Network section. For example:
 l Set Interface to any.
 l Set External IP Address/Range to 10.1.100.199.
 l Set Mapped IP Address/Range to 172.16.200.55.
 6. Enable Optional Filters and then enable Services.
 7. In the Services field, click + to display the Services pane.
 8. In the Services pane, select TCP_8080, TCP_8081, and TCP_8082.
 9. Enable Port Forwarding.
 10. Set Map to Port to 80.

 11. Click OK.

To see the results:

 1. Apply the above virtual IP to the Firewall policy.
 2. The results are:
 l Access 10.1.100.199:8080 from external network and FortiGate maps to 172.16.200.55:80 in internal network.
 l Access 10.1.100.199:8081 from external network and FortiGate maps to 172.16.200.55:80 in internal network.
 l Access 10.1.100.199:8082 from external network and FortiGate maps to 172.16.200.55:80 in internal network.

FortiOS 6.4.6 Administration Guide 984


Fortinet Technologies Inc.
Policy and Objects

To create a virtual IP with services using the CLI:

config firewall vip


edit "WebServer_VIP_Services"
set service "TCP_8080" "TCP_8081" "TCP_8082"
set extip 10.1.100.199
set extintf "any"
set portforward enable
set mappedip "172.16.200.55"
set mappedport 80
next
end

Virtual IPs with port forwarding

If you need to hide the internal server port number or need to map several internal servers to the same public IP address, 
enable port-forwarding for Virtual IP.
This topic shows how to use virtual IPs to configure port forwarding on a FortiGate unit. This example has one public 
external IP address. We map TCP ports 8080, 8081, and 8082 to different internal WebServers' TCP port 80. This allows 
remote connections to communicate with a server behind the firewall.

Sample configuration

To create a virtual IP with port forwarding using the GUI:

 1. In Policy & Objects > Virtual IPs.


 2. Click Create New and select Virtual IP.
 3. For VIP Type, select IPv4.
 4. Enter a unique name for the virtual IP and fill in the other fields.
 5. Configure the fields in the Network section. For example:
 l Set Interface to any.
 l Set External IP Address/Range to 10.1.100.199.
 l Set Mapped IP Address/Range to 172.16.200.55.
 6. Leave Optional Filters disabled.
 7. Enable Port Forwarding.
 8. Configure the fields in the Port Forwarding section. For example:
 l Set Protocol to TCP.
 l Set External Service Port to 8080 - 8080.
 l Set Map to Port to 80 - 80.

FortiOS 6.4.6 Administration Guide 985


Fortinet Technologies Inc.
Policy and Objects

 9. Click OK.
 10. Follow the above steps to create two additional virtual IPs.
 a. For one virtual IP:
 l Use a different Mapped IP Address/Range, for example, 172.16.200.56.
 l Set External Service Port to 8081 - 8081.
 l Use the same Map to Port numbers: 80 - 80.
 b. For the other virtual IP:
 l Use a different Mapped IP Address/Range, for example, 172.16.200.57.
 l Set External Service Port to 8082 - 8082.
 l Use the same Map to Port numbers: 80 - 80.
 11. Create a Virtual IP Group and put the above three virtual IPs into that group.

To see the results:

 1. Apply the above virtual IP to the Firewall policy.
 2. The results are:
 l Access 10.1.100.199:8080 from external network and FortiGate maps to 172.16.200.55:80 in internal network.
 l Access 10.1.100.199:8081 from external network and FortiGate maps to 172.16.200.56:80 in internal network.
 l Access 10.1.100.199:8082 from external network and FortiGate maps to 172.16.200.57:80 in internal network

FortiOS 6.4.6 Administration Guide 986


Fortinet Technologies Inc.
Policy and Objects

Virtual server

This topic shows a special virtual IP type: virtual server. Use this type of VIP to implement server load balancing.
The FortiOS server load balancing contains all the features of a server load balancing solution. You can balance traffic 
across multiple backend servers based on multiple load balancing schedules including:
 l Static (failover)
 l Round robin
 l Weighted (to account for different sized servers or based on the health and performance of the server including 
round trip time and number of connections)
The load balancer supports HTTP, HTTPS, IMAPS, POP3S, SMTPS, SSL/TLS, and generic TCP/UDP and IP protocols. 
Session persistence is supported based on the SSL session ID based on an injected HTTP cookie, or based on the 
HTTP or HTTPS host. SSL/TLS load balancing includes protection from protocol downgrade attacks. Server load 
balancing is supported on most FortiGate devices and includes up to 10,000 virtual servers on high end systems.

Sample topology

SSL/TLS offloading

FortiGate SSL/TLS offloading is designed for the proliferation of SSL/TLS applications. The key exchange and 
encryption/decryption tasks are offloaded to the FortiGate unit where they are accelerated using FortiASIC technology 
which provides significantly more performance than a standard server or load balancer. This frees up valuable resources 
on the server farm to give better response to business operations. Server load balancing offloads most SSL/TLS 
versions including SSL 3.0, TLS 1.0, and TLS 1.2, and supports full mode or half mode SSL offloading with DH key sizes 
up to 4096 bits.
FortiGate SSL offloading allows the application payload to be inspected before it reaches your servers. This prevents 
intrusion attempts, blocks viruses, stops unwanted applications, and prevents data leakage. SSL/TLS content inspection 
supports TLS versions 1.0, 1.1, and 1.2 and SSL versions 1.0, 1.1, 1.2, and 3.0.

Virtual server requirements

When creating a new virtual server, you must configure the following options:
 l Virtual Server Type.
 l Load Balancing Methods.
 l Health check monitoring (optional).
 l Session persistence (optional).
 l Virtual Server IP (External IP Address).

FortiOS 6.4.6 Administration Guide 987


Fortinet Technologies Inc.
Policy and Objects

 l Virtual Server Port (External Port).
 l Real Servers (Mapped IP Address & Port).

Virtual server types

Select the protocol to be load balanced by the virtual server. If you select a general protocol such as IP, TCP, or UDP, 
the virtual server load balances all IP, TCP, or UDP sessions. If you select specific protocols such as HTTP, HTTPS, or 
SSL, you can apply additional server load balancing features such as Persistence and HTTP Multiplexing.

HTTP Select HTTP to load balance only HTTP sessions with the destination port number that matches the 
Virtual Server Port setting. Change Virtual Server Port to match the destination port of the sessions 
to be load balanced (usually port 80 for HTTP sessions). You can enable HTTP Multiplexing. You 
can also set Persistence to HTTP Cookie to enable cookie-based persistence.

HTTPS Select HTTPS to load balance only HTTPS sessions with the destination port number that matches 
the Virtual Server Port setting. Change Virtual Server Port to match the destination port of the 
sessions to be load balanced (usually port 443 for HTTPS sessions). You can enable HTTP
Multiplexing. You can also set Persistence to HTTP Cookie to enable cookie-based persistence, or 
you can set Persistence to SSL Session ID.

IMAPS Select IMAPS to load balance only IMAPS sessions with the destination port number that matches 
the Virtual Server Port setting. Change Virtual Server Port to match the destination port of the 
sessions to be load balanced (usually port 993 for IMAPS sessions). You can also set Persistence 
to SSL Session ID.

POP3S Select POP3S to load balance only POP3S sessions with the destination port number that matches 
the Virtual Server Port setting. Change Virtual Server Port to match the destination port of the 
sessions to be load balanced (usually port 995 for POP3S sessions). You can also set Persistence 
to SSL Session ID.

SMTPS Select SMTPS to load balance only SMTPS sessions with the destination port number that matches 
the Virtual Server Port setting. Change Virtual Server Port to match the destination port of the 
sessions to be load balanced (usually port 465 for SMTPS sessions). You can also set Persistence 
to SSL Session ID.

SSL Select SSL to load balance only SSL sessions with the destination port number that matches the 
Virtual Server Port setting. Change Virtual Server Port to match the destination port of the sessions 
to be load balanced.  You can also set Persistence to SSL Session ID.

TCP Select TCP to load balance only TCP sessions with the destination port number that matches the 
Virtual Server Port setting. Change Virtual Server Port to match the destination port of the sessions 
to be load balanced.

UDP Select UDP to load balance only UDP sessions with the destination port number that matches the 
Virtual Server Port setting. Change Virtual Server Port to match the destination port of the sessions 
to be load balanced.

IP Select IP to load balance all sessions accepted by the security policy that contains this virtual 
server.

Load balancing methods

The load balancing method defines how sessions are load balanced to real servers.

FortiOS 6.4.6 Administration Guide 988


Fortinet Technologies Inc.
Policy and Objects

All load balancing methods do not send traffic to real servers that are down or not responding. FortiGate can only 
determine if a real server is not responding by using a health check monitor. You should always add at least one health 
check monitor to a virtual server or to real servers; otherwise load balancing might try to distribute sessions to real 
servers that are not functioning.

Static The traffic load is statically spread evenly across all real servers. Sessions are not assigned 
according to how busy individual real servers are. This load balancing method provides some 
persistence because all sessions from the same source address always go to the same real server. 
Because the distribution is stateless, so if a real server is added, removed, or goes up or down, the 
distribution is changed and persistence might be lost.

Round Robin Directs new requests to the next real server. This method treats all real servers as equals 


regardless of response time or the number of connections. This method does not direct requests to 
real servers that down or non responsive.

Weighted Real servers with a higher weight value receive a larger percentage of connections. Set the real 
server weight when adding a real server.

Least Session Directs requests to the real server that has the least number of current connections. This method 


works best in environments where the real servers or other equipment you are load balancing all 
have similar capabilities. This load balancing method uses the FortiGate session table to track the 
number of sessions being processed by each real server. The FortiGate unit cannot detect the 
number of sessions actually being processed by a real server.

Least RTT Directs sessions to the real server with the lowest round trip time. The round trip time is determined 


by a ping health check monitor. The default is 0 if no ping health check monitors are added to the 
virtual server.

First Alive Directs sessions to the first live real server. This load balancing schedule provides real server 


failover protection by sending all sessions to the first live real server. If a real server fails, all 
sessions are sent to the next live real server. Sessions are not distributed to all real servers so all 
sessions are processed by the first real server only.

HTTP Host Load balances HTTP host connections across multiple real servers using the host’s HTTP header 


to guide the connection to the correct real server.

Health check monitoring

In the FortiGate GUI, you can configure health check monitoring so that the FortiGate unit can verify that real servers are 
able respond to network connection attempts. If a real server responds to connection attempts, the load balancer 
continues to send sessions to it. If a real server stops responding to connection attempts, the load balancer assumes 
that the server is down and does not send sessions to it. The health check monitor configuration determines how the 
load balancer tests real servers. You can use a single health check monitor for multiple load balancing configurations. 
You can configure TCP, HTTP, and Ping health check monitors. You usually set the health check monitor to use the 
same protocol as the traffic being load balanced to it. For example, for an HTTP load balancing configuration, you would 
normally use an HTTP health check monitor.

Session persistence

Use persistence to ensure a user is connected to the same real server every time the user makes an HTTP, HTTPS, or 
SSL request that is part of the same user session. For example, if you are load balancing HTTP and HTTPS sessions to 
a collection of eCommerce web servers, when users make a purchase, they will be starting multiple sessions as they 
navigate the eCommerce site. In most cases, all the sessions started by this user during one eCommerce session 

FortiOS 6.4.6 Administration Guide 989


Fortinet Technologies Inc.
Policy and Objects

should be processed by the same real server. Typically, the HTTP protocol keeps track of these related sessions using 
cookies. HTTP cookie persistence ensure all sessions that are part of the same user session are processed by the same 
real server.
When you configure persistence, the FortiGate unit load balances a new session to a real server according to the load 
balance method. If the session has an HTTP cookie or an SSL session ID, the FortiGate unit sends all subsequent 
sessions with the same HTTP cookie or SSL session ID to the same real server.

Real servers

Add real servers to a load balancing virtual server to provide information the virtual server requires to send sessions to 
the server. A real server configuration includes the IP address of the real server and port number the real server receives 
sessions on. The FortiGate unit sends sessions to the real server’s IP address using the destination port number in the 
real server configuration.
When configuring a real server, you can also specify the weight (if the load balance method is set to Weighted) and you 
can limit the maximum number of open connections between the FortiGate unit and the real server. If the maximum 
number of connections is reached for the real server, the FortiGate unit automatically switches all further connection 
requests to other real servers until the connection number drops below the limit. Setting Maximum Connections to 0 
means that the FortiGate unit does not limit the number of connections to the real server.

Sample of HTTP load balancing to three real web servers

This example describes the steps to configure the load balancing configuration below. In this configuration, a FortiGate 
unit is load balancing HTTP traffic from the Internet to three HTTP servers on the internal network. HTTP sessions are 
accepted at the wan1 interface with destination IP address 172.20.120.121 on TCP port 8080, and forwarded from the 
internal interface to the web servers. When forwarded, the destination address of the session is translated to the IP 
address of one of the web servers.
This load balancing configuration also includes session persistence using HTTP cookies, round-robin load balancing, 
and TCP health monitoring for the real servers. Ping health monitoring consists of the FortiGate unit using ICMP ping to 
ensure the web servers can respond to network traffic.

FortiOS 6.4.6 Administration Guide 990


Fortinet Technologies Inc.
Policy and Objects

General steps:

 1. Create a health check monitor.
A ping health check monitor causes the FortiGate to ping the real servers every 10 seconds. If one of the servers 
does not respond within 2 seconds, the FortiGate unit will retry the ping 3 times before assuming that the HTTP 
server is not responding. 
 2. Create a load balance virtual server with three real servers.
 3. Add the load balancing virtual server to a policy as the destination address.

To see the virtual servers and health check monitors options in the GUI, Load Balance must be 
selected in Feature Visibility > Additional Features. See Feature visibility on page 940 on page 
1 for details.

Configure a load balancing virtual server in the GUI

To create a health check monitor:

 1. Go to Policy & Objects > Health Check.


 2. Click Create New.
 3. Set the following:   
 l Name to Ping-mon-1
 l Type to Ping
 l Interval to 10 seconds
 l Timeout to 2 seconds
 l Retry to 3 attempt(s)

 4. Click OK.

To create a virtual server:

 1. Go to Policy & Objects > Virtual Servers.


 2. Click Create New.
 3. Set the following:   
 l Name to Vserver-HTTP-1
 l Type to HTTP
 l Interface to wan1
 l Virtual Server IP to 172.20.120.121
 l Virtual Server Port to 8080
 l Load Balance Method to Round Robin
 l Persistence to HTTP Cookie
 l Health Check to Ping-mon-1

FortiOS 6.4.6 Administration Guide 991


Fortinet Technologies Inc.
Policy and Objects

 4. In the Real Servers table, click Create New.


 5. Set the following for the first real server:   
 l Type to IP
 l IP Address to 10.31.101.30
 l Port to 80
 l Max Connections to 0
 l Mode to Active

 6. Configure two more real servers with IP addresses 10.31.101.40 and 10.31.101.50, and the remaining settings the 
same as the first real server.
 7. Click OK.

To create a security policy that includes the load balance virtual server as the destination address:

 1. Go to Policy & Objects > Firewall Policy.


 2. Click Create New.
 3. Set the Inspection Mode to Proxy-based. The new virtual server will not be available if the inspection mode is Flow-
based.
 4. Set the following:   
 l Name to LB-policy
 l Incoming Interface to wan1
 l Outgoing Interface to internal
 l Source to all
 l Destination to Vserver-HTTP-1
 l Schedule to always

FortiOS 6.4.6 Administration Guide 992


Fortinet Technologies Inc.
Policy and Objects

 l Service to ALL
 l Action to ACCEPT
 5. Enable NAT and set IP Pool Configuration to Use Outgoing Interface Address.
 6. Enable AntiVirus and select an antivirus profile.

 7. Click OK.

Configure a load balancing virtual server in the CLI

To configure HTTP load balancing to three real web servers in the CLI:

 1. Create a health check monitor:
config firewall ldb-monitor
edit "Ping-mon-1"
set type ping
set interval 10
set timeout 2
set retry 3
next
end

 2. Create a virtual server:
config firewall vip
edit "Vserver-HTTP-1"
set type server-load-balance
set extip 172.20.120.121
set extintf "any"
set server-type http
set monitor "Ping-mon-1"
set ldb-method round-robin
set persistence http-cookie
set extport 8080
config realservers
edit 1
set type ip

FortiOS 6.4.6 Administration Guide 993


Fortinet Technologies Inc.
Policy and Objects

set ip 10.31.101.30
set port 80
next
edit 2
set type ip
set ip 10.31.101.40
set port 80
next
edit 3
set type ip
set ip 10.31.101.50
set port 80
next
end
next
end

 3. Add the load balancing virtual server to a policy as the destination address:
config firewall policy
edit 2
set name "LB-policy"
set inspection-mode proxy
set srcintf "wan1"
set dstintf "internal"
set srcaddr "all"
set dstaddr "Vserver-HTTP-1"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set ssl-ssh-profile "certificate-inspection"
set av-profile "default"
set fsso disable
set nat enable
next
end

Results

Traffic accessing 172.20.120.121:8080 is forwarded in turn to the three real servers.
If the access request has an http-cookie, FortiGate forwards the access to the corresponding real server according to the 
cookie.

Policy with Internet Service

The following topics provide instructions on configuring policies with Internet Service:
 l Using Internet Service in policy on page 995
 l  Using custom Internet Service in policy on page 997
 l Using extension Internet Service in policy on page 999
 l Global IP address information database on page 1002
 l IP reputation filtering on page 1004
 l Internet service groups in policies on page 1005

FortiOS 6.4.6 Administration Guide 994


Fortinet Technologies Inc.
Policy and Objects

 l Allow creation of ISDB objects with regional information on page 1009
 l Internet service customization on page 1011

Using Internet Service in policy

This topic shows how to apply a predefined Internet Service entry into a policy.
The Internet Service Database is a comprehensive public IP address database that combines IP address range, IP 
owner, service port number, and IP security credibility. The data comes from the FortiGuard service system. Information 
is regularly added to this database, for example, geographic location, IP reputation, popularity & DNS, and so on. All this 
information helps users define Internet security more effectively. You can use the contents of the database as criteria for 
inclusion or exclusion in a policy.
From FortiOS version 5.6, Internet Service is included in the firewall policy. It can be applied to a policy only as a 
destination object. From version 6.0, Internet Service can be applied both as source and destination objects in a policy. 
You can also apply Internet Services to shaping policy.
There are three types of Internet Services you can apply to a firewall policy:
 l Predefined Internet Services
 l Custom Internet Services
 l Extension Internet Services

Sample configuration

To apply a predefined Internet Service entry to a policy using the GUI:

 1. Go to Policy & Objects and create a new policy.


 2. In the Source or Destination field, click +.
 3. In the Select Entries pane, click Internet Service.

FortiOS 6.4.6 Administration Guide 995


Fortinet Technologies Inc.
Policy and Objects

 4. Locate and click Google.Gmail.

 5. Configure the other fields and then click OK.

To apply a predefined Internet Service entry to a policy using the CLI:

In the CLI, enable the internet-service first and then use its ID to apply the policy.
This example uses Google Gmail and its ID is 65646. Each Internet Service has a unique ID.
config firewall policy
edit 9
set name "Internet Service in Policy"
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set internet-service enable
set internet-service-id 65646
set action accept
set schedule "always"
set utm-status enable
set av-profile "g-default"
set ssl-ssh-profile "certificate-inspection"
set nat enable
next
end

FortiOS 6.4.6 Administration Guide 996


Fortinet Technologies Inc.
Policy and Objects

To diagnose an Internet Service entry using the CLI:

# diagnose internet-service id-summary 65646


Version: 0000600096
Timestamp: 201902111802
Total number of IP ranges: 444727
Number of Groups: 7
Group(0), Singularity(20), Number of IP ranges(142740)
Group(1), Singularity(19), Number of IP ranges(1210)
Group(2), Singularity(16), Number of IP ranges(241)
Group(3), Singularity(15), Number of IP ranges(38723)
Group(4), Singularity(10), Number of IP ranges(142586)
Group(5), Singularity(8), Number of IP ranges(5336)
Group(6), Singularity(6), Number of IP ranges(113891)
Internet Service: 65646(Google.Gmail)
Number of IP range: 60
Number of IP numbers: 322845
Singularity: 15
Reputation: 5(Known and verified safe sites such as Gmail, Amazon, eBay, etc.)
Icon Id: 510
Second Level Domain: 53(gmail.com)
Direction: dst
Data source: isdb

Result

Because the IP and services related to Google Gmail on the Internet are included in this Internet Service (65646), all 
traffic to Google Gmail is forwarded by this policy.

Using custom Internet Service in policy

Custom Internet Services can be created and used in firewall policies.
When creating a custom Internet Service, you must set following elements:
 l IP or IP ranges
 l Protocol number
 l Port or port ranges
 l Reputation
You must use CLI to create a custom Internet Service, except for geographic based services (see Allow creation of ISDB 
objects with regional information on page 1009).

CLI syntax
config firewall internet-service-custom
edit <name>
set comment <comment>
set reputation {1 | 2 | 3 | 4 | 5}
config entry
edit <ID>
set protocol <protocol #>
set dst <object_name>
config port-range

FortiOS 6.4.6 Administration Guide 997


Fortinet Technologies Inc.
Policy and Objects

edit <ID>
set start-port <port #>
set end-port <port #>
next
end
next
end
end
end

Sample configuration

To configure a custom Internet Service:

config firewall internet-service-custom


edit "test-isdb-1"
set comment "Test Custom Internet Service"
set reputation 4
config entry
edit 1
set protocol 6
config port-range
edit 1
set start-port 80
set end-port 443
next
end
set dst "10-1-100-0"
next
edit 2
set protocol 6
config port-range
edit 1
set start-port 80
set end-port 80
next
end
set dst "172-16-200-0"
next
end
next
end

To apply a custom Internet Service into a policy:

config firewall policy


edit 1
set name "Internet Service in Policy"
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set internet-service enable
set internet-service-id 65646
set internet-service-custom "test-isdb-1"
set action accept

FortiOS 6.4.6 Administration Guide 998


Fortinet Technologies Inc.
Policy and Objects

set schedule "always"


set utm-status enable
set av-profile "g-default"
set ssl-ssh-profile "certificate-inspection"
set nat enable
next
end

Result

In addition to the IP address, IP address ranges, and services allowed by Google.Gmail, this policy also allows the traffic 
which access to 10.1.100.0/24 and TCP/80-443 and 172.16.200.0/24 and TCP/80.

Using extension Internet Service in policy

Extension Internet Service lets you add custom or remove existing IP address and port ranges to an existing predefined 
Internet Service entries. Using an extension type Internet Service is actually editing a predefined type Internet Service 
entry and adding IP address and port ranges to it.
When creating an extension Internet Service and adding custom ranges, you must set following elements:
 l IP or IP ranges
 l Protocol number
 l Port or port ranges
You must use CLI to add custom IP address and port entries into a predefined Internet Service.
You must use GUI to remove entries from a predefined Internet Service.

Custom extension Internet Service CLI syntax


config firewall internet-service-extension
edit <ID #>
set comment <comment>
config entry
edit <ID #>
set protocol <number #>
set dst <object_name>
config port-range
edit <ID #>
set start-port <number #>
set end-port <number #>
next
end
next
end
end
end

FortiOS 6.4.6 Administration Guide 999


Fortinet Technologies Inc.
Policy and Objects

Sample configuration

To configure an extension Internet Service using the CLI:

config firewall internet-service-extension


edit 65646
set comment "Test Extension Internet Service 65646"
config entry
edit 1
set protocol 6
config port-range
edit 1
set start-port 80
set end-port 443
next
end
set dst "172-16-200-0"
next
edit 2
set protocol 17
config port-range
edit 1
set start-port 53
set end-port 53
next
end
set dst "10-1-100-0"
next
end
next
end

To remove IP address and port entries from an existing Internet Service:

 1. Go to Policy & Objects > Internet Service Database.


 2. Search for Google.Gmail.
 3. Select Google.Gmail and click Edit.
 4. Locate the IP entry you want to remove and click Disable beside that entry.

 5. Click Return.
 6. When you complete the actions in the GUI, the CLI automatically generates the configuration from your GUI actions:
config firewall internet-service-extension
edit 65646

FortiOS 6.4.6 Administration Guide 1000


Fortinet Technologies Inc.
Policy and Objects

set comment "Test Extension Internet Service 65646"


config entry
edit 1
set protocol 6
config port-range
edit 1
set start-port 80
set end-port 443
next
end
set dst "172-16-200-0"
next
edit 2
set protocol 17
config port-range
edit 1
set start-port 53
set end-port 53
next
end
set dst "10-1-100-0"
next
end
config disable-entry
edit 1
set protocol 6
config port-range
edit 1
set start-port 25
set end-port 25
next
edit 2
set start-port 80
set end-port 80
next
edit 3
set start-port 110
set end-port 110
next
edit 4
set start-port 143
set end-port 143
next
edit 5
set start-port 443
set end-port 443
next
edit 6
set start-port 465
set end-port 465
next
edit 7
set start-port 587
set end-port 587
next
edit 8

FortiOS 6.4.6 Administration Guide 1001


Fortinet Technologies Inc.
Policy and Objects

set start-port 993


set end-port 993
next
edit 9
set start-port 995
set end-port 995
next
edit 10
set start-port 2525
set end-port 2525
next
end
config ip-range
edit 1
set start-ip 2.20.183.160
set end-ip 2.20.183.160
next
end
next
end
next
end

To apply an extension Internet Service into policy using the CLI:

config firewall policy


edit 9
set name "Internet Service in Policy"
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set internet-service enable
set internet-service-id 65646
set action accept
set schedule "always"
set utm-status enable
set av-profile "g-default"
set ssl-ssh-profile "certificate-inspection"
set nat enable
next
end

Result

In addition to the IP addresses, IP address ranges, and services allowed by Google.Gmail, this policy also allows the 
traffic which accesses 10.1.100.0/24 and UDP/53 and 172.16.200.0/24 and TCP/80-443. At the same time, the traffic 
that accesses 2.20.183.160 is dropped because this IP address and port is disabled from Google.Gmail.

Global IP address information database

The Internet Service and IP Reputation databases download details about public IP address, including: ownership, 
known services, geographic location, blocklisting information, and more. The details are available in drilldown 
information, tooltips, and other mechanisms in the FortiView and other pages.

FortiOS 6.4.6 Administration Guide 1002


Fortinet Technologies Inc.
Policy and Objects

The global IP address database is an integrated database containing all public IP addresses, and is implemented in the 
Internet Service Database.

To view the owner of the IP address:

(global) # get firewall internet-service-owner ?


id Internet Service owner ID.
1 Google
2 Facebook
3 Apple
4 Yahoo
5 Microsoft
......
115 Cybozu
116 VNC

To check for any known service running on an IP address:

(global) # diagnose internet-service info FG-traffic 6 80 8.8.8.8


Internet Service: 65537(Google.Web)

To check GeoIP location and blocklist information:

(global) # diagnose internet-service id 65537 | grep 8.8.8.8

To check a known malicious server:

(global) # diagnose internet-service id-summary 3080383


Version: 0000600096
Timestamp: 201902111802
Total number of IP ranges: 444727
Number of Groups: 7
Group(0), Singularity(20), Number of IP ranges(142740)
Group(1), Singularity(19), Number of IP ranges(1210)
Group(2), Singularity(16), Number of IP ranges(241)
Group(3), Singularity(15), Number of IP ranges(38723)
Group(4), Singularity(10), Number of IP ranges(142586)
Group(5), Singularity(8), Number of IP ranges(5336)
Group(6), Singularity(6), Number of IP ranges(113891)
Internet Service: 3080383(Botnet.C&C.Server)
Number of IP range: 111486
Number of IP numbers: 111486
Singularity: 20
Reputation: 1(Known malicious sites related to botnet servers, phishing sites, etc.)
Icon Id: 591
Second Level Domain: 1(other)
Direction: dst
Data source: irdb

To check questionable usage:

(global) # diagnose internet-service id-summary 2818238


Version: 0000600096
Timestamp: 201902111802
Total number of IP ranges: 444727

FortiOS 6.4.6 Administration Guide 1003


Fortinet Technologies Inc.
Policy and Objects

Number of Groups: 7
Group(0), Singularity(20), Number of IP ranges(142740)
Group(1), Singularity(19), Number of IP ranges(1210)
Group(2), Singularity(16), Number of IP ranges(241)
Group(3), Singularity(15), Number of IP ranges(38723)
Group(4), Singularity(10), Number of IP ranges(142586)
Group(5), Singularity(8), Number of IP ranges(5336)
Group(6), Singularity(6), Number of IP ranges(113891)
Internet Service: 2818238(Tor.Relay.Node)
Number of IP range: 13718
Number of IP numbers: 13718
Singularity: 20
Reputation: 2(Sites providing high risk services such as TOR, proxy, P2P, etc.)
Icon Id: 43
Second Level Domain: 1(other)
Direction: dst
Data source: irdb

(global) # diagnose internet-service id-summary 2818243


Version: 0000600096
Timestamp: 201902111802
Total number of IP ranges: 444727
Number of Groups: 7
Group(0), Singularity(20), Number of IP ranges(142740)
Group(1), Singularity(19), Number of IP ranges(1210)
Group(2), Singularity(16), Number of IP ranges(241)
Group(3), Singularity(15), Number of IP ranges(38723)
Group(4), Singularity(10), Number of IP ranges(142586)
Group(5), Singularity(8), Number of IP ranges(5336)
Group(6), Singularity(6), Number of IP ranges(113891)
Internet Service: 2818243(Tor.Exit.Node)
Number of IP range: 1210
Number of IP numbers: 1210
Singularity: 19
Reputation: 2(Sites providing high risk services such as TOR, proxy, P2P, etc.)
Icon Id: 43
Second Level Domain: 1(other)
Direction: src
Data source: irdb

IP reputation filtering

There are currently five reputation levels in the Internet Service Database (ISDB), and custom reputation levels can be 
defined in a custom internet service. You can configure firewall policies to filter traffic according to the desired reputation 
level. If the reputation level of either the source or destination IP address is equal to or greater than the level set in the 
policy, then the packet is forwarded, otherwise, the packet is dropped.
The five default reputation levels are:

1 Known malicious sites, such as phishing sites or sites related to botnet servers

2 High risk services sites, such as TOR, proxy, and P2P

3 Unverified sites

FortiOS 6.4.6 Administration Guide 1004


Fortinet Technologies Inc.
Policy and Objects

4 Reputable social media sites, such as Facebook and Twitter

5 Known and verified safe sites, such as Gmail, Amazon, and eBay

The default minimum reputation level in a policy is zero, meaning that the reputation filter is disabled.
For IP addresses that are not included in the ISDB, the default reputation level is three.
The default reputation direction is destination.

To set the reputation level and direction in a policy using the CLI:

config firewall policy


edit 1
set srcintf "wan2"
set dstintf "wan1"
set dstaddr "all"
set reputation-minimum 3
set reputation-direction source
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set auto-asic-offload disable
set nat enable
next
end

Packets from the source IP address with reputation levels three, four, or five will be forwarded by this policy.

In a policy,  if reputation-minimum is set, and the reputation-direction is 
destination, then the dstaddr, service, and internet-service options are removed 
from the policy.
If reputation-minimum is set, and the reputation-direction is source, then the 
srcaddr, and internet-service-src options are removed from the policy.

Internet service groups in policies

This feature provides support for Internet Service Groups in traffic shaping and firewall policies. Service groups can be 
used as the source and destination of the policy. Internet Service Groups are used as criteria to match traffic; the shaper 
will be applied when the traffic matches.
To use a group as a destination, internet-service must be enabled. To use a group as a source, internet-
service-src must be enabled.
The following CLI variables are available in the firewall policy and firewall shaping-policy commands:

Variable Description

internet-service-group <string> Internet Service group name.

internet-service-custom-group <string> Custom Internet Service group name.

FortiOS 6.4.6 Administration Guide 1005


Fortinet Technologies Inc.
Policy and Objects

Variable Description

internet-service-src-group <string> Internet Service source group name.

internet-service-src-custom-group  <string> Custom Internet Service source group name.

Examples

The following examples use the below topology.

Example 1

In this example, the PC is allowed to access Google, so all Google services are put into an Internet Service Group.

To configure access to Google services using an Internet Service Group using the CLI:

 1. Create a Service Group:
config firewall internet-service-group
edit "Google_Group"
set direction destination
set member 65537 65538 65539 65540 65542 65543 65544 65545 65550 65536 65646
next
end

 2. Create a firewall policy to allow access to all Google Services from the PC:
config firewall policy
edit 1
set name "PC to Google"
set srcintf "port2"
set dstintf "port1"
set srcaddr "PC"
set internet-service enable
set internet-service-group "Google_Group"
set action accept
set schedule "always"
set fsso disable
set nat enable
next
end

To configure access to Google services using an Internet Service Group in the GUI:

 1. On the FortiGate, create a Service Group using the CLI.
 2. Go to Policy & Objects > Firewall Policy, and create a new policy.

FortiOS 6.4.6 Administration Guide 1006


Fortinet Technologies Inc.
Policy and Objects

 3. Set the Destination as the just created Internet Service Group.

 4. Configure the remaining options as shown, then click OK.
On the policy page, hover over the group to view a list of its members.

Example 2

In this example, two office FTP servers are put into an Internet Custom Service Group, and the PC connection to the FTP 
servers is limited to 1Mbps.

To put two FTP servers into a custom service group and limit the PC connection speed to them using
the CLI:

 1. Create custom internet services for the internal FTP servers:
config firewall internet-service-custom
edit "FTP_PM"
config entry

FortiOS 6.4.6 Administration Guide 1007


Fortinet Technologies Inc.
Policy and Objects

edit 1
config port-range
edit 1
set start-port 21
set end-port 21
next
end
set dst "PM_Server"
next
end
next
edit "FTP_QA"
config entry
edit 1
config port-range
edit 1
set start-port 21
set end-port 21
next
end
set dst "QA_Server"
next
end
next
end

 2. Create a custom internet server group and add the just created custom internet services to it:
config firewall internet-service-custom-group
edit "Internal_FTP"
set member "FTP_QA" "FTP_PM"
next
end

 3. Create a traffic shaper to limit the maximum bandwidth:
config firewall shaper traffic-shaper
edit "Internal_FTP_Limit_1Mbps"
set guaranteed-bandwidth 500
set maximum-bandwidth 1000
set priority medium
next
end

 4. Create a firewall shaping policy to limit the speed from the PC to the internal FTP servers:
config firewall shaping-policy
edit 1
set name "For Internal FTP"
set internet-service enable
set internet-service-custom-group "Internal_FTP"
set dstintf "port1"
set traffic-shaper "Internal_FTP_Limit_1Mbps"
set traffic-shaper-reverse "Internal_FTP_Limit_1Mbps"
set srcaddr "PC"
next
end

FortiOS 6.4.6 Administration Guide 1008


Fortinet Technologies Inc.
Policy and Objects

To put two FTP servers into a custom service group and limit the PC connection speed to the using the
GUI:

 1. Create custom internet services for the internal FTP servers using the CLI.
 2. Create a custom internet server group and add the just created custom internet services to it using the CLI.
 3. Create a traffic shaper to limit the maximum bandwidth:
 a. Go to Policy & Objects > Traffic Shapers, and click Create New.
 b. Enter a Name for the shaper, such as Internal_FTP_Limit_1Mbps.
 c. Set the Traffic Priority to Medium.
 d. Enable Max Bandwidth and set it to 1000.
 e. Enable Guaranteed Bandwidth and set it to 500.
 f. Click OK.
 4. Create a firewall shaping policy to limit the speed from the PC to the internal FTP servers:
 a. Go to Policy & Objects > Traffic Shaping Policy, and click Create New.
 b. Set the Destination as the just created Custom Internet Service Group, and apply the just create traffic shaper.

 c. Configure the remaining options as shown, then click OK.

Allow creation of ISDB objects with regional information

Geographic-based Internet Service Database (ISDB) objects allow users to define a country, region, and city. These 
objects can be used in firewall policies for more granular control over the location of the parent ISDB object. ISDB 
objects are now referenced in policies by name instead of ID.

To apply a location-based ISDB object to a policy in the GUI:

 1. Create the ISDB object:
 a. Go to Policy & Objects > Internet Service Database and click Create New > Geographic Based Internet
Service.

FortiOS 6.4.6 Administration Guide 1009


Fortinet Technologies Inc.
Policy and Objects

 b. Configure the settings as required.

 c. Click OK.
 2. View the IP ranges in the location-based internet service:
 a. Go to Policy & Objects > Internet Service Database . 
 b. In the table, hover over the object created in step 1 and click View/Edit Entries. The list of IPs is displayed:

 c. Click Return.
 3. Add the ISDB object to a policy:
 a. Go to Policy & Objects > Firewall Policy. Create a new policy or edit an existing policy.
 b. For Destination, click Internet Service and select the ISDB object created in step 1.
 c. Configure the other settings as needed.

FortiOS 6.4.6 Administration Guide 1010


Fortinet Technologies Inc.
Policy and Objects

 d. Click OK.

To apply a location-based ISDB object to a policy in the CLI:

 1. Create the ISDB object:
config firewall internet-service-name
edit "test-location-isdb-1"
set type location
set internet-service-id 65536
set country-id 840
set region-id 283
set city-id 23352
next
end

 2. View the IP ranges in the location-based internet service:
# diagnose internet-service id 65536 | grep "country(840) region(283) city(23352)"

 3. Add the ISDB object to a policy:
config firewall policy
edit 99
set name "Demo_Policy"
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set internet-service enable
set internet-service-name "test-location-isdb-1"
set action accept
set schedule "always"
set logtraffic all
set logtraffic-start enable
set auto-asic-offload disable
set comments "1"
set nat enable
next
end

Internet service customization

Internet Service Database (ISDB) entries can be tuned for their environments by adding custom ports and port ranges, 
as well as port mapping.

To add a custom port range:

config firewall internet-service-addition


edit 65646
set comment "Add custom port-range:tcp/8080-8090 into 65646"
config entry
edit 1
set protocol 6
config port-range
edit 1
set start-port 8080

FortiOS 6.4.6 Administration Guide 1011


Fortinet Technologies Inc.
Policy and Objects

set end-port 8090


next
end
next
end
next
end
Warning: Configuration will only be applied after rebooting or using the 'execute internet-
service refresh' command.

To verify that the change was applied:

# diagnose internet-service info FG-traffic 6 8080 2.20.183.160


Internet Service: 65646(Google.Gmail)

To configure additional port mapping:

config firewall internet-service-append


set match-port 10
set append-port 20
end
Warning: Configuration will only be applied after rebooting or using the 'execute internet-
service refresh' command.

NAT64 policy and DNS64 (DNS proxy)

NAT64 policy translates IPv6 addresses to IPv4 addresses so that a client on an IPv6 network can communicate 
transparently with a server on an IPv4 network.
NAT64 policy is usually implemented in combination with the DNS proxy called DNS64. DNS64 synthesizes AAAA 
records from A records and is used to synthesize IPv6 addresses for hosts that only have IPv4 addresses. DNS proxy 
and DNS64 are interchangeable terms.

Sample topology

In this example, a host on the internal IPv6 network communicates with ControlPC.qa.fortinet.com that only has 
IPv4 address on the Internet.
 1. The host on the internal network does a DNS lookup for ControlPC.qa.fortinet.com by sending a DNS query 
for an AAAA record for ControlPC.qa.fortinet.com.

FortiOS 6.4.6 Administration Guide 1012


Fortinet Technologies Inc.
Policy and Objects

 2. The DNS query is intercepted by the FortiGate DNS proxy. The DNS proxy performs an A-record query for 
ControlPC.qa.fortinet.com and gets back an RRSet containing a single A record with the IPv4 address 
172.16.200.55.
 3. The DNS proxy then synthesizes an AAAA record. The IPv6 address in the AAAA record begins with the configured 
NAT64 prefix in the upper 96 bits and the received IPv4 address in the lower 32 bits. By default, the resulting IPv6 
address is 64:ff9b::172.16.200.55.
 4. The host on the internal network receives the synthetic AAAA record and sends a packet to the destination address 
64:ff9b::172.16.200.55.
 5. The packet is routed to the FortiGate internal interface (port10) where it is accepted by the NAT64 security policy.
 6. The FortiGate unit translates the destination address of the packets from IPv6 address 
64:ff9b::172.16.200.55 to IPv4 address 172.16.200.55 and translates the source address of the packets 
to 172.16.200.200 (or another address in the IP pool range) and forwards the packets out the port9 interface to 
the Internet.

Sample configuration

To enable display for IPv6, NAT46/NAT64, and DNS Database using the GUI:

 1. Go to System > Feature Visibility.


 2. In the Basic Features section, enable IPv6.
 3. In the Additional Features section, enable the following features:
 l NAT46 & NAT64
 l DNS Database
 4. Click Apply.

To enable display for IPv6, NAT46/NAT64, and DNS Database using the CLI:

config system global


set gui-ipv6 enable
end
config system settings
set gui-nat46-64 enable
set gui-dns-database enable
end

To enable DNS proxy on the IPv6 interface using the GUI:

 1. Go to Network > DNS Servers.


 2. In DNS Service on Interface, click Create New.
 3. For Interface, select port10.
 4. Click OK.

To enable DNS proxy on the IPv6 interface using the CLI:

config system dns-server


edit "port10"
set mode forward-only
next
end

FortiOS 6.4.6 Administration Guide 1013


Fortinet Technologies Inc.
Policy and Objects

To configure IPv6 DHCP server using the CLI:

config system dhcp6 server


edit 1
set subnet 2001:db8:1::/64
set interface "port10"
config ip-range
edit 1
set start-ip 2001:db8:1::11
set end-ip 2001:db8:1::20
next
end
set dns-server1 2001:db8:1::10
next
end

To enable NAT64 and related settings using the CLI:

Enabling NAT64 with the config system nat64 command means that all IPv6 traffic received by the current VDOM 


can be subject to NAT64 if the source and destination address matches an NAT64 security policy.
By default, the setting always-synthesize-aaaa-record is enabled. If you disable this setting, the DNS proxy 
(DNS64) will attempt to find an AAAA records for queries to domain names and therefore resolve the host names to IPv6 
addresses. If the DNS proxy cannot find an AAAA record, it synthesizes one by adding the NAT64 prefix to the A record.
nat64-prefix setting is the nat64 prefix. By default, it is 64:ff9b::/96.
config system nat64
set status enable
end

To create NAT64 policy using the GUI:

 1. Add an IPv4 firewall address for the external network.
 a. Go to Policy & Objects > Addresses.
 b. Click Create New.
 c. For Name, enter external-net4.
 d. For IP/Network, enter 17216.200.0/24.
 e. For Interface, select port9.
 f. Click OK.
 2. Add an IPv6 firewall address for the internal network.
 a. Go to Policy & Objects > Addresses.
 b. Click Create New.
 c. Change Category to IPv6 Address.
 d. For Name, enter internal-net6.
 e. For IPv6 Address, enter 2001:db8:1::/48.
 f. Click OK.
 3. Add an IP pool containing the IPv4 address that is used as the source address of the packets exiting port9.
 a. Go to Policy & Objects > IP Pools.
 b. Click Create New.
 c. For Name, enter exit-pool4.

FortiOS 6.4.6 Administration Guide 1014


Fortinet Technologies Inc.
Policy and Objects

 d. For External IP Range, enter 172.16.200.200-172.16.200.210.


 e. Click OK.
 4. Add a NAT64 policy that allows connections from the internal IPv6 network to the external IPv4 network.
 a. Go to Policy & Objects > NAT64 Policy.
 b. Click Create New.
 c. For Incoming Interface, select port10.
 d. For Outgoing Interface, select port9.
 e. For Source Address, select internal-net6.
 f. For Destination Address, select external-net4.
 g. Set IP Pool Configuration to Use Dynamic IP Pool and select the IP pool exit-pool4.
 h. Click OK.

To create NAT64 policy using the CLI:

config firewall address


edit "external-net4"
set associated-interface "port9"
set subnet 172.16.200.0 255.255.255.0
next
end
config firewall address6
edit "internal-net6"
set ip6 2001:db8:1::/48
next
end
config firewall ippool
edit "exit-pool4"
set startip 172.16.200.200
set endip 172.16.200.210
next
end
config firewall policy64
edit 1
set srcintf "port10"
set dstintf "port9"
set srcaddr "internal-net6"
set dstaddr "external-net4"
set action accept
set schedule "always"
set service "ALL"
set ippool enable
set poolname "exit-pool4"
next
end

NAT46 policy

NAT46 refers to the mechanism that allows IPv4 addressed hosts to communicate with IPv6 hosts. Without such a 
mechanism, IPv4 environments cannot connect to IPv6 networks.

FortiOS 6.4.6 Administration Guide 1015


Fortinet Technologies Inc.
Policy and Objects

Sample topology

In this example, an IPv4 client tries to connect to an IPv6 server. A VIP is configured on FortiGate to map the server IPv6 
IP address 2000:172:16:200:55 to an IPv4 address 10.1.100.55. On the other side, an IPv6 IP pool is configured 
and the source address of packets from client are changed to the defined IPv6 address. In this setup, the client PC can 
access the server by using IP address 10.1.100.55.

Sample configuration

To enable display for IPv6 and NAT46/NAT64 using the GUI:

 1. Go to System > Feature Visibility.


 2. In the Basic Features section, enable IPv6.
 3. In the Additional Features section, enable NAT46 & NAT64.
 4. Click Apply.

To enable display for IPv6 and NAT46/NAT64 using the CLI:

config system global


set gui-ipv6 enable
end
config system settings
set gui-nat46-64 enable
end

To configure VIP46 using the GUI:

 1. Go to Policy & Objects > Virtual IPs.


 2. Click Create New.
 3. For Name, enter vip46_server.
 4. For External IP Address/Range, enter 10.1.100.55- 10.1.100.55.
 5. For Mapped IP Address/Range, enter 2000:172:16:200::55.
 6. Click OK.

To configure VIP46 using the CLI:

config firewall vip46


edit "vip46_server"
set extip 10.1.100.55
set mappedip 2000:172:16:200::55
next
end

FortiOS 6.4.6 Administration Guide 1016


Fortinet Technologies Inc.
Policy and Objects

To configure IPv6 IP pool using the GUI:

 1. Go to Policy & Objects > IP Pools.


 2. Click Create New.
 3. For Name, enter client_expternal.
 4. For External IP Range, enter 2000:172:16:201::11- 2000:172:16:201::20.
 5. Click OK.

To configure IPv6 IP pool using the CLI:

config firewall ippool6


edit "client_external"
set startip 2000:172:16:201::11
set endip 2000:172:16:201::20
next
end

To enable NAT64 and configure address prefix using the CLI:

config system nat64


set status enable
set secondary-prefix-status enable
config secondary-prefix
edit "1"
set nat64-prefix 2000:172:16:201::/96
next
end
end

To create NAT46 policy using the GUI:

 1. Go to Policy & Objects > NAT46 Policy.


 2. Click Create New.
 3. For Incoming Interface, select port10.
 4. For Outgoing Interface, select port9.
 5. For Source Address, select all.
 6. For Destination Address, select vip46_server.
 7. Set IP Pool Configuration to Use Dynamic IP Pool and select the IP pool client_expernal.
 8. Click OK.

To create NAT46 policy using the CLI:

config firewall policy46


edit 1
set srcintf "port10"
set dstintf "port9"
set srcaddr "all"
set dstaddr "vip46_server"
set action accept
set schedule "always"
set service "ALL"
set ippool enable

FortiOS 6.4.6 Administration Guide 1017


Fortinet Technologies Inc.
Policy and Objects

set poolname "client_external"


next
end

Sample troubleshooting

Example to trace flow to see the whole process.
# diagnose debug flow filter saddr 10.1.100.11
# diagnose debug flow show function-name enable
show function name
# diagnose debug flow show iprope enable
show trace messages about iprope
# diagnose debug flow trace start 5

id=20085 trace_id=1 func=print_pkt_detail line=5401 msg="vd-root:0 received a packet


(proto=1, 10.1.100.11:27592->10.1.100.55:2048) from port10. type=8, code=0, id=27592,
seq=1."
id=20085 trace_id=1 func=init_ip_session_common line=5561 msg="allocate a new session-
000003b9"
id=20085 trace_id=1 func=iprope_dnat_check line=4948 msg="in-[port10], out-[]"
id=20085 trace_id=1 func=iprope_dnat_tree_check line=822 msg="len=1"
id=20085 trace_id=1 func=__iprope_check_one_dnat_policy line=4822 msg="checking gnum-100000
policy-1"
id=20085 trace_id=1 func=get_vip46_addr line=998 msg="find DNAT46: IP-2000:172:16:200::55,
port-27592"
id=20085 trace_id=1 func=__iprope_check_one_dnat_policy line=4904 msg="matched policy-1,
act=accept, vip=1, flag=100, sflag=2000000"
id=20085 trace_id=1 func=iprope_dnat_check line=4961 msg="result: skb_flags-02000000, vid-1,
ret-matched, act-accept, flag-00000100"
id=20085 trace_id=1 func=fw_pre_route_handler line=183 msg="VIP-10.1.100.55:27592, outdev-
unkown"
id=20085 trace_id=1 func=__ip_session_run_tuple line=3220 msg="DNAT 10.1.100.55:8-
>10.1.100.55:27592"
id=20085 trace_id=1 func=vf_ip_route_input_common line=2594 msg="find a route: flag=80000000
gw-10.1.100.55 via root"
id=20085 trace_id=1 func=ip4_nat_af_input line=601 msg="nat64 ipv4 received a packet
proto=1"
id=20085 trace_id=1 func=__iprope_check line=2112 msg="gnum-100012, check-ffffffffa0024ebe"
id=20085 trace_id=1 func=__iprope_check_one_policy line=1873 msg="checked gnum-100012
policy-1, ret-matched, act-accept"
id=20085 trace_id=1 func=__iprope_user_identity_check line=1677 msg="ret-matched"
id=20085 trace_id=1 func=get_new_addr46 line=1047 msg="find SNAT46: IP-2000:172:16:201::13
(from IPPOOL), port-27592"
id=20085 trace_id=1 func=__iprope_check_one_policy line=2083 msg="policy-1 is matched, act-
accept"
id=20085 trace_id=1 func=__iprope_check line=2131 msg="gnum-100012 check result: ret-
matched, act-accept, flag-08050500, flag2-00200000"
id=20085 trace_id=1 func=iprope_policy_group_check line=4358 msg="after check: ret-matched,
act-accept, flag-08050500, flag2-00200000"
id=20085 trace_id=1 func=resolve_ip6_tuple line=4389 msg="allocate a new session-00000081"

FortiOS 6.4.6 Administration Guide 1018


Fortinet Technologies Inc.
Policy and Objects

Local-in policies

Security policies control the traffic flow through the FortiGate. The FortiGate also includes the option of controlling 
internal traffic, that is, management traffic.
Each interface includes an allow access configuration to allow management access for specific protocols. Local policies 
are set up automatically to allow access for all users. Local-in policies take this a step further by enabling or restricting 
user access. You can use local-in policies for administrative access, routing, central management by FortiManager, or 
other related purposes. 

Local-in policies can only be created or edited in the CLI. You can view the existing local-in 
policies in the GUI by enabling it in System > Feature Visibility under the Additional Features 
section. This page does not list the custom local-in policies.

To configure a local-in policy using the CLI:

config firewall {local-in-policy | local-in-policy6}


edit <policy_number>
set intf <source_interface>
set srcaddr <source_address>
set dstaddr <destination_address>
set action {accept | deny}
set service <service name>
set schedule <schedule_name>
set comments <string>
next
end

Additional options

To disable or re-enable the local-in policy, use the set status [enable | disable] command. 


To dedicate the interface as an HA management interface, use the set ha-mgmt-intf-only enable command.

DoS protection

A Denial of Service (DoS) policy examines network traffic arriving at a FortiGate interface for anomalous patterns, which 
usually indicates an attack.
A denial of service occurs when an attacking system starts an abnormally large number of sessions with a target system. 
The large number of sessions slows down or disables the target system, preventing legitimate users from using it. 
DoS policies are checked before security policies, preventing attacks from triggering more resource intensive security 
protection and slowing down the FortiGate.

DoS anomalies

Predefined sensors are setup for specific anomalous traffic patterns. New DoS anomalies cannot be added by the user.
The predefined anomalies that can be used in DoS policies are:

FortiOS 6.4.6 Administration Guide 1019


Fortinet Technologies Inc.
Policy and Objects

Anomaly Description Recommended


Threshold

tcp_syn_flood If the SYN packet rate of new TCP connections, including  2000 packets per second.


retransmission, to one destination IP address exceeds the 
configured threshold value, the action is executed.

tcp_port_scan If the SYN packet rate of new TCP connections, including  1000 packets per second.


retransmission, from one source IP address exceeds the 
configured threshold value, the action is executed.

tcp_src_session If the number of concurrent TCP connections from one source  5000 concurrent sessions.


IP address exceeds the configured threshold value, the action 
is executed.

tcp_dst_session If the number of concurrent TCP connections to one destination  5000 concurrent sessions.


IP address exceeds the configured threshold value, the action 
is executed.

udp_flood If the UDP traffic to one destination IP address exceeds the  2000 packets per second.


configured threshold value, the action is executed.

udp_scan If the number of UDP sessions originating from one source IP  2000 packets per second.


address exceeds the configured threshold value, the action is 
executed.

udp_src_session If the number of concurrent UDP connections from one source  5000 concurrent sessions.


IP address exceeds the configured threshold value, the action 
is executed.

udp_dst_session If the number of concurrent UDP connections to one destination  5000 concurrent sessions.


IP address exceeds the configured threshold value, the action 
is executed.

icmp_flood If the number of ICMP packets sent to one destination IP  250 packets per second.


address exceeds the configured threshold value, the action is 
executed.

icmp_sweep If the number of ICMP packets originating from one source IP  100 packets per second.


address exceeds the configured threshold value, the action is 
executed.

icmp_src_session If the number of concurrent ICMP connections from one source  300 concurrent sessions


IP address exceeds the configured threshold value, the action 
is executed.

icmp_dst_session If the number of concurrent ICMP connections to one  1000 concurrent sessions


destination IP address exceeds the configured threshold value, 
the action is executed.

ip_src_session If the number of concurrent IP connections from one source IP  5000 concurrent sessions.


address exceeds the configured threshold value, the action is 
executed.

ip_dst_session If the number of concurrent IP connections to one destination IP  5000 concurrent sessions.

FortiOS 6.4.6 Administration Guide 1020


Fortinet Technologies Inc.
Policy and Objects

Anomaly Description Recommended


Threshold

address exceeds the configured threshold value, the action is 
executed.

sctp_flood If the number of SCTP packets sent to one destination IP  2000 packets per second


address exceeds the configured threshold value, the action is 
executed.

sctp_scan If the number of SCTP sessions originating from one source IP  1000 packets per second


address exceeds the configured threshold value, the action is 
executed.

sctp_src_session If the number of concurrent SCTP connections from one source  5000 concurrent sessions


IP address exceeds the configured threshold value, the action 
is executed.

sctp_dst_session If the number of concurrent SCTP connections to one  5000 concurrent sessions


destination IP address exceeds the configured threshold value, 
the action is executed.

For thresholds based on the number of concurrent sessions, blocking the anomaly will not allow more than the number of 
concurrent sessions to be set as the threshold.
For example, if the period for a particular anomaly is 60 seconds, such as those where the threshold is measured in 
concurrent sessions, after the 60 second timer has expired the number of allowed sessions that match the anomaly 
criteria is reset to zero. This means that, if you allow 10 sessions through before blocking, after the 60 seconds has 
elapsed, another 10 sessions will be allowed. The attrition of sessions from expiration should keep the allowed sessions 
from reaching the maximum.
For rate based thresholds, where the threshold is measured in packets per second, the Block action prevents anomalous 
traffic from overwhelming the firewall in two ways:
 l continuous: Block packets once an anomaly is detected, and continue to block packets while the rate is above the 
threshold. This is the default setting.
 l periodical: After an anomaly is detected, allow the configured number of packets per second.

For example, if a DoS policy is configured to block icmp_flood with a threshold of 10pps, and a continuous ping is started 
at a rate of 20pps for 1000 packets:
 l In continuous mode, the first 10 packets are passed before the DoS sensor if triggered, and then the remaining 990 
packets are blocked.
 l In periodical mode, 10 packets are allowed to pass per second, so 500 packets are blocked in the 50 seconds 
during which the ping is occuring.

The actual numbers of passed and blocked packets may not be exact, as fluctuations in the 
rates can occur, but the numbers should be close to the defined threshold.

FortiOS 6.4.6 Administration Guide 1021


Fortinet Technologies Inc.
Policy and Objects

To configure the block action for rate based anomaly sensors:

config ips global


set anomaly-mode {continuous | periodical}
end

DoS policies

A DoS policy can be configured to use one or more anomalies.

To configure a DoS policy in the GUI:

 1. Go to Policy & Objects > IPv4 DoS Policy or Policy & Objects > IPv6 DoS Policy and click Create New.
If the  option is not visible, enable DoS Policy in Feature Visibility. See Feature visibility on page 940 for details.
 2. Configure the following:

Name Enter a name for the policy.

Incoming Interface Enter the interface that the policy applies to.

Source Address Enter the source address.

Destination Address Enter the destination address.


This is the address that the traffic is addressed to. In this case, it must be an 
address that is associated with the firewall interface. For example, it could be 
an interface address, a secondary IP address, or the address assigned to a 
VIP address.

Service Select the services or service groups.
The ALL service can used or, to optimize the firewall resources, only the 
services that will be answered on an interface can be used.

L3 Anomalies Configure the anomalies:
L4 Anomalies  l Logging: Enable/disable logging for specific anomalies or all of them. 
Anomalous traffic will be logged when the action is Block or Monitor.
 l Action: Select the action to take when the threshold is reached:
 l Disable: Do not scan for the anomaly.
 l Block: Block the anomalous traffic.
 l Monitor: Allow the anomalous traffic, but record a log message if 
logging is enabled.
 l Threshold: The number of detected instances per minute that triggers the 
anomaly action.

Comments Optionally, enter a comment.

 3. Enable the policy, then click OK.

The quarantine option is only available in the CLI. See Quarantine on page 1024 for 
information.

FortiOS 6.4.6 Administration Guide 1022


Fortinet Technologies Inc.
Policy and Objects

To configure a DoS policy in the GUI:

config firewall DoS-policy


edit 1
set name "Flood"
set interface "port1"
set srcaddr "all"
set dstaddr "all"
set service "ALL"
config anomaly
edit "icmp_flood"
set status enable
set log enable
set action block
set quarantine attacker
set quarantine-expiry 1d1h1m
set quarantine-log enable
set threshold 100
next
end
next
end

name <string> Enter a name for the policy.


interface <string> Enter the interface that the policy applies to.
srcaddr <string> Enter the source address.
dstaddr <string> Enter the destination address.
This is the address that the traffic is addressed to. In this case, it must be an 
address that is associated with the firewall interface. For example, it could be an 
interface address, a secondary IP address, or the address assigned to a VIP 
address.
service <string> Enter the services or service groups.
The ALL service can used or, to optimize the firewall resources, only the services 
that will be answered on an interface can be used.
status {enable | disable} Enable/disable this anomaly.
log {enable | disable} Enable/disable anomaly logging. When enabled, a log is generated whenever the 
anomaly action is triggered, regardless of which action is configured.
action {pass | block} Set the action to take when the threshold is reached:
 l pass:   Allow traffic, but record a log message if logging is enabled.
 l block:  B
  lock traffic if this anomaly is found.
quarantine {none | Set the quarantine method (see Quarantine on page 1024):
attacker}
 l none: Disable quarantine.
 l attacker: Block all traffic from the attacker's IP address, and add the 
attacker's IP address to the banned user list.

FortiOS 6.4.6 Administration Guide 1023


Fortinet Technologies Inc.
Policy and Objects

quarantine-expiry Set the duration of the quarantine, in days, hours, and minutes (###d##h##m) 
<###d##h##m> (1m - 364d23h59m, default = 5m). This option is available  if quarantine is set 
attacker.
quarantine-log {enable | Enable/disable quarantine logging (default = disable).  This option is available  if 
disable} quarantine is set attacker.
threshold <integer> The number of detected instances per minute that triggers the anomaly action. 
The default value varies depending on the anomaly.

Quarantine

Quarantine is used to block any further traffic from a source IP address that is considered a malicious actor or a source of 
traffic that is dangerous to the network. Traffic from the source IP address is blocked for the duration of the quarantine, 
and the source IP address is added to the banned user list. 
The banned user list is kept in the kernel, and used by Antivirus, Data Leak Prevention (DLP), DoS, and Intrusion 
Prevention System (IPS). Any policies that use any of these features will block traffic from the attacker's IP address.

To view the quarantined user list:

# diagnose user quarantine list


src-ip-addr created expires cause
192.168.2.205 Wed Nov 25 12:47:54 2020 Wed Nov 25 12:57:54 2020 DOS

Troubleshooting DoS attacks

The best way to troubleshoot DoS attacks is with Anomaly logs and IPS anomaly debug messages.

To test an icmp_flood attack:

 1. From the Attacker, launch an icmp_flood with 50pps lasting for 3000 packets. 
 2. On the FortiGate, configure continuous mode and create a DoS policy with an icmp_flood threshold of 30pps:
config firewall DoS-policy
edit 1
set name icmpFlood
set interface "port1"
set srcaddr "all"
set dstaddr "all"
set service "ALL"
config anomaly
edit "icmp_flood"

FortiOS 6.4.6 Administration Guide 1024


Fortinet Technologies Inc.
Policy and Objects

set status enable


set log enable
set action block
set threshold 30
next
end
next
end

 3. Configure the debugging filter:
# diagnose ips anomaly config
DoS sensors in kernel vd 0:
DoS id 1 proxy 0
0 tcp_syn_flood status 0 log 0 nac 0 action 0 threshold 2000
...
7 udp_dst_session status 0 log 0 nac 0 action 0 threshold 5000
8 icmp_flood status 1 log 1 nac 0 action 7 threshold 30
9 icmp_sweep status 0 log 0 nac 0 action 0 threshold 100
...
total # DoS sensors: 1.
# diagnose ips anomaly filter id 8

 4. Launch the icmp_flood from a Linux machine. This example uses Nmap:
$ sudo nping --icmp --rate 50 -c 3000 192.168.2.50
SENT (0.0522s) ICMP [192.168.2.205 > 192.168.2.50 Echo request (type=8/code=0) id=8597
seq=1] IP [ttl=64 id=47459 iplen=28 ]
...
Max rtt: 11.096ms | Min rtt: 0.028ms | Avg rtt: 1.665ms
Raw packets sent: 3000 (84.000KB) | Rcvd: 30 (840B) | Lost: 2970 (99.00%)
Nping done: 1 IP address pinged in 60.35 seconds

 5. During the attack, check the anomaly list on the FortiGate:
# diagnose ips anomaly list
list nids meter:
id=icmp_flood ip=192.168.2.50 dos_id=1 exp=998 pps=46 freq=50

total # of nids meters: 1.

id=icmp_flood The anomaly name.

ip=192.168.2.50 The IP address of the host that triggered the anomaly. It can be either the 
client or the server.
For icmp_flood, the IP address is the destination IP address. For icmp_sweep, 
it would be the source IP address.

dos_id=1 The DoS policy ID.

exp=998 The time to be expired, in jiffies (one jiffy = 0.01 seconds).

pps=46 The number of packets that had been received when the diagnose command 
was executed.

freq=50 For session based anomalies, freq is the number of sessions.
For packet rate based anomalies (flood, scan):

FortiOS 6.4.6 Administration Guide 1025


Fortinet Technologies Inc.
Policy and Objects

 l In continuous mode: freq is the greater of pps, or the number of packets 
received in the last second.
 l In periodic mode: freq is the pps.

 6. Go to Log & Report > Anomaly and download the logs:


date=2020-11-20 time=14:38:39 eventtime=1605911919824184594 tz="-0800"
logid="0720018433" type="utm" subtype="anomaly" eventtype="anomaly" level="alert"
vd="root" severity="critical" srcip=192.168.2.205 srccountry="Reserved"
dstip=192.168.2.50 srcintf="port1" srcintfrole="undefined" sessionid=0 action="clear_
session" proto=1 service="PING" count=1307 attack="icmp_flood" icmpid="0x2195"
icmptype="0x08" icmpcode="0x00" attackid=16777316 policyid=1 policytype="DoS-policy"
ref="http://www.fortinet.com/ids/VID16777316" msg="anomaly: icmp_flood, 31 > threshold
30, repeats 28 times" crscore=50 craction=4096 crlevel="critical"
date=2020-11-20 time=14:39:09 eventtime=1605911949826224056 tz="-0800"
logid="0720018433" type="utm" subtype="anomaly" eventtype="anomaly" level="alert"
vd="root" severity="critical" srcip=192.168.2.205 srccountry="Reserved"
dstip=192.168.2.50 srcintf="port1" srcintfrole="undefined" sessionid=0 action="clear_
session" proto=1 service="PING" count=1497 attack="icmp_flood" icmpid="0x2195"
icmptype="0x08" icmpcode="0x00" attackid=16777316 policyid=1 policytype="DoS-policy"
ref="http://www.fortinet.com/ids/VID16777316" msg="anomaly: icmp_flood, 50 > threshold
30, repeats 1497 times" crscore=50 craction=4096 crlevel="critical"

Analysis

In the first log message:

msg="anomaly: icmp_flood, At the beginning of the attack, a log is recorded when the threshold of 30pps is 


31 > threshold 30 broken.

repeats 28 times The number of packets that has exceeded the threshold since the last time a 


log was recorded.

srcip=192.168.2.205 The source and destination IP addresses of the attack.
dstip=192.168.2.50

action="clear_session" Equivalent to block.
If action was set to monitor and logging was enabled, this would be 
action="detected".

In the second log message:
 l Because it is an ongoing attack, the FortiGate generates one log message for multiple packets every 30 
seconds..
 l It will not generate a log message if:
 l The same attack ID happened more than once in a five second period, or
 l The same attack ID happened more than once in a 30 second period and the actions are the same and 
have the same source and destination IP addresses.

msg="anomaly: icmp_flood, In the second before the log was recorded, 50 packets were detected, 


50 > threshold 30 exceeding the configured threshold.

repeats 1497 times The number of packets that has exceeded the threshold since the last time a 


log was recorded

FortiOS 6.4.6 Administration Guide 1026


Fortinet Technologies Inc.
Policy and Objects

Access control lists

An access control list (ACL) is a granular, targeted blocklist that is used to block IPv4 and IPv6 packets on a specified 
interface based on the criteria configured in the ACL policy.
On FortiGate models with ports that are connected through an internal switch fabric with TCAM capabilities, ACL 
processing is offloaded to the switch fabric and does not use CPU resources. VLAN interfaces that are based on 
physical switch fabric interfaces are also supported. Interfaces that are connected through an internal switch fabric 
usually have names prefixed with port or lan, such as port1 or lan2; other interfaces are not supported.
The packets will be processed by the CPU when offloading is disabled or not possible, such as when a port on a 
supported model does not connect to the internal fabric switch. 
ACL is supported on the following FortiGate models:
 l 100D, 100E, 100EF, 101E
 l 140D, 140D-POE, 140E, 140E-POE
 l 1200D, 1500D, 1500DT
 l 3000D, 3100D, 3200D, 3700D, 3800D, 3810D, 3815D
 l All 300E and larger E-series models
 l All 100F and larger F-series models

Example

To block all IPv4 and IPv6 telnet traffic from port2 to Company_Servers:

config firewall acl


edit 1
set interface "port2"
set srcaddr "all"
set dstaddr "Company_Servers"
set service "TELNET"
next
end
config firewall acl6
edit 1
set interface "port2"
set srcaddr "all"
set dstaddr "Company_Servers_v6"
set service "TELNET"
next
end

Diagnose commands

To check the number of packets dropped by an ACL:

# diagnose firewall acl counter


ACL id 1 dropped 0 packets
# diagnose firewall acl counter6
ACL id 2 dropped 0 packets

FortiOS 6.4.6 Administration Guide 1027


Fortinet Technologies Inc.
Policy and Objects

To clear the packet drop counters:

# diagnose firewall acl clearcounter


# diagnose firewall acl clearcounter6

Mirroring SSL traffic in policies

SSL mirroring allows the FortiGate to decrypt and mirror traffic to a designated port. A new decrypted traffic mirror profile 
can be applied to IPv4, IPv6, and explicit proxy firewall policies in both flow and proxy mode. Full SSL inspection must be 
used in the policy for the traffic mirroring to occur.
SSL inspection is automatically enabled when you enable a security profile on the policy configuration page. 

To configure SSL mirroring in a policy in the GUI:

 1. Go to Policy & Objects > Firewall Policy.


 2. Create a new policy, or edit an existing one.
 3. Configure the interfaces, sources, and other required information.
 4. In the Security Profiles section, for SSL Inspection, select deep-inspection, or another profile that uses Full SSL
Inspection.

FortiOS 6.4.6 Administration Guide 1028


Fortinet Technologies Inc.
Policy and Objects

 5. Enable Decrypted Traffic Mirror . The terms of use agreement opens.

 6. Click Agree to accept the terms.
 7. In the drop-down list, select a decrypted traffic mirror, or click Create to create a new one.
In this example, a new decrypted traffic mirror is created using the port3 interface.

 8. Click OK to save the policy.

To configure SSL mirroring in proxy mode in the CLI:

 1. Create the decrypted traffic mirror profile:
config firewall decrypted-traffic-mirror
edit SSL-to-port3
set dstmac ff:ff:ff:ff:ff:ff
set traffic-type ssl
set traffic-source client
set interface port3
next
end

 2. Configure the policy to enable SSL traffic mirroring:
config firewall policy
edit 1
set name "mirror-policy"
set srcintf "port1"
set dstintf "port2"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set nat enable
set ssl-ssh-profile "deep-inspection"
set decrypted-traffic-mirror "SSL-to-port3"

FortiOS 6.4.6 Administration Guide 1029


Fortinet Technologies Inc.
Policy and Objects

THIS IS A LEGALLY BINDING AGREEMENT BETWEEN YOU, THE USER AND ITS ORGANIZATION
("CUSTOMER"), AND FORTINET. BEFORE YOU CONTINUE WITH THE TERMS AND CONDITIONS OF THIS
CONTRACT (THE "FEATURE ENABLEMENT") CAREFULLY READ THE TERMS AND CONDITIONS OF THIS
AGREEMENT. BY ENTERING YES, YOU, AS AN AUTHORIZED REPRESENTATIVE ON BEHALF OF CUSTOMER,
CONSENT TO BE BOUND BY AND BECOME A PARTY TO THIS AGREEMENT ("AGREEMENT") AND YOU
REPRESENT THAT YOU HAVE READ AND UNDERSTAND THIS AGREEMENT AND HAVE HAD SUFFICIENT
OPPORTUNITY TO CONSULT WITH COUNSEL, PRIOR TO AGREEING TO THE TERMS HEREIN AND ENABLING
THIS FEATURE. IF YOU HAVE ANY QUESTIONS OR CONCERNS, OR DESIRE TO SUGGEST ANY
MODIFICATIONS TO THIS AGREEMENT, PLEASE CONTACT YOUR FORTINET SUPPORT REPRESENTATIVE TO
BE REFERRED TO FORTINET LEGAL. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS
AGREEMENT, DO NOT CONTINUE WITH THE ACCEPTANCE PROCESS. BY ACCEPTING THE TERMS AND
CONDITIONS HEREIN, CUSTOMER HEREBY AGREES THAT:

1. Customer represents and warrants that Customer, not Fortinet, is engaging this
feature.

2. Customer represents and warrants that Customer has provided the requisite notice(s)
and obtained the required consent(s) to utilize this feature.

3. Customer represents and warrants that Customer will only access data as necessary in
a good faith manner to detect malicious traffic and will put in place processes and
controls to ensure this occurs.

4. Customer represents and warrants that Customer has the right to enable and utilize
this feature, and Customer is fully in compliance with all applicable laws in so doing.

5. Customer shall indemnify Fortinet in full for any of the above certifications being
untrue.

6. Customer shall promptly notify Fortinet Legal in writing of any breach of these Terms
and Conditions and shall indemnify Fortinet in full for any failure by Customer or any
of its employees or representatives to abide in full by the Terms and Conditions above.

7. Customer agrees that these Terms and Conditions shall be governed by the laws of the
State of California, without regards to the choice of laws provisions thereof and
Customer hereby agrees that any dispute related to these Terms and Conditions shall be
resolved in Santa Clara County, California, USA, and Customer hereby consents to
personal jurisdiction in Santa Clara County, California, USA.

Do you want to continue? (y/n) y


next
end

Inspection mode per policy

Inspection mode is configured on a per-policy basis in NGFW mode. This gives you more flexibility when setting up 
different policies.
When configuring a firewall policy, you can select a Flow-based or Proxy-basedInspection Mode. The default setting is 
Flow-based.

FortiOS 6.4.6 Administration Guide 1030


Fortinet Technologies Inc.
Policy and Objects

To configure inspection mode in a policy:

 1. Go to Policy & Objects > Firewall Policy.


 2. Create a new policy, or edit an existing policy.
 3. Configure the policy as needed.
 a. If you change the Inspection Mode to Proxy-based, the Proxy HTTP(S) traffic option displays.

 b. In the Security Profiles section, if no security profiles are enabled, the default SSL Inspection is no-inspection.

FortiOS 6.4.6 Administration Guide 1031


Fortinet Technologies Inc.
Policy and Objects

 c. In the Security Profiles section, if you enable any security profile, the SSL Inspection changes to certificate-


inspection.

To see the inspection mode changes using the CLI:

config firewall policy


edit 1
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set inspection-mode proxy
set nat enable
next
end

To see the HTTP and SSH policy redirect settings when inspection mode is set to proxy using the CLI:

config firewall policy


edit 1
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set inspection-mode proxy

FortiOS 6.4.6 Administration Guide 1032


Fortinet Technologies Inc.
Policy and Objects

set http-policy-redirect enable


set ssh-policy-redirect enable
set nat enable
next
end

To see the default SSL-SSH policy set to no inspection using the CLI:

config firewall policy


edit 1
show fu | grep ssl-ssh-profile
set ssl-ssh-profile "no-inspection"
next
end

OSPFv3 neighbor authentication

OSPFv3 neighbor authentication is available for  enhanced IPv6 security.

To configure an OSPF6 interface:

config router ospf6


config ospf6-interface
edit <name>
set authentication {none | ah | esp | area}
set key-rollover-interval <integer>
set ipsec-auth-alg {md5 | sha1 | sha256 | sha384 | sha512}
set ipsec-enc-alg {null | des | 3des | aes128 | aes192 | aes256}
config ipsec-keys
edit <spi>
set auth-key <string>
set enc-key <string>
next
end
next
end
end

To configure an OSPF6 virtual link:

config router ospf6


config area
edit <id>
config virtual-link
edit <name>
set authentication {none | ah | esp | area}
set key-rollover-interval <integer>
set ipsec-auth-alg {md5 | sha1 | sha256 | sha384 | sha512}
set ipsec-enc-alg {null | des | 3des | aes128 | aes192 | aes256}
config ipsec-keys
edit <spi>
set auth-key <string>
set enc-key <string>
next

FortiOS 6.4.6 Administration Guide 1033


Fortinet Technologies Inc.
Policy and Objects

end
next
end
next
end
end

To configure an OSPF6 area:

config router ospf6


config area
edit <id>
set authentication {none | ah | esp}
set key-rollover-interval <integer>
set ipsec-auth-alg {md5 | sha1 | sha256 | sha384 | sha512}
set ipsec-enc-alg {null | des | 3des | aes128 | aes192 | aes256}
config ipsec-keys
edit <spi>
set auth-key <string>
set enc-key <string>
next
end
next
end
end

CLI command descriptions

Command Description

<id> Area entry IP address.

authentication {none | ah | esp |  Authentication mode:
area}  l none: Disable authentication
 l ah: Authentication Header
 l esp: Encapsulating Security Payload
 l area: Use the routing area authentication configuration

key-rollover-interval <integer> Enter an integer value (300 - 216000, default = 300).

ipsec-auth-alg {md5 | sha1 |  Authentication algorithm.
sha256 | sha384 | sha512}

ipsec-enc-alg {null | des | 3des |  Encryption algorithm.
aes128 | aes192 | aes256}

<spi> Security Parameters Index.

auth-key <string> Authentication key should be hexadecimal numbers.
Key length for each algorithm:
 l MD5: 16 bytes
 l SHA1: 20 bytes
 l SHA256: 32 bytes
 l SHA384:48 bytes

FortiOS 6.4.6 Administration Guide 1034


Fortinet Technologies Inc.
Policy and Objects

Command Description

 l SHA512:84 bytes
If the key is shorter than the required length, it will be padded with zeroes.

enc-key <string> Encryption key should be hexadecimal numbers.
Key length for each algorithm:
 l DES: 8 bytes
 l 3DES: 24 bytes
 l AES128: 16 bytes
 l AES192: 24 bytes
 l AES256: 32 bytes
If the key is shorter than the required length, it will be padded with zeroes.

Firewall anti-replay option per policy

When the global anti-replay option is disabled, the FortiGate does not check TCP flags in packets. The per policy anti-
replay option overrides the global setting. This allows you to control whether or not TCP flags are checked per policy.

To enable the anti-replay option so TCP flags are checked using the CLI:

config firewall policy


edit 1
set name "policyid-1"
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set anti-replay enable
set logtraffic all
set nat enable
next
end

Enabling advanced policy options in the GUI

Advanced policy options can be enabled so you can configure the options in the GUI.

To enable advanced policy options:

config system settings


set gui-advanced-policy enable
end

Advanced policy options are now available when creating or editing a policy in the GUI:

FortiOS 6.4.6 Administration Guide 1035


Fortinet Technologies Inc.
Policy and Objects

To enable configuring TCP sessions without SYN:

config system settings


set tcp-session-without-syn enable
end

TCP sessions without SYN can now be configured when creating or editing a policy in the GUI:

Recognize anycast addresses in geo-IP blocking

An anycast IP can be advertised from multiple locations and the router selects a path based on latency, distance, cost, 
number of hops, and so on. This technique is widely used by providers to route users to the closest server. Since the IP 
is hosted in multiple geographic locations, there is no way to specify one single location to that IP.
In FortiOS 6.4.6, there is an option to bypass anycast IP ranges in geo-IP blocking. The ISDB contains a list of confirmed 
anycast IP ranges that can be used for this purpose.

FortiOS 6.4.6 Administration Guide 1036


Fortinet Technologies Inc.
Policy and Objects

When the source or destination is set to geoip, you can enable the geoip-anycast option. Once enabled, IPs where 
the anycast option is set to 1 in geoip_db are bypassed in country matching and blocking.

You can only use the CLI to configure this feature. 

To enable the geoip-anycast option using the CLI:

config firewall policy


edit 1
set name "policyid-1"
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "test-geoip-CA_1"
set action accept
set schedule "always"
set service "ALL"
set geoip-anycast enable
set logtraffic all
set nat enable
next
end

To check the geoip-anycast option for an IP address using the CLI:

diagnose geoip ip2country 1.0.0.1


1.0.0.1 - Australia, is anycast ip

The anycast IP is 1.0.0.1.

Matching GeoIP by registered and physical location

IP addresses have both a physical and registered location in the geography IP database. Sometimes these two locations 
are different. The geoip-match command allows users to match an IPv4 address in an firewall policy to its physical or 
registered location when a GeoIP is used as a source or destination address. IPv6 policies currently support geography 
address objects but do not support geoip-match.
In the following example, the physical location of 220.243.219.10 is CA (Canada), the registered location is CN (China), 
and it is not an anycast IP.

To configure GeoIP matching based on registered location:

 1. Create a firewall policy  to match the IP:
config firewall policy
edit 1
set name "policy_id_1"
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"

FortiOS 6.4.6 Administration Guide 1037


Fortinet Technologies Inc.
Policy and Objects

set dstaddr "test-geoip-CA"


set action accept
set schedule "always"
set service "ALL"
set geoip-match registered-location
set logtraffic all
set auto-asic-offload disable
set nat enable
next
end

Since CA is applied as a destination address and registered location IP matching is enabled, if the destination IP of 
the traffic is 220.243.219.10, then the traffic will be blocked because the registered location is CN.
 2. Verify that the policy is blocking traffic from the IP address:
# diagnose sniffer packet any icmp 4
interfaces=[any]
filters=[icmp]
5.383798 wan2 in 10.1.100.41 -> 220.243.219.10: icmp: echo request
6.381982 wan2 in 10.1.100.41 -> 220.243.219.10: icmp: echo request
7.382608 wan2 in 10.1.100.41 -> 220.243.219.10: icmp: echo request
^C
3 packets received by filter
0 packets dropped by kernel

To configure GeoIP matching based on physical location:

 1. Create a firewall policy  to match the IP:
config firewall policy
edit 1
set name "policy_id_1"
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "test-geoip-CA"
set action accept
set schedule "always"
set service "ALL"
set geoip-match physical-location
set logtraffic all
set auto-asic-offload disable
set nat enable
next
end

Since CA is applied as a destination address and physical location IP matching is enabled, if the destination IP of 
the traffic is 220.243.219.10, then the traffic will pass through.
 2. Verify that the policy is allowing traffic from the IP address:
# diagnose sniffer packet any icmp 4
interfaces=[any]
filters=[icmp]
5.273985 wan2 in 10.1.100.41 -> 220.243.219.10: icmp: echo request
5.274176 wan1 out 172.16.200.10 -> 220.243.219.10: icmp: echo request
6.274426 wan2 in 10.1.100.41 -> 220.243.219.10: icmp: echo request
6.274438 wan1 out 172.16.200.10 -> 220.243.219.10: icmp: echo request

FortiOS 6.4.6 Administration Guide 1038


Fortinet Technologies Inc.
Policy and Objects

7.273978 wan2 in 10.1.100.41 -> 220.243.219.10: icmp: echo request


7.273987 wan1 out 172.16.200.10 -> 220.243.219.10: icmp: echo request
^C
6 packets received by filter
0 packets dropped by kernel

Authentication policy extensions

By default, unauthenticated traffic is permitted to fall to the next policy. This means that unauthenticated users are only 
forced to authenticate against a policy when there are no other matching policies. To avoid this, you can force 
authentication to always take place.

To set that authentication requirement:

config user setting


set auth-on-demand {always | implicitly}
end

Where:

always Always trigger firewall authentication on demand.

implicitly (default) Implicitly trigger firewall authentication on demand. This is the default setting (and 
the behavior in FortiOS 6.0 and earlier).

In the following example, authentication is required; traffic that would otherwise be allowed by the second policy is 
instead blocked by the first policy.

To use forced authentication:

config user setting


set auth-on-demand always
end
config firewall policy
edit 1
set name "QA to Database"
set srcintf "port10"
set dstintf "port9"
set srcaddr "QA_subnet"
set dstaddr "Database"
set action accept
set schedule "always"
set service "ALL"
set fsso disable
set groups "qa_group"
set nat enable
next
edit 2
set name "QA to Internet"
set srcintf "port10"
set dstintf "port9"
set srcaddr "QA_subnet"
set dstaddr "all"

FortiOS 6.4.6 Administration Guide 1039


Fortinet Technologies Inc.
Policy and Objects

set action accept


set schedule "always"
set service "ALL"
set fsso disable
set nat enable
next
end

HTTP to HTTPS redirect for load balancing

You can configure a virtual server with HTTP to HTTPS redirect enabled.  When enabled, a virtual server can convert a 
client's HTTP requests to HTTPS requests. Through this mandatory conversion, HTTP traffic is converted to 
HTTPS traffic. This conversion improves the security of the user network.
You can only enable this feature by using the CLI. After you enable this feature, traffic flows as follows: 
 l When FortiGate receives an HTTP request for an external IP, such as 10.1.100.201 in the following example, 
FortiGate sends an HTTP 303 response back to the original client and redirects HTTP to HTTPS, instead of 
forwarding the HTTP request to the real backend servers.
 l The client browser restarts the TCP session to HTTPS.
 l The HTTPS session comes to the FortiGate where a matching firewall policy allows the HTTPS traffic and 
establishes a secure SSL connection, and then forwards the request to the real backend servers.

To configure virtual server with HTTPS redirect enabled:

 1. Create a virtual server with server-type set to http:   
config firewall vip
edit "virtual-server-http"
set type server-load-balance
set extip 10.1.100.201
set extintf "wan2"
set server-type http
set ldb-method round-robin
set extport 80
config realservers
edit 1
set ip 172.16.200.44
set port 80
next
edit 2
set ip 172.16.200.55
set port 80
next
end
next
end
 2. Create a virtual server with server-type set to https and with the same external IP address:   
config firewall vip
edit "virtual-server-https"
set type server-load-balance
set extip 10.1.100.201
set extintf "wan2"
set server-type https
set ldb-method round-robin

FortiOS 6.4.6 Administration Guide 1040


Fortinet Technologies Inc.
Policy and Objects

set extport 443


config realservers
edit 1 set ip 172.16.200.44
set port 443
next
edit 2
set ip 172.16.200.55
set port 443
next
end
set ssl-certificate "Fortinet_CA_SSL"
next
end
 3. Enable the http-redirect option for the virtual server with server-type set to http:   
config firewall vip
edit "virtual-server-http"
set http-redirect enable
next
end
 4. Add the two virtual servers to a policy:   
config firewall policy
edit 9
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "virtual-server-http" "virtual-server-https"
set action accept
set schedule "always"
set service "ALL"
set inspection-mode proxy set logtraffic all
set auto-asic-offload disable
set nat enable
next
end

GTPv2 in policies

You can use GTPv2 in the policy section of a GTP profile.
GTPv2 is only available for the following advanced fields:
 l apnmember
 l apn-sel-mode
 l messages
 l max-apn-restriction
 l imsi-prefix
 l msisdn-prefix
 l rat-type
 l mei
 l uli

FortiOS 6.4.6 Administration Guide 1041


Fortinet Technologies Inc.
Policy and Objects

GTPv2 support includes the following changes for overall GTP support:
 l rai is no longer supported in any GTP version.
 l uli can coexist with CGI, SAI, RAI, TAI, ECGI, or LAI, each of which has the pattern MCC.MNC.ID or 
MCC.MNC.ID.ID2.
 l mei can take IMEI (15 digits) or IMEISV (16 digits).

To configure a new GTPv2 policy:

config firewall gtp


edit "gtpv2"
config policy-v2
edit 1
set messages create-ses-req
next
end
next
end

To configure the new ULI format:

This example matches packets with TAI 510-519.01-09.d02a and ECGI 505.02.1409900-14099ff.
config firewall gtp
edit "gtpv2"
config policy-v2
edit 1
set messages create-ses-req
set uli "0" "0" "0" "51*.01-09.d02a" "505.02.14099*"
next
end
next
end

To configure the GTPv2 message type:

config firewall gtp


edit "gtpv2"
config policy-v2
edit 1
set messages create-ses-req create-ses-res modify-bearer-req modify-bearer-
res
next
end
next
end

To configure the RAT type:

This example includes virtual and NB-IoT types.
config firewall gtp
edit "gtpv2"
config policy-v2
edit 1

FortiOS 6.4.6 Administration Guide 1042


Fortinet Technologies Inc.
Policy and Objects

set messages create-ses-req


set rat-type virtual nbiot
next
end
next
end

Use active directory objects directly in policies

Active Directory (AD) groups can be used directly in identity-based firewall policies. You do not need to add remote AD 
groups to local FSSO groups before using them in policies.
FortiGate administrators can define how often group information is updated from AD LDAP servers.

To retrieve and use AD user groups in policies:

 1. Set the FSSO Collector Agent AD access mode on page 1043
 2. Add an LDAP server on page 1044
 3. Create the FSSO collector that updates the AD user groups list on page 1044
 4. Use the AD user groups in a policy on page 1046

Set the FSSO Collector Agent AD access mode

To use this feature, you must set FSSO Collector Agent to Advanced AD access mode. If the FSSO Collector Agent is 
running in the default mode, FortiGate cannot correctly match user group memberships.

FortiOS 6.4.6 Administration Guide 1043


Fortinet Technologies Inc.
Policy and Objects

Add an LDAP server

To add an LDAP server in the GUI:

 1. Go to User & Authentication > LDAP Servers.


 2. Click Create New.
 3. Configure the settings as needed.

 4. If secure communication over TLS is supported by the remote AD LDAP server:
 a. Enable Secure Connection .
 b. Select the protocol.
 c. Select the certificate from the CA that issued the AD LDAP server certificate.
If the protocol is LDAPS, the port will automatically change to 636.
 5. Click OK.

To add an LDAP server in the CLI:

config user ldap


edit "AD-ldap"
set server "10.1.100.131"
set cnid "cn"
set dn "dc=fortinet-fsso,dc=com"
set type regular
set username "cn=Administrator,cn=users,dc=fortinet-fsso,dc=com"
set password XXXXXXXXXXXXXXXXXXXXXXXX
next
end

Create the FSSO collector that updates the AD user groups list

To create an FSSO agent connector in the GUI:

 1. Go to Security Fabric > External Connectors.


 2. Click Create New.
 3. In the Endpoint/Identity section, click Fortinet Single Sign-On Agent.
 4. Fill in the Name
 5. Set the Primary FSSO Agent to the IP address of the FSSO Collector Agent, and enter its password.
 6. Set the User Group Source to Local.
 7. Set the LDAP Server to the just created AD-ldap server.

FortiOS 6.4.6 Administration Guide 1044


Fortinet Technologies Inc.
Policy and Objects

 8. Enable Proactively Retrieve from LDAP Server.


 9. Set the Search Filter to (&(objectClass=group)(cn=group*)).
The default search filter retrieves all groups, including Microsoft system groups. In this example, the filter is 
configured to retrieve group1, group2, etc, and not groups like grp199. 
The filter syntax is not automatically checked; if it is incorrect, the FortiGate might not retrieve any groups.
 10. Set the Interval (minutes) to configure how often the FortiGate contacts the remote AD LDAP server to update the 
group information.

 11. Click OK.
 12. To view the AD user groups that are retrieved by the FSSO agent, hover the cursor over the group icon on the fabric 
connector listing.

To create an FSSO agent connector in the CLI:

config user fsso


edit "ad-advanced"
set server "10.1.100.131"
set password XXXXXXXXXXXXXX
set ldap-server "AD-ldap"
set ldap-poll enable
set ldap-poll-interval 2
set ldap-poll-filter "(&amp;(objectClass=group)(cn=group*))"
next
end

You view the retrieved AD user groups with the show user adgrp command.

FortiOS 6.4.6 Administration Guide 1045


Fortinet Technologies Inc.
Policy and Objects

Use the AD user groups in a policy

The AD user groups retrieved by the FortiGate can be used directly in firewall policies.

FortiGate Cloud / FDN communication through an explicit proxy

Explicit proxy communication to FortiGate Cloud and FortiGuard servers from FortiGate is enabled. A proxy server can 
be configured in the FortiGuard settings so that all FortiGuard connections under the forticldd process can be 
established through the proxy server.

Not all FortiGuard services are supported by these proxy settings. For example, web filter 
service traffic to FortiGuard will not be directed to the configured proxy.

To configure a proxy server and communicate with FortiGate Cloud though it:

 1. Configure FortiGate B as a proxy server:
config firewall proxy-policy
edit 1
set proxy explicit-web
set dstintf "wan1"
set srcaddr "all"
set dstaddr "all"
set service "webproxy"

FortiOS 6.4.6 Administration Guide 1046


Fortinet Technologies Inc.
Policy and Objects

set action accept


set schedule "always"
set logtraffic all
set users "guest1"
next
end
config user local
edit "guest1"
set type password
set passwd 123456
next
end
config authentication scheme
edit "local-basic"
set method basic
set user-database "local-user-db"
next
end
config authentication rule
edit "local-basic-rule"
set srcaddr "all"
set ip-based disable
set active-auth-method "local-basic"
next
end

 2. Configure a firewall policy on FortiGate B to allow FortiGate A to get DNS resolution:
config firewall policy
edit 1
set name "dns"
set srcintf "port18"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "DNS"
set fsso disable
set nat enable
next
end

 3. Configure the FortiGuard proxy settings on FortiGate A:
config system fortiguard
set proxy-server-ip 10.2.2.2
set proxy-server-port 8080
set proxy-username "guest1"
set proxy-password 123456
end

 4. On FortiGate A, log in to FortiGate Cloud to activate the logging service:
execute fortiguard-log login <username> <password>

 5. On FortiGate A, view the forticldd debug message to see the connection to the log controller through the proxy 
server:

FortiOS 6.4.6 Administration Guide 1047


Fortinet Technologies Inc.
Policy and Objects

# diagnose test application forticldd 1

No session timeout

To allow clients to permanently connect with legacy medical applications and systems that do not have keepalive or 
auto-reconnect features, the session timeout can be set to never for firewall services, policies, and VDOMs.
The options to disable session timeout are hidden in the CLI.

To set the session TTL value of a custom service to never:

config firewall service custom


edit "tcp_23"
set tcp-portrange 23
set session-ttl never
next
end

To set the session TTL value of a policy to never:

config firewall policy


edit 201
set srcintf "wan1"
set dstintf "wan2"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "TCP_8080"
set logtraffic disable
set session-ttl never
set nat enable
next
end

To set the session TTL value of a VDOM to never:

config system session-ttl


set default never
config port
edit 1
set protocol 6
set timeout never
set start-port 8080
set end-port 8080
next
end
end

To view a session list with the timeout set to never:

# diagnose sys session list

session info: proto=6 proto_state=01 duration=9 expire=never timeout=never flags=00000000

FortiOS 6.4.6 Administration Guide 1048


Fortinet Technologies Inc.
Policy and Objects

sockflag=00000000 sockport=0 av_idx=0 use=3


origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ vlan_cos=0/255
state=log may_dirty f00
statistic(bytes/packets/allow_err): org=2290/42/1 reply=2895/34/1 tuples=2
tx speed(Bps/kbps): 238/1 rx speed(Bps/kbps): 301/2
orgin->sink: org pre->post, reply pre->post dev=18->17/17->18 gwy=172.16.200.55/10.1.100.41
hook=post dir=org act=snat 10.1.100.41:34256->172.16.200.55:23(172.16.200.10:34256)
hook=pre dir=reply act=dnat 172.16.200.55:23->172.16.200.10:34256(10.1.100.41:34256)
pos/(before,after) 0/(0,0), 0/(0,0)
misc=0 policy_id=9 auth_info=0 chk_client_info=0 vd=1
serial=00000b27 tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=0 sdwan_service_id=0
rpdb_link_id = 00000000 ngfwid=n/a
dd_type=0 dd_mode=0
npu_state=0x000001 no_offload
no_ofld_reason: disabled-by-policy
total session 1

MAP-E support

On a customer edge (CE) FortiGate, an IPv4-over-IPv6 (MAP-E) tunnel can be created between the FortiGate and the 
border relay (BR) operating in an IPv6 network. A tunnel interface is created between the FortiGate and BR, which can 
be applied to firewall policies and IPsec VPN.

To configure a MAP-E tunnel between the FortiGate and the BR:

 1. Configure fixed IP mode.
 a. Configure IPv6 on the interface:
config system interface
edit "wan1"
config ipv6

FortiOS 6.4.6 Administration Guide 1049


Fortinet Technologies Inc.
Policy and Objects

set autoconf enable


set unique-autoconf-addr enable
set interface-identifier ::6f:6c1f:3400:0
end
next
end

The interface-identifier is an IPv6 address. Its last 64-bit will be kept and the rest will be cleared 
automatically. It will combine with the IPv6 prefix it gets from the IPv6 router to generate the IPv6 address of the 
interface.
By default, unique-autoconf-addr is disabled. It must be enabled so it can handle IPv6 prefix changing.
 b. Configure the VNE tunnel:
config system vne-tunnel
set status enable
set interface "wan1"
set mode fixed-ip
set ipv4-address 10.10.81.81 255.255.255.0
set br 2001:160::82
set update-url "http://qa.forosqa.com/update?user=xxxx&pass=yyyy"
end

Initial sequence overview of VNE tunnel under fixed IP mode:

Once the IPv6 address of the FortiGate changes, the tunnel will be down because the BR does not know  the 
FortiGate's new IPv6 address. The FortiGate uses update-url to update the new IPv6 address  to the provisioning 
server. The provisioning server updates the FortiGate’s IPv6 address to the BR so the VNE tunnel can be re-
established.
Communication sequence overview of re-establishing VNE tunnel:

FortiOS 6.4.6 Administration Guide 1050


Fortinet Technologies Inc.
Policy and Objects

 2. Configure the VNE tunnel to use MAP-E mode:
config system vne-tunnel
set status enable
set interface 'wan1'
set ssl-certificate "Fortinet_Factory"
set bmr-hostname ********
set auto-asic-offload enable
set mode map-e
end

Initial sequence overview of VNE tunnel under MAP-E mode: 

FortiOS 6.4.6 Administration Guide 1051


Fortinet Technologies Inc.
Policy and Objects

The FortiGate sends a MAP rule request to the MAP distribution server once the IPv6 address is configured on the 
FortiGate by RS/RA. Next, the FortiGate will send an AAAA query to get the IPv6 address of the MAP distribution 
server. After sending the BMR request to the MAP distribution server, the FortiGate will get the IPv4 address, port 
set, BR IPv6 address, and hostname of the address resolution server from the BMR reply. The VNE tunnel between 
the FortiGate and BR is now established.
The address resolution server is actually a dynamic DNS. The hostname is used for the FortiGate to maintain an 
IPv6 address when it  changes.
The FortiGate updates the DDNS server with its IPv6 address whenever it updates, which in turn provides the 
update to the MAP distribution server and BR so they know how to resolve the FortiGate by hostname.
Once the VNE tunnel is established, a tunnel interface is created (vne.root), and an IPv4-over-IPv6 tunnel is set 
up between the FortiGate and BR. The route, firewall policy, and DNS server can now be configured to let the traffic 
go through the VNE tunnel and the and protect the end-user. The VNE tunnel can also be used in IPsec phase 1.
 3. Configure the route:
config router static
edit 1
set device "vne.root"
next
end

 4. Configure the firewall policy:
config firewall policy
edit 111
set name "ff"
set srcintf "port2"
set dstintf "vne.root"

FortiOS 6.4.6 Administration Guide 1052


Fortinet Technologies Inc.
Policy and Objects

set srcaddr "all"


set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set ssl-ssh-profile "certificate-inspection"
set av-profile "default"
set nat enable
next
end

 5. Configure the DNS server:
config system dns-server
edit "port2"
next
end

Objects

The following topics provide information about objects:
 l Address group exclusions on page 1053
 l MAC addressed-based policies on page 1055
 l ISDB well-known MAC address list on page 1057
 l Dynamic policy — fabric devices on page 1059
 l FSSO dynamic address subtype on page 1061
 l ClearPass integration for dynamic address objects on page 1064
 l Group address objects synchronized from FortiManager on page 1069
 l Using wildcard FQDN addresses in firewall policies on page 1071
 l Configure FQDN-based VIPs on page 1073
 l IPv6 geography-based addresses on page 1074
 l Array structure for address objects on page 1076
 l IPv6 MAC addresses and usage in firewall policies on page 1078

Address group exclusions

Specific IP addresses or ranges can be subtracted from the address group with the Exclude Members setting in IPv4 
address groups.

This feature is only supported for IPv4 address groups, and only for addresses with a Type of 
IP Range or Subnet.

FortiOS 6.4.6 Administration Guide 1053


Fortinet Technologies Inc.
Policy and Objects

To exclude addresses from an address group using the GUI:

 1. Go to Policy & Objects > Addresses.


 2. Create a new address group, or edit an existing address group.

 3. Enable Exclude Members. The Select Entries pane opens.


 4. Select the addresses you want to exclude from the group.
 5. Click OK.

The excluded members are listed in the Exclude Members column.

To exclude addresses from an address group using the CLI:

config firewall addrgrp

FortiOS 6.4.6 Administration Guide 1054


Fortinet Technologies Inc.
Policy and Objects

edit <address group>


set exclude enable
set exclude-member <address> <address> ... <address>
next
end

MAC addressed-based policies

MAC address ranges can be added to the following IPv4 policies:
 l Firewall 
 l Virtual wire pair
 l ACL
 l Central SNAT 
 l DoS
A MAC address is a link layer-based address type and it cannot be forwarded across different IP segments.
FortiOS only supports the MAC address type as source address for policies in NAT mode VDOM. When you use the 
MAC address type in a policy as source address in NAT mode VDOM, IP address translation (NAT) is still performed 
according to the rules defined in the policy. The MAC address type only works for source address matching. It does not 
have any association with NAT actions.
For policies in transparent mode or the virtual wire pair interface, you can use the MAC address type as source or 
destination address.

To configure a MAC address range using the GUI:

 1. Go to Policy & Objects > Addresses to create or edit an address:


 a. For Category, select Address.
 b. For Type, select MAC Address Range.
 c. Enter the address range in the empty fields.
 d. Configure the other fields as needed.
 e. Click OK.

FortiOS 6.4.6 Administration Guide 1055


Fortinet Technologies Inc.
Policy and Objects

 2. Go to Policy & Objects > Firewall Policy to apply the address type to a policy in NAT mode VDOM:


 a. For Source, select the MAC address you just configured.
 b. For Destination, select an address.

In NAT mode VDOM, this address type cannot be used as destination address.

 c. Click OK.

To configure a MAC address range using the CLI:

 1. Create a new MAC address range type:
config firewall address
edit <object_name>
set type mac
set start-mac <mac_address_start #>
set end-mac <mac_address_end #>
next
end

 2. Apply the address type to a policy. In transparent mode or the virtual wire pair interface, this address type can be 
mixed with other address types in the policy:
config firewall address
edit "test-mac-addr1"
set type mac
set start-mac 00:0c:29:41:98:88
set end-mac 00:0c:29:41:98:88
next
end

FortiOS 6.4.6 Administration Guide 1056


Fortinet Technologies Inc.
Policy and Objects

config firewall policy


edit 1
set srcintf "port2"
set dstintf "port1"
set srcaddr "test-mac-addr1" "10-1-100-42"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set nat enable
next
end

ISDB well-known MAC address list

The Internet Service Database (ISDB) includes well-known vendor MAC address range lists. The lists can only be used 
for source MAC addresses in IPv4 policies, and include the vendor name and the MAC address ranges that the vendor 
belongs to.

To view the vendor list:

# diagnose vendor-mac id
Please input Vendor MAC ID.
ID: 1 name: "Asus"
ID: 2 name: "Acer"
ID: 3 name: "Amazon"
ID: 4 name: "Apple"
ID: 5 name: "Xiaomi"
ID: 6 name: "BlackBerry"
ID: 7 name: "Canon"
ID: 8 name: "Cisco"
ID: 9 name: "Linksys"
ID: 10 name: "D-Link"
ID: 11 name: "Dell"
ID: 12 name: "Ericsson"
ID: 13 name: "LG"
ID: 14 name: "Fujitsu"
ID: 15 name: "Fitbit"
ID: 16 name: "Fortinet"
ID: 17 name: "OPPO"
ID: 18 name: "Hitachi"
ID: 19 name: "HTC"
ID: 20 name: "Huawei"
ID: 21 name: "HP"
ID: 22 name: "IBM"
ID: 23 name: "Juniper"
ID: 24 name: "Lenovo"
ID: 25 name: "Microsoft"
ID: 26 name: "Motorola"
ID: 27 name: "Netgear"
ID: 28 name: "Nokia"
ID: 29 name: "Nintendo"
ID: 30 name: "PaloAltoNetworks"

FortiOS 6.4.6 Administration Guide 1057


Fortinet Technologies Inc.
Policy and Objects

ID: 31 name: "Polycom"


ID: 32 name: "Samsung"
ID: 33 name: "Sharp"
ID: 34 name: "Sony"
ID: 35 name: "Toshiba"
ID: 36 name: "VMware"
ID: 37 name: "Vivo"
ID: 38 name: "Zyxel"
ID: 39 name: "ZTE"

To view the MAC address ranges for a vendor:

# diagnose vendor-mac id 16
Vendor MAC: 16(Fortinet)
Version: 0000700021
Timestamp: 201908081432
Number of MAC ranges: 6
00:09:0f:00:00:00 - 00:09:0f:ff:ff:ff
04:d5:90:00:00:00 - 04:d5:90:ff:ff:ff
08:5b:0e:00:00:00 - 08:5b:0e:ff:ff:ff
70:4c:a5:00:00:00 - 70:4c:a5:ff:ff:ff
90:6c:ac:00:00:00 - 90:6c:ac:ff:ff:ff
e8:1c:ba:00:00:00 - e8:1c:ba:ff:ff:ff

To query the vendor of a specific MAC address or range:

# diagnose vendor-mac match 00:09:0f:ff:ff:ff 48


Vendor MAC: 16(Fortinet), matched num: 1

To use the vendor ID in a firewall policy:

config firewall policy


edit 9
set name "policy_id_9"
set uuid 6150cf30-308d-51e9-a7a3-bcbd05d61f93
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "all"
set vendor-mac 36 16
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set auto-asic-offload disable
set nat enable
next
end

Only packets whose source MAC address belong to Fortinet or VMware are passed by the policy.

FortiOS 6.4.6 Administration Guide 1058


Fortinet Technologies Inc.
Policy and Objects

Dynamic policy — fabric devices

The dynamic address group represents the configured IP addresses of all Fortinet devices connected to the Security 
Fabric. It currently includes FortiManager, FortiAnalyzer, FortiClient EMS, FortiMail, FortiAP(s), and FortiSwitch(es). 
Like other dynamic address groups for fabric connectors, it can be used as an IPv4 address in firewall policies and 
objects.
The list of firewall addresses includes a default address object called FABRIC_DEVICE. You can apply the FABRIC_
DEVICE object to the following types of policies:
 l Firewall policy (including virtual wire pairs)
 l IPv4 shaping policy
 l IPv4 ACL policy
 l policy64 and policy46 (IPv4 only)
You cannot apply the FABRIC_DEVICE object to the following types of policies:
 l IPv4 explicit proxy policy
You also cannot use  the FABRIC_DEVICE object with the following settings:
 l Custom extension on internet-service
 l Exclusion of addrgrp
Initially the FABRIC_DEVICE object does not have an address value. The address value is populated dynamically as 
things change. As a result, you cannot edit the FABRIC_DEVICE object, add any addresses to the object, or remove any 
addresses from the object. The Edit Address pane in the GUI only has a Return button because the object is read-only:

The FABRIC_DEVICE object address values are populated based on:
 l FortiAnalyzer IP (from the Fabric Settings pane)
 l FortiManager IP (from the Fabric Settings pane)
 l FortiMail IP (from the Fabric Settings pane)
 l FortiClient EMS IP (from the Fabric Settings pane)
 l FortiAP IPs (from the FortiAP Setup pane or DHCP)
 l FortiSwitch IPs (from the FortiSwitch Setup page or DHCP)

To apply the FABRIC_DEVICE object to a firewall policy using the GUI:

 1. Go to Policy & Objects > Firewall Policy.


 2. Create a new policy or edit an existing policy.

FortiOS 6.4.6 Administration Guide 1059


Fortinet Technologies Inc.
Policy and Objects

 3. For the Destination field, select FABRIC_DEVICE from the list of address entries. 

 4. Configure the rest of the policy as needed.
 5. Click OK.

To apply the FABRIC_DEVICE object to a firewall policy using the CLI:

config firewall address


edit "FABRIC_DEVICE"
set type ipmask
set comment "IPv4 addresses of Fabric Devices."
set visibility enable
set associated-interface ''
set color 0
set allow-routing disable
set subnet 0.0.0.0 0.0.0.0
next
end
config firewall policy
edit 1
set srcintf "port2"
set dstintf "port1"
set srcaddr "all"
set dstaddr "FABRIC_DEVICE"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set fsso disable
set nat enable
next
end

Diagnose command

You can use the diagnose command to list IP addresses of Fortinet devices that are configured in the Security Fabric.

To run the diagnose command using the CLI:

(root) # diagnose firewall sf-addresses list

FabricDevices: 172.18.64.48
FortiAnalyzer: 172.18.60.25
FortiSandbox: 172.18.52.154
FortiManager: 172.18.28.31

FortiOS 6.4.6 Administration Guide 1060


Fortinet Technologies Inc.
Policy and Objects

FortiClientEMS: 172.18.62.6
FortiAP:
FortiSwitch:
FortiAP/SW-DHCP:

FSSO dynamic address subtype

The Fortinet Single Sign-ON (FSSO) dynamic firewall address subtype can be used in policies that support dynamic 
address types. The FortiGate will update the dynamic address used in firewall policies based on the source IP 
information for the authenticated FSSO users. 
It can also be used with FSSO group information that is forwarded by ClearPass Policy Manager (CPPM) via 
FortiManager, and  other FSSO groups provided by the FSSO collector agent or FortiNAC. 

To configure FSSO dynamic addresses with CPPM and FortiManager in the GUI:

 1. Create the dynamic address object:
 a. Go to Policy & Objects > Addresses, and click Create New > Address.
 b. For Type, select Dynamic.
 c. For Sub Type, select Fortinet Single Sign-On (FSSO). The Select Entries pane opens and displays all available 
FSSO groups. 
 d. Select one or more  groups.
 e. Click OK to save the configuration. 

In the address table, there will be an error message for the address you just created (Unresolved dynamic
address: fsso). This is expected because there are currently no authenticated FSSO users (based on source 
IP) in the local FSSO user list.
 2. Add the dynamic address object to a firewall policy:
 a. Go to Policy & Objects > Firewall Policy.
 b. Create a new policy or edit an existing policy.
 c. For Source, add the dynamic FSSO address object you just created.
 d. Configure the rest of the policy as needed.

FortiOS 6.4.6 Administration Guide 1061


Fortinet Technologies Inc.
Policy and Objects

 e. Click OK to save your changes.

 3. Test the authentication to add a source IP address to the FSSO user list:
 a. Log in as user and use CPPM for user authentication to connect to an external web server. After successful 
authentication, CPPM forwards the user name, source IP address, and group membership to the FortiGate via 
FortiManager. 
 b. Go to Monitor > Firewall User Monitor to view the  user name (fsso1) and IP address.

 c. Go to Policy & Objects > Addresses to view the updated address table. The error message no longer appears.


 d. Hover over the dynamic FSSO address to view the IP address (fsso resolves to: 10.1.100.185).

To verify user traffic in the GUI:

 1. Go to Log & Report > Forward Traffic.


Details for the user fsso1 are visible in the traffic log:

FortiOS 6.4.6 Administration Guide 1062


Fortinet Technologies Inc.
Policy and Objects

 l If another user is authenticated by CPPM, then the dynamic address fsso entry in the address table will be 
updated. The IP address for user fsso2 (10.1.100.188) is now visible:

 2. Go to FortiView > Sources to verify that the users were able to successfully pass the firewall policy.  

If a user logs off and CPPM receives log off confirmation, then CPPS updates the FortiGate 
FSSO user list via FortiManager. The user IP address is deleted from the dynamic FSSO 
address, and the user is no longer be able to pass the firewall policy.

To configure FSSO dynamic addresses with CPPM and FortiManager in the CLI:

 1. Create the dynamic address object:
config firewall address
edit "fsso"
set type dynamic
set sub-type fsso
set fsso-group "cp_test_FSSOROLE"
next
end

 2. Add the dynamic address object to a policy:
config firewall policy
edit 1
set name "pol1"

FortiOS 6.4.6 Administration Guide 1063


Fortinet Technologies Inc.
Policy and Objects

set srcintf "port2"


set dstintf "port3"
set srcaddr "fsso"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set fsso disable
set nat enable
next
end

To verify user traffic in the CLI:

 1. Check the FSSO user list:
diagnose debug authd fsso list
----FSSO logons----
IP: 10.1.100.185 User: fsso1 Groups: cp_test_FSSOROLE Workstation: MemberOf: FSSO-
CPPM cp_test_FSSOROLE
Total number of logons listed: 1, filtered: 0
----end of FSSO logons----

 2. Check the authenticated firewall users list:
diagnose firewall auth list
10.1.100.185, fsso1
type: fsso, id: 0, duration: 2928, idled: 2928
server: FortiManager
packets: in 0 out 0, bytes: in 0 out 0
group_id: 2 33554433
group_name: FSSO-CPPM cp_test_FSSOROLE
----- 1 listed, 0 filtered ------

After user traffic passes through the firewall, the nu
diagnose firewall auth list
10.1.100.185, fsso1
type: fsso, id: 0, duration: 3802, idled: 143
server: FortiManager
packets: in 1629 out 1817, bytes: in 2203319 out 133312
group_id: 2 33554433
group_name: FSSO-CPPM cp_test_FSSOROLE
----- 1 listed, 0 filtered ------

ClearPass integration for dynamic address objects

ClearPass Policy Manager (CPPM) can gather information about the statuses of network hosts, for example, the latest 
patches or virus infections. Based on this information, CPPM send the IP addresses and current states, such as Healthy 
or Infected, to the FortiGate.
On the FortiGate, the IP addresses received from CPPM are added to a dynamic firewall address with the clearpass-spt 
subtype. This address can be used in any policy that supports dynamic addresses, such as Firewall or SSL-VPN 
policies.

FortiOS 6.4.6 Administration Guide 1064


Fortinet Technologies Inc.
Policy and Objects

In this example, you create two dynamic IP addresses that are used in two firewall policies (deny and allow). One policy 
allows traffic (host state = Healthy), and the other denies traffic (host state = Infected). When CPPM sends the 
information, the IP addresses are assigned according to their host state: Healthy or Infected.
You can then verify that traffic from the Infected host is denied access by the deny policy, and traffic from the Healthy 
host is allowed access by the allow policy.

Create a REST API administrator

A RESET API administrator is required to generate an authorization token for REST API messages, and to limit hosts 
that can send REST API messages to the FortiGate.

To create a REST API administrator in the GUI:

 1. Go to System > Administrators.


 2. Click Create New > REST API Admin.
 3. Configure the Username and other information as needed.
 4. Disable PKI Group.
 5. In the Trusted Hosts field, enter 10.1.100.0/24.

For this example, an administrator profile called clearpass was created with full read/write access. See 
Administrator profiles on page 767 for details.
 6. Click OK.
The New API key pane opens.

The API key is the REST API authorization token that is used in REST API messages sent by CPPM to the 
FortiGate.
 7. Copy the API key to a secure location. A new key can be generated if this one is lost or compromised.
 8. Click Close.

FortiOS 6.4.6 Administration Guide 1065


Fortinet Technologies Inc.
Policy and Objects

To create a REST API administrator in the CLI:

config system api-user


edit "cpi-back"
set accprofile "clearpass"
config trusthost
edit 1
set ipv4-trusthost 10.1.100.0 255.255.255.0
next
end
next
end
execute api-user generate-key cp-api
New API key: 0f1HxGHh9r9p74k7qgfHNH40p51bjs
NOTE: The bearer of this API key will be granted all access privileges assigned to the
api-user cp-api.

Create dynamic IP addresses with the clearpass subtype

Two dynamic IP addresses are required, one for the allow policy, and the other for the deny policy.

To create the dynamic IP addresses:

config firewall address


edit "cppm"
set type dynamic
set sub-type clearpass-spt
set clearpass-spt healthy
set comment ''
set visibility enable
set associated-interface ''
set color 0
next
edit "cppm-deny"
set type dynamic
set sub-type clearpass-spt
set clearpass-spt infected
set comment ''
set visibility enable
set associated-interface ''
set color 0
next
end

Create firewall policies

Two firewall policies are required, one to accept traffic (cppm-allow), and the other to deny traffic (cppm-deny).

FortiOS 6.4.6 Administration Guide 1066


Fortinet Technologies Inc.
Policy and Objects

To create the firewall policies in the GUI:

 1. Go to Policy & Objects > Firewall Policy.


 2. Configure the allow policy:
 a. Click Create New.
 b. Enter a name for the policy.
 c. Set Source set to cppm.
 d. Set Action to ACCEPT.
 e. Configure the remaining settings as needed.

 f. Click OK.
 3. Configure the deny policy:
 a. Click Create New.
 b. Enter a name for the policy.
 c. Set Source set to cppm-deny.
 d. Set Action to DENY.

FortiOS 6.4.6 Administration Guide 1067


Fortinet Technologies Inc.
Policy and Objects

 e. Configure the remaining settings as needed.

 f. Click OK.

To create the firewall policies in the CLI:

config firewall address


edit "cppm"
set type dynamic
set sub-type clearpass-spt
set clearpass-spt healthy
set comment ''
set visibility enable
set associated-interface ''
set color 0
next
edit "cppm-deny"
set type dynamic
set sub-type clearpass-spt
set clearpass-spt infected
set comment ''
set visibility enable
set associated-interface ''
set color 0
next
end

Verification

Go to Log & Report > Forward Traffic to review traffic logs and ensure that traffic is allowed or denied as expected.


To verify that FortiGate addresses are assigned correctly, enter the following CLI command:
diagnose firewall dynamic list
List all dynamic addresses:
cppm-deny: ID(141)
ADDR(10.1.100.188)

FortiOS 6.4.6 Administration Guide 1068


Fortinet Technologies Inc.
Policy and Objects

cppm: ID(176)
ADDR(10.1.100.185)
ADDR(10.1.100.186)

Group address objects synchronized from FortiManager

Address objects from external connectors that are learned by FortiManager are synchronized to FortiGate. These 
objects can be grouped together with the FortiGate CLI to simplify  selecting connector objects in the FortiGate GUI. 
Multiple groups can be created.
This option is only available for objects that are synchronized from FortiManager.

To add an object to a connector group:

config user adgrp


edit <object_name>
set server-name "FortiManager"
set connector-source <group_name>
next
end

Example

In this example, objects learned by the FortiManager from an Aruba ClearPass device are synchronized to the FortiGate. 
Some of the objects are then added to a group called ClearPass to make them easier to find in the object list when 
creating a firewall policy.

Prior to being grouped, the synchronized objects are listed under the FortiManager heading in the object lists.

FortiOS 6.4.6 Administration Guide 1069


Fortinet Technologies Inc.
Policy and Objects

To add some of the objects to a group:

config user adgrp


edit "cp_test_FSSOROLE"
set server-name "FortiManager"
set connector-source "ClearPass"
next
edit "cp_test_[AirGroup v2]"
set server-name "FortiManager"
set connector-source "ClearPass"
next
end

The objects are now listed under the ClearPass heading.

FortiOS 6.4.6 Administration Guide 1070


Fortinet Technologies Inc.
Policy and Objects

Using wildcard FQDN addresses in firewall policies

You can use wildcard FQDN addresses in firewall policies.
The firewall policy types that support wildcard FQDN addresses include IPv4, IPv6, ACL, local, shaping, NAT64, NAT46, 
and NGFW.
For wildcard FQDN addresses to work, the FortiGate should allow DNS traffic to pass through. Clients behind the 
FortiGate should use the same DNS server(s) as the FortiGate to ensure the FortiGate and the clients are resolving to 
the same addresses.
Initially, the wildcard FQDN object is empty and contains no addresses. When the client tries to resolve a FQDN 
address, the FortiGate will analyze the DNS response. The IP address(es) contained in the answer section of the DNS 
response will be added to the corresponding wildcard FQDN object.

Since FortiGate must analyze the DNS response, it does not work with DNS over HTTPS.

When the wildcard FQDN gets the resolved IP addresses, FortiOS loads the addresses into the firewall policy for traffic 
matching.
The FortiGate will keep the IP addresses in the FQDN object table as long as the DNS entry itself has not expired. Once 
it expires, the IP address is removed from the wildcard FQDN object until another query is made. At any given time, a 
single wildcard FQDN object may have up to 1000 IP addresses.

The DNS expiry TTL value is set by the authoritative name server for that DNS record. If the 
TTL for a specific DNS record is very short and you would like to cache the IP address longer, 
then you can extend it with the CLI. See To extend the TTL for a DNS record in the CLI: on 
page 1073
For more information, see FQDN address firewall object type.

To create a wildcard FQDN using the GUI:

 1. Go to Policy & Objects > Addresses and click Create New > Address.


 2. Specify a Name.
 3. For Type, select FQDN.
 4. For FQDN, enter a wildcard FQDN address, for example, *.fortinet.com.

 5. Click OK.

FortiOS 6.4.6 Administration Guide 1071


Fortinet Technologies Inc.
Policy and Objects

To use a wildcard FQDN in a firewall policy using the GUI:

 1. Go to Policy & Objects > Firewall Policy and click Create New.


 2. For Destination, select the wildcard FQDN.
 3. Configure the rest of the policy as needed.
 4. Click OK.
In this example, policy ID 2 uses the wildcard FQDN:

To create a wildcard FQDN using the CLI:

config firewall address


edit "test-wildcardfqdn-1"
set type fqdn
set fqdn "*.fortinet.com"
next
end

To use wildcard FQDN in a firewall policy using the CLI:

config firewall policy


edit 2
set srcintf "port3"
set dstintf "port1"
set srcaddr "all"
set dstaddr "test-wildcardfqdn-1"
set action accept
set schedule "always"
set service "ALL"
set auto-asic-offload disable
set nat enable
next
end

To use the diagnose command to list resolved IP addresses of wildcard FQDN objects:

# diagnose firewall fqdn list


List all FQDN:
*.fortinet.com: ID(48) ADDR(96.45.36.159) ADDR(192.168.100.161) ADDR(65.39.139.161)

Alternatively:
diagnose test application dnsproxy 6
worker idx: 0
vfid=0 name=*.fortinet.com ver=IPv4 min_ttl=3266:0, cache_ttl=0 , slot=-1, num=3,
wildcard=1

FortiOS 6.4.6 Administration Guide 1072


Fortinet Technologies Inc.
Policy and Objects

96.45.36.159 (ttl=68862:68311:68311) 192.168.100.161 (ttl=3600:3146:3146)


65.39.139.161
(ttl=3600:3481:3481)

To use the diagnose command for firewall policies which use wildcard FQDN:

# diagnose firewall iprope list 100004


...
destination fqdn or dynamic address (1):*.fortinet.com ID(48) uuid_idx=57 ADDR
(208.91.114.104) ADDR(208.91.114.142) ADDR(173.243.137.143) ADDR(65.104.9.196) ADDR
(96.45.36.210)
...

To extend the TTL for a DNS record in the CLI:

In this the example the set cache-ttl value has been extended to 3600 seconds.
config firewall address
edit "fortinet.com"
set type fqdn
set fqdn "www.fortinet.com”
set cache-ttl 3600
next
end

Configure FQDN-based VIPs

In public cloud environments, sometimes it is necessary to map a VIP to an FQDN address. 

To configure an FQDN-based VIP in the GUI:

 1. Go to Policy & Objects > Virtual IPs and click Create New > Virtual IP.
 2. Enter a name for the VIP.
 3. Select an interface.
 4. For Type, select FQDN.
 5. Enter the external IP address.

FortiOS 6.4.6 Administration Guide 1073


Fortinet Technologies Inc.
Policy and Objects

 6. For Mapped address, select an FQDN address.

 7. Click OK.
In the virtual IP list, hover over the address to view more information.

To configure an FQDN-based VIP in the CLI:

config firewall vip


edit "FQDN-vip-1"
set type fqdn
set extip 10.2.2.199
set extintf "any"
set mapped-addr "destination"
next
end

IPv6 geography-based addresses

Geography-based IPv6 addresses can be created and applied to IPv6 firewall policies.

IPv6 geography-based addresses do not support geoip-override or geoip-anycast.

FortiOS 6.4.6 Administration Guide 1074


Fortinet Technologies Inc.
Policy and Objects

To create an IPv6 geography-based address in the GUI:

 1. Go to Policy and Objects > Addresses.


 2. Click Create New > Address.
 3. Set Category to IPv6 Address.
 4. Enter a name for the address.
 5. Set Type to IPv6 Geography.
 6. Select the Country/Region from the list.
 7. Optionally, enter comments.

 8. Click OK.

To use the IPv6 geography address in a policy:

 1. Go to Policy & Objects > Firewall Policy. 


 2. Edit an existing policy, or create a new one, using the IPv6 geography address as the Source or Destination
Address.

FortiOS 6.4.6 Administration Guide 1075


Fortinet Technologies Inc.
Policy and Objects

 3. In the policy list, hover over the address to view details.

To configure an IPv6 geography-based address in the CLI:

 1. Create an IPv6 geography-based address:
config firewall address6
edit "test-ipv6-geoip"
set type geography
set color 6
set comment "IPv6 Geography address"
set country "CA"
next
end

 2. Use the IPv6 geography-based address in a policy:
config firewall policy
edit 1
set name "test-policy6-1"
set srcintf "wan2"
set dstintf "wan1"
set srcaddr6 "all"
set dstaddr6 "test-ipv6-geoip"
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

Array structure for address objects

Some address objects logically belong to the same device, such as two IPs from the same computer. These address 
objects can be grouped into an address folder, which is an exclusive list of address objects that do not appear in other 
address groups or folders.
In the CLI, the folder type can be set after the member list is already populated. If the member list contains an 
incompatible entry, then the setting will be discarded when the next/end command is issued. If the folder type is set 
before the member list is populated, then the possible member entry list will be filtered according to the selected type.

FortiOS 6.4.6 Administration Guide 1076


Fortinet Technologies Inc.
Policy and Objects

To create an address folder in the GUI:

 1. Go to Policy & Objects > Addresses.


 2. Click Create New > Address Group and enter a name.
 3. For Type, select Folder.
 4. For Members, click the + to add the addresses. Address folders and groups are exclusive, so the Select Entries 
window filters out address objects that are a member of an existing group or folder. 

 5. Click OK.
 6. In the address table, expand the Address Group section to view the folder (dev1-addr-comb). The expandable 
folder view shows the address folder's child objects: 

To configure an address folder in the CLI:

notes
config firewall addrgrp
edit "safe-network1-devices"
set type folder
set member "dev1-addr-comb" "dev2-addr-comb"
set comment ''
set exclude disable
set color 13
next
end
config firewall addrgrp
edit "dev1-addr-comb"
set type folder

FortiOS 6.4.6 Administration Guide 1077


Fortinet Technologies Inc.
Policy and Objects

set member "dev1-IP-nic1" "dev1-IP-nic2" "dev1-mac"


set comment ''
set exclude disable
set color 18
next
end
config firewall addrgrp
edit "dev2-addr-comb"
set type folder
set member "dev2-IP-nic1" "dev2-IP-nic2" "dev2-IP-nic3" "dev2-mac"
set comment ''
set exclude disable
set color 5
next
end

IPv6 MAC addresses and usage in firewall policies

Users can define IPv6 MAC addresses that can be applied to the following policies:
 l Firewall
 l Virtual wire pair
 l ACL/DoS
 l Central NAT
 l NAT64
 l Local-in
In this example, a firewall policy is configured in a NAT mode VDOM with the IPv6 MAC address range as a source 
address.

IPv6 MAC addresses cannot be used as destination addresses in VDOMs when in NAT 
operation mode.

To configure IPv6 MAC addresses in a policy in the GUI:

 1. Create the MAC address range:
 a. Go to Policy & Objects > Addresses and click Create New > Address.
 b. For Category, click IPv6 Address.
 c. Enter an address name.
 d. For Type, select Device (MAC Address).
 e. For MAC Address Scope, click Range.
 f. Enter the Starting and Ending MAC addresses.

FortiOS 6.4.6 Administration Guide 1078


Fortinet Technologies Inc.
Policy and Objects

 g. Click OK.

 2. Configure the policy:
 a. Go to Policy & Objects > Firewall Policy and click Create New.
 b. For Source, select the IPv6 MAC address object.
 c. Configure the other settings as needed.
 d. Click OK.

To configure IPv6 MAC addresses in a policy in the CLI:

 1. Create the MAC address range:
config firewall address6
edit "test-ipv6-mac-addr-1"
set type mac
set start-mac 00:0c:29:b5:92:8d
set end-mac 00:0c:29:b5:92:8d
next
end

 2. Configure the policy:
config firewall policy
edit 2

FortiOS 6.4.6 Administration Guide 1079


Fortinet Technologies Inc.
Policy and Objects

set srcintf "wan2"


set dstintf "wan1"
set srcaddr "all"
set dstaddr "all"
set srcaddr6 "test-ipv6-mac-addr-1" "2000-10-1-100-0"
set dstaddr6 "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set auto-asic-offload disable
set nat enable
next
end

Traffic shaping

QoS (quality of service) is the capability to adjust quality aspects of your overall network traffic, including techniques 
such as priority-based queuing and traffic policing. Because bandwidth is finite and some types of traffic are slow, jitter or 
packet loss sensitive, bandwidth intensive, or critical for operations, QoS is a useful tool to optimize the performance of 
various applications in your network. QoS is especially important for managing voice and streaming multimedia traffic 
because these types of traffic can rapidly consume bandwidth and are sensitive to latency. You can implement QoS on 
FortiGate devices using the following techniques:

Technique Description

Traffic policing The FortiGate drops packets that do not conform to the configured bandwidth 
limitations.
Note that excessive traffic policing can degrade network performance rather than 
improve it.

Traffic shaping The FortiGate ensures that traffic consumes bandwidth at least at the guaranteed 
rate by assigning a greater priority queue to the traffic if the guaranteed rate is not 
being met.
The FortiGate ensures that traffic does not consume more  than the maximum 
configured bandwidth. Traffic that exceeds the maximum rate is subject to traffic 
policing.

Queuing The FortiGate transmits packets in the order of their assigned priority queue for 
that physical interface. All traffic in a higher priority traffic queue must be 
completely transmitted before traffic in lower priority queues is transmitted.

When determining how to configure QoS, it is helpful to know when a FortiGate uses each technique in the overall traffic 
processing flow and the considerations for each technique. After the FortiGate accepts packets, it classifies the traffic 
and may apply traffic policing at additional points during traffic processing. The FortiGate may also apply QoS 
techniques, such as prioritization and traffic shaping. Traffic shaping consists of both traffic policing to enforce bandwidth 
limits and adjusting priority queues to help packets achieve the guaranteed rate. 
Traffic shaping accuracy is optimal for security policies without a protection profile where no FortiGate content inspection 
is processed.

FortiOS 6.4.6 Administration Guide 1080


Fortinet Technologies Inc.
Policy and Objects

You can enable traffic shaping in System > Feature Visibility under the Additional Features 


section.

The following topics provide information about configuring traffic shaping policies:
 l Determining your QoS requirements on page 1081
 l Packet rates on page 1082
 l Changing traffic shaper bandwidth unit of measurement on page 1084
 l Shared traffic shaper on page 1084
 l Per-IP traffic shaper on page 1089
 l Type of Service-based prioritization and policy-based traffic shaping on page 1092
 l Interface-based traffic shaping profile on page 1095
 l Interface-based traffic shaping with NP acceleration on page 1103
 l Classifying traffic by source interface on page 1104
 l Configuring traffic class IDs on page 1105
 l Traffic shaping schedules on page 1108
 l DSCP matching (shaping) on page 1109
 l QoS assignment and rate limiting for quarantined VLANs on page 1113
 l Weighted random early detection queuing on page 1114

Determining your QoS requirements

Before implementing QoS, you should identify the types of traffic that:
 l Are important to your organization
 l Use high amounts of bandwidth
 l Are sensitive to latency or packet loss
Discovering the needs and relative importance of each traffic type on your network will help you design an appropriate 
overall approach, including how you configure each available QoS component technique. Some organizations discover 
they only need to configure bandwidth limits for some services. Other organizations determine they need to fully 
configure interface and security policy bandwidth limits for all services, and prioritize the queuing of critical services 
relative to traffic rate.
For example, your organization wants to guarantee sufficient bandwidth for revenue-producing e-commerce traffic. You 
need to ensure that customers complete transactions and do not experience service delays. At the same time, you need 
to ensure low latency for voice over IP (VoIP) traffic that sales and customer support teams use, while traffic latency and 
bursts may be less critical to the success of other network applications, such as long term, resumable file transfers.

Best practices

The following list includes recommendations and considerations when  configuring QoS in your network:
 l Ensure maximum bandwidth limits at the source interface and security policy are not too low. This can cause the 
FortiGate to discard an excessive number of packets.
 l Consider the ratios of how packets are distributed between the available queues, and which queues are used by 
which types of services. Assigning most packets to the same priority queue can reduce the effects of configuring 
prioritization. Assigning a lot of high bandwidth services to high priority queues may take too much bandwidth away 

FortiOS 6.4.6 Administration Guide 1081


Fortinet Technologies Inc.
Policy and Objects

from lower priority queues and cause increased or indefinite latency. For example, you may want to prioritize a 
latency-sensitive service, such as SIP, over a bandwidth-intensive service, such as FTP. Also consider that 
bandwidth guarantees can affect queue distribution, and assign packets to queue 0 instead of their regular queue in 
high-volume situations.
 l Decide whether or not to guarantee bandwidth because it causes the FortiGate to assign packets to queue 0 if the 
guaranteed packet rate is not being met. When you compare queuing behavior for low and high bandwidth 
situations, this means the effect of prioritization only becomes visible as traffic volumes rise and exceed their 
guarantees. Because of this, you might want only some services to use bandwidth guarantees. This way, you can 
avoid the possibility that all traffic uses the same queue in high-volume situations, which negates the effects of 
configuring prioritization.
 l Configure prioritization for all through traffic by either ToS (type of service)-based priority or security policy priority, 
not both, to simplify analysis and troubleshooting. Traffic subject to both ToS-based and security policy priorities 
use a combined priority from both parts of the configuration. Traffic subject to only one of the prioritization methods 
will use only that priority. If you configure both methods, or if you configure either method for only a subset of traffic, 
packets that apply to the combined configuration may receive a lower priority queue than packets that apply to only 
one of the priority methods, as well as packets that do not apply to the configured prioritization. For example, if both 
the ToS-based priority and security policy priority dictate that a packet should receive a medium priority, in the 
absence of bandwidth guarantees, a packet will use queue 3. If only ToS-based priority is configured, the packet will 
use queue 1. If only security policy priority is configured, the packet will use queue 2. If no prioritization is 
configured, the packet will use queue 0.
 l Because you can configure QoS using a combination of security policies and ToS-based priorities, and to 
distribute traffic over the six possible queues for each physical interface, the results of those configurations can 
be more difficult to analyze because of their complexity. In those cases, prioritization behavior can vary by 
several factors, including: traffic volume, ToS or differentiated services (DiffServ) markings, and correlation of 
session to a security policy.   

The FortiGate does not prioritize traffic based on the differentiated services code point 
(DSCP) marking configured in the security policy. However, ToS-based prioritization 
can be used for ingress traffic.

 l Use the UDP protocol to obtain more accurate testing results. Packets that are discarded by traffic shapers impact 
flow-control mechanisms, such as TCP.
 l Do not oversubscribe outbandwidth throughput. For example, sum [guaranteed bandwidth] < outbandwidth. For 
accurate bandwidth calculations, you must set the outbandwidth parameter on interfaces.

Packet rates

The formula for packet rates specified for maximum bandwidth or guaranteed bandwidth is:
rate = amount / time
where rate is in Kbps
Burst size cannot exceed the configured maximum bandwidth. The FortiGate drops packets that exceed the configured 
maximum bandwidth. Packets deduct from the amount of bandwidth available to subsequent packets, and available 
bandwidth regenerates at a fixed rate. As a result, the available bandwidth for a packet may be less than the configured 
rate, down to a minimum of 0 Kbps.
Alternatively, rate calculation and behavior can be described using the token bucket metaphor. A traffic flow has an 
associated bucket, which represents burst size bounds and is the size of the configured bandwidth limit. The bucket 
receives tokens, which represent available bandwidth at the fixed configured rate. As time passes, tokens are added to 
the bucket up to capacity, and excess tokens are discarded. When a packet arrives at the FortiGate, the packet must 

FortiOS 6.4.6 Administration Guide 1082


Fortinet Technologies Inc.
Policy and Objects

deduct bandwidth tokens from the bucket equal to its  size in order to leave the FortiGate. If there are not enough tokens, 
the packet cannot leave the FortiGate and is dropped.
Bursts are not redistributed over a longer interval, so bursts are propagated rather than smoothed. However, peak size is 
limited. The maximum burst size is the capacity of the bucket, which is the configured bandwidth limit. The actual size 
varies depending on the current number of tokens in the bucket, which may be less than the capacity of the bucket due to 
deductions made by previous packets and the fixed rate at which tokens accumulate. A depleted bucket refills at the rate 
of the configured bandwidth limit. Bursts cannot borrow tokens from other time intervals.
By limiting traffic peaks and token regeneration, the available bandwidth may be less than the capacity of the bucket, but 
the limit of the total amount per time interval is ensured. Total bandwidth use during each interval of one second is, at 
most, the integral of the configured rate.

Rate discrepancy

You may observe that external clients, such as FTP or BitTorrent, initially report rates between the maximum bandwidth 
and twice the amount of the maximum bandwidth depending on the size of their initial burst. For example, when a 
connection is initiated following a period of no network activity. The apparent discrepancy in rates is caused by a 
difference in perspective when delimiting time intervals. A burst from the client may initially consume all tokens in the 
bucket, and before the end of one second as the bucket regenerates, is allowed to consume almost another bucket 
worth of bandwidth. From the perspective of the client, this equals one time interval. However, from the perspective of 
the FortiGate, the bucket cannot accumulate tokens when it is full. Therefore, the time interval for token regeneration 
begins after the initial burst and does not contain the burst. These different points of reference result in an initial 
discrepancy equal to the size of the burst. The client's rate contains it, but the FortiGate's rate does not. However, if the 
connection is sustained to its limit and time progresses over an increasing number of intervals, this discrepancy 
decreases in importance relative to the bandwidth total. The client reported rate will eventually approach  the configured 
rate limit for the FortiGate.

Example

The maximum bandwidth is 50 Kbps, there has been no network activity for one or more seconds, and the bucket is full. 
A burst from an FTP client immediately consumes 50 kilobits. Because the bucket completely regenerates over one 
second, by the time another second elapses from the initial burst, traffic can consume another 49.999 kilobits, for a total 
of 99.999 kilobits between the two points in time. From the vantage point of an external FTP client regulated by this 
bandwidth limit, it initially appears that the bandwidth limit is 99.999 Kbps. This is almost twice the configured limit of 50 
Kbps. However, bucket capacity only regenerates at the configured rate of 50 Kbps, and the connection can only 
consume a maximum of 50 kilobits during each subsequent second. The result is that as bandwidth consumption is 
averaged over an increasing number of time intervals, each of which are limited to 50 Kbps, the effect of the first 
interval's doubled bandwidth size diminishes proportionately, and the client's reported rate eventually approaches the 
configured rate limit. The following table shows the effects of a 50 Kbps limit on client reported rates:

Total size transferred (kilobits) Time (seconds) Rate reported by client


(Kbps)

99.999 (50 + 49.999) 1 99.999

149.999 2 74.999

199.999 3 66.666

249.999 4 62.499

FortiOS 6.4.6 Administration Guide 1083


Fortinet Technologies Inc.
Policy and Objects

Total size transferred (kilobits) Time (seconds) Rate reported by client


(Kbps)

299.999 5 59.998

349.999 6 58.333

Guaranteed bandwidth can also be described using a token bucket metaphor. However, because this feature attempts 
to achieve or exceed a rate rather than limit it, the FortiGate does not discard non-conforming packets, as it does for 
maximum bandwidth. Instead, when the flow does not achieve the rate, the FortiGate increases the packet priority 
queue, in an effort to increase the rate.
Guaranteed and maximum bandwidth rates apply to the bidirectional total for all sessions controlled by the security 
policy. For example, an FTP connection may entail two separate connections for the data and control portion of the 
session. Some packets may be reply traffic rather than initiating traffic. All packets for both connections are counted 
when calculating the packet rate for comparison with the guaranteed and maximum bandwidth rate.

Changing traffic shaper bandwidth unit of measurement

Bandwidth speeds are measured in kilobits per second (Kbps), and bytes that are sent and received are measured in 
megabytes (MB). In some cases, this can cause confusion depending on whether your ISP uses kilobits per second 
(Kbps), kilobytes per second (KBps), megabits per second (Mbps), or gigabits per second (Gbps). 
You can change the unit of measurement for traffic shapers in the CLI. 

To change the bandwidth unit of measurement for a shared traffic shaper:

config firewall shaper traffic-shaper


edit <traffic_shaper_name>
set bandwidth-unit {kbps | mbps | gbps}
next
end

To change the bandwidth unit of measurement for a per-IP traffic shaper:

config firewall shaper per-ip-shaper


edit <traffic_shaper_name>
set bandwidth-unit {kbps | mbps | gbps}
next
end

Shared traffic shaper

Shared traffic shaper is used in a firewall shaping policy to indicate the priority and guaranteed and maximum bandwidth 
for a specified type of traffic use.
The maximum bandwidth indicates the largest amount of traffic allowed when using the policy. You can set the maximum 
bandwidth to a value between 1 and 16776000 Kbps. The GUI displays an error if any value outside this range is used. If 
you want to allow unlimited bandwidth, use the CLI to enter a value of 0.

FortiOS 6.4.6 Administration Guide 1084


Fortinet Technologies Inc.
Policy and Objects

The guaranteed bandwidth ensures that there is a consistent reserved bandwidth available. When setting the 
guaranteed bandwidth, ensure that the value is significantly less than the interface's bandwidth capacity. Otherwise, the 
interface will allow very little or no other traffic to pass through, potentially causing unwanted latency.
In a shared traffic shaper, the administrator can prioritize certain traffic as high, medium, or low. FortiOS provides 
bandwidth to low priority connections only when high priority connections do not need the bandwidth. For example, you 
should assign a high traffic priority to a policy for connecting a secure web server that needs to support e-commerce 
traffic. You should assign less important services a low priority.
When you configure a shared traffic shaper, you can apply bandwidth shaping per policy or for all policies. By default, a 
shared traffic shaper applies traffic shaping evenly to all policies that use the shared traffic shaper.
When configuring a per-policy traffic shaper, FortiOS applies the traffic shaping rules defined for each security policy 
individually. For example, if a per-policy traffic shaper is configured with a maximum bandwidth of 1000 Kbps, any 
security policies that have that traffic shaper enabled get 1000 Kbps of bandwidth each.
If a traffic shaper for all policies is configured with a maximum bandwidth of 1000 Kbps, all policies share the 1000 Kbps 
on a first-come, first-served basis.
The configuration is as follows:
config firewall shaper traffic-shaper
edit "traffic_shaper_name"
set per-policy enable
next
end

The shared traffic shaper selected in the traffic shaping policy affects traffic in the direction defined in the policy. For 
example, if the source port is LAN and the destination is WAN1, the traffic shaping affects the flow in this direction only, 
affecting the outbound traffic's upload speed. You can define the traffic shaper for the policy in the opposite direction 
(reverse shaper) to affect the inbound traffic's download speed. In this example, that would be from WAN1 to LAN.
Only traffic through forward traffic shapers will be included in FortiView; reverse and per-IP shapers are not included.
The following example shows how to apply different speeds to different types of service. The example configures two 
shared traffic shapers to use in two firewall shaping policies. One policy guarantees a speed of 10 Mbps for VoIP traffic. 
The other policy guarantees a speed of 1 Mbps for other traffic. In the example, FortiOS communicates with a PC using 
port10 and the Internet using port9.

To configure shared traffic shapers in the GUI:

 1. Create a firewall policy:
 a. Go to Policy & Objects > Firewall Policy and click Create New.
 b. Set the Name to Internet Access.
 c. Set the Incoming Interface to port10.
 d. Set the Outgoing Interface to port9.
 e. Set the Source and Destination to all.
 f. Set the Schedule to always.
 g. Set the Service to ALL.
 h. Click OK.
 2. Create the shared traffic shapers:
 a. Go to Policy & Objects > Traffic Shapers and click Create New.
 b. Set the Name to 10Mbps. This shaper is for VoIP traffic.
 c. Set the Traffic Priority to High.

FortiOS 6.4.6 Administration Guide 1085


Fortinet Technologies Inc.
Policy and Objects

 d. Enable Max Bandwidth and enter 20000.


 e. Enable Guaranteed Bandwidth and enter 10000.

 f. Click OK.
 g. Repeat the above steps to create another traffic shaper named 1Mbps with the Traffic Priority set to Low, the 
Max Bandwidth set to 10000, and the Guaranteed Bandwidth set to 1000.
 3. Create a firewall shaping policy:
 a. Go to Policy & Objects > Traffic Shaping Policy and click Create New.
 b. Set the Name to VoIP_10Mbps_High. This policy is for VoIP traffic.
 c. Set the Source and Destination to all.
 d. Set the Service to all VoIP services.
 e. Set the Outgoing Interface to port9.
 f. Enable Shared shaper and select 10Mbps.
 g. Enable Reverse shaper and select 10Mbps.
 h. Click OK.
 i. Repeat the above steps to create anpther firewall shaping policy named Other_1Mbps_Low for other traffic, 
with the Source and Destination set to all, Service set to ALL, Outgoing Interface set to port9, and Shared
shaper and Reverse shaper set to 1Mbps.

To configure shared traffic shapers in the CLI:

 1. Create a firewall policy:   
config firewall policy
edit 1
set name "Internet Access"
set srcintf "port10"
set dstintf "port9"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set fsso disable
set nat enable
next
end
 2. Create the shared traffic shapers:   
config firewall shaper traffic-shaper
edit "10Mbps"
set guaranteed-bandwidth 10000
set maximum-bandwidth 20000
next
edit "1Mbps"

FortiOS 6.4.6 Administration Guide 1086


Fortinet Technologies Inc.
Policy and Objects

set guaranteed-bandwidth 1000


set maximum-bandwidth 10000
set priority low
next
end
 3. Create a firewall shaping policy:   
config firewall shaping-policy
edit 1
set name "VOIP_10Mbps_High"
set service "H323" "IRC" "MS-SQL" "MYSQL" "RTSP" "SCCP" "SIP" "SIP-MSNmessenger"
set dstintf "port9"
set traffic-shaper "10Mbps"
set traffic-shaper-reverse "10Mbps"
set srcaddr "all"
set dstaddr "all"
next
edit 2
set name "Other_1Mbps_Low"
set service "ALL"
set dstintf "port9"
set traffic-shaper "1Mbps"
set traffic-shaper-reverse "1Mbps"
set srcaddr "all"
set dstaddr "all"
next
end

To troubleshoot shared traffic shapers:

 1. To check if specific traffic is attached to the correct traffic shaper, run the diagnose firewall iprope list


100015 command. The example output shows the traffic attached to the 10Mbps and 1Mbps shapers:   
# diagnose firewall iprope list 100015

policy index=1 uuid_idx=0 action=accept


flag (0):
shapers: orig=10Mbps(2/1280000/2560000)
cos_fwd=0 cos_rev=0
group=00100015 av=00000000 au=00000000 split=00000000
host=4 chk_client_info=0x0 app_list=0 ips_view=0
misc=0 dd_type=0 dd_mode=0
zone(1): 0 -> zone(1): 38
source(1): 0.0.0.0-255.255.255.255, uuid_idx=0,
dest(1): 0.0.0.0-255.255.255.255, uuid_idx=0,
service(15):
[6:0x0:0/(1,65535)->(1720,1720)] helper:auto
[6:0x0:0/(1,65535)->(1503,1503)] helper:auto
[17:0x0:0/(1,65535)->(1719,1719)] helper:auto
[6:0x0:0/(1,65535)->(6660,6669)] helper:auto
[6:0x0:0/(1,65535)->(1433,1433)] helper:auto
[6:0x0:0/(1,65535)->(1434,1434)] helper:auto
[6:0x0:0/(1,65535)->(3306,3306)] helper:auto
[6:0x0:0/(1,65535)->(554,554)] helper:auto
[6:0x0:0/(1,65535)->(7070,7070)] helper:auto
[6:0x0:0/(1,65535)->(8554,8554)] helper:auto
[17:0x0:0/(1,65535)->(554,554)] helper:auto
[6:0x0:0/(1,65535)->(2000,2000)] helper:auto

FortiOS 6.4.6 Administration Guide 1087


Fortinet Technologies Inc.
Policy and Objects

[6:0x0:0/(1,65535)->(5060,5060)] helper:auto
[17:0x0:0/(1,65535)->(5060,5060)] helper:auto
[6:0x0:0/(1,65535)->(1863,1863)] helper:auto
 
policy index=2 uuid_idx=0 action=accept
flag (0):
shapers: orig=1Mbps(4/128000/1280000)
cos_fwd=0 cos_rev=0
group=00100015 av=00000000 au=00000000 split=00000000
host=4 chk_client_info=0x0 app_list=0 ips_view=0
misc=0 dd_type=0 dd_mode=0
zone(1): 0 -> zone(1): 38
source(1): 0.0.0.0-255.255.255.255, uuid_idx=0,
dest(1): 0.0.0.0-255.255.255.255, uuid_idx=0,
service(1):
[0:0x0:0/(0,0)->(0,0)] helper:auto
 2. To check if the correct traffic shaper is applied to the session, run the diagnose sys session list command. 
The example output shows that the 1Mbps shaper is applied to the session:   
# diagnose sys session list
session info: proto=6 proto_state=01 duration=11 expire=3599 timeout=3600 flags=00000000
sockflag=00000000 sockport=0 av_idx=0 use=5
origin-shaper=1Mbps prio=4 guarantee 128000Bps max 1280000Bps traffic 1050Bps drops 0B
reply-shaper=
per_ip_shaper=
class_id=0 shaping_policy_id=2 ha_id=0 policy_dir=0 tunnel=/ helper=ftp vlan_cos=0/255
state=may_dirty npu npd os mif route_preserve
statistic(bytes/packets/allow_err): org=868/15/1 reply=752/10/1 tuples=2
tx speed(Bps/kbps): 76/0 rx speed(Bps/kbps): 66/0
orgin->sink: org pre->post, reply pre->post dev=39->38/38->39 gwy=172.16.200.55/0.0.0.0
hook=post dir=org act=snat 10.1.100.11:58241->172.16.200.55:21(172.16.200.1:58241)
hook=pre dir=reply act=dnat 172.16.200.55:21->172.16.200.1:58241(10.1.100.11:58241)
pos/(before,after) 0/(0,0), 0/(0,0)
misc=0 policy_id=1 auth_info=0 chk_client_info=0 vd=4
serial=0003255f tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=0 sdwan_service_id=0
rpdb_link_id = 00000000
dd_type=0 dd_mode=0
npu_state=0x100000
npu info: flag=0x00/0x00, offload=0/0, ips_offload=0/0, epid=0/0, ipid=0/0,
vlan=0x0000/0x0000
vlifid=0/0, vtag_in=0x0000/0x0000 in_npu=0/0, out_npu=0/0, fwd_en=0/0, qid=0/0
no_ofld_reason: offload-denied helper
total session 1
 3. To check statuses of shared traffic shapers, run the diagnose firewall shaper traffic-shaper list 
command. The output should resemble the following:   
# diagnose firewall shaper traffic-shaper list

name 10Mbps
maximum-bandwidth 2500 KB/sec
guaranteed-bandwidth 1250 KB/sec
current-bandwidth 0 B/sec
priority 2
tos ff
packets dropped 0
bytes dropped 0

FortiOS 6.4.6 Administration Guide 1088


Fortinet Technologies Inc.
Policy and Objects

name 1Mbps
maximum-bandwidth 1250 KB/sec
guaranteed-bandwidth 125 KB/sec
current-bandwidth 0 B/sec
priority 4
tos ff
packets dropped 0
bytes dropped 0

Per-IP traffic shaper

With per-IP traffic shaping, you can limit each IP address's behavior to avoid a situation where one user uses all of the 
available bandwidth. In addition to controlling the maximum bandwidth used per IP address, you can also define the 
maximum number of concurrent sessions for an IP address. For example, if you apply a per-IP shaper of 1 Mbps to your 
entire network, FortiOS allocates each user/IP address 1 Mbps of bandwidth. Even if the network consists of a single 
user, FortiOS allocates them 1 Mbps. If there are ten users, each user gets 1 Mbps of bandwidth, totaling 10 Mbps of 
outgoing traffic.
For shared shapers, all users share the set guaranteed and maximum bandwidths. For example, if you set a shared 
shaper for all PCs using an FTP service to 10 Mbps, all users uploading to the FTP server share the 10 Mbps.
Shared shapers affect upload speed. If you want to limit the download speed from the FTP server in the example, you 
must configure the shared shaper as a reverse shaper. Per-IP shapers apply the speed limit on both upload and 
download operations. Only traffic through forward traffic shapers will be included in FortiView; reverse and per-IP 
shapers are not included.
The following example shows how to apply a per-IP shaper to a traffic shaping policy. This shaper assigns each user a 
maximum bandwidth of 1 Mbps and allows each user to have a maximum of ten concurrent connections to the FTP 
server. In the example, FortiOS communicates with users using port10 and the FTP server using port9.

To configure a per-IP traffic shaper in the GUI:

 1. Create a firewall policy:
 a. Go to Policy & Objects > IPv4 Policy and click Create New.
 b. Set the Name to FTP Access.
 c. Set the Incoming Interface to port10.
 d. Set the Outgoing Interface to port9.
 e. Set the Source to all.
 f. Set the Destination to FTP_Server.
 g. Set the Schedule to always.
 h. Set the Service to ALL.
 i. Click OK.
 2. Create the per-IP traffic shaper:
 a. Go to Policy & Objects > Traffic Shapers and click Create New.
 b. Set Type to Per IP Shaper.
 c. Set the Name to FTP_Max_1M. This shaper is for VoIP traffic.
 d. Enable Max Bandwidth and enter 1000.
 e. Enable Max Concurrent Connections and enter 10. This means that each user can have up to ten concurrent 
connections to the FTP server.

FortiOS 6.4.6 Administration Guide 1089


Fortinet Technologies Inc.
Policy and Objects

 f. Click OK.
 3. Create a firewall shaping policy:
 a. Go to Policy & Objects > Traffic Shaping Policy and click Create New.
 b. Set the Name to FTP speed 1M.
 c. Set the Source to the addresses and users that require access to the FTP server.
 d. Set the Destination to FTP_Server.
 e. Set the Service to ALL.
 f. Set the Outgoing Interface to port9.
 g. Enable Per-IP shaper and select FTP_Max_1M.
 h. Click OK.

To configure a per-IP traffic shaper in the CLI:

 1. Create a firewall policy:   
config firewall policy
edit 1
set name "FTP Access"
set srcintf "port10"
set dstintf "port9"
set srcaddr "all"
set dstaddr "FTP_Server"
set action accept
set schedule "always"
set service "ALL"
set fsso disable
set nat enable
next
end
 2. Create the per-IP traffic shaper:   
config firewall shaper per-ip-shaper
edit "FTP_Max_1M"
set max-bandwidth 1000
set max-concurrent-session 10
next
end
 3. Create a firewall shaping policy:   
config firewall shaping-policy
edit 1
set name "FTP speed 1M"
set service "ALL"
set dstintf "port9"
set per-ip-shaper "FTP_Max_1M"
set srcaddr "PC1" "WinPC" "PC2"

FortiOS 6.4.6 Administration Guide 1090


Fortinet Technologies Inc.
Policy and Objects

set dstaddr "FTP_Server"


next
end

To troubleshoot per-IP traffic shapers:

 1. To check if specific traffic is attached to the correct traffic shaper, run the diagnose firewall iprope list


100015 command. The example output shows the traffic attached to the FTP_Max_1M  shaper:   
# diagnose firewall iprope list 100015

policy index=3 uuid_idx=0 action=accept


flag (0):
shapers: per-ip=FTP_Max_1M
cos_fwd=0 cos_rev=0
group=00100015 av=00000000 au=00000000 split=00000000
host=2 chk_client_info=0x0 app_list=0 ips_view=0
misc=0 dd_type=0 dd_mode=0
zone(1): 0 -> zone(1): 38
source(3): 10.1.100.11-10.1.100.11, uuid_idx=30, 10.1.100.143-10.1.100.143, uuid_idx=32,
10.1.100.22-10.1.100.22, uuid_idx=31,
dest(1): 172.16.200.55-172.16.200.55, uuid_idx=89,
service(1):
[0:0x0:0/(0,65535)->(0,65535)] helper:auto
 2. To check if the correct traffic shaper is applied to the session, run the diagnose sys session list command. 
The example output shows that the FTP_Max_1M shaper is applied to the session:   
# diagnose sys session list
session info: proto=6 proto_state=01 duration=36 expire=3567 timeout=3600 flags=00000000
sockflag=00000000 sockport=0 av_idx=0 use=4
origin-shaper=
reply-shaper=
per_ip_shaper=FTP_Max_1M
class_id=0 shaping_policy_id=3 ha_id=0 policy_dir=0 tunnel=/ helper=ftp vlan_cos=0/255
state=may_dirty per_ip npu npd mif route_preserve
statistic(bytes/packets/allow_err): org=506/9/1 reply=416/6/1 tuples=2
tx speed(Bps/kbps): 0/0 rx speed(Bps/kbps): 0/0
orgin->sink: org pre->post, reply pre->post dev=39->38/38->39 gwy=172.16.200.55/0.0.0.0
hook=post dir=org act=snat 10.1.100.11:58275->172.16.200.55:21(172.16.200.1:58275)
hook=pre dir=reply act=dnat 172.16.200.55:21->172.16.200.1:58275(10.1.100.11:58275)
pos/(before,after) 0/(0,0), 0/(0,0)
misc=0 policy_id=1 auth_info=0 chk_client_info=0 vd=2
serial=0000211a tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=0 sdwan_service_id=0
rpdb_link_id = 00000000
dd_type=0 dd_mode=0
npu_state=0x100000
npu info: flag=0x00/0x00, offload=0/0, ips_offload=0/0, epid=0/0, ipid=0/0,
vlan=0x0000/0x0000
vlifid=0/0, vtag_in=0x0000/0x0000 in_npu=0/0, out_npu=0/0, fwd_en=0/0, qid=0/0
no_ofld_reason: offload-denied helper
 3. To check statuses of per-IP traffic shapers, run the diagnose firewall shaper per-ip-shaper list 
command. The output should resemble the following:   
# diagnose firewall shaper per-ip-shaper list

name FTP_Max_1M
maximum-bandwidth 125 KB/sec
maximum-concurrent-session 10

FortiOS 6.4.6 Administration Guide 1091


Fortinet Technologies Inc.
Policy and Objects

tos ff/ff
packets dropped 0
bytes dropped 0
addr=10.1.100.11 status: bps=0 ses=3

Type of Service-based prioritization and policy-based traffic shaping

Priority queues

After packet acceptance, FortiOS classifies traffic and may apply Quality of Service (QoS) techniques, such as 
prioritization and traffic shaping. Traffic shaping consists of a mixture of traffic policing to enforce bandwidth limits and 
priority queue adjustment to assist packets in achieving the guaranteed rate.
If you have configured prioritization, FortiOS prioritizes egressing packets by distributing them among first in first out 
(FIFO) queues associated with each possible priority number. Each physical interface has six priority queues. Virtual 
interfaces use the priority queues of the physical interface that they are bound to.
The physical interface's six queues are queue 0 to 5, where queue 0 is the highest priority queue. You might observe that 
your traffic uses only a subset of those six queues. For example, some traffic may always use a certain queue number. 
Queuing may also vary by the packet rate or mixture of services. Some queue numbers may only be used by through 
traffic for which you have configured traffic shaping in the security policy that applies to that traffic session.

 l Administrative access traffic always uses queue 0.
 l Traffic matching firewall policies without traffic shaping may use queue 0, 1, or 2. The queue is selected based on 
the priority value you have configured for packets with that ToS bit value, if you have configured ToS-based 
priorities.
 l Traffic matching firewall shaping policies with traffic shaping enabled can use any queue. The queue is selected 
based on whether the packet rate is currently below the guaranteed bandwidth (queue 0), or above the guaranteed 
bandwidth. Packets at rates greater than the maximum bandwidth limit are dropped.

Priority types

Packets can be assigned a priority in one of three types:

FortiOS 6.4.6 Administration Guide 1092


Fortinet Technologies Inc.
Policy and Objects

 l On entering ingress – for packets flowing through the firewall.
 l Upon generation – for packets generated by the firewall (including packets generated due to AV proxying).
 l On passing through a firewall policy – for packets passing through a firewall policy (firewall shaping policy) that has 
a traffic shaper defined.

ToS priority

The first and second types, ingress priority and priority for generated packets, are controlled by two different CLI 
settings:
config system global
set traffic-priority-level {high | medium | low}
end
config system tos-based-priority
edit 1
set tos [0-15] <---- type of service bit in the IP datagram header with a value
between 0 and 15
set priority (high | medium | low) <---- priority of this type of service
next
end

Each priority level is mapped to a value as follows:

ToS priority Value

High 0

Medium 1

Low 2

ToS-based traffic prioritization cannot be used to apply bandwidth limits and guarantees, but 
can be used to prioritize traffic at per-packet levels.

Example

In the following example configuration, packets with ToS bit values of 10 are prioritized as medium and packets with ToS 
bit values of 20 are prioritized as high. All the other traffic is prioritized as low.
config system global
set traffic-priority-level low
end
config system tos-based-priority
edit 1
set tos 10
set priority medium
next
edit 2
set tos 20
set priority high
next
end

FortiOS 6.4.6 Administration Guide 1093


Fortinet Technologies Inc.
Policy and Objects

Firewall shaping policy priority

You can enable traffic shaping in a firewall shaping policy. In the shared traffic shaper, you can set the firewall priority to 
high, medium, or low:
config firewall shaper traffic-shaper
edit 1
set priority {high | medium | low}
next
end

As the priority in a traffic shaper is set to high by default, you must set some traffic at a lower priority to see results. Each 
priority level is mapped to a value as follows:

Firewall policy priority Value

High (default) 1

Medium 2

Low 3

Combination of two priority types

To combine the two priority types, the global or ingress ToS-based priority value is combined with the firewall policy 
priority value:
ToS priority (0, 1, 2) + policy priority (1, 2, 3) = total priority (queue number)
Consider the following scenarios:
 l If the current packet rate is less than the guaranteed bandwidth, packets use priority queue 0. Packet priority is 0.
 l If the current packet rate exceeds the maximum bandwidth, excess packets are dropped.
 l If the current packet rate is greater than the guaranteed bandwidth but less than the maximum bandwidth, FortiOS 
assigns a priority queue by adding the ToS-based priority and the firewall priority.
For example, if you have enabled traffic shaping in the security policy and the security policy's traffic priority is low 
(value 3), and the priority normally applied to packets with that ToS bit is medium (value 1), the packets have a total 
packet priority of 4, and use priority queue 4.

FortiOS 6.4.6 Administration Guide 1094


Fortinet Technologies Inc.
Policy and Objects

Interface-based traffic shaping profile

A traffic shaping policy can be used for interface-based traffic shaping by organizing traffic into 30 class IDs. The shaping 
profile defines the percentage of the interface bandwidth that is allocated to each class. Each traffic class ID is shaped to 
the assigned speed according to the outgoing bandwidth limit configured to the interface.

Traffic classification

A shaping policy classifies traffic and organizes it into different class IDs, based on matching criteria. For traffic matching 
a criteria, you can choose to put it into 30 different shaping classes, identified by class ID 2 to 31.
You must select an outgoing interface for the traffic. The shaping policy is only applied when the traffic goes to one of the 
selected outgoing interfaces.

Criterion Description

Source  l Address: match the source address of the traffic to the selected address or 
address group.
 l User: use the user credentials of the traffic to match the selected user or user 
group. At least one address, address group, or internet service must also be 
selected.
 l Internet service: match the traffic to the selected internet service. Internet 
services cannot be used if addresses or address or groups are used.

Destination  l Address: match the destination address of the traffic to the selected address 
or address group.
 l Internet service: match the traffic to the selected internet service. Internet 
services cannot be used if addresses or address or groups are used.

Schedule Match the current date and time to the selected schedule. You can select a one-
time schedule, recurring schedule, or schedule group. This setting is optional.

Service Match the service of the traffic to the selected service or service group.

Application Match the application of the traffic to the selected application, application 
category, or application group.
Application control must be enabled in the related firewall policy to know the 
application of the traffic. See Application control on page 1206 for more 
information.

URL category Match the URL of the traffic to the selected URL category.


Web filter must be enabled in the related firewall policy to know the URL of the 
traffic. See Web filter on page 1154 for more information.

When multiple items are selected in one criterion, it is considered a match when traffic 
matches any one of them.

FortiOS 6.4.6 Administration Guide 1095


Fortinet Technologies Inc.
Policy and Objects

Traffic prioritization

Shaping profiles define how different shaping classes of traffic are prioritized. For each class, you can define three 
prioritization strategies: guaranteed bandwidth, maximum bandwidth, and priority.
For each shaping profile, a default shaping class must be defined. Traffic is prioritized based on the default shaping 
group in the following two circumstances:
 l All traffic to the outgoing interface that does not match to any shaping policy
 l Traffic with a shaping group that is not defined in a shaping profile

Prioritization strategy Description

Guaranteed bandwidth The percentage of the link speed that is reserved for the shaping group.


The total guaranteed bandwidth for all shaping groups cannot exceed 100%.

Maximum bandwidth The maximum percentage of the link speed that the shaping group can use.

Priority The shaping class priority: top, critical, high, medium, or low. When groups are 
competing for bandwidth on the interface, the group with the higher priority wins.

Applying a shaping profile to an interface

Traffic shaping is accomplished by configuring the outgoing bandwidth and outgoing shaping profile on an interface. The 
shaping profile uses the outgoing bandwidth of the interface as the maximum link speed, and it only works when the 
outgoing bandwidth is configured.
This example shows how to apply interface-based traffic shaping to web and file accessing traffic according to a 
schedule:
 l The link speed of the wan1 interface is 10 Mb/s. 
 l File access can use up to 2 Mb/s from 8:00 AM to 6:00 PM.
 l Web access can use 8 Mb/s from 8:00 AM to 6:00 PM.

Putting the traffic into shaping classes

To create a recurring schedule in the GUI:

 1. Go to Policy & Objects > Schedules.


 2. Click Create New > Schedule.

FortiOS 6.4.6 Administration Guide 1096


Fortinet Technologies Inc.
Policy and Objects

 3. Configure a recurring schedule called Day_Hours for everyday from 8:00 AM to 6:00 PM.
 4. Click OK.

To create a traffic shaping policy and class ID for the web accessing traffic in the GUI:

 1. Go to Policy & Objects > Traffic Shaping Policy and click Create New.


 2. Enter a name for the policy, such as web_access_day_hours.
 3. Enable Schedule and select the schedule you just created.
 4. Set Service to web accessing services, such as HTTP and HTTPS.
 5. Set Action to Assign Shaping Class ID, and Outgoing interface to wan1
 6. Click the Traffic shapping class ID drop down then click Create.
 7. Enter a value for the ID (integer) and a description for the Name, such as Web Access.

 8. Click OK.
 9. Set Traffic shaping class ID to the just created class ID.

 10. Configure the remaining settings as required.
 11. Click OK.

To create a traffic shaping policy and class ID for the file accessing traffic in the GUI:

 1. Go to Policy & Objects > Traffic Shaping Policy and click Create New.


 2. Enter a name for the policy, such as file_access_day_hours.
 3. Enable Schedule and select the schedule you just created.
 4. Set Service to file accessing services, such as ASF3, FTP and SMB.
 5. Set Action to Assign Shaping Class ID, and Outgoing interface to wan1
 6. Click the Traffic shapping class ID drop down then click Create.

FortiOS 6.4.6 Administration Guide 1097


Fortinet Technologies Inc.
Policy and Objects

 7. Enter a value for the ID (integer) and a description for the Name, such as File Access.

 8. Click OK.
 9. Set Traffic shaping class ID to the just created class ID.

 10. Configure the remaining settings as required.
 11. Click OK.

To put the traffic into shaping classes in the CLI:

 1. Create a recurring schedule:
config firewall schedule recurring
edit "Day_Hours"
set start 08:00
set end 18:00
set day sunday monday tuesday wednesday thursday friday saturday
next
end

 2. Create the traffic class IDs:
config firewall traffic-class
edit 3
set class-name "Web Access"
next
edit 4
set class-name "File Access"
next
end

FortiOS 6.4.6 Administration Guide 1098


Fortinet Technologies Inc.
Policy and Objects

 3. Create the web and file accessing traffic shaping policies:
config firewall shaping-policy
edit 2
set name "web_access_day_hours"
set comment "Limit web accessing traffic to 8Mb/s in day time"
set service "HTTP" "HTTPS"
set schedule "Day_Hours"
set dstintf "wan1"
set class-id 3
set srcaddr "all"
set dstaddr "all"
next
edit 3
set name "file_access_day_hours"
set comment "Limit file accessing traffic to 2Mb/s during the day"
set service "AFS3" "FTP" "FTP_GET" "FTP_PUT" "NFS" "SAMBA" "SMB" "TFTP"
set schedule "Day_Hours"
set dstintf "wan1"
set class-id 4
set srcaddr "all"
set dstaddr "all"
next
end

Allocating bandwidth to the shaping classes

A traffic shaping profile defines the guaranteed and maximum bandwidths each class receives. In this example, file 
access can use up to 2 Mb/s and web access can use 8 Mb/s from 8:00 AM to 6:00 PM.

To create a traffic shaping profile using the GUI:

 1. Go to Policy & Objects > Traffic Shaping Profile and click Create New.


 2. Enter a name for the profile, such as Day_Hours_Profile.
 3. Configure a default traffic shaping class:
This class has a high priority, meaning that when the other classes have reached their guaranteed bandwidths, this 
default class will use the rest of the available bandwidth.
 a. In the Traffic Shaping Classes table click Create New.
 b. Click the Traffic shapping class ID drop down then click Create.
 c. Enter a name for the class, such as Default Access.

 d. Click OK.
 e. Set Traffic shaping class ID to the just created class ID.

FortiOS 6.4.6 Administration Guide 1099


Fortinet Technologies Inc.
Policy and Objects

 f. Configure the following settings, then click OK:

Guaranteed bandwidth 30

Maximum bandwidth 100

Priority High

 4. Configure a web accessing traffic shaping class:
When other types of traffic are competing for bandwidth, this class is guaranteed to 6 Mb/s, or 60% of the 
bandwidth.
 a. In the Traffic Shaping Classes table click Create New.
 b. Configure the following settings, then click OK:

Traffic shaping class ID Web Access

Guaranteed bandwidth 60

Maximum bandwidth 80

Priority High

 5. Configure a file accessing traffic shaping class:
When other types of traffic are competing for bandwidth, this group is guaranteed to 1 Mb/s, or 10% of the 
bandwidth.
 a. In the Traffic Shaping Classes table click Create New.
 b. Configure the following settings, then click OK:

Traffic shaping class ID File Access

Guaranteed bandwidth 10

Maximum bandwidth 20

Priority High

FortiOS 6.4.6 Administration Guide 1100


Fortinet Technologies Inc.
Policy and Objects

 6. Click OK.

To create a traffic shaping profile using the CLI:

config firewall shaping-profile


edit "Day_Hours_Profile"
set default-class-id 2
config shaping-entries
edit 1
set class-id 2
set guaranteed-bandwidth-percentage 30
set maximum-bandwidth-percentage 100
next
edit 2
set class-id 3
set priority medium
set guaranteed-bandwidth-percentage 60
set maximum-bandwidth-percentage 80
next
edit 3
set class-id 4
set priority medium
set guaranteed-bandwidth-percentage 10
set maximum-bandwidth-percentage 20
next
end

FortiOS 6.4.6 Administration Guide 1101


Fortinet Technologies Inc.
Policy and Objects

next
end

Defining the available bandwidth on an interface

In this example, the link speed of the wan1 interface is 10 Mb/s. 

To set the bandwidth of the wan1 interface in the GUI:

 1. Go to Network > Interfaces.


 2. Edit the wan1 interface.
 3. Under Traffic Shaping, enable Outbound shaping profile and select the profile that you just created, Day_Hours_
Profile.
 4. Enable Outbound Bandwidth and set it to 10000 Kbps.

 5. Click OK.

To set the bandwidth of the wan1 interface in the CLI:

config system interface


edit "wan1"
....
set egress-shaping-profile "Day_Hours_Profile"
set outbandwidth 10000
....
next
end

Diagnose commands

To check that the specific traffic is put into the correct shaping group or class ID:

# diagnose firewall iprope list 100015

To check the speed limit for each class ID on an interface:

# diagnose netlink interface list wan1

FortiOS 6.4.6 Administration Guide 1102


Fortinet Technologies Inc.
Policy and Objects

Interface-based traffic shaping with NP acceleration

Interface-based traffic shaping with NP acceleration is supported on some devices.
An administrator configures the WAN interface's maximum outbound bandwidth and, based on that, creates a traffic 
shaping profile with a percentage based shaper. This allows for proper QoS and traffic shaping. VLAN interfaces are not 
supported.

This feature is supported on FortiGate 600E, 500E, and 300E models.

To configure interface-based traffic shaping:

 1. Enable NPU offloading when doing interface-based traffic shaping according to the egress-shaping-profile:
config system npu
set intf-shaping-offload enable
end

 2. Configure shaping profiles:
config firewall shaping-profile
edit "sdwan"
set default-class-id 4
config shaping-entries
edit 1
set class-id 4
set guaranteed-bandwidth-percentage 3
set maximum-bandwidth-percentage 5
next
edit 2
set class-id 3
set priority medium
set guaranteed-bandwidth-percentage 50
set maximum-bandwidth-percentage 100
next
edit 3
set class-id 2
set priority low
set guaranteed-bandwidth-percentage 1
set maximum-bandwidth-percentage 5
next
end
next
end

The class number is limited to 16.
 3. Configure a traffic shaper and shaping policy:
config firewall shaper traffic-shaper
edit "Transactional"
set priority medium
next
end

FortiOS 6.4.6 Administration Guide 1103


Fortinet Technologies Inc.
Policy and Objects

config firewall shaping-policy


edit 1
set service "ALL"
set dstintf "any"
set traffic-shaper "Transactional"
set class-id 3
set srcaddr "all"
set dstaddr "all"
next
end

 4. Apply the egress shaping profile on the interface:
config system interface
edit "port2"
set vdom "root"
set ip 10.1.100.23 255.255.255.0
set allowaccess ping
set type physical
set outbandwidth 500
set egress-shaping-profile "sdwan"
set snmp-index 4
next
end

 5. Configure a firewall policy:
config firewall policy
edit 3
set srcintf "port2"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set nat enable
next
end

Classifying traffic by source interface

In firewall shaping policies, you can classify traffic by source interface with the following command:
config firewall shaping-policy
edit 1
set srcintf <interface_name>
......
next
end

FortiOS 6.4.6 Administration Guide 1104


Fortinet Technologies Inc.
Policy and Objects

Sample configuration

For this example, there are two shaping policies:
 l Policy 1 is for traffic from the Office to the Server, with the speed limited to 5 MB/s.
 l Policy 2 is for traffic from the Lab to the Server, with the speed limited to 1 MB/s.

To configure the traffic shaping policy:

config firewall shaping-policy


edit 1
set name "Office_Speed_5MB"
set service "ALL"
set srcintf "port13"
set dstintf "port9"
set traffic-shaper "5MB/s"
set traffic-shaper-reverse "5MB/s"
set srcaddr "all"
set dstaddr "all"
next
edit 2
set name "Lab_Speed_1MB"
set service "ALL"
set srcintf "port10"
set dstintf "port9"
set traffic-shaper "1MB/s"
set traffic-shaper-reverse "1MB/s"
set srcaddr "all"
set dstaddr "all"
next
end

Configuring traffic class IDs

As of FortiOS 6.2.2, you can configure traffic class IDs with a descriptive name in  the GUI or CLI. Class IDs can help you 
correlate traffic shaping policy and profile entries.

GUI configurations

Within the GUI, there are three locations to configure the traffic class ID:

FortiOS 6.4.6 Administration Guide 1105


Fortinet Technologies Inc.
Policy and Objects

 l Traffic shaping policy
 l Traffic shaping profile
 l Interface

Assign Shaping Class ID replaces the Assign Group functionality in earlier versions of 


FortiOS.

To configure the traffic class ID in a traffic shaping policy:

 1. Go to Policy & Objects > Traffic Shaping Policy.


 2. Edit an existing policy, or create a new one.
 3. In the Then: Action section, click Assign Shaping Class ID.
 4. In Traffic shaping class ID, click Create.
 5. Enter a value for the ID (integer) and a description for the Name. 
 6. Click OK to save the class ID.

 7. Configure the rest of the policy as needed.
 8. Click OK to save the policy.

To configure the traffic class ID in a traffic shaping profile:

 1. Go to Policy & Objects > Traffic Shaping Profile.


 2. Edit an existing profile, or create a new one.
 3. In the Traffic Shaping Classes section, click Create New. The Select Traffic Shaping Class ID window opens.
 4. Click Create. The New Traffic Shaping Class ID window opens.
 5. Enter a value for the ID (integer) and a description for the Name. 

FortiOS 6.4.6 Administration Guide 1106


Fortinet Technologies Inc.
Policy and Objects

 6. Click OK to save the class ID.

 7. Click OK to add the class ID.
 8. Configure the rest of the profile as needed.
 9. Click OK to save the profile.

To configure the traffic class ID in an interface:

 1. Go to Network > Interfaces.


 2. Edit an existing interface, or create a new one.
 3. In the Traffic Shaping section, enable Outbound shaping profile and Outbound Bandwidth.
 4. Click Create. The Create Traffic Shaping Profile window opens.
 5. Click Create New. The Select Traffic Shaping Class ID window opens.
 6. Select an existing class ID, or create a new one. 
 7. Click OK to save the class ID. 

 8. Click OK to add the class ID .

FortiOS 6.4.6 Administration Guide 1107


Fortinet Technologies Inc.
Policy and Objects

 9. Configure the rest of the interface as needed.
 10. Click OK to save the interface.

CLI configuration

To configure the traffic class ID in the CLI:

config firewall traffic-class


edit 2
set class-name "High priority voice."
next
...
end

Traffic shaping schedules

In a shaping policy, there are many matching criteria available for administrators to match a specific traffic and apply a 
traffic shaper or shaping group to the traffic, including using schedules. This feature gives shaping policy the ability to 
apply different shaping profiles at different times. Administrators can select a one-time schedule, recurring schedule, or 
schedule group. 
Schedule is not a mandatory setting. If it is not set, then the current date and time are not used to match the traffic.

To configure a traffic shaping policy in the GUI:

 1. Navigate to Policy & Objects > Traffic Shaping Policy.


 2. Create or edit a Traffic Shaping Policy.
 3. Enable Schedule and select a schedule option.

FortiOS 6.4.6 Administration Guide 1108


Fortinet Technologies Inc.
Policy and Objects

 4. Configure other options and click OK.

To configure a traffic shaping policy in the CLI:

config firewall schedule recurring


edit "work-hours"
set start 07:00
set end 20:00
set day monday tuesday wednesday thursday friday
next
end

config firewall shaping-policy


edit 1
set name "demo"
set service "ALL"
set schedule "work-hours" <<< Can select schedule from one-time schedule, recurring
schedule or schedule group
set dstintf "port1"
set traffic-shaper "high-priority"
set traffic-shaper-reverse "high-priority"
set srcaddr "all"
set dstaddr "all"
next
end

To troubleshoot a traffic shaping policy in the CLI:

The selected schedule is listed in the iprope.
diagnose firewall iprope list 100015

policy index=1 uuid_idx=0 action=accept


flag (0):
schedule(work-hours)
shapers: orig=high-priority(2/0/134217728) reply=high-priority(2/0/134217728)
cos_fwd=0 cos_rev=0
group=00100015 av=00000000 au=00000000 split=00000000
host=1 chk_client_info=0x0 app_list=0 ips_view=0
misc=0 dd_type=0 dd_mode=0
zone(1): 0 -> zone(1): 9
source(1): 0.0.0.0-255.255.255.255, uuid_idx=28,
dest(1): 0.0.0.0-255.255.255.255, uuid_idx=28,
service(1):
[0:0x0:0/(0,65535)->(0,65535)] helper:auto

DSCP matching (shaping)

This feature has three parts:
 l DSCP matching in firewall policies
 l DSCP matching in firewall shaping policies
 l DSCP marking in firewall shaping policies

FortiOS 6.4.6 Administration Guide 1109


Fortinet Technologies Inc.
Policy and Objects

DSCP matching in firewall policies

Traffic is allowed or blocked according to the Differentiated Services Code Point (DSCP) values in the incoming packets.
The following CLI variables are available in the config firewall policy command:

tos-mask <mask_value> Non-zero bit positions are used for comparison. Zero bit positions are ignored 


(default = 0x00).
This variable replaces the dscp-match variable.
tos <tos_value> Type of Service (ToC) value that is used for comparison (default = 0x00). This 
variable is only available when tos-mask is not zero.
This variable replaces the dscp-value variable.
tos-negate {enable | Enable/disable negated ToS match (default = disable). This variable is only 
disable} available when tos-mask is not zero.
This variable replaces the dscp-negate variable.

DSCP matching in firewall shaping policies

Shaping is applied to the session or not according to the DSCP values in the incoming packets. The same logic and 
commands as in firewall policies are used.

DSCP marking in firewall shaping policies

Traffic is allowed or blocked according to the DSCP values in the incoming packets. DSCP marking in firewall shaping 
policies uses the same logic and commands as in firewall policy and traffic-shaper.
When DSCP marking on firewall shaper traffic-shaper, firewall shaping-policy, and firewall
policy all apply to the same session, shaping-policy overrides policy, and shaper traffic-shaper 
overrides both shaping-policy and policy.
The following CLI variables in config firewall policy are used to mark the packets:

diffserv-forward {enable Enable/disable changing a packet's DiffServ values to the value specified in 


| disable} diffservcode-forward (default = disable).
diffservcode-forward The value that packet's DiffServ is set to (default = 000000). This variable is only 
<dscp_value> available when diffserv-forward is enabled.
diffserv-reverse {enable Enable/disable changing a packet's reverse (reply) DiffServ values to the value 
| disable} specified in diffservcode-rev (default = disable).
diffservcode-rev <dscp_ The value that packet's reverse (reply) DiffServ is set to (default = 000000). This 
value> variable is only available when diffserv-rev is enabled.

FortiOS 6.4.6 Administration Guide 1110


Fortinet Technologies Inc.
Policy and Objects

Examples

Example 1

FortiGate A marks traffic from the sales and QA teams with different DSCP values. FortiGate B does DSCP matching, 
allowing only the sales team to access the database.
 1. Configure FortiGate A:
config firewall policy
edit 1
set srcintf "port2"
set dstintf "port3"
set srcaddr "QA"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set diffserv-forward enable
set diffservcode-forward 110000
set nat enable
next
edit 5
set srcintf "port2"
set dstintf "port3"
set srcaddr "Sales"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set diffserv-forward enable
set diffservcode-forward 111011
set nat enable
next
end

 2. Configure FortiGate B:   
config firewall policy
edit 2
set srcintf "port3"
set dstintf "port1"
set srcaddr "all"
set dstaddr "Database"
set action accept
set schedule "always"
set service "ALL"
set tos-mask 0xf0

FortiOS 6.4.6 Administration Guide 1111


Fortinet Technologies Inc.
Policy and Objects

set tos 0xe0


set fsso disable
set nat enable
next
end

Example 2

FortiGate A marks traffic from the sales and QA teams with different DSCP values. FortiGate B uses a firewall shaping 
policy to do the DSCP matching, limiting the connection speed of the sales team to the database to 10MB/s.
 1. Configure FortiGate A:
config firewall policy
edit 1
set srcintf "port2"
set dstintf "port3"
set srcaddr "QA"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set diffserv-forward enable
set diffservcode-forward 110000
set nat enable
next
edit 5
set srcintf "port2"
set dstintf "port3"
set srcaddr "Sales"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set diffserv-forward enable
set diffservcode-forward 111011
set nat enable
next
end

 2. Configure FortiGate B:   
config firewall policy
edit 2
set srcintf "port3"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end
config firewall shaper traffic-shaper
edit "10MB/s"
set guaranteed-bandwidth 60000

FortiOS 6.4.6 Administration Guide 1112


Fortinet Technologies Inc.
Policy and Objects

set maximum-bandwidth 80000


next
end
config firewall shaping-policy
edit 1
set service "ALL"
set dstintf "port1"
set tos-mask 0xf0
set tos 0xe0
set traffic-shaper "10MB/s"
set srcaddr "all"
set dstaddr "all"
next
end

Example 3

FortiGate A has a traffic shaping policy to mark traffic from the QA team with a DSCP value of 100000, while reverse 
traffic is marked with 000011.
 1. Configure FortiGate A:
config firewall shaping-policy
edit 1
set name "QA Team 50MB"
set service "ALL"
set dstintf "port3"
set traffic-shaper "50MB/s"
set traffic-shaper-reverse "50MB/s"
set diffserv-forward enable
set diffserv-reverse enable
set srcaddr "QA"
set dstaddr "all"
set diffservcode-forward 100000
set diffservcode-rev 000011
next
end

QoS assignment and rate limiting for quarantined VLANs

When devices are quarantined, they are isolated from the rest of the network. However, they can still impact the network 
if not controlled beyond isolation. A quarantined host, which offers heavy traffic, could congest the network and create a 
DOS-style reduction in service to authorized hosts.
Within the quarantined VLAN, two restrictions are available within the network:
 l Traffic policing (also known as rate limiting)
 l QoS (Quality of Service) assignment (also known as priority assignment)
Each quarantined host's traffic can be subject to rate limiting and priority adjustment. This reduces the impact that any 
quarantined host can have on authorized traffic on the network.

FortiOS 6.4.6 Administration Guide 1113


Fortinet Technologies Inc.
Policy and Objects

To configure QoS assignment and rate limiting for quarantined VLANs:

 1. Configure a traffic policy, or use the default "quarantine" policy:
config switch-controller traffic-policy
edit "quarantine"
set description "Rate control for quarantined traffic"
set guaranteed-bandwidth 163840
set guaranteed-burst 8192
set maximum-burst 163840
set cos-queue 0
next
end

 2. Configure an interface:
config system interface
edit "qtn.aggr1"
set vdom "root"
set ip 10.254.254.254 255.255.255.0
set description "Quarantine VLAN"
set security-mode captive-portal
set replacemsg-override-group "auth-intf-qtn.aggr1"
set device-identification enable
set snmp-index 30
set switch-controller-access-vlan enable
set switch-controller-traffic-policy "quarantine"
set color 6
set interface "aggr1"
set vlanid 4093
next
end

By default, switch-controller-traffic-policy is empty. You need to apply the necessary traffic policy (not 
only limited to "quarantine").

Weighted random early detection queuing

You can use the weighted random early detection (WRED) queuing function within traffic shaping.
This topic includes three parts:
 l Traffic shaping with queuing on page 1115
 l Burst control in queuing mode on page 1116
 l Multi-stage DSCP marking and class ID in traffic shapers on page 1116
You cannot configure or view WRED in the GUI; you must use the CLI.

WRED is not supported when traffic is offloaded to an NPU.

FortiOS 6.4.6 Administration Guide 1114


Fortinet Technologies Inc.
Policy and Objects

Traffic shaping with queuing

Traffic shaping has a queuing option. Use this option to fine-tune the queue by setting the profile queue size or 
performing random early drop (RED) according to queue usage.
This example shows setting the profile queue size limit to 5 so that the queue can contain a maximum of five packets and 
more packets are dropped.

To set the profile queue size limit:

config firewall shaping-profile


edit "profile"
set type queuing
set default-class-id 31
config shaping-entries
edit 31
set class-id 31
set guaranteed-bandwidth-percentage 5
set maximum-bandwidth-percentage 10
set limit 5 <range from 5 to 10000; default: 1000>
next
end
next
end

This example shows performing RED  according to queue usage by setting red-probability, min, and max. Setting 
red-probability to 10 means start to drop packets when queue usage reaches the min setting. When queue usage 
reaches the max setting, drop 10% of the packets.
 l Level 1: when queue is less than min packets, drop 0% of packets.
 l Level 2: when queue reaches min packets, start to drop packets.
 l Level 3: when queue usage is between min and max packets, drop 0–10% of packets by proportion.
 l Level 4: when queue (average queue size) is more than max packets, drop 100% of packets.

To set RED according to queue usage:

config firewall shaping-profile


edit "profile"
set type queuing
set default-class-id 31
config shaping-entries
edit 31
set class-id 31
set guaranteed-bandwidth-percentage 5
set maximum-bandwidth-percentage 10
set red-probability 10 <range from 0 to 20; default: 0 no drop>
set min 100 <range from 3 to 3000>
set max 300 <range from 3 to 3000>
next
end
next
end

FortiOS 6.4.6 Administration Guide 1115


Fortinet Technologies Inc.
Policy and Objects

To troubleshoot this function, use the following diagnose commands:

diagnose netlink intf-class list <intf>


diagnose netlink intf-qdisc list <intf>

Burst control in queuing mode

In a hierarchical token bucket (HTB) algorithm, each traffic class has buckets to allow a burst of traffic. The maximum 
burst is determined by the bucket size burst (for guaranteed bandwidth) and cburst (for maximum bandwidth). The 
shaping profile has burst-in-msec and cburst-in-msec parameters for each shaping entry (class id) to control 
the bucket size.
This example uses the outbandwidth of the interface as 1 Mbps and the maximum bandwidth of class is 50%.
burst = burst-in-msec * guaranteed bandwidth = 100 ms × 1 Mbps x 50% = 50000 b = 6250 B
cburst = cburst-in-msec * maximum bandwidth = 200 ms × 1 Mbps x 50% = 100000 b = 12500 B
The following example sets burst-in-msec to 100 and cburst-in-msec to 200.

To set burst control in queuing mode:

config firewall shaping-profile


edit "profile"
set type queuing
set default-class-id 31
config shaping-entries
edit 31
set class-id 31
set guaranteed-bandwidth-percentage 5
set maximum-bandwidth-percentage 50
set burst-in-msec 100 <range from 0 to 2000>
set cburst-in-msec 200 <range from 0 to 2000>
next
end
next
end

Multi-stage DSCP marking and class ID in traffic shapers

Traffic shapers have a multi-stage method so that packets are marked with a different differentiated services code point 
(DSCP) and class id at different traffic speeds. Marking packets with a different DSCP code is for the next hop to 
classify the packets. The FortiGate benefits by marking packets with a different class id. Combined with the egress 
interface shaping profile, the FortiGate can handle the traffic differently according to its class id.

Rule DSCP code Class ID

speed < guarantee bandwidth diffservcode class id in shaping policy

guarantee bandwidth < speed < exceed bandwidth exceed-dscp exceed-class-id

exceed bandwidth < speed maximum-dscp exceed-class-id

FortiOS 6.4.6 Administration Guide 1116


Fortinet Technologies Inc.
Policy and Objects

This example sets the following parameters:
 l When the current bandwidth is less than 50 Kbps, mark packets with diffservcode 100000 and set class id to 
10.
 l When the current bandwidth is between 50 Kbps and 100 Kbps, mark packets with exceed-dscp 111000 and set 
exceed-class-id to 20.
 l When the current bandwidth is more than 100 Kbps, mark packets with maximum-dscp 111111 and set exceed-
class-id to 20.

To set multi-stage DSCP marking and class ID in a traffic shaper:

config firewall shaper traffic-shaper


edit "50k-100k-150k"
set guaranteed-bandwidth 50
set maximum-bandwidth 150
set diffserv enable
set dscp-marking-method multi-stage
set exceed-bandwidth 100
set exceed-dscp 111000
set exceed-class-id 20
set maximum-dscp 111111
set diffservcode 100000
next
end
config firewall shaping-policy
edit 1
set service "ALL"
set dstintf PORT2
set srcaddr "all"
set dstaddr "all"
set class-id 10
next
end

Traffic shapers also have an overhead option that defines the per-packet size overhead used in rate computation.

To set the traffic shaper overhead option:

config firewall shaper traffic-shaper


edit "testing"
set guaranteed-bandwidth 50
set maximum-bandwidth 150
set overhead 14 <range from 0 to 100>
next
end

FortiOS 6.4.6 Administration Guide 1117


Fortinet Technologies Inc.
Policy and Objects

Examples

Enabling RED for FTP traffic from QA

This first example shows how to enable RED for FTP traffic from QA. This example sets a maximum of 10% of the 
packets to be dropped when queue usage reaches the maximum value.

To configure the firewall address:

config firewall address


edit QA_team
set subnet 10.1.100.0/24
next
end

To set the shaping policy to classify traffic into different class IDs:

config firewall shaping-policy


edit 1
set service HTTPS HTTP
set dstintf port1
set srcaddr QA_team
set dstaddr all
set class-id 10
next
edit 2
set service FTP
set dstintf port1
set srcaddr QA_team
set dstaddr all
set class-id 20
next
end

To set the shaping policy to define the speed of each class ID:

config firewall shaping-profile


edit QA_team_profile
set type queuing
set default-class-id 30
config shaping-entries
edit 1
set class-id 10
set guaranteed-bandwidth-percentage 50
set maximum-bandwidth-percentage 100
next
edit 2
set class-id 20
set guaranteed-bandwidth-percentage 30
set maximum-bandwidth-percentage 60
set red-probability 10
next
edit 3
set class-id 30
set guaranteed-bandwidth-percentage 20

FortiOS 6.4.6 Administration Guide 1118


Fortinet Technologies Inc.
Policy and Objects

set maximum-bandwidth-percentage 50
next
end
next
end

To apply the shaping policy to the interface:

config sys interface


edit port1
set outbandwidth 10000
set egress-shaping-profile QA_team_profile
next
end

To use diagnose commands to troubleshoot:

# diagnose netlink intf-class list port1


class htb 1:1 root rate 1250000Bps ceil 1250000Bps burst 1600B/8 mpu 0B overhead 0B cburst
1600B/8 mpu 0B overhead 0B level 7 buffer [00004e20] cbuffer [00004e20]
Sent 11709 bytes 69 pkt (dropped 0, overlimits 0 requeues 0)
rate 226Bps 2pps backlog 0B 0p
lended: 3 borrowed: 0 giants: 0
tokens: 18500 ctokens: 18500
class htb 1:10 parent 1:1 leaf 10: prio 1 quantum 62500 rate 625000Bps ceil 1250000Bps burst
1600B/8 mpu 0B overhead 0B cburst 1600B/8 mpu 0B overhead 0B level 0 buffer [00009c40]
cbuffer [00004e20]
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0Bps 0pps backlog 0B 0p
lended: 0 borrowed: 0 giants: 0
tokens: 40000 ctokens: 20000
class htb 1:20 parent 1:1 leaf 20: prio 1 quantum 37500 rate 375000Bps ceil 750000Bps burst
1599B/8 mpu 0B overhead 0B cburst 1599B/8 mpu 0B overhead 0B level 0 buffer [0001046a]
cbuffer [00008235]
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0Bps 0pps backlog 0B 0p
lended: 0 borrowed: 0 giants: 0
tokens: 66666 ctokens: 33333
class htb 1:30 parent 1:1 leaf 30: prio 1 quantum 25000 rate 250000Bps ceil 625000Bps burst
1600B/8 mpu 0B overhead 0B cburst 1600B/8 mpu 0B overhead 0B level 0 buffer [000186a0]
cbuffer [00009c40]
Sent 11709 bytes 69 pkt (dropped 0, overlimits 0 requeues 0)
rate 226Bps 2pps backlog 0B 0p
lended: 66 borrowed: 3 giants: 0
tokens: 92500 ctokens: 37000
class red 20:1 parent 20:0
# diagnose netlink intf-qdisc list port1
qdisc htb 1: root refcnt 5 r2q 10 default 30 direct_packets_stat 0 ver 3.17
Sent 18874 bytes 109 pkt (dropped 0, overlimits 5 requeues 0)
backlog 0B 0p
qdisc pfifo 10: parent 1:10 refcnt 1 limit 1000p
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0B 0p
qdisc red 20: parent 1:20 refcnt 1 limit 4000000B min 300000B max 1000000B ewma 9 Plog 23
Scell_log 20 flags 0

FortiOS 6.4.6 Administration Guide 1119


Fortinet Technologies Inc.
Policy and Objects

Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)


backlog 0B 0p
marked 0 early 0 pdrop 0 other 0
qdisc pfifo 30: parent 1:30 refcnt 1 limit 1000p
Sent 18874 bytes 109 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0B 0p

Marking QA traffic with a different DSCP

This second example shows how to mark QA traffic with a different DSCP according to real-time traffic speed.

To configure the firewall address:

config firewall address


edit QA_team
set subnet 10.1.100.0/24
next
end

To configure the firewall shaper traffic shaper:

config firewall shaper traffic-shaper


edit "500k-1000k-1500k"
set guaranteed-bandwidth 500
set maximum-bandwidth 1500
set diffserv enable
set dscp-marking-method multi-stage
set exceed-bandwidth 1000
set exceed-dscp 111000
set maximum-dscp 111111
set diffservcode 100000
next
end
config firewall shaping-policy
edit QA_team
set service "ALL"
set dstintf port1
set traffic-shaper "500k-1000k-1500k"
set traffic-shaper-reverse "500k-1000k-1500k"
set srcaddr "QA_team"
set dstaddr "all"
next
end

FortiOS 6.4.6 Administration Guide 1120


Fortinet Technologies Inc.
Security Profiles

This section contains information about configuring FortiGate security features, including:
 l Inspection modes on page 1121
 l Antivirus on page 1126
 l Web filter on page 1154
 l DNS filter on page 1185
 l Application control on page 1206
 l Intrusion prevention on page 1218
 l File filter on page 1227
 l Email filter on page 1233
 l Data leak prevention on page 1240
 l VoIP solutions on page 1248
 l ICAP on page 1259
 l Web application firewall on page 1265
 l SSL & SSH Inspection on page 1269
 l Custom signatures on page 1279
 l Overrides on page 1284

If you are unable to view a security profile feature, go to System > Feature Visibility to enable 


it.

Inspection modes

FortiOS supports flow-based and proxy-based inspection in firewall policies. You can select the inspection mode when 
configuring a policy.
Flow-based inspection takes a snapshot of content packets and uses pattern matching to identify security threats in the 
content.
Proxy-based inspection reconstructs content that passes through the FortiGate and inspects the content for security 
threats.
Certain security profiles allows users to display flow-based or froxy-based feature sets.
This following topics provide information about inspection modes for various security profile features: 
 l Flow mode inspection (default mode) on page 1122
 l Proxy mode inspection on page 1122
 l Inspection mode feature comparison on page 1124

FortiOS 6.4.6 Administration Guide 1121


Fortinet Technologies Inc.
Security Profiles

Flow mode inspection (default mode)

When a firewall policy's inspection mode is set to flow, traffic flowing through the policy will not be buffered by the 
FortiGate. Unlike proxy mode, the content payload passing through the policy will be inspected on a packet by packet 
basis with the very last packet held by the FortiGate until the scan returns a verdict. If a violation is detected in the traffic, 
a reset packet is issued to the receiver, which terminates the connection, and prevents the payload from being sent 
successfully.
Flow-based inspection identifies and blocks security threats in real time as they are identified. All applicable flow-based 
security modules are applied simultaneously in one single pass, using Direct Filter Approach (DFA) pattern matching to 
identify possible attacks or threats. Pattern matching is offloaded and accelerated by CP8 or CP9 processors.
Flow-based inspection typically requires lower processing resources than proxy-based inspection and does not change 
packets, unless a threat is found and packets are blocked.

Use case

It is recommended to apply flow inspection to policies that prioritize traffic throughput, such as allowing connections to a 
streaming or file server.
For example, you have an application server that accepts connections from users for a daily quiz show app, HQ. Each 
HQ session sees 500,000+ participants, and speed is very important because participants have less than 10 seconds to 
answer the quiz show questions.

In this scenario, a flow inspection policy is recommended to prioritize throughput. The success of the application 
depends on providing reliable service for large numbers of concurrent users. The policy would include an IPS sensor to 
protect the server from external DOS attacks.

Proxy mode inspection

When a firewall policy’s inspection mode is set to proxy, traffic flowing through the policy will be buffered by the FortiGate 
for inspection. This means that the packets for a file, email message, or web page will be held by the FortiGate until the 
entire payload is inspected for violations (virus, spam, or malicious web links). After FortiOS finishes the inspection, the 
payload is either released to the destination (if the traffic is clean) or dropped and replaced with a replacement message 
(if the traffic contains violations).
To optimize inspection, the policy can be configured to block or ignore files or messages that exceed a certain size. To 
prevent the receiving end user from timing out, you can apply client comforting. This allows small portions of the payload 
to be sent while it is undergoing inspection.
Proxy mode provides the most thorough inspection of the traffic; however, its thoroughness sacrifices performance, 
making its throughput slower than that of a flow mode policy. Under normal traffic circumstances, the throughput 
difference between a proxy-based and flow-based policy is not significant.

FortiOS 6.4.6 Administration Guide 1122


Fortinet Technologies Inc.
Security Profiles

Use case 1

Your organization deals with sensitive data on a regular basis and a data leak would significantly harm your business. At 
the same time, you wish to protect your employees from malicious content, such as viruses and phishing emails, which 
could be used to gain access to your network and the sensitive data on your systems.

In this scenario, a proxy inspection policy is recommended to prioritize network security. You want traffic inspection to be 
as thorough as possible to avoid any data leaks from exiting the LAN and any malicious content from entering it. The 
policy would include antivirus, DLP, web, and email filters all operating in proxy mode.

Use case 2

You have a corporate mail server in your domain that is used by your employees for everyday business activities. You 
want to protect your employees from phishing emails and viruses. At the same time, you want to also protect your web 
servers from external attacks.

In this scenario, a proxy inspection policy is recommended to prioritize the safety of employee emails. Applying the 
antivirus and email filter in this mode allows you to filter out any malware and spam emails received by the mail servers 
via SMTP or MAPI. An IPS sensor would be used to prevent DOS attacks on the mail servers.

FortiOS 6.4.6 Administration Guide 1123


Fortinet Technologies Inc.
Security Profiles

Inspection mode feature comparison

The following table shows which UTM profile can be configured on a flow mode or proxy mode inspection policy.
Some UTM profiles are hidden in the GUI and can only be configured using the CLI. To configure profiles in a firewall 
policy in CLI, enable the utm-status setting.
Some profiles might have feature differences between flow-based  and proxy-based Inspection. From the GUI and CLI, 
you can set the Feature set option to be Flow-based or Proxy-based to display only the settings for that mode. 

Flow Mode Inspection Policy Proxy Mode Inspection Policy Feature


set
UTM Profile GUI CLI GUI CLI option

AntiVirus Yes Yes Yes Yes GUI/CLI

Web Filter Yes Yes Yes Yes GUI/CLI

DNS Filter Yes Yes Yes Yes N/A

Application Control Yes Yes Yes Yes N/A

Intrusion Prevention System Yes Yes Yes Yes N/A

File Filter Yes Yes Yes Yes GUI/CLI

Email Filter Yes Yes Yes Yes GUI/CLI

Data Leak Prevention No Yes No Yes CLI

VoIP Yes Yes Yes Yes N/A

ICAP No No Yes Yes N/A

Web Application Firewall No No Yes Yes N/A

SSL/SSH Inspection Yes Yes Yes Yes N/A

The following sections outline differences between flow-based and proxy-based inspection for a security profile.

Feature comparison between AntiVirus inspection modes

The following table indicates which AntiVirus features are supported by their designated scan modes.

Part1 Replacement Content Mobile Virus Sandbox NAC


Message Disarm Malware Outbreak Inspection Quarantine

Proxy Yes Yes Yes Yes Yes Yes

Flow (hybrid  Yes* No Yes Limited Yes Yes


scan)

*IPS Engine caches the URL and a replacement message is presented after the second attempt.

FortiOS 6.4.6 Administration Guide 1124


Fortinet Technologies Inc.
Security Profiles

Part 2 Archive Emulator Client Infection Heuristics Treat


Blocking Comforting Quarantine EXE as
Virus

Proxy Yes Yes Yes Yes (1) Yes Yes (2)

Flow (hybrid scan) Yes Yes No Limited Yes Yes (2)

 1. Only available on FortiGate models with HDD or when FortiAnalyzer or FortiGate Cloud is connected and enabled.
 2. Only applies to inspection on IMAP, POP3, SMTP, and MAPI protocols.

Feature comparison between Web Filter inspection modes

The following table indicates which Web Filter features are supported by their designated inspection modes.

FortiGuard Category Override Search Static Rating Proxy Web


Category- Usage Blocked Engines URL Filter Option Option Profile
Based Quota Categories Override
Filter

Proxy Yes Yes Yes Yes Yes Yes Yes Yes

Flow Yes (1) No Yes (2) No Yes Yes Limited  No


(3)

 1. Local Category and Remote Category filters do not support the warning and authenticate actions.
 2. Local Category and Remote Category filters cannot be overridden.
 3. Only HTTP POST Action is supported.

Feature comparison between Email Filter inspection modes

The following tables indicate which Email Filters are supported by the specified inspection modes for local filtering and 
FortiGuard-assisted filtering.

Local Filtering Banned Block/Allow HELO/ EHLO Return DNSBL/ MIME


Word List DNS Check Address ORBL Header
Check DNS Check Check Check

Proxy Yes Yes Yes Yes Yes Yes

Flow Yes Yes No No No Yes

FortiGuard- Phishing Anti-Spam Submit Spam Spam Email Spam


Assisted Filtering URL Check Block List to FortiGuard Checksum URL Check
Check Check

Proxy Yes Yes Yes Yes Yes

Flow No No No No No

FortiOS 6.4.6 Administration Guide 1125


Fortinet Technologies Inc.
Security Profiles

Feature comparison between DLP inspection modes

The following table indicates which DLP filters are supported by their designated inspection modes.

Credit SSN Filter Regex File- File- Fingerprint Watermark Encrypted File-
Card Filter Type Pattern Filter Filter Filter Size
Filter Filter Filter Filter

Proxy Yes Yes Yes Yes Yes Yes Yes Yes Yes

Flow Yes Yes Yes Yes Yes No No Yes Yes*

*File-size filtering only works if file size is present in the protocol exchange.

Antivirus

FortiOS offers the unique ability to implement both flow-based and proxy-based antivirus concurrently, depending on the 
traffic type, users, and locations. Flow-based antivirus offers higher throughput performance.
FortiOS includes two preloaded antivirus profiles: 
 l default 
 l wifi-default 
You can customize these profiles, or you can create your own to inspect certain protocols, remove viruses, analyze 
suspicious files with FortiSandbox, and apply botnet protection to network traffic. Once configured, you can add the 
antivirus profile to a firewall policy.

This functionality requires a subscription to FortiGuard Antivirus.

Protocol comparison between antivirus inspection modes

The following table indicates which protocols can be inspected by the designated antivirus scan modes.

HTTP FTP IMAP POP3 SMTP NNTP MAPI CIFS SSH

Proxy Yes Yes Yes Yes Yes Yes Yes Yes* Yes

Flow  Yes Yes Yes Yes Yes Yes No Yes No

* Proxy mode antivirus inspection on CIFS protocol has the following limitations:
 l Cannot detect infections within some archive files.
 l Cannot detect oversized files.

FortiOS 6.4.6 Administration Guide 1126


Fortinet Technologies Inc.
Security Profiles

Other antivirus differences between inspection modes

Starting from 6.4.0, the scan mode option is no longer available for flow-based AV.
This means that AV no longer exclusively uses the default or legacy scan modes when handling traffic on flow-based 
firewall policies. Instead, AV in flow-based policies uses a hybrid of the two scan modes. Flow AV may use a pre-filtering 
database for malware detection in some circumstances as opposed to the full AV signature database in others. The scan 
method is determined by the IPS engine algorithm that is based on the type of file being scanned.
In contrast, proxy mode maintains the scan mode option, which can be toggled between default or legacy mode. In 
default mode, the WAD daemon uses a stream-based approach, while legacy mode disables this stream-based 
approach. Proxy default scan-mode uses pre-scanning and stream-based scanning for HTTP traffic. 
Stream-based scanning provides the following AV improvements:
 l Archive files (ZIP, GZIP, BZIP2, TAR, ISO) that exceed the oversize limit are uncompressed and scanned for 
infections.
 l The contents of large archive files are scanned without having to buffer the entire file.
 l Small files are scanned locally by the WAD daemon if only AV scanning is needed in the policy.
 l File filtering on HTTP/HTTPS is handled locally by the WAD daemon.
This means that the overall memory usage is optimized when an archive file is scanned, and better security is achieved 
by scanning archives that would otherwise be bypassed.
However, stream-based scanning has limitations on the more complex features that it can scan. For the following 
features, traffic will be automatically handed off to the scanunit daemon for scanning (as in the case of legacy mode):
 l Heuristic AV scan
 l DLP
 l Quarantine
 l FortiGuard outbreak prevention and external block list
 l Content disarm

To configure the scan mode:

config antivirus profile


edit <name>
set feature-set proxy
...
set scan-mode {default | legacy}
next
end

The following topics provide information about antivirus profiles:
 l Databases on page 1128
 l Content disarm and reconstruction on page 1128
 l FortiGuard outbreak prevention on page 1130
 l External malware block list on page 1132
 l Checking flow antivirus statistics on page 1134
 l CIFS support on page 1136
The following topics provide information about sandbox inspection with antivirus:

FortiOS 6.4.6 Administration Guide 1127


Fortinet Technologies Inc.
Security Profiles

 l Using FortiSandbox with antivirus on page 1141
 l Using FortiSandbox Cloud with antivirus on page 1148

Databases

The antivirus scanning engine uses a virus signatures database to record the unique attributes of each infection. The 
antivirus scan searches for these signatures and when one is discovered, the FortiGate determines if the file is infected 
and takes action.
All FortiGates have the normal antivirus signature database. Some models have additional databases that you can use. 
The database you use depends on your network and security needs, and on your FortiGate model.
The extended virus definitions database is the default setting and provides comprehensive antivirus protection. Low-end 
FortiGate models cannot support the extreme database. The FortiGate 300D is the lowest model that supports the 
extreme database. All VMs support the extreme database. The use-extreme-db setting is only available on models 
that support the extreme database.

Extended This is the default setting. This database includes currently spreading viruses, as 
determined by the FortiGuard Global Security Research Team, plus recent 
viruses that are no longer active. These viruses may have been spreading within 
the last year but have since nearly or completely disappeared. 

Extreme This includes the extended database, plus a large collection of zoo viruses. These 
are viruses that have not spread in a long time and are largely dormant. Some zoo 
viruses might rely on operating systems and hardware that are no longer widely 
used.

To change the antivirus database:

config antivirus settings


set use-extreme-db {enable | disable}
end

Content disarm and reconstruction

Content disarm and reconstruction (CDR) allows the FortiGate to sanitize Microsoft Office documents and PDF files  
(including those that are in ZIP archives) by removing active content, such as hyperlinks, embedded media, JavaScript, 
macros, and so on from the files (disarm) without affecting the integrity of its textual content (reconstruction). It allows 
network administrators to protect their users from malicious document files. 
Files processed by CDR can be stored locally for quarantine on FortiAnalyzer, FortiSandbox, or FortiGate models with a 
hard disk. The original copies can also be obtained in the event of a false positive.
CDR is supported on HTTP, SMTP, POP3, and IMAP. Note that SMTP splice and client-comfort mode are not 
supported. CDR does not support flow-based inspection modes.

FortiOS 6.4.6 Administration Guide 1128


Fortinet Technologies Inc.
Security Profiles

Sample topology

In this example, the a Microsoft Office document with an embedded hyperlink (that redirects to an external website) is 
sent to the receiver. When the user receives the file, the hyperlink in the document is deactivated.

To configure CDR:

 1. Go to Security Profiles > AntiVirus.


 2. Edit an antivirus profile, or create a new one.
 3. Under APT Protection Options, enable Content Disarm and Reconstruction.

FortiOS 6.4.6 Administration Guide 1129


Fortinet Technologies Inc.
Security Profiles

 4. Select a quarantine location from the available options:

FortiSandbox Saves the original document file to a connected FortiSandbox.

File Quarantine Saves the original document file to disk (if possible) or a connected 
FortiAnalyzer based on the FortiGate log settings (config log
fortianalyzer setting).

Discard The default setting, which discards the original document file.

 5. Click OK.

To edit the CDR detection parameters:

By default, stripping of all active Microsoft Office and PDF content types are enabled. In this example, stripping macros 
in Microsoft Office documents will be disabled.
config antivirus profile
edit av
config content-disarm
set office-macro disable
set detect-only {enable | disable}
set cover-page {enable | disable}
end
next
end

Where:

detect-only Only detect disarmable files, do not alter content. Disabled by default.

cover-page Attach a cover page to the file's content when the file has been processed by 
CDR. Enabled by default. 

FortiGuard outbreak prevention

FortiGuard Virus Outbreak Protection Service (VOS) allows the FortiGate antivirus database to be subsidized with third-
party malware hash signatures curated by FortiGuard. The hash signatures are obtained from FortiGuard's Global 
Threat Intelligence database. The antivirus database queries FortiGuard with the hash of a scanned file. If FortiGuard 
returns a match, the scanned file is deemed to be malicious. 
FortiGuard VOS can be used in both proxy-based and flow-based policy inspections across all supported protocols. 
However, there is limited support in flow-based AV.

The FortiGate must be registered with a valid FortiGuard outbreak prevention license.

FortiOS 6.4.6 Administration Guide 1130


Fortinet Technologies Inc.
Security Profiles

To verify FortiGuard antivirus license information:

 1. Go to System > FortiGuard and locate the Outbreak Prevention section in the table.

 2. See the instructions in the video, How to Purchase or Renew FortiGuard Services, if required.

To enable FortiGuard outbreak prevention:

 1. Go to Security Profiles > AntiVirus.


 2. Edit an antivirus profile, or create a new one.
 3. Under Virus Outbreak Protection, enable Use FortiGuard Outbreak Prevention Database.
 4. Click OK.

To verify FortiGuard antivirus license information:

# diagnose debug rating


Locale : english

Service : Web-filter
Status : Enable
License : Contract

Service : Antispam
Status : Disable

Service : Virus Outbreak Prevention


Status : Enable
License : Contract

-=- Server List (Tue Feb 19 16:36:15 2019) -=-

IP Weight RTT Flags TZ Packets Curr Lost Total Lost


Updated Time
192.168.100.185 -218 2 DI -8 113 0 0 Tue Feb
19 16:35:55 2019

FortiOS 6.4.6 Administration Guide 1131


Fortinet Technologies Inc.
Security Profiles

To enable all scanunit debug categories:

# diagnose sys scanunit debug all


Set meta-category: all(0xffffffff)
Enabled categories(0xffffffff): daemon job quarantine analytics outbreak-prevention dlp
antispam file-filter
# diagnose debug enable
# su 4739 open
su 4739 req vfid 1 id 1 ep 0 new request, size 313, policy id 1, policy type 0
su 4739 req vfid 1 id 1 ep 0 received; ack 1, data type: 0
su 4739 job 1 request info:
su 4739 job 1 client 10.1.100.11:39412 server 172.16.200.44:80
su 4739 job 1 object_name 'zhvo_test.com'
su 4739 file-typing NOT WANTED options 0x0 file_filter no
su 4739 enable databases 0b (core mmdb extended)
su 4739 job 1 begin http scan
su 4739 scan file 'zhvo_test.com' bytes 68
su 4739 job 1 outbreak-prevention scan, level 0, filename 'zhvo_test.com'
su 4739 scan result 0
su 4739 job 1 end http scan
su 4739 job 1 inc pending tasks (1)
su 4739 not wanted for analytics: analytics submission is disabled (m 0 r 0)
su 4739 job 1 suspend
su 4739 outbreak-prevention recv error
su 4739 ftgd avquery id 0 status 1
su 4739 job 1 outbreak-prevention infected entryid=0
su 4739 report AVQUERY infection priority 1
su 4739 insert infection AVQUERY SUCCEEDED loc (nil) off 0 sz 0 at index 0 total infections
1 error 0
su 4739 job 1 dec pending tasks 0
su 4739 job 1 send result
su 4739 job 1 close
su 4739 outbreak-prevention recv error

External malware block list

The external malware block list allows users to add their own malware signatures in the form of MD5, SHA1, and 
SHA256 hashes. The FortiGate's antivirus database retrieves an external malware hash list from a remote server and 
polls the hash list every n minutes for updates.
The external malware block list can be used in both proxy-based and flow-based policy inspections, but it is not 
supported in AV quick scan mode.
Note that using different types of hashes simultaneously may slow down the performance of malware scanning. It is 
recommended to use one type of hash.

To configure antivirus to use an external block list:

 1. Create the malware hash list.
The malware hash list follows a strict format in order for its contents to be valid. Malware hash signature entries 
must be separated into each line. A valid signature needs to follow this format:
# MD5 Entry with hash description
aa67243f746e5d76f68ec809355ec234 md5_sample1

FortiOS 6.4.6 Administration Guide 1132


Fortinet Technologies Inc.
Security Profiles

# SHA1 Entry with hash description


a57983cb39e25ab80d7d3dc05695dd0ee0e49766 sha1_sample2

# SHA256 Entry with hash description


ae9bc0b4c5639d977d720e4271da06b50f7c60d1e2070e9c75cc59ab30e49379 sha256_sample1

# Entry without hash description


0289b0d967cb7b1fb1451339c7b9818a621903090e0020366ab415c549212521

# Invalid entries
7688499dc71b932feb126347289c0b8a_md5_sample2
7614e98badca10b5e2d08f8664c519b7a906fbd5180ea5d04a82fce9796a4b87sha256_sample3

 2. Configure the external malware block list source:   
 a. Go to Security Fabric > External Connectors and click Create New.
 b. Click Malware Hash.
 c. Configure the settings as needed. The URI must point to the malware hash list on the remote server.

 d. Click OK.
 3. To view entries inside the malware block list on the External Connectors page, hover over the malware hash card 
and click View Entries.

FortiOS 6.4.6 Administration Guide 1133


Fortinet Technologies Inc.
Security Profiles

The malware hash threat feed displays:

 4. Enable the external malware block list in the antivirus profile: 
 a. Go to Security Profiles > AntiVirus and edit the antivirus profile.
 b. In the Virus Outbreak Prevention section, enable Use External Malware Block List.
 c. Click OK.

To verify the scanunit daemon updated itself with the external hashes:

# diagnose sys scanunit malware-list list


md5 'aa67243f746e5d76f68ec809355ec234' profile 'hash_list' description 'md5_sample1'
sha1 'a57983cb39e25ab80d7d3dc05695dd0ee0e49766' profile 'hash_list' description 'sha1_
sample2'
sha256 '0289b0d967cb7b1fb1451339c7b9818a621903090e0020366ab415c549212521' profile 'hash_
list' description ''
sha256 'ae9bc0b4c5639d977d720e4271da06b50f7c60d1e2070e9c75cc59ab30e49379' profile 'hash_
list' description 'sha256_sample1'

Checking flow antivirus statistics

Two CLI commands are used for the antivirus statistics:
 l diagnose ips av stats show
 l diagnose ips av stats clear

FortiOS 6.4.6 Administration Guide 1134


Fortinet Technologies Inc.
Security Profiles

SNMP uses an API to get the antivirus statistics.

To check flow antivirus statistics:

 1. Create an antivirus profile:   
config antivirus profile
edit "av-test"
config http
set options scan avmonitor
end
config ftp
set options scan quarantine
end
next
end

 2. Enable the profile in a firewall policy:   
config firewall policy
edit 1
set name "policy1"
set srcintf "port2"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set fsso disable
set av-profile "av-test"
set ssl-ssh-profile "custom-deep-inspection"
set nat enable
next
end

 3. On the client PC, download the EICAR Standard Anti-Virus Test File via HTTP.
 4. Check the antivirus statistics on the FortiGate. Since the action is set to monitor for HTTP, HTTP virus
detected increases by 1:   
# diagnose ips av stats show
AV stats:
HTTP virus detected: 1
HTTP virus blocked: 0
SMTP virus detected: 0
SMTP virus blocked: 0
POP3 virus detected: 0
POP3 virus blocked: 0
IMAP virus detected: 0
IMAP virus blocked: 0
NNTP virus detected: 0
NNTP virus blocked: 0
FTP virus detected: 0
FTP virus blocked: 0
SMB virus detected: 0
SMB virus blocked: 0

FortiOS 6.4.6 Administration Guide 1135


Fortinet Technologies Inc.
Security Profiles

 5. On the client PC, download the EICAR file via FTP.
 6. Check the antivirus statistics on the FortiGate. Since the action is set to quarantine for FTP, FTP virus
detected and FTP virus blocked increase by 1:   
# diagnose ips av stats show
AV stats:
HTTP virus detected: 1
HTTP virus blocked: 0
SMTP virus detected: 0
SMTP virus blocked: 0
POP3 virus detected: 0
POP3 virus blocked: 0
IMAP virus detected: 0
IMAP virus blocked: 0
NNTP virus detected: 0
NNTP virus blocked: 0
FTP virus detected: 1
FTP virus blocked: 1
SMB virus detected: 0
SMB virus blocked: 0

 7. Check the antivirus statistics using an SNMP walk:   
root:~# snmpwalk -c public -v 1 10.1.100.6 1.3.6.1.4.1.12356.101.8.2.1.1
iso.3.6.1.4.1.12356.101.8.2.1.1.1.1 = Counter32: 2 (fgAvVirusDetected)
iso.3.6.1.4.1.12356.101.8.2.1.1.2.1 = Counter32: 1 (fgAvVirusBlocked)
iso.3.6.1.4.1.12356.101.8.2.1.1.3.1 = Counter32: 1 (fgAvHTTPVirusDetected)
iso.3.6.1.4.1.12356.101.8.2.1.1.4.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.5.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.6.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.7.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.8.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.9.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.10.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.11.1 = Counter32: 1 (fgAvFTPVirusDetected)
iso.3.6.1.4.1.12356.101.8.2.1.1.12.1 = Counter32: 1 (fgAvFTPVirusBlocked)
iso.3.6.1.4.1.12356.101.8.2.1.1.13.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.14.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.15.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.16.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.17.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.18.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.19.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.20.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.21.1 = Counter32: 0
iso.3.6.1.4.1.12356.101.8.2.1.1.22.1 = Counter32: 0

 8. Optionally, reset the antivirus statistics to zero:   
# diagnose ips av stats clear

CIFS support

Antivirus scanning on Common Internet File System (CIFS) traffic is supported in flow-based and proxy-based 
inspection. The file filter profile handles the configuration of file filtering on CIFS. The antivirus profile handles the 
antivirus configuration for CIFS scanning.

FortiOS 6.4.6 Administration Guide 1136


Fortinet Technologies Inc.
Security Profiles

File filtering for CIFS is performed by inspecting the first 4 KB of the file to identify the file's magic number. If a match 
occurs, CIFS file filtering prevents the CIFS command that contains that file from running. The file filter functions 
differently for un-encrypted and encrypted CIFS traffic:
 l For un-encrypted CIFS traffic, the standalone file filter works in flow and proxy mode.
 l For encrypted CIFS traffic, the CIFS profile must be enabled in the firewall policy because the SMB server’s 
credential settings are still be configured in CIFS profile. Using the standalone file filter only works in proxy mode.
For a CIFS profile to be available for assignment in a policy, the policy must use proxy inspection mode. See Proxy mode 
inspection on page 1122 for details. Note that  in proxy inspection mode, special condition archive files (encrypted, 
corrupted, mailbomb, and so on) marked by the antivirus engine are blocked automatically.
Messages that are compressed with  L
  ZNT1,   LZ77, and  L
  Z77+Huffman algorithms can be scanned in proxy mode.

Configure file-type filtering and antivirus scanning on CIFS traffic

To configure file-type filtering and antivirus scanning on CIFS traffic:

 1. Configure a CIFS domain controller on page 1137
 2. Configure a CIFS profile on page 1137
 3. Configure an antivirus profile on page 1139

Configure a CIFS domain controller

The domain controller must be configured when CIFS traffic is encrypted. The configuration tells the FortiGate the 
network location of the domain controller and the superuser credentials.

To configure the CIFS domain controller:

config credential-store domain-controller


edit "SERVER_NAME"
set hostname "host"
set domain-name "EXAMPLE.COM"
set username "admin-super"
set password *********
set ip 172.16.201.40
next
end

Configure a CIFS profile

To create a CIFS profile, configure the server credential type and create a file filter profile.

Set the CIFS server credential type

The CIFS server credential type can be none, credential-replication, or credential-keytab.

none

The CIFS profile assumes the CIFS traffic is unencrypted. This is the default value.
config firewall profile-protocol-options
edit "cifs"

FortiOS 6.4.6 Administration Guide 1137


Fortinet Technologies Inc.
Security Profiles

config cifs
set server-credential-type none
end
next
end

credential-replication

To decrypt CIFS traffic, FortiOS obtains the session key from the domain controller by logging in to the superuser 
account. The domain controller must be configured.
config firewall profile-protocol-options
edit "cifs"
config cifs
set server-credential-type credential-replication
set domain-controller "SERVER_NAME"
end
next
end

Variable Description

domain-controller <string>  The previously configured domain to decrypt CIFS traffic for.

credential-keytab

To decrypt CIFS traffic, FortiOS uses a series of keytab values. This method is used when the SMB connection is 
authenticated by Kerberos. Keytab entries must be configured, and are stored in FortiOS in plaintext.
config firewall profile-protocol-options
edit "cifs"
config cifs
set server-credential-type credential-keytab
config server-keytab
edit "keytab1"
set keytab
"BQIAAABFAAEAC0VYQU1QTEUuQ09NAAdleGFtcGxlAAAAAVUmAlwBABIAILdV5P6NXT8RrTvapcMJQxDYCjRQiD0Bzxh
wS9h0VgyM"
next
end
end
next
end

Variable Description

keytab <keytab> Base64 encoded keytab file containing the credentials of the server.   

Configure CIFS file filtering

Multiple rules can be added to a file filter profile. See File filter on page 1227.

FortiOS 6.4.6 Administration Guide 1138


Fortinet Technologies Inc.
Security Profiles

To configure a file filter for CIFS traffic:

config file-filter profile


edit "cifs"
set comment "block zip files on unencrypted cifs traffic"
set feature-set flow
set replacemsg-group ''
set log enable
config rules
edit "rule1"
set protocol cifs
set action block
set direction any
set password-protected any
set file-type zip
next
end
next
end

Variable Description

comment <string> A brief comment describing the entry.

feature-set {flow | proxy} Flow or proxy mode feature set (default = flow).

replacemsg-group <string> Replacement message group.

log {enable | disable} Enable/disable file filter logging (default = enable).

scan-archive-contents [enable |  Enable/disable scanning of archive contents (default = enable).
disable]

protocol {http ftp smtp imap pop3  Filter based on the specified protocol(s).
mapi cifs ssh}

action {log-only | block} The action to take for matched files:
 l log-only: Allow the content and write a log message (default).
 l block: Block the content and write a log message.

direction {incoming | outgoing |  Match files transmitted in the session's originating (incoming) and/or reply 
any} (outgoing) direction (default = any). 

password-protected [yes | any] Match only password-protected files (yes) or any  file (default = any). 

file-type <file_type> The file types to be matched. See Supported file types on page 1230 for details.

Configure an antivirus profile

The antivirus profile handles the antivirus configuration for CIFS scanning.

To configure an antivirus profile:

config antivirus profile


edit "av"
...
config cifs

FortiOS 6.4.6 Administration Guide 1139


Fortinet Technologies Inc.
Security Profiles

set options {scan avmonitor quarantine}


set archive-block {encrypted corrupted partiallycorrupted multipart nested
mailbomb fileslimit timeout unhandled}
set archive-log {encrypted corrupted partiallycorrupted multipart nested
mailbomb fileslimit timeout unhandled}
set emulator {enable | disable}
set outbreak-prevention {disabled | files | full-archive}
end
next
end

Variable Description

options {scan avmonitor  Enable/disable CIFS antivirus scanning, monitoring, and quarantine.
quarantine} 

archive-block  {encrypted  Select the archive types to block:
corrupted partiallycorrupted   l encrypted: Block encrypted archives.
multipart nested mailbomb   l corrupted: Block corrupted archives.
fileslimit timeout unhandled}  l partiallycorrupted: Block partially corrupted archives.
 l multipart: Block multipart archives.
 l nested: Block nested archives.
 l mailbomb: Block mail bomb archives.
 l fileslimit: Block exceeded archive files limit.
 l timeout: Block scan timeout.
 l unhandled: Block archives that FortiOS cannot open.

archive-log  {encrypted corrupted  Select the archive types to log:
partiallycorrupted multipart   l encrypted: Log encrypted archives.
nested mailbomb fileslimit   l corrupted: Log corrupted archives.
timeout unhandled}  l partiallycorrupted: Log partially corrupted archives.
 l multipart: Log multipart archives.
 l nested: Log nested archives.
 l mailbomb: Log mail bomb archives.
 l fileslimit: Log exceeded archive files limit.
 l timeout: Log scan timeout.
 l unhandled: Log archives that FortiOS cannot open.

emulator {enable | disable}  Enable/disable the virus emulator (default = enable).

outbreak-prevention {disabled |  Enable the virus outbreak prevention service:
files | full-archive}   l disabled: Disabled (default).
 l files: Analyze files as sent, not the content of archives.
 l full-archive: Analyze files, including the content of archives.

Log samples

File-type detection events generated by CIFS profiles are logged in the utm-cifs log category. Antivirus detection over 
the CIFS protocol generates logs in the utm-virus category. See the FortiOS Log Message Reference for more 
information.

FortiOS 6.4.6 Administration Guide 1140


Fortinet Technologies Inc.
Security Profiles

Logs generated by CIFS profile file filter:

date=2019-03-28 time=10:39:19 logid="1800063001" type="utm" subtype="cifs" eventtype="cifs-


filefilter" level="notice" vd="vdom1" eventtime=1553794757 msg="File was detected by file
filter." direction="incoming" action="passthrough" service="CIFS" srcip=10.1.100.11
dstip=172.16.200.44 srcport=33372 dstport=445 srcintf="wan2" srcintfrole="wan"
dstintf="wan1" dstintfrole="wan" policyid=1 proto=16 profile="cifs" filesize="1154"
filename="virus\\test.png" filtername="2" filetype="png"
date=2019-03-28 time=10:39:12 logid="1800063001" type="utm" subtype="cifs" eventtype="cifs-
filefilter" level="notice" vd="vdom1" eventtime=1553794751 msg="File was detected by file
filter." direction="incoming" action="passthrough" service="CIFS" srcip=10.1.100.11
dstip=172.16.200.44 srcport=33370 dstport=445 srcintf="wan2" srcintfrole="wan"
dstintf="wan1" dstintfrole="wan" policyid=1 proto=16 profile="cifs" filesize="81975"
filename="virus\\screen.png" filtername="2" filetype="png"
date=2019-03-28 time=10:33:55 logid="1800063000" type="utm" subtype="cifs" eventtype="cifs-
filefilter" level="warning" vd="vdom1" eventtime=1553794434 msg="File was blocked by file
filter." direction="incoming" action="blocked" service="CIFS" srcip=10.1.100.11
dstip=172.16.200.44 srcport=33352 dstport=445 srcintf="wan2" srcintfrole="wan"
dstintf="wan1" dstintfrole="wan" policyid=1 proto=16 profile="cifs" filesize="28432"
filename="filetypes\\mpnotify.exe" filtername="3" filetype="exe"
date=2019-03-28 time=10:33:45 logid="1800063000" type="utm" subtype="cifs" eventtype="cifs-
filefilter" level="warning" vd="vdom1" eventtime=1553794424 msg="File was blocked by file
filter." direction="incoming" action="blocked" service="CIFS" srcip=10.1.100.11
dstip=172.16.200.44 srcport=33348 dstport=445 srcintf="wan2" srcintfrole="wan"
dstintf="wan1" dstintfrole="wan" policyid=1 proto=16 profile="cifs" filesize="96528"
filename="filetypes\\winmine.exe" filtername="3" filetype="exe"

Logs generated by AV profile for infections detected over CIFS:

date=2019-04-09 time=15:19:02 logid="0204008202" type="utm" subtype="virus"


eventtype="outbreak-prevention" level="warning" vd="vdom1" eventtime=1554848342519005401
msg="Blocked by Virus Outbreak Prevention service." action="blocked" service="SMB"
sessionid=177 srcip=10.1.100.11 dstip=172.16.200.44 srcport=37444 dstport=445 srcintf="wan2"
srcintfrole="wan" dstintf="wan1" dstintfrole="wan" policyid=1 proto=6 direction="incoming"
filename="outbreak\\zhvo_test.com" quarskip="File-was-not-quarantined."
virus="503e99fe40ee120c45bc9a30835e7256fff3e46a" dtype="File Hash"
filehash="503e99fe40ee120c45bc9a30835e7256fff3e46a" filehashsrc="fortiguard" profile="av"
analyticssubmit="false" crscore=50 craction=2 crlevel="critical"
date=2019-04-09 time=15:18:59 logid="0211008192" type="utm" subtype="virus"
eventtype="infected" level="warning" vd="vdom1" eventtime=1554848339909808987 msg="File is
infected." action="blocked" service="SMB" sessionid=174 srcip=10.1.100.11
dstip=172.16.200.44 srcport=37442 dstport=445 srcintf="wan2" srcintfrole="wan"
dstintf="wan1" dstintfrole="wan" policyid=1 proto=6 direction="incoming"
filename="sample\\eicar.com" quarskip="File-was-not-quarantined." virus="EICAR_TEST_FILE"
dtype="Virus" ref="http://www.fortinet.com/ve?vn=EICAR_TEST_FILE" virusid=2172 profile="av"
analyticscksum="275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f"
analyticssubmit="false" crscore=50 craction=2 crlevel="critical"

Using FortiSandbox with antivirus

Antivirus profiles can submit potential zero-day viruses to FortiSandbox for inspection. Based on FortiSandbox's 
analysis, the FortiGate can supplement its own antivirus database with FortiSandbox's database to detect files 

FortiOS 6.4.6 Administration Guide 1141


Fortinet Technologies Inc.
Security Profiles

determined as malicious or risky by FortiSandbox. This helps the FortiGate antivirus detect zero-day viruses and 
malware whose signatures are not found in the antivirus database. 
FortiSandbox can be used with antivirus in both proxy-based and flow-based inspection modes. When FortiSandbox is 
enabled, full scan mode antivirus can submit the following for inspection: only suspicious files, all supported file, or no 
files. Quick scan mode antivirus cannot submit suspicious files to FortiSandbox, so either all files or no files are 
submitted for inspection.
For more information, see FortiSandbox on page 149.

Configuring FortiSandbox

There are three steps to configure FortiSandbox inspection in an antivirus profile:
 1. Enable FortiSandbox on the FortiGate.
 2. Authorize the FortiGate in FortiSandbox.   
 3. Enable FortiSandbox inspection options in the antivirus profile.

To enable FortiSandbox on the FortiGate:

 1. Go to Security Fabric > Fabric Connectors and double-click the FortiSandbox card.


 2. For status, click Enable. 
 3. For Type, click On-Premise.
 4. Enter the IP address of the FortiSandbox, and enter an optional Notifier email.
At this point, clicking Test connectivity returns an unreachable status. This is expected, because the FortiGate is not 
yet authorized by FortiSandbox.
 5. Click OK.

To authorize the FortiGate in FortiSandbox:

 1. In the FortiSandbox GUI, go to Scan Input > Device.


 2. Search using the FortiGate serial number to locate the FortiGate. In the Auth column, click  the link icon to authorize 
the FortiGate.

FortiOS 6.4.6 Administration Guide 1142


Fortinet Technologies Inc.
Security Profiles

 3. Repeat this step to authorize the VDOMs if required.

The link icon changes from an open to a closed link, which indicates that the FortiGate is authorized. 

 4. In the FortiGate GUI, go to Security Fabric > Fabric Connectors and double-click the FortiSandbox card.


 5. Click Test connectivity. The FortiGate is now authorized and the status displays as Connected.

To enable FortiSandbox inspection options in the antivirus profile:

 1. Go to Security Profiles > AntiVirus.


 2. Edit an antivirus profile, or create a new one.
 3. Under APT Protection Options,  select either Suspicious Files Only or All Supported Files.
 4. For Do not submit files matching types, click the + to exclude certain file types from being sent to FortiSandbox.
 5. For Do not submit files matching file name patterns, click the + to enter a wildcard pattern to exclude files  from being 
sent to FortiSandbox.

FortiOS 6.4.6 Administration Guide 1143


Fortinet Technologies Inc.
Security Profiles

 6. Enable Use FortiSandbox Database.


 7. Click OK.

FortiGate diagnostics

To run the quarantine daemon:

FGT_PROXY (global) # diagnose debug application quarantined -1


FGT_PROXY (global) # diagnose debug enable

quar_req_fsa_file()-890: fsa ext list new_version (1547781904)


quar_fsb_handle_quar()-1439: added a req-6 to fortisandbox-fsb5, vfid=1, oftp-name=[].
__quar_start_connection()-908: start server fortisandbox-fsb5-172.18.52.154 in vdom-1
[103] __ssl_cert_ctx_load: Added cert /etc/cert/factory/root_Fortinet_Factory.cer, root ca
Fortinet_CA, idx 0 (default)
[551] ssl_ctx_create_new_ex: SSL CTX is created
[578] ssl_new: SSL object is created
upd_cfg_extract_av_db_version[378]-version=06002000AVDB00201-00066.01026-1901301530
upd_cfg_extract_ids_db_version[437]-version=06002000NIDS02403-00014.00537-1901300043
upd_cfg_extract_ids_db_version[437]-version=06002000APDB00103-00006.00741-1512010230
upd_cfg_extract_ids_db_version[437]-version=06002000ISDB00103-00014.00537-1901300043
upd_cfg_extract_ibdb_botnet_db_version[523]-version=06002000IBDB00101-00004.00401-1901281000
upd_cfg_extract_av_db_version[378]-version=06002000AVDB00201-00066.01026-1901301530
upd_cfg_extract_ids_db_version[437]-version=06002000NIDS02403-00014.00537-1901300043
upd_cfg_extract_ids_db_version[437]-version=06002000APDB00103-00006.00741-1512010230
upd_cfg_extract_ids_db_version[437]-version=06002000ISDB00103-00014.00537-1901300043

FortiOS 6.4.6 Administration Guide 1144


Fortinet Technologies Inc.
Security Profiles

upd_cfg_extract_ibdb_botnet_db_version[523]-version=06002000IBDB00101-00004.00401-1901281000
upd_cfg_extract_av_db_version[378]-version=06002000AVDB00201-00066.01026-1901301530
upd_cfg_extract_ids_db_version[437]-version=06002000NIDS02403-00014.00537-1901300043
upd_cfg_extract_ids_db_version[437]-version=06002000APDB00103-00006.00741-1512010230
upd_cfg_extract_ids_db_version[437]-version=06002000ISDB00103-00014.00537-1901300043
upd_cfg_extract_ibdb_botnet_db_version[523]-version=06002000IBDB00101-00004.00401-1901281000
upd_cfg_extract_av_db_version[378]-version=06002000AVDB00201-00066.01026-1901301530
upd_cfg_extract_ids_db_version[437]-version=06002000NIDS02403-00014.00537-1901300043
upd_cfg_extract_ids_db_version[437]-version=06002000APDB00103-00006.00741-1512010230
upd_cfg_extract_ids_db_version[437]-version=06002000ISDB00103-00014.00537-1901300043
upd_cfg_extract_ibdb_botnet_db_version[523]-version=06002000IBDB00101-00004.00401-1901281000
upd_cfg_extract_av_db_version[378]-version=06002000AVDB00201-00066.01026-1901301530
upd_cfg_extract_ids_db_version[437]-version=06002000NIDS02403-00014.00537-1901300043
upd_cfg_extract_ids_db_version[437]-version=06002000APDB00103-00006.00741-1512010230
upd_cfg_extract_ids_db_version[437]-version=06002000ISDB00103-00014.00537-1901300043
upd_cfg_extract_ibdb_botnet_db_version[523]-version=06002000IBDB00101-00004.00401-1901281000
quar_remote_recv_send()-731: dev=fortisandbox-fsb2 xfer-status=0
__quar_build_pkt()-408: build req(id=337, type=4) for vdom-vdom1, len=99, oftp_name=
__quar_send()-470: dev buffer -- pos=0, len=99
quar_remote_send()-520: req(id=337, type=4) read response, dev=fortisandbox-fsb2, xfer_
status=1, buflen=12
quar_remote_recv_send()-770: dev-fortisandbox-fsb2, oevent=4, nevent=1, xfer-status=1
quar_remote_recv_send()-731: dev=fortisandbox-fsb3 xfer-status=0
__quar_build_pkt()-408: build req(id=338, type=6) for vdom-vdom1, len=93, oftp_name=
__quar_send()-470: dev buffer -- pos=0, len=93
quar_remote_send()-520: req(id=338, type=6) read response, dev=fortisandbox-fsb3, xfer_
status=1, buflen=12
quar_remote_recv_send()-770: dev-fortisandbox-fsb3, oevent=4, nevent=1, xfer-status=1
quar_remote_recv_send()-731: dev=fortisandbox-fsb5 xfer-status=0
__quar_build_pkt()-408: build req(id=340, type=6) for vdom-vdom1, len=93, oftp_name=
__quar_send()-470: dev buffer -- pos=0, len=93
quar_remote_send()-520: req(id=340, type=6) read response, dev=fortisandbox-fsb5, xfer_
status=1, buflen=12
quar_remote_recv_send()-770: dev-fortisandbox-fsb5, oevent=4, nevent=1, xfer-status=1
quar_remote_recv_send()-731: dev=fortisandbox-fsb2 xfer-status=1
quar_remote_recv()-662: dev(fortisandbox-fsb2) received a packet: len=69, type=1
quar_remote_recv()-718: file-[337] is accepted by server(fortisandbox-fsb2).
quar_put_job_req()-332: Job 337 deleted
quar_remote_recv_send()-731: dev=fortisandbox-fsb4 xfer-status=0
__quar_build_pkt()-408: build req(id=339, type=6) for vdom-vdom1, len=93, oftp_name=
__quar_send()-470: dev buffer -- pos=0, len=93
quar_remote_send()-520: req(id=339, type=6) read response, dev=fortisandbox-fsb4, xfer_
status=1, buflen=12
quar_remote_recv_send()-770: dev-fortisandbox-fsb4, oevent=4, nevent=1, xfer-status=1
quar_remote_recv_send()-731: dev=fortisandbox-fsb1 xfer-status=0
__quar_build_pkt()-408: build req(id=336, type=4) for vdom-root, len=98, oftp_name=
__quar_send()-470: dev buffer -- pos=0, len=98
...
__get_analytics_stats()-19: Received an ANALYTICS_STATS request, vfid: 0
__quar_req_handler()-127: Request 0 was handled successfully
__get_analytics_stats()-19: Received an ANALYTICS_STATS request, vfid: 0
__quar_req_handler()-127: Request 0 was handled successfully
__get_analytics_stats()-19: Received an ANALYTICS_STATS request, vfid: 0
__quar_req_handler()-127: Request 0 was handled successfully
__get_analytics_stats()-19: Received an ANALYTICS_STATS request, vfid: 0
__quar_req_handler()-127: Request 0 was handled successfully

FortiOS 6.4.6 Administration Guide 1145


Fortinet Technologies Inc.
Security Profiles

quar_fsb_handle_quar()-1439: added a req-6 to fortisandbox-fsb1, vfid=1, oftp-name=[].


__quar_start_connection()-908: start server fortisandbox-fsb1-172.18.52.154 in vdom-1
[103] __ssl_cert_ctx_load: Added cert /etc/cert/factory/root_Fortinet_Factory.cer, root ca
Fortinet_CA, idx 0 (default)
[551] ssl_ctx_create_new_ex: SSL CTX is created
[578] ssl_new: SSL object is created
upd_cfg_extract_av_db_version[378]-version=06002000AVDB00201-00066.01026-1901301530
upd_cfg_extract_ids_db_version[437]-version=06002000NIDS02403-00014.00537-1901300043
upd_cfg_extract_ids_db_version[437]-version=06002000APDB00103-00006.00741-1512010230
upd_cfg_extract_ids_db_version[437]-version=06002000ISDB00103-00014.00537-1901300043
upd_cfg_extract_ibdb_botnet_db_version[523]-version=06002000IBDB00101-00004.00401-1901281000
quar_remote_recv_send()-731: dev=fortisandbox-fsb1 xfer-status=0
__quar_build_pkt()-408: build req(id=2, type=6) for vdom-vdom1, len=93, oftp_name=
__quar_send()-470: dev buffer -- pos=0, len=93
quar_remote_send()-520: req(id=2, type=6) read response, dev=fortisandbox-fsb1, xfer_
status=1, buflen=12
quar_remote_recv_send()-770: dev-fortisandbox-fsb1, oevent=4, nevent=1, xfer-status=1
quar_remote_recv_send()-731: dev=fortisandbox-fsb1 xfer-status=1
quar_remote_recv()-662: dev(fortisandbox-fsb1) received a packet: len=767, type=1
quar_store_analytics_report()-590: Analytics-report return
file=/tmp/fsb/83bb2d9928b03a68b123730399b6b9365b5cc9a5a77f8aa007a6f1a499a13b18.json.gz, buf_
sz=735
quar_store_analytics_report()-597: The request
'83bb2d9928b03a68b123730399b6b9365b5cc9a5a77f8aa007a6f1a499a13b18' score is 1
quar_remote_recv()-718: file-[2] is accepted by server(fortisandbox-fsb1).
quar_put_job_req()-332: Job 2 deleted
quar_monitor_connection_func()-978: monitoring dev fortisandbox-fsb1
quar_monitor_connection_func()-978: monitoring dev fortisandbox-fsb1
__get_analytics_stats()-19: Received an ANALYTICS_STATS request, vfid: 0
__quar_req_handler()-127: Request 0 was handled successfully
__get_analytics_stats()-19: Received an ANALYTICS_STATS request, vfid: 0
__quar_req_handler()-127: Request 0 was handled successfully
quar_monitor_connection_func()-978: monitoring dev fortisandbox-fsb1
quar_stop_connection()-1006: close connection to server(fortisandbox-fsb1)
[193] __ssl_data_ctx_free: Done
[805] ssl_free: Done
[185] __ssl_cert_ctx_free: Done
[815] ssl_ctx_free: Done
[796] ssl_disconnect: Shutdown

To run the FortiSandbox diagnostics:

FGT_PROXY (global) # diagnose test application quarantined 1


Total remote&local devices: 8, any task full? 0
System have disk, vdom is enabled, mgmt=1, ha=2
xfer-fas is enabled: ips-archive dlp-archive, realtime=yes, taskfull=no
addr=0.0.0.0/514, source-ip=0.0.0.0, keep-alive=no.
ssl_opt=0, hmac_alg=0
License=0, content_archive=0, arch_pause=0.

global-fas is disabled.
forticloud-fsb is disabled.
fortisandbox-fsb1 is enabled: analytics, realtime=yes, taskfull=no
addr=172.18.52.154/514, source-ip=0.0.0.0, keep-alive=no.
ssl_opt=3, hmac_alg=0
fortisandbox-fsb2 is enabled: analytics, realtime=yes, taskfull=no

FortiOS 6.4.6 Administration Guide 1146


Fortinet Technologies Inc.
Security Profiles

addr=172.18.52.154/514, source-ip=0.0.0.0, keep-alive=no.


ssl_opt=3, hmac_alg=0
fortisandbox-fsb3 is enabled: analytics, realtime=yes, taskfull=no
addr=172.18.52.154/514, source-ip=0.0.0.0, keep-alive=no.
ssl_opt=3, hmac_alg=0
fortisandbox-fsb4 is enabled: analytics, realtime=yes, taskfull=no
addr=172.18.52.154/514, source-ip=0.0.0.0, keep-alive=no.
ssl_opt=3, hmac_alg=0
fortisandbox-fsb5 is enabled: analytics, realtime=yes, taskfull=no
addr=172.18.52.154/514, source-ip=0.0.0.0, keep-alive=no.
ssl_opt=3, hmac_alg=0
fortisandbox-fsb6 is enabled: analytics, realtime=yes, taskfull=no
addr=172.18.52.154/514, source-ip=0.0.0.0, keep-alive=no.
ssl_opt=3, hmac_alg=0
global-faz is disabled.
global-faz2 is disabled.
global-faz3 is disabled.

To run the FortiSandbox analysis statistics:

FGT_PROXY (global) # diagnose test application quarantined 7


Total: 0

Statistics:
vfid: 0, detected: 0, clean: 0, risk_low: 0, risk_med: 0, risk_high: 0, limit_
reached:0
vfid: 3, detected: 0, clean: 0, risk_low: 0, risk_med: 0, risk_high: 0, limit_
reached:0
vfid: 4, detected: 0, clean: 0, risk_low: 0, risk_med: 0, risk_high: 0, limit_
reached:0

FortiSandbox diagnostics

To run the OFTP debug:

# diagnose-debug device FG101E4Q17000000

[2019/01/31 00:48:21] LOGIN->SUCCEED: Serial(FG101E4Q17000000), HOSTNAME(FGT_PROXY)


[2019/01/31 00:48:21] FG101E4Q17000000 VDOM: vdom1
[2019/01/31 00:48:21] FG101E4Q17000000 suspicious stats START_TIME: 1548290749
[2019/01/31 00:48:21] FG101E4Q17000000 suspicious stats END_TIME: 1548895549
[2019/01/31 00:48:21] FG101E4Q17000000 opd_data_len=37 clean=2 detected=2 risk_low=0 risk_
med=0 risk_high=0 sus_limit=0
[2019/01/31 00:48:21] FG101E4Q17000000 ENTERING->HANDLE_SEND_FILE.
[2019/01/31 00:48:21] FG101E4Q17000000 ENTERING->HANDLE_SEND_FILE.
[2019/01/31 00:48:21] FG101E4Q17000000 INCOMING->FGT->VDOM: vdom1
[2019/01/31 00:48:21] FG101E4Q17000000 INCOMING->FGT->VDOM: vdom1
[2019/01/31 00:48:21] FG101E4Q17000000 INCOMING->IMG_VERSION: 6.2.0.0818
[2019/01/31 00:48:21] FG101E4Q17000000 INCOMING->IMG_VERSION: 6.2.0.0818
[2019/01/31 00:48:21] INCOMING->FGT: FG101E4Q17000000, VDOM: vdom1
[2019/01/31 00:48:21] INCOMING->FGT: FG101E4Q17000000, VDOM: vdom1
[2019/01/31 00:48:21] FG101E4Q17000000 INCOMING->TYPE: 0
[2019/01/31 00:48:21] FG101E4Q17000000 INCOMING->TYPE: 1
[2019/01/31 00:48:21] FG101E4Q17000000 INCOMING->VERSION: 3 . 1795
[2019/01/31 00:48:21] FG101E4Q17000000 INCOMING->VERSION: 3 . 595

FortiOS 6.4.6 Administration Guide 1147


Fortinet Technologies Inc.
Security Profiles

[2019/01/31 00:48:21] FG101E4Q17000000 VDOM: root


[2019/01/31 00:48:21] FG101E4Q17000000 ENTERING->HANDLE_SEND_FILE.
[2019/01/31 00:48:21] FG101E4Q17000000 suspicious stats START_TIME: 1548290749
[2019/01/31 00:48:21] FG101E4Q17000000 INCOMING->FGT->VDOM: vdom1
[2019/01/31 00:48:21] FG101E4Q17000000 suspicious stats END_TIME: 1548895549
[2019/01/31 00:48:21] FG101E4Q17000000 INCOMING->IMG_VERSION: 6.2.0.0818
[2019/01/31 00:48:21] INCOMING->FGT: FG101E4Q17000000, VDOM: vdom1
[2019/01/31 00:48:21] FG101E4Q17000000 INCOMING->TYPE: 4
[2019/01/31 00:48:21] FG101E4Q17000000 opd_data_len=37 clean=0 detected=0 risk_low=0 risk_
med=0 risk_high=0 sus_limit=0
[2019/01/31 00:48:22] FG101E4Q17000000 RETRIEVE->PKG: TYPE: av, ENTRY_VERSION: 1795,
PACKAGE_PATH: /Storage/malpkg/pkg/avsig/avsigrel_1795.pkg
[2019/01/31 00:48:22] FG101E4Q17000000 RETRIEVE->PKG: TYPE: url, ENTRY_VERSION: 595,
PACKAGE_PATH: /Storage/malpkg/pkg/url/urlrel_595.pkg.gz
[2019/01/31 00:48:29] LOGIN->SUCCEED: Serial(FG101E4Q17000000), HOSTNAME(FGT_PROXY)
[2019/01/31 00:48:32] LOGIN->SUCCEED: Serial(FG101E4Q17000000), HOSTNAME(FGT_PROXY)
[2019/01/31 00:48:59] LOGIN->SUCCEED: Serial(FG101E4Q17000000), HOSTNAME(FGT_PROXY)
[2019/01/31 00:49:03] LOGIN->SUCCEED: Serial(FG101E4Q17000000), HOSTNAME(FGT_PROXY)

Using FortiSandbox Cloud with antivirus

FortiSandbox Cloud allows users to take advantage of FortiSandbox features without having to purchase, operate, and 
maintain a physical appliance. It works the same way as the physical FortiSandbox appliance. 
FortiSandbox Cloud allows you to control the region where your traffic is sent to for analysis. This allows you to meet 
your country's compliance needs regarding data storage locations.
FortiSandbox can be used with antivirus in both proxy-based and flow-based inspection modes. When FortiSandbox is 
enabled, full scan mode antivirus can submit the following for inspection: only suspicious files, all supported file, or no 
files. Quick scan mode antivirus cannot submit suspicious files to FortiSandbox, so either all files or no files are 
submitted for inspection.
In FortiOS 6.2 and later, users do not require a FortiGate Cloud account to use FortiSandbox Cloud. Without a valid 
FortiGuard antivirus (AVDB) license, FortiGate devices are limited to 100 FortiGate Cloud submissions per day. 
Unlimited FortiGate Cloud submissions are allowed if the FortiGate has a valid AVDB license; however, there is a per-
minute submission rate is based on the FortiGate model.
For more information, see FortiSandbox on page 149.

Configuring FortiSandbox Cloud

There are three steps to configure FortiSandbox Cloud inspection in an antivirus profile:
 1. Through FortiCare, register the FortiGate device and purchase a FortiGuard antivirus license.   
 2. Enable FortiSandbox Cloud on the FortiGate.   
 3. Enable FortiSandbox inspection options in the antivirus profile.   

To obtain or renew a FortiGuard antivirus license:

 1. See the How to Purchase or Renew FortiGuard Services video for FortiGuard antivirus license purchase 
instructions.

FortiOS 6.4.6 Administration Guide 1148


Fortinet Technologies Inc.
Security Profiles

 2. Once a FortiGuard license is purchased and activated, users are provided with a paid FortiSandbox Cloud license. 
 a. Go to Dashboard > Status to view the FortiSandbox Cloud license indicator.

 b. Alternatively, go to System > FortiGuard to view the FortiSandbox Cloud license indicator.

To enable FortiSandbox Cloud on the FortiGate:

 1. Make the FortiSandbox Cloud feature visible:
config system global
set gui-fortisandbox-cloud enable
end

 2. Log out of FortiOS and log in again.
 3. Go to Security Fabric > Fabric Connectors and double-click the FortiSandbox card.
 4. For status, click Enable. 
 5. For Type, click FortiSandbox Cloud and choose a region from the dropdown list.
 6. Click OK.
When the FortiGate is connected to the FortiSandbox Cloud, the current FortiSandbox database version is 
displayed.

FortiOS 6.4.6 Administration Guide 1149


Fortinet Technologies Inc.
Security Profiles

To enable FortiSandbox inspection options in the antivirus profile:

 1. Go to Security Profiles > AntiVirus.


 2. Edit an antivirus profile, or create a new one.
 3. Under APT Protection Options,  select either Suspicious Files Only or All Supported Files.
 4. For Do not submit files matching types, click the + to exclude certain file types from being sent to FortiSandbox.
 5. For Do not submit files matching file name patterns, click the + to enter a wildcard pattern to exclude files  from being 
sent to FortiSandbox.

 6. Enable Use FortiSandbox Database.


 7. Click OK.

FortiGate diagnostics

To check the FortiGate Cloud controller status:

# diagnose test application forticldd 2


Server: log-controller, task=0/10, watchdog is off
Domain name: logctrl1.fortinet.com
Address of log-controller: 1
172.16.95.168:443
Statistics: total=3, discarded=1, sent=2, last_updated=12163 secs ago
http connection: is not in progress
Current address: 172.16.95.168:443
Calls: connect=9, rxtx=12
Current tasks number: 0

FortiOS 6.4.6 Administration Guide 1150


Fortinet Technologies Inc.
Security Profiles

Account: name=empty, status=0, type=basic


Current volume: 0B
Current tasks number: 0
Update timer fires in 74240 secs

To check the Cloud APT server status:

# diagnose test application forticldd 3


Debug zone info:
Domain:
Home log server: 0.0.0.0:0
Alt log server: 0.0.0.0:0
Active Server IP: 0.0.0.0
Active Server status: down
Log quota: 0MB
Log used: 0MB
Daily volume: 0MB
fams archive pause: 0
APTContract : 1 <====
APT server: 172.16.102.51:514 <====
APT Altserver: 172.16.102.52:514 <====
Active APTServer IP: 172.16.102.51 <====
Active APTServer status: up <====

To view FortiSandbox Cloud diagnostics:

# diagnose test application quarantined 1


Total remote&local devices: 4, any task full? 0
System have disk, vdom is enabled, mgmt=3, ha=1
xfer-fas is enabled: ips-archive dlp-archive, realtime=yes, taskfull=no
addr=0.0.0.0/514, source-ip=0.0.0.0, keep-alive=no.
ssl_opt=1, hmac_alg=0
License=0, content_archive=0, arch_pause=0.

global-fas is disabled.
forticloud-fsb is enabled: analytics, realtime=yes, taskfull=no
addr=172.16.102.51/514, source-ip=0.0.0.0, keep-alive=no.
ssl_opt=1, hmac_alg=0
fortisandbox-fsb1 is disabled.
fortisandbox-fsb2 is disabled.
fortisandbox-fsb3 is disabled.
fortisandbox-fsb4 is disabled.
fortisandbox-fsb5 is disabled.
fortisandbox-fsb6 is disabled.
global-faz is disabled.
global-faz2 is disabled.
global-faz3 is disabled.

To view FortiSandbox Cloud submission statistics:

# diagnose test application quarantined 2


Quarantine daemon state:
QUAR mem: mem_used=0, mem_limit=97269, threshold=72951
dropped(0 by quard, 0 by callers)
pending-jobs=0, tot-mem=0, last_ipc_run=12353, check_new_req=1
alloc_job_failed=0, job_wrong_type=0, job_wrong_req_len=0, job_invalid_qfd=0

FortiOS 6.4.6 Administration Guide 1151


Fortinet Technologies Inc.
Security Profiles

tgz_create_failed=0, tgz_attach_failed=0, qfd_mmap_failed=0, buf_attached=0


xfer-fas:
ips: total=0, handled=0, accepted=0
quar: total=0, handled=0, accepted=0
archive: total=0, handled=0, accepted=0
analytics: total=0, handled=0, accepted=0, local_dups=0
analytics stats: total=0, handled=0, accepted=0
last_rx=0, last_tx=0, error_rx=0, error_tx=0
max_num_tasks=10000, num_tasks=0, mem_used=0, ttl_drops=0, xfer_status=0
forticloud-fsb:
ips: total=0, handled=0, accepted=0
quar: total=0, handled=0, accepted=0
archive: total=0, handled=0, accepted=0
analytics: total=0, handled=0, accepted=0, local_dups=0
num_buffer=0(per-minute:10) last_min_count=0 last_vol_count=0 next_vol_reset_tm='Sun Feb 17
00:00:00 2019
'
analytics stats: total=24, handled=24, accepted=24
last_rx=1224329, last_tx=1224329, error_rx=2, error_tx=0
max_num_tasks=200, num_tasks=0, mem_used=0, ttl_drops=0, xfer_status=0

To view FortiSandbox analysis statistics:

# diagnose test application quarantined 7


Total: 0

Statistics:
vfid: 0, detected: 0, clean: 0, risk_low: 0, risk_med: 0, risk_high: 0, limit_
reached:0
vfid: 3, detected: 0, clean: 0, risk_low: 0, risk_med: 0, risk_high: 0, limit_
reached:0
vfid: 4, detected: 0, clean: 0, risk_low: 0, risk_med: 0, risk_high: 0, limit_
reached:0

FGT_FL_FULL (global) #

To run the quarantine daemon:

# diagnose debug application quarantined -1


# diagnose debug enable

quar_req_fsa_file()-890: fsa ext list new_version (1547781904)


quar_fsb_handle_quar()-1439: added a req-6 to fortisandbox-fsb5, vfid=1, oftp-name=[].
__quar_start_connection()-908: start server fortisandbox-fsb5-172.18.52.154 in vdom-1
[103] __ssl_cert_ctx_load: Added cert /etc/cert/factory/root_Fortinet_Factory.cer, root ca
Fortinet_CA, idx 0 (default)
[551] ssl_ctx_create_new_ex: SSL CTX is created
[578] ssl_new: SSL object is created
upd_cfg_extract_av_db_version[378]-version=06002000AVDB00201-00066.01026-1901301530
upd_cfg_extract_ids_db_version[437]-version=06002000NIDS02403-00014.00537-1901300043
upd_cfg_extract_ids_db_version[437]-version=06002000APDB00103-00006.00741-1512010230
upd_cfg_extract_ids_db_version[437]-version=06002000ISDB00103-00014.00537-1901300043
upd_cfg_extract_ibdb_botnet_db_version[523]-version=06002000IBDB00101-00004.00401-1901281000
upd_cfg_extract_av_db_version[378]-version=06002000AVDB00201-00066.01026-1901301530
upd_cfg_extract_ids_db_version[437]-version=06002000NIDS02403-00014.00537-1901300043
upd_cfg_extract_ids_db_version[437]-version=06002000APDB00103-00006.00741-1512010230

FortiOS 6.4.6 Administration Guide 1152


Fortinet Technologies Inc.
Security Profiles

upd_cfg_extract_ids_db_version[437]-version=06002000ISDB00103-00014.00537-1901300043
upd_cfg_extract_ibdb_botnet_db_version[523]-version=06002000IBDB00101-00004.00401-1901281000
upd_cfg_extract_av_db_version[378]-version=06002000AVDB00201-00066.01026-1901301530
upd_cfg_extract_ids_db_version[437]-version=06002000NIDS02403-00014.00537-1901300043
upd_cfg_extract_ids_db_version[437]-version=06002000APDB00103-00006.00741-1512010230
upd_cfg_extract_ids_db_version[437]-version=06002000ISDB00103-00014.00537-1901300043
upd_cfg_extract_ibdb_botnet_db_version[523]-version=06002000IBDB00101-00004.00401-1901281000
upd_cfg_extract_av_db_version[378]-version=06002000AVDB00201-00066.01026-1901301530
upd_cfg_extract_ids_db_version[437]-version=06002000NIDS02403-00014.00537-1901300043
upd_cfg_extract_ids_db_version[437]-version=06002000APDB00103-00006.00741-1512010230
upd_cfg_extract_ids_db_version[437]-version=06002000ISDB00103-00014.00537-1901300043
upd_cfg_extract_ibdb_botnet_db_version[523]-version=06002000IBDB00101-00004.00401-1901281000
upd_cfg_extract_av_db_version[378]-version=06002000AVDB00201-00066.01026-1901301530
upd_cfg_extract_ids_db_version[437]-version=06002000NIDS02403-00014.00537-1901300043
upd_cfg_extract_ids_db_version[437]-version=06002000APDB00103-00006.00741-1512010230
upd_cfg_extract_ids_db_version[437]-version=06002000ISDB00103-00014.00537-1901300043
upd_cfg_extract_ibdb_botnet_db_version[523]-version=06002000IBDB00101-00004.00401-1901281000
quar_remote_recv_send()-731: dev=fortisandbox-fsb2 xfer-status=0
__quar_build_pkt()-408: build req(id=337, type=4) for vdom-vdom1, len=99, oftp_name=
__quar_send()-470: dev buffer -- pos=0, len=99
quar_remote_send()-520: req(id=337, type=4) read response, dev=fortisandbox-fsb2, xfer_
status=1, buflen=12
quar_remote_recv_send()-770: dev-fortisandbox-fsb2, oevent=4, nevent=1, xfer-status=1
quar_remote_recv_send()-731: dev=fortisandbox-fsb3 xfer-status=0
__quar_build_pkt()-408: build req(id=338, type=6) for vdom-vdom1, len=93, oftp_name=
__quar_send()-470: dev buffer -- pos=0, len=93
quar_remote_send()-520: req(id=338, type=6) read response, dev=fortisandbox-fsb3, xfer_
status=1, buflen=12
quar_remote_recv_send()-770: dev-fortisandbox-fsb3, oevent=4, nevent=1, xfer-status=1
quar_remote_recv_send()-731: dev=fortisandbox-fsb5 xfer-status=0
__quar_build_pkt()-408: build req(id=340, type=6) for vdom-vdom1, len=93, oftp_name=
__quar_send()-470: dev buffer -- pos=0, len=93
quar_remote_send()-520: req(id=340, type=6) read response, dev=fortisandbox-fsb5, xfer_
status=1, buflen=12
quar_remote_recv_send()-770: dev-fortisandbox-fsb5, oevent=4, nevent=1, xfer-status=1
quar_remote_recv_send()-731: dev=fortisandbox-fsb2 xfer-status=1
quar_remote_recv()-662: dev(fortisandbox-fsb2) received a packet: len=69, type=1
quar_remote_recv()-718: file-[337] is accepted by server(fortisandbox-fsb2).
quar_put_job_req()-332: Job 337 deleted
quar_remote_recv_send()-731: dev=fortisandbox-fsb4 xfer-status=0
__quar_build_pkt()-408: build req(id=339, type=6) for vdom-vdom1, len=93, oftp_name=
__quar_send()-470: dev buffer -- pos=0, len=93
quar_remote_send()-520: req(id=339, type=6) read response, dev=fortisandbox-fsb4, xfer_
status=1, buflen=12
quar_remote_recv_send()-770: dev-fortisandbox-fsb4, oevent=4, nevent=1, xfer-status=1
quar_remote_recv_send()-731: dev=fortisandbox-fsb1 xfer-status=0
__quar_build_pkt()-408: build req(id=336, type=4) for vdom-root, len=98, oftp_name=
__quar_send()-470: dev buffer -- pos=0, len=98
...
__get_analytics_stats()-19: Received an ANALYTICS_STATS request, vfid: 0
__quar_req_handler()-127: Request 0 was handled successfully
__get_analytics_stats()-19: Received an ANALYTICS_STATS request, vfid: 0
__quar_req_handler()-127: Request 0 was handled successfully
__get_analytics_stats()-19: Received an ANALYTICS_STATS request, vfid: 0
__quar_req_handler()-127: Request 0 was handled successfully
__get_analytics_stats()-19: Received an ANALYTICS_STATS request, vfid: 0

FortiOS 6.4.6 Administration Guide 1153


Fortinet Technologies Inc.
Security Profiles

__quar_req_handler()-127: Request 0 was handled successfully


quar_fsb_handle_quar()-1439: added a req-6 to fortisandbox-fsb1, vfid=1, oftp-name=[].
__quar_start_connection()-908: start server fortisandbox-fsb1-172.18.52.154 in vdom-1
[103] __ssl_cert_ctx_load: Added cert /etc/cert/factory/root_Fortinet_Factory.cer, root ca
Fortinet_CA, idx 0 (default)
[551] ssl_ctx_create_new_ex: SSL CTX is created
[578] ssl_new: SSL object is created
upd_cfg_extract_av_db_version[378]-version=06002000AVDB00201-00066.01026-1901301530
upd_cfg_extract_ids_db_version[437]-version=06002000NIDS02403-00014.00537-1901300043
upd_cfg_extract_ids_db_version[437]-version=06002000APDB00103-00006.00741-1512010230
upd_cfg_extract_ids_db_version[437]-version=06002000ISDB00103-00014.00537-1901300043
upd_cfg_extract_ibdb_botnet_db_version[523]-version=06002000IBDB00101-00004.00401-1901281000
quar_remote_recv_send()-731: dev=fortisandbox-fsb1 xfer-status=0
__quar_build_pkt()-408: build req(id=2, type=6) for vdom-vdom1, len=93, oftp_name=
__quar_send()-470: dev buffer -- pos=0, len=93
quar_remote_send()-520: req(id=2, type=6) read response, dev=fortisandbox-fsb1, xfer_
status=1, buflen=12
quar_remote_recv_send()-770: dev-fortisandbox-fsb1, oevent=4, nevent=1, xfer-status=1
quar_remote_recv_send()-731: dev=fortisandbox-fsb1 xfer-status=1
quar_remote_recv()-662: dev(fortisandbox-fsb1) received a packet: len=767, type=1
quar_store_analytics_report()-590: Analytics-report return
file=/tmp/fsb/83bb2d9928b03a68b123730399b6b9365b5cc9a5a77f8aa007a6f1a499a13b18.json.gz, buf_
sz=735
quar_store_analytics_report()-597: The request
'83bb2d9928b03a68b123730399b6b9365b5cc9a5a77f8aa007a6f1a499a13b18' score is 1
quar_remote_recv()-718: file-[2] is accepted by server(fortisandbox-fsb1).
quar_put_job_req()-332: Job 2 deleted
quar_monitor_connection_func()-978: monitoring dev fortisandbox-fsb1
quar_monitor_connection_func()-978: monitoring dev fortisandbox-fsb1
__get_analytics_stats()-19: Received an ANALYTICS_STATS request, vfid: 0
__quar_req_handler()-127: Request 0 was handled successfully
__get_analytics_stats()-19: Received an ANALYTICS_STATS request, vfid: 0
__quar_req_handler()-127: Request 0 was handled successfully
quar_monitor_connection_func()-978: monitoring dev fortisandbox-fsb1
quar_stop_connection()-1006: close connection to server(fortisandbox-fsb1)
[193] __ssl_data_ctx_free: Done
[805] ssl_free: Done
[185] __ssl_cert_ctx_free: Done
[815] ssl_ctx_free: Done
[796] ssl_disconnect: Shutdown

Web filter

Web filtering restricts or controls user access to web resources and can be applied to firewall policies using either policy-
based or profile-based NGFW mode.
In FortiOS, there are three main components of web filtering:
 l Web content filter: blocks web pages containing words or patterns that you specify.
 l URL filter: uses URLs and URL patterns to block or exempt web pages from specific sources, or block malicious 
URLs discovered by FortiSandbox.
 l FortiGuard Web Filtering service: provides many additional categories you can use to filter web traffic.

FortiOS 6.4.6 Administration Guide 1154


Fortinet Technologies Inc.
Security Profiles

These components interact with each other to provide maximum control over what users on your network can view and 
protect your network from many internet content threats. 
Web filters are applied in the following order:
 1. URL filter
 2. FortiGuard Web Filtering
 3. Web content filter
 4. Web script filter
 5. Antivirus scanning
FortiOS includes three preloaded web filter profiles: 
 l default 
 l monitor-all (monitors and logs all URLs visited, flow-based)
 l wifi-default (default configuration for offloading WiFi traffic)
You can customize these profiles, or you can create your own to manage network user access.

Some features of this functionality require a subscription to FortiGuard Web Filtering.

The following topics provide information about web filters:
 l URL filter on page 1155
 l FortiGuard filter on page 1161
 l Credential phishing prevention on page 1167
 l Usage quota on page 1170
 l Web content filter on page 1172
 l Advanced filters 1 on page 1175
 l Advanced filters 2 on page 1178
 l Web filter statistics on page 1183
 l URL certificate blocklist on page 1184

URL filter

The URL filter uses specific URLs with patterns containing text and regular expressions so the FortiGate can process the 
traffic based on the filter action (exempt, block, allow, monitor) and web pages that match the criteria. Once a URL filter 
is configured, it can be applied to  a firewall policy.
The following filter types are available:

URL filter type Description

Simple The FortiGate tries to strictly match the full context. For example, if you enter 
www.facebook.com in the URL field, it only matches traffic with www.facebook.com. It won't 
match facebook.com or message.facebook.com.
When the FortiGate finds a match, it performs the selected URL action.

FortiOS 6.4.6 Administration Guide 1155


Fortinet Technologies Inc.
Security Profiles

URL filter type Description

Regular The FortiGate tries to match the pattern based on the rules of regular expressions or 
expression/ wildcards. For example, if you enter *fa* in the URL field, it matches all the content that has fa 
wildcard such as www.facebook.com, message.facebook.com, fast.com, and so on.
When the FortiGate finds a match, it performs the selected URL action.

For more information, see the  URL Filter expressions technical note in the Knowledge Base.
The following actions are available:

URL filter action Description

Exempt The traffic is allowed to bypass the remaining FortiGuard web filters, web content filters, web 
script filters, antivirus scanning, and DLP proxy operations.

Block The FortiGate denies or blocks attempts to access any URL that matches the URL pattern. A 
replacement message is displayed.

Allow The traffic is passed to the remaining FortiGuard web filters, web content filters, web script 
filters, antivirus proxy operations, and DLP proxy operations. If the URL does not appear in 
the URL list, the traffic is permitted.

Monitor The traffic is processed the same way as the Allow action. For the Monitor action, a log 
message is generated each time a matching traffic pattern is established.

In the following example, a URL filter will be created to block the facebook.com URL using a wildcard.

Configuring a URL filter in the GUI

To create a URL filter for Facebook:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the Static URL Filter section, enable URL Filter.
 3. Click Create New. The New URL Filter pane opens.
 4. For URL, enter *facebook.com, for Type, select Wildcard, and for Action, select Block.

FortiOS 6.4.6 Administration Guide 1156


Fortinet Technologies Inc.
Security Profiles

 5. Click OK. The entry appears in the table.

 6. Configure the other settings as needed.
 7. Click OK.

To apply the web filter profile to a firewall policy:

 1. Go to Policy & Objects > Firewall Policy.


 2. Edit a policy, or create a new one.
 3. In the Security Profiles section, enable Web Filter and select the profile you created.

 4. Configure the other settings as needed.
 5. Click OK.

Configuring a URL filter in the CLI

To create a URL filter for Facebook:

config webfilter urlfilter


edit 1
set name "webfilter"
config entries
edit 1
set url "*facebook.com"
set type wildcard
set action block
next
end
next
end

FortiOS 6.4.6 Administration Guide 1157


Fortinet Technologies Inc.
Security Profiles

To apply the URL filter to a web filter profile:

config webfilter profile


edit "webfilter"
config web
set urlfilter-table 1
end
config ftgd-wf
...
end
next
end

To apply the web filter profile to a firewall policy:

config firewall policy


edit 1
set name "WF"
set srcintf "wan2"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set inspection-mode proxy
set logtraffic all
set webfilter-profile "webfilter"
set profile-protocol-options "protocol"
set ssl-ssh-profile "protocols"
set nat enable
next
end

FortiOS 6.4.6 Administration Guide 1158


Fortinet Technologies Inc.
Security Profiles

Verifying the URL filter results

Verify the URL filter results by going to a blocked website. For example, when you go to the Facebook website, the 
replacement message appears:

To customize the URL web page blocked message:

 1. Go to System > Replacement Messages.


 2. In the HTTP section, select URL Block Page and click Edit.

FortiOS 6.4.6 Administration Guide 1159


Fortinet Technologies Inc.
Security Profiles

 3. Edit the HTML to customize the message.

To check web filter logs in the GUI:

 1. Go to Log & Report > Web Filter.


 2. If there are a lot of log entries, click Add Filter and select Event Type > urlfilter to display logs generated by the URL 
filter.

To check web filter logs in the CLI:

# execute log filter category utm-webfilter


# execute log display

FortiOS 6.4.6 Administration Guide 1160


Fortinet Technologies Inc.
Security Profiles

1: date=2019-04-22 time=11:48:43 logid="0315012544" type="utm" subtype="webfilter"


eventtype="urlfilter" level="warning" vd="vdom1" eventtime=1555958923322174610
urlfilteridx=0 urlsource="Local URLfilter Block" policyid=1 sessionid=649063
srcip=10.1.200.15 srcport=50472 srcintf="wan2" srcintfrole="wan" dstip=157.240.18.35
dstport=443 dstintf="wan1" dstintfrole="wan" proto=6 service="HTTPS"
hostname="www.facebook.com" profile="webfilter" action="blocked" reqtype="direct" url="/"
sentbyte=1171 rcvdbyte=141 direction="outgoing" msg="URL was blocked because it is in the
URL filter list" crscore=30 craction=8 crlevel="high"

FortiGuard filter

The FortiGuard filter enhances the web filter features by sorting billions of web pages into a wide range of categories that 
users can allow or block.
The FortiGuard Web Filtering service includes over 45 million individual website ratings that apply to more than two 
billion pages. When the FortiGuard filter is enabled in a web filter profile and applied to firewall policies, if a request for a 
web page appears in traffic controlled by one of the firewall policies, the URL is sent to the nearest FortiGuard server. 
The URL category or rating is returned. If the category is blocked, the FortiGate shows a replacement message in place 
of the requested page. If the category is not blocked, the page request is sent to the requested URL as normal.
To use this service, you must have a valid FortiGuard license.
The following actions are available:

FortiGuard web Description


filter action

Allow Permit access to the sites in the category.

Monitor Permit and log access to sites in the category. User quotas can be enabled for this option (see 
Usage quota on page 1170).

Block Prevent access to the sites in the category. Users trying to access a blocked site see a 
replacement message indicating the site is blocked.

Warning Display a message to the user allowing them to continue if they choose.

Authenticate Require the user to authenticate with the FortiGate before allowing access to the category or 
category group.

When the action for a local or remote category is Allow, the category is disabled. The next 
category's action, in the order of preference, will be applied.

FortiGuard web filter categories

FortiGuard has many web filter categories, including two local categories and a special remote category. Refer to the 
following table for more information:

FortiOS 6.4.6 Administration Guide 1161


Fortinet Technologies Inc.
Security Profiles

FortiGuard web filter Where to find more information


category

All URL categories See Web Filter Categories.

Local categories See Web rating override on page 1284.   

Remote category See Threat feeds on page 355 and .

The priority of categories is local category > external category > FortiGuard built-in category. If a URL is configured as a 
local category, it only follows the behavior of the local category and not the external or FortiGuard built-in category.

Blocking a web category

The following example shows how to block a website based on its category. The information and computer security 
category  (category 52) will be blocked. 

To block a category in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the FortiGuard category based filter section, select Information and Computer Security, then click Block.

 3. Configure the remaining settings as needed.
 4. Click OK.

To block a category in the CLI:

config webfilter profile


edit "webfilter"
config ftgd-wf
unset options

FortiOS 6.4.6 Administration Guide 1162


Fortinet Technologies Inc.
Security Profiles

config filters
edit 1
set category 52
set action block
next
end
end
next
end

To verify that the category is blocked:

 1. Go to a website that belongs to the blocked category, such as www.fortinet.com.
The page should be blocked and display a replacement message.

To view the log of a blocked website in the GUI:

 1. Go to Log & Report > Web Filter.


 2. Select an entry with blocked in the Action column and click Details.

 3.

To view the log of a blocked website in the CLI:

# execute log filter category utm-webfilter


# execute log display

1: date=2019-04-22 time=13:46:25 logid="0316013056" type="utm" subtype="webfilter"


eventtype="ftgd_blk" level="warning" vd="vdom1" eventtime=1555965984972459609 policyid=1
sessionid=659263 srcip=10.1.200.15 srcport=49234 srcintf="wan2" srcintfrole="wan"
dstip=54.183.57.55 dstport=80 dstintf="wan1" dstintfrole="wan" proto=6 service="HTTP"

FortiOS 6.4.6 Administration Guide 1163


Fortinet Technologies Inc.
Security Profiles

hostname="www.fortinet.com" profile="webfilter" action="blocked" reqtype="direct" url="/"


sentbyte=386 rcvdbyte=0 direction="outgoing" msg="URL belongs to a denied category in
policy" method="domain" cat=52 catdesc="Information Technology"

Allowing users to override blocked categories

There is an option to allow users with valid credentials to override blocked categories.

To allow users to override blocked categories in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. Enable  Allow users to override blocked categories.
 3. Enter  information in the following fields:
 l Groups that can override
 l Profile name
 l Switch applies to
 l Switch Duration
 4. Configure the other settings as needed.

 5. Click OK.

To allow users to override blocked categories in the CLI:

config webfilter profile


edit "webfilter"
set ovrd-perm bannedword-override urlfilter-override fortiguard-wf-override
contenttype-check-override
config override
set ovrd-user-group "radius_group"
set profile "webfilter"
end
config ftgd-wf
unset options
end
next
end

FortiOS 6.4.6 Administration Guide 1164


Fortinet Technologies Inc.
Security Profiles

Issuing a warning on a web category

The following example shows how to issue a warning when a user visits a website in a specific category (information and 
computer security, category 52).

To configure a warning for a category in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the FortiGuard category based filter section, select Information and Computer Security, then click Warning.
 3. Set the Warning Interval, then click OK.
The warning interval is the amount of time until the warning appears again after the user proceeds past it.

 4. Configure the remaining settings as needed. 
 5. Click OK.

To configure a warning for a category in the CLI:

config webfilter profile


edit "webfilter"
config ftgd-wf
unset options
config filters
edit 1
set category 52
set action warning
next
end
end
next
end

FortiOS 6.4.6 Administration Guide 1165


Fortinet Technologies Inc.
Security Profiles

To verify that the warning works:

 1. Go to a website that belongs to the category, such as www.fortinet.com.
 2. On the warning page, click Proceed or Go Back.

Authenticating a web category

The following example shows how to authenticate a website based on its category (information and computer security, 
category 52).

To authenticate a category in the GUI:

 1. Go to Security Profiles > Web Filter and edit or create a new web filter profile.


 2. In the FortiGuard category based filter section, select Information and Computer Security, then click Authenticate.
 3. Set the Warning Interval and select one or more user groups, then click OK.
 4. Configure the remaining settings as needed.
 5. Click OK.

To authenticate a category in the CLI:

config webfilter profile


edit "webfilter"
config ftgd-wf
unset options
config filters
edit 1
set category 52
set action authenticate
set auth-usr-grp "local_group"
next
end
end
next
end

FortiOS 6.4.6 Administration Guide 1166


Fortinet Technologies Inc.
Security Profiles

To verify that you have configured authentication:

 1. Go to a website that belongs to the category, such as www.fortinet.com.
 2. On the warning page, click Proceed.

 3. Enter the username and password for the configured user group, then click Continue.

Customizing the replacement message page

When the category action is Block, Warning, or Authenticate, you can customize the replacement message page that a 
user sees.

To customize the replacement message page:

 1. Go to Security Profiles > Web Filter and edit or create a new web filter profile.


 2. In the FortiGuard category based filter section, right-click on a category and select Customize.
 3. Select a Replacement Message Group. See Replacement message groups on page 921 for details.
 4. Optionally, click Edit FortiGuard Block Page or Edit FortiGuard Warning Page to make  modifications.
 5. Click Save. 
 6. Configure the remaining settings as needed.
 7. Click OK.

Credential phishing prevention

When credential phishing prevention is enabled, the FortiGate scans for corporate credentials submitted to external 
websites and compares them to sensitive credentials stored in the corporate domain controller. Based on the configured 
antiphishing rules in proxy mode web filter profiles, the FortiGate will block the URL or alert the user if the credentials 
match ones that are stored on the corporate domain controller.
 l The corporate domain controller must be configured in the credential-store. 
 l Credentials can be matched based on sAMAccountName, user principal name (UPN), or down-level logon name.

FortiOS 6.4.6 Administration Guide 1167


Fortinet Technologies Inc.
Security Profiles

 l The antiphishing profile defines the corporate domain controller, antiphishing check option, default action if no rules 
match, antiphishing status, and so on.
 l Inspection entries in the profile define what action occurs when the submission request matches the specified 
FortiGuard categories.
 l The profile  scans for pre-defined and custom username and password fields in the HTTP request, such as 
username, auth, and password. You can evaluate custom fields by configuring custom patterns.
 l The URL filter defines individual URLs that the antiphish action (block or log) is applied to when the URL submission 
request matches.

Web-based URL filter actions and FortiGuard category-based filtering have higher priority than 
antiphishing URL filter actions and FortiGuard filtering:
 l If a request is blocked by the web-based URL filter or FortiGuard filter, there is no further 
antiphishing scanning. Antiphishing scanning only happens after the web-based URL 
filtes and FortiGuard filters allow the traffic.
 l If a submission matches an entry in the URL filter table that has an antiphishing action, 
the defined action is taken. No further FortiGuard category-based rules are applied.
 l Like firewall rules, the URL filter table and Fortiguard category-based antiphishing rules 
use a top-down priority. The rule that matches first is the one that is used.

In this example, URLs that match FortiGuard category 37 (social networking) will be blocked and other categories will be 
logged.

To configure credential phishing prevention:

 1. Configure the corporate domain controller:
config credential-store domain-controller
edit "win2016"
set hostname "win2016"
set domain-name "corpserver.local"
set username "Administrator"
set password **********
set ip <server_ip>
next
end

The hostname and the domain-name are case sensitive.

 2. Configure the antiphishing profile, which includes the FortiGuard category rule: 
config webfilter profile
edit <profile-name>
set feature-set proxy
...
config web
...
end
config antiphish
set status enable
set domain-controller "win2016"

FortiOS 6.4.6 Administration Guide 1168


Fortinet Technologies Inc.
Security Profiles

set default-action block


set check-uri enable
set check-basic-auth enable
set max-body-len 65536
config inspection-entries
edit "inspect-37"
set fortiguard-category 37
set action block
next
edit "inspect-others"
set fortiguard-category all
set action log
next
end
config custom-patterns
edit "customer-name"
set category username
next
edit "customer-passwd"
set category password
next
end
end
...
set web-antiphishing-log enable
next
end

 l check-uri enables support for scanning HTTP GET URI parameters.
 l check-basic-auth enables support for scanning the HTTP basic authentication field.
 3. Configure the URL filter to scan specific URLs.
The antiphish action is added to the URL filter table entry, and the URL filter is applied to the web filter profile:
config webfilter urlfilter
edit 1
set name "antiphish-table"
config entries
edit 1
set url "www.example.com"
set type simple
set antiphish-action block
set status enable
set referrer-host ''
next
end
next
end
config webfilter profile
edit "<profile-name>"
config web
set urlfilter-table 1
end
...
next
end

FortiOS 6.4.6 Administration Guide 1169


Fortinet Technologies Inc.
Security Profiles

 4. Optionally, define custom patterns to scan fields other than the built-in username and password keywords:
config webfilter profile
edit "<profile-name>"
config custom-patterns
edit "customer-name"
set category username
next
edit "customer-passwd"
set category password
next
end
end
next
end

Usage quota

In addition to using category and classification blocks and overrides to limit user access to URLs, you can set a daily 
quota by category, category group, or classification. Quotas allow access for a specified length of time or a specific 
bandwidth, and are calculated separately for each user. Quotas are reset daily at midnight.
Quotas can be set for the Monitor, Warning, or Authenticate actions. Once the quota is reached, the traffic is blocked and 
the replacement message page displays.

Quotas are only available in proxy-based inspection mode.

Configuring a quota

The following example shows how to set a time quota for the education category (category 30).

To configure a quota in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. For Feature set, select Proxy-based.
 3. In the FortiGuard category based filter section, scroll to the General Interest - Personal and click the + to expand the 
section. 

FortiOS 6.4.6 Administration Guide 1170


Fortinet Technologies Inc.
Security Profiles

 4. Select Education, then click Monitor.

 5. In the Category Usage Quota section, click Create New.


The New/Edit Quota pane opens.
 6. In  the Category field, select Education.
 7. For the Quota Type, select Time and set the Total quota to 5 minutes.

 8. Click OK. The entry appears in the table.

 9. Configure the other settings as needed.
 10. Click OK.

To configure a quota in the CLI:

config webfilter profile


edit "webfilter"
config ftgd-wf
unset options
config filters

FortiOS 6.4.6 Administration Guide 1171


Fortinet Technologies Inc.
Security Profiles

edit 1
set category 30
next
end
config quota
edit 1
set category 30
set type time
set duration 5m
next
end
end
next
end

To verify the quota usage:

 1. Go to a website that belongs to the education category, such https://www.harvard.edu/. You can view websites in 
that category at the moment.
 2. In FortiOS, go to Dashboard > FortiGuard Quota Monitor to check the used and remaining time .

 3. When the quota reaches its limit, traffic is blocked and the replacement page displays.

Web content filter

You can control access to web content by blocking webpages containing specific words or patterns. This helps to 
prevent access to pages with questionable material. You can specify words, phrases, patterns, wildcards, and regular 
expressions to match content on webpages. You can use multiple web content filter lists and select the best one for each 
web filter profile. The maximum number of web content patterns in a list is 5000.
When configuring a web content filter list, the following patterns are available:

FortiOS 6.4.6 Administration Guide 1172


Fortinet Technologies Inc.
Security Profiles

Web content Description


pattern type

Wildcard Use this setting to block or exempt one word or text strings of up to 80 characters. You can 
also use wildcard symbols such as ? or * to represent one or more characters. For example, a 
wildcard expression forti*.com matches fortinet.com and fortiguard.com. The * represents any 
character appearing any number of times.

Regular expression Use this setting to block or exempt patterns of regular expressions that use some of the same 


symbols as wildcard expressions, but for different purposes. In regular expressions, * 
represents the character before the symbol. For example, forti*.com matches fortiii.com but 
not fortinet.com or fortiice.com. In this case, the symbol * represents i appearing any number 
of times.

Content evaluation

The web content filter scans the content of every webpage that is accepted by a firewall policy. The system administrator 
can specify banned words and phrases and attach a numerical value (or score) to the importance of those words and 
phrases. When the web content filter scan detects banned content, it adds the scores of banned words and phrases 
found on that page. If the sum is higher than a threshold set in the web filter profile, the FortiGate blocks the page.
The default score for web content filter is 10 and the default threshold is 10. This means that by default, a webpage is 
blocked by a single match. These settings can only be configured in the CLI.
Banned words or phrases are evaluated according to the following rules:
 l The score for each word or phrase is counted only once, even if that word or phrase appears many times in the 
webpage.
 l The score for any word in a phrase without quotation marks is counted.
 l The score for a phrase in quotation marks is counted only if it appears exactly as written.
The following table is an example of how rules are applied to the webpage contents . For example, a webpage contains 
only this sentence:
The score for each word or phrase is counted only once, even if that word or phrase appears many times in the
webpage.

Banned Assigned Score Threshold Comment


pattern score added to score
the sum
for the
entire
page

word 20 20 20 Appears twice but is only counted once. The webpage 
is blocked.

word phrase 20 40 20 Each word appears twice but is only counted once, 
giving a total score of 40. The webpage is blocked.

word sentence 20 20 20 word appears twice and sentence does not appear, but 
since any word in a phrase without quotation marks is 
counted, the score for this pattern is 20. The webpage 
is blocked.

FortiOS 6.4.6 Administration Guide 1173


Fortinet Technologies Inc.
Security Profiles

Banned Assigned Score Threshold Comment


pattern score added to score
the sum
for the
entire
page

"word  20 0 20 This phrase does not appear exactly as written. The 
sentence" webpage is allowed.

"word or  20 20 20 This phrase appears twice but is only counted once. 
phrase" The webpage is blocked.

To configure a web content filter in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the Static URL Filter section, enable Content Filter.

 3. Click Create New. The New Web Content Filter pane opens.


 4. Configure the following settings:

Pattern Type Regular Expression

Pattern fortinet

Language Western

Action Block

Status Enable

 5. Click OK. The entry appears in the table.

 6. Configure the other settings as needed.
 7. Click OK.

FortiOS 6.4.6 Administration Guide 1174


Fortinet Technologies Inc.
Security Profiles

To configure a web content filter in the CLI:

 1. Create the content (banned word) table:
config webfilter content
edit 1
set name "webfilter"
config entries
edit "fortinet"
set pattern-type regexp
set status enable
set lang western
set score 10
set action block
next
end
next
end

 2. Apply the content table to the web filter profile:
config webfilter profile
edit "webfilter"
config web
set bword-threshold 10
set bword-table 1
end
config ftgd-wf
unset options
end
next
end

To verify the content filter:

 1. Go to a website with the word fortinet, such as www.fortinet.com.
The website is blocked and a replacement page displays:

Advanced filters 1

This topic gives examples of the following advanced filter features:
 l Block malicious URLs discovered by FortiSandbox on page 1176
 l Allow websites when a rating error occurs on page 1176
 l Rate URLs by domain and IP address on page 1177
 l Block invalid URLs on page 1177

FortiOS 6.4.6 Administration Guide 1175


Fortinet Technologies Inc.
Security Profiles

Block malicious URLs discovered by FortiSandbox

This setting blocks malicious URLs that FortiSandbox finds. Your FortiGate must be connected to a registered 
FortiSandbox.
For information on configuring FortiSandbox, see Using FortiSandbox with antivirus on page 1141 and Using 
FortiSandbox Cloud with antivirus on page 1148.

To block malicious URLs discovered by FortiSandbox in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the Static URL Filter section, enable Block malicious URLs discovered by FortiSandbox.

 3. Click OK.

To block malicious URLs discovered by FortiSandbox in the CLI:

config webfilter profile


edit "webfilter"
config web
set blacklist enable
end
next
end

Allow websites when a rating error occurs

If you do not have a FortiGuard license, but you have enabled services that need a FortiGuard license (such as 
FortiGuard filter), then you will get a rating error message.
Use this setting to allow access to websites that return a rating error from the FortiGuard Web Filter service.

To allow websites with rating errors in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the Rating Options section, enable Allow websites when a rating error occurs.
 3. Click OK.

To allow websites with rating errors in the CLI:

config webfilter profile


edit "webfilter"
config ftgd-wf
set options error-allow
end
next
end

FortiOS 6.4.6 Administration Guide 1176


Fortinet Technologies Inc.
Security Profiles

Rate URLs by domain and IP address

If you enable this setting, in addition to only sending domain information to FortiGuard for rating, the FortiGate always 
sends both the URL domain name and the TCP/IP packet's IP address (except for private IP addresses) to FortiGuard 
for the rating.
The FortiGuard server might return a different category of IP address and URL domain. If they are different, the 
FortiGate uses the rating weight of the IP address or domain name to determine the rating result and decision. This 
rating weight is hard-coded in FortiOS.
For example, if we use a spoof IP of Google as www.irs.gov, the FortiGate will send both the IP address and domain 
name to FortiGuard to get the rating. We get two different ratings: one is the search engine and portals that belong to the 
Google IP, the second is the government and legal organizations that belongs to www.irs.gov. Because the search 
engine and portals rating has a higher weight than government and legal organizations, the traffic is rated as search 
engine and portals.

To rate URLs by domain and IP address in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the Rating Options section, enable Rate URLs by domain and IP address.
 3. Click OK.

To rate URLs by domain and IP address in the CLI:

config webfilter profile


edit "webfilter"
config ftgd-wf
set options rate-server-ip
end
next
end

Block invalid URLs

Use this setting to block websites when their SSL certificate CN field does not contain a valid domain name.
This option also blocks URLs that contains spaces. If there is a space in the URL, it must be written as %20 in the URL 
path.

To block invalid URLs in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the Static URL Filter section, enable Block invalid URLs .

 3. Click OK.

FortiOS 6.4.6 Administration Guide 1177


Fortinet Technologies Inc.
Security Profiles

To block invalid URLs in the CLI:

config webfilter profile


edit "webfilter"
set options block-invalid-url
next
end

Advanced filters 2

This topic gives examples of the following advanced filter features:
 l Safe search on page 1178
 l YouTube education filters on page 1179
 l Restrict YouTube access on page 1179
 l YouTube channel filtering on page 1179
 l Log all search keywords on page 1181
 l Restrict Google account usage to specific domains on page 1181
 l HTTP POST action on page 1182
 l Remove Java applets, ActiveX, and cookies on page 1182

These advanced filters are only available in proxy-based inspection mode.

Safe search

This setting applies to popular search sites and prevents explicit websites and images from appearing in search results.
The supported search sites are:
 l Google
 l Yahoo
 l Bing
 l Yandex

To enable safe search in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the Search Engines section, enable Enforce 'Safe Search' on Google, Yahoo!, Bing, Yandex.

 3. Click OK.

FortiOS 6.4.6 Administration Guide 1178


Fortinet Technologies Inc.
Security Profiles

To enable safe search in the CLI:

config webfilter profile


edit "webfilter"
config web
set safe-search url header
end
next
end

YouTube education filters

Use these features to limit users' access to YouTube channels. For example, in an education environment where you 
want students and users to be able to access YouTube education videos but not other YouTube videos.

Restrict YouTube access

Formerly, YouTube for Schools was a way to access educational videos inside a school network. This YouTube feature 
let schools access educational videos on YouTube EDU and specify the videos accessible within the school network.
When Google stopped supporting YouTube for Schools on July 1, 2016, YouTube safe search also stopped working.
Google provides information on restricting YouTube content, see Restrict YouTube content available to G Suite users. At 
this time, Google offers options to restrict inappropriate content for DNS, HTTP headers, and Chromebooks.

To enable restrict YouTube access in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the Search Engines section, enable Restrict YouTube Access and select Strict or Moderate.

 3. Click OK.

To restrict YouTube access in the CLI:

config webfilter profile


edit "webfilter"
config web
set youtube-restrict {none | strict | moderate}
end
next
end

YouTube channel filtering

Use this setting to block or only allow matching YouTube channels.
The following identifiers are used:
given <channel-id>, affect on:
www.youtube.com/channel/<channel-id>
www.youtube.com/user/<user-id>

FortiOS 6.4.6 Administration Guide 1179


Fortinet Technologies Inc.
Security Profiles

matches channel-id from <meta itemprop="channelId" content="<channel-id>">
www.youtube.com/watch?v=<string>

matches channel-id from <meta itemprop="channelId" content="<channel-id>">

To enable channel filtering in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the Proxy Options section, enable Restrict YouTube access to specific channels.

 3. Click Create New. The New YouTube Channel Filter pane opens.


 4. Enter the Channel ID, for example, UCGzuiiLdQZu9wxDNJHO_JnA.

 5. Click OK. The entry appears in the table with its link.

To enable channel filtering in the CLI:

config webfilter profile


edit "webfilter"
set youtube-channel-status whitelist
config youtube-channel-filter
edit 1
set channel-id "UCGzuiiLdQZu9wxDNJHO_JnA"
next
end
next
end

FortiOS 6.4.6 Administration Guide 1180


Fortinet Technologies Inc.
Security Profiles

Log all search keywords

Use this setting to log all search phrases.

To enable logging search keywords in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the Search Engines section, enable  Log all search keywords.

 3. Click OK.

To enable logging search keywords in the CLI:

config webfilter profile


edit "webfilter"
config web
set log-search enable
end
next
end

Restrict Google account usage to specific domains

Use this setting to block access to certain Google accounts and services, while allowing access to accounts with 
domains in the exception list.

To enable Google account restriction:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the Proxy Options section, enable Restrict Google account usage to specific domains.

 3. Click the + and enter the domains that Google can access, such as www.fortinet.com.

 4. Click OK.
When you try to use Google services like Gmail, only traffic from the domain of www.fortinet.com can go through. Traffic 
from other domains is blocked.

FortiOS 6.4.6 Administration Guide 1181


Fortinet Technologies Inc.
Security Profiles

HTTP POST action

Use this setting to select the action to take with HTTP POST traffic. HTTP POST is the command used by the browser 
when you send information, such as a completed form or a file you are uploading to a web server. The action options are 
allow or block. The default is allow.

To configure HTTP POST in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile.


 2. In the Proxy Options section, for HTTP POST Action, select Allow or Block.

 3. Click OK.

To configure HTTP POST in the CLI:

config webfilter profile


edit "webfilter"
set post-action {normal | block}
config ftgd-wf
unset options
end
next
end

Remove Java applets, ActiveX, and cookies

Web filter profiles have settings to filter Java applets, ActiveX, and cookies from web traffic. Note that if these filters are 
enabled, websites using Java applets, ActiveX, and cookies might not function properly.

To enable these filters in the GUI:

 1. Go to Security Profiles > Web Filter and click Create New, or edit an existing profile. and go to the Proxy Options 


section.
 2. In the Proxy Options section, enabled the filters you want to use: Remove Java Applets, Remove ActiveX, or 
Remove Cookies.

FortiOS 6.4.6 Administration Guide 1182


Fortinet Technologies Inc.
Security Profiles

To enable these filters in the CLI:

config webfilter profile


edit "webfilter"
set options {activexfilter cookiefilter javafilter}
config ftgd-wf
unset options
end
next
end

Web filter statistics

FortiOS  provides diagnostics commands to view web filter statistics reports, which are either proxy-based or flow-based. 
The commands are available in both VDOM and global command lines.

Proxy-based web filter statistics report

Use the diagnose wad filter vd {<VDOM> | global} command to filter for per-VDOM or global statistics 


reports.
In the following example, there are two VDOMs (root and vdom1) using proxy-based policies that have web filter profiles 
enabled.

To view per-VDOM statistics reports:

(global) # diagnose wad filter vd root


Drop_unknown_session is enabled.
(global) # diagnose wad stats filter list
filtering of vdom root
dlp = 0
content-type = 0
urls:
examined = 6
allowed = 3
blocked = 0
logged = 0
overridden = 0
(global) # diagnose wad filter vd vdom1
(global) # diagnose wad stats filter list
filtering of vdom vdom1
dlp = 0
content-type = 0
urls:
examined = 13
allowed = 2
blocked = 9
logged = 8
overridden = 0
(global) # diagnose wad filter vd ALL
(global) # diagnose wad stats filter list

FortiOS 6.4.6 Administration Guide 1183


Fortinet Technologies Inc.
Security Profiles

filtering of all accessible vdoms


dlp = 0
content-type = 0
urls:
examined = 19
allowed = 5
blocked = 9
logged = 8
overridden = 0

Flow-based web filter statistics report

Use the diagnose webfilter stats list {<VDOM> | global} command to check the flow-based web filter 


statistics.
In the following example, the VDOM is using flow-based policies that have web filter profiles enabled.

To view web filter statistics:

# diagnose webfilter stats list root


Proxy/flow URL filter stats:
request: 9474
blocked: 8606
allowed: 868
overridden:0
logged: 8606
pending: 0

URL certificate blocklist

As increasing numbers of malware have started to use SSL to attempt to bypass IPS, maintaining a fingerprint-based 
certificate blocklist is useful to block botnet communication that relies on SSL.
This feature adds a dynamic package that is distributed by FortiGuard and is part of the Web Filtering service. It is 
enabled by default for SSL/SSH profiles, and can be configured using the following CLI commands:
config vdom
edit <vdom>
config firewall ssl-ssh-profile
edit "certificate-inspection"
set block-blacklisted-certificates enable
next
edit "deep-inspection"
set block-blacklisted-certificates enable
next
end
next
end

FortiOS 6.4.6 Administration Guide 1184


Fortinet Technologies Inc.
Security Profiles

DNS filter

You can apply DNS category filtering to control user access to web resources. You can customize the default profile, or 
create your own to manage network user access and apply it to a firewall policy, or you can add it to a DNS server on a 
FortiGate interface. For more information about configuring DNS, see DNS on page 430. In FortiOS 6.4, the DNS proxy 
daemon handles the DNS filter in flow and proxy mode policies.
DNS filtering has the following features:
 l FortiGuard Filtering: filters the DNS request based on the FortiGuard domain rating.
 l Botnet C&C domain blocking: blocks the DNS request for the known botnet C&C domains.
 l External dynamic category domain filtering: allows you to define your own domain category.
 l DNS safe search: enforces Google, Bing, and YouTube safe addresses for parental controls.
 l Local domain filter: allows you to define your own domain list to block or allow.
 l External IP block list: allows you to define an IP block list to block resolved IPs that match this list.
 l DNS translation: maps the resolved result to another IP that you define.
DNS filtering connects to the FortiGuard secure DNS server over anycast by default. For more information about this 
configuration, see DNS over TLS on page 441.

Some features of this functionality require a subscription to FortiGuard Web Filtering.

DNS filter profiles cannot be used in firewall policies with NGFW policy-based mode; see 
Profile-based NGFW vs policy-based NGFW on page 959 for more information. They can be 
used  in the DNS server; see FortiGate DNS server on page 434 for more information.

The following topics provide information about  DNS filters:
 l Configuring a DNS filter profile on page 1185
 l FortiGuard category-based DNS domain filtering on page 1188
 l Botnet C&C domain blocking on page 1190
 l DNS safe search on page 1194
 l Local domain filter on page 1196
 l DNS translation on page 1199
 l Applying DNS filter to FortiGate DNS server on page 1202
 l Troubleshooting for DNS filter on page 1203

Configuring a DNS filter profile

Once a DNS filter is configured, it can be applied to a firewall policy.

FortiOS 6.4.6 Administration Guide 1185


Fortinet Technologies Inc.
Security Profiles

To configure DNS Filter profile in the GUI:

 1. Go to Security Profiles > DNS Filter and click Create New, or edit an existing profile.


 2. Configure the settings as needed.

 3. Click OK.

To create or configure DNS Filter profile in the CLI:

config dnsfilter profile


edit "demo"
set comment ''
config domain-filter
unset domain-filter-table
end
config ftgd-dns
set options error-allow
config filters
edit 2
set category 2
set action monitor
next
edit 7
set category 7
set action block
next
...
edit 22
set category 0
set action monitor
next
end
end
set log-all-domain enable
set sdns-ftgd-err-log enable
set sdns-domain-log enable

FortiOS 6.4.6 Administration Guide 1186


Fortinet Technologies Inc.
Security Profiles

set block-action redirect


set block-botnet enable
set safe-search enable
set redirect-portal 93.184.216.34
set youtube-restrict strict
next
end

To apply DNS Filter profile to the policy in the GUI:

 1. Go to Policy & Objects > Firewall Policy and click Create New, or edit an existing policy.


 2. In the Security Profiles section, enable DNS Filter and select the DNS filter.

 3. Configure the other settings as needed.
 4. Click OK.

To apply DNS Filter profile to the policy in the CLI:

config firewall policy


edit 1
set name "Demo"
set srcintf "port10"
set dstintf "port9"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set inspection-mode proxy
set logtraffic all
set fsso disable
set dnsfilter-profile "demo"
set profile-protocol-options "default"
set ssl-ssh-profile "deep-inspection"
set nat enable
next
end

FortiOS 6.4.6 Administration Guide 1187


Fortinet Technologies Inc.
Security Profiles

FortiGuard category-based DNS domain filtering

You can use the FortiGuard category-based DNS domain filter to inspect DNS traffic. This makes use of FortiGuard's 
continuously updated domain rating database for more reliable protection.

The FortiGate must have a FortiGuard Web Filter license to use the FortiGuard category-
based filter.

To configure FortiGuard category-based DNS domain filtering in the GUI:

 1. Go to Security Profiles > DNS Filter and click Create New, or edit an existing profile.


 2. Enable FortiGuard Category Based Filter.
 3. Select the category and then select Allow, Monitor, or Redirect to Block Portal for that category.
 4. In the Options section, select a setting for Redirect Portal IP. Select either Use FortiGuard Default (208.91.112.55) 
or click Specify and enter another portal IP. The FortiGate will use the portal IP to replace the resolved IP in the DNS 
response packet. 

 5. Click OK.

To configure FortiGuard category-based DNS domain filtering in the CLI:

config dnsfilter profile


edit "demo"
set comment ''
config domain-filter
unset domain-filter-table
end
config ftgd-dns
set options error-allow
config filters
edit 2

FortiOS 6.4.6 Administration Guide 1188


Fortinet Technologies Inc.
Security Profiles

set category 2
set action monitor
next
edit 7
set category 7
set action monitor
next
...
edit 22
set category 0
set action monitor
next
end
end
set log-all-domain enable
set sdns-ftgd-err-log enable
set sdns-domain-log enable
set block-action {redirect | block}
set block-botnet enable
set safe-search enable
set redirect-portal 93.184.216.34
set youtube-restrict strict
next
end

Verifying the logs

From your internal network PC, use a command line tool, such as dig or nslookup, to do a DNS query for some domains. 
For example:
#dig www.example.com
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 61252
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 13; ADDITIONAL: 11

;; QUESTION SECTION:
;; www.example.com. IN A

;; ANSWER SECTION:
www.example.com. 17164 IN A 93.184.216.34

;; AUTHORITY SECTION:
com. 20027 IN NS h.gtld-servers.net.
com. 20027 IN NS i.gtld-servers.net.
com. 20027 IN NS f.gtld-servers.net.
com. 20027 IN NS d.gtld-servers.net.
com. 20027 IN NS j.gtld-servers.net.
com. 20027 IN NS l.gtld-servers.net.
com. 20027 IN NS e.gtld-servers.net.
com. 20027 IN NS a.gtld-servers.net.
com. 20027 IN NS k.gtld-servers.net.
com. 20027 IN NS g.gtld-servers.net.
com. 20027 IN NS m.gtld-servers.net.
com. 20027 IN NS c.gtld-servers.net.
com. 20027 IN NS b.gtld-servers.net.

;; ADDITIONAL SECTION:

FortiOS 6.4.6 Administration Guide 1189


Fortinet Technologies Inc.
Security Profiles

a.gtld-servers.net. 21999 IN A 192.5.6.30


a.gtld-servers.net. 21999 IN AAAA 2001:503:a83e::2:30
b.gtld-servers.net. 21997 IN A 192.33.14.30
b.gtld-servers.net. 21997 IN AAAA 2001:503:231d::2:30
c.gtld-servers.net. 21987 IN A 192.26.92.30
c.gtld-servers.net. 20929 IN AAAA 2001:503:83eb::30
d.gtld-servers.net. 3340 IN A 192.31.80.30
d.gtld-servers.net. 3340 IN AAAA 2001:500:856e::30
e.gtld-servers.net. 19334 IN A 192.12.94.30
e.gtld-servers.net. 19334 IN AAAA 2001:502:1ca1::30
f.gtld-servers.net. 3340 IN A 192.35.51.30

;; Received 509 B
;; Time 2019-04-05 09:39:33 PDT
;; From 172.16.95.16@53(UDP) in 3.8 ms

To check the DNS filter log in the GUI:

 1. Go to Log & Report > DNS Query. There are logs for the DNS traffic that just passed through the FortiGate with the 


FortiGuard rating for the domain name.

To check the DNS filter log in the CLI:

#execute log filter category utm-dns

# execute log display


2 logs found.
2 logs returned.

1: date=2019-04-05 time=09:39:34 logid="1501054802" type="utm" subtype="dns" eventtype="dns-


response" level="notice" vd="vdom1" eventtime=1554482373 policyid=1 sessionid=50868
srcip=10.1.100.18 srcport=34308 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="demo" xid=17647
qname="www.example.com" qtype="A" qtypeval=1 qclass="IN" ipaddr="93.184.216.34" msg="Domain
is monitored" action="pass" cat=52 catdesc="Information Technology"

2: date=2019-04-05 time=09:39:34 logid="1500054000" type="utm" subtype="dns" eventtype="dns-


query" level="information" vd="vdom1" eventtime=1554482373 policyid=1 sessionid=50868
srcip=10.1.100.18 srcport=34308 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="demo" xid=17647
qname="www.example.com" qtype="A" qtypeval=1 qclass="IN"

Botnet C&C domain blocking

FortiGuard Service continually updates the botnet C&C domain list. The botnet C&C domain blocking feature can block 
the botnet website access at the DNS name resolving stage. This provides additional protection for your network.

FortiOS 6.4.6 Administration Guide 1190


Fortinet Technologies Inc.
Security Profiles

To configure botnet C&C domain blocking in the GUI:

 1. Go to Security Profiles > DNS Filter and click Create New, or edit an existing profile.


 2. Enable Redirect botnet C&C requests to Block Portal.
 3. Optionally, click the botnet package link. The Botnet C&C Domain Definitions pane opens, which displays the latest 
list.

 4. Configure the other settings as needed.
 5. Click OK.

To configure botnet C&C domain blocking in the CLI:

config dnsfilter profile


edit "demo"
set comment ''
config domain-filter
unset domain-filter-table
end
config ftgd-dns
set options error-allow
config filters
...
end
end
set log-all-domain enable
set sdns-ftgd-err-log enable
set sdns-domain-log enable
set block-action block
set block-botnet enable
set safe-search enable
set redirect-portal 208.91.112.55
set youtube-restrict strict
next
end

FortiOS 6.4.6 Administration Guide 1191


Fortinet Technologies Inc.
Security Profiles

Verifying the logs

Select a botnet domain from that list. From your internal network PC, use a command line tool, such as dig or nslookup, 
to send a DNS query to traverse the FortiGate. For example: 
#dig canind.co
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 997
;; Flags: qr rd; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 0

;; QUESTION SECTION:
;; canind.co. IN A

;; ANSWER SECTION:
canind.co. 60 IN A 208.91.112.55

;; Received 43 B
;; Time 2019-04-05 09:55:21 PDT
;; From 172.16.95.16@53(UDP) in 0.3 ms

The botnet domain query was blocked and redirected to the portal IP (208.91.112.55) .

To check the DNS filter log in the GUI:

 1. Go to Log & Report > DNS Query to view the DNS query blocked as a botnet domain.

To check the DNS filter log in the CLI:

(vdom1) # execute log filter category utm-dns

(vdom1) # execute log display


2 logs found.
2 logs returned.

1: date=2019-04-04 time=16:43:59 logid="1501054601" type="utm" subtype="dns" eventtype="dns-


response" level="warning" vd="vdom1" eventtime=1554421439 policyid=1 sessionid=14135
srcip=10.1.100.18 srcport=57447 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="demo" xid=24339
qname="canind.co" qtype="A" qtypeval=1 qclass="IN" msg="Domain was blocked by dns botnet
C&C" action="redirect" botnetdomain="canind.co"

2: date=2019-04-04 time=16:43:59 logid="1500054000" type="utm" subtype="dns" eventtype="dns-


query" level="information" vd="vdom1" eventtime=1554421439 policyid=1 sessionid=14135
srcip=10.1.100.18 srcport=57447 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="demo" xid=24339
qname="canind.co" qtype="A" qtypeval=1 qclass="IN"

Botnet C&C IPDB blocking

FortiOS also maintains a botnet C&C IP address database (IPDB). If a DNS query response IP address (resolved IP 
address) matches an entry inside the botnet IPDB, this DNS query is blocked by the DNS filter botnet C&C.

FortiOS 6.4.6 Administration Guide 1192


Fortinet Technologies Inc.
Security Profiles

To view the botnet IPDB list in the CLI:

(global) # diagnose sys botnet list 9000 10


9000. proto=TCP ip=103.228.28.166, port=80, rule_id=7630075, name_id=3, hits=0
9001. proto=TCP ip=5.9.32.166, port=481, rule_id=4146631, name_id=7, hits=0
9002. proto=TCP ip=91.89.44.166, port=80, rule_id=48, name_id=96, hits=0
9003. proto=TCP ip=46.211.46.166, port=80, rule_id=48, name_id=96, hits=0
9004. proto=TCP ip=77.52.52.166, port=80, rule_id=48, name_id=96, hits=0
9005. proto=TCP ip=98.25.53.166, port=80, rule_id=48, name_id=96, hits=0
9006. proto=TCP ip=70.120.67.166, port=80, rule_id=48, name_id=96, hits=0
9007. proto=TCP ip=85.253.77.166, port=80, rule_id=48, name_id=96, hits=0
9008. proto=TCP ip=193.106.81.166, port=80, rule_id=48, name_id=96, hits=0
9009. proto=TCP ip=58.13.84.166, port=80, rule_id=48, name_id=96, hits=0

Select an IP address from the IPDB list and use a reverse lookup service to find its corresponding domain name. From 
your internal network PC, use a command line tool, such as dig or nslookup, to query this domain and verify that it is 
blocked by the DNS filter botnet C&C. For example:
# dig cpe-98-25-53-166.sc.res.rr.com
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 35135
;; Flags: qr rd; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 0

;; QUESTION SECTION:
;; cpe-98-25-53-166.sc.res.rr.com. IN A

;; ANSWER SECTION:
cpe-98-25-53-166.sc.res.rr.com. 60 IN A 208.91.112.55

;; Received 64 B
;; Time 2019-04-05 11:06:47 PDT
;; From 172.16.95.16@53(UDP) in 0.6 ms

Since the resolved IP address matches the botnet IPDB, the  query was blocked and redirected to the portal IP 
(208.91.112.55) .

To check the DNS filter log in the GUI:

 1. Go to Log & Report > DNS Query to view the DNS query blocked by botnet C&C IPDB.

To check the DNS filter log in the CLI:

(global) # execute log filter category utm-dns

(global) # execute log display


2 logs found.
2 logs returned.

1: date=2019-04-05 time=11:06:48 logid="1501054600" type="utm" subtype="dns" eventtype="dns-


response" level="warning" vd="vdom1" eventtime=1554487606 policyid=1 sessionid=55232
srcip=10.1.100.18 srcport=60510 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="demo" xid=16265
qname="cpe-98-25-53-166.sc.res.rr.com" qtype="A" qtypeval=1 qclass="IN"
ipaddr="93.184.216.34" msg="Domain was blocked by dns botnet C&C" action="redirect"

FortiOS 6.4.6 Administration Guide 1193


Fortinet Technologies Inc.
Security Profiles

botnetip=98.25.53.166

2: date=2019-04-05 time=11:06:48 logid="1500054000" type="utm" subtype="dns" eventtype="dns-


query" level="information" vd="vdom1" eventtime=1554487606 policyid=1 sessionid=55232
srcip=10.1.100.18 srcport=60510 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="demo" xid=16265
qname="cpe-98-25-53-166.sc.res.rr.com" qtype="A" qtypeval=1 qclass="IN"

To check botnet activity:

 1. Go to Dashboard > Status and locate the Botnet Activity widget.

 2. If you do not see the widget, click  Add Widget, and add the Botnet Activity widget.

DNS safe search

The DNS safe search option helps avoid explicit and inappropriate results in the Google, Bing, and YouTube search 
engines. The FortiGate responds with content filtered by the search engine.

For individual search engine safe search specifications, refer to the documentation for Google, 
Bing, and YouTube.

To configure safe search in the GUI:

 1. Go to Security Profiles > DNS Filter and click Create New, or edit an existing profile.


 2. Enable Enforce 'Safe search' on Google, Bing, YouTube.
 3. For Restrict YouTube Access, click Strict or Moderate.

 4. Configure the other settings as needed.
 5. Click OK.

To configure safe search in the CLI:

config dnsfilter profile


edit "demo"

FortiOS 6.4.6 Administration Guide 1194


Fortinet Technologies Inc.
Security Profiles

config ftgd-dns
set options error-allow
config filters
edit 2
set category 2
next
...
end
end
set log-all-domain enable
set block-botnet enable
set safe-search enable
set youtube-restrict strict
next
end

Verifying the logs

From your internal network PC, use a command line tool, such as dig or nslookup, and perform a DNS query on 
www.bing.com. For example: 
# dig www.bing.com
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 46568
;; Flags: qr rd ra; QUERY: 1; ANSWER: 2; AUTHORITY: 0; ADDITIONAL: 0

;; QUESTION SECTION:
;; www.bing.com. IN A

;; ANSWER SECTION:
www.bing.com. 103 IN CNAME strict.bing.com
strict.bing.com. 103 IN A 204.79.197.220

;; Received 67 B
;; Time 2019-04-05 14:34:52 PDT
;; From 172.16.95.16@53(UDP) in 196.0 ms

The DNS query for www.bing.com returns with a CNAME strict.bing.com, and an A record for the CNAME. The user's 
web browser then connects to this address with the same search engine UI, but any explicit content search is filtered out. 

To check the DNS filter log in the GUI:

 1. Go to Log & Report > DNS Query.

The DNS filter log in FortiOS shows a message of DNS Safe Search enforced.

To check the DNS filter log in the CLI:

# execute log filter category utm-dns


# execute log display
2 logs found.
2 logs returned.

1: date=2019-04-05 time=14:34:53 logid="1501054804" type="utm" subtype="dns" eventtype="dns-

FortiOS 6.4.6 Administration Guide 1195


Fortinet Technologies Inc.
Security Profiles

response" level="notice" vd="vdom1" eventtime=1554500093 policyid=1 sessionid=65955


srcip=10.1.100.18 srcport=36575 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="demo" xid=59573
qname="www.bing.com" qtype="A" qtypeval=1 qclass="IN" ipaddr="204.79.197.220" msg="DNS Safe
Search enforced" action="pass" sscname="strict.bing.com" cat=41 catdesc="Search Engines and
Portals"

2: date=2019-04-05 time=14:34:53 logid="1500054000" type="utm" subtype="dns" eventtype="dns-


query" level="information" vd="vdom1" eventtime=1554500092 policyid=1 sessionid=65955
srcip=10.1.100.18 srcport=36575 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="demo" xid=59573
qname="www.bing.com" qtype="A" qtypeval=1 qclass="IN"

Local domain filter

In addition to the FortiGuard category-based domain filter, you can define a local static domain filter to allow or block 
specific domains.
In a DNS filter profile, the local domain filter has a higher priority than FortiGuard category-based domain filter. DNS 
queries are scanned and matched first with the local domain filter. If an entry matches and the local filter action is set to 
block, then that DNS query is blocked and redirected. 
If the local domain filter list has no match, then the FortiGuard category-based domain filter is used. If a DNS query 
domain name rating belongs to the block category, the query is blocked and redirected. If the FortiGuard category-based 
filter has no match, then the original resolved IP address is returned to the client DNS resolver.
If the local domain filter action is set to allow and an entry matches, it will skip the FortiGuard category-based domain 
filter and directly return to the client DNS resolver. If the local domain filter action is set to monitor and an entry matches, 
it will go to the FortiGuard category-based domain filter for scanning and matching.

To configure the local domain filter in the GUI:

 1. Go to Security Profiles > DNS Filter and click Create New, or edit an existing profile.


 2. In the Static Domain Filter section, enable Domain Filter.
 3. Click Create New. The Create Domain Filter pane opens.
 4. Enter a domain, and select a Type and Action. This example has three filters:

Domain Type Action

www.fortinet.com Simple Allow

*.example.com Wildcard Redirect to Block Portal

google Reg. Expression Monitor

FortiOS 6.4.6 Administration Guide 1196


Fortinet Technologies Inc.
Security Profiles

 5. Click OK. The entry appears in the table.

 6. Configure the other settings as needed.
 7. Click OK.

To configure the local domain filter in the CLI:

config dnsfilter domain-filter


edit 1
set name "demo"
set comment ''
config entries
edit 1
set domain "www.fortinet.com"
set type simple
set action allow
set status enable
next
edit 2
set domain "*.example.com"
set type wildcard
set action block
set status enable
next
edit 3
set domain "google"
set type regex
set action monitor
set status enable
next
end
next
end

FortiOS 6.4.6 Administration Guide 1197


Fortinet Technologies Inc.
Security Profiles

Wildcard entries are converted to regular expressions by FortiOS. As a result, wildcards will 
match any suffix, as long as there is a word boundary following the search term.
For example:
config entries
edit 1
set domain "*.host"
set type wildcard
next
end

will match wp36.host and wp36.host.pressdns.com, but not 
wp36.host123.pressdnds.com.
To avoid this, use an explicit regular expression search string:
config entries
edit 1
set domain "^.*\\.host$"
set type regexp
next
end

To check the DNS filter log in the GUI:

 1. Go to Log & Report > DNS Query.

Since the local domain filter for google is set to monitor, it is blocked by the FortiGuard category-based domain filter 
because the policy action is deny.

To check the DNS filter log in the CLI:

# execute log filter category utm-dns


# execute log display
...
7: date=2019-04-05 time=15:37:06 logid="1501054803" type="utm" subtype="dns" eventtype="dns-
response" level="warning" vd="vdom1" eventtime=1554503826 policyid=1 sessionid=69132
srcip=10.1.100.18 srcport=49832 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="demo" xid=4612
qname="www.google.com" qtype="A" qtypeval=1 qclass="IN" ipaddr="208.91.112.55" msg="Domain
belongs to a denied category in policy" action="redirect" cat=41 catdesc="Search Engines and
Portals"

8: date=2019-04-05 time=15:37:06 logid="1500054000" type="utm" subtype="dns" eventtype="dns-


query" level="information" vd="vdom1" eventtime=1554503826 policyid=1 sessionid=69132
srcip=10.1.100.18 srcport=49832 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="demo" xid=4612
qname="www.google.com" qtype="A" qtypeval=1 qclass="IN"

FortiOS 6.4.6 Administration Guide 1198


Fortinet Technologies Inc.
Security Profiles

9: date=2019-04-05 time=15:36:59 logid="1501054400" type="utm" subtype="dns" eventtype="dns-


response" level="warning" vd="vdom1" eventtime=1554503818 policyid=1 sessionid=69121
srcip=10.1.100.18 srcport=40659 srcintf="port10" srcintfrole="undefined" dstip=172.16.95.16
dstport=53 dstintf="port9" dstintfrole="undefined" proto=17 profile="demo" xid=24730
qname="www.example.com" qtype="A" qtypeval=1 qclass="IN" msg="Domain was blocked because it
is in the domain-filter list" action="redirect" domainfilteridx=1 domainfilterlist="demo"

10: date=2019-04-05 time=15:36:59 logid="1500054000" type="utm" subtype="dns"


eventtype="dns-query" level="information" vd="vdom1" eventtime=1554503818 policyid=1
sessionid=69121 srcip=10.1.100.18 srcport=40659 srcintf="port10" srcintfrole="undefined"
dstip=172.16.95.16 dstport=53 dstintf="port9" dstintfrole="undefined" proto=17
profile="demo" xid=24730 qname="www.example.com" qtype="A" qtypeval=1 qclass="IN"

11: date=2019-04-05 time=15:36:51 logid="1501054401" type="utm" subtype="dns"


eventtype="dns-response" level="information" vd="vdom1" eventtime=1554503810 policyid=1
sessionid=69118 srcip=10.1.100.18 srcport=33461 srcintf="port10" srcintfrole="undefined"
dstip=172.16.95.16 dstport=53 dstintf="port9" dstintfrole="undefined" proto=17
profile="demo" xid=53801 qname="www.fortinet.com" qtype="A" qtypeval=1 qclass="IN"
ipaddr="13.56.55.78, 54.183.57.55" msg="Domain was allowed because it is in the domain-
filter list" action="pass" domainfilteridx=1 domainfilterlist="demo"

12: date=2019-04-05 time=15:36:51 logid="1500054000" type="utm" subtype="dns"


eventtype="dns-query" level="information" vd="vdom1" eventtime=1554503810 policyid=1
sessionid=69118 srcip=10.1.100.18 srcport=33461 srcintf="port10" srcintfrole="undefined"
dstip=172.16.95.16 dstport=53 dstintf="port9" dstintfrole="undefined" proto=17
profile="demo" xid=53801 qname="www.fortinet.com" qtype="A" qtypeval=1 qclass="IN"

DNS translation

This setting allows you to translate a DNS resolved IP address to another IP address you specify on a per-policy basis.
For example, website A has a public address of 1.2.3.4. However, when your internal network users visit this website, 
you want them to connect to the internal host 192.168.3.4. You can use DNS translation to translate the DNS resolved 
address 1.2.3.4 to 192.168.3.4. Reverse use of DNS translation is also applicable. For example, if you want a public 
DNS query of your internal server to get a public IP address, then you can translate a DNS resolved private IP to a public 
IP address.

Sample configuration

This configuration forces the DNS filter profile to translate 93.184.216.34 (www.example.com) to 192.168.3.4. When 
internal network users perform a DNS query for www.example.com, they do not get the original www.example.com IP 
address of 93.184.216.34. Instead, it is replaced with 192.168.3.4.

To configure DNS translation in the GUI:

 1. Go to Security Profiles > DNS Filter and click Create New, or edit an existing profile.


 2. In the Static Domain Filter section, enable DNS Translation.
 3. Click Create New. The New DNS Translation pane opens.
 4. Enter the Original Destination (the domain's original IP address), the Translated Destination IP address, and the 
Network Mask.

FortiOS 6.4.6 Administration Guide 1199


Fortinet Technologies Inc.
Security Profiles

 5. Click OK. The entry appears in the table.

 6. Configure the other settings as needed.
 7. Click OK.

To configure DNS translation in the CLI:

config dnsfilter profile


edit "demo"
set comment ''
...
config dns-translation
edit 1
set src 93.184.216.34
set dst 192.168.3.4
set netmask 255.255.255.255
next
end
set redirect-portal 0.0.0.0
set redirect-portal6 ::
set youtube-restrict strict
next
end

To check DNS translation using a command line tool before DNS translation:

# dig www.example.com
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 27030
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 2; ADDITIONAL: 0

;; QUESTION SECTION:

FortiOS 6.4.6 Administration Guide 1200


Fortinet Technologies Inc.
Security Profiles

;; www.example.com. IN A

;; ANSWER SECTION:
www.example.com. 33946 IN A 93.184.216.34

;; AUTHORITY SECTION:
example.com. 18578 IN NS b.iana-servers.net.
example.com. 18578 IN NS a.iana-servers.net.

;; Received 97 B
;; Time 2019-04-08 10:47:26 PDT
;; From 172.16.95.16@53(UDP) in 0.5 ms

To check DNS translation using a command line tool after DNS translation:

# dig www.example.com
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 62060
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 2; ADDITIONAL: 0

;; QUESTION SECTION:
;; www.example.com. IN A

;; ANSWER SECTION:
www.example.com. 32491 IN A 192.168.3.4

;; AUTHORITY SECTION:
example.com. 17123 IN NS b.iana-servers.net.
example.com. 17123 IN NS a.iana-servers.net.

;; Received 97 B
;; Time 2019-04-08 11:11:41 PDT
;; From 172.16.95.16@53(UDP) in 0.5 ms

DNS translation network mask

The following is an example of DNS translation that uses a network mask:

To configure DNS translation in the CLI:

config dns-translation
edit 1
set src 93.184.216.34
set dst 1.2.3.4
set netmask 255.255.224.0
next
end

To check DNS translation using a command line tool after DNS translation:

# dig www.example.com
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 6736
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 2; ADDITIONAL: 0

;; QUESTION SECTION:
;; www.example.com. IN A

FortiOS 6.4.6 Administration Guide 1201


Fortinet Technologies Inc.
Security Profiles

;; ANSWER SECTION:
www.example.com. 29322 IN A 1.2.24.34

;; AUTHORITY SECTION:
example.com. 13954 IN NS a.iana-servers.net.
example.com. 13954 IN NS b.iana-servers.net.

;; Received 97 B
;; Time 2019-04-08 12:04:30 PDT
;; From 172.16.95.16@53(UDP) in 2.0 ms

The binary arithmetic to convert  93.184.216.34 to 1.2.3.4 with the subnet mask is as follows:
 1. AND src(Original IP) with negative netmask (93.184.216.34 & ~255.255.224.0):
01011101.10111000.11011000.00100010 93.184.216.34
00000000.00000000.00011111.11111111 ~255.255.224.0
-------------------------------------------------------- &
00000000.00000000.00011000.00100010 0.0.24.34

 2. AND dst(Translated IP) with netmask:
00000001.00000010.00000011.00000100 1.2.3.4
11111111.11111111.11100000.00000000 255.255.224.0
-------------------------------------------------------- &
00000001.00000010.00000000.00000000 1.2.0.0

 3. Final step 2 bitwise-OR 3:
00000000.00000000.00011000.00100010 0.0.24.34
00000001.00000010.00000000.00000000 1.2.0.0
-------------------------------------------------------- |
00000001.00000010.00011000.00100010 1.2.24.34

Applying DNS filter to FortiGate DNS server

You can configure a FortiGate as a DNS server in your network. When you enable DNS service on a specific interface, 
the FortiGate will listen for DNS service on that interface.
Depending on the configuration, DNS service works in three modes: Recursive, Non-Recursive, or Forward to System
DNS (server). For details on how to configure the FortiGate as a DNS server and configure the DNS database, see 
FortiGate DNS server on page 434.
You can apply a DNS filter profile to Recursive and Forward to System DNS mode. This is the same as the FortiGate 
working as a transparent DNS proxy for DNS relay traffic.

To configure DNS service in the GUI:

 1. Go to Network > DNS Servers (if this option is not available, go to System > Feature Visibility and enable 


DNS Database).
 2. In the DNS Service on Interface section, click Create New and select an Interface from the dropdown.
 3. For Mode, select Forward to System DNS. 

FortiOS 6.4.6 Administration Guide 1202


Fortinet Technologies Inc.
Security Profiles

 4. Enable DNS Filter and select a profile from the dropdown.

 5. Click OK.   

To configure DNS service in the CLI:

config system dns-server


edit "port10"
set mode forward-only
set dnsfilter-profile "demo"
next
end

To check DNS service with a DNS filter profile using a command line tool:

In this example, port10 is enabled as a DNS service with the DNS filter profile demo. The IP address of port10 is 
10.1.100.5 , and the DNS filter profile is configured to block category 52 (information technology). From your internal 
network PC, use a command line tool, such as dig or nslookup, to perform a DNS query. For example:
# dig @10.1.100.5 www.fortinet.com
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 52809
;; Flags: qr rd; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 0

;; QUESTION SECTION:
;; www.fortinet.com. IN A

;; ANSWER SECTION:
www.fortinet.com. 60 IN A 208.91.112.55

;; Received 50 B
;; Time 2019-04-08 14:36:34 PDT
;; From 10.1.100.5@53(UDP) in 13.6 ms

The  relay DNS traffic was filtered based on the DNS filter profile configuration. It was blocked and redirected to the portal 
IP (208.91.112.55).

Troubleshooting for DNS filter

If you have trouble with the DNS filter profile in your policy, start with the following troubleshooting steps:
 l Check the connection between the FortiGate and FortiGuard DNS rating server (SDNS server).
 l Check that the FortiGate has a valid FortiGuard web filter license.
 l Check the FortiGate DNS filter configuration.

FortiOS 6.4.6 Administration Guide 1203


Fortinet Technologies Inc.
Security Profiles

Checking the connection between the FortiGate and FortiGuard SDNS server

You need to ensure the FortiGate can connect to the FortiGuard SDNS server. By default, the FortiGate uses UDP port 
53 to connect to the SDNS server.

To check the connection between the FortiGate and SDNS server:

 1. Verify the FortiGuard SDNS server information:
# diagnose test application dnsproxy 3
...
FDG_SERVER:208.91.112.220:53
FGD_CATEGORY_VERSION:8
SERVER_LDB: gid=6f00, tz=-420, error_allow=0
FGD_REDIR:208.91.112.55

The SDNS server IP address might be different depending on location (in this example, it is 208.91.112.220:53).
 2. In  the management VDOM, check the communication between the FortiGate and the SDNS server: 
#execute ping 208.91.112.220

 3. Optionally, you can check the communication using a PC on the internal network (this example uses dig).
 a. Disable the DNS filter profile so that it does not affect your connection check.
 b. Ping your ISP or a public DNS service provider's DNS server, for example, Google's public DNS server of 
8.8.8.8:
#dig @8.8.8.8 www.fortinet.com

Or, specify the SDNS server as a DNS server:
#dig @208.91.112.220 www.fortinet.com

 c. Verify that you can get a domain www.fortinet.com A record from the DNS server. This shows that the UDP port 
53 connection path is not blocked.
#dig @8.8.8.8 www.fortinet.com
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 35121
;; Flags: qr rd ra; QUERY: 1; ANSWER: 3; AUTHORITY: 0; ADDITIONAL: 0

;; QUESTION SECTION:
;; www.fortinet.com. IN A

;; ANSWER SECTION:
www.fortinet.com. 289 IN CNAME fortinet-prod4-858839915.us-west-
1.elb.amazonaws.com.
fortinet-prod4-858839915.us-west-1.elb.amazonaws.com. 51 IN A
52.8.142.247
fortinet-prod4-858839915.us-west-1.elb.amazonaws.com. 51 IN A
13.56.55.78

;; Received 129 B
;; Time 2019-04-29 14:13:18 PDT
;; From 8.8.8.8@53(UDP) in 13.2 ms

FortiOS 6.4.6 Administration Guide 1204


Fortinet Technologies Inc.
Security Profiles

Checking the FortiGuard DNS rating service license

The FortiGuard DNS rating service shares the license with the FortiGuard web filter, so you must have a valid web filter 
license for the DNS rating service to work. While the license is shared, the DNS rating service uses a separate 
connection mechanism from the web filter rating.

To check the DNS rating service license in the CLI:

 1. View the DNS settings: 
# diagnose test application dnsproxy 3

 2. Look for the FGD_DNS_SERVICE_LICENSE line and check that the license has not expired:
FGD_DNS_SERVICE_LICENSE:
server=208.91.112.220:53, expiry=2022-10-03, expired=0, type=2

 3. Check the dns-server lines. Some dns-server lines show secure=1 ready=1. These lines show the 


functioning servers:
dns-server:208.91.112.220:53 tz=-480 req=7 to=0 res=7 rt=1 secure=1 ready=1 timer=0
probe=0 failure=0 last_failed=0

Checking the FortiGate DNS filter profile configuration

To check the DNS filter profile configuration:

 1. In FortiOS, create a local domain filter and set the Action to Redirect to Block Portal (see Local domain filter on page 


1196).
 2. Apply this DNS filter profile to the policy.
 3. From the client PC, perform a DNS query on this domain. If you get the profile's redirected portal address, this 
means that the DNS filter profile works as expected.

Additional troubleshooting

Use  diagnose test application dnsproxy <test level> to troubleshoot further DNS proxy information, 


where:

Test level Action

1 Clear DNS cache

2 Show statistics

3 Dump DNS setting

4 Reload FQDN

5 Requery FQDN

6 Dump FQDN

7 Dump DNS cache

8 Dump DNS database

FortiOS 6.4.6 Administration Guide 1205


Fortinet Technologies Inc.
Security Profiles

Test level Action

9 Reload DNS database

10 Dump secure DNS policy/profile

11 Dump botnet domain

12 Reload secure DNS setting

13 Show hostname cache

14 Clear hostname cache

15 Show SDNS rating cache

16 Clear SDNS rating cache

17 Show DNS debug bit mask

18 Show DNS debug object members

99 Restart the dnsproxy worker

To debug DNS proxy details:

#diagnose debug application dnsproxy -1


#diagnose debug {enable | disable}

Application control

FortiGates can recognize network traffic generated by a large number of applications. Application control sensors 
specify what action to take with the application traffic. Application control uses IPS protocol decoders that can analyze 
network traffic to detect application traffic, even if the traffic uses non-standard ports or protocols. Application control 
supports  traffic detection using the HTTP protocol (versions 1.0, 1.1, and 2.0). 

FortiOS includes three preloaded application sensors: 
 l default (monitors all applications)
 l wifi-default (default configuration for offloading WiFi traffic)
 l block-high-risk
You can customize these sensors, or you can create your own to log and manage the applications on your network.
Once configured, you can add the application sensor to a firewall policy.

FortiOS 6.4.6 Administration Guide 1206


Fortinet Technologies Inc.
Security Profiles

This functionality requires a subscription to FortiGuard Application Control.

The following topics provide information about application control:
 l Basic category filters and overrides on page 1207
 l Excluding signatures in application control profiles on page 1210
 l Port enforcement check on page 1212
 l Protocol enforcement on page 1212
 l SSL-based application detection over decrypted traffic in a sandwich topology on page 1214
 l Matching multiple parameters on application control signatures on page 1215

Basic category filters and overrides

Once you have created an application sensor, you can define the applications that you want to control. You can add 
applications and filters using categories, application overrides, and/or filter overrides with designated actions (monitor, 
allow, block, or quarantine).

Configuring category filters

Categories allow you to choose groups of signatures based on a category type. Applications belonging to the category 
trigger the action that is set for the category. For a list of application control categories, refer to the FortiGuard Labs 
website.

To configure category filters in the GUI:

 1. Go to Security Profiles > Application Control and click Create New, or edit an existing sensor.


 2. Under Categories, click the icon next to the category name to set the action  or view the application signatures. 

 3. Click OK.

FortiOS 6.4.6 Administration Guide 1207


Fortinet Technologies Inc.
Security Profiles

To configure category filters in the CLI:

config application list


edit <name>
config entries
edit <id>
set category <id>
set action {pass | block | reset}
set log {enable | disable}
next
end
next
end

Configuring application and filter overrides

Multiple application signatures can be added for one sensor with a designated action. Filters can be added based on 
behavior, application category, popularity, protocol, risk, technology, or vendor subtypes. 

To configure overrides in the GUI:

 1. Go to Security Profiles > Application Control and click Create New, or edit an existing sensor.


 2. In the Application and Filter Overrides table, click Create New.
 3. Add an application:
 a. For Type, select Application.
 b. Select an Action from the dropdown.
 c. In the Search box, enter an application name and press Enter.
 d. In the search results, select desired the applications (you can select multiple applications) and click Add
Selected.

 e. Click OK.

FortiOS 6.4.6 Administration Guide 1208


Fortinet Technologies Inc.
Security Profiles

 4. Add a filter:
 a. In the Application and Filter Overrides table, click Create New.
 b. For Type, select Filter.
 c. Select an Action from the dropdown.
 d. In the Filter field, click the + . The Select Entries pane opens, and you can search based on filter subtypes. This 
example has excessive bandwidth (under behavior) and game (under application category).

 e. Click OK.
 5. Click OK.

To configure overrides in the CLI:

config application list


edit <name>
config entries
edit <id>
set protocols <integer>
set risk <integer>
set vendor <id>
set technology <id>
set behavior <id>
set popularity <integer>
set action {pass | block | reset}
set log {enable | disable}
next
end
next
end

protocols <integer> Application protocol filter (0 - 47, or all).


risk <integer> Risk or impact of allowing traffic from this application to occur (1 - 5; low (1), 
elevated (2), medium (3), high (4), and critical (5)).

FortiOS 6.4.6 Administration Guide 1209


Fortinet Technologies Inc.
Security Profiles

vendor <id> Application vendor filter (0 - 25, or all).


technology <id> Application technology filter:
 l all
 l 0 (network-protocol)
 l 1 (browser-based)
 l 2 (client-server)
 l 4 (peer-to-peer)
behavior <id> Application behavior filter:
 l all
 l 2 (botnet)
 l 3 (evasive)
 l 5 (excessive bandwidth)
 l 6 (tunneling)
 l 9 (cloud)
popularity <integer> Application popularity filter (1 - 5, from least to most popular).
action {pass | block | Pass/block traffic or reset the connection for traffic from this application (default = 
reset} block).
log {enable | disable} Enable/disable logging for this application list (default = enable).

Excluding signatures in application control profiles

In an application control list, the exclusion option allows users to specify a list of applications they wish to exclude from 
an entry filtered by category, technology, or others. By excluding the signature, the application is no longer processed on 
the entry in which it is excluded, but may match subsequent entries that exist.

To configure signature exclusion:

config application list


edit <name>
config entries
edit <id>
set category <id>
set exclusion <application id>
set action {pass | block | reset}
next
end
next
end

Sample configurations

In the following example, category 23 (social media) is blocked in the entries, and signature 34527 (Instagram) is 
excluded from this entry. Traffic to Instagram will pass because the signature is removed from entry 1 and the action of 
other-application-action is set to pass.

FortiOS 6.4.6 Administration Guide 1210


Fortinet Technologies Inc.
Security Profiles

To configure signature exclusion:

config application list


edit "test"
set other-application-action pass
set unknown-application-action pass
set other-application-log enable
set unknown-application-log enable
config entries
edit 1
set category 23
set exclusion 34527
set action block
next
end
next
end

In the following example, entry 1 is configured so that category 23 (social media) is set to pass and signature 34527 
(Instagram) is excluded. In entry 2, application 34527 (Instagram) is blocked, so the traffic to Instagram will be blocked, 
even though it is excluded in entry 1. Traffic to other signatures in category 23, such as Facebook, will still pass.

To configure signature exclusion:

config application list


edit "test"
set other-application-action pass
set unknown-application-action pass
set other-application-log enable
set unknown-application-log enable
config entries
edit 1
set category 23
set exclusion 34527
set action pass
next
edit 2
set application 34527
set action block
next
end
next
end

In the following example, an explicit proxy is behind the FortiGate with an excluded signature for 107347980 
(Proxy.HTTP) and category 6 (proxy) is set to block. The client will allow normal proxy traffic to pass, but it will discard all 
proxy application traffic (such as KProxy, Tor, and so on).

To configure signature exclusion:

config application list


edit "test"
set other-application-action pass
set unknown-application-action pass
set other-application-log enable
set unknown-application-log enable

FortiOS 6.4.6 Administration Guide 1211


Fortinet Technologies Inc.
Security Profiles

config entries
edit 1
set category 6
set exclusion 107347980
set action block
next
end
next
end

Port enforcement check

Most networking applications run on specific ports. For example, SSH runs on port 22, and Facebook runs on ports 80 
and 443.
If the default network service is enabled in the application control profile, a port enforcement check is done at the 
application profile level, and any detected application signatures running on the non-standard TCP/IP port are blocked. 
This means that each allowed application runs on its default port.

To configure port enforcement check:

config application list


edit <name>
set enforce-default-app-port enable
config entries
edit 1
set application 15896
set action pass
next
end
next
end

For example, when applying this application control sensor, FTP traffic (application 15896) with the standard port (port 
21) is allowed, while the non-standard port (port 2121) is blocked.

Protocol enforcement

Protocol enforcement allows you to configure networking services (e.g. FTP, HTTP, HTTPS) on known ports (e.g. 21, 
80, 443). For protocols that are not allowlisted under select ports, the IPS engine performs the violation action to block, 
allow, or monitor that traffic.
This feature can be used in the following scenarios::
 l When one protocol dissector confirms the service of network traffic, protocol enforcement can check whether the 
confirmed service is allowlisted under the server port. If it is not allowlisted, the traffic is considered a violation and 
IPS can take the action  specified in the configuration (block or monitor it).
 l When there is no confirmed service for the network traffic, the traffic is considered a service violation if 
IPS dissectors rule out all of the services enforced under its server port.
In an applicable profile, a default-network-service list can be created to associate well known ports with accepted 
services.

FortiOS 6.4.6 Administration Guide 1212


Fortinet Technologies Inc.
Security Profiles

To setup protocol enforcement in the CLI:

config application list


edit "protocol-GUI"
set other-application-log enable
set control-default-network-services {enable | disable} # Enable/Disable enforcement
of protocols over select ports
config default-network-services # Default network service
entries
edit 1
set port 80 # Port number, enter an integer value from <0>
to <65535>
set services http # Network protocols: http, ssh, ftp, dns,
smtp, pop3, imap, snmp, nntp, and https
next
edit 2
set port 53
set services dns
set violation-action {pass | monitor | block} # Pass, Log, or block when
non-DNS traffic run over port 53
next
end
next
end

To setup protocol enforcement in the GUI:

 1. Go to Security Profiles > Application Control.


 2. Create a new application sensor or edit an existing one.
 3. Enable Network Protocol Enforcement.
Enforcement entries can be created, edited, or deleted to configure network services on certain ports and determine 
the violation action.

FortiOS 6.4.6 Administration Guide 1213


Fortinet Technologies Inc.
Security Profiles

 4. Click Create New in the Network Protocol Enforcement table.

 5. In the New Default Network Service pane:


 a. Enter a Port number.
 b. Select Enforced protocols.
 c. Choose the Violation action.
 d. Click OK.
 6. Click OK.

SSL-based application detection over decrypted traffic in a sandwich topology

When a FortiGate is sandwiched between SSL encryption and decryption devices, the FortiGate can process the 
decrypted traffic that passes between those devices. This feature adds support for decrypted traffic in application 
control. In some pre-defined signatures, the signature is pre-marked with the require_ssl_di tag. The force-
inclusion-ssl-di-sigs option under application list allows users to control the inspection of dissected 
traffic. When this option is enabled, the IPS engine forces the pre-marked SSL-based signatures to be applied to the 
decrypted traffic of the respective applications. In the following topology, SSL Proxy 1 handles the client connection and 
SSL Proxy 2 handles the server connection, leaving the content unencrypted as traffic passes through the FortiGate.

To configure SSL-based application detection over decrypted traffic:

config application list


edit "test"
set force-inclusion-ssl-di-sigs {enable | disable}

FortiOS 6.4.6 Administration Guide 1214


Fortinet Technologies Inc.
Security Profiles

next
end

Example pre-marked SSL-based signature:

F-SBID( --vuln_id 15722; --attack_id 42985; --name "Facebook_Chat"; --group im; --protocol tcp; --default_action pass; -
-revision 4446; --app_cat 23; --vendor 3; --technology 1; --behavior 9; --pop 4; --risk 2; --language "Multiple"; --weight 20;
--depend-on 15832; --depend-on 38468; --require_ssl_di "Yes"; --casi 1; --casi 8; --parent 15832; --app_port
"TCP/443"; --severity info; --status hidden; --service http; --flow from_client; --pattern "/pull?"; --context uri; --no_case; --
pattern ".facebook.com"; --context host; --no_case; --tag set,Tag.Facebook.Pull; --tag quiet; --scan-range 10m,all; --date
20190301; )

All signatures that include the require_ssl_di tag are pre-defined and cannot be customized.

Matching multiple parameters on application control signatures

Application control signatures that support parameters (such as SCADA protocols) can have multiple parameters 
grouped together and matched at the same time. Multiple application parameter groups can be added to an override. 
Traffic will be flagged if it matches at least one parameter group.
This example uses the Modbus_Func05.Write.Single.Coil.Validation signature. This is an industrial signature, so ensure 
that no signatures are excluded:
config ips global
set exclude-signatures none
end

To configure an application sensor with multiple parameters in the GUI:

 1. Go to Security Profiles > Application Control and click Create New, or edit an existing sensor.


 2. In the Application and Filter Overrides table, click Create New.
 3. Search for Modbus_Func05.Write.Single.Coil.Validation and press Enter. A gear icon beside the signature name 
indicates it has configurable application parameters.

FortiOS 6.4.6 Administration Guide 1215


Fortinet Technologies Inc.
Security Profiles

 4. In the search results, select Modbus_Func05.Write.Single.Coil.Validation and click Add Selected.

 5. Click the Selected tab. In the Application Parameters section, click Create New.

FortiOS 6.4.6 Administration Guide 1216


Fortinet Technologies Inc.
Security Profiles

 6. Edit the parameter values as needed.

 7. Click OK.
 8. Add more signatures if needed.
 9. Click OK.

To configure an application sensor with multiple parameters in the CLI:

config application list


edit "test"
set other-application-log enable
config entries
edit 1

set application 48885


config parameters
edit 1
config members
edit 1
set name "UnitID"
set value "0:255"
next
edit 2
set name "Address"
set value "0:65535"
next
edit 3
set name "Value"
set value "0,65280"
next
end
next
end
next
edit 2

FortiOS 6.4.6 Administration Guide 1217


Fortinet Technologies Inc.
Security Profiles

set category 2 6
next
end
next
end

Intrusion prevention

With the FortiOS intrusion prevention system (IPS), you can detect and block network-based attacks. You can configure 
IPS sensors based on IPS signatures, IPS filters, outgoing connections to botnet sites, and rate-based signatures.
FortiOS includes eight preloaded IPS sensors:
l all_default
l all_default_pass
l default
l high_security
l protect_client
l protect_email_server
l protect_http_server
l wifi-default
You can customize these sensors, or you can create your own and apply it to a firewall policy.

This functionality requires a subscription to FortiGuard IPS Service.

The following  topic provides information about IPS sensors:
 l Botnet C&C IP blocking on page 1218
 l Detecting IEC 61850 MMS protocol in IPS on page 1223
 l IPS signature filter options on page 1225

Botnet C&C IP blocking

The Botnet C&C section consolidates multiple botnet options in the IPS profile. This allows you to enable botnet blocking 
across all traffic that matches the policy by configuring one setting in the GUI, or by the scan-botnet-connections 
option in the CLI.

To configure botnet C&C IP blocking in the GUI:

 1. Go to Security Profiles > Intrusion Prevention and click Create New, or edit an existing sensor.


 2. Navigate to the Botnet C&C section. 

FortiOS 6.4.6 Administration Guide 1218


Fortinet Technologies Inc.
Security Profiles

 3. For Scan Outgoing Connections to Botnet Sites, select Block or Monitor. 

 4. Configure the other settings as needed.
 5. Click OK. 
 6. Add the sensor to a firewall policy. 
The IPS engine will scan outgoing connections to botnet sites. If you access a botnet IP, an IPS log is generated for 
this attack.
 7. Go to Log & Report > Intrusion Prevention to view the log.

To configure botnet C&C IP blocking in the CLI:

config ips sensor


edit "Demo"
set scan-botnet-connections {disable | block | monitor}
next
end

The scan-botnet-connections option is no longer available in the following CLI 
commands:
 l config firewall policy
 l config firewall interface-policy
 l config firewall proxy-policy
 l config firewall sniffer

FortiOS 6.4.6 Administration Guide 1219


Fortinet Technologies Inc.
Security Profiles

Botnet IPs and domains lists

To view botnet IPs and domains lists:

 1. Go to System > FortiGuard. Botnet IPs and Botnet Domains are visible in the Intrusion Prevention section.


 2. Click View List for more details. 

FortiOS 6.4.6 Administration Guide 1220


Fortinet Technologies Inc.
Security Profiles

Botnet C&C domain blocking

To block connections to botnet domains:

 1. Go to Security Profiles > DNS Filter and click Create New, or edit an existing filter.


 2. Enable Redirect botnet C&C requests to Block Portal.  

 3. Configure the other settings as needed.
 4. Click OK.
 5. Add the filter profile to a firewall policy.

FortiOS 6.4.6 Administration Guide 1221


Fortinet Technologies Inc.
Security Profiles

Botnet C&C URL blocking

To block malicious URLs:

 1. Go to Security Profiles > Intrusion Prevention and click Create New, or edit an existing sensor.


 2. Enable Block malicious URLs.

 3. Configure the other settings as needed.
 4. Click OK.
 5. Add the sensor to a firewall policy.

Botnet C&C signature blocking

To add IPS signatures to a sensor:

 1. Go to Security Profiles > Intrusion Prevention and click Create New, or edit an existing sensor.


 2. In the IPS Signatures and Filters section, click Create New. A list of available signatures appears.
 3. For Type, select Signature. Select the signatures you want to include from the list.
 4. Configure the other settings as needed.

FortiOS 6.4.6 Administration Guide 1222


Fortinet Technologies Inc.
Security Profiles

 5. Click Add Selected.

 6. Click OK.
 7. Add the sensor to a firewall policy  to detect or block attacks that match the IPS signatures.   

Detecting IEC 61850 MMS protocol in IPS

IEC 61850 is a SCADA protocol whose services are mapped to a number of protocols, including MMS services. 
MMS/ICCP detection is supported in IPS. The purpose of the MMS dissectors is to identify every IEC 61850 service to 
distinguish different MMS/ICCP messages. IPS engine 6.0.12 and later support MMS dissectors.
The following scenarios are also supported:
 l Multiple MMS PDUs are transferred in one TCP payload, and the IPS engine identifies individuals.
 l An MMS message is split over multiple TCP segments, where MMS runs over COTP segments.
 l ICCP/TASE.2 that also uses MMS transport (ISO transport over TCP for ICCP) is detected.

FortiOS 6.4.6 Administration Guide 1223


Fortinet Technologies Inc.
Security Profiles

Industrial signatures must be enabled in the global IPS settings to receive MMS/ICCP signatures. By default, industrial 
signatures are excluded.
config ips global
set exclude-signatures none
end

Below are some industrial signatures for MMS/ICCP messages that can be detected by the IPS engine. This is not an 
exhaustive list.
 l MMS_GetNameList.Request
 l MMS_GetNamedVariableListAttributes.Request
 l MMS_GetVariableAccessAttributes.Request
 l MMS_Identify.Request
 l MMS_Initiate.Request
 l MMS_Read.Request
 l MMS_Reset.Request
 l ICCP_Transfer.Reporting
 l ICCP_Create.Dataset
 l ICCP_Abort
 l ICCP_Start.Transfer.DSTransferSet
 l ICCP_Get.Dataset.Element.Values
 l ICCP_Get.Next.DSTransfer.Set.Value
 l ICCP_Delete.Dataset
 l ICCP_Start.Transfer.IMTransferSet

Diagnose command

The COTP dissector adds support for identifying every MMS PDU, and let the IPS engine separate them, like the 
Modbus and IEC-104 services for example.
# diagnose ips debug enable all
# diagnose debug enable

FortiOS 6.4.6 Administration Guide 1224


Fortinet Technologies Inc.
Security Profiles

[284@78]ips_l7_dsct_processor: serial=8142 create: cotp


[284@78]ips_l7_dsct_processor: serial=8142 create: iec104
[284@78]ips_l7_dsct_processor: serial=8142 create: modbus

Log samples

MMS dissectors can be triggered, and MMS/ICCP signatures can be monitored and logged.

Log samples:

date=2020-03-26 time=15:51:10 logid="1059028704" type="utm" subtype="app-ctrl"


eventtype="signature" level="information" vd="vd1" eventtime=1585263070836106492 tz="-0700"
appid=43699 srcip=10.1.100.242 dstip=172.16.200.106 srcport=50963 dstport=102
srcintf="port13" srcintfrole="undefined" dstintf="port14" dstintfrole="undefined" proto=6
service="tcp/26112" direction="outgoing" policyid=1 sessionid=2711 applist="test"
action="pass" appcat="Industrial" app="MMS_Read.Request" incidentserialno=376610508
msg="Industrial: MMS_Read.Request," apprisk="elevated"
date=2020-03-26 time=16:15:45 logid="1059028704" type="utm" subtype="app-ctrl"
eventtype="signature" level="information" vd="vd1" eventtime=1585091746264983273 tz="-0700"
appid=44684 srcip=10.1.100.242 dstip=172.16.200.106 srcport=41665 dstport=102
srcintf="port13" srcintfrole="undefined" dstintf="port14" dstintfrole="undefined" proto=6
service="tcp/26112" direction="incoming" policyid=1 sessionid=194463 applist="test"
action="pass" appcat="Industrial" app="ICCP_Transfer.Reporting" incidentserialno=762763993
msg="Industrial: ICCP_Transfer.Reporting," apprisk="elevated"

IPS signature filter options

IPS signature filter options include hold-time and CVE pattern.

hold-time

The hold-time option allows you to set the amount of time that signatures are held after a FortiGuard IPS signature 
update per VDOM. During the holding period, the signature's mode is monitor. The new signatures are enabled after the 
hold-time, to avoid false positives. 
The hold-time can be from 0 days and 0 hours (default) up to 7 days, in the format ##d##h.

To configure the amount of time to hold and monitor IPS signatures:

config system ips


set signature-hold-time 3d12h
set override-signature-hold-by-id enable
end

When a signature that is on hold is matched, the log will include the message signature is on hold:
date=2010-07-06 time=00:00:57 logid="0419016384" type="utm" subtype="ips"
eventtype="signature" level="alert" vd="vd1" eventtime=1278399657778481842 tz="-0700"
severity="info" srcip=10.1.100.22 srccountry="Reserved" dstip=172.16.200.55 srcintf="port13"
srcintfrole="undefined" dstintf="port14" dstintfrole="undefined" sessionid=3620
action="detected" proto=6 service="HTTP" policyid=1 attack="Eicar.Virus.Test.File"
srcport=52170 dstport=80 hostname="172.16.200.55" url="/virus/eicar" direction="incoming"

FortiOS 6.4.6 Administration Guide 1225


Fortinet Technologies Inc.
Security Profiles

attackid=29844 profile="test" ref="http://www.fortinet.com/ids/VID29844"


incidentserialno=25165825 msg="file_transfer: Eicar.Virus.Test.File, (signature is on hold)"

To view signatures being held by rule ID 29844 on the VDOM:

# diagnose ips signature on-hold vd1 29844


Rule: 29844, attack_id: 58886, last updated: 20170411
Rule: 29844, attack_id: 59517, last updated: 20170411
Rule: 29844, attack_id: 60105, last updated: 20170411
...

To view all help signatures on the VDOM:

# diagnose ips signature on-hold vd1


Rule: 17541, attack_id: 20899, last updated: 20140423
Rule: 17557, attack_id: 20934, last updated: 20140423
Rule: 17559, attack_id: 20932, last updated: 20140423
Rule: 17560, attack_id: 20933, last updated: 20140423
Rule: 17562, attack_id: 20928, last updated: 20170908
Rule: 17677, attack_id: 21187, last updated: 20171106
Rule: 17713, attack_id: 43756, last updated: 20140424
Rule: 17759, attack_id: 21298, last updated: 20140423
...

CVE pattern

The CVE pattern option allows you to filter IPS signatures based on CVE IDs or with a CVE wildcard, ensuring that any 
signatures tagged with that CVE are automatically included.

To configure CVE patterns for CVE-2010-0177 and all CVE-2017 CVEs:

config ips sensor


edit "cve"
set comment "cve"
config entries
edit 1
set cve "cve-2010-0177"
set status enable
set log-packet enable
set action block
next
edit 2
set cve "cve-2017"
set action reset
next
end
next
end

For example, the CVE of the IPS signature Mozilla.Firefox.PluginArray.NsMimeType.Code.Execution is CVE-2010-
0177. This matches the CVE filter in the IPS sensor, so traffic is blocked and logged:
date=2020-07-13 time=15:44:56 logid="0419016384" type="utm" subtype="ips"
eventtype="signature" level="alert" vd="vd1" eventtime=1594593896666145871 tz="-0700"
severity="critical" srcip=10.1.100.22 srccountry="Reserved" dstip=172.16.200.55

FortiOS 6.4.6 Administration Guide 1226


Fortinet Technologies Inc.
Security Profiles

srcintf="port2" srcintfrole="undefined" dstintf="port1" dstintfrole="undefined"


sessionid=1638 action="dropped" proto=6 service="HTTPS" policyid=1
attack="Mozilla.Firefox.PluginArray.NsMimeType.Code.Execution" srcport=58298 dstport=443
hostname="172.16.200.55" url="/Mozilla" direction="incoming" attackid=20853 profile="sensor-
1" ref="http://www.fortinet.com/ids/VID20853" incidentserialno=124780667 msg="web_client:
Mozilla.Firefox.PluginArray.NsMimeType.Code.Execution," crscore=50 craction=4096
crlevel="critical"

File filter

The file filter can be applied directly to firewall policies and supports various traffic protocols in proxy or flow mode. 

Protocol Proxy mode Flow mode

CIFS Yes Yes

FTP Yes Yes

HTTP Yes Yes

IMAP Yes Yes

MAPI Yes No

POP3 Yes Yes

SMTP Yes Yes

SSH Yes No

Prior to FortiOS 6.4.1, file filter was embedded in the web filter, email filter, SSH inspection, and CIFS profiles.

To configure a file filter in the GUI:

 1. Configure the filter profile:
 a. Go to Security Profiles > File Filter and click Create New.
 b. Select a Feature set.
 c. In the Rules table, click Create New.
 d. Configure the settings as required.

 e. Click OK to save the rule.

FortiOS 6.4.6 Administration Guide 1227


Fortinet Technologies Inc.
Security Profiles

 f. Optionally, create more rules.

 g. Click OK to save the filter profile.
 2. Apply the filter to a policy:
 a. Go to Policy & Objects > Firewall Policy and edit an existing policy or create a new one.
 b. In the Security Profiles section, enable File Filter.
 c. Select the filter from the dropdown box.

 d. Configure the other settings as needed.
 e. Click OK.

To configure a file filter in the CLI:

 1. Configure the file filter profile:
config file-filter profile
edit "test"
set comment ''
set feature-set flow
set replacemsg-group ''
set log enable
set scan-archive-contents enable
config rules
edit "r2"
set comment ''

FortiOS 6.4.6 Administration Guide 1228


Fortinet Technologies Inc.
Security Profiles

set protocol http ftp smtp imap pop3 cifs


set action block
set direction outgoing
set password-protected any
set file-type "sis" "tar" "tiff" "torrent" "upx" "uue" "wav" "wma" "xar"
"xz" "zip"
next
edit "r1"
set comment ''
set protocol http ftp smtp imap pop3 cifs
set action log-only
set direction any
set password-protected any
set file-type ".net" "7z" "activemime" "arj" "aspack" "avi" "base64"
"bat" "binhex" "bmp" "bzip" "bzip2"
next
edit "r3"
set comment ''
set protocol http ftp smtp imap pop3
set action block
set direction any
set password-protected any
set file-type "binhex"
next
end
next
end

 2. Apply the filter to a policy:
config firewall policy
edit 1
set name "filefilter-policy"
set srcintf "port10"
set dstintf "port9"
set srcaddr "all"
set dstaddr "all"
set srcaddr6 "all"
set dstaddr6 "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set profile-protocol-options "protocol"
set ssl-ssh-profile "protocols"
set file-filter-profile "test"
set auto-asic-offload disable
set np-acceleration disable
set nat enable
next
end

Logs

Go to Log & Report > File Filter to view the file filter logs.

FortiOS 6.4.6 Administration Guide 1229


Fortinet Technologies Inc.
Security Profiles

Log samples

date=2020-04-21 time=17:04:02 logid="1900064000" type="utm" subtype="file-filter"


eventtype="file-filter" level="warning" vd="root" eventtime=1587513843211612684 tz="-0700"
policyid=1 sessionid=1751 srcip=10.1.100.22 srcport=57382 srcintf="port21"
srcintfrole="undefined" dstip=172.16.200.44 dstport=445 dstintf="port23"
dstintfrole="undefined" proto=6 service="CIFS" profile="filefilter" direction="incoming"
action="blocked" filtername="1" filename="sample\\putty.exe" filesize=454656 filetype="exe"
msg="File was blocked by file filter."
date=2020-04-21 time=17:03:54 logid="1900064000" type="utm" subtype="file-filter"
eventtype="file-filter" level="warning" vd="root" eventtime=1587513834376811325 tz="-0700"
policyid=1 sessionid=1742 srcip=10.1.100.22 srcport=36754 srcintf="port21"
srcintfrole="undefined" dstip=172.16.200.44 dstport=22 dstintf="port23"
dstintfrole="undefined" proto=6 service="SSH" subservice="SCP" profile="filefilter"
direction="incoming" action="blocked" filtername="1" filename="test.pdf" filesize=571051
filetype="pdf" msg="File was blocked by file filter."
date=2020-04-21 time=17:00:30 logid="1900064000" type="utm" subtype="file-filter"
eventtype="file-filter" level="warning" vd="root" eventtime=1587513630482716465 tz="-0700"
policyid=1 sessionid=1684 srcip=10.1.100.22 srcport=58524 srcintf="port21"
srcintfrole="undefined" dstip=172.16.200.44 dstport=143 dstintf="port23"
dstintfrole="undefined" proto=6 service="IMAP" profile="filefilter" direction="incoming"
action="blocked" from="[email protected]" to="[email protected]"
recipient="pc4user2" subject="QA Test" filtername="1" filename="test.JPG" filesize=48079
filetype="jpeg" msg="File was blocked by file filter."
date=2020-04-21 time=16:59:58 logid="1900064000" type="utm" subtype="file-filter"
eventtype="file-filter" level="warning" vd="root" eventtime=1587513598866551739 tz="-0700"
policyid=1 sessionid=1674 srcip=10.1.100.22 srcport=39854 srcintf="port21"
srcintfrole="undefined" dstip=172.16.200.44 dstport=110 dstintf="port23"
dstintfrole="undefined" proto=6 service="POP3" profile="filefilter" direction="incoming"
action="blocked" from="[email protected]" to="[email protected]"
recipient="pc4user2" subject="QA Test" filtername="1" filename="test.JPG" filesize=48079
filetype="jpeg" msg="File was blocked by file filter."
date=2020-04-21 time=16:58:31 logid="1900064000" type="utm" subtype="file-filter"
eventtype="file-filter" level="warning" vd="root" eventtime=1587513511516745955 tz="-0700"
policyid=1 sessionid=1619 srcip=10.1.100.22 srcport=53144 srcintf="port21"
srcintfrole="undefined" dstip=172.16.200.44 dstport=25 dstintf="port23"
dstintfrole="undefined" proto=6 service="SMTP" profile="filefilter" direction="outgoing"
action="blocked" from="[email protected]" to="[email protected]"
sender="[email protected]" recipient="[email protected]" subject="QA Test"
filtername="1" filename="test.PNG" filesize=65173 filetype="png" msg="File was blocked by
file filter."
date=2020-04-21 time=16:58:14 logid="1900064000" type="utm" subtype="file-filter"
eventtype="file-filter" level="warning" vd="root" eventtime=1587513494608988795 tz="-0700"
policyid=1 sessionid=1605 srcip=10.1.100.22 srcport=43186 srcintf="port21"
srcintfrole="undefined" dstip=172.16.200.44 dstport=21 dstintf="port23"
dstintfrole="undefined" proto=6 service="FTP" profile="filefilter" direction="incoming"
action="blocked" filtername="1" filename="index.html" filesize=21 filetype="html" msg="File
was blocked by file filter."

Supported file types

FortiOS 6.4.6 Administration Guide 1230


Fortinet Technologies Inc.
Security Profiles

File filter  allows the FortiGate to block files passing through based on file type based on the file's meta data only, and not 
on file size or file content. A DLP sensor must be configured to block files based on size or content, such as SSN 
numbers, credit card numbers or regexp.
The following file types are supported: 

Type Description

.net  Match .NET files 

7z  Match 7-Zip files 

activemime  Match ActiveMime files 

arj  Match ARJ compressed files 

aspack  Match ASPack files 

avi  Match AVI files 

base64  Match Base64 files 

bat  Match Windows batch files 

binhex  Match BinHex files 

bmp  Match BMP files 

bzip  Match Bzip files 

bzip2  Match Bzip2 files 

cab  Match Windows CAB files 

chm  Match Windows compiled HTML help files 

class  Match CLASS files 

cod  Match COD files 

crx  Match Chrome extension files 

dmg  Match Apple disk image files 

elf  Match ELF files 

exe  Match Windows executable files 

fsg  Match FSG files 

gif  Match GIF files 

gzip  Match Gzip files 

hlp  Match Windows help files 

hta  Match HTA files 

html  Match HTML files 

iso  Match ISO archive files 

FortiOS 6.4.6 Administration Guide 1231


Fortinet Technologies Inc.
Security Profiles

Type Description

jad  Match JAD files 

javascript  Match JavaScript files 

jpeg  Match JPEG files 

lzh  Match LZH compressed files 

mach-o  Match Mach object files 

mime  Match MIME files 

mov  Match MOV files 

mp3  Match MP3 files 

mpeg  Match MPEG files 

msc  Match MSC files 

msi  Match Windows Installer MSI Bzip files 

msoffice  Match MS-Office files. For example, DOC, XLS, PPT, and so on. 

msofficex  Match MS-Office XML files. For example, DOCX, XLSX, PPTX, and so on. 

pdf  Match PDF files 

petite  Match Petite files 

png  Match PNG files 

rar  Match RAR archives 

rm  Match RM files 

sis  Match SIS files 

tar  Match TAR files 

tiff  Match TIFF files 

torrent  Match torrent files 

upx  Match UPX files 

uue  Match UUE files 

wav  Match WAV files 

wma  Match WMA files 

xar  Match XAR archive files 

xz  Match XZ files 

zip  Match ZIP files 

FortiOS 6.4.6 Administration Guide 1232


Fortinet Technologies Inc.
Security Profiles

Email filter

Email filters can be configured to perform spam detection and filtering. You can customize the default profile, or create 
your own and apply it to a firewall policy.

Two kinds of filtering can be defined in a single profile, and they will act independent of one 
another. 

Filter options can be organized according to the source of the decision:
 l Local options: the FortiGate qualifies the email based on local conditions, such as block/allowlists, banned words, or 
DNS checks using FortiGuard Antispam.
 l FortiGuard-based options: the FortiGate qualifies the email based on the score or verdict returned from FortiGuard 
Antispam.
 l Third-party options: the FortiGate qualifies the email based on information from a third-party source (like an ORB 
list).
Local and FortiGuard block/allowlists can be enabled and combined in a single profile. When combined, the local 
block/allowlist has a higher priority than the FortiGuard block list during a decision making process. For example, if a 
client IP address is blocklisted in the FortiGuard server, but you want to override this decision and allow the IP to pass 
through the filter, you can define the IP address or subnet in a local block/allowlist with the clear action. Because the 
information coming from the local list has a higher priority than the FortiGuard service, the email will be considered clean.

Some features of this functionality require a subscription to FortiGuard Antispam.

Protocol comparison between email filter inspection modes

The following table indicates which email filters are supported by their designated inspection modes.

SMTP POP3 IMAP MAPI

Proxy Yes Yes Yes Yes

Flow Yes Yes Yes No

The following topics provide information about  email filter profiles:
 l Local-based filters on page 1234
 l FortiGuard-based filters on page 1237
 l Protocols and actions on page 1238
 l Configuring webmail filtering on page 1240

FortiOS 6.4.6 Administration Guide 1233


Fortinet Technologies Inc.
Security Profiles

Local-based filters

You can make block/allowlists from emails or IP subnets to forbid or allow them to send or receive emails. With the 
spamhelodns (HELO DNS Lookup) and spamraddrdns (Return Email DNS Check) options, the FortiGate performs a 
standard DNS check on the machine name used in the HELO SMTP message, and/or the return to field to determine if 
these names belong to a registered domain. The FortiGate does not check the FortiGuard service during these 
operations.
You can also define a list of banned words. Emails that contain any of these banned words are considered spam.

Banned words can only be configured in the CLI.

To configure a local-based email filter in the GUI:

 1. Configure the email filter profile:
 a. Go to Security Profiles > Email Filter and click Create New, or edit an existing profile.
 b. Select a Feature set and enable Enable spam detection and filtering.
 c. In the Local Spam Filtering section, enable the desired filters (HELO DNS Lookup, Return Email DNS Check, 
Block/Allow List).
 d. If Block/Allow List is enabled, click Create New. The Create Anti-Spam Block/Allow List Entry pane opens.
 e. Select a Type, enter a Pattern, and select and Action.

FortiOS 6.4.6 Administration Guide 1234


Fortinet Technologies Inc.
Security Profiles

 f. Click OK to save the block/allow list.

 g. Click OK save the email filter profile.
 2. Configure the firewall policy:
 a. Go to Policy & Objects > Firewall Policy and click Create New, or edit an existing policy.
 b. Set the inspection-mode to Proxy-based.
 c. Enable the Email Filter option and select the previously created profile.

 d. Set SSL Inspection to a profile that has deep SSL inspection enabled.   


Deep inspection is required if you intend to filter SMTP, POP3, IMAP, or any SSL/TLS encapsulated protocol. 
 e. Configure the other settings as needed.
 f. Click OK.

To configure a local-based email filter in the CLI:

 1. Configure a block/allow list:
config emailfilter bwl
edit 1
set name "myBAL"
config entries

FortiOS 6.4.6 Administration Guide 1235


Fortinet Technologies Inc.
Security Profiles

edit 1
set status enable
set type ip
set action spam
set addr-type ipv4
set ip4-subnet 10.1.100.0 255.255.255.0
next
end
next
end

 2. Configure an email filter profile:
config emailfilter profile
edit "myLocalEmailFilter"
set spam-filtering enable
set options spambwl spamhelodns spamraddrdns
config smtp
set action tag
end
set spam-bwl-table 1
next
end

 3. Use the profile in a firewall policy:
config firewall policy
edit 1
.....
set inspection-mode proxy
set emailfilter-profile "myLocalEmailFilter"
next
end

To configure banned words:

 1. Configure a banned words list:
config emailfilter bword
edit 1
set name "banned"
config entries
edit 1
set pattern <string>
next
end
next
end

 2. Configure an email filter profile:
config emailfilter profile
edit "myBannedWordsProfile"
set spam-filtering enable
set options bannedword
set spam-bword-table 1
next
end

FortiOS 6.4.6 Administration Guide 1236


Fortinet Technologies Inc.
Security Profiles

 3. Use the profile in a firewall policy:
config firewall policy
edit 1
.....
set inspection-mode proxy
set emailfilter-profile "myBannedWordsProfile"
next
end

FortiGuard-based filters

The FortiGate consults FortiGuard servers to help identify spammer IP address or emails, known phishing URLs, known 
spam URLs, known spam email checksums, and others. 
FortiGuard servers have maintained databases that contain blocklists, which are fed from Fortinet sensors and labs 
distributed all over the world.

To configure the FortiGuard filters in the GUI:

 1. Go to Security Profiles > Email Filter and click Create New.


 2. Enable Enable spam detection and filtering.
 3. In the FortiGuard Spam Filtering Spam Filtering section, you can enable or disable the following filters:
 l IP Address Check
 l URL Check
 l Detect Phishing URLs in Email
 l Email Checksum Check
 l Spam Submission

FortiOS 6.4.6 Administration Guide 1237


Fortinet Technologies Inc.
Security Profiles

 4. Click OK.

To configure the FortiGuard filters in the CLI:

config emailfilter profile


edit "myEmailFilterProfile"
set spam-filtering enable
set options spamfsip spamfssubmit spamfschksum spamfsurl spamfsphish
next
end

Protocols and actions

In an email filter profile, there are options to configure settings for SMTP, POP3,  IMAP, and MAPI protocols. For each 
protocol, you can set an action to either discard (block), tag, or pass the log for that protocol. The action options vary per 
protocol. For the tag action, the spam email can be tagged with configured text in the subject or header. 

MAPI  is only configurable in the CLI and with the proxy feature set.

To configure protocols in an email filer:

config emailfilter profile


edit <name>
set feature-set {flow | proxy}

FortiOS 6.4.6 Administration Guide 1238


Fortinet Technologies Inc.
Security Profiles

set spam-filtering enable


set options {spambwl spamfsip spamfssubmit spamfschksum spamfsurl spamhelodns
spamraddrdns spamrbl spamhdrcheck spamfsphish}
config smtp
set log-all {enable | disable}
set action {pass | tag | discard}
set tag-type {subject | header | spaminfo}
set tag-msg <string>
set hdrip {enable | disable}
set local-override {enable | disable}
end
config imap
set log-all {enable | disable}
set action {pass | tag}
set tag-type {subject | header | spaminfo}
set tag-msg <string>
end
config pop3
set log-all {enable | disable}
set action {pass | tag}
set tag-type {subject | header | spaminfo}
set tag-msg <string>
end
config mapi
set log-all {enable | disable}
set action {pass | discard}
end
next
end

options ... The following options are available:


 l bannedword: content block.
 l spambwl: block/allow list.
 l spamfsip: email IP address FortiGuard antispam block list check.
 l spamfssubmit: add FortiGuard antispam spam submission text.
 l spamfschksum: email checksum FortiGuard antispam check.
 l spamfsurl: email content URL FortiGuard antispam check.
 l spamhelodns: email HELO/EHLO domain DNS check.
 l spamraddrdns: email return address DNS check.
 l spamrbl: email DNSBL and ORBL check.
 l spamhdrcheck: email MIME header check.
 l spamfsphish: email content phishing URL FortiGuard antispam check.
tag-type {subject | Set the tag type:
header | spaminfo}  l subject: prepend text to the spam email subject.
 l header: append a user-defined MIME header to the spam email.
 l spaminfo: append spam information to the spam email header.
tag-msg <string> Subject text or header added to the spam email.
hdrip {enable | disable} Enable/disable SMTP email header IP checks for spamfsip, spamrbl, and 
spambwl filters.
local-override {enable | Enable/disable local filter to override SMTP remote check result.
disable}

FortiOS 6.4.6 Administration Guide 1239


Fortinet Technologies Inc.
Security Profiles

For more information, see config emailfilter profile in the FortiOS CLI Reference.

Configuring webmail filtering

You can configure an email filter to detect and log emails sent by Gmail and Hotmail. These interfaces do not use 
standard email protocols (SMTP, POP3, or IMAP) and use HTTPS instead. However, you can still configure the email 
filter to detect emails that pass through the FortiGate.

The FortiGate only detects and logs the emails, it does not discard or tag them.

To configure webmail filtering:

config emailfilter profile


edit <name>
set spam-filtering enable
config msn-hotmail
set log-all enable
end
config gmail
set log-all enable
end
next
end

Data leak prevention

The FortiGate data leak prevention (DLP) system prevents sensitive data from leaving or entering your network. You can 
customize the default sensor or create your own by adding individual filters based on file type, file size, a regular 
expression, an advanced rule, or a compound rule. Once configured, you can apply the DLP sensor to a firewall policy. 
Data matching defined sensitive data patterns is blocked, logged, or allowed when it passes through the FortiGate.
DLP can only be configured in the CLI.

The filters in a DLP sensor can examine traffic for the following:
 l Known files using DLP fingerprinting
 l Known files using DLP watermarking
 l Particular file types

FortiOS 6.4.6 Administration Guide 1240


Fortinet Technologies Inc.
Security Profiles

 l Particular file names
 l Files larger than a specified size
 l Data matching a specified regular expression
 l Credit card and social security numbers

Filters are ordered, but there is no precedence between the possible actions.

DLP is primarily used to stop sensitive data from leaving your network. DLP can also be used to prevent unwanted data 
from entering your network and to archive some or all of the content that passes through the FortiGate. DLP archiving is 
configured per filter, which allows a single sensor to archive only the required data. You can configure the DLP archiving 
protocol in the CLI (see Configure DLP sensors).
There are two forms of DLP archiving:
 l Summary only: a summary of all the activity detected by the sensor is recorded. For example, when an email 
message is detected, the sender, recipient, message subject, and total size are recorded. When a user accesses 
the web, every URL that they visit is recorded.
 l Full: detailed records of all the activity detected by the sensor  is recorded. For example, when an email message is 
detected, the message itself, including any attachments, is recorded. When a user accesses the web, every page 
that they visit is archived.
The following topics provide information about DLP:
 l Basic DLP filter types on page 1242
 l DLP fingerprinting on page 1244

Protocol comparison between DLP inspection modes

The following table indicates which protocols can be inspected by DLP based on the specified inspection modes.

HTTP FTP IMAP POP3 SMTP NNTP MAPI CIFS SFTP/SCP

Proxy Yes Yes Yes Yes Yes Yes Yes No Yes

Flow Yes Yes Yes Yes Yes No No Yes No

Logging and blocking files by file name

Sometimes, file names are not accurately recorded in DLP logs, even though the files are blocked correctly based on the 
DLP sensor. This is particularly apparent on cloud-based services, such as Google Drive or SharePoint.
For HTTP file uploads, some cloud services use proprietary encodings and APIs to transfer files and exchange 
metadata, instead of standard HTTP mechanisms, requiring custom handling of the proprietary API. If a cloud service 
changes the API without notice, the custom handling becomes outdated and file names might not be logged properly. 
Due to this, special consideration must be taken when using DLP to block files by file pattern. To block a specific file type, 
it is better to block by file type, and not by file name pattern.

FortiOS 6.4.6 Administration Guide 1241


Fortinet Technologies Inc.
Security Profiles

Basic DLP filter types

The following basic filter types can be configured in the CLI:
 l File type and name
 l File size
 l Regular expression
 l Credit card and SSN

File type and name

A file type filter allows you to block, allow, log, or quarantine based on the file type specified in the file filter list.
config dlp filepattern
edit <id>
set name <string>
config entries
edit <pattern>
set filter-type {type | pattern}
set file-type <file type>
next
end
next
end

To configure file type and name filtering:

 1. Create a file pattern to filter files based on the file name patter or file type.
For example, to filter for GIFs and PDFs:
config dlp filepattern
edit 11
set name "sample_config"
config entries
edit "*.gif"
set filter-type pattern
next
edit "pdf"
set filter-type type
set file-type pdf
next
end
next
end

 2. Create the DLP sensor:
config dlp sensor
edit <name>
config filter
edit <id>
set name <string>
set proto {smtp pop3 imap http-get http-post ftp nntp mapi ssh cifs}
set filter-by file-type
set file-type 11

FortiOS 6.4.6 Administration Guide 1242


Fortinet Technologies Inc.
Security Profiles

set action {allow | log-only | block | quarantine-ip}


next
end
next
end

File size

A file size filter checks for files that exceed the specific size, and performs the DLP sensor's configured action on them. 

To configure file size filtering:

config dlp sensor


edit <name>
config filter
edit <id>
set name <string>
set proto {smtp pop3 imap http-get http-post ftp nntp mapi ssh cifs}
set filter-by file-size
set file-type 11
set action {allow | log-only | block | quarantine-ip}
next
end
next
end

Regular expression

A regular expression filter is used to filter files or messages based on the configured regular expression pattern.

To configure regular expression filtering:

config dlp sensor


edit <name>
config filter
edit <id>
set name <string>
set type {file | message}
set proto {smtp pop3 imap http-get http-post ftp nntp mapi ssh cifs}
set filter-by regexp
set regexp <string>
set action {allow | log-only | block | quarantine-ip}
next
end
next
end

Credit card and SSN

The credit card sensor can match the credit card number formats used by American Express, Mastercard, and Visa. It 
can be used to filter files or messages.
The SSN sensor can be used to filter files or messages for Social Security Numbers.

FortiOS 6.4.6 Administration Guide 1243


Fortinet Technologies Inc.
Security Profiles

To configure credit card or SSN filtering:

config dlp sensor


edit <name>
config filter
edit <id>
set name <string>
set type {file | message}
set proto {smtp pop3 imap http-get http-post ftp nntp mapi ssh cifs}
set filter-by {credit-card | ssn}
set action {allow | log-only | block | quarantine-ip}
next
end
next
end

DLP fingerprinting

DLP fingerprinting can be used to detect sensitive data. The file that the DLP sensor will filter for is uploaded and the 
FortiGate generates and stores a checksum fingerprint. The FortiGate unit generates a fingerprint for all of the files that 
are detected in network traffic, and compares all of the checksums stored in its database. If a match is found, the 
configured action is taken.
Any type of file can be detected by DLP fingerprinting, and fingerprints can be saved for each revision of a file as it is 
updated.
To use fingerprinting:
 l Select the files to be fingerprinted by targeting a document source.
 l Add fingerprinting filters to  DLP sensors.
 l Add the sensors to firewall policies that accept traffic that the fingerprinting will be applied on.

The document fingerprint feature requires a FortiGate device that has internal storage.

To configure a DLP fingerprint document:

config dlp fp-doc-source


edit <name_str>
set server-type smb
set server <string>
set period {none | daily | weekly | monthly}
set vdom {mgmt | current}
set scan-subdirectories {enable | disable}
set remove-deleted {enable | disable}
set keep-modified {enable | disable}
set username <string>
set password <password>
set file-path <string>
set file-pattern <string>
set sensitivity <Critical | Private | Warning>
set tod-hour <integer>

FortiOS 6.4.6 Administration Guide 1244


Fortinet Technologies Inc.
Security Profiles

set tod-min <integer>


set weekday {sunday | monday | tuesday | wednesday | thursday | friday |
saturday}
set date <integer>
next
end

Command Description

server-type smb The protocol used to communicate with document server. Only 
Samba (SMB) servers are supported.

server <string>  IPv4 or IPv6 address of the server.

period {none | daily | weekly | monthly} The frequency that the FortiGate checks the server for new or 
changed files.

vdom {mgmt | current} The VDOM that can communicate with the file server.

scan-subdirectories {enable | disable} Enable/disable scanning subdirectories to find files.

remove-deleted {enable | disable} Enable/disable keeping the fingerprint database up to date when a file 
is deleted from the server.

keep-modified {enable | disable} Enable/disable keeping the old fingerprint and adding a new one 
when a file is changed on the server.

username <string> The user name required to log into the file server.

password <password> The password required to log into the file server.

file-path <string> The path on the server to the fingerprint files.

file-pattern <string> Files matching this pattern on the server are fingerprinted.

sensitivity <Critical | Private | Warning> The sensitivity or threat level for matches with this fingerprint 
database.

tod-hour <integer> Set the hour of the day. This option is only available when period is 
not none.

tod-min <integer> Set the minute of the hour. This option is only available when period 
is not none.

weekday {sunday | monday | tuesday |  Set the day of the week. This option is only available when period is 
wednesday | thursday | friday | saturday} weekly.

date <integer> Set the day of the month. This option is only available when period 
is monthly.

To configure a DLP fingerprint sensor:

config dlp sensor


edit <sensor name>
config filter
edit <id number of filter>
set proto {smtp | pop3 | imap http-get | http-post | ftp | nntp | mapi}
set filter-by fingerprint
set sensitivity {Critical | Private | Warning}

FortiOS 6.4.6 Administration Guide 1245


Fortinet Technologies Inc.
Security Profiles

set match-percentage <integer>


set action {allow | log-only | block | ban | quarantine-ip}
next
end
next
end

Command Description

proto {smtp | pop3 | imap http-get | http-post |  The protocol to inspect.
ftp | nntp | mapi}

filter-by fingerprint  Match against a fingerprint sensitivity.

sensitivity {Critical | Private | Warning} Select a DLP file pattern sensitivity to match.

match-percentage <integer> The percentage of the checksum required to match before the sensor 
is triggered.

action {allow | log-only | block | ban |  The action to take with content that this DLP sensor matches.
quarantine-ip}

View the DLP fingerprint database on the FortiGate

The CLI debug command diagnose test application dlpfingerprint can be used to display the fingerprint 


information that is on the FortiGate.
Fingerprint Daemon Test Usage;
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
1 : This menu
2 : Dump database
3 : Dump all files
5 : Dump all chunk
6 : Refresh all doc sources in all VDOMs
7 : Show the db file size and the limit
9 : Display stats
10 : Clear stats
99 : Restart this daemon

For example, option 3 will dump all fingerprinted files:
DLP_WANOPT-CLT (global) # diagnose test application dlpfingerprint 3
DLPFP diag_test_handler called
File DB:
---------------------------------------
id, filename, vdom, archive, deleted, scanTime, docSourceSrvr,
sensitivity, chunkCnt, reviseCnt,
1, /fingerprint/upload/1.txt, vdom1, 0, 0, 1494868196, 1, 2,
1, 0,
2, /fingerprint/upload/30percentage.xls, vdom1, 0, 0, 1356118250, 1, 2,
13, 0,
3, /fingerprint/upload/50.pdf, vdom1, 0, 0, 1356118250, 1, 2,
122, 0,
4, /fingerprint/upload/50.pdf.tar.gz, vdom1, 0, 0, 1356118250, 1, 2,
114, 0,
5, /fingerprint/upload/check-list_AL-SIP_HA.xls, vdom1, 0, 0, 1356118251, 1,
2, 32, 0,
6, /fingerprint/upload/clean.zip, vdom1, 0, 0, 1356118251, 1, 2,
1, 0,

FortiOS 6.4.6 Administration Guide 1246


Fortinet Technologies Inc.
Security Profiles

7, /fingerprint/upload/compare.doc, vdom1, 0, 0, 1522097410, 1, 2,


18, 0,
8, /fingerprint/upload/dlpsensor-watermark.pdf, vdom1, 0, 0, 1356118250, 1,
2, 11, 0,
9, /fingerprint/upload/eicar.com, vdom1, 0, 0, 1356118250, 1, 2,
1, 0,
10, /fingerprint/upload/eicar.zip, vdom1, 0, 0, 1356118250, 1, 2,
1, 0,
11, /fingerprint/upload/EMAIL-CONTENT-ARCHIVE.ppt, vdom1, 0, 0, 1356118250, 1,
2, 11, 0,
12, /fingerprint/upload/encrypt.zip, vdom1, 0, 0, 1356118250, 1, 2,
77, 0,
13, /fingerprint/upload/extension_7_8_1.crx, vdom1, 0, 0, 1528751781, 1,
2, 2720, 0,
14, /fingerprint/upload/fingerprint.txt, vdom1, 0, 0, 1498582679, 1, 2,
37, 0,
15, /fingerprint/upload/fingerprint90.txt, vdom1, 0, 0, 1498582679, 1, 2,
37, 0,
16, /fingerprint/upload/fo2.pdf, vdom1, 0, 0, 1450488049, 1, 2,
1, 0,
17, /fingerprint/upload/foo.doc, vdom1, 0, 0, 1388538131, 1, 2,
9, 0,
18, /fingerprint/upload/fortiauto.pdf, vdom1, 0, 0, 1356118251, 1, 2,
146, 0,
19, /fingerprint/upload/image.out, vdom1, 0, 0, 1531802940, 1, 2,
5410, 0,
20, /fingerprint/upload/jon_file.txt, vdom1, 0, 0, 1536596091, 1, 2, 1,
0,
21, /fingerprint/upload/machotest, vdom1, 0, 0, 1528751955, 1, 2,
19, 0,
22, /fingerprint/upload/nntp-server.doc, vdom1, 0, 0, 1356118250, 1, 2,
17, 0,
23, /fingerprint/upload/notepad++.exe, vdom1, 0, 0, 1456090734, 1, 2,
1061, 0,
24, /fingerprint/upload/nppIExplorerShell.exe, vdom1, 0, 0, 1438559930, 1,
2, 5, 0,
25, /fingerprint/upload/NppShell_06.dll, vdom1, 0, 0, 1456090736, 1, 2,
111, 0,
26, /fingerprint/upload/PowerCollections.chm, vdom1, 0, 0, 1533336889, 1,
2, 728, 0,
27, /fingerprint/upload/reflector.dmg, vdom1, 0, 0, 1533336857, 1, 2,
21117, 0,
28, /fingerprint/upload/roxio.iso, vdom1, 0, 0, 1517531765, 1, 2,
49251,0,
29, /fingerprint/upload/SciLexer.dll, vdom1, 0, 0, 1456090736, 1, 2,
541, 0,
30, /fingerprint/upload/screen.jpg, vdom1, 0, 0, 1356118250, 1, 2,
55, 0,
31, /fingerprint/upload/Spec to integrate FASE into FortiOS.doc, vdom1, 0, 0,
1356118251, 1, 2, 31, 0,
32, /fingerprint/upload/subdirectory1/subdirectory2/subdirectory3/hibun.aea, vdom1, 0,
0, 1529019743, 1, 2, 1, 0,
33, /fingerprint/upload/test.pdf, vdom1, 0, 0, 1356118250, 1, 2,
5, 0,
34, /fingerprint/upload/test.tar, vdom1, 0, 0, 1356118251, 1, 2,
3, 0,
35, /fingerprint/upload/test.tar.gz, vdom1, 0, 0, 1356118250, 1, 2, 1,
0,
36, /fingerprint/upload/test1.txt, vdom1, 0, 0, 1540317547, 1, 2,
1, 0,

FortiOS 6.4.6 Administration Guide 1247


Fortinet Technologies Inc.
Security Profiles

37, /fingerprint/upload/thousand-files.zip, vdom1, 0, 0, 1536611774, 1, 2,


241, 0,
38, /fingerprint/upload/Thumbs.db, vdom1, 0, 0, 1445878135, 1, 2,
3, 0,
39, /fingerprint/upload/widget.pdf, vdom1, 0, 0, 1356118251, 1, 2,
18, 0,
40, /fingerprint/upload/xx00-xx01.tar, vdom1, 0, 0, 1356118250, 1, 2, 5,
0,
41, /fingerprint/upload/xx02-xx03.tar.gz, vdom1, 0, 0, 1356118251, 1, 2, 1,
0,

VoIP solutions

You can configure VoIP profiles to allow SIP and SCCP traffic and to protect your network from SIP- and SCCP-based 
attacks.
FortiOS includes two preloaded VoIP profiles: 
 l default
 l strict
You can customize these profiles, or you can create your own and add them to firewall policies that allow VoIP.

VoIP profiles cannot be used NGFW policy-based mode. See Profile-based NGFW vs policy-
based NGFW on page 959 for more information.

The following topics provide information about  VoIP profiles:
 l General use cases on page 1248
 l SIP message inspection and filtering on page 1252
 l SIP pinholes on page 1254
 l SIP over TLS on page 1255
 l Custom SIP RTP port range support on page 1256
 l Voice VLAN auto-assignment on page 1258

General use cases

There are three scenarios in which the FortiOS session initiation protocol (SIP) solution is usually deployed:
 1. The SIP server is in a private network, protected from the internet by a FortiOS device.
 2. The SIP clients are in a private network, protected from the internet by a FortiOS device.
 3. The SIP server is in a private network, such as a corporation's internal network or an ISP’s network, protected from 
the Internet by a FortiOS device. The SIP clients are in a remote private network, such as a SOHO network, and 
behind a NAT device that is not aware of SIP applications.
The following VIP, NAT, and HNT examples show configurations for each of the three common scenarios.

FortiOS 6.4.6 Administration Guide 1248


Fortinet Technologies Inc.
Security Profiles

VIP

A FortiGate with SIP Application Layer Gateway (ALG) or SIP Session Helper protects the SIP server from the internet, 
while SIP phones from the internet need to register to the SIP server and establish calls through it.

A VIP needs to be configured for the SIP server, and the VIP must be applied in a firewall policy for the phones to send 
REGISTER messages through the FortiGate from port1 to port2. 
Only one firewall policy needs to be configured for all SIP phones on both the internet and private network to register to 
the SIP server through Port1 and set up SIP calls. 
Assuming either SIP ALG or SIP Session Helper is enabled, configure the FortiGate with the following CLI commands:
config firewall vip
edit "VIP_for_SIP_Server"
set extip 172.20.120.50
set extintf "port1"
set mappedip "10.11.101.50"
next
end
config firewall policy
edit 1
set srcintf "port1"
set dstintf "port2"
set srcaddr "all"
set dstaddr "VIP_for_SIP_Server"
set action accept
set schedule "always"
set service "SIP"
next
end

Setting service to SIP and not All in the firewall policy can improve protection by restricting 
the data traffic passing through the FortiGate to the SIP call traffic only.

FortiOS 6.4.6 Administration Guide 1249


Fortinet Technologies Inc.
Security Profiles

NAT

A FortiGate with SIP ALG or SIP Session Helper protects the SIP phones and the internal network from the internet, 
while SIP phones in the internal network need to register to the SIP server installed on the internet and establish calls 
through it.

One firewall policy needs to be configured with NAT enabled for SIP phones to send REGISTER messages through the 
FortiGate from port2 to port1.
Assuming either SIP ALG or SIP Session Helper is enabled, configure the FortiGate with the following CLI commands:
config firewall policy
edit 1
set srcintf "port2"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "SIP"
set nat enable
next
end

HNT

A FortiGate with SIP ALG or SIP Session Helper protects the SIP server from the internet, while SIP phones are in 
remote private networks behind NAT devices that are not aware of the SIP application.
For example, the SIP server is located in an ISP's service cloud that is protected by the FortiGate SIP ALG, and the 
SIP phones are installed in the home networks of the ISP's customers.

FortiOS 6.4.6 Administration Guide 1250


Fortinet Technologies Inc.
Security Profiles

The SIP messages traversing the remote NAT devices might have their IP addresses translated by the NAT device at 
the network layer, but untranslated at the SIP application layer because those NAT devices are not aware of the 
SIP applications. This causes problems in a SIP session initiated process. Special configurations for the Hosted NAT 
Traversal (HNT) are required to resolve this issue.

To configure the FortiGate with HNT support for SIP phones A and B to set up calls with each other:

 1. Identify port1 as the external interface:
config system interface
edit "port1"
set external enable
next
end

FortiOS 6.4.6 Administration Guide 1251


Fortinet Technologies Inc.
Security Profiles

 2. Configure VIP for the SIP server:
config firewall vip
edit "VIP_for_SIP_Server"
set extip 10.21.101.10
set extintf "port1"
set mappedip "10.30.120.20"
next
end

 3. Configure a VoIP profile with HNT enabled:
config voip profile
edit "hnt"
config sip
set hosted-nat-traversal enable
set hnt-restrict-source-ip enable
end
next
end

hosted-nat-traversal must be enabled.
hnt-restrict-source-ip does not have to be enabled,  but can be enabled  to restrict 
the RTP packets’ source IP to be the same as the SIP packets’ source IP.

 4. Apply the VoIP profile and VIP in a firewall policy for phone A and B to register and set up SIP calls through the 
FortiGate and SIP server:
config firewall policy
edit 1
set srcintf "port1"
set dstintf "port2"
set srcaddr "all"
set dstaddr "VIP_for_SIP_Server"
set action accept
set schedule "always"
set service "SIP"
set utm-status enable
set voip-profile “hnt”
set nat enable
next
end

nat must be enabled in the firewall policy.

SIP message inspection and filtering

SIP ALG provides users with security features to inspect and control SIP messages that are transported through FortiOS 
devices, including:
 l Verifying the SIP message syntax.
 l Blocking particular types of SIP requests.

FortiOS 6.4.6 Administration Guide 1252


Fortinet Technologies Inc.
Security Profiles

 l Restricting the rate of particular SIP requests.
These features are configured in the VoIP profile:
config voip profile
edit <voip_profile_name>
config sip set ...

The VoIP profile can then be applied to a firewall policy to process the SIP call traffic.

SIP message syntax inspection

For syntax verification, the following attributes are available for configuration in the VoIP profile to determine what action 
is taken when a specific syntax error or attack based on invalid syntax is detected. For example, the action can be set to 
pass or discard it.
malformed-request-line
malformed-header-via
malformed-header-from
malformed-header-to
malformed-header-call-id
malformed-header-cseq
malformed-header-rack
malformed-header-rseq
malformed-header-contact
malformed-header-record-route
malformed-header-route
malformed-header-expires
malformed-header-content-type
malformed-header-content-length
malformed-header-max-forwards
malformed-header-allow
malformed-header-p-asserted-identity
malformed-header-sdp-v
malformed-header-sdp-o
malformed-header-sdp-s
malformed-header-sdp-i
malformed-header-sdp-c
malformed-header-sdp-b
malformed-header-sdp-z
malformed-header-sdp-k
malformed-header-sdp-a
malformed-header-sdp-t
malformed-header-sdp-r
malformed-header-sdp-m

SIP message blocking

The following options are available in the VoIP profile to block SIP messages:
block-long-lines
block-unknown
block-ack
block-bye
block-cancel

FortiOS 6.4.6 Administration Guide 1253


Fortinet Technologies Inc.
Security Profiles

block-info
block-invite
block-message
block-notify
block-options
block-prack
block-publish
block-refer
block-register
block-subscribe
block-update
block-geo-red-options

SIP message rate limiting

The rate of certain types of SIP requests that are passing through the SIP ALG can be restricted :
register-rate
invite-rate
subscribe-rate
message-rate
notify-rate
refer-rate
update-rate
options-rate
ack-rate
prack-rate
info-rate
publish-rate
bye-rate
cancel-rate

SIP pinholes

When SIP ALG processes a SIP call, it usually opens pinholes for SIP signaling and RTP/RTCP packets. NAT usually 
takes place during the process at both the network and SIP application layers. SIP ALG ensures that, with NAT 
happening, corresponding SIP and RTP/RTCP pinholes are created during the process when it is necessary for call 
sessions to be established through FortiOS devices.
By default, SIP ALG manages pinholes automatically, but some special configurations can be used to restrict the 
pinholes if required.

SIP pinhole restriction

By default, the strict-register attribute is enabled. When enabled, after a SIP endpoint registers to the SIP server through 
a firewall policy on the FortiOS device, only the SIP messages sent from the same IP address as the SIP server are 
allowed to pass through the SIP pinhole that is created in the FortiOS device to reach the SIP endpoints. If the attribute is 
disabled, SIP messages from any IP addresses can pass through the pinhole created after the registration.
config voip profile
edit "voip-profile-name"
config sip

FortiOS 6.4.6 Administration Guide 1254


Fortinet Technologies Inc.
Security Profiles

set strict-register [enable|disable]


...
end
next
end

RTP/RTCP pinhole restriction

In a SIP call through SIP ALG, the NATed RTP/RTCP port range is 5117 to 65533 by default. If required, the port range 
can be restricted.
config voip profile
edit "voip-profile-name"
config sip
set nat-port-range <start_port_number>-<end_port_number>
...
end
next
end

In a SIP call session, the RTP port number is usually an even number and the RTCP port number is an odd number that 
is one more than the RTP port number. It is best practice to configure start_port_number to an even number, and 
end_port_number to an odd number, for example:
config voip profile
edit "voip-profile-name"
conf sip
set nat-port-range 30000-39999
end
next
end

SIP over TLS

Some SIP phones and servers can communicate using TLS to encrypt the SIP signaling traffic. To allow SIP over TLS 
calls to pass through the FortiGate, the encrypted signaling traffic must be unencrypted and inspected. The FortiGate 
SIP ALG intercepts, unencrypts , and inspects the SIP packets, which are then re-encrypted and forwarded to their 
destination.
The SIP ALG only supports full mode TLS. This means that the SIP traffic between SIP phones and the FortiGate, and 
between the FortiGate and the SIP server, is always encrypted. The highest TLS version supported by SIP ALG is TLS 
1.2.
To enable SIP over TLS support, the SSL mode in the VoIP profile must be set to full. The SSL server and client 
certificates can be provisioned so that the FortiGate can use them to  establish connections to SIP phones and servers, 
respectively.

To configure SIP over TLS:

 1. Configure a VoIP profile with SSL enabled:
config voip profile
edit "tls"

FortiOS 6.4.6 Administration Guide 1255


Fortinet Technologies Inc.
Security Profiles

config sip
set ssl-mode full
set ssl-client-certificate "ssl_client_cert"
set ssl-server-certificate "ssl_server_cert"
end
next
end

The ssl_server_cert, ssl_client_cert, and key files can be generated using a certification tool, such as 
OpenSLL, and imported to the local certificate store of the FortiGate from System > Certificates in the GUI. Existing 
local certificates in the certificate store can also be used. As always for TLS connections, the certificates used must 
be verified and trusted at the other end of the connection when required.
For example, the CA certificate of the SIP server's certificate should be imported to the FortiGate as an external CA 
certification, such that the FortiGate can use it to verify the SIP server's certificate when setting up the TLS 
connection. The CA certificate configured as the ssl_server_cert should be installed as the trusted certificate 
on the SIP phones. The deployment of the certificates across the network depends on the SIP client and server 
devices that are used in the system.
 2. Apply the profile to the firewall policy:
config firewall policy
edit 1
set srcintf "port1"
set dstintf "port2"
set srcaddr "all"
set dstaddr "vip_sip_server"
set action accept
set schedule "always"
set service "SIP"
set utm-status enable
set voip-profile "tls"
next
end

Custom SIP RTP port range support

The nat-port-range variable is used to specify a port range in the VoIP profile to restrict the NAT port range for real-
time transport protocol/real-time transport control protocol (RTP/RTCP) packets in a session initiation protocol (SIP) call 
session that is handled by the SIP application layer gateway (ALG) in a FortiGate device.
When NAT is enabled, or VIP is used in a firewall policy for SIP ALG to handle a SIP call session established through a 
FortiGate device, the SIP ALG can perform NAT to translate the ports used for the RTP/RTCP packets when they are 
flowing through the device between the external and internal networks.
You can control the translated port range for RTP/RTCP packets using the CLI: 
config voip profile
edit <profile-name>
config sip
set nat-port-range <port range>
end
next
end

FortiOS 6.4.6 Administration Guide 1256


Fortinet Technologies Inc.
Security Profiles

Command Description

nat-port-range <port range> The NAT port range (minimum port number = 5117, default = 5117-65535).

Example

In this example, Phone1 is in subnet_1, and the SIP server and phone are in subnet_2. All SIP signaling messages and 
RTP/RTCP packets go through the SIP Server. The RTP/RTCP ports on Phone1 are configured as 17078/17079.
The FortiGate administrator wants to use NAT for the port 17078/17079 to 30000/30001. As a result, all RTP/RTCP 
packets going out of port2 have source ports of 30000/30001, and all RTP/RTCP packets going into port2 also have 
destination ports of 30000/30001, which is specified in nat-port-range.

To configure the custom port range:

config voip profile


edit "natPortRange"
config sip
set nat-port-range 30000-30001
end
next
end
configure firewall policy
edit 1
set srcintf port1
set dstintf port2
set srcaddr all
set dstaddr all
set service SIP
set action accept
set schedule always
set voip-profile natPortRange
set nat enable
end

If phone1 and phone2 are registered to the SIP server, and they establish a call session between them through the 
FortiGate and the SIP server, then the RTP/RTCP ports 17078/17079 of phone1 will be translated to ports 30000/30001 
at the FortiGate unit based on the NAT port range setting. That is, the RTP/RTCP packets egressing port2 of the 

FortiOS 6.4.6 Administration Guide 1257


Fortinet Technologies Inc.
Security Profiles

Fortigate will have source ports of 30000/30001, and the RTP/RTCP packets ingressing port2 will have destination ports 
of 30000/30001.

Voice VLAN auto-assignment

You can leverage LLDP-MED to assign voice traffic to the desired voice VLAN. After detection and setup, the IP phone 
on the network is segmented to its own VLAN for policy, prioritization, and reporting. The LLDP reception capabilities in 
FortiOS have been extended to support LLDP-MED assignment for voice, voice signaling, guest, guest voice signaling, 
softphone, video conferencing, streaming video, and video signaling.
You can configure this feature using the  following steps:
 1. Setting up the VLAN for the voice device
 2. Setting up the DHCP server for the voice VLAN
 3. Setting up the LLDP network policy
 4. Enabling LLDP on the physical interface that the VLAN belongs to
 5. Applying the LLDP network policy on the physical interface
 6. Confirming that the VLAN was assigned

To set up the VLAN for the voice device:

config system interface


edit "vlan_100"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
set alias "voice_vlan"
set device-identification enable
set role lan
set snmp-index 25
set interface "port10"
set vlanid 100
next
end

To set up the DHCP server for the voice VLAN:

config system dhcp server


edit 1
set dns-service default
set default-gateway 192.168.1.99
set netmask 255.255.255.0
set interface "vlan_100"
config ip-range
edit 1
set start-ip 192.168.1.110
set end-ip 192.168.1.210
next
end
next
end

FortiOS 6.4.6 Administration Guide 1258


Fortinet Technologies Inc.
Security Profiles

To set up the LLDP network policy:

config system lldp network-policy


edit "1"
config voice
set status enable
set tag dot1q
set vlan 100
end
next
end

To enable LLDP on the physical interface that the VLAN belongs to:

config system interface


edit "port10"
set vdom "root"
set type physical
set lldp-reception enable
set lldp-transmission enable
set snmp-index 14
next
end

To apply the LLDP network policy on the physical interface:

config system interface


edit "port10"
set lldp-network-policy "1"
next
end

To confirm that the VLAN was assigned as expected:

 1. Connect an IP phone to the network.
 2. Check the IP address on the phone.
The IP address should belong to the voice VLAN.
 3. Sniff on the FortiGate incoming interface to see if traffic from the IP phone has the desired VLAN tag.
In the example commands above, the voice VLAN was configured as VLAN 100. Therefore, voice traffic from the IP 
phone should be in VLAN 100.

ICAP

Internet Content Adaptation Protocol (ICAP) is an application layer protocol that is used to offload tasks from the firewall 
to separate, specialized servers. For more information see RFC 3507.
ICAP profiles can only be applied to policies that use proxy-based inspection. If you enable ICAP in a policy, HTTP and 
HTTPS (if HTTPS inspection is supported) traffic that is intercepted by the policy is transferred to the ICAP server 
specified by the selected ICAP profile. Responses from the ICAP server are returned to the FortiGate, and then 
forwarded to their destination.

FortiOS 6.4.6 Administration Guide 1259


Fortinet Technologies Inc.
Security Profiles

By default, ICAP is not visible in the GUI. See Feature visibility on page 940 for instructions on 
making it visible.

ICAP filter profiles cannot be used NGFW policy-based mode. See Profile-based NGFW vs 
policy-based NGFW on page 959 for more information.

To configure ICAP:

 1. Set up your ICAP server.
 2. On the FortiGate, add an ICAP server.
 3. Create an ICAP profile.
 4. Use the ICAP profile in a firewall policy that covers the traffic that needs to be offloaded to the ICAP server.

ICAP configuration example

In this example, the ICAP server performs proprietary content filtering on HTTP and HTTPS requests. If the content filter 
is unable to process a request, then the request is blocked. Streaming media is not considered by the filter, so it is 
allowed through and is not processed.

To add the ICAP server to the FortiGate in the GUI:

 1. Go to Security Profiles > ICAP Servers.


 2. Click Create New.
 3. In the Name field, enter a name for the ICAP server, such as content-filtration-server4.
 4. Select the IP Version.
 5. In the IP Address field, enter the IP address of the ICAP server.
 6. In the Port field, enter a new port number if required. The default value is 1344.

 7. Click OK.

The maximum number of concurrent connections to ICAP server  c  an be configured in the CLI. 
The default setting is 100 connections.

FortiOS 6.4.6 Administration Guide 1260


Fortinet Technologies Inc.
Security Profiles

To create an ICAP profile in the GUI:

 1. Go to Security Profiles > ICAP.


 2. Click Create New.
 3. In the Name field, enter a name for the ICAP profile, such as Prop-Content-Filtration.
 4. Enable Request Processing then set the following:
 l Server - Select the ICAP server. In this example, select content-filtration-server4
 l Path - The path to the processing component on the server, such as /proprietary_code/content-filter/.
 l On Failure - Select Error to block the request. If the message cannot be processed, it will not be blocked.
 5. Enable Response Processing then set the following:
 l Server - Select the ICAP server: content-filtration-server4
 l Path - The path to the processing component on the server, such as /proprietary_code/content-filter/.
 l On Failure - Select Error to block the request. If the message cannot be processed, it will not be blocked.
 6. Enable Streaming Media Bypass to not offload streaming media to the ICAP server.

 7. Click OK.

To add the ICAP profile to a policy in the GUI:

 1. Go to Policy & Objects > Firewall Policy.


 2. Click Create New.
 3. Configure the policy as needed to apply to the required traffic.
 4. Set Inspection Mode to Proxy-based. 
 5. Under Security Profiles, enable ICAP and select the ICAP server.

 6. Click OK.

FortiOS 6.4.6 Administration Guide 1261


Fortinet Technologies Inc.
Security Profiles

To configure the ICAP setup in the CLI:

 1. Add the ICAP server:
config icap server
edit "content-filtration-server4"
set ip-version 4
set ip-address 172.16.100.55
set port 1344
set max-connections 200
next
end

 2. Create the ICAP profile:
config icap profile
edit "Prop-Content-Filtration"
set request enable
set response enable
set streaming-content-bypass enable
set request-server "content-filtration-server4"
set response-server "content-filtration-server4"
set request-failure error
set response-failure error
set request-path "/proprietary_code/content-filter/"
set response-path "/proprietary_code/content-filter/"
set methods delete get head options post put trace other
next
end

 3. Add the ICAP profile to a policy:
config firewall policy
edit 5
set name "icap_filter3"
set srcintf "virtual-wan-link"
set dstintf "virtual-wan-link"
set srcaddr "FABRIC_DEVICE"
set dstaddr "FABRIC_DEVICE"
set dstaddr-negate enable
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set inspection-mode proxy
set ssl-ssh-profile "certificate-inspection"
set icap-profile "Prop-Content-Filtration"
set logtraffic disable
set fsso disable
set nat enable
next
end

ICAP response filtering

ICAP HTTP responses can be forwarded or bypassed based on the HTTP header value and status code. 
When configuring the ICAP profile, if response is enabled, the respmod-default-action option can be configured:

FortiOS 6.4.6 Administration Guide 1262


Fortinet Technologies Inc.
Security Profiles

 l If respmod-default-action is set to forward, FortiGate will treat every HTTP response, and send ICAP 
requests to the ICAP server.
 l If respmod-default-action is set to bypass, FortiGate will only send ICAP requests if the HTTP response 
matches the defined rules, and the rule's action is set to forward.
When configuring a response rule:
 l The http-resp-status-code option is configured to specific HTTP response codes. If the HTTP response has 
any one of the configured values, then the rule takes effect.
 l Multiple header value matching groups can be configured. If the header value matches one of the groups, then the 
rule takes effect.
 l If both status codes and header values are specified in a rule, the response must match at least one of each.
The UTM ICAP log category is used for logging actions when  FortiGate encounters errors with the ICAP server, such as 
no service, unreachable, error response code, or timeout. If an error occurs, a traffic log and an associated UTM ICAP 
log will be created.

Example

The FortiGate acts as a gateway for the client PC and connects to a reachable ICAP server. The ICAP server can be in 
NAT, transparent, or proxy mode.

In this example, client request HTTP responses will be forwarded to the ICAP server from all hosts if they have an HTTP 
status code of 200, 301, or 302, and have content-type: image/jpeg in the their header.

To configure an ICAP profile with HTTP response rules:

config icap profile


edit "icap_profile2"
set request disable
set response enable
set streaming-content-bypass disable
set preview disable
set response-server "icap_server1"
set response-failure error
set response-path ''
set methods delete get head options post put trace other
set response-req-hdr disable
set respmod-default-action bypass
config respmod-forward-rules

FortiOS 6.4.6 Administration Guide 1263


Fortinet Technologies Inc.
Security Profiles

edit "rule2"
set host "all"
set action forward
set http-resp-status-code 200 301 302
config header-group
edit 2
set header-name "content-type"
set header "image/jpeg"
next
end
next
end
next
end

To view the logs if an error occurs:

 1. View the traffic log:
# execute log filter category 0
# execute log display
1 logs found.
1 logs returned.

1: date=2019-10-25 time=17:43:47 logid="0000000013" type="traffic" subtype="forward"


level="notice" vd="vdom1" eventtime=1572050627037314464 tz="-0700" srcip=10.1.100.145
srcport=47968 srcintf="port1" srcintfrole="undefined" dstip=172.16.200.46 dstport=80
dstintf="port2" dstintfrole="undefined" poluuid="a4d5324e-f6c3-51e9-ce2d-f360994fb547"
sessionid=43549 proto=6 action="close" policyid=1 policytype="policy" service="HTTP"
dstcountry="Reserved" srccountry="Reserved" trandisp="snat" transip=172.16.200.1
transport=47968 duration=1 sentbyte=485 rcvdbyte=398 sentpkt=6 rcvdpkt=5
appcat="unscanned" wanin=478 wanout=165 lanin=165 lanout=165 utmaction="block"
counticap=1 crscore=5 craction=262144 crlevel="low" utmref=65532-0

 2. View the UTM ICAP log:
# execute log filter category 20
# execute log display
1 logs found.
1 logs returned.

1: date=2019-10-25 time=17:43:46 logid="2000060000" type="utm" subtype="icap"


eventtype="icap" level="warning" vd="vdom1" eventtime=1572050626010097145 tz="-0700"
msg="Request blocked due to ICAP server error" service="HTTP" srcip=10.1.100.145
dstip=172.16.200.46 srcport=47968 dstport=80 srcintf="port1" srcintfrole="undefined"
dstintf="port2" dstintfrole="undefined" policyid=1 sessionid=43549 proto=6
action="blocked" profile="icap_profile1" url="/icap_test/"

The logs show that, in this case, the ICAP services stopped before the access. When the client tried to access HTTP and 
ICAP took effect, the FortiGate sent the ICAP request to the ICAP server and received an error. The client sees a 502
Bad Gateway message, and FortiGate writes the two logs. In the GUI, the logged traffic is displayed as 
Result: Deny: UTM Blocked.

FortiOS 6.4.6 Administration Guide 1264


Fortinet Technologies Inc.
Security Profiles

Web application firewall

Web application firewall (WAF) profiles can detect and block known web application attacks. You can configure WAF 
profiles to use signatures and constraints to examine web traffic. You can also enforce an HTTP method policy, which 
controls the HTTP method that matches the specified pattern.
You can customize the default profile, or  you can create your own profile to apply access rules and HTTP protocol 
constraints to traffic. You can apply WAF profiles to firewall policies when the inspection mode is set to proxy-based.

Web application firewall profiles cannot be used NGFW policy-based mode. See Profile-based 
NGFW vs policy-based NGFW on page 959 for more information.

The following  topic provides information about WAF profiles:
 l Protecting a server running web applications on page 1265

Protecting a server running web applications

You can use a web application firewall profile to protect a server that is running a web application, such as webmail.

Web application firewall profiles are created with a variety of options called signatures and constraints. Once these 
options are enabled, the action can be set to allow, monitor, or block. The severity can be set to high, medium, or low.
In the following example, the default profile will be targeted to block SQL injection attempts and generic attacks.

The web application firewall feature is only available when the policy inspection mode is proxy-
based.

FortiOS 6.4.6 Administration Guide 1265


Fortinet Technologies Inc.
Security Profiles

To protect a server running web applications:

 1. Enable the web application firewall:   
 a. Go to System > Feature Visibility.
 b. Under Security Features, enable Web Application Firewall.
 c. Under Additional Features, click Show More and enable Multiple Security Profiles.

 d. Click Apply.   
 2. Edit the default web application firewall profile:   
Trojans and Known Exploits are blocked by default.

FortiOS 6.4.6 Administration Guide 1266


Fortinet Technologies Inc.
Security Profiles

 a. Go to Security Profiles > Web Application Firewall.


 b. Edit the default profile signature:   
 i. Enable SQL Injection (Extended) and Generic Attacks (Extended).
 ii. For both signatures, set the Action to Block and the Severity to High.

 iii. Click Apply.
 3. Apply the profile to a security policy:   
 a. Go to Policy & Objects > Firewall Policy.
 b. Edit the policy that allows access to the web server:   
 i. Under Firewall / Network Options, select the appropriate Protocol Option.
 ii. Under Security Profiles, enable Web Application Firewall and set it to use the default profile.

FortiOS 6.4.6 Administration Guide 1267


Fortinet Technologies Inc.
Security Profiles

 iii. Set the SSL Inspection to use the deep-inspection profile.

 iv. Click OK.   
 4. Verify that the web application firewall blocks traffic:   
 a. Use the following URL to simulate an attack on your web server and substitute the IP address of your server: 
http://<server
IP>/index.php?username=1'%20or%20'1'%20=%20'1&password=1'%20or%20'1'%20=%20'1
An error message appears, stating that the web application firewall has blocked the traffic:

Offloading to a FortiWeb

If you have a FortiWeb, you may be able to offload the functions of the web application control to your FortiWeb. To find 
out if this option is available, refer to the FortiOS or FortiWeb Release Notes for information about device compatibility.

To offload to a FortiWeb:

 1. Go to Security Fabric > Fabric Connectors.


 2. Click Create New, and click Fabric Device.
 3. Enter the following for the device:
 a. Name (FortiWeb) 
 b. FortiWeb IP address
 c. HTTPS service port
 4. Click Generate.
 5. Enter your credentials to generate the access token.
 6. Click OK.

FortiOS 6.4.6 Administration Guide 1268


Fortinet Technologies Inc.
Security Profiles

SSL & SSH Inspection

Secure sockets layer (SSL) content scanning and inspection allows you to apply antivirus scanning, web filtering, and 
email filtering to encrypted traffic. You can apply SSL inspection profiles to firewall policies.
FortiOS includes four preloaded SSL/SSH inspection profiles, three of which are read-only and can be cloned:
 l certificate-inspection
 l deep-inspection
 l no-inspection
The custom-deep-inspection profile can be edited, or you can create your own SSL/SSH inspection profiles.
Deep inspection (also known as SSL/SSH inspection) is typically applied to outbound policies where destinations are 
unknown. Depending on your policy requirements, you can configure the following:
 l Which CA certificate will be used to decrypt the SSL encrypted traffic
 l Which SSL protocols will be inspected
 l Which ports will be associated with which SSL protocols for inspection
 l Whether or not to allow invalid SSL certificates
 l Whether or not SSH traffic will be inspected
 l Which addresses or web category allowlists can bypass SSL inspection
The following topics provide information about  SSL & SSH Inspection:
 l Certificate inspection on page 1269
 l Deep inspection on page 1271
 l Protecting an SSL server on page 1273
 l Handling SSL offloaded traffic from an external decryption device on page 1274
 l SSH traffic file scanning on page 1276
 l Redirect to WAD after handshake completion on page 1278

Certificate inspection

FortiGate supports certificate inspection. The default configuration has a built-in certificate-inspection profile which you 
can use directly. When you use certificate inspection, the FortiGate only inspects the headers up to the SSL/TLS layer.
If you do not want to deep scan for privacy reasons but you want to control web site access, you can use certificate-
inspection.

SSL inspection options

The following options are available when configuring an SSL inspection profile:

Enable SSL inspection of Select Multiple Clients Connecting to Multiple Servers.


This is normally used when inspecting outbound internet traffic

Inspection method Select SSL Certificate Inspection.

CA certificate Use the default Fortinet_CA_SSL certificate.

FortiOS 6.4.6 Administration Guide 1269


Fortinet Technologies Inc.
Security Profiles

Blocked certificates The FortiGate receives Botnet C&C SSL connections from FortiGuard that 


contain SHA1 fingerprints of malicious certificates. By default, these certificates 
are blocked.
Click View Blocked Certificates to see a detailed list.

Untrusted SSL certificates Configure the action to take when a server certificate is not issued by a trusted 


CA.
 l Allow: Allow the untrusted server certificate. This is the default value.
 l Block: Block the session
 l Ignore: This option is for Full SSL inspection only. It re-signs the server 
certificate as trusted. When configured in the GUI for certificate inspection it 
has no effect and the setting is not saved.
Click View Trusted CAs List to see a list of the factory bundled and user imported 
CAs that are trusted by the FortiGate.

Server certificate SNI check Check the SNI in the hellp message with the CN or SAN field in the returned 


server certificate.
 l Enable: If mismatched, use the CN in the server certificate to do URL 
filtering.
 l Strict: If mismatched, close the connection.
 l Disable: Server certificate SNI check is disabled.

Inspect non-standard HTTPS ports

The built-in certificate-inspection profile is read-only and only listens on port 443. If you want to make changes, you must 
create a new certificate inspection profile.
If you know the non-standard port that the web server uses, such as port 8443, you can add this port to the HTTPS field.

To add a port to the inspection profile in the GUI:

 1. Go to Security Profiles > SSL/SSH Inspection.


 2. Create a new profile, or clone the default profile.
 3. If you do no know what port is used in the HTTPS web server, under Protocol Port Mappingenable Inspect All Ports.
If you know the port, such as port 8443, then set HTTPS to 443,8443.

FortiOS 6.4.6 Administration Guide 1270


Fortinet Technologies Inc.
Security Profiles

 4. Configure the remaining setting as needed.
 5. Click OK.

Common options

Invalid SSL certificates can be blocked, allowed, or a different actions can be configured for the different invalid 
certificates types:

Expired certificates Action to take when the server certificate is expired. The default action is block.

Revoked certificates Action to take when the server certificate is revoked. The default action is block.

Validation timed-out Action to take when the server certificate validation times out. The default action is 


certificates allow.

Validation failed certificates Action to take when the server certificate validation fails. The default action is 


block.

By default, SSL anomalies logging is enabled. Logs are generated in the UTM log type under the SSL subtype when 
invalid certificates are detected.

Deep inspection

You can configure address and web category allowlists to bypass SSL deep inspection.

Reasons for using deep inspection

While Hypertext Transfer Protocol Secure (HTTPS) offers protection on the Internet by applying Secure Sockets Layer 
(SSL) encryption to web traffic, encrypted traffic can be used to get around your network's normal defenses.

FortiOS 6.4.6 Administration Guide 1271


Fortinet Technologies Inc.
Security Profiles

For example, you might download a file containing a virus during an e-commerce session, or you might receive a 
phishing email containing a seemingly harmless download that, when launched, creates an encrypted session to a 
command and control (C&C) server and downloads malware onto your computer. Because the sessions in these attacks 
are encrypted, they might get past your network's security measures.
When you use deep inspection, the FortiGate impersonates the recipient of the originating SSL session, then decrypts 
and inspects the content to find threats and block them. It then re-encrypts the content and sends it to the real recipient.
Deep inspection not only protects you from attacks that use HTTPS, it also protects you from other commonly-used SSL-
encrypted protocols such as SMTPS, POP3S, IMAPS, and FTPS.

Browser messages when using deep inspection

When FortiGate re-encrypts the content, it uses a certificate stored on the FortiGate such as Fortinet_CA_SSL, Fortinet_
CA_Untrusted, or your own CA certificate that you uploaded.
Because there is no Fortinet_CA_SSL in the browser trusted CA list, the browser displays an untrusted certificate 
warning when it receives a FortiGate re-signed server certificate. To stop the warning messages, trust the FortiGate-
trusted CA Fortinet_CA_SSL and import it into your browser.
After importing Fortinet_CA_SSL into your browser, if you still get messages about untrusted certificate, it must be due to 
Fortinet_CA_Untrusted. Never import the Fortinet_CA_Untrusted certificate into your browser.

To import Fortinet_CA_SSL into your browser:

 1. On the FortiGate, go to Security Profiles > SSL/SSH Inspection and edit the deep-inspection profile.


The default CA Certificate is Fortinet_CA_SSL.
 2. Click Download and save the certificate to the management computer.
 3. On the client PC, use the Certificate Import Wizard to install the certificate into the Trusted Root Certificate
Authorities store.
If a security warning appears, select Yes to install the certificate. 

FortiOS 6.4.6 Administration Guide 1272


Fortinet Technologies Inc.
Security Profiles

Exempt web sites from deep inspection

If you do not want to apply deep inspection for privacy or other reasons, you can exempt the session by address, 
category, or allowlist.
If you know the address of the server you want to exempt, you can exempt that address. You can exempt specific 
address type including IP address, IP address range, IP subnet, FQDN, wildcard-FQDN, and geography.
If you want to exempt all bank web sites, an easy way is to exempt the Finance and Banking category which includes all 
finance and bank web sites identified in FortiGuard. For information about creating and using custom local and remote 
categories, see Web rating override on page 1284 and Threat feeds on page 355.

If you want to exempt commonly trusted web sites, you can bypass the SSL allowlist in the SSL/SSH profile by enabling 
Reputable Websites. The allowlist includes common web sites trusted by FortiGuard. 

Protecting an SSL server

You typically use the FortiGate Protecting SSL Server profile as an inbound policy for clients on the internet that access 


the server through the internal side of the FortiGate.
Protecting SSL Server uses a server certificate to protect a single server.
You can use Protecting SSL Server if you do not want a client on the internet to directly access your internal server, and 
you want the FortiGate to simulate your real server.

To upload a server certificate into FortiGate and use that certificate in the SSL/SSH inspection profile:

 1. Go to System > Certificates.


 2. Select Import > Local Certificate and upload the certificate.
 3. Go to Security Profiles > SSL/SSH Inspection and edit or create a new profile.
 4. For Enable SSL Inspection of, select Protecting SSL Server.
 5. For Server Certificate, select the local certificate you imported.

FortiOS 6.4.6 Administration Guide 1273


Fortinet Technologies Inc.
Security Profiles

 6. Click Apply.   

When you apply the Protecting SSL Server profile in a policy, the FortiGate will send the server certificate to the client as 


your server does. 

Handling SSL offloaded traffic from an external decryption device

In scenarios where the FortiGate is sandwiched between load-balancers and SSL processing is offloaded on the 
external load-balancers, the FortiGate can perform scanning on the unencrypted traffic by specifying the ssl-
offloaded option in firewall profile-protocol-options. This option is supported in proxy and flow mode 
(previous versions only supported proxy mode).
If the FortiGate receives an AUTH TLS, PBSZ, or PROT command before receiving plain text traffic from a decrypted 
device, by default, it will expect encrypted traffic, determine that the traffic belongs to an abnormal protocol, and bypass 
the traffic.
When the ssl-offloaded command is enabled, the AUTH TLS command is ignored, and the traffic is treated as plain 
text rather than encrypted data. SSL decryption and encryption are performed by the external device.

Sample topology

In this example, the FortiGate is between two FortiADCs and in SSL offload sandwich mode. The FortiGate receives 
plain text from ADC1 and forwards plain text to ADC2. There is no encrypted traffic passing through the FortiGate.
The client sends HTTPS traffic to ADC1, which then decrypts the traffic and sends HTTP to the FortiGate. The FortiGate 
forwards HTTP to ADC2, and the ADC2 re-encrypts the traffic to HTTPS.

FortiOS 6.4.6 Administration Guide 1274


Fortinet Technologies Inc.
Security Profiles

To configure SSL offloading:

config firewall profile-protocol-options


edit "default-clone"
config http
set ports 80
unset options
unset post-lang
set ssl-offloaded yes
end
config ftp
set ports 21
set options splice
set ssl-offloaded yes
end
config imap
set ports 143
set options fragmail
set ssl-offloaded yes
end
config pop3
set ports 110
set options fragmail
set ssl-offloaded yes
end
config smtp
set ports 25
set options fragmail splice
set ssl-offloaded yes
end
next
end

Verifying the packet captures

The ADC1 incoming port capture shows that ADC1 receives HTTPS traffic:

FortiOS 6.4.6 Administration Guide 1275


Fortinet Technologies Inc.
Security Profiles

The ADC1 outgoing port capture shows that ADC1 decrypts traffic and forwards HTTP traffic to the FortiGate:

The FortiGate's incoming and outgoing port captures show that HTTP traffic passes through the FortiGate:

The ADC2 incoming port capture shows that the ADC2 receives HTTP traffic:

The ADC2 outgoing port capture shows that ADC2 forwards HTTPS traffic to the server:

SSH traffic file scanning

FortiGates  can buffer, scan, log, or block files sent over SSH traffic (SCP and SFTP) depending on the file size, type, or 
contents (such as viruses or sensitive content).

This feature is supported in proxy-based inspection mode. It is currently not supported in flow-
based inspection mode.

FortiOS 6.4.6 Administration Guide 1276


Fortinet Technologies Inc.
Security Profiles

You can configure the following SSH traffic settings in the CLI:
 l Protocol options   
 l DLP sensor   
 l Antivirus (profile and quarantine options)

To configure SSH protocol options:

config firewall profile-protocol-options


edit "protocol"
config ssh
set options [oversize | clientcomfort | servercomfort]
set comfort-interval [1 - 900]
set comfort-amount [1 - 65535]
set oversize-limit [1 - 798]
set uncompressed-oversize-limit [0 - 798]
set uncompressed-nest-limit [2 - 100]
set scan-bzip2 [enable | disable]
end
next
end

To configure SCP block and log options:

config ssh-filter profile


edit "ssh-test"
set block scp
set log scp
next
end

To configure the DLP sensor:

config dlp sensor


edit "test"
set full-archive-proto ssh
set summary-proto ssh
config filter
edit 1
set proto ssh
next
end
next
end

To configure the antivirus profile options:

config antivirus profile


edit "av"
config ssh
set options [scan | avmonitor | quarantine]
set archive-block [encrypted | corrupted | partiallycorrupted | multipart |
nested | mailbomb | fileslimit | timeout | unhandled]
set archive-log [encrypted | corrupted | partiallycorrupted | multipart | nested
| mailbomb | fileslimit | timeout | unhandled]

FortiOS 6.4.6 Administration Guide 1277


Fortinet Technologies Inc.
Security Profiles

set emulator [enable | disable]


set outbreak-prevention [disabled | files | full-archive]
end
next
end

To configure the antivirus quarantine options:

config antivirus quarantine


set drop-infected ssh
set store-infected ssh
set drop-blocked ssh
set store-blocked ssh
set drop-heuristic ssh
set store-heuristic ssh
end

Redirect to WAD after handshake completion

In a proxy-based policy, the TCP connection is proxied by the FortiGate. A TCP 3-way handshake can be established 
with the client even though the server did not complete the handshake.
This option uses IPS to handle the initial TCP 3-way handshake. It rebuilds the sockets and redirects the session back to 
proxy only when the handshake with the server is established.

To enable proxy after a TCP handshake in an SSL/SSH profile:

config firewall ssl-ssh-profile


edit "test"
config https
set ports 443
set status certificate-inspection
set proxy-after-tcp-handshake enable
end
.....
next
end

To enable proxy after a TCP handshake in protocol options:

config firewall profile-protocol-options


edit "test"
config http
set ports 80
set proxy-after-tcp-handshake enable
unset options
unset post-lang
end
....
next
end

FortiOS 6.4.6 Administration Guide 1278


Fortinet Technologies Inc.
Security Profiles

Custom signatures

You can create the following custom signatures and apply them to firewall policies:
 l IPS signature
 l Application signature
 l Application group
The following  topic provides information about custom signatures:
 l Application groups in policies on page 1279
 l Blocking applications with custom signatures on page 1281

Application groups in policies

This feature provides an application group command for firewall shaping policies.
The following CLI command is used:
config firewall shaping-policy
edit 1
set app-group <application group>...
......
next
end

Example

In this example, there are two traffic shaping policies:
 l Policy 1 is for traffic related to cloud applications that has high priority.
 l Policy 2 is for other traffic and has low priority.

To create the shaping policies using the GUI:

 1. Configure an application group for cloud applications:
 a. Go to Security Profiles > Application Signatures.
 b. Click Create New > Application Group. The New Application Group page opens.

 c. Enter a name for the group, select the type, and then add the group the members.
 d. Click OK.

FortiOS 6.4.6 Administration Guide 1279


Fortinet Technologies Inc.
Security Profiles

 2. Create the shaping policy for the high priority cloud application traffic:
 a. Go to Policy & Objects > Traffic Shaping Policy.
 b. Click Create New. The New Shaping Policy page opens.

 c. Configure the shaping policy, selecting the previously created cloud application group, and setting both the 
Shared shaper and Reverse shaper to high-priority.
 d. Click OK.

At least one firewall policy must have application control enabled for the applications to 
match any policy traffic.

 3. Create the shaping policy for all other traffic, setting both the Shared shaper and Reverse shaper to low-priority.

To create the shaping policies using the CLI:

 1. Configure an application group for cloud applications:
config application group
edit "cloud app group"
set application 27210 36740 35944 24467 33048

FortiOS 6.4.6 Administration Guide 1280


Fortinet Technologies Inc.
Security Profiles

next
end

 2. Create the shaping policies for the high priority cloud application traffic and the other, low priority traffic:
config firewall shaping-policy
edit 1
set name "For Cloud Traffic"
set service "ALL"
set app-category 30
set app-group "cloud app group"
set dstintf "port1"
set traffic-shaper "high-priority"
set traffic-shaper-reverse "high-priority"
set srcaddr "all"
set dstaddr "all"
next
edit 2
set name "For Other Traffic"
set service "ALL"
set dstintf "port1"
set traffic-shaper "low-priority"
set traffic-shaper-reverse "low-priority"
set srcaddr "all"
set dstaddr "all"
next
end

Blocking applications with custom signatures

Custom signatures can be used in application control profiles to block web traffic from specific applications, such as out 
of support operating systems.
In this example, you create a custom signature to detect PCs running Windows NT 6.1 operating systems, including 
Windows 7 and Windows Server 2008 R2. The signature is added to an application control profile and the action is set to 
block. The profile is then used in a firewall policy so that web traffic matching the signature is blocked. The logs 
generated by this example can be used to help identify other computers that you need to block.

To make the settings visible in the GUI:

 1. Go to System > Feature Visibility


 2. In the Security Features section, enable Application Control.
 3. Click Apply.

To create the custom application signature:

 1. Go to Security Profiles > Application Signatures and click Create New > Custom Application Signature.
 2. Enter a name for the custom signature, such as block_nt_6.1.
 3. Enter the Signature. In this example:
F-SBID( --attack_id 6483; --name "Windows.NT.6.1.Web.Surfing"; --default_action drop_
session; --service HTTP; --protocol tcp; --app_cat 25; --flow from_client; --pattern
!"FCT"; --pattern "Windows NT 6.1"; --no_case; --context header; --weight 40; )

FortiOS 6.4.6 Administration Guide 1281


Fortinet Technologies Inc.
Security Profiles

This signature scans HTTP and HTTPS traffic that matches the pattern Windows NT 6.1 in its header. For blocking 
older versions of Windows, such as Windows XP, you would use the pattern Windows NT 5.1. An attack ID is 
automatically generated when the signature is created.

 4. Click OK.
The signature is included in the Custom Application Signature section of the signature list.

To use the signature in an application control profile:

 1. Go to Security Profiles > Application Control.


 2. Create a new profile, or edit an existing one.
 3. In the Application and Filter Overrides table, click Create New.
 4. Set Type to Application and Action to Block.
 5. Select the custom signature from the list, using the search feature if required, then click Add Selected.

 6. Click OK.
The signature is added to the table.
 7. Click OK.

To add the application control profile to a firewall policy:

 1. Go to Policy & Objects > Firewall Policy.


 2. Edit the policy that is currently allows a connection from the internal network to the internet.

FortiOS 6.4.6 Administration Guide 1282


Fortinet Technologies Inc.
Security Profiles

 3. In the Security Profiles section, enable Application Control and select the profile.


If deep inspection is not enabled, then only HTTP traffic will be scanned. To scan HTTPS traffic, set SSL Inspection 
to a profile that includes deep inspection. See SSL & SSH Inspection on page 1269 for more information.
 4. Click OK.

Results

When a PC that is running one of the affected operating systems tries to connect to the internet using a web browser, a 
replacement message is shown. For information on customizing replacement messages, see Replacement messages 
on page 917.

Go to Log & Report > Application Control to view the web traffic that is logged for the PC that is blocked by the application 


signature. 

FortiOS 6.4.6 Administration Guide 1283


Fortinet Technologies Inc.
Security Profiles

Overrides

Web filter configuration can be separated into profile configuration and profile overrides.
You can also override web filter behavior based on the FortiGuard website categorization:
 l Use alternate categories (web rating overrides): this method manually assigns a specific website to a different 
Fortinet category or a locally-created category.
 l Use alternate profiles: configured users or IP addresses can use an alternative web filter profile when attempting to 
access blocked websites.

Some features of this functionality require a subscription to FortiGuard Web Filtering.

The following topics provide information about  web overrides:
 l Web rating override on page 1284
 l Web profile override on page 1289

Web rating override

Web rating overrides allow you to add specific URLs to both FortiGuard and custom web ratings categories. 
In a web filter profile, the action for each category can be configured. See  FortiGuard filter on page 1161 for details. A 
web rating override in a custom category will not impact any web filters until the category's action is changed to Monitor, 
Block, Warning, or Authenticate in the specific web filter profile's settings. If a URL is in multiple enabled categories, the 
order of precedence is local categories, then remote categories, and then FortiGuard categories.
In SSL/SSH inspection profiles, custom categories must be explicitly selected to be exempt from SSL inspection. In 
proxy addresses, custom categories must be explicitly selected as URL categories for them to apply. In both settings, if a 
URL is in multiple selected categories, the order of precedence is local categories, then remote categories, and then 
FortiGuard categories.

Web rating override requires a FortiGuard license.

Web filter profiles

In this example, www.fortinet.com is added to both a custom, or local, category (Seriously) and an external threat feed, 
or remote, category (OnAworkComputer). The local category action is set to Monitor, while the remote category action is 
set to Block. When a user browses to www.fortinet.com, the local category action takes precedence over both the 
remote category and the FortiGuard category (Information Technology), so the Monitor action is taken.

FortiOS 6.4.6 Administration Guide 1284


Fortinet Technologies Inc.
Security Profiles

To create a custom category in the GUI:

 1. Go to Security Profiles > Web Rating Overrides.


 2. Click Custom Categories, then click Create New.
 3. Enter a name for the category, and adjust the Status as needed.

 4. Click OK.

To create a web rating override in the GUI:

 1. Go to Security Profiles > Web Rating Overrides and click Create New.


 2. Enter the URL to override.
 3. Optionally, click Lookup rating to see what its current rating is, if it has one.
 4. Select the new Category and Sub-Category for the override.

 5. Click OK.

To create a new FortiGuard category threat feed in the GUI:

 1. Go to Security Fabric > External Connectors and click Create New.


 2. In the Threat Feeds section, click FortiGuard Category.
 3. Enter a name for the threat feed, such as OnAworkComputer.
 4. Enter the URI of external resource.

 5. Configure the remaining settings as needed, then click OK.

FortiOS 6.4.6 Administration Guide 1285


Fortinet Technologies Inc.
Security Profiles

To use the new categories in a web filter profile in the GUI:

 1. Go to Security Profiles > Web Filter and create or edit a web filter profile. See  FortiGuard filter on page 1161 for 


more information.
 2. Enable FortiGuard category based filter 
 3. Set the action for the Seriously category in the Local Categories group to Monitor.
 4. Set the action for the OnAworkComputer category in the Remote Categories group to Block.

When the action for a custom category is Allow, the category is disabled. The next 
category's action in the order of preference will be applied.

 5. Configure the remaining settings are required, then click OK.

To use local and remote categories in a web filter profile in the CLI:

 1. Create the custom category and add a URL to it:
config vdom
edit root
config webfilter ftgd-local-cat
edit "Seriously"
set id 140
next
end
config webfilter ftgd-local-rating
edit "www.fortinet.com"
set rating 140
next
end
next
end

 2. Create a FortiGuard Category Threat Feed external connector to import an external blocklist.


config global
config system external-resource
edit "OnAworkComputer"

FortiOS 6.4.6 Administration Guide 1286


Fortinet Technologies Inc.
Security Profiles

set category 192


set resource "https://192.168.0.5/lists/blocklist.txt"
next
end
end

 3. Enable the new category in a web filter profile. See FortiGuard filter on page 1161 for details.
Custom local categories have an ID range of 140 to 191. Remote categories have an ID range of 192 to 221.
config vdom
edit root
config webfilter profile
edit "WebFilter-1"
set feature-set proxy
config ftgd-wf
unset options
config filters
edit 12
set category 12
set action warning
next
...
edit 23
set action warning
next
edit 140
set category 140
next
edit 192
set category 192
set action block
next
end
end
next
end
next
end

When a filter is added for the local and remote categories (140 and 192 in this example), the default action is 
monitor.

SSL/SSH inspection profiles

To use local and remote categories in an SSL/SSH inspection profile to exempt them from SSL
inspection in the GUI:

 1. Go to Security Profiles > SSL/SSH Inspection.


 2. Create a new profile or edit an existing one.
 3. Ensure that Inspection method is Full SSL Inspection.

FortiOS 6.4.6 Administration Guide 1287


Fortinet Technologies Inc.
Security Profiles

 4. In the Exempt from SSL Inspection section, add the local and remote categories to the Web categories list .

 5. Configure the remaining settings as required, then click OK.

To use local and remote categories in an SSL/SSH inspection profile to exempt them from SSL
inspection in the CLI:

config vdom
edit root
config firewall ssl-ssh-profile
edit "SSL_Inspection"
config https
set ports 443
set status deep-inspection
end
...
config ssl-exempt
edit 1
set fortiguard-category 140
next
edit 2
set fortiguard-category 192
next
end
next
end
next
end

Proxy addresses

To use local and remote categories in a proxy address in the GUI:

 1. Go to Policy & Objects > Addresses and click Create New > Address, or edit an existing proxy address.


 2. Set Category to Proxy Address.
 3. Set Type to URL Category.

FortiOS 6.4.6 Administration Guide 1288


Fortinet Technologies Inc.
Security Profiles

 4. In the URL Category, add the local and remote categories.

 5. Configure the remaining settings as required, then click OK.

To use local and remote categories in a proxy address in the CLI:

config vdom
edit root
config firewall proxy-address
edit "proxy_override"
set type category
set host "all"
set category 140 192
set color 23
next
end
next
end

Web profile override

You can use the following profile override methods:
 l Administrative override
 l Allow users to override blocked categories

Administrative override

Administrators can grant temporary access to sites that are otherwise blocked by a web filter profile. You can grant 
temporary access to a user, user group, or source IP address. You can set the time limit by selecting a date and time. 
The default is 15 minutes.
When the administrative web profile override is enabled, a blocked access page or replacement message does not 
appear, and authentication is not required.

Scope range

You can choose one of the following scope ranges:

FortiOS 6.4.6 Administration Guide 1289


Fortinet Technologies Inc.
Security Profiles

 l User: authentication for permission to override is based on whether or not the user is using a specific user account.
 l User group: authentication for permission to override is based on whether or not the user account supplied as a 
credential is a member of the specified user group.
 l Source IP: authentication for permission to override is based on the IP address of the computer that was used to 
authenticate. This would be used for computers that have multiple users. For example, if a user logs on to the 
computer, engages the override by using their credentials, and then logs off, anyone who logs on with an account 
on that computer would be using the alternate override web filter profile.

When you enter an IP address in the administrative override method, only individual IP 
addresses are allowed.

Differences between IP and identity-based scope

Using the IP scope does not require using an identity-based policy.
When using the administrative override method and IP scope, you might not see a warning message when you change 
from using the original web filter profile to using the alternate profile. There is no requirement for credentials from the 
user so, if allowed, the page will just appear in the browser.

Configuring a web profile administrative override

This example describes how to override the webfilter profile with the webfilter_new profile.

To configure web profile administrative override using the GUI:

 1. Go to Security Profiles > Web Profile Overrides and click Create New.


The New Administrative Override pane opens.
 2. Configure the administrative override:
 a. For Scope Range, click Source IP.
 b. In the Source IP field, enter the IP address for the client computer (10.1.100.11 in this example).
 c. In the Original profile dropdown, select webfilter.
 d. In the New profile dropdown, select webfilter_new. 
In the Expires field, the default 15 minutes appears, which is the desired duration for this example.

 3. Click OK. 

To configure web profile administrative override using the CLI:

config webfilter override

FortiOS 6.4.6 Administration Guide 1290


Fortinet Technologies Inc.
Security Profiles

edit 1
set status enable
set scope ip
set old-profile "webfilter"
set new-profile "webfilter_new"
set expires 2020/08/12 12:00:00
set initiator "admin"
set ip 10.1.100.11
next
end

Allow users to override blocked categories

For both override methods, the scope ranges (for specified users, user groups, or IP addresses) allow sites blocked by 
web filtering profiles to be overridden for a specified length of time.
But there is a difference between the override methods  when the users or user group scope ranges are selected. In both 
cases, you would need to apply the user or user group as source in the firewall policy. With administrative override, if you 
do not apply the source in the firewall policy, the traffic will not match the override and will be blocked by the original 
profile. With Allow users to override blocked categories, the traffic will also be blocked, but instead of displaying a 
blocking page, the following message appears:

When you choose the user group scope, once one user overrides, it will affect the other users in the group when they 
attempt to override. For example, user1 and user2 both belong to the local_user group. Once user1 successfully 
overrides, this will generate an override entry for the local_user group instead of one specific user. This means that if 
user2 logs in from another PC, they can override transparently.

Other features

Besides the scope, there are some other features in Allow users to override blocked categories.

Apply to group(s)

Individual users can not be selected. You can select one or more of the user groups recognized by the FortiGate. They 
can be local to the system or from a third party authentication device, such as an AD server through FSSO.

FortiOS 6.4.6 Administration Guide 1291


Fortinet Technologies Inc.
Security Profiles

Switch duration

Administrative override sets a specified time frame that is always used for that override. The available options in Allow
users to override blocked categories are:
 l Predefined: the value entered is the set duration (length of time in days, hours, or minutes) that the override will be 
in effect. If the duration variable is set to 15 minutes, the length of the override will always be 15 minutes. The option 
will be visible in the override message page, but the setting will be grayed out.
 l Ask: the user has the option to set the override duration once it is engaged. The user can set the duration in terms of 
days, hours, or minutes.

Creating a web profile users override

This example describes how to allow users in the local_group to override the webfilter_new profile.

To allow users to override blocked categories using the GUI:

 1. Go to Security Profiles > Web Filter and click Create New.


 2. Enter a name for the profile.
 3. Enable Allow users to override blocked categories.
 4. Configure the web filter profile:
 a. Click the Groups that can override field, and select a group (local_group in this example).
 b. Click the Profile Name field, and select the webfilter_new profile. 
 c. For the Switch applies to field, click IP.
 d. For the Switch Duration field, click Predefined. The default 15 minutes appears, which is the desired duration 
for this example.
 e. Configure the rest of the profile as needed.

 5. Click OK.

Using the ask feature

This option is only available in the Allow users to override blocked categories method. It configures the message page to 


have the user choose which scope they want to use. Normally on the message page, the scope options are grayed out 

FortiOS 6.4.6 Administration Guide 1292


Fortinet Technologies Inc.
Security Profiles

and not editable. In the following example, the Scope is predefined with IP.

When the ask option is enabled (through the Switch applies to field in the GUI), the Scope dropdown is editable. Users 


can choose one of the following: 
 l User
 l User group
 l IP 

User and User Group are only available when there is a user group in the firewall policy. You 
must specify a user group as a source in the firewall policy so the scope includes User and 
User Group; otherwise, only the IP option will be available.

FortiOS 6.4.6 Administration Guide 1293


Fortinet Technologies Inc.
VPN

Virtual Private Network (VPN) technology lets remote users connect to private computer networks to gain access to their 
resources in a secure way. For example, an employee traveling or working at home can use a VPN to securely access 
the office network through the Internet.
Instead of remotely logging into a private network using an unencrypted and unsecured Internet connection, using a 
VPN ensures that unauthorized parties cannot access the office network and cannot intercept information going 
between the employee and the office. Another common use of a VPN is to connect the private networks of multiple 
offices.
Fortinet offers VPN capabilities in the FortiGate Unified Threat Management (UTM) appliance and in the FortiClient 
Endpoint Security suite of applications. You can install a FortiGate unit on a private network and install FortiClient 
software on the user’s computer. You can also use a FortiGate unit to connect to the private network instead of using 
FortiClient software.
The following sections provide information about VPN:
 l IPsec VPNs on page 1294
 l SSL VPN on page 1557

IPsec VPNs

The following sections provide instructions on configuring IPsec VPN connections in FortiOS 6.4.6.
 l General IPsec VPN configuration on page 1294
 l Site-to-site VPN on page 1319
 l Remote access on page 1377
 l Aggregate and redundant VPN on page 1414
 l Overlay Controller VPN (OCVPN) on page 1454
 l ADVPN on page 1485
 l Other VPN topics on page 1519
 l VPN IPsec troubleshooting on page 1550

General IPsec VPN configuration

The following sections provide instructions on general IPsec VPN configurations:
 l Network topologies on page 1295
 l Phase 1 configuration on page 1295
 l Phase 2 configuration on page 1310
 l VPN security policies on page 1314
 l Blocking unwanted IKE negotiations and ESP packets with a local-in policy on page 1318

FortiOS 6.4.6 Administration Guide 1294


Fortinet Technologies Inc.
VPN

Network topologies

The topology of your network will determine how remote peers and clients connect to the VPN and how VPN traffic is 
routed.

Topology Description

Site-to-Site Standard one-to-one VPN between two FortiGates. See Site-to-site VPN on page 
1319.

Hub and spoke/ADVPN One central FortiGate (hub) has multiple VPNs to other remote FortiGates 
(spokes). In ADVPN, shortcuts can be created between spokes for direct 
communication. See ADVPN on page 1485.

OCVPN Fortinet's cloud based solution for automating VPN setup between devices 
registered to the same account. See Overlay Controller VPN (OCVPN) on page 
1454.

FortiClient dialup Typically remote FortiClient dialup clients use dynamic IP addresses through NAT 
devices. The FortiGate acts as a dialup server allowing dialup VPN connections 
from multiple sources. See FortiClient as dialup client on page 1384.

FortiGate dialup Similar to site-to-site except one end is a dialup server and the other end is a 
dialup client. This facilitates scenarios in which the remote dialup end has a 
dynamic address, or does not have a public IP, possibly because it is behind NAT. 
See FortiGate as dialup client on page 1378.

Aggregate VPN Natively support aggregating multiple VPN tunnels to increase performance and 
provide redundancy over multiple links. See IPsec aggregate for redundancy and 
traffic load-balancing on page 1431.

Redundant VPN Options for supporting redundant and partially redundant IPsec VPNs, using 
route-based approaches. See Redundant hub and spoke VPN on page 1446.

L2TP over IPsec Configure VPN for Microsoft Windows dialup clients using the built in L2TP 
software. Users do not have to install any Fortinet software. See L2TP over IPsec 
on page 1404.

GRE over IPsec Legacy support for routers requiring point-to-point GRE over IPsec for tunneling. 
See GRE over IPsec on page 1339.

Phase 1 configuration

Phase 1 configuration primarily defines the parameters used in IKE (Internet Key Exchange) negotiation between the 
ends of the IPsec tunnel. The local end is the FortiGate interface that initiates the IKE negotiations. The remote end is 
the remote gateway that responds and exchanges messages with the initiator. Hence, they are sometimes referred to as 
the initiator and responder. The purpose of phase 1 is to secure a tunnel with one bi-directional IKE SA (security 
association) for negotiating IKE phase 2 parameters.
The auto-negotiate and negotiation-timeout commands control how the IKE negotiation is processed when 
there is no traffic, and the length of time that the FortiGate waits for negotiations to occur.

FortiOS 6.4.6 Administration Guide 1295


Fortinet Technologies Inc.
VPN

IPsec tunnels can be configured in the GUI using the VPN Creation Wizard. Go to VPN > IPsec Wizard. The wizard 


includes several templates (site-to-site, hub and spoke, remote access), but a custom tunnel can be configured with the 
following settings:

Name Phase 1 definition name.
The maximum length is 15 characters for an interface mode VPN and 35 
characters for a policy-based VPN. 
For a policy-based VPN, the name normally reflects where the remote 
connection originates. For a route-based tunnel, the FortiGate also uses the 
name for the virtual IPsec interface that it creates automatically.

Network

IP Version Protocol, either IPv4 or IPv6.

Remote Gateway Category of the remote connection:


 l Static IP Address: the remote peer has a static IP address. 
 l Dialup User: one or more FortiClient or FortiGate dialup clients with 
dynamic IP addresses will connect to the FortiGate.
 l Dynamic DNS: a remote peer that has a domain name and subscribes to 
a dynamic DNS service will connect to the FortiGate.

IP Address The IP address of the remote peer. This option is only available when the 
Remote Gateway is Static IP Address.

Dynamic DNS The domain name of the remote peer. This option is only available when the 


Remote Gateway is Dynamic DNS.

Interface The interface through which remote peers or dialup clients connect to the 
FortiGate. This option is only available in NAT mode.
By default, the local VPN gateway IP address is the IP address of the 
interface that was selected (Primary IP in the Local Gateway field).

Local Gateway IP address for the local end of the VPN tunnel (Primary IP is used by default):


 l Secondary IP: secondary address of the interface selected in the 
Interface field. 
 l Specify: manually enter an address.
Interface mode cannot be configured in a transparent mode VDOM.

Mode Config This option is only available when the Remote Gateway is Dialup User.


Configure the client IP address range, subnet mask/prefix length, 
DNS server, and split tunnel capability to automate remote client addressing.

NAT Traversal This option is only available when the Remote Gateway is Static IP Address 


or Dynamic DNS.
ESP (encapsulating security payload), the protocol for encrypting data in the 
VPN session, uses IP protocol 50 by default. However, it does not use any 
port numbers so when traversing a NAT device, the packets cannot be 
demultiplexed. Enabling NAT traversal encapsulates the ESP packet inside a 
UDP packet, thereby adding a unique source port to the packet. This allows 
the NAT device to map the packets to the correct session.
 l Enable: a NAT device exists between the local FortiGate and the VPN 

FortiOS 6.4.6 Administration Guide 1296


Fortinet Technologies Inc.
VPN

peer or client. Outbound encrypted packets are wrapped inside a UDP 
IP header that contains a port number. The local FortiGate and the VPN 
peer or client must have the same NAT traversal setting (both selected 
or both cleared) to connect reliably. When in doubt, enable 
NAT traversal.
 l Disable: disable the NAT traversal setting.
 l Forced: the FortiGate will use a port value of zero when constructing the 
NAT discovery hash for the peer. This causes the peer to think it is 
behind a NAT device, and it will use UDP encapsulation for IPsec, even 
if no NAT is present. This approach maintains interoperability with any 
IPsec implementation that supports the NAT-T RFC.

Keepalive Keepalive frequency setting. This option is only available when 
Frequency NAT Traversal is set to Enable or Forced. The NAT device between the VPN 
peers may remove the session when the VPN connection remains idle for too 
long.
The value represents an interval in seconds where the connection will be 
maintained with periodic keepalive packets. The keepalive interval must be 
smaller than the session lifetime value used by the NAT device.
The keepalive packet is a 138-byte ISAKMP exchange.

Dead Peer Reestablishes VPN tunnels on idle connections and cleans up dead IKE 


Detection peers if required. This feature minimizes the traffic required to check if a VPN 
peer is available or unavailable (dead). The available options are: 
 l Disable: disable dead peer detection (DPD).
 l On Idle: triggers DPD when IPsec is idle.
 l On Demand: Passively sends DPD to reduce load on the firewall. Only 
triggers DPD when IPsec outbound packets are sent, but no reply is 
received from the peer. When there is no traffic and the last DPD-ACK 
has been received, IKE will not send DPDs periodically.
Notifications are received whenever a tunnel goes up or down, or to keep the 
tunnel connection open when no traffic is being generated inside the tunnel. 
For example, in scenarios where a dialup client or dynamic DNS peer 
connects from an IP address that changes periodically, traffic may be 
suspended while the IP address changes.

When Dead Peer Detection is selected, optionally specify a retry count and a 


retry interval using dpd-retrycount and dpd-retryinterval. See 
Dead peer detection on page 1301.

Forward Error Enable on both ends of the tunnel to correct errors in data transmission by 


Correction sending redundant data across the VPN.

Device creation Advanced option. When enabled, a dynamic interface (network device) is 


created for each dialup tunnel. See Dynamic tunnel interface creation on 
page 1308. 

Aggregate member Advanced option. When enabled, the tunnel can be used as an aggregate 


member candidate.

Authentication  

FortiOS 6.4.6 Administration Guide 1297


Fortinet Technologies Inc.
VPN

Method Either Pre-shared Key or Signature.

Pre-shared Key The pre-shared key that the FortiGate will use to authenticate itself to the 


remote peer or dialup client during phase 1 negotiations. The same key must 
be defined at the remote peer or client. See Pre-shared key.

Certificate Name The  server certificate that the FortiGate will use to authenticate itself to the 


remote peer or dialup client during phase 1 negotiations. See Digital 
certificates.

IKE Version Either 1 or 2. See Choosing IKE version 1 and 2 on page 1303.

Mode This option is only available when IKEv1 is selected. The two available 
options are:
 l Aggressive: the phase 1 parameters are exchanged in a single message 
with unencrypted authentication information.
 l Main (ID protection): the phase 1 parameters are exchanged in multiple 
rounds with encrypted authentication information.
When the remote VPN peer has a dynamic IP address and is authenticated 
by a pre-shared key, you must select Aggressive mode if there is more than 
one dialup phase 1 configuration for the interface IP address.
When the remote VPN peer has a dynamic IP address and is authenticated 
by a certificate, you must select Aggressive mode if there is more than one 
phase 1 configuration for the interface IP address and these phase 1 
configurations use different proposals.

Peer Options Options to authenticate VPN peers or clients depending on the Remote


Gateway and Authentication Method settings. 

Any peer ID Accepts the local ID of any remote VPN peer or client. The FortiGate does 


not check identifiers (local IDs). Mode can be set to Aggressive or Main.
This option can be used with digital certificate authentication, but for higher 
security, use Peer certificate. 

Specific peer ID This option is only available when Aggressive Mode is enabled. Enter the 


identifier that is used to authenticate the remote peer. The identifier must 
match the local ID configured by the remote peer’s administrator.
If the remote peer is a FortiGate, the identifier is specified in the Local ID field 
of the Phase 1 Proposal settings. 
If the remote peer is a FortiClient user, the identifier is specified in the Local
ID field.
In circumstances where multiple remote dialup VPN tunnels exist, each 
tunnel must have a peer ID set.

Peer certificate Define the CA certificate used to authenticate the remote peer when the 


authentication mode is Signature.
If the FortiGate will act as a VPN client, and you are using security certificates 
for authentication, set the Local ID to the distinguished name (DN) of the 
local server certificate that the FortiGate unit will use for authentication 
purposes.

FortiOS 6.4.6 Administration Guide 1298


Fortinet Technologies Inc.
VPN

Peer ID from dialup Authenticate multiple FortiGate or FortiClient dialup clients that use unique 


group identifiers and unique pre-shared keys (or unique pre-shared keys only) 
through the same VPN tunnel. 

You must create a dialup user group for authentication purposes. Select the 
group from the list next to the Peer ID from dialup group option. 

You must set Mode to Aggressive when the dialup clients use unique 
identifiers and unique pre-shared keys. If the dialup clients use unique pre-
shared keys only, you can set Mode to Main if there is only one dialup Phase 
1 configuration for this interface IP address.

Phase 1 Proposal The encryption and authentication algorithms used to generate keys for the   


IKE SA. 
There must be a minimum of one combination. The remote peer or client 
must be configured to use at least one of the proposals that you define. 

Encryption The following symmetric-key encryption algorithms are available:
 l DES: Digital Encryption Standard, a 64-bit block algorithm that uses a 
56-bit key.
 l 3DES: triple-DES; plain text is encrypted three times by three keys.
 l AES128: Advanced Encryption Standard, a 128-bit block algorithm that 
uses a 128-bit key.
 l AES128GCM: AES in Galois/Counter Mode, a 128-bit block algorithm 
that uses a 128-bit key. Only available for IKEv2.
 l AES192: a 128-bit block algorithm that uses a 192-bit key.
 l AES256: a 128-bit block algorithm that uses a 256-bit key.
 l AES256GCM: AES in Galois/Counter Mode, a 128-bit block algorithm 
that uses a 256-bit key. Only available for IKEv2.
 l CHACHA20POLY1305: a 128-bit block algorithm that uses a 128-bit key 
and a symmetric cipher. Only available for IKEv2. See also HMAC 
settings.

Authentication The following message digests that check the message authenticity during 
an encrypted session are available:
 l MD5: message digest 5.
 l SHA1: secure hash algorithm 1; a 160-bit message digest.
 l SHA256: a 256-bit message digest.
 l SHA384: a 384-bit message digest.
 l SHA512: a 512-bit message digest.
In IKEv2, encryption algorithms include authentication, but a PRF (pseudo 
random function) is still required (PRFSHA1, PRFSHA256, PRFSHA384, 
PRFSHA512). See also HMAC settings.

Diffie-Hellman Asymmetric key algorithms used for public key cryptography.
Groups Select one or more from groups 1, 2, 5, and 14 through 32. At least one of the 
Diffie-Hellman Groups (DH) settings on the remote peer or client must match 
one the selections on the FortiGate. Failure to match one or more DH groups 
will result in failed negotiations.

FortiOS 6.4.6 Administration Guide 1299


Fortinet Technologies Inc.
VPN

Key Lifetime The time (in seconds) that must pass before the IKE encryption key expires. 


When the key expires, a new key is generated without interrupting service. 
The keylife can be from 120 to 172 800 seconds.

Local ID Optional setting. This value must match the peer ID value given for the 
remote VPN peer’s Peer Options.
 l If the FortiGate will act as a VPN client and you are using peer IDs for 
authentication purposes, enter the identifier that the FortiGate will 
supply to the VPN server during the phase 1 exchange.
 l If the FortiGate will act as a VPN client and you are using security 
certificates for authentication, select the distinguished name (DN) of the 
local server certificate that the FortiGate will use for authentication 
purposes. 

XAUTH This option supports the authentication of dialup clients. It is only available for   
IKE version 1.
 l Disable: do not use XAuth.
 l Client: available only if the Remote Gateway is set to Static IP Address 
or Dynamic DNS. If the FortiGate is a dialup client, enter the user name 
and password for the FortiGate to authenticate itself to the remote XAuth 
server.
 l PAP Server, CHAP Server, Auto Server: available only if Remote
Gateway is set to Dialup User. Dialup clients authenticate as members 
of a dialup user group. A user group must be created first for the dialup 
clients that need access to the network behind the FortiGate.
The FortiGate must be configured to forward authentication requests to 
an external RADIUS or LDAP authentication server.
Select the server type based on the encryption method used between 
the FortiGate, the XAuth client, and the external authentication server. 
Then select the user group (Inherit from policy or Choose). See Using 
XAuth authentication on page 1306.

Username User name used for authentication.

Password Password used for authentication.

Additional CLI configurations

The following phase 1 settings can be configured in the CLI:

VXLAN over IPsec Packets with a VXLAN header are encapsulated within IPsec tunnel mode. 

To configure VXLAN over IPsec:

config vpn ipsec phase1-interface/phase1


edit ipsec
set interface <name>
set encapsulation vxlan/gre
set encapsulation-address ike/ipv4/ipv6
set encap-local-gw4 xxx.xxx.xxx.xxx

FortiOS 6.4.6 Administration Guide 1300


Fortinet Technologies Inc.
VPN

set encap-remote-gw xxx.xxx.xxx.xxx


next
end

IPsec tunnel idle timer Define an idle timer for IPsec tunnels. When no traffic has passed through the 


tunnel for the configured idle-timeout value, the IPsec tunnel will be flushed.

To configure IPsec tunnel idle timeout:

config vpn ipsec phase1-interface


edit p1
set idle-timeout [enable | disable]
set idle-timeoutinterval <integer> IPsec tunnel idle
timeout in minutes (10 - 43200).
next
end

Monitor tunnel for failover Monitor a site-to-site tunnel to guarantee operational continuity if the primary 


tunnel fails. Configure the secondary phase 1 interface to monitor the primary 
interface.

To configure the monitor:

config vpn ipsec phase1-interface


edit <secondary phase1-interface>
set monitor <primary phase1-interface>
next
end

Passive mode Passive mode turns one side of the tunnel to be a responder only. It does not 


initiate VPN tunnels either by auto-negotiation, rekey, or traffic initiated behind the 
FortiGate.

To configure passive mode:

config vpn ipsec phase1-interface


edit <example>
set rekey {enable | disable}
set passive-mode {enable | disable}
set passive-tunnel-interface {enable | disable}
next
end

Dead peer detection

By default, dead peer detection (DPD) sends probe messages every five seconds. If you are experiencing high network 
traffic, you can experiment with increasing the ping interval. However, longer intervals will require more traffic to detect 
dead peers, which will result in more traffic.

FortiOS 6.4.6 Administration Guide 1301


Fortinet Technologies Inc.
VPN

In a dynamic (dialup) connection, the On Idle option encourages dialup server configurations 
to more proactively delete tunnels if the peer is unavailable.

In the GUI, the dead peer detection option can be configured in the GUI when defining phase 1 options. The following 
CLI commands support additional options for specifying a retry count and a retry interval.
For example, enter the following to configure DPD on the existing IPsec phase 1 configuration to use 15-second intervals 
and to wait for three missed attempts before declaring the peer dead and taking action.

To configure DPD:

config vpn ipsec phase1-interface


edit <value>
set dpd [disable | on-idle | on-demand]
set dpd-retryinveral 15
set dpd-retrycount 3
next
end

DPD scalability

On a dialup server, if many VPN connections are idle, the increased DPD exchange could negatively impact the 
performance/load of the daemon. The on-demand option in the CLI triggers DPD when IPsec traffic is sent, but no reply 
is received from the peer.
When there is no traffic and the last DPD-ACK had been received, IKE will not send DPDs periodically. IKE will only send 
out DPDs if there are outgoing packets to send, but no inbound packets have since been received.

HMAC settings

The FortiGate uses the HMAC based on the authentication proposal that is chosen in phase 1 or phase 2 of the IPsec 
configuration. Each proposal consists of the encryption-hash pair (such as 3des-sha256). The FortiGate matches the 
most secure proposal to negotiate with the peer. 

To view the chosen proposal and the HMAC hash used:

# diagnose vpn ike gateway list

vd: root/0
name: MPLS
version: 1
interface: port1 3
addr: 192.168.2.5:500 -> 10.10.10.1:500
virtual-interface-addr: 172.31.0.2 -> 172.31.0.1
created: 1015820s ago
IKE SA: created 1/13 established 1/13 time 10/1626/21010 ms
IPsec SA: created 1/24 established 1/24 time 0/11/30 ms

id/spi: 124 43b087dae99f7733/6a8473e58cd8990a


direction: responder
status: established 68693-68693s ago = 10ms
proposal: 3des-sha256

FortiOS 6.4.6 Administration Guide 1302


Fortinet Technologies Inc.
VPN

key: e0fa6ab8dc509b33-aa2cc549999b1823-c3cb9c337432646e
lifetime/rekey: 86400/17436
DPD sent/recv: 000001e1/00000000

Choosing IKE version 1 and 2

If you create a route-based VPN, you have the option of selecting IKE version 2. Otherwise, IKE version 1 is used. 
IKEv2, defined in RFC 4306, simplifies the negotiation process that creates the security association (SA). 
If you select IKEv2:
 l There is no choice in phase 1 of aggressive or main mode.
 l Extended authentication (XAUTH) is not available. 
 l You can utilize EAP and MOBIKE.

Repeated authentication in IKEv2

This feature provides the option to control whether a device requires its peer to re-authenticate or whether re-key is 
sufficient. It does not influence the re-authentication or re-key behavior of the device itself, which is controlled by the peer 
(the default being to re-key). This solution is in response to RFC 4478. As described by the IETF, "the purpose of this is 
to limit the time that security associations (SAs) can be used by a third party who has gained control of the IPsec peer".
To configure IKE SA re-authentication:
config vpn ipsec phase1-interface
edit p1
set reauth [enable | disable]
next
end

IKEv2 quick crash detection

There is support for IKEv2 quick crash detection (QCD) as described in RFC 6290. 
RFC 6290 describes a method in which an IKE peer can quickly detect that the gateway peer it has and established an 
IKE session with has rebooted, crashed, or otherwise lost IKE state. When the gateway receives IKE messages or ESP 
packets with unknown IKE or IPsec SPIs, the IKEv2 protocol allows the gateway to send the peer an unprotected IKE 
message containing INVALID_IKE_SPI or INVALID_SPI notification payloads.
RFC 6290 introduces the concept of a QCD token, which is generated from the IKE SPIs and a private QCD secret, and 
exchanged between peers during the protected IKE AUTH exchange.

To configure QCD:

config system settings


set ike-quick-crash-detect [enable | disable]
end

IKEv1 quick crash detection

Based on the IKEv2 QCD feature previously described, IKEv1 QCD is implemented using a new IKE vendor ID (Fortinet 
Quick Crash Detection) so both endpoints must be FortiGates. The QCD token is sent in the phase 1 exchange and must 
be encrypted, so this is only implemented for IKEv1 in main mode (aggressive mode is not supported as there is no 
available AUTH message to include the token). Otherwise, the feature works the same as in IKEv2 (RFC 6290).

FortiOS 6.4.6 Administration Guide 1303


Fortinet Technologies Inc.
VPN

IKEv1 fragmentation

UDP fragmentation can cause issues in IPsec when either the ISP or perimeter firewall(s) cannot pass or fragment the 
oversized UDP packets that occur when using a very large public security key (PSK). The result is that IPsec tunnels do 
not come up. The solution is IKE fragmentation.
For most configurations, enabling IKE fragmentation allows connections to automatically establish when they otherwise 
might have failed due to intermediate nodes dropping IKE messages containing large certificates, which typically push 
the packet size over 1500 bytes.
FortiOS will fragment a packet on sending if only all the following are true:
 l Phase 1 contains set fragmentation enable.
 l The packet is larger than the minimum MTU (576 for IPv4, 1280 for IPv6).
 l The packet is being re-transmitted.
By default, IKE fragmentation is enabled.

To configure IKEv1 fragmentation:

config vpn ipsec phase1-interface


edit 1
set fragmentation [enable | disable]
next
end

IKEv2 fragmentation

RFC 7383 requires each fragment to be individually encrypted and authenticated. With IKEv2, a copy of the unencrypted 
payloads around for each outgoing packet would need to be kept in case the original single packet was never answered 
and would retry with fragments. With the following implementation, if the IKE payloads are greater than a configured 
threshold, the IKE packets are preemptively fragmented and encrypted.

To configure IKEv2 fragmentation:

config vpn ipsec phase1-interface


edit ike
set ike-version 2
set fragmentation [enable|disable]
set fragmentation-mtu [500-16000]
next
end

Pre-shared key vs digital certificates

A FortiGate can authenticate itself to remote peers or dialup clients using either a pre-shared key or a digital certificate.

Pre-shared key

Using a pre-shared key is less secure than using certificates, especially if it is used alone, without requiring peer IDs or 
extended authentication (XAuth). There also needs to be a secure way to distribute the pre-shared key to the peers.

FortiOS 6.4.6 Administration Guide 1304


Fortinet Technologies Inc.
VPN

If you use pre-shared key authentication alone, all remote peers and dialup clients must be configured with the same 
pre-shared key. Optionally, you can configure remote peers and dialup clients with unique pre-shared keys. On the 
FortiGate, these are configured in user accounts, not in the phase 1 settings. 
The pre-shared key must contain at least six printable characters and should be known by network administrators. For 
optimum protection against currently known attacks, the key must consist of a minimum of 16 randomly chosen 
alphanumeric characters. The limit is 128 characters.
If you authenticate the FortiGate using a pre-shared key, you can require remote peers or dialup clients to authenticate 
using peer IDs, but not client certificates.

To authenticate the FortiGate using a pre-shared key:

 1. Go to VPN > IPsec Tunnels and create a new tunnel, or edit an existing one.


 2. Configure or edit the Network section as needed.
 3. Configure or edit the Authentication settings as follows:

Method Pre-shared Key

Pre-shared Key <string>

IKE Version 1 or 2

Mode Aggressive or Main

Peer Options Select an Accept Type and the corresponding peer. Options vary based on the 


Remote Gateway and Authentication Method settings in the Network section.
Peer Options are only available in Aggressive mode.

 4. For the Phase 1 Proposal section, keep the default settings unless changes are needed to meet your requirements.


 5. Optionally, for authentication parameters for a dialup user group, define XAUTH parameters.
 6. Click OK.

Digital certificates

To authenticate the FortiGate using digital certificates, you must have the required certificates installed on the remote 
peer and on the FortiGate. The signed server certificate on one peer is validated by the presence of the root certificate 
installed on the other peer. If you use certificates to authenticate the FortiGate, you can also require the remote peers or 
dialup clients to authenticate using certificates. See Site-to-site VPN with digital certificate on page 1324 for a detailed 
example.

To authenticate the FortiGate using a digital certificate:

 1. Go to VPN > IPsec Tunnels and create a new tunnel, or edit an existing one.


 2. Configure or edit the Network section as needed.
 3. Configure or edit the Authentication settings as follows:

Method Signature

Certificate Name Select the certificate used to identify this FortiGate. If there are no imported 


certificates, use Fortinet_Factory.

IKE Version 1 or 2

FortiOS 6.4.6 Administration Guide 1305


Fortinet Technologies Inc.
VPN

Mode Aggressive is recommended.

Peer Options For Accept Type, select Peer certificate and select the peer and the CA 


certificate used to authenticate the peer. If the other end is using the Fortinet_
Factory certificate, then use the Fortinet_CA certificate here.

 4. For the Phase 1 Proposal section, keep the default settings unless changes are needed to meet your requirements.


 5. Optionally, for authentication parameters for a dialup user group, define XAUTH parameters.
 6. Click OK.

Using XAuth authentication

Extended authentication (XAuth) increases security by requiring remote dialup client users to authenticate in a separate 
exchange at the end of phase 1. XAuth draws on existing FortiGate user group definitions and uses established 
authentication mechanisms such as PAP, CHAP, RADIUS, and LDAP to authenticate dialup clients. You can configure a 
FortiGate to function either as an XAuth server or client. If the server or client is attempting a connection using XAuth and 
the other end is not using XAuth, the failed connection attempts that are logged will not specify XAuth as the reason.

XAuth server

A FortiGate can act as an XAuth server for dialup clients. When the phase 1 negotiation completes, the FortiGate 
challenges the user for a user name and password. It then forwards the user’s credentials to an external RADIUS or 
LDAP server for verification.
If the user records on the RADIUS server have suitably configured Framed-IP-Address fields, you can assign client 
virtual IP addresses by XAuth instead of from a DHCP address range. 
The authentication protocol you use for XAuth depends on the capabilities of the authentication server and the XAuth 
client:
 l Select PAP Server whenever possible.
 l You must select PAP Server for all implementations of LDAP and some implementations of Microsoft RADIUS.
 l Select Auto Server when the authentication server supports CHAP Server but the XAuth client does not. The 
FortiGate will use PAP to communicate with the XAuth client and CHAP to communicate with the authentication 
server. You can also use Auto Server to allow multiple source interfaces to be defined in an IPsec/IKE policy.
Before you begin, create user accounts and user groups to identify the dialup clients that need to access the network 
behind the FortiGate dialup server. If password protection will be provided through an external RADIUS or LDAP server, 
you must configure the FortiGate dialup server to forward authentication requests to the authentication server. 

To configure XAuth to authenticate a dialup user group:

 1. On the FortiGate dialup server, go to VPN > IPsec Tunnels and create a new tunnel, or edit an existing one.


 2. Configure or edit the Network, Authentication, and Phase 1 Proposal sections as needed.
 3. In the XAUTH section, select the encryption method Type to use between the XAuth client, the FortiGate, and the 
authentication server. 
 4. For User Group:
 a. Click Inherit from policy for multiple user groups  defined in the IPsec/IKE policy, or
 b. Click Choose and in the dropdown, select the user group that needs to access the private network behind the 
FortiGate.

FortiOS 6.4.6 Administration Guide 1306


Fortinet Technologies Inc.
VPN

Only one user group may be defined for Auto Server.

 5. Click OK.
 6. Create as many policies as needed, specifying the source user(s) and destination address. 

XAuth client

If the FortiGate acts as a dialup client, the remote peer, acting as an XAuth server, might require a username and 
password. You can configure the FortiGate as an XAuth client with its own username and password, which it provides 
when challenged.

To configure the FortiGate dialup client as an XAuth client:

 1. On the FortiGate dialup client, go to VPN > IPsec Tunnels and create a new tunnel, or edit an existing one.


 2. Configure or edit the Network, Authentication, and Phase 1 Proposal sections as needed.
 3. In the XAUTH section, for Type, select Client.
 4. For Username, enter the FortiGate PAP, CHAP, RADIUS, or LDAP user name that the FortiGate XAuth server will 
compare to its records when the FortiGate XAuth client attempts to connect.
 5. Enter the Password for the user name.
 6. Click OK.

Dynamic IPsec route control

You can add a route to a peer destination selector by using the add-route option, which is available for all dynamic 
IPsec phases 1 and 2, for both policy-based and route-based IPsec VPNs. 
The add-route option adds a route to the FortiGate routing information base when the dynamic tunnel is negotiated. 
You can use the distance and priority options to set the distance and priority of this route. If this results in a route with the 
lowest distance, it is added to the FortiGate forwarding information base.
You can also enable add-route in any policy-based or route-based phase 2 configuration that is associated with a 
dynamic (dialup) phase 1. In phase 2, add-route can be enabled, disabled, or set to use the same route as phase 1.
The add-route option is enabled by default.

To configure add-route in phase 1:

config vpn ipsec


edit <name>
set type dynamic
set add-route {enable | disable}
next
end

To configure add-route in phase 2:

config vpn ipsec {phase2 | phase2-interface}


edit <name>
set add-route {phase1 | enable | disable}

FortiOS 6.4.6 Administration Guide 1307


Fortinet Technologies Inc.
VPN

next
end

Blocking IPsec SA negotiation

For interface-based IPsec, IPsec SA negotiation blocking can only be removed if the peer offers a wildcard selector. If a 
wildcard selector is offered, then the wildcard route will be added to the routing table with the distance/priority value 
configured in phase 1. If that is the route with the lowest distance, it will be installed into the forwarding information base.
In this scenario, it is important to ensure that the distance value configured for phase 1 is set appropriately.

Dynamic tunnel interface creation

When configuring route-based IPsec dialup tunnels, the net-device setting controls how traffic is routed on the hub:
config vpn ipsec phase1-interface
edit "Spoke"
set type dynamic
set net-device {disable | enable}
set tunnel-search {selectors | nexthop}
next
end

The key settings are net-device and tunnel-search. When net-device is disabled, all dialup tunnels share an 
interface on the hub. The tunnel selection process is based on the tunnel search method. Using a shared interface 
eliminates the time needed for dynamic interface creation and tear-down. When net-device is enabled, dynamic 
interfaces are created on the hub for each dialup tunnel. This means that potentially many dynamic interfaces could be 
created at start-up in a large scale deployment. 

Behavior with net-device disabled

After a successful dial-in negotiation, the following occurs on the hub:
 1. A dialup tunnel is created for each successful dial-in.
 2. The tunnel name takes the form of <phase1Name_index>.
 a. For example, the first dialup tunnel to connect is Spoke_1, the second is Spoke_2, and so on.
To view the tunnel name and the phase 1 parent:
Hub # diagnose vpn tunnel list name Spoke_3
list ipsec tunnel by names in vd 0
------------------------------------------------------
name=Spoke_3 ver=1 serial=8 198.51.100.1:0->198.51.100.4:0
bound_if=4 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/320 options
[0140]=search-nexthop rgwy_chg parent=Spoke index=3

 3. No dynamic interface is created.
 4. The networks accessible over dialup tunnels are all bound to the same shared phase 1 interface.
 a. To view the routing table:
Hub # get router info routing-table bgp
Routing table for VRF=0
B 192.168.2.0/24 [200/0] via 10.10.10.2, Spoke, 01:04:49
B 192.168.3.0/24 [200/0] via 10.10.10.3, Spoke, 01:04:47
B 192.168.4.0/24 [200/0] via 10.10.10.4, Spoke, 00:35:01
B 192.168.5.0/24 [200/0] via 10.10.10.5, Spoke, 01:04:51

FortiOS 6.4.6 Administration Guide 1308


Fortinet Technologies Inc.
VPN

When forwarding a packet to the spoke shared interface:
 1. The cleartext packet is first sent to the IPsec engine.
 2. The IPsec engine finds which tunnel's IPsec security association (SA) is  used for protecting this packet.
 3. The search logic is based on set tunnel-search {selectors | nexthop}.
Tunnel search selectors
This is the default setting, which dictates that IPsec routes are learned from the traffic selectors of the IPsec SA 
negotiation. These routes are also called IKE routes, and can be displayed using diagnose vpn ike routes list.
Tunnel search next hop
This setting is used when you want IPsec routes to be learned from a dynamic routing protocol. The IPsec engine checks 
the search method associated with the shared interface spoke, and searches the tunnel index associated with the next 
hop. In this example, while searching for the index associated with next hop 10.10.10.4, index 3 is found corresponding 
to the Spoke_3 tunnel.
Hub # diagnose vpn tunnel list name Spoke
list ipsec tunnel by names in vd 0
------------------------------------------------------
name=Spoke ver=1 serial=1 198.51.100.1:0->0.0.0.0:0
bound_if=4 lgwy=static/1 tun=intf/0 mode=dialup/2 encap=none/64 options[0040]=search-nexthop
proxyid_num=0 child_num=4 refcnt=26 ilast=4159 olast=4159 ad=/0 itn-status=7b
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=0 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
run_tally=4
ipv4 route tree:
10.10.10.2 2
10.10.10.3 0
10.10.10.4 3
10.10.10.5 1
198.51.100.2 2
198.51.100.3 0
198.51.100.4 3
198.51.100.5 1

Behavior with net-device enabled

After a successful dial-in negotiation, the following occurs on the hub:
 1. A dialup tunnel is created for each successful dial-in.
 2. The tunnel name takes the form of <phase1Name_index>.
 a. For example, the first dialup tunnel to connect is Spoke_1, the second is Spoke_2, and so on.
To view the tunnel name and the phase 1 parent:
Hub # diagnose vpn tunnel list name Spoke_3
list ipsec tunnel by names in vd 0
------------------------------------------------------
name=Spoke_3 ver=1 serial=6 198.51.100.1:0->198.51.100.4:0
bound_if=4 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/0 parent=Spoke
index=3

FortiOS 6.4.6 Administration Guide 1309


Fortinet Technologies Inc.
VPN

 3. A dynamic interface is created for each dialup tunnel.
 a. To view the interface list:
Hub # diagnose netlink interface list | grep "Spoke_"
if=Spoke_0 family=00 type=768 index=22 mtu=1438 link=16 master=0
if=Spoke_1 family=00 type=768 index=23 mtu=1438 link=16 master=0
if=Spoke_2 family=00 type=768 index=24 mtu=1438 link=16 master=0
if=Spoke_3 family=00 type=768 index=26 mtu=1438 link=16 master=0

 4. The networks accessible over dialup tunnels are bound to the corresponding tunnel interface.
 a. To view the routing table:
Hub # get router info routing-table bgp
Routing table for VRF=0
B 192.168.2.0/24 [200/0] via 10.10.10.2, Spoke_0, 01:04:49
B 192.168.3.0/24 [200/0] via 10.10.10.3, Spoke_1, 01:04:47
B 192.168.4.0/24 [200/0] via 10.10.10.4, Spoke_3, 00:35:01
B 192.168.5.0/24 [200/0] via 10.10.10.5, Spoke_2, 01:04:51

When forwarding a packet to the dialup IPsec interface:
 1. The cleartext packet sent to the dynamic interface is sent to the IPsec engine.
 2. The IPsec engine protects the cleartext packets with the IPsec security association (SA) of the corresponding 
tunnel.
 3. The ESP packet is then sent on the wire.

Phase 2 configuration

After phase 1 negotiations end successfully, phase 2 begins. In Phase 2, the VPN peer or client and the FortiGate 
exchange keys again to establish a secure communication channel. The phase 2 proposal parameters select the 
encryption and authentication algorithms needed to generate keys for protecting the implementation details of security 
associations (SAs). The keys are generated automatically using a Diffie-Hellman algorithm.
The basic phase 2 settings associate IPsec phase 2 parameters with the phase 1 configuration that specifies the remote 
end point of the VPN tunnel. In most cases, you need to configure only basic Phase 2 settings.
Some settings can be configured in the CLI. The following options are available in the VPN Creation Wizard after the 
tunnel is created:

New Phase 2    

Name Phase 2 definition name.

Local Address A value of 0.0.0.0/0 means all IP addresses behind the local VPN peer. 


Add a specific address or range to allow traffic from and to only this local 
address.
See Quick mode selectors on page 1312.

Remote Address Enter the destination IP address that corresponds to the recipients or network 


behind the remote VPN peer. A value of 0.0.0.0/0 means all IP addresses 
behind the remote VPN peer. 
See Quick mode selectors on page 1312.

FortiOS 6.4.6 Administration Guide 1310


Fortinet Technologies Inc.
VPN

Advanced Select the encryption and authentication algorithms that will be proposed to   
the remote VPN peer. To establish a VPN connection, at least one of the 
proposals specified must match the configuration on the remote peer.

Encryption The following symmetric-key encryption algorithms are available:
 l NULL: do not use an encryption algorithm.
 l DES: Digital Encryption Standard, a 64-bit block algorithm that uses a 
56-bit key.
 l 3DES: triple-DES; plain text is encrypted three times by three keys.
 l AES128: Advanced Encryption Standard, a 128-bit block algorithm that 
uses a 128-bit key.
 l AES128GCM: AES in Galois/Counter Mode, a 128-bit block algorithm 
that uses a 128-bit key. Only available for IKEv2.
 l AES192: a 128-bit block algorithm that uses a 192-bit key.
 l AES256: a 128-bit block algorithm that uses a 256-bit key.
 l AES256GCM: AES in Galois/Counter Mode, a 128-bit block algorithm 
that uses a 256-bit key. Only available for IKEv2.
 l CHACHA20POLY1305: a 128-bit block algorithm that uses a 128-bit key 
and a symmetric cipher. Only available for IKEv2.
See ChaCha20 and Poly1305 AEAD cipher on page 1314, AES-GCM for 
IKEv2 phase 1 on page 1314, and HMAC settings.

Authentication The following message digests that check the message authenticity during an 
encrypted session are available:
 l NULL: do not use a message digest.
 l MD5: message digest 5.
 l SHA1: secure hash algorithm 1; a 160-bit message digest.
 l SHA256: a 256-bit message digest.
 l SHA384: a 384-bit message digest.
 l SHA512: a 512-bit message digest.
See also HMAC settings.

Enable Replay Replay attacks occur when an unauthorized party intercepts a series of IPsec 


Detection packets and replays them back into the tunnel.
Replay detection allows the FortiGate to check all IPsec packets to see if they 
have been received before. If any encrypted packets arrive out of order, the 
FortiGate discards them.
Note that 64-bit extended sequence numbers (as described in RFC 4303, 
RFC 4304 as an addition to IKEv1, and RFC 5996 for IKEv2) are supported 
for IPsec when replay detection is enabled.

Enable Perfect Perfect forward secrecy (PFS) improves security by forcing a new 


Forward Secrecy Diffie-Hellman exchange whenever keylife expires.
(PFS)

Diffie-Hellman Asymmetric key algorithms used for public key cryptography.
Group

FortiOS 6.4.6 Administration Guide 1311


Fortinet Technologies Inc.
VPN

Select one or more from groups 1, 2, 5, and 14 through 32. At least one of the 
Diffie-Hellman Groups (DH) settings on the remote peer or client must match 
one the selections on the FortiGate. Failure to match one or more DH groups 
will result in failed negotiations.

Local Port Enter the port number that the local VPN peer uses to transport traffic related 


to the specified service (protocol number). The range is from 0 to 65535. To 
specify all ports, select All, or enter 0.

Remote Port Enter the port number that the remote VPN peer uses to transport traffic 


related to the specified service (protocol number). To specify all ports, select 
All, or enter 0.

Protocol Enter the IP protocol number of the service. To specify all services, select All, 
or enter 0.

Auto-negotiate Select this option for the tunnel to be automatically renegotiated when the it 
expires. See Auto-negotiate on page 1313.

Autokey Keep Select this option for the tunnel to remain active when no data is being 


Alive processed.

Key Lifetime Select the method for determining when the phase 2 key expires: 


 l Seconds
 l Kilobytes
 l Both
Enter a corresponding value for Seconds and/or Kilobytes in the text boxes.
If Both is selected, the key expires when either the time has passed or the 
number of kilobytes have been processed.

Quick mode selectors

Quick mode selectors determine which IP addresses can perform IKE negotiations to establish a tunnel. By only allowing 
authorized IP addresses access to the VPN tunnel, the network is more secure.
The default settings are as broad as possible: any IP address or configured address object using any protocol on any 
port.

While the dropdown menus for specifying an address also show address groups, the use of 
address groups may not be supported on a remote endpoint device that is not a FortiGate.

When configuring a quick mode selector for Local Address and Remote Address, valid options include IPv4 and IPv6 


single addresses, subnets, or ranges.
There are some configurations that require specific selectors:
 l The VPN peer is a third-party device that uses specific phase2 selectors.
 l The FortiGate connects as a dialup client to another FortiGate, in which case (usually) you must specify a local IP 
address, IP address range, or subnet. However, this is not required if you are using dynamic routing and mode-cfg.
With FortiOS VPNs, your network has multiple layers of security, with quick mode selectors being an important line of 
defense:

FortiOS 6.4.6 Administration Guide 1312


Fortinet Technologies Inc.
VPN

 l Routes guide traffic from one IP address to another.
 l Phase 1 and phase 2 connection settings ensure there is a valid remote end point for the VPN tunnel that agrees on 
the encryption and parameters.
 l Quick mode selectors allow IKE negotiations only for allowed peers.
 l Security policies control which IP addresses can connect to the VPN.
 l Security policies also control what protocols are allowed over the VPN along with any bandwidth limiting.

FortiOS is limited with IKEv2 selector matching. When using IKEv2 with a named traffic 
selector, no more than 32 subnets per traffic selector are added, since FortiOS does not fully 
implement the IKEv2 selector matching rules.
The workaround is to use multiple phase 2s. If the configuration is FortiGate <--> FortiGate, 
then the better alternative is to just use 0.0.0.0 <-> 0.0.0.0 and use the firewall policy 
for enforcement.

If you are editing an existing phase 2 configuration, the local address and remote address fields are unavailable if the 
tunnel has been configured to use firewall addresses as selectors. This option exists only in the CLI.

Using the add-route option

Consider using the add-route option to add a route to a peer destination selector in phase 2 to automatically match the 
settings in phase 1.

To configure add-route:

config vpn ipsec {phase2 | phase2-interface}


edit <name>
set add-route {phase1 | enable | disable}
next
end

Auto-negotiate

By default, the phase 2 security association (SA) is not negotiated until a peer attempts to send data. The triggering 
packet and some subsequent packets are dropped until the SA is established. Applications normally resend this data, so 
there is no loss, but there might be a noticeable delay in response to the user.
If the tunnel goes down, the auto-negotiate feature (when enabled) attempts to re-establish the tunnel. Auto-negotiate 
initiates the phase 2 SA negotiation automatically, repeating every five seconds until the SA is established.
Automatically establishing the SA can be important for a dialup peer. It ensures that the VPN tunnel is available for peers 
at the server end to initiate traffic to the dialup peer. Otherwise, the VPN tunnel does not exist until the dialup peer 
initiates traffic.

To configure auto-negotiate:

config vpn ipsec phase2


edit <phase2_name>
set auto-negotiate enable
next
end

FortiOS 6.4.6 Administration Guide 1313


Fortinet Technologies Inc.
VPN

Installing dynamic selectors via auto-negotiate

The IPsec SA connect message generated is used to install dynamic selectors. These selectors can be installed via the 
auto-negotiate mechanism. When phase 2 has auto-negotiate enabled, and phase 1 has mesh-selector-type 
set to subnet, a new dynamic selector will be installed for each combination of source and destination subnets. Each 
dynamic selector will inherit the auto-negotiate option from the template selector and begin SA negotiation. Phase 2 
selector sources from dialup clients will all establish SAs without traffic being initiated from the client subnets to the hub.

DHCP

The dhcp-ipsec option lets the FortiGate assign VIP addresses to FortiClient dialup clients through a DHCP server or 
relay. This option is only available if the remote gateway in the phase 1 configuration is set to dialup user, and it only 
works in policy-based VPNs.
With dhcp-ipsec, the FortiGate dialup server acts as a proxy for FortiClient dialup clients that have VIP addresses on 
the subnet of the private network behind the FortiGate. In this case, the FortiGate dialup server acts as a proxy on the 
local private network for the FortiClient dialup client. A host on the network behind the dialup server issues an ARP 
request, corresponding to the device MAC address of the FortiClient host (when a remote server sends an ARP to the 
local FortiClient dialup client). The FortiGate then answers the ARP request on behalf of the FortiClient host, and then 
forwards the associated traffic to the FortiClient host through the tunnel.
Acting as a proxy prevents the VIP address assigned to the FortiClient dialup client from causing possible ARP 
broadcast problems—the normal and VIP addresses can confuse some network switches when two addresses have the 
same MAC address.

ChaCha20 and Poly1305 AEAD cipher

In IKEv2 to support RFC 7634, the ChaCha20 and Poly1305 crypto algorithms can be used together as a combined 
mode AEAD cipher (like AES-GCM) in the crypto_ftnt cipher in cipher_chacha20poly1305.c:
config vpn ipsec phase2-interface
edit <name>
set phase1name <name>
set proposal chacha20poly1305
next
end

AES-GCM for IKEv2 phase 1

In IKEv2 to support RFC 5282, the AEAD algorithm AES-GCM supports 128- and 256-bit variants:
config vpn ipsec phase2-interface
edit <name>
set phase1name <name>
set proposal [aes128gcm | aes256gcm]
next
end

VPN security policies

This section explains how to specify the source and destination IP addresses of traffic transmitted through an IPsec 
VPN, and how to define appropriate security policies. 

FortiOS 6.4.6 Administration Guide 1314


Fortinet Technologies Inc.
VPN

Topology

Defining policy addresses

In a gateway-to-gateway, hub-and-spoke, dynamic DNS, redundant tunnel, or transparent configuration, you need to 
define a policy address for the private IP address of the network behind the remote VPN peer (for example, 
192.168.10.0/255.255.255.0 or 192.168.10.0/24).
In a peer-to-peer configuration, you need to define a policy address for the private IP address of a server or host behind 
the remote VPN peer (for example, 172.16.5.1/255.255.255.255, 172.16.5.1/32, or 172.16.5.1).
For a FortiGate dialup server in a dialup-client or internet-browsing configuration, the source IP should reflect the IP 
addresses of the dialup clients:

Defining security policies

Policy-based and route-based VPNs require different security policies.

FortiOS 6.4.6 Administration Guide 1315


Fortinet Technologies Inc.
VPN

 l A policy-based VPN requires an IPsec policy. You specify the interface to the private network, the interface to the 
remote peer and the VPN tunnel. A single policy can enable traffic inbound, outbound, or in both directions.
 l A route-based VPN requires an accept policy for each direction. For the source and destination interfaces, you 
specify the interface to the private network and the virtual IPsec interface (phase 1 configuration) of the VPN. The 
IPsec interface is the destination interface for the outbound policy and the source interface for the inbound policy. 
One security policy must be configured for each direction of each VPN interface.

If the policy that grants the VPN connection is limited to certain services, DHCP must be 
included, otherwise the client will not be able to retrieve a lease from the FortiGate’s (IPsec) 
DHCP server because the DHCP request (coming out of the tunnel) will be blocked.

Policy-based VPN

An IPsec policy enables the transmission and reception of encrypted packets, specifies the permitted direction of VPN 
traffic, and selects the VPN tunnel. In most cases, a single policy is needed to control both inbound and outbound IP 
traffic through a VPN tunnel. For a detailed example, see Policy-based IPsec tunnel on page 1344. Be aware of the 
following before creating an IPsec policy. 

Allow traffic to be initiated from the remote site

Policies specify which IP addresses can initiate a tunnel. By default, traffic from the local private network initiates the 
tunnel. When the Allow traffic to be initiated form the remote site option is selected, traffic from a dialup client, or a 
computer on a remote network, initiates the tunnel. Both can be enabled at the same time for bi-directional initiation of 
the tunnel.

Outbound and inbound NAT

When a FortiGate operates in NAT mode, you can enable inbound or outbound NAT. Outbound NAT may be performed 
on outbound encrypted packets or IP packets in order to change their source address before they are sent through the 
tunnel. Inbound NAT is performed to intercept and decrypt emerging IP packets from the tunnel.
By default, these options are not selected in security policies and can only be set through the CLI.

Defining multiple IPsec policies for the same tunnel

You must define at least one IPsec policy for each VPN tunnel. If the same remote server or client requires access to 
more than one network behind a local FortiGate, the FortiGate must be configured with an IPsec policy for each network. 
Multiple policies may be required to configure redundant connections to a remote destination or control access to 
different services at different times.
To ensure a secure connection, the FortiGate must evaluate policies with Action set to IPsec before ACCEPT and 
DENY. Because the FortiGate unit reads policies starting at the top of the list, you must move all IPsec policies to the top 
of the list, and be sure to reorder your multiple IPsec policies that apply to the tunnel so that specific constraints can be 
evaluated before general constraints. If you create two equivalent IPsec policies for two different tunnels, the system will 
select the correct policy based on the specified source and destination addresses.

FortiOS 6.4.6 Administration Guide 1316


Fortinet Technologies Inc.
VPN

Adding multiple IPsec policies for the same VPN tunnel can cause conflicts if the policies 
specify similar source and destination addresses, but have different settings for the same 
service. When policies overlap in this manner, the system may apply the wrong IPsec policy or 
the tunnel may fail.

Route-based VPN

When you define a route-based VPN, you create a virtual IPsec interface on the physical interface that connects to the 
remote peer. You create ordinary accept policies to enable traffic between the IPsec interface and the interface that 
connects to the private network. This makes configuration simpler than for policy-based VPNs.

To configure policies for a route-based VPN:

 1. Go to Policy & Objects > Firewall Policy.


 2. Click Create New and define an ACCEPT policy to permit communication between the local private network and the 
private network behind the remote peer and enter these settings in particular:

Name Enter a name for the security policy.

Incoming Interface Select the interface that connects to the private network behind this FortiGate.

Outgoing Interface Select the IPsec interface you configured.

Source Select the address name you defined for the private network behind this 
FortiGate.

Destination Select the address name you defined for the private network behind the 
remote peer.

Action Select ACCEPT.

NAT Disable NAT.

 3. Click OK.
To permit the remote client to initiate communication, you need to define a security policy for communication in that 
direction.
 4. Click Create New and enter these settings in particular: 

Name Enter a name for the security policy.

Incoming Interface Select the IPsec interface you configured.

Outgoing Interface Select the interface that connects to the private network behind this FortiGate.

Source Select the address name you defined for the private network behind the 
remote peer.

Destination Select the address name you defined for the private network behind this 
FortiGate.

Action Select ACCEPT.

NAT Disable NAT.

 5. Click OK.

FortiOS 6.4.6 Administration Guide 1317


Fortinet Technologies Inc.
VPN

Blocking unwanted IKE negotiations and ESP packets with a local-in policy

It is not unusual to receive IPsec connection attempts or malicious IKE packets from all over the internet. Malicious 
parties use these probes to try to establish an IPsec tunnel in order to gain access to your private network. A good way to 
prevent this is to use local-in policies to deny such traffic.
Sometimes there are malicious attempts using crafted invalid ESP packets. These invalid attempts are automatically 
blocked by the FOS IPsec local-in handler when it checks the SPI value against the SAs of existing tunnels. The IPsec 
local-in handler processes the packet instead of the firewall's local-in handler. So when these attempts are blocked, you 
will notice an unknown SPI message in your VPN logs instead of being silently blocked by your local-in policy. These 
log messages are rate limited.

Sample log and alert email

Message meets Alert condition


date=2020-08-11 time=09:28:40 devname=toSite1 devid=FGT60Fxxxxxxxxxx logid="0101037131"
type="event" subtype="vpn" level="error" vd="root" eventtime=1597163320747963100 tz="-0700"
logdesc="IPsec ESP" msg="IPsec ESP" action="error" remip=131.62.25.102 locip=192.157.116.88
remport=40601 locport=500 outintf="wan1" cookies="N/A" user="N/A" group="N/A"
xauthuser="N/A" xauthgroup="N/A" assignip=N/A vpntunnel="N/A" status="esp_error" error_
num="Received ESP packet with unknown SPI." spi="f6c9e2x1" seq="02000400"

Note that invalid SPIs may not always indicate malicious activity. For example, the SPI may not match during rekey, or 
when one unit flushes its tunnel SAs. Administrators should collect as much information as possible before making a 
conclusion.

To block undesirable IPsec connection attempts and IKE packets using a local-in policy:

 1. Configure an address group that excludes legitimate IPs:
config firewall addrgrp
edit "All_exceptions"
set member "all"
set exclude enable
set exclude-member "remote-vpn"
next
end

 2. Create a local-in policy that blocks IKE traffic from the address group:
config firewall local-in-policy
edit 1
set intf "wan1"
set srcaddr "All_exceptions"
set dstaddr "all"
set service "IKE"
set schedule "always"
next
end

The default action is deny.

FortiOS 6.4.6 Administration Guide 1318


Fortinet Technologies Inc.
VPN

 3. Verify the traffic blocked by the local-in policy:
# diagnose debug flow filter dport 500
# diagnose debug flow trace start 10
# diagnose debug enable

id=20085 trace_id=290 func=print_pkt_detail line=5588 msg="vd-root:0 received a packet


(proto=17, 10.10.10.13:500->10.10.10.1:500) from wan1. "
id=20085 trace_id=290 func=init_ip_session_common line=5760 msg="allocate a new session-
003442e7"
id=20085 trace_id=290 func=vf_ip_route_input_common line=2598 msg="find a route:
flag=84000000 gw-10.10.10.1 via root"
id=20085 trace_id=290 func=fw_local_in_handler line=430 msg="iprope_in_check() check
failed on policy 1, drop"

Site-to-site VPN

A site-to-site VPN connection lets branch offices use the Internet to access the main office's intranet. A site-to-site VPN 
allows offices in multiple, fixed locations to establish secure connections with each other over a public network such as 
the Internet.
The following sections provide instructions for configuring  site-to-site VPNs:
 l FortiGate-to-FortiGate on page 1319
 l FortiGate-to-third-party on page 1350

FortiGate-to-FortiGate

This section contains the following topics about FortiGate-to-FortiGate VPN configurations:
 l Basic site-to-site VPN with pre-shared key on page 1319
 l Site-to-site VPN with digital certificate on page 1324
 l Site-to-site VPN with overlapping subnets on page 1331
 l GRE over IPsec on page 1339
 l Policy-based IPsec tunnel on page 1344

Basic site-to-site VPN with pre-shared key

This is a sample configuration of IPsec VPN authenticating a remote FortiGate peer with a pre-shared key. 

FortiOS 6.4.6 Administration Guide 1319


Fortinet Technologies Inc.
VPN

To configure IPsec VPN authenticating a remote FortiGate peer with a pre-shared key in the GUI:

 1. Configure the HQ1 FortiGate.
 a.  Go to VPN > IPsec Wizard and configure the following settings for VPN Setup:
 i. Enter a VPN name.
 ii. For Template Type, select Site to Site.
 iii. For Remote Device Type, select FortiGate.
 iv. For NAT Configuration, select No NAT Between Sites.
 v. Click Next.
 b. Configure the following settings for Authentication:
 i. For Remote Device, select IP Address.
 ii. For the IP address, enter 172.16.202.1.
 iii. For Outgoing interface, enter port1.
 iv. For Authentication Method, select Pre-shared Key.
 v. In the Pre-shared Key field, enter sample as the key.
 vi. Click Next.
 c. Configure the following settings for Policy & Routing:
 i. From the Local Interface dropdown menu, select the local interface.
 ii. Configure the Local Subnets as 10.1.100.0.
 iii. Configure the Remote Subnets as 172.16.101.0.
 iv. Click Create.
 2. Configure the HQ2 FortiGate.
 a. Go to VPN > IPsec Wizard and configure the following settings for VPN Setup:
 i. Enter a VPN name.
 ii. For Template Type, select Site to Site.
 iii. For Remote Device Type, select FortiGate.
 iv. For NAT Configuration, select No NAT Between Sites.
 v. Click Next.
 b. Configure the following settings for Authentication:
 i. For Remote Device, select IP Address.
 ii. For  the IP address, enter 172.16.2001.
 iii. For Outgoing interface, enter port25.
 iv. For Authentication Method, select Pre-shared Key.
 v. In the Pre-shared Key field, enter sample as the key.
 vi. Click Next.
 c. Configure the following settings for Policy & Routing:
 i. From the Local Interface dropdown menu, select the local interface.
 ii. Configure Local Subnets as 172.16.101.0.
 iii. Configure the Remote Subnets as 10.1.100.0.
 iv. Click Create.

To configure IPsec VPN authenticating a remote FortiGate peer with a pre-shared key using the CLI:

 1. Configure the WAN interface and default route. The WAN interface is the interface connected to the ISP. The IPsec 
tunnel is established over the WAN interface.

FortiOS 6.4.6 Administration Guide 1320


Fortinet Technologies Inc.
VPN

 a. Configure HQ1.
config system interface
edit "port1"
set vdom "root"
set ip 172.16.200.1 255.255.255.0
next
end
config router static
edit 1
set gateway 172.16.200.3
set device "port1"
next
end

 b. Configure HQ2.
config system interface
edit "port25"
set vdom "root"
set ip 172.16.202.1 255.255.255.0
next
end
config router static
edit 1
set gateway 172.16.202.2
set device "port25"
next
end

 2. Configure the internal (protected subnet) interface. The internal interface connects to the corporate internal 
network. Traffic from this interface routes out the IPsec VPN tunnel.
 a. Configure HQ1.
config system interface
edit "dmz"
set vdom "root"
set ip 10.1.100.1 255.255.255.0
next
end

 b. Configure HQ2.
config system interface
edit "port9"
set vdom "root"
set ip 172.16.101.1 255.255.255.0
next
end

 3. Configure the IPsec phase1-interface.
 a. Configure HQ1.   
config vpn ipsec phase1-interface
edit "to_HQ2"
set interface "port1"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1

FortiOS 6.4.6 Administration Guide 1321


Fortinet Technologies Inc.
VPN

set remote-gw 172.16.202.1


set psksecret sample
next
end

 b. Configure HQ2.
config vpn ipsec phase1-interface
edit "to_HQ1"
set interface "port25"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.200.1
set psksecret sample
next
end

 4. Configure the IPsec phase2-interface. 
 a. Configure HQ1.
config vpn ipsec phase2-interface
edit "to_HQ2"
set phase1name "to_HQ2"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
next
end

 b. Configure HQ2.
config vpn ipsec phase2-interface
edit "to_HQ2"
set phase1name "to_HQ1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
next
end

 5. Configure the static routes. Two static routes are added to reach the remote protected subnet. The blackhole route 
is important to ensure that IPsec traffic does not match the default route when the IPsec tunnel is down.   
 a. Configure HQ1.   
config router static
edit 2
set dst 172.16.101.0 255.255.255.0
set device "to_HQ2"
next
edit 3
set dst 172.16.101.0 255.255.255.0
set blackhole enable
set distance 254
next
end

FortiOS 6.4.6 Administration Guide 1322


Fortinet Technologies Inc.
VPN

 b. Configure HQ2.
config router static
edit 2
set dst 10.1.100.0 255.255.255.0
set device "to_HQ1"
next
edit 3
set dst 10.1.100.0 255.255.255.0
set blackhole enable
set distance 254
next
end

 6. Configure two firewall policies to allow bidirectional IPsec traffic flow over the IPsec VPN tunnel.
 a. Configure HQ1.
config firewall policy
edit 1
set name "inbound"
set srcintf "to_HQ2"
set dstintf "dmz"
set srcaddr "172.16.101.0"
set dstaddr "10.1.100.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "outbound"
set srcintf "dmz"
set dstintf "to_HQ2"
set srcaddr "10.1.100.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
end

 b. Configure HQ2.
config firewall policy
edit 1
set name "inbound"
set srcintf "to_HQ1"
set dstintf "port9"
set srcaddr "10.1.100.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "outbound"
set srcintf "port9"
set dstintf "to_HQ1"
set srcaddr "172.16.101.0"

FortiOS 6.4.6 Administration Guide 1323


Fortinet Technologies Inc.
VPN

set dstaddr "10.1.100.0"


set action accept
set schedule "always"
set service "ALL"
next
end

 7. Run diagnose commands. The diagnose debug application ike -1 command is the key to troubleshoot 


why the IPsec tunnel failed to establish. If the PSK failed to match, the following error shows up in the debug output:   
ike 0:to_HQ2:15037: parse error
ike 0:to_HQ2:15037: probable pre-shared secret mismatch'

The following commands are useful to check IPsec phase1/phase2 interface status.
 a. Run the diagnose vpn ike gateway list command on HQ1. The system should return the following:
vd: root/0
name: to_HQ2
version: 1
interface: port1 11
addr: 172.16.200.1:500 -> 172.16.202.1:500
created: 5s ago
IKE SA: created 1/1 established 1/1 time 0/0/0 ms
IPsec SA: created 2/2 established 2/2 time 0/0/0 ms
id/spi: 12 6e8d0532e7fe8d84/3694ac323138a024
direction: responder
status: established 5-5s ago = 0ms
proposal: aes128-sha256
key: b3efb46d0d385aff-7bb9ee241362ee8d
lifetime/rekey: 86400/86124
DPD sent/recv: 00000000/00000000

 b. Run the diagnose vpn tunnel list command on HQ1. The system should return the following: 


list all ipsec tunnel in vd 0
name=to_HQ2 ver=1 serial=1 172.16.200.1:0->172.16.202.1:0
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_
dev frag-rfcaccept_traffic=1
proxyid_num=1 child_num=0 refcnt=11 ilast=7 olast=87 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=to_HQ2 proto=0 sa=1 ref=2 serial=1 auto-negotiate
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=18227 type=00 soft=0 mtu=1438 expire=42927/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0
life: type=01 bytes=0/0 timeout=42930/43200
dec: spi=ef9ca700 esp=aes key=16 a2c6584bf654d4f956497b3436f1cfc7
ah=sha1 key=20 82c5e734bce81e6f18418328e2a11aeb7baa021b
enc: spi=791e898e esp=aes key=16 0dbb4588ba2665c6962491e85a4a8d5a
ah=sha1 key=20 2054b318d2568a8b12119120f20ecac97ab730b3
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0

Site-to-site VPN with digital certificate

This is a sample configuration of IPsec VPN authenticating a remote FortiGate peer with a certificate. The certificate on 
one peer is validated by the presence of the CA certificate installed on the other peer.

FortiOS 6.4.6 Administration Guide 1324


Fortinet Technologies Inc.
VPN

To configure IPsec VPN authenticating a remote FortiGate peer with a digital certificate in the GUI:

 1. Import the certificate.
 2. Configure user peers.
 3. Configure the HQ1 FortiGate.
 a.   Go to VPN > IPsec Wizard and configure the following settings for VPN Setup:
 i. Enter a VPN name.
 ii. For Template Type, select Site to Site.
 iii. For Remote Device Type, select FortiGate.
 iv. For NAT Configuration, select No NAT Between Sites.
 v. Click Next.
 b. Configure the following settings for Authentication:
 i. For Remote Device, select IP Address.
 ii. For the IP address, enter 172.16.202.1.
 iii. For Outgoing interface, enter port1.
 iv. For Authentication Method, select Signature.
 v. In the Certificate name field, select the imported certificate.
 vi. From the Peer Certificate CA dropdown list, select the desired peer CA certificate.
 vii. Click Next.
 c. Configure the following settings for Policy & Routing:
 i. From the Local Interface dropdown menu, select the local interface.
 ii. Configure the Local Subnets as 10.1.100.0.
 iii. Configure the Remote Subnets as 172.16.101.0.
 iv. Click Create.
 4. Configure the HQ2 FortiGate.
 a. Go to VPN > IPsec Wizard and configure the following settings for VPN Setup:
 i. Enter a VPN name.
 ii. For Template Type, select Site to Site.
 iii. For Remote Device Type, select FortiGate.
 iv. For NAT Configuration, select No NAT Between Sites.
 v. Click Next.
 b. Configure the following settings for Authentication:
 i. For Remote Device, select IP Address.
 ii. For  the IP address, enter 172.16.2001.
 iii. For Outgoing interface, enter port25.
 iv. For Authentication Method, select Signature.
 v. In the Certificate name field, select the imported certificate.

FortiOS 6.4.6 Administration Guide 1325


Fortinet Technologies Inc.
VPN

 vi. From the Peer Certificate CA dropdown list, select the peer CA certificate.


 vii. Click Next.
 c. Configure the following settings for Policy & Routing:
 i. From the Local Interface dropdown menu, select the local interface.
 ii. Configure Local Subnets as 172.16.101.0.
 iii. Configure the Remote Subnets as 10.1.100.0.
 iv. Click Create.

To configure IPsec VPN authenticating a remote FortiGate peer with a digital certificate using the CLI:

 1. Configure the WAN interface and default route. The WAN interface is the interface connected to the ISP. The IPsec 
tunnel is established over the WAN interface.
 a. Configure HQ1.
config system interface
edit "port1"
set vdom "root"
set ip 172.16.200.1 255.255.255.0
next
end
config router static
edit 1
set gateway 172.16.200.3
set device "port1"
next
end

 b. Configure HQ2.
config system interface
edit "port25"
set vdom "root"
set ip 172.16.202.1 255.255.255.0
next
end
config router static
edit 1
set gateway 172.16.202.2
set device "port25"
next
end

 2. Configure the internal (protected subnet) interface. The internal interface connects to the corporate internal 
network. Traffic from this interface routes out the IPsec VPN tunnel.
 a. Configure HQ1.
config system interface
edit "dmz"
set vdom "root"
set ip 10.1.100.1 255.255.255.0
next
end

FortiOS 6.4.6 Administration Guide 1326


Fortinet Technologies Inc.
VPN

 b. Configure HQ2.
config system interface
edit "port9"
set vdom "root"
set ip 172.16.101.1 255.255.255.0
next
end

 3. Configure the import certificate and its CA certificate information. The certificate and its CA certificate must be 
imported on the remote peer FortiGate and on the primary FortiGate before configuring IPsec VPN tunnels. If the 
built-in Fortinet_Factory certificate and the Fortinet_CA CA certificate are used for authentication, you can skip this 
step.
 a. Configure HQ1.
config vpn certificate local
edit "test1"
...
set range global
next
end
config vpn certificate ca
edit "CA_Cert_1"
...
set range global
next
end

 b. Configure HQ2.
config vpn certificate local
edit "test2"
...
set range global
next
end
config vpn certificate ca
edit "CA_Cert_1"
...
set range global
next
end

 4. Configure the peer user. The peer user is used in the IPsec VPN tunnel peer setting to authenticate the remote peer 
FortiGate.
 a. If not using the built-in Fortinet_Factory certificate and Fortinet_CA CA certificate, do the following:
 i. Configure HQ1.
config user peer
edit "peer1"
set ca "CA_Cert_1"
next
end

 ii. Configure HQ2.
config user peer
edit "peer2"
set ca "CA_Cert_1"

FortiOS 6.4.6 Administration Guide 1327


Fortinet Technologies Inc.
VPN

next
end

 b. If the built-in Fortinet_Factory certificate and Fortinet_CA CA certificate are used for authentication, the peer 
user must be configured based on Fortinet_CA.
 i. Configure HQ1.
config user peer
edit "peer1"
set ca "Fortinet_CA"
next
end

 ii. Configure HQ2.
config user peer
edit "peer2"
set ca "Fortinet_CA"
next
end

 5. Configure the IPsec phase1-interface.
 a. Configure HQ1.   
config vpn ipsec phase1-interface
edit "to_HQ2"
set interface "port1"
set authmethod signature
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.202.1
set certificate "test1"
set peer "peer1"
next
end

 b. Configure HQ2.
config vpn ipsec phase1-interface
edit "to_HQ1"
set interface "port25"
set authmethod signature
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.200.1
set certificate "test2"
set peer "peer2"
next
end

 6. Configure the IPsec phase2-interface. 
 a. Configure HQ1.
config vpn ipsec phase2-interface
edit "to_HQ2"
set phase1name "to_HQ2"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable

FortiOS 6.4.6 Administration Guide 1328


Fortinet Technologies Inc.
VPN

next
end

 b. Configure HQ2.
config vpn ipsec phase2-interface
edit "to_HQ2"
set phase1name "to_HQ1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
next
end

 7. Configure the static routes. Two static routes are added to reach the remote protected subnet. The blackhole route 
is important to ensure that IPsec traffic does not match the default route when the IPsec tunnel is down.   
 a. Configure HQ1.   
config router static
edit 2
set dst 172.16.101.0 255.255.255.0
set device "to_HQ2"
next
edit 3
set dst 172.16.101.0 255.255.255.0
set blackhole enable
set distance 254
next
end

 b. Configure HQ2.
config router static
edit 2
set dst 10.1.100.0 255.255.255.0
set device "to_HQ1"
next
edit 3
set dst 10.1.100.0 255.255.255.0
set blackhole enable
set distance 254
next
end

 8. Configure two firewall policies to allow bidirectional IPsec traffic flow over the IPsec VPN tunnel.
 a. Configure HQ1.
config firewall policy
edit 1
set name "inbound"
set srcintf "to_HQ2"
set dstintf "dmz"
set srcaddr "172.16.101.0"
set dstaddr "10.1.100.0"
set action accept
set schedule "always"
set service "ALL"
next

FortiOS 6.4.6 Administration Guide 1329


Fortinet Technologies Inc.
VPN

edit 2
set name "outbound"
set srcintf "dmz"
set dstintf "to_HQ2"
set srcaddr "10.1.100.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
end

 b. Configure HQ2.
config firewall policy
edit 1
set name "inbound"
set srcintf "to_HQ1"
set dstintf "port9"
set srcaddr "10.1.100.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "outbound"
set srcintf "port9"
set dstintf "to_HQ1"
set srcaddr "172.16.101.0"
set dstaddr "10.1.100.0"
set action accept
set schedule "always"
set service "ALL"
next
end

 9. Run diagnose commands. The diagnose debug application ike -1 command is the key to troubleshoot 


why the IPsec tunnel failed to establish. If the remote FortiGate certificate cannot be validated, the following error 
shows up in the debug output:
ike 0: to_HQ2:15314: certificate validation failed

The following commands are useful to check IPsec phase1/phase2 interface status.
 a. Run the diagnose vpn ike gateway list command on HQ1. The system should return the following:
vd: root/0
name: to_HQ2
version: 1
interface: port1 11
addr: 172.16.200.1:500 -> 172.16.202.1:500
created: 7s ago
peer-id: C = CA, ST = BC, L = Burnaby, O = Fortinet, OU = QA, CN = test2
peer-id-auth: yes
IKE SA: created 1/1 established 1/1 time 70/70/70 ms
IPsec SA: created 1/1 established 1/1 time 80/80/80 ms
id/spi: 15326 295be407fbddfc13/7a5a52afa56adf14 direction: initiator status:

FortiOS 6.4.6 Administration Guide 1330


Fortinet Technologies Inc.
VPN

established 7-7s ago = 70ms proposal: aes128-sha256 key: 4aa06dbee359a4c7-


43570710864bcf7b lifetime/rekey: 86400/86092 DPD sent/recv: 00000000/00000000 peer-
id: C = CA, ST = BC, L = Burnaby, O = Fortinet, OU = QA, CN = test2

 b. Run the diagnose vpn tunnel list command on HQ1. The system should return the following: 


list all ipsec tunnel in vd 0
name=to_HQ2 ver=1 serial=1 172.16.200.1:0->172.16.202.1:0
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_
dev frag-rfcaccept_traffic=1
proxyid_num=1 child_num=0 refcnt=14 ilast=19 olast=179 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=vpn-f proto=0 sa=1 ref=2 serial=1 auto-negotiate
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=18227 type=00 soft=0 mtu=1438 expire=42717/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0
life: type=01 bytes=0/0 timeout=42897/43200
dec: spi=72e87de7 esp=aes key=16 8b2b93e0c149d6f22b1c0b96ea450e6c
ah=sha1 key=20 facc655e5f33beb7c2b12e718a6d55413ce3efa2
enc: spi=5c52c865 esp=aes key=16 8d0c4e4adbf2338beed569b2b3205ece
ah=sha1 key=20 553331628612480ab6d7d563a00e2a967ebabcdd
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0

Site-to-site VPN with overlapping subnets

This is a sample configuration of IPsec VPN to allow transparent communication between two overlapping networks that 
are located behind different FortiGates  using a route-based tunnel with source and destination NAT.
In the following topology, both FortiGates (HQ and Branch) use 192.168.1.0/24 as their internal network, but both 
networks need to be able to communicate to each other through the IPsec tunnel. 
New virtual subnets of equal size must be configured and used for all communication between the two overlapping 
subnets. The devices on both local networks do not need to change their IP addresses. However, the devices and users 
must use the new subnet range of the remote network to communicate across the tunnel.

FortiOS 6.4.6 Administration Guide 1331


Fortinet Technologies Inc.
VPN

Configuring the HQ FortiGate

To configure IPsec VPN:

 1. Go to VPN > IPsec Wizard and select the Custom template.


 2. Enter the name VPN-to-Branch and click Next.
 3. For the IP Address, enter the Branch public IP address (172.25.177.46), and for Interface, select the HQ WAN 
interface (wan1). 

 4. For Pre-shared Key, enter a secure key. You will use the same key when configuring IPsec VPN on the Branch 


FortiGate. 

 5. In the Phase 2 Selectors section, enter the subnets for the Local Address (10.1.1.0/24) and Remote Address 


(10.2.2.0/24). 

 6. Optionally, expand Advanced and enable Auto-negotiate. 

 7. Click OK.

To configure the static routes:

 1. Go to Network > Static Routes and click Create New.


 2. In the Destination field, enter the remote address subnet (10.2.2.0/24).
 3. For Interface, select the VPN tunnel you just created, VPN-to-Branch. 

 4. Click OK.
 5. Create another route with the same Destination, but change the Administrative Distance to 200 and for Interface, 
select Blackhole. This is a best practice for route-based IPsec VPN tunnels because it ensures traffic for the remote 

FortiOS 6.4.6 Administration Guide 1332


Fortinet Technologies Inc.
VPN

FortiGate's subnet is not sent using the default route in the event that the IPsec tunnel goes down. 

To configure the address objects:

 1. Go to Policy & Objects > Addresses and click Create New > Address.


 2. For Name, enter HQ-original.
 3. For IP/Netmask, enter the original LAN subnet of HQ (192.168.1.0/24).
 4. For Interface, select the LAN-side interface (internal). 

 5. Click OK
 6. Create another address object named Branch-new, but for IP/Netmask, enter the new LAN subnet of Branch 
(10.2.2.0/24), and select the VPN interface (VPN-to-Branch). 

To configure the IP pool:

 1. Go to Policy & Objects > IP Pools and click Create New.


 2. For Name, enter HQ-new.
 3. For Type, select Fixed Port Range.
 4. Enter the External IP address/range (10.1.1.1 – 10.1.1.254, the new HQ subnet) and Internal IP Range 
(192.168.1.1 – 192.168.1.254, the original HQ subnet). 

 5. Click OK.

To configure the VIP:

 1. Go to Policy & Objects > Virtual IPs and click Create New > Virtual IP.
 2. For Name, enter HQ-new-to-original.
 3. For Interface, select the VPN interface (VPN-to-Branch). 
 4. Enter the External IP address/range (10.1.1.1 – 10.1.1.254, the new HQ subnet) and Mapped IP address/range 
(192.168.1.1 – 192.168.1.254, the original HQ subnet). 

FortiOS 6.4.6 Administration Guide 1333


Fortinet Technologies Inc.
VPN

 5. Click OK.

To configure the firewall policy for traffic from HQ to Branch:

 1. Go to Policy & Objects > Firewall Policy and click Create New.


 2. For Name, enter From-HQ-to-Branch.
 3. For Incoming Interface, select the LAN-side interface (internal). 
 4. For Outgoing Interface, select the VPN tunnel interface (VPN-to-Branch). 
 5. For Source, select HQ-original.
 6. For Destination, select Branch-new.
 7. For Service, select ALL.
 8. Enable NAT. 
 9. Select Use Dynamic IP Pool and select the HQ-new IP pool. 

 10. Click OK.

To configure the firewall policy for traffic from Branch to HQ:

 1. Click Create New and for Name, enter From-Branch-to HQ.


 2. For Incoming Interface, select the VPN tunnel interface (VPN-to-Branch). 
 3. For Outgoing Interface, select the LAN-side interface (internal). 
 4. For Source, select Branch-new.
 5. For Destination, select the HQ-new-to-original VIP.
 6. For Service, select ALL.

FortiOS 6.4.6 Administration Guide 1334


Fortinet Technologies Inc.
VPN

 7. Disable NAT. 

 8. Click OK.

Configuring the Branch FortiGate

To configure IPsec VPN:

 1. Go to VPN > IPsec Wizard and select the Custom template.


 2. Enter the name VPN-to-HQ and click Next.
 3. For the IP Address, enter the HQ public IP address (172.25.176.142), and for Interface, select the Branch WAN 
interface (wan1). 

 4. For Pre-shared Key, enter the matching secure key used in the VPN-to-Branch tunnel.  

 5. In the Phase 2 Selectors section, enter the subnets for the Local Address (10.2.2.0/24) and Remote Address 


(10.1.1.0/24). 

 6. Optionally, expand Advanced and enable Auto-negotiate. 

 7. Click OK.

FortiOS 6.4.6 Administration Guide 1335


Fortinet Technologies Inc.
VPN

To configure the static routes:

 1. Go to Network > Static Routes and click Create New.


 2. In the Destination field, enter the remote address subnet (10.1.1.0/24).
 3. For Interface, select the VPN tunnel you just created, VPN-to-HQ.

 4. Click OK.
 5. Create another route with the same Destination, but change the Administrative Distance to 200 and for Interface, 
select Blackhole.

To configure the address objects:

 1. Go to Policy & Objects > Addresses and click Create New > Address.


 2. For Name, enter Branch-original.
 3. For IP/Netmask, enter the original LAN subnet of Branch (192.168.1.0/24).
 4. For Interface, select the LAN-side interface (lan). 

 5. Click OK
 6. Create another address object named HQ-new, but for IP/Netmask, enter the new LAN subnet of HQ (10.1.1.0/24), 
and select the VPN interface (VPN-to-HQ). 

To configure the IP pool:

 1. Go to Policy & Objects > IP Pools and click Create New.


 2. For Name, enter Branch-new.
 3. For Type, select Fixed Port Range.
 4. Enter the External IP address/range (10.2.2.1 – 10.2.2.254, the new Branch subnet) and Internal IP Range 
(192.168.1.1 – 192.168.1.254, the original Branch subnet). 

 5. Click OK.

FortiOS 6.4.6 Administration Guide 1336


Fortinet Technologies Inc.
VPN

To configure the VIP:

 1. Go to Policy & Objects > Virtual IPs and click Create New > Virtual IP.
 2. For Name, enter Branch-new-to-original.
 3. For Interface, select the VPN interface (VPN-to-HQ). 
 4. Enter the External IP address/range (10.2.2.1 – 10.2.2.254, the new Branch subnet) and Mapped IP address/range 
(192.168.1.1 – 192.168.1.254, the original Branch subnet). 

 5. Click OK.

To configure the firewall policy for traffic from Branch to HQ:

 1. Go to Policy & Objects > Firewall Policy and click Create New.


 2. For Name, enter From-Branch-to-HQ.
 3. For Incoming Interface, select the LAN-side interface (lan). 
 4. For Outgoing Interface, select the VPN tunnel interface (VPN-to-HQ). 
 5. For Source, select Branch-original.
 6. For Destination, select HQ-new.
 7. For Service, select ALL.
 8. Enable NAT. 
 9. Select Use Dynamic IP Pool and select the Branch-new IP pool. 

 10. Click OK.

FortiOS 6.4.6 Administration Guide 1337


Fortinet Technologies Inc.
VPN

To configure the firewall policy for traffic from HQ to Branch:

 1. Click Create New and for Name, enter From-HQ-to-Branch.


 2. For Incoming Interface, select the VPN tunnel interface (VPN-to-HQ). 
 3. For Outgoing Interface, select the LAN-side interface (lan). 
 4. For Source, select HQ-new.
 5. For Destination, select the Branch-new-to-original VIP.
 6. For Service, select ALL.
 7. Disable NAT. 

 8. Click OK.

To verify the communication across the tunnel:

 1. Go to Dashboard > Network and click the IPsec widget to expand to full screen view. The tunnels should be up on 


both FortiGates. If you did not enable Auto-negotiate in the IPsec VPN settings, you may have to select the tunnel 
and click Bring Up.
 2. From a PC on the HQ network, ping a PC on the Branch network using the new IP for the Branch PC. The ping 
should be successful.

 3. From a PC on the Branch network, ping a PC on the HQ network using the new IP for the HQ PC. The ping should 

FortiOS 6.4.6 Administration Guide 1338


Fortinet Technologies Inc.
VPN

be successful.

GRE over IPsec

This is an example of GRE over an IPsec tunnel using a static route over GRE tunnel and tunnel-mode in the 
phase2-interface settings.

To configure GRE over an IPsec tunnel:

 1. Enable subnet overlapping at both HQ1 and HQ2.
config system settings
set allow-subnet-overlap enable
end

 2. Configure the WAN interface and static route.
 a. HQ1.
config system interface
edit "port1"
set ip 172.16.200.1 255.255.255.0
next
edit "dmz"
set ip 10.1.100.1 255.255.255.0
next
end
config router static
edit 1
set gateway 172.16.200.3
set device "port1"
next
end

FortiOS 6.4.6 Administration Guide 1339


Fortinet Technologies Inc.
VPN

 b. HQ2.
config system interface
edit "port25"
set ip 172.16.202.1 255.255.255.0
next
edit "port9"
set ip 172.16.101.1 255.255.255.0
next
end
config router static
edit 1
set gateway 172.16.202.2
set device "port25"
next
end

 3. Configure IPsec phase1-interface and phase2-interface.
 a. HQ1.
config vpn ipsec phase1-interface
edit "greipsec"
set interface "port1"
set peertype any
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.202.1
set psksecret sample
next
end
config vpn ipsec phase2-interface
edit "greipsec"
set phase1name "greipsec"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set protocol 47
next
end

 b. HQ2.
config vpn ipsec phase1-interface
edit "greipsec"
set interface "port25"
set peertype any
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.200.1
set psksecret sample
next
end
config vpn ipsec phase2-interface
edit "greipsec"
set phase1name "greipsec"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set protocol 47
next
end

FortiOS 6.4.6 Administration Guide 1340


Fortinet Technologies Inc.
VPN

 4. Configure IPsec tunnel interface IP address.
 a. HQ1.
config system interface
edit "greipsec"
set ip 10.10.10.1 255.255.255.255
set remote-ip 10.10.10.2 255.255.255.255
next
end

 b. HQ2.
config system interface
edit "greipsec"
set ip 10.10.10.2 255.255.255.255
set remote-ip 10.10.10.1 255.255.255.255
next
end

 5. Configure the GRE tunnel.
 a. HQ1.
config system gre-tunnel
edit "gre_to_HQ2"
set interface "greipsec"
set remote-gw 10.10.10.2
set local-gw 10.10.10.1
next
end

 b. HQ2.
config system gre-tunnel
edit "gre_to_HQ1"
set interface "greipsec"
set remote-gw 10.10.10.1
set local-gw 10.10.10.2
next
end

 6. Configure the firewall policy.   
 a. HQ1.
config firewall policy
edit 1
set srcintf "dmz"
set dstintf "gre_to_HQ2"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set srcintf "gre_to_HQ2"
set dstintf "dmz"
set srcaddr "all"
set dstaddr "all"
set action accept

FortiOS 6.4.6 Administration Guide 1341


Fortinet Technologies Inc.
VPN

set schedule "always"


set service "ALL"
next
edit 3
set srcintf "greipsec"
set dstintf "greipsec"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
end

 b. HQ2.
config firewall policy
edit 1
set srcintf "port9"
set dstintf "gre_to_HQ1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set srcintf "gre_to_HQ1"
set dstintf "port9"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
edit 3
set srcintf "greipsec"
set dstintf "greipsec"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
end

 7. Configure the static route.
 a. HQ1.
config router static
edit 2
set dst 172.16.101.0 255.255.255.0
set device "gre_to_HQ2"
next
end

FortiOS 6.4.6 Administration Guide 1342


Fortinet Technologies Inc.
VPN

 b. HQ2.
config router static
edit 2
set dst 10.1.100.0 255.255.255.0
set device "gre_to_HQ1"
next
end

To view the VPN tunnel list on HQ1:

diagnose vpn tunnel list


list all ipsec tunnel in vd 0
----
name=greipsec ver=1 serial=1 172.16.200.1:0->172.16.202.1:0
bound_if=5 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/16 options[0010]=create_dev
proxyid_num=1 child_num=0 refcnt=12 ilast=19 olast=861 ad=/0
stat: rxp=347 txp=476 rxb=58296 txb=51408
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=8
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=greipsec proto=47 sa=1 ref=2 serial=2
src: 47:0.0.0.0/0.0.0.0:0
dst: 47:0.0.0.0/0.0.0.0:0
SA: ref=3 options=10226 type=00 soft=0 mtu=1438 expire=41689/0B replaywin=2048
seqno=15c esn=0 replaywin_lastseq=0000015c itn=0
life: type=01 bytes=0/0 timeout=42898/43200
dec: spi=9897bd09 esp=aes key=16 5a60e67bf68379309715bd83931680bf
ah=sha1 key=20 ff35a329056d0d506c0bfc17ef269978a4a57dd3
enc: spi=e362f336 esp=aes key=16 5574acd8587c5751a88950e1bf8fbf57
ah=sha1 key=20 d57ec76ac3c543ac89b2e4d0545518aa2d06669b
dec:pkts/bytes=347/37476, enc:pkts/bytes=347/58296

To view the static routing table on HQ1:

get router info routing-table static


Routing table for VRF=0
S* 0.0.0.0/0 [10/0] via 172.16.200.3, port1
S 172.16.101.0/24 [10/0] is directly connected, gre_to_HQ2

FortiOS 6.4.6 Administration Guide 1343


Fortinet Technologies Inc.
VPN

Policy-based IPsec tunnel

This is an example of policy-based IPsec tunnel using site-to-site VPN between branch and HQ. HQ is the IPsec 
concentrator.

Sample topology

Sample configuration

To configure a policy-based IPsec tunnel using the GUI:
 l Configure the IPsec VPN at HQ.
 l Configure the IPsec concentrator at HQ.
 l Configure the firewall policy at HQ.
 l Configure IPsec VPN at branch 1.
 l Configure the firewall policy at branch 1.
 l Configure IPsec VPN at branch 2.
 l Configure the firewall policy at branch 2.

To configure the IPsec VPN at HQ:

 1. Go to VPN > IPsec Wizard to set up branch 1.


 a. Enter a VPN Name. In this example, to_branch1.
 b. For Template Type, click Custom. Click Next.
 c. Uncheck Enable IPsec Interface Mode.
 d. For Remote Gateway, select Static IP Address.
 e. Enter IP address, in this example, 15.1.1.2.
 f. For Interface, select port9.
 g. In the Authentication section, for Method, select Pre-shared Key and enter the Pre-shared Key.
 h. Click OK.
 2. Go to VPN > IPsec Wizard to set up branch 2.
 a. Enter a VPN Name. In this example, to_branch2.
 b. For Template Type, click Custom. Click Next.
 c. Uncheck Enable IPsec Interface Mode.
 d. For Remote Gateway, select Static IP Address.

FortiOS 6.4.6 Administration Guide 1344


Fortinet Technologies Inc.
VPN

 e. Enter IP address, in this example, 13.1.1.2.
 f. For Interface, select port9.
 g. In the Authentication section, for Method, select Pre-shared Key and enter the Pre-shared Key.
 h. Click OK.

To configure the IPsec concentrator at HQ:

 1. Go to VPN > IPsec Concentrator and click Create New.


 2. Enter a name. In this example, branch.
 3. Add the Members to_branch1 and to_branch2.
 4. Click OK.

To configure the firewall policy at HQ:

 1. Go to Policy & Objects > Firewall Policy and click Create New.


 2. Enter a policy Name.
 3. For Incoming Interface, select port10.
 4. For Outgoing Interface, select port9.
 5. Select the Source, Destination, Schedule, Service, and set Action to IPsec.
 6. Select the VPN Tunnel, in this example, Branch1/Branch2.
 7. In this example, enable Allow traffic to be initiated from the remote site.
 8. Click OK.

To configure IPsec VPN at branch 1:

 1. Go to VPN > IPsec Wizard to set up branch 1.


 2. Enter a VPN name. In this example, to_HQ.
 3. For Template Type, click Custom. Click Next.
 4. Uncheck Enable IPsec Interface Mode.
 5. For Remote Gateway, select Static IP Address.
 6. Enter IP address, in this example, 22.1.1.1.
 7. For Interface, select wan1.
 8. In the Authentication section, for Method, select Pre-shared Key and enter the Pre-shared Key.
 9. Click OK.

To configure the firewall policy at branch 1:

 1. Go to Policy & Objects > Firewall Policy and click Create New.


 2. Enter a policy Name.
 3. Choose the Incoming Interface, in this example, internal.
 4. Choose the Outgoing Interface, in this example, wan1.
 5. Select the Source, Destination, Schedule, Service, and set Action to IPsec.
 6. Select the VPN Tunnel, in this example, Branch1/Branch2.
 7. In this example, enable Allow traffic to be initiated from the remote site.
 8. Click OK.

FortiOS 6.4.6 Administration Guide 1345


Fortinet Technologies Inc.
VPN

To configure IPsec VPN at branch 2:

 1. Go to VPN > IPsec Wizard to set up branch 1.


 2. Enter a VPN name. In this example, to_HQ.
 3. For Template Type, click Custom. Click Next.
 4. Uncheck Enable IPsec Interface Mode.
 5. For Remote Gateway, select Static IP Address.
 6. Enter IP address, in this example, 22.1.1.1.
 7. For Interface, select wan1.
 8. In the Authentication section, for Method, select Pre-shared Key and enter the Pre-shared Key.
 9. Click OK.

To configure the firewall policy at branch 2:

 1. Go to Policy & Objects > Firewall Policy and click Create New.


 2. Enter a policy Name.
 3. Choose the Incoming Interface, in this example, internal.
 4. Choose the Outgoing Interface, in this example, wan1.
 5. Select the Source, Destination, Schedule, Service, and set Action to IPsec.
 6. Select the VPN Tunnel, in this example, to_HQ.
 7. In this example, enable Allow traffic to be initiated from the remote site.
 8. Click OK.

To configure a policy-based IPsec tunnel using the CLI:

 1. Configure the HQ WAN interface and static route.
config system interface
edit "port9"
set alias "WAN"
set ip 22.1.1.1 255.255.255.0
next
edit "port10"
set alias "Internal"
set ip 172.16.101.1 255.255.255.0
next
end
config router static
edit 1
set gateway 22.1.1.2
set device "port9"
next
end

 2. Configure the HQ IPsec phase1 and phase2.
config vpn ipsec phase1
edit "to_branch1"
set interface "port9"
set peertype any
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 15.1.1.2

FortiOS 6.4.6 Administration Guide 1346


Fortinet Technologies Inc.
VPN

set psksecret sample


next
edit "to_branch2"
set interface "port9"
set peertype any
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 13.1.1.2
set psksecret sample
next
end
config vpn ipsec phase2
edit "to_branch1"
set phase1name "to_branch1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
next
edit "to_branch2"
set phase1name "to_branch2"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
next
end

 3. Configure the firewall policy at HQ.
config firewall policy
edit 1
set srcintf "port10"
set dstintf "port9"
set srcaddr "all"
set dstaddr "10.1.100.0"
set action ipsec
set schedule "always"
set service "ALL"
set inbound enable
set vpntunnel "to_branch1"
next
edit 2
set srcintf "port10"
set dstintf "port9"
set srcaddr "all"
set dstaddr "192.168.4.0"
set action ipsec
set schedule "always"
set service "ALL"
set inbound enable
set vpntunnel "to_branch2"
next
end

 4. Configure the IPsec concentrator at HQ.
config vpn ipsec concentrator
edit "branch"
set member "to_branch1" "to_branch2"
next
end

FortiOS 6.4.6 Administration Guide 1347


Fortinet Technologies Inc.
VPN

 5. Configure the branch WAN interface and static route.
 a. For branch 1.
config system interface
edit "wan1"
set alias "primary_WAN"
set ip 15.1.1.2 255.255.255.0
next
edit "internal"
set ip 10.1.100.1 255.255.255.0
next
end
config router static
edit 1
set gateway 15.1.1.1
set device "wan1"
next
end

 b. For branch 2.
config system interface
edit "wan1"
set alias "primary_WAN"
set ip 13.1.1.2 255.255.255.0
next
edit "internal"
set ip 192.168.4.1 255.255.255.0
next
end
config router static
edit 1
set gateway 13.1.1.1
set device "wan1"
next
end

 6. Configure the branch IPsec phase1 and phase2.
 a. For branch 1.
config vpn ipsec phase1
edit "to_HQ"
set interface "wan1"
set peertype any
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 22.1.1.1
set psksecret sample
next
end
config vpn ipsec phase2
edit "to_HQ"
set phase1name "to_HQ"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
next
end

FortiOS 6.4.6 Administration Guide 1348


Fortinet Technologies Inc.
VPN

 b. For branch 2.
config vpn ipsec phase1
edit "to_HQ"
set interface "wan1"
set peertype any
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 22.1.1.1
set psksecret sample
next
end
config vpn ipsec phase2
edit "to_HQ"
set phase1name "to_HQ"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
next
end

 7. Configure the branch firewall policy.
 a. For branch 1.
config firewall policy
edit 1
set srcintf "internal"
set dstintf "wan1"
set srcaddr "10.1.100.0"
set dstaddr "all"
set action ipsec
set schedule "always"
set service "ALL"
set inbound enable
set vpntunnel "to_HQ"
next
end

 b. For branch 2.
config firewall policy
edit 1
set srcintf "internal"
set dstintf "wan1"
set srcaddr "192.168.4.0"
set dstaddr "all"
set action ipsec
set schedule "always"
set service "ALL"
set inbound enable
set vpntunnel "to_HQ"
next
end

To view the IPsec VPN tunnel list at HQ:

# diagnose vpn tunnel list


list all ipsec tunnel in vd 0
----

FortiOS 6.4.6 Administration Guide 1349


Fortinet Technologies Inc.
VPN

name=to_branch1 ver=1 serial=4 22.1.1.1:0->15.1.1.2:0


bound_if=42 lgwy=static/1 tun=tunnel/1 mode=auto/1 encap=none/8 options[0008]=npu
proxyid_num=1 child_num=0 refcnt=8 ilast=0 olast=0 ad=/0
stat: rxp=305409 txp=41985 rxb=47218630 txb=2130108
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=to_branch1 proto=0 sa=1 ref=3 serial=1
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=10226 type=00 soft=0 mtu=1438 expire=42604/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000680 itn=0
life: type=01 bytes=0/0 timeout=42932/43200
dec: spi=ca646442 esp=aes key=16 58c91d4463968dddccc4fd97de90a4b8
ah=sha1 key=20 c9176fe2fbc82ef7e726be9ad4af83eb1b55580a
enc: spi=747c10c4 esp=aes key=16 7cf0f75b784f697bc7f6d8b4bb8a83c1
ah=sha1 key=20 cdddc376a86f5ca0149346604a59af07a33b11c5
dec:pkts/bytes=1664/16310, enc:pkts/bytes=0/16354
npu_flag=03 npu_rgwy=15.1.1.2 npu_lgwy=22.1.1.1 npu_selid=3 dec_npuid=2 enc_npuid=2
----
name=to_branch2 ver=1 serial=5 22.1.1.1:0->13.1.1.2:0
bound_if=42 lgwy=static/1 tun=tunnel/1 mode=auto/1 encap=none/8 options[0008]=npu
proxyid_num=1 child_num=0 refcnt=7 ilast=2 olast=43228 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=to_branch2 proto=0 sa=1 ref=2 serial=1
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=10226 type=00 soft=0 mtu=1280 expire=40489/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0
life: type=01 bytes=0/0 timeout=42931/43200
dec: spi=ca646441 esp=aes key=16 57ab680d29d4aad4e373579fb50e9909
ah=sha1 key=20 12a2bc703d2615d917ff544eaff75a6d2c17f1fe
enc: spi=f9cffb61 esp=aes key=16 3d64da9feb893874e007babce0229259
ah=sha1 key=20 f92a3ad5e56cb8e89c47af4dac10bf4b4bebff16
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
npu_flag=00 npu_rgwy=13.1.1.2 npu_lgwy=22.1.1.1 npu_selid=4 dec_npuid=0 enc_npuid=0

To view the IPsec VPN concentrator at HQ:

# diagnose vpn concentrator list


list all ipsec concentrator in vd 0
name=branch ref=3 tuns=2 flags=0

FortiGate-to-third-party

This section contains the following topics about FortiGate-to-third-party VPN configurations:
 l IKEv2 IPsec site-to-site VPN to an AWS VPN gateway on page 1351
 l IPsec VPN to Azure with virtual network gateway on page 1357
 l IPsec VPN to an Azure with virtual WAN on page 1367
 l IPSec VPN between a FortiGate and a Cisco ASA with multiple subnets on page 1371
 l Cisco GRE-over-IPsec VPN on page 1372

FortiOS 6.4.6 Administration Guide 1350


Fortinet Technologies Inc.
VPN

IKEv2 IPsec site-to-site VPN to an AWS VPN gateway

This is a sample configuration of an IPsec site-to-site VPN connection between an on-premise FortiGate and an AWS 
virtual private cloud (VPC).
AWS uses unique identifiers to manipulate a VPN connection's configuration. Each VPN connection is assigned an 
identifier and is associated with two other identifiers: the customer gateway ID for the FortiGate and virtual private 
gateway ID.
This example includes the following IDs:
 l VPN connection ID: vpn-07e988ccc1d46f749
 l Customer gateway ID: cgw-0440c1aebed2f418a
 l Virtual private gateway ID
This example assumes that you have configured VPC-related settings in the AWS management portal as described in 
Create a Secure Connection using AWS VPC.
This example includes creating and configuring two tunnels. You must configure both tunnels on your FortiGate.

To configure IKEv2 IPsec site-to-site VPN to an AWS VPN gateway:

 1. Configure the first VPN tunnel:
 a. Configure Internet Key Exchange (IKE).
 b. Configure IPsec.
 c. Configure the tunnel interface.
 d. Configure border gateway protocol (BGP).
 e. Configure firewall policies.
 2. Configure the second VPN tunnel:
 a. Configure Internet Key Exchange (IKE).
 b. Configure IPsec.
 c. Configure the tunnel interface.
 d. Configure BGP.
 e. Configure firewall policies.

To configure IKE for the first VPN tunnel:

A policy is established for the supported ISAKMP encryption, authentication, Diffie-Hellman (DH), lifetime, and key 
parameters. These sample configurations fulfill the minimum requirements for AES128, SHA1, and DH Group 2. 
Category VPN connections in the GovCloud AWS region have a minimum requirement of AES128, SHA2, and 
DH Group 14. To take advantage of AES256, SHA256, or other DH groups such as 14-18, 22, 23, and 24, you must 
modify these sample configuration files. Higher parameters are only available for VPNs of category "VPN", not for "VPN-
Classic".
Your FortiGate's external interface's address must be static. Your FortiGate may reside behind a device performing NAT. 
To ensure NAT traversal can function, you must adjust your firewall rules to unblock UDP port 4500. If not behind NAT, it 
is recommended to disable NAT traversal.
Begin configuration in the root VDOM. The interface name must be shorter than 15 characters. It is best if the name is 
shorter than 12 characters. IPsec dead peer detection (DPD) causes periodic messages to be sent to ensure a security 
association remains operational.
config vpn ipsec phase1-interface
edit vpn-07e988ccc1d46f749-0

FortiOS 6.4.6 Administration Guide 1351


Fortinet Technologies Inc.
VPN

set interface "wan1"


set dpd enable
set local-gw 35.170.66.108
set dhgrp 2
set proposal aes128-sha1
set keylife 28800
set remote-gw 3.214.239.164
set psksecret iCelks0UOob8z4SYMRM6zlx.rU2C3jth
set dpd-retryinterval 10
next
end

To configure IPsec for the first VPN tunnel:

The IPsec transform set defines the encryption, authentication, and IPsec mode parameters.
config vpn ipsec phase2-interface
edit "vpn-07e988ccc1d46f749-0"
set phase1name "vpn-07e988ccc1d46f749-0"
set proposal aes128-sha1
set dhgrp 2
set pfs enable
set keylifeseconds 3600
next
end

To configure the tunnel interface for the first VPN tunnel:

You must configure a tunnel interface as the logical interface associated with the tunnel. All traffic routed to the tunnel 
interface must be encrypted and transmitted to the VPC. Similarly, traffic from the VPC will be logically received on this 
interface.
You must configure the interface's address with your FortiGate's address. If the address changes, you must recreate the 
FortiGate and VPN connection with Amazon VPC.
The tcp-mss option causes the router to reduce the TCP packets' maximum segment size to prevent packet 
fragmentation.
config system interface
edit "vpn-07e988ccc1d46f749-0"
set vdom "root"
set ip 169.254.45.90 255.255.255.255
set allowaccess ping
set type tunnel
set tcp-mss 1379
set remote-ip 169.254.45.89
set mtu 1427
set interface "wan1"
next
end

To configure BGP for the first VPN tunnel:

BGP is used within the tunnel to exchange prefixes between the virtual private gateway and your FortiGate. The virtual 
private gateway announces the prefix according to your VPC.

FortiOS 6.4.6 Administration Guide 1352


Fortinet Technologies Inc.
VPN

The local BGP autonomous system number (ASN) (65000) is configured as part of your FortiGate. If you must change 
the ASN, you must recreate the FortiGate and VPN connection with AWS.
Your FortiGate may announce a default route (0.0.0.0/0) to AWS. This is done using a prefix list and route map in 
FortiOS.
config router bgp
set as 65000
config neighbor
edit 169.254.45.89
set remote-as 64512
end
end
end
config router bgp
config neighbor
edit 169.254.45.89
set capability-default-originate enable
end
end
end
config router prefix-list
edit "default_route"
config rule
edit 1
set prefix 0.0.0.0 0.0.0.0
next
end
end
end
config router route-map
edit "routemap1"
config rule
edit 1
set match-ip-address "default_route"
next
end
next
end

To advertise additional prefixes to the Amazon VPC, add these prefixes to the network statement and identify the prefix 
you want to advertise. Ensure that the prefix is present in the routing table of the device with a valid next-hop. If you want 
to advertise 192.168.0.0/16 to Amazon, you would do the following:
config router bgp
config network
edit 1
set prefix 192.168.0.0 255.255.0.0
next
end

To configure firewall policies for the first VPN tunnel:

Create a firewall policy permitting traffic from your local subnet to the VPC subnet, and vice-versa.

FortiOS 6.4.6 Administration Guide 1353


Fortinet Technologies Inc.
VPN

This example policy permits all traffic from the local subnet to the VPC. First, view all existing policies using the show
firewall policy command. Then, create a new firewall policy starting with the next available policy ID. In this 
example, running show firewall policy displayed policies 1, 2, 3, and 4, so you would proceed to create policy 5.
config firewall policy
edit 5
set srcintf "vpn-07e988ccc1d46f749-0"
set dstintf internal
set srcaddr all
set dstaddr all
set action accept
set schedule always
set service ANY
next
end
config firewall policy
edit 5
set srcintf internal
set dstintf "vpn-07e988ccc1d46f749-0"
set srcaddr all
set dstaddr all
set action accept
set schedule always
set service ANY
next
end

To configure IKE for the second VPN tunnel:

A policy is established for the supported ISAKMP encryption, authentication, DH, lifetime, and key parameters. These 
sample configurations fulfill the minimum requirements for AES128, SHA1, and DH Group 2. Category VPN connections 
in the GovCloud AWS region have a minimum requirement of AES128, SHA2, and DH Group 14. To take advantage of 
AES256, SHA256, or other DH groups such as 14-18, 22, 23, and 24, you must modify these sample configuration files. 
Higher parameters are only available for VPNs of category "VPN", not for "VPN-Classic".
Your FortiGate's external interface's address must be static. Your FortiGate may reside behind a device performing NAT. 
To ensure NAT traversal can function, you must adjust your firewall rules to unblock UDP port 4500. If not behind NAT, it 
is recommended to disable NAT traversal.
Begin configuration in the root VDOM. The interface name must be shorter than 15 characters. It is best if the name is 
shorter than 12 characters. IPsec DPD causes periodic messages to be sent to ensure a security association remains 
operational.
config vpn ipsec phase1-interface
edit vpn-07e988ccc1d46f749-1
set interface "wan1"
set dpd enable
set local-gw 35.170.66.108
set dhgrp 2
set proposal aes128-sha1
set keylife 28800
set remote-gw 100.25.187.58
set psksecret IjFzyDneUtDdAT4RNmQ85apUG3y4Akre
set dpd-retryinterval 10
next
end

FortiOS 6.4.6 Administration Guide 1354


Fortinet Technologies Inc.
VPN

To configure IPsec for the second VPN tunnel:

The IPsec transform set defines the encryption, authentication, and IPsec mode parameters.
config vpn ipsec phase2-interface
edit "vpn-07e988ccc1d46f749-1"
set phase1name "vpn-07e988ccc1d46f749-1"
set proposal aes128-sha1
set dhgrp 2
set pfs enable
set keylifeseconds 3600
next
end

To configure the tunnel interface for the second VPN tunnel:

You must configure a tunnel interface as the logical interface associated with the tunnel. All traffic routed to the tunnel 
interface must be encrypted and transmitted to the VPC. Similarly, traffic from the VPC will be logically received on this 
interface.
You must configure the interface's address with your FortiGate's address. If the address changes, you must recreate the 
FortiGate and VPN connection with Amazon VPC.
The tcp-mss option causes the router to reduce the TCP packets' maximum segment size to prevent packet 
fragmentation.
config system interface
edit "vpn-07e988ccc1d46f749-1"
set vdom "root"
set ip 169.254.44.162 255.255.255.255
set allowaccess ping
set type tunnel
set tcp-mss 1379
set remote-ip 169.254.44.161
set mtu 1427
set interface "wan1"
next
end

To configure BGP for the second VPN tunnel:

BGP is used within the tunnel to exchange prefixes between the virtual private gateway and your FortiGate. The virtual 
private gateway announces the prefix according to your VPC.
The local BGP ASN (65000) is configured as part of your FortiGate. If you must change the ASN, you must recreate the 
FortiGate and VPN connection with AWS.
Your FortiGate may announce a default route (0.0.0.0/0) to AWS. This is done using a prefix list and route map in 
FortiOS.
config router bgp
set as 65000
config neighbor
edit 169.254.44.161
set remote-as 64512
end
config router bgp
config neighbor

FortiOS 6.4.6 Administration Guide 1355


Fortinet Technologies Inc.
VPN

edit 169.254.44.161
set capability-default-originate enable
end
end
config router prefix-list
edit "default_route"
config rule
edit 1
set prefix 0.0.0.0 0.0.0.0
next
end
end
end
config router route-map
edit "routemap1"
config rule
edit 1
set match-ip-address "default_route"
next
end
next
end

To advertise additional prefixes to the Amazon VPC, add these prefixes to the network statement and identify the prefix 
you want to advertise. Ensure that the prefix is present in the routing table of the device with a valid next-hop. If you want 
to advertise 192.168.0.0/16 to Amazon, you would do the following:
config router bgp
config network
edit 1
set prefix 192.168.0.0 255.255.0.0
next
end

To configure firewall policies for the second VPN tunnel:

Create a firewall policy permitting traffic from your local subnet to the VPC subnet, and vice-versa.
This example policy permits all traffic from the local subnet to the VPC. First, view all existing policies using the show
firewall policy command. Then, create a new firewall policy starting with the next available policy ID. In this 
example, running show firewall policy displayed policies 1, 2, 3, 4, and 5, so you would proceed to create policy 
6.
config firewall policy
edit 6
set srcintf "vpn-07e988ccc1d46f749-1"
set dstintf internal
set srcaddr all
set dstaddr all
set action accept
set schedule always
set service ANY
next
end
config firewall policy
edit 6
set srcintf internal
set dstintf "vpn-07e988ccc1d46f749-1"

FortiOS 6.4.6 Administration Guide 1356


Fortinet Technologies Inc.
VPN

set srcaddr all


set dstaddr all
set action accept
set schedule always
set service ANY
next
end

IPsec VPN to Azure with virtual network gateway

This example shows how to configure a site-to-site IPsec VPN tunnel to Microsoft Azure. It shows how to configure a 
tunnel between each site, avoiding overlapping subnets, so that a secure tunnel can be established.

Prerequisites

 l A FortiGate with an Internet-facing IP address
 l A valid Microsoft Azure account

Sample topology

Sample configuration

This sample configuration shows how to:
 1. Configure an Azure virtual network
 2. Specify the Azure DNS server
 3. Configure the Azure virtual network gateway
 4. Configure the Azure local network gateway
 5. Configure the FortiGate tunnel
 6. Create the Azure firewall object
 7. Create the FortiGate firewall policies
 8. Create the FortiGate static route
 9. Create the Azure site-to-site VPN connection
 10. Check the results

FortiOS 6.4.6 Administration Guide 1357


Fortinet Technologies Inc.
VPN

To configure an Azure virtual network:

 1. Log in to Azure and click New.
 2. In Search the Marketplace, type Virtual network.
 3. Click Virtual network to open the Virtual network pane.

 4. At the bottom of the Virtual network pane, click the Select a deployment model dropdown list and select Resource


Manager.
 5. Click Create.

FortiOS 6.4.6 Administration Guide 1358


Fortinet Technologies Inc.
VPN

 6. On the Create virtual network pane, enter you virtual network settings, and click Create.

To specify the Azure DNS server:

 1. Open the virtual network you just created.
 2. Click DNS servers to open the DNS servers pane.
 3. Enter the IP address of the DNS server and click Save.

FortiOS 6.4.6 Administration Guide 1359


Fortinet Technologies Inc.
VPN

To configure the Azure virtual network gateway:

 1. In the portal dashboard, go to New.
 2. Search for Virtual Network Gateway and click it to open the Virtual network gateway pane.

 3. Click Create Virtual network gateways and enter the settings for your virtual network gateway.

 4. If needed, create a Public IP address.

 5. Click Create.
Creating the virtual network gateway might take some time. When the provisioning is done, you'll receive a 
notification.

FortiOS 6.4.6 Administration Guide 1360


Fortinet Technologies Inc.
VPN

To configure the Azure local network gateway:

 1. In the portal dashboard, click All resources.


 2. Click Add and then click See all.

 3. In the Everything pane, search for Local network gateway and then click Create local network gateway.

FortiOS 6.4.6 Administration Guide 1361


Fortinet Technologies Inc.
VPN

 4. For the IP address, enter the local network gateway IP address, that is, the FortiGate's external IP address.

 5. Set the remaining values for your local network gateway and click Create.

To configure the FortiGate tunnel:

 1. In the FortiGate, go to VPN > IP Wizard.


 2. Enter a Name for the tunnel, click Custom, and then click Next.

 3. Configure the Network settings.
 l For Remote Gateway, select Static IP Address and enter the IP address provided by Azure.
 l For Interface, select wan1.
 l For NAT Traversal, select Disable,
 l For Dead Peer Detection, select On Idle.
 l In the Authentication section, select 
 4. Configure the Authentication settings.
 l For Method, select Pre-shared Key and enter the Pre-shared Key.
 l For IKE, select 2.

FortiOS 6.4.6 Administration Guide 1362


Fortinet Technologies Inc.
VPN

 5. Configure the Phase 1 Proposal settings.


 l Set the Encryption and Authentication combination to the three supported encryption algorithm combinations 
accepted by Azure.
 l AES256 and SHA1
 l 3DES and SHA1
 l AES256 and SHA256
 l For Diffie-Hellman Groups, select 2.
 l Set Key Lifetime (seconds) to 28800.

 6. In Phase 2 Selectors, expand the Advanced section to configure the Phase 2 Proposal settings.


 l Set the Encryption and Authentication combinations.
 l AES256 and SHA1
 l 3DES and SHA1
 l AES256 and SHA256
 l Uncheck Enable Perfect Forward Secrecy (PFS).
 l Set Key Lifetime (seconds) to 27000.

FortiOS 6.4.6 Administration Guide 1363


Fortinet Technologies Inc.
VPN

 7. Click OK.

To create the Azure firewall object:

 1. In the FortiGate, go to Policy & Objects > Addresses.


 2. Create a firewall object for the Azure VPN tunnel.

FortiOS 6.4.6 Administration Guide 1364


Fortinet Technologies Inc.
VPN

To create the FortiGate firewall policies:

 1. In the FortiGate, go to Policy & Objects > Firewall Policy.


 2. Create a policy for the site-to-site connection that allows outgoing traffic.
 l Set the Source address and Destination address using the firewall objects you just created.
 l Disable NAT.

 3. Create another policy that allows incoming traffic.
 l For this policy, reverse the Source address and Destination address.

 4. We recommend limiting the TCP maximum segment size (MSS) being sent and received so as to avoid packet 
drops and fragmentation.

FortiOS 6.4.6 Administration Guide 1365


Fortinet Technologies Inc.
VPN

To do this, use the following CLI commands on both policies.
config firewall policy
edit <policy-id>
set tcp-mss-sender 1350
set tcp-mss-receiver 1350
next
end

To create the FortiGate static route:

 1. In the FortiGate, go to Network > Static Routes.


 2. Create an IPv4 Static Route that forces outgoing traffic going to Azure to go through the route-based tunnel.
 3. Set the Administrative Distance to a value lower than the existing default route value.

To create the Azure site-to-site VPN connection:

 1. In the Azure portal, locate and select your virtual network gateway.
 2. In the Settings pane, click Connections and then click Add.

 3. Enter the settings for your connection. Ensure the Shared Key (PSK) matches the Pre-shared Key for the FortiGate 


tunnel.

FortiOS 6.4.6 Administration Guide 1366


Fortinet Technologies Inc.
VPN

To check the results:

 1. In the FortiGate, go to Monitor > IPsec Monitor.


 l Check that the tunnel is up.

 l If the tunnel is down, right-click the tunnel and select Bring Up.

 2. In the FortiGate, go to Log & Report > Events.


 l Select an event to view more information and verify the connection.
 3. In the Azure portal dashboard, click All resources and locate your virtual network gateway.
 a. In your virtual network gateway pane, click Connections to see the status of each connection.

 b. Click a connection to open the Essentials pane to view more information about that connection.
 l If the connection is successful, the Status shows Connected.
 l See the ingress and egress bytes to confirm traffic flowing through the tunnel.

IPsec VPN to an Azure with virtual WAN

This is a sample configuration of an IPsec site-to-site VPN connection between an on-premise FortiGate and an Azure 
virtual network (VNet). This example uses Azure virtual WAN (vWAN) to establish the VPN connection.

FortiOS 6.4.6 Administration Guide 1367


Fortinet Technologies Inc.
VPN

 l Azure must use IPsec v2 for this configuration.
 l Azure uses overlapped subnet IP addresses for the IPsec interfaces.

To configure IKEv2 IPsec site-to-site VPN to an Azure VPN gateway:

 1. In the Azure management portal, configure vWAN-related settings as described in Tutorial: Create a Site-to-Site 
connection using Azure Virtual WAN.
 2. Download the VPN configuration. The following shows an example VPN configuration:   
[ {"configurationVersion":{"LastUpdatedTime":"2019-07-
16T22:16:28.0409002Z","Version":"be5c5787-b903-43b1-a237-
49eae1b373e4"},"vpnSiteConfiguration":
{"Name":"toaws","IPAddress":"3.220.252.93","BgpSetting":
{"Asn":7225,"BgpPeeringAddress":"169.254.24.25","PeerWeight":32768},"LinkName":"toa
ws"},"vpnSiteConnections":[{"hubConfiguration":
{"AddressSpace":"10.1.0.0/16","Region":"West US","ConnectedSubnets":
["10.2.0.0/16"]},"gatewayConfiguration":{"IpAddresses":
{"Instance0":"52.180.90.47","Instance1":"52.180.89.94"},"BgpSetting":
{"Asn":65515,"BgpPeeringAddresses":
{"Instance0":"10.1.0.7","Instance1":"10.1.0.6"},"PeerWeight":0}},"connectionConfigu
ration":{"IsBgpEnabled":true,"PSK":"Fortinet123#","IPsecParameters":
{"SADataSizeInKilobytes":102400000,"SALifeTimeInSeconds":3600}}}]} ]
 3. Configure the following on the FortiGate. Note for set proposal, you can select from several proposals.   
config vpn ipsec phase1-interface
edit "toazure1"
set interface "port1"
set ike-version 2
set keylife 28800
set peertype any
set proposal aes256-sha1
set dhgrp 2
set remote-gw 52.180.90.47
set psksecret **********
next
edit "toazure2"
set interface "port1"
set ike-version 2
set keylife 28800
set peertype any
set proposal aes256-sha1
set dhgrp 2
set remote-gw 52.180.89.94
set psksecret **********
next
end
config vpn ipsec phase2-interface
edit "toazure1"
set phase1name "toazure1"
set proposal aes256-sha1
set dhgrp 2
set keylifeseconds 3600
next
edit "toazure2"
set phase1name "toazure2"
set proposal aes256-sha1

FortiOS 6.4.6 Administration Guide 1368


Fortinet Technologies Inc.
VPN

set dhgrp 2
set keylifeseconds 3600
next
end
config system settings
set allow-subnet-overlap enable
end
config system interface
edit "toazure1"
set vdom "root"
set ip 169.254.24.25 255.255.255.255
set type tunnel
set remote-ip 10.1.0.7 255.255.255.255
set snmp-index 4
set interface "port1"
next
edit "toazure2"
set vdom "root"
set ip 169.254.24.25 255.255.255.255
set type tunnel
set remote-ip 10.1.0.6 255.255.255.255
set snmp-index 5
set interface "port1"
next
end
config router bgp
set as 7225
set router-id 169.254.24.25
config neighbor
edit "10.1.0.7"
set remote-as 65515
next
edit "10.1.0.6"
set remote-as 65515
next
end
config network
edit 1
set prefix 172.30.101.0 255.255.255.0
next
end
config redistribute "connected"
set status enable
end
config redistribute "rip"
end
config redistribute "ospf"
end
config redistribute "static"
end
config redistribute "isis"
end
config redistribute6 "connected"
end
config redistribute6 "rip"
end
config redistribute6 "ospf"

FortiOS 6.4.6 Administration Guide 1369


Fortinet Technologies Inc.
VPN

end
config redistribute6 "static"
end
config redistribute6 "isis"
end
end
 4. Run diagnose vpn tunnel list. If the configuration was successful, the output should resemble the following:
   
name=toazure1 ver=2 serial=3 172.30.1.83:4500->52.180.90.47:4500
bound_if=3 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/0
proxyid_num=1 child_num=0 refcnt=15 ilast=16 olast=36 ad=/0
stat: rxp=41 txp=41 rxb=5104 txb=2209
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=1
natt: mode=keepalive draft=0 interval=10 remote_port=4500
proxyid=toazure1 proto=0 sa=1 ref=2 serial=4
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=10226 type=00 soft=0 mtu=8926 expire=2463/0B replaywin=2048
seqno=2a esn=0 replaywin_lastseq=00000029 itn=0
life: type=01 bytes=0/0 timeout=3300/3600
dec: spi=c13f7928 esp=aes key=32
009a86bb0d6f5fee66af7b8232c8c0f22e6ec5c61ba19c93569bd0cd115910a9
ah=sha1 key=20 f05bfeb0060afa89d4afdfac35960a8a7a4d4856
enc: spi=b40a6c70 esp=aes key=32
a1e361075267ba72b39924c5e6c766fd0b08e0548476de2792ee72057fe60d1d
ah=sha1 key=20 b1d24bedb0eb8fbd26de3e7c0b0a3a799548f52f
dec:pkts/bytes=41/2186, enc:pkts/bytes=41/5120
------------------------------------------------------
name=toazure2 ver=2 serial=4 172.30.1.83:4500->52.180.89.94:4500
bound_if=3 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/0
proxyid_num=1 child_num=0 refcnt=16 ilast=16 olast=16 ad=/0
stat: rxp=40 txp=40 rxb=4928 txb=2135
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=1
natt: mode=keepalive draft=0 interval=10 remote_port=4500
proxyid=toazure2 proto=0 sa=1 ref=2 serial=4
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=10626 type=00 soft=0 mtu=8926 expire=2427/0B replaywin=2048
seqno=29 esn=0 replaywin_lastseq=00000028 itn=0
life: type=01 bytes=0/0 timeout=3299/3600
dec: spi=c13f791d esp=aes key=32
759898cbb7fafe448116b1fb0fb6d2f0eb99621ea6ed8dd4417ffdb901eb82be
ah=sha1 key=20 533ec5dc8a1910221e7742b12f9de1b41205622c
enc: spi=67934bfe esp=aes key=32
9b5710bfb4ba784722241ec371ba8066629febcd75da6f8471915bdeb874ca80
ah=sha1 key=20 5099fed7edac2b960294094f1a8188ab42f34d7b
dec:pkts/bytes=40/2087, enc:pkts/bytes=40/4976

Routing table for VRF=0


Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2

FortiOS 6.4.6 Administration Guide 1370


Fortinet Technologies Inc.
VPN

i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area


* - candidate default

S* 0.0.0.0/0 [5/0] via 172.30.1.1, port1


B 10.1.0.0/16 [20/0] via 10.1.0.6, toazure2, 00:15:01
C 10.1.0.6/32 is directly connected, toazure2
C 10.1.0.7/32 is directly connected, toazure1
B 10.2.0.0/16 [20/0] via 10.1.0.6, toazure2, 00:15:01
C 169.254.24.25/32 is directly connected, toazure1
is directly connected, toazure2
C 172.30.1.0/24 is directly connected, port1
C 172.30.101.0/24 is directly connected, port2

IPSec VPN between a FortiGate and a Cisco ASA with multiple subnets

When a Cisco ASA unit has multiple subnets configured, multiple phase 2 tunnels must be created on the FortiGate to 
allocate to each subnet (rather than having multiple subnets on one phase 2 tunnel). 
The FortiGate uses the same SPI value to bring up the phase 2 negotiation for all of the subnets, while the Cisco ASA 
expects different SPI values for each of its configured subnets. Using multiple phase 2 tunnels on the FortiGate creates 
different SPI values for each subnet.

To configure multiple phase 2 interfaces in route-based mode:

config vpn ipsec phase2-interface


edit "First subnet"
set phase1name "VPN to Cisco"
set src-subnet 192.168.227.253 255.255.255.255
set dst-subnet 10.142.0.0 255.255.254.0
next
edit "Second subnet"
set phase1name "VPN to Cisco"
set src-subnet 192.168.227.253 255.255.255.255
set dst-subnet 10.143.0.0 255.255.254.0
next
end

To configure multiple phase 2 interfaces in policy-based mode:

config vpn ipsec phase2


edit "First subnet"
set phase1name "VPN to Cisco"
set src-subnet 192.168.227.253 255.255.255.255
set dst-subnet 10.142.0.0 255.255.254.0
next
edit "Second subnet"
set phase1name "VPN to Cisco"
set src-subnet 192.168.227.253 255.255.255.255
set dst-subnet 10.143.0.0 255.255.254.0
next
end

FortiOS 6.4.6 Administration Guide 1371


Fortinet Technologies Inc.
VPN

Cisco GRE-over-IPsec VPN

This is a sample configuration of  a FortiGate VPN that is compatible with Cisco-style VPNs that use GRE in an IPsec 
tunnel. Cisco products with VPN support often use the GRE protocol tunnel over IPsec encryption. Cisco VPNs can use 
either transport mode or tunnel mode IPsec. 

Topology

In this example, LAN1 users are provided with access to LAN2.

Configuring the FortiGate

There are five steps to configure GRE-over-IPsec with a FortiGate and Cisco router:
 1. Enable overlapping subnets.
 2. Configure a route-based IPsec VPN on the external interface.
 3. Configure a GRE tunnel on the virtual IPsec interface.
 4. Configure security policies.
 5. Configure the static route.

Enabling overlapping subnets

Overlapping subnets are required because the IPsec and GRE tunnels will use the same addresses. By default, each 
FortiGate network interface must be on a separate network. This configuration  assigns an IPsec tunnel endpoint and the 
external interface to the same network. 

FortiOS 6.4.6 Administration Guide 1372


Fortinet Technologies Inc.
VPN

To enable overlapping subnets:

config system settings


set allow-subnet-overlap enable
next
end

Configuring a route-based IPsec VPN

A route-based VPN that use encryption and authentication algorithms compatible with the Cisco router is required. Pre-
shared key authentication is used in this configuration.

To configure route-based IPsec in the GUI:

 1. Go to VPN > IPsec Wizard and select the Custom template.


 2. Enter the tunnel name (tocisco) and click Next.
 3. Enter the following:

Remote Gateway Static IP Address

IP Address Cisco router public interface (192.168.5.113)

Interface FortiGate public interface (172.20.120.141)

Authentication Method Pre-shared Key

Pre-shared Key Entry must match the pre-shared key on the Cisco router

Mode Main (ID Protection)

Phase 1 Proposal 3DES-SHA1, AES128-SHA1 (at least one proposal must match the settings 


on the Cisco router)

Local Address GRE local tunnel endpoint IP address (172.20.120.141)

Remote Address GRE remote tunnel endpoint IP address (192.168.5.113)

Phase 2 Proposal 3DES-MD5 (at least one proposal must match the settings on the Cisco router)

Local Port 0

Remote Port 0

Protocol 47

 4. Click OK.
 5. If the Cisco router is configured to use transport mode IPsec, configure transport mode on the FortiGate:
config vpn phase2-interface
edit tocisco_p2
set encapsulation transport-mode
next
end

To configure route-based IPsec in the CLI:

config vpn ipsec phase1-interface


edit tocisco

FortiOS 6.4.6 Administration Guide 1373


Fortinet Technologies Inc.
VPN

set interface port1


set proposal 3des-sha1 aes128-sha1
set remote-gw 192.168.5.113
set psksecret xxxxxxxxxxxxxxxx
next
end
config vpn ipsec phase2-interface
edit tocisco_p2
set phase1name tocisco
set proposal 3des-md5
set encapsulation [tunnel-mode | transport-mode]
set protocol 47
set src-addr-type ip
set dst-start-ip 192.168.5.113
set src-start-ip 172.20.120.141
next
end

To add the IPsec tunnel end addresses:

config system interface


edit tocisco
set ip 172.20.120.141 255.255.255.255
set remote-ip 192.168.5.113
next
end

Configuring the GRE tunnel

The local gateway and remote gateway addresses must match the local and remote gateways of the IPsec tunnel. The 
GRE tunnel runs between the virtual IPsec public interface on the FortiGate unit and the Cisco router.

To configure the GRE tunnel:

config system gre-tunnel


edit gre1
set interface tocisco
set local-gw 172.20.120.141
set remote-gw 192.168.5.113
set keepalive-interval <integer>
set keepalive-failtimes <integer>
next
end

The Cisco router configuration requires an address for its end of the GRE tunnel, so you need to add the tunnel end 
addresses. 

To add the tunnel end addresses:

config system interface


edit gre1
set ip 10.0.1.1 255.255.255.255
set remote-ip 10.0.1.2

FortiOS 6.4.6 Administration Guide 1374


Fortinet Technologies Inc.
VPN

next
end

Configuring the security policies

Two sets of security policies are required:
 l Policies to allow traffic to pass in both directions between the GRE virtual interface and the IPsec virtual interface.
 l Policies to allow traffic to pass in both directions between the protected network interface and the GRE virtual 
interface.

To configure security policies in the GUI:

 1. Go to Policy & Objects > Firewall Policy and click Create New.


 2. Enter the following to allow traffic between the protected network and the GRE tunnel:

Name LANtoGRE

Incoming Interface Interface that connects to the private network behind the FortiGate (port2)

Outgoing Interface GRE tunnel virtual interface (gre1)

Source All

Destination All

Action ACCEPT

NAT Disable

 3. Click OK.
 4. Create a new policy and enter the following to allow traffic between the GRE tunnel and the protected network:

Name GREtoLAN

Incoming Interface GRE tunnel virtual interface (gre1)

Outgoing Interface Interface that connects to the private network behind the FortiGate (port2)

Source All

Destination All

Action ACCEPT

NAT Disable

 5. Click OK.
 6. Create a new policy and enter the following to allow traffic between the GRE virtual interface and the IPsec virtual 
interface:

Name GREtoIPsec

Incoming Interface GRE tunnel virtual interface (gre1)

Outgoing Interface Virtual IPsec interface (tocisco)

Source All

FortiOS 6.4.6 Administration Guide 1375


Fortinet Technologies Inc.
VPN

Destination All

Action ACCEPT

NAT Disable

 7. Click OK.
 8. Create a new policy and enter the following to allow traffic between the IPsec virtual interface and the GRE virtual 
interface:

Name IPsectoGRE

Incoming Interface Virtual IPsec interface (tocisco)

Outgoing Interface GRE tunnel virtual interface (gre1)

Source All

Destination All

Action ACCEPT

NAT Disable

 9. Click OK.

To configure security policies in the CLI:

config firewall policy


edit 1
set name LANtoGRE
set srcintf port2
set dstintf gre1
set srcaddr all
set dstaddr all
set action accept
set schedule always
set service ALL
next
edit 2
set name GREtoLAN
set srcintf gre1
set dstintf port2
set srcaddr all
set dstaddr all
set action accept
set schedule always
set service ALL
next
edit 3
set name GREtoIPsec
set srcintf gre1
set dstintf tocisco
set srcaddr all
set dstaddr all
set action accept
set schedule always
set service ALL

FortiOS 6.4.6 Administration Guide 1376


Fortinet Technologies Inc.
VPN

next
edit 4
set name IPsectoGRE
set srcintf tocisco
set dstintf gre1
set srcaddr all
set dstaddr all
set action accept
set schedule always
set service ALL
next
end

Configuring routing

to direct traffic destined for the network behind the Cisco router into the GRE-over-IPsec tunnelTraffic destined for the 
network behind the Cisco router must be routed to the GRE tunnel. To do this, create a static route

To create the static route in the GUI:

 1. Go to Network > Static Routes and click Create New.


 2. Enter the following:  

Destination IP and netmask for the network behind the Cisco router (10.21.101.0 
255.255.255.0)

Interface GRE tunnel virtual interface (gre1)

Administrative Distance Leave the default setting

 3. Click OK.

To create the static route in the CLI:

config router static


edit 0
set device gre1
set dst 10.21.101.0 255.255.255.0
next
end

Configuring the Cisco router

For more information, refer to Configuring and verifying a GRE over IPsec tunnel in the Fortinet Knowledge Base.

Remote access

Remote access lets users connect to the Internet using a dialup connection over traditional POTS or ISDN telephone 
lines. Virtual private network (VPN) protocols are used to secure these private connections.
The following topics provide instructions on configuring remote access:
 l FortiGate as dialup client on page 1378
 l FortiClient as dialup client on page 1384

FortiOS 6.4.6 Administration Guide 1377


Fortinet Technologies Inc.
VPN

 l Add FortiToken multi-factor authentication on page 1389
 l Add LDAP user authentication on page 1389
 l iOS device as dialup client on page 1390
 l IKE Mode Config clients on page 1394
 l IPsec VPN with external DHCP service on page 1398
 l L2TP over IPsec on page 1404
 l Tunneled Internet browsing on page 1408
 l Restricting VPN access to rogue/non-compliant devices with Security Fabric

FortiGate as dialup client

This is a sample configuration of dialup IPsec VPN and the dialup client. In this example, a branch office FortiGate 
connects via dialup IPsec VPN to the HQ FortiGate.

You can configure dialup IPsec VPN with FortiGate as the dialup client using the GUI or CLI.

To configure IPsec VPN with FortiGate as the dialup client in the GUI:

 1. Configure the dialup VPN server FortiGate:
 a. Go to VPN > IPsec Wizard and configure the following settings for VPN Setup:
 i. Enter a VPN name.
 ii. For Template Type, select Site to Site.
 iii. For Remote Device Type, select FortiGate.
 iv. For NAT Configuration, select The remote site is behind NAT.
 v. Click Next.
 b. Configure the following settings for Authentication:
 i. For Incoming Interface, select the incoming interface.
 ii. For Authentication Method, select Pre-shared Key.
 iii. In the Pre-shared Key field, enter your-psk as the key.
 iv. Click Next.
 c. Configure  the following settings for Policy & Routing:
 i. From the Local Interface dropdown menu, select the local interface.
 ii. Configure the Local Subnets as 10.1.100.0/24.
 iii. Configure the Remote Subnets as 172.16.101.0/24.
 iv. Click Create.
 2. Configure the dialup VPN client FortiGate:
 a. Go to VPN > IPsec Wizard and configure the following settings for VPN Setup:
 i. Enter a VPN name.
 ii. For Template Type, select Site to Site.

FortiOS 6.4.6 Administration Guide 1378


Fortinet Technologies Inc.
VPN

 iii. For Remote Device Type, select FortiGate.


 iv. For NAT Configuration, select This site is behind NAT.
 v. Click Next.
 b. Configure the following settings for Authentication:
 i. For IP Address, enter 11.101.1.1.
 ii. For Outgoing Interface, select port13.
 iii. For Authentication Method, select Pre-shared Key.
 iv. In the Pre-shared Key field, enter your-psk as the key.
 v. Click Next.
 c. Configure  the following settings for Policy & Routing:
 i. From the Local Interface dropdown menu, select the local interface. In this example, it is port9.
 ii. Configure the Local Subnets as 172.16.101.0.
 iii. Configure the Remote Subnets as 10.1.100.0.
 iv. Click Create.

To configure IPsec VPN with FortiGate as the dialup client in the CLI:

 1. In the CLI, configure the user, user group, and firewall address. Only the HQ dialup server FortiGate needs this 
configuration. The address is an IP pool to assign an IP address for the dialup client FortiGate.
config user local
edit "vpnuser1"
set type password
set passwd your-password
next
end
config user group
edit "vpngroup"
set member "vpnuser1"
next
end
config firewall address
edit "client_range"
set type iprange
set start-ip 10.10.10.1
set end-ip 10.10.10.200
next
end

 2. Configure the WAN interface and default route. The WAN interface is the interface connected to the ISP. It can work 
in static mode (as shown in this example), DHCP, or PPPoE mode. The IPsec tunnel is established over the 
WAN interface.
 a. Configure the HQ FortiGate.
config system interface
edit "wan1"
set vdom "root"
set ip 11.101.1 255.255.255.0
next
end
config router static
edit 1
set gateway 11.101.1.2

FortiOS 6.4.6 Administration Guide 1379


Fortinet Technologies Inc.
VPN

set device "wan1"


next
end

 b. Configure the branch office FortiGate.
config system interface
edit "port13"
set vdom "root"
set ip 173.1.1.1 255.255.255.0
next
end
config router static
edit 1
set gateway 173.1.1.2
set device "port13"
next
end

 3. Configure the internal interface and protected subnet. The internal interface connects to the internal network. Traffic 
from this interface will route out the IPsec VPN tunnel.
 a. Configure the HQ FortiGate.
config system interface
edit "dmz"
set vdom "root"
set ip 10.1.100.1 255.255.255.0
next
end
config firewall address
edit "10.1.100.0"
set subnet 10.1.100.0 255.255.255.0
next
end

 b. Configure the branch office FortiGate.
config system interface
edit "port9"
set vdom "root"
set ip 172.16.101.1 255.255.255.0
next
end
config firewall address
edit "172.16.101.0"
set subnet 172.16.101.0 255.255.255.0
next
end

 4. Configure the IPsec phase1-interface.  In this example, PSK is used as the authentication method. Signature 
authentication is also an option.
 a. Configure the HQ FortiGate.
config vpn ipsec phase1-interface
edit "for_Branch"
set type dynamic
set interface "wan1"
set mode aggressive

FortiOS 6.4.6 Administration Guide 1380


Fortinet Technologies Inc.
VPN

set peertype any


set mode-cfg enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set xauthtype auto
set authusrgrp "vpngroup"
set net-device enable
set assign-ip-from name
set dns-mode auto
set ipv4-split-include "10.1.100.0"
set ipv4-name "client_range"
set save-password enable
set psksecret sample
set dpd-retryinterval 60
next
end

 b. Configure the branch office FortiGate.  
config vpn ipsec phase1-interface
edit "to_HQ"
set interface "port13"
set mode aggressive
set peertype any
set mode-cfg enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set xauthtype client
set authusr "vpnuser1"
set authpasswd vpnuser1-password
set remote-gw 11.101.1.1
set psksecret sample
next
end

 5. Configure the IPsec phase2-interface. 
 a. Configure   the HQ FortiGate:
config vpn ipsec phase2-interface
edit "for_Branch_p2"
set phase1 name "for_Branch"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
next
end

 b. Configure the branch office FortiGate.
config vpn ipsec phase2-interface
edit "to_HQ_p2"
set phase1name "to_HQ"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
next
end

 6. Configure the static routes on the branch office FortiGate. The blackhole route is important to ensure that IPsec 
traffic does not match the default route when the IPsec tunnel is down.   

FortiOS 6.4.6 Administration Guide 1381


Fortinet Technologies Inc.
VPN

config router static


edit 2
set dst 10.1.100.0 255.255.255.0
set device "to_HQ"
next
edit 3
set dst 10.1.100.0 255.255.255.0
set blackhole enable
set distance 254
next
end

 7. Configure the firewall policy to allow the branch office to HQ network flow over the IPsec tunnel. This configuration 
only supports traffic from the branch office FortiGate to the HQ FortiGate. Traffic is dropped from the HQ FortiGate 
to the branch office FortiGate.   
 a. Configure the HQ FortiGate.
config firewall policy
edit 1
set name "inbound"
set srcintf "for_Branch"
set dstintf "dmz"
set srcaddr "172.16.101.0"
set dstaddr "10.1.100.0"
set action accept
set schedule "always"
set service "ALL"
next
end

 b. Configure the branch office FortiGate.   
config firewall policy
edit 1
set name "outbound"
set srcintf "port9"
set dstintf "to_HQ"
set srcaddr "172.16.101.0"
set dstaddr "10.1.100.0"
set action accept
set schedule "always"
set service "ALL"
next
end

 8. Run diagnose commands to check the IPsec phase1/phase2 interface status. The diagnose debug


application ike -1 command is the key to troubleshoot why the IPsec tunnel failed to establish.
 a. Run the diagnose vpn ike gateway list command on the HQ FortiGate. The system should return the 
following:
vd: root/0
name: for_Branch_0
version: 1
interface: wan1 5
addr: 11.101.1.1:500 -> 173.1.1.1:500
created: 1972s ago
xauth-user: vpnuser1

FortiOS 6.4.6 Administration Guide 1382


Fortinet Technologies Inc.
VPN

assigned IPv4 address: 10.10.10.1/255.255.255.252


IKE SA: created 1/1 established 1/1 time 10/10/10 ms
IPsec SA: created 1/1 established 1/1 time 0/0/0 ms
id/spi: 184 5b1c59fab2029e43/bf517e686d3943d2
direction: responder
status: established 1972-1972s ago = 10ms
proposal: aes128-sha256
key: 8046488e92499247-fbbb4f6dfa4952d0
lifetime/rekey: 86400/84157
DPD sent/recv: 00000020/00000000

 b. Run the diagnose vpn tunnel list command on the HQ FortiGate. The system should return the 


following: 
list all ipsec tunnel in vd 0
name=for_Branch_0 ver=1 serial=9 11.101.1.1:0->173.1.1.1:0
bound_if=5 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/208 options
[00d0]=create_dev no-sysctlrgwy-chg
parent=for_Branch index=0
proxyid_num=1 child_num=0 refcnt=12 ilast=8 olast=8 ad=/0
stat: rxp=8 txp=8 rxb=1216 txb=672
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=31
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=for_Branch_p2 proto=0 sa=1 ref=2 serial=1
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:0.0.0.0-255.255.255.255:0
SA: ref=3 options=226 type=00 soft=0 mtu=1438 expire=41297/0B replaywin=2048 seqno=9
esn=0 replaywin_lastseq=00000009 itn=0
life: type=01 bytes=0/0 timeout=43190/43200
dec: spi=747c10c6 esp=aes key=16 278c2430e09e74f1e229108f906603b0
ah=sha1 key=20 21dad76b008d1e8b8e53148a2fcbd013a277974a
enc: spi=ca646448 esp=aes key=16 b7801d125804e3610a556da7caefd765
ah=sha1 key=20 a70164c3094327058bd84c1a0c954ca439709206
dec:pkts/bytes=8/672, enc:pkts/bytes=8/1216

name=for_Branchver=1 serial=6 11.101.1.1:0->0.0.0.0:0


bound_if=5 lgwy=static/1 tun=intf/0 mode=dialup/2 encap=none/16 options[0010]=create_
dev
proxyid_num=0 child_num=1 refcnt=14 ilast=8523 olast=8523 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=60000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
run_tally=0

 c. Run the diagnose vpn ike gateway list command on the branch office FortiGate. The system should 


return the following: 
vd: root/0
name: to_HQ
version: 1
interface: port13 42
addr: 173.1.1.1:500 -> 11.101.1.1:500
created: 2016s ago
assigned IPv4 address: 10.10.10.1/255.255.255.252
IKE SA: created 1/1 established 1/1 time 0/0/0 ms
IPsec SA: created 1/1 established 1/1 time 0/0/0 ms
id/spi: 93 5b1c59fab2029e43/bf517e686d3943d2
direction: initiator

FortiOS 6.4.6 Administration Guide 1383


Fortinet Technologies Inc.
VPN

status: established 2016-2016s ago = 0ms


proposal: aes128-sha256
key: 8046488e92499247-fbbb4f6dfa4952d0
lifetime/rekey: 86400/84083
DPD sent/recv: 00000000/00000020

 d. Run the diagnose vpn tunnel list command on the branch office FortiGate. The system should return 


the following: 
list all ipsec tunnel in vd 0
name=to_HQver=1 serial=7 173.1.1.1:0->11.101.1.1:0
bound_if=42 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/8 options[0008]=npu
proxyid_num=1 child_num=0 refcnt=13 ilast=18 olast=58 ad=/0
stat: rxp=1 txp=2 rxb=152 txb=168
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=to_HQ proto=0 sa=1 ref=2 serial=1
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=10226 type=00 soft=0 mtu=1438 expire=41015/0B replaywin=2048
seqno=3 esn=0 replaywin_lastseq=00000002 itn=0
life: type=01 bytes=0/0 timeout=42898/43200
dec: spi=ca646448 esp=aes key=16 b7801d125804e3610a556da7caefd765
ah=sha1 key=20 a70164c3094327058bd84c1a0c954ca439709206
enc: spi=747c10c6 esp=aes key=16 278c2430e09e74f1e229108f906603b0
ah=sha1 key=20 21dad76b008d1e8b8e53148a2fcbd013a277974a
dec:pkts/bytes=1/84, enc:pkts/bytes=2/304
npu_flag=03 npu_rgwy=11.101.1.1 npu_lgwy=173.1.1.1 npu_selid=5 dec_npuid=2 enc_
npuid=2

FortiClient as dialup client

This is a sample configuration of dialup IPsec VPN with FortiClient as the dialup client.

You can configure dialup IPsec VPN with FortiClient as the dialup client using the GUI or CLI.
If multiple dialup IPsec VPNs are defined for the same dialup server interface, each phase1 configuration must define a 
unique peer ID to distinguish the tunnel that the remote client is connecting to.  When a client connects, the first IKE 

FortiOS 6.4.6 Administration Guide 1384


Fortinet Technologies Inc.
VPN

message that is in aggressive mode contains the client's local ID. FortiGate matches the local ID to the dialup tunnel 
referencing the same Peer ID, and the connection continues with that tunnel. 

To configure IPsec VPN with FortiClient as the dialup client on the GUI:

 1. Configure a user and user group.
 a. Go to User & Authentication > User Definition to create a local user vpnuser1.
 b. Go to User & Authentication > User Groups to create a group vpngroup with the member vpnuser1.
 2. Go to VPN > IPsec Wizard and configure the following settings for VPN Setup:
 a. Enter a VPN name.
 b. For Template Type, select Remote Access.
 c. For Remote Device Type, select Client-based > FortiClient.
 d. Click Next.
 3. Configure the following settings for Authentication:
 a. For Incoming Interface, select wan1.
 b. For Authentication Method, select Pre-shared Key.
 c. In the Pre-shared Key field, enter your-psk as the key.
 d. From the User Group dropdown list, select vpngroup.
 e. Click Next.
 4. Configure the following settings for Policy & Routing:
 a. From the Local Interface dropdown menu, select lan.
 b. Configure the Local Address as local_network.
 c. Configure the Client Address Range as 10.10.2.1-10.10.2.200.
 d. Keep the default values for the Subnet Mask, DNS Server, Enable IPv4 Split tunnel, and Allow Endpoint
Registration.
 e. Click Next.
 5. Adjust the Client Options as needed, then click Create.
 6. Optionally, define a unique Peer ID in the phase1 configuration:
 a. Go to VPN > IPsec Tunnels and edit the just created tunnel.
 b. Click Convert To Custom Tunnel.
 c. In the Authentication section, click Edit.
 d. Under Peer Options, set Accept Types to Specific peer ID.
 e. In the Peer ID field, enter a unique ID, such as dialup1.
 f. Click OK.

To configure IPsec VPN with FortiClient as the dialup client using the CLI:

 1. In the CLI, configure the user and group. 
config user local
edit "vpnuser1"
set type password
set passwd your-password
next
end
config user group
edit "vpngroup"
set member "vpnuser1"

FortiOS 6.4.6 Administration Guide 1385


Fortinet Technologies Inc.
VPN

next
end

 2. Configure the internal interface. The LAN interface connects to the corporate internal network. Traffic from this 
interface routes out the IPsec VPN tunnel. Creating an address group for the protected network behind this 
FortiGate causes traffic to this network group to go through the IPsec tunnel.  
config system interface
edit "lan"
set vdom "root"
set ip 10.10.111.1 255.255.255.0
next
end
config firewall address
edit "local_subnet_1"
set subnet 10.10.111.0 255.255.255.0
next
edit "local_subnet_2"
set subnet 10.10.112.0 255.255.255.0
next
end
config firewall addrgrp
edit "local_network"
set member "local_subnet_1" "local_subnet_2"
next
end

 3. Configure the WAN interface. The WAN interface is the interface connected to the ISP. It can work in static mode 
(as shown in this example), DHCP, or PPPoE mode. The IPsec tunnel is established over the WAN interface.   
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 4. Configure the client address pool. You must create a firewall address to assign an IP address to a client from the 
address pool.   
config firewall address
edit "client_range"
set type iprange
set comment "VPN client range"
set start-ip 10.10.2.1
set end-ip 10.10.2.200
next
end

 5. Configure the IPsec phase1-interface.  In this example, PSK is used as the authentication method. Signature 
authentication is also an option.   
config vpn ipsec phase1-interface
edit "for_client"
set type dynamic
set interface "wan1"
set mode aggressive
set peertype one

FortiOS 6.4.6 Administration Guide 1386


Fortinet Technologies Inc.
VPN

set peerid "dialup1"


set net-device enable
set mode-cfg enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set dpd on-idle
set xauthtype auto
set authusrgrp "vpngroup"
set assign-ip-from name
set ipv4-name "client_range"
set dns-mode auto
set ipv4-split-include "local_network"
set save-password enable
set psksecret your-psk
set dpd-retryinterval 60
next
end

 6. Configure the IPsec phase2-interface.   
config vpn ipsec phase2-interface
edit "for_client"
set phase1name "for_client"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
next
end

 7. Configure the firewall policy to allow client traffic flow over the IPsec VPN tunnel.   
config firewall policy
edit 1
set name "inbound"
set srcintf "for_client"
set dstintf "lan"
set srcaddr "client_range"
set dstaddr "local_network"
set action accept
set schedule "always"
set service "ALL"
next
end

To configure FortiClient:

 1. In FortiClient, go to Remote Access and click Add a new connection.


 2. Set the VPN to IPsec VPN and the Remote Gateway to the FortiGate IP address.
 3. Set the Authentication Method to Pre-Shared Key and enter the key.
 4. Expand Advanced Settings > Phase 1 and in the Local ID field, enter dialup1.
 5. Configure remaining settings as needed, then click Save.
 6. Select the VPN, enter the username and password, then select Connect.

Diagnose the connection

Run diagnose commands to check the IPsec phase1/phase2 interface status. The diagnose debug application


ike -1 command is the key to troubleshoot  why the IPsec tunnel failed to establish.

FortiOS 6.4.6 Administration Guide 1387


Fortinet Technologies Inc.
VPN

 1. Run the diagnose vpn ike gateway list command. The system should return the following:


vd: root/0
name: for_client_0
version: 1
interface: port1 15
addr: 172.20.120.123:4500 ->172.20.120.254:64916
created: 37s ago
xauth-user: vpnuser1
assigned IPv4 address: 10.10.1.1/255.255.255.255
nat: me peer
IKE SA: created 1/1 established 1/1 time 10/10/10 ms
IPsec SA: created 1/1 established 1/1 time 0/0/0 ms
id/spi: 1 b40a32d878d5e262/8bba553563a498f4
direction: responder
status: established 37-37s ago = 10ms
proposal: aes256-sha256
key: f4ad7ec3a4fcfd09-787e2e9b7bceb9a7-0dfa183240d838ba-41539863e5378381
lifetime/rekey: 86400/86092
DPD sent/recv: 00000000/00000a0e

 2. Run the diagnose vpn tunnel list command. The system should return the following: 


list all ipsec tunnel in vd 0
=
=
name=for_client_0 ver=1 serial=3 172.20.120.123:4500->172.20.120.254:64916
bound_if=15 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/984 options
[03d8]=npucreate_dev no-sysctlrgwy-chgrport-chg frag-rfcaccept_traffic=1
parent=for_client index=0
proxyid_num=1 child_num=0 refcnt=12 ilast=3 olast=3 ad=/0
stat: rxp=1 txp=0 rxb=16402 txb=0
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=keepalive draft=32 interval=10 remote_port=64916
proxyid=for_client proto=0 sa=1 ref=2 serial=1 add-route
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.10.1.1-10.10.1.1:0
SA: ref=4 options=2a6 type=00 soft=0 mtu=1422 expire=42867/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000001 itn=0
life: type=01 bytes=0/0 timeout=43189/43200
dec: spi=36274d14 esp=aes key=16 e518b84b3c3b667b79f2e61c64a225a6
ah=sha1 key=20 9cceaa544ed042fda800c4fe5d3fd9d8b811984a
enc: spi=8b154deb esp=aes key=16 9d50f004b45c122e4e9fb7af085c457c
ah=sha1 key=20 f1d90b2a311049e23be34967008239637b50a328
dec:pkts/bytes=1/16330, enc:pkts/bytes=0/0
npu_flag=02 npu_rgwy=172.20.120.254 npu_lgwy=172.20.120.123npu_selid=0 dec_npuid=2 enc_
npuid=0
name=for_clientver=1 serial=2 172.20.120.123:0->0.0.0.0:0
bound_if=15 lgwy=static/1 tun=intf/0 mode=dialup/2 encap=none/536 options
[0218]=npucreate_dev frag-rfcaccept_traffic=1
proxyid_num=0 child_num=1 refcnt=11 ilast=350 olast=350 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0

FortiOS 6.4.6 Administration Guide 1388


Fortinet Technologies Inc.
VPN

Add FortiToken multi-factor authentication

This configuration adds multi-factor authentication (MFA) to the FortiClient dialup VPN configuration (FortiClient as 
dialup client on page 1384). It uses one of the two free mobile FortiTokens that is already installed on the FortiGate.

To configure MFA using the GUI:

 1. Edit the user:
 a. Go to User & Authentication > User Definition and edit local user vpnuser1.
 b. Enable Two-factor Authentication and select one mobile Token from the list,
 c. Enter the user's Email Address.
 d. Enable Send Activation Code and select Email.
 e. Click Next and click Submit.
 2. Activate the mobile token.
 a. When a FortiToken is added to user vpnuser1, an email is sent to the user's email address. Follow the 
instructions to install your FortiToken mobile application on your device and activate your token.

To configure MFA using the CLI:

 1. Edit the user and user group:
config user local
edit "vpnuser1"
set type password
set two-factor fortitoken
set fortitoken <select mobile token for the option list>
set email-to <user's email address>
set passwd <user's password>
next
end

 2. Activate the mobile token.
 a. When a FortiToken is added to user vpnuser1, an email is sent to the user's email address. Follow the 
instructions to install your FortiToken mobile application on your device and activate your token.

Add LDAP user authentication

This configuration adds LDAP user authentication to the FortiClient dialup VPN configuration (FortiClient as dialup client 
on page 1384). You must have already generated and exported a CA certificate from your AD server.

To configure LDAP user authentication using the GUI:

 1. Import the CA certificate into FortiGate:   
 a. Go to System > Certificates.
If the Certificates option is not visible, enable it in Feature Visibility. See Feature visibility on page 940 for 
details.
 b. Click Import > CA Certificate.
 c. Set Type to File.
 d. Click Upload then find and select the certificate file.

FortiOS 6.4.6 Administration Guide 1389


Fortinet Technologies Inc.
VPN

 e. Click OK.
The CA certificate now appears in the list of External CA Certificates. In this example, it is called CA_Cert_1.
 f. Optionally, rename the system generated CA_Cert_1 to something more descriptive:
config vpn certificate ca
rename CA_Cert_1 to LDAPS-CA
end

 2. Configure the LDAP user:   
 a. Go to User & Authentication > LDAP Servers and click Create New.
 b. Set Name to ldaps-server and specify Server IP/Name.
 c. Specify Common Name Identifier and Distinguished Name.
 d. Set Bind Type to Regular.
 e. Specify Username and Password.
 f. Enable Secure Connection and set Protocol to LDAPS.
 g. For Certificate, select LDAP server CA LDAPS-CA from the list.
 h. Click OK.
 3. Add the LDAP user to the user group:   
 a. Go to User & Authentication > User Groups and edit the vpngroup group.
 b. In Remote Groups, click Add to add the ldaps-server remote server.
 c. Click OK.

To configure LDAP user authentication using the CLI:

 1. Import the CA certificate using the GUI.
 2. Configure the LDAP user:
config user ldap
edit "ldaps-server"
set server "172.20.120.161"
set cnid "cn"
set dn "cn=Users,dc=qa,dc=fortinet,dc=com"
set type regular
set username "CN=Administrator,cn=users,DC=qa,DC=fortinet,DC=com"
set password **********
set group-member-check group-object
set secure ldaps
set ca-cert "LDAPS-CA"
set port 636
next
end

 3. Add the LDAP user to the user group:
config user group
edit "vpngroup"
append member "ldaps-server"
next
end

iOS device as dialup client

This is a sample configuration of dialup IPsec VPN with an iPhone or iPad as the dialup client.

FortiOS 6.4.6 Administration Guide 1390


Fortinet Technologies Inc.
VPN

You can configure dialup IPsec VPN with an iOS device as the dialup client using the GUI or CLI.

To configure IPsec VPN with an iOS device as the dialup client on the GUI:

 1. Go to VPN > IPsec Wizard and configure the following settings for VPN Setup:


 a. Enter a VPN name.
 b. For Template Type, select Remote Access.
 c. For Remote Device Type, select Native > iOS Native.
 d. For NAT Configuration, set No NAT Between Sites.
 e. Click Next.
 2. Configure the following settings for Authentication:
 a. For Incoming Interface, select wan1.
 b. For Authentication Method, select Pre-shared Key.
 c. In the Pre-shared Key field, enter your-psk as the key.
 d. From the User Group dropdown list, select vpngroup.
 e. Deselect Require 'Group Name' on VPN client.
 f. Click Next.
 3. Configure the following settings for Policy & Routing:
 a. From the Local Interface dropdown menu, select lan.
 b. Configure the Local Address as local_network.
 c. Configure the Client Address Range as 10.10.2.1-10.10.2.200.
 d. Keep the default values for the Subnet Mask, DNS Server, and Enable IPv4 Split tunnel.
 e. Click Create.

To configure IPsec VPN with an iOS device as the dialup client using the CLI:

 1. In the CLI, configure the user and group.
config user local
edit "vpnuser1"
set type password
set passwd your-password
next
end

FortiOS 6.4.6 Administration Guide 1391


Fortinet Technologies Inc.
VPN

config user group


edit "vpngroup"
set member "vpnuser1"
next
end

 2. Configure the internal interface. The LAN interface connects to the corporate internal network. Traffic from this 
interface routes out the IPsec VPN tunnel. Creating an address group for the protected network behind this 
FortiGate causes traffic to this network group to go through the IPsec tunnel.
config system interface
edit "lan"
set vdom "root"
set ip 10.10.111.1 255.255.255.0
next
end

config firewall address


edit "local_subnet_1"
set ip 10.10.111.0 255.255.255.0
next
end

config firewall address


edit "local_subnet_2"
set ip 10.10.112.0 255.255.255.0
next
end

config firewall addrgrp


edit "local_network"
set member "local_subnet_1" "local_subnet_2"
next
end

 3. Configure the WAN interface. The WAN interface is the interface connected to the ISP. It can work in static mode 
(as shown in this example), DHCP, or PPPoE mode. The IPsec tunnel is established over the WAN interface.
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 4. Configure the client address pool. You must create a firewall address to assign an IP address to a client from the 
address pool.
config firewall address
edit "client_range"
set type iprange
set comment "VPN client range"
set start-ip 10.10.2.1
set end-ip 10.10.2.200
next
end

 5. Configure the IPsec phase1-interface.  In this example, PSK is used as the authentication method. Signature 
authentication is also an option.

FortiOS 6.4.6 Administration Guide 1392


Fortinet Technologies Inc.
VPN

config vpn ipsec phase1-interface


edit "for_ios_p1"
set type dynamic
set interface "wan1"
set peertype any
set net-device enable
set mode-cfg enable
set proposal aes256-sha256 aes256-md5 aes256-sha1
set dpd on-idle
set dhgrp 14 5 2
set xauthtype auto
set authusrgrp "vpngroup"
set assign-ip-from name
set ipv4-name "client_range"
set dns-mode auto
set ipv4-split-include "local_network"
set psksecret your-psk
set dpd-retryinterval 60
next
end

 6. Configure the IPsec phase2-interface.
config vpn ipsec phase2-interface
edit "for_ios_p2"
set phase1name "for_ios_p1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set pfs disable
set keepalive enable
next
end

 7. Configure the firewall policy to allow client traffic flow over the IPsec VPN tunnel.
config firewall policy
edit 1
set name "ios_vpn"
set srcintf "for_ios_p1"
set dstintf "lan"
set srcaddr "ios_range"
set dstaddr "local_network"
set action accept
set schedule "always"
set service "ALL"
next
end

 8. Configure the iOS device.
 a. In the iOS device, go to Settings > General > VPN and select Add VPN Configuration.
 b. Set the Type to IPsec and enter a Description. Set the Server to the FortiGate's Internet-facing interface, and 
enter the username in Account. Enter the user password, the preshared IPsec VPN secret, then select Done.
 c. Ensure that the IPsec VPN configuration is highlighted (indicated by a checkmark), and select the Not
Connected button. The IPsec VPN connects with the user's credentials and secret. The status changes to 
Connected, and a VPN icon appears at the top of the screen.
 9. Run diagnose commands to check the IPsec phase1/phase2 interface status. The diagnose debug
application ike -1 command is the key to troubleshoot why the IPsec tunnel failed to establish.

FortiOS 6.4.6 Administration Guide 1393


Fortinet Technologies Inc.
VPN

 a. Run the diagnose vpn ike gateway list command. The system should return the following:


vd: root/0
name: for_ios_p1_0
version: 1
interface: port1 15
addr: 172.20.120.123:4500 -> 172.20.120.254:64916
created: 17s ago
xauth-user: u1
assigned IPv4 address: 10.10.2.1/255.255.255.255
nat: me peer
IKE SA: created 1/1 established 1/1 time 150/150/150 ms
IPsec SA: created 1/1 established 1/1 time 10/10/10 ms
id/spi: 2 3c844e13c75591bf/80c2db92c8d3f602 direction: responder status: established
17-17s ago = 150ms proposal: aes256-sha256 key: 0032ea5ee160d775-51f3bf1f9909101b-
b89c7b5a77a07784-2c92cf9c921801ac lifetime/rekey: 3600/3312 DPD sent/recv:
00000000/00000000

 b. Run the diagnose vpn tunnel list command. The system should return the following:


list all ipsec tunnel in vd 0
=
=
name=for_ios_p1_0 ver=1 serial=172.20.120.123:4500->172.20.120.254:64916
bound_if=15 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/984 options
[03d8]=npu create_dev no-sysctl rgwy-chg rport-chg frag-rfc accept_traffic=1
parent=for_ios_p1 index=0
proxyid_num=1 child_num=0 refcnt=12 ilast=23 olast=23 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=0
natt: mode=keepalive draft=32 interval=10 remote_port=64916
proxyid=for_ios_p1 proto=0 sa=1 ref=2 serial=1 add-route
src: 0:10.10.111.0-10.10.111.255:0 dst: 0:10.10.2.1-10.10.2.1:0 SA: ref=3 options=a7
type=00 soft=0 mtu=1422 expire=3564/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0
life: type=01 bytes=0/0 timeout=3587/3600 dec: spi=36274d15 esp=aes key=32
5a599d796f8114c83d6589284f036fc33bdf4456541e2154b4ac2217b6aec869
ah=sha1 key=20 f1efdeb77d6f856a8dd3a30cbc23cb0f8a3e0340
enc: spi=00b0d9ab esp=aes key=32
e9232d7a1c4f390fd09f8409c2d85f80362d940c08c73f245908ab1ac3af322f
ah=sha1 key=20 a3890d6c5320756291cad85026d3a78fd42a1b42
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0 npu_flag=00 npu_rgwy=172.20.120.254 npu_
lgwy=172.20.120.123 npu_selid=1 dec_npuid=0 enc_npuid=0

IKE Mode Config clients

IKE Mode Config is an alternative to DHCP over IPsec. It allows dialup VPN clients to obtain virtual IP address, network, 
and DNS configurations amongst others from the VPN server. A FortiGate can be configured as either an IKE Mode 
Config server or client.
IKE Mode Config can configure the host IP address, domain, DNS addresses ,and WINS addresses. IPsec parameters 
such as gateway address, encryption, and authentication algorithms must be configured. Several network equipment 
vendors support IKE Mode Config.
An IKE Mode Config server or client is configured using config vpn ipsec phase1-interface and involves the 
following parameters:

FortiOS 6.4.6 Administration Guide 1394


Fortinet Technologies Inc.
VPN

Parameter Description

ike-version {1 | 2} IKE v1 is the default for FortiGate IPsec VPNs. IKE Mode Config is also 
compatible with IKE v2.

mode-cfg {enable | disable} Enable/disable IKE Mode Config.

type {static | dynamic | ddns} If you set type to dynamic, an IKE Mode Config server is created. The other 
settings create an IKE Mode Config client.

assign-ip {enable | disable} Enable to request an IP address from the server. This configuration is for IKE 
Mode Config clients only.

interface <interface_name> Specify the physical, aggregate, or VLAN interface to which the IPsec tunnel will 
be bound.

proposal <encryption_ The encryption and authentication settings that the client will accept.
combination>

ip-version {4 | 6} By default, IPsec VPNs use IPv4 addressing.

ipv4-split-exclude <string> Specify the subnets that should not be sent over the IPsec tunnel. This 
ipv6-split-exclude <string> configuration is for IKE Mode Config clients only (see Split-exclude in IKEv1).

Creating an IKE Mode Config client

In this example, the FortiGate connects to a VPN gateway with a static IP address that can be reached through port 1. 
Only the port, gateway, and proposal information needs to be configured. All other configuration information will come 
from the IKE Mode Config server.

To configure an IKE Mode Config client:

config vpn ipsec phase1-interface


edit vpn1
set ip-version 4
set type static
set remote-gw <gw_address>
set interface port1
set proposal 3des-sha1 aes128-sha1
set mode-cfg enable
set assign-ip enable
next
end

Split-exclude in IKEv1

The split-exclude option specifies that default traffic flows over the IPsec tunnel except for specified subnets. This is 
the opposite of split-include, which specifies that default traffic should not flow over the IPsec tunnel except for 
specified subnets. The split-include and split-exclude options can be specified at the same time.

To configure split-exclude:

config vpn ipsec phase1-interface


edit <name>
set ike-version 1

FortiOS 6.4.6 Administration Guide 1395


Fortinet Technologies Inc.
VPN

set type dynamic


set mode-cfg enable
set ipv4-split-exclude <string>
set ipv6-split-exclude <string>
next
end

Creating an IKE Mode Config server

In this example, the FortiGate assigns IKE Mode Config clients addresses in the range of 10.11.101.160 - 
10.11.101.180. DNS and WINS server addresses are also provided. The public interface of the FortiGate unit is port1.
When IKE Mode-Configuration is enabled, multiple server IPs can be defined in IPsec phase 1.
The ipv4-split-include parameter specifies a firewall address (OfficeLAN), which represents the networks that 
the clients will have access to. This destination IP address information is sent to the clients.

To configure an IKE Mode Config server:

config vpn ipsec phase1-interface


edit "vpn-p1"
set type dynamic
set interface "wan1"
set xauthtype auto
set mode aggressive
set mode-cfg enable
set proposal 3des-sha1 aes128-sha1
set dpd disable
set dhgrp 2
set authusrgrp "FG-Group1"
set ipv4-start-ip 10.10.10.10
set ipv4-end-ip 10.10.10.20
set ipv4-dns-server1 1.1.1.1
set ipv4-dns-server2 2.2.2.2
set ipv4-dns-server3 3.3.3.3
set ipv4-wins-server1 4.4.4.4
set ipv4-wins-server2 5.5.5.5
set domain "fgt1c-domain"
set banner "fgt111C-banner"
set backup-gateway "100.100.100.1" "host1.com" "host2"
set ipv4-split-include OfficeLAN
next
end

Assigning IP addresses

Once the basic configuration is enabled, you can configure IP address assignment for clients, as well as DNS and WINS 
server assignments. Usually you will want to assign IP addresses to clients. The easiest way is to assign addresses from 
a specific range, similar to a DHCP server. 

To assign an IP from an address range:

config vpn ipsec phase1-interface


edit vpn1

FortiOS 6.4.6 Administration Guide 1396


Fortinet Technologies Inc.
VPN

set ip-version 4
set assign-ip enable
set assign-ip-from range
set ipv4-start-ip <range_start>
set ipv4-end-ip <range_end>
set ipv4-netmask <netmask>
next
end

To assign an IP from a named firewall address or group:

config vpn ipsec phase1-interface


edit vpn1
set type dynamic
set assign-ip-from name
set ipv4-name <name>
set ipv6-name <name>
next
end

RADIUS server

If the client is authenticated by a RADIUS server, you can obtain the user’s IP address assignment from the Framed-IP-
Address attribute. The user must be authenticated using XAuth.
The users must be authenticated by a RADIUS server and assigned to the FortiGate user group <grp_name>. Since the 
IP address is not static, type is set to dynamic and mode-cfg is enabled. With IKE Mode Config, compatible clients can 
configure themselves with settings provided by the FortiGate.

To assign an IP from a RADIUS server:

config vpn ipsec phase1-interface


edit vpn1
set type dynamic
set mode-cfg enable
set assign-ip enable
set assign-ip-from usrgrp
set xauthtype auto
set authusrgrp <grp_name>
next
end

DHCP server

IKE Mode Config can use a remote DHCP server to assign the client IP addresses. Up to eight server addresses can be 
selected for either IPv4 or IPv6. The DHCP proxy must be enabled first.

To assign an IP from a DHCP server:

config system settings


set dhcp-proxy enable
set dhcp-server-ip <address>
set dhcp6-server-ip <address>
end

FortiOS 6.4.6 Administration Guide 1397


Fortinet Technologies Inc.
VPN

config vpn ipsec phase1-interface


edit vpn1
set mode-cfg enable
set assign-ip-from dhcp
next
end

Certificate groups

IKE certificate groups consisting of up to four RSA certificates can be used in IKE phase 1. Since CA and local 
certificates are global, the IKE daemon loads them once for all VDOMs and indexes them into trees based on subject 
and public key hash (for CA certificates), or certificate name (for local certificates). Certificates are linked together based 
on the issuer, and certificate chains are built by traversing these links. This reduces the need to keep multiple copies of 
certificates that could exist in multiple chains.

To configure the IKE local ID:

config vpn certificate local


edit <name>
set ike-localid <string>
set ike-localid-type {asnldn | fqdn}
next
end

IPsec VPN with external DHCP service

You can use an external DHCP server to assign IP addresses to your IPsec VPN clients. This is a common scenario 
found in enterprises where all DHCP leases need to be managed centrally.
In this example, the DHCP server assigns IP addresses in the range of 172.16.6.100 to 172.16.6.120. The server is 
attached to internal2 on the FortiGate and has an IP address of 192.168.3.70. 

FortiOS 6.4.6 Administration Guide 1398


Fortinet Technologies Inc.
VPN

To configure a DHCP server to assign IP addresses to IPsec VPN clients:

 1. Create a user group for remote users:
 a. Go to User & Authentication > User Definition and click Create New.
 b. For User Type, select Local User. 

 c. Complete the wizard, and click Submit. 
 d. Go to User & Authentication > User Groups  and click Create New..
 e. Create a Firewall user group for your remote users. 
 f. For Members, add the user you just created.
 g. Click OK.

 2. Add a firewall address for the local network and IPsec VPN client range:
 a. Go to Policy & Objects > Addresses.
 b. Create a new Subnet address for the LAN, including the IP mask and local interface (internal2).

FortiOS 6.4.6 Administration Guide 1399


Fortinet Technologies Inc.
VPN

 c. Click OK.

 d. Create a new IP Range address for the IPsec VPN client range (172.16.6.100–172.16.6.120).


 e. Click OK.

 3. Configure the IPsec VPN using a VPN tunnel in the CLI:
config vpn ipsec phase1-interface
edit "dhcp_vpn"
set type dynamic
set interface "wan1"
set mode aggressive
set peertype any
set net-device disable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set dpd on-idle
set dhgrp 5
set xauthtype auto
set authusrgrp "ipsecvpn"
set psksecret **********
set dpd-retryinterval 60
next
end

config vpn ipsec phase2-interface


edit "toclient"
set phase1name "dhcp_vpn"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set dhgrp 5
set dhcp-ipsec enable
next
end

FortiOS 6.4.6 Administration Guide 1400


Fortinet Technologies Inc.
VPN

 4. Configure the IPsec VPN interface:
 a. Go to Network > Interfaces and edit the newly created IPsec VPN interface.
 b. Enable the DHCP Server.
 c. Expand Advanced and change the Mode to Relay. 
 d. Enter the external DHCP server IP address (192.168.3.70).
 e. Change the Type to IPsec.
 f. Click OK.

 5. Create a security policy for access to the  local network:
 a. Go to Policy & Objects > Firewall Policy and click Create New.
 b. Configure the following parameters:
 i. Set the Incoming Interface to the tunnel interface created in step 3 (dhcp_vpn).
 ii. Set the Outgoing Interface (internal2).
 iii. Set the Source to the IPsec VPN client range defined in step 2 (ipsecvpn_range).
 iv. Set the Destination to the subnet address defined in step 2 (Local LAN).
 v. Set the Service to ALL.

FortiOS 6.4.6 Administration Guide 1401


Fortinet Technologies Inc.
VPN

 c. Click OK.

 6. Configure FortiClient:
 a. In FortiClient, go to REMOTE ACCESS > Add a new connection. 

 b. Configure the following parameters:
 i. Set the VPN type to IPsec VPN.
 ii. Enter a connection name.
 iii. Set the Remote Gateway to the FortiGate external IP address.
 iv. Set the Authentication Method to Pre-shared key and enter the key below.
 v. Expand the  Advanced Settings > VPN Settings and for Options, select DHCP over IPsec.

FortiOS 6.4.6 Administration Guide 1402


Fortinet Technologies Inc.
VPN

 vi. Click Save. 

 c. Select the new connection, and enter the user name and password.
 d. Click Connect. 

Once the connection is established, the external DHCP server assigns the user an IP address and FortiClient 
displays the connection status, including the IP address, connection duration, and bytes sent and received.

Verification

 1. In FortiOS, go to Monitor > IPsec Monitor and verify that the tunnel Status is Up. 


 2. Go to Log & Report > Forward Traffic and verify the Sent / Received column displays the traffic flow through the 
tunnel.

FortiOS 6.4.6 Administration Guide 1403


Fortinet Technologies Inc.
VPN

L2TP over IPsec

This is an example of L2TP over IPsec.
This example uses a locally defined user for authentication, a Windows PC or Android tablet as the client, and 
net-device is set to enable in the phase1-interface settings. If net-device is set to disable, only one device 
can establish an L2TP over IPsec tunnel behind the same NAT device.

To configure L2TP over an IPsec tunnel using the GUI:

 1. Go to VPN > IPsec Wizard.

 2. Enter a VPN Name. In this example, L2tpoIPsec.
 3. Configure the following settings for VPN Setup:
 a. For Template Type, select Remote Access.
 b. For Remote Device Type, select Native and Windows Native.
 c. Click Next.
 4. Configure the following settings for Authentication:
 a. For Incoming Interface, select port9.
 b. For Authentication Method, select Pre-shared Key.
 c. In the Pre-shared Key field, enter your-psk as the key.

FortiOS 6.4.6 Administration Guide 1404


Fortinet Technologies Inc.
VPN

 d. For User Group, select L2tpusergroup


 e. Click Next.
 5. Configure  the following settings for Policy & Routing:
 a. From the Local Interface dropdown menu, select port10.
 b. Configure the Local Address as 172.16.101.0.
 c. Configure the Client Address Range as 10.10.10.1-10.10.10.100.
 d. Leave the Subnet Mask at its default value.
 e. Click Create.

To configure L2TP over an IPsec tunnel using the CLI:

 1. Configure the WAN interface and static route on HQ.
config system interface
edit "port9"
set alias "WAN"
set ip 22.1.1.1 255.255.255.0
next
edit "port10"
set alias "Internal"
set ip 172.16.101.1 255.255.255.0
next
end
config router static
edit 1
set gateway 22.1.1.2
set device "port9"
next
end

 2. Configure IPsec phase1-interface and phase2-interface on HQ.
config vpn ipsec phase1-interface
edit "L2tpoIPsec"
set type dynamic
set interface "port9"
set peertype any
set proposal aes256-md5 3des-sha1 aes192-sha1
set dpd on-idle
set dhgrp 2
set net-device enable
set psksecret sample
set dpd-retryinterval 60
next
end
config vpn ipsec phase2-interface
edit "L2tpoIPsec"
set phase1name "L2tpoIPsec"
set proposal aes256-md5 3des-sha1 aes192-sha1
set pfs disable
set encapsulation transport-mode
set l2tp enable
next
end

FortiOS 6.4.6 Administration Guide 1405


Fortinet Technologies Inc.
VPN

 3. Configure a user and user group on HQ.
config user local
edit "usera"
set type password
set passwd usera
next
end
config user group
edit "L2tpusergroup"
set member "usera"
next
end

 4. Configure L2TP on HQ.
config vpn l2tp
set status enable
set eip 10.10.10.100
set sip 10.10.10.1
set usrgrp "L2tpusergroup"
end

 5. Configure a firewall address that is applied in L2TP settings to assign IP addresses to clients once the L2TP tunnel 
is established.
config firewall address
edit "L2TPclients"
set type iprange
set start-ip 10.10.10.1
set end-ip 10.10.10.100
next
end

 6. Configure a firewall policy.
config firewall policy
edit 1
set name "Bridge_IPsec_port9_for_l2tp negotiation"
set srcintf "L2tpoIPsec"
set dstintf "port9"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "L2TP"
next
edit 2
set srcintf "L2tpoIPsec"
set dstintf "port10"
set srcaddr "L2TPclients"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

FortiOS 6.4.6 Administration Guide 1406


Fortinet Technologies Inc.
VPN

To view the VPN tunnel list on HQ:

# diagnose vpn tunnel list

list all ipsec tunnel in vd 0


----
name=L2tpoIPsec_0 ver=1 serial=8 22.1.1.1:0->10.1.100.15:0
bound_if=4 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/216 options[00d8]=npu
create_dev no-sysctl rgwy-chg
parent=L2tpoIPsec index=0
proxyid_num=1 child_num=0 refcnt=13 ilast=0 olast=0 ad=/0
stat: rxp=470 txp=267 rxb=57192 txb=12679
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=L2tpoIPsec proto=17 sa=1 ref=3 serial=1 transport-mode add-route
src: 17:22.1.1.1-22.1.1.1:1701
dst: 17:10.1.100.15-10.1.100.15:0
SA: ref=3 options=1a6 type=00 soft=0 mtu=1470 expire=2339/0B replaywin=2048
seqno=10c esn=0 replaywin_lastseq=000001d6 itn=0
life: type=01 bytes=0/0 timeout=3585/3600
dec: spi=ca646443 esp=3des key=24 af62a0fffe85d3d534b5bfba29307aafc8bfda5c3f4650dc
ah=sha1 key=20 89b4b67688bed9be49fb86449bb83f8c8d8d7432
enc: spi=700d28a0 esp=3des key=24 5f68906eca8d37d853814188b9e29ac4913420a9c87362c9
ah=sha1 key=20 d37f901ffd0e6ee1e4fdccebc7fdcc7ad44f0a0a
dec:pkts/bytes=470/31698, enc:pkts/bytes=267/21744
npu_flag=00 npu_rgwy=10.1.100.15 npu_lgwy=22.1.1.1 npu_selid=6 dec_npuid=0 enc_npuid=0
----
name=L2tpoIPsec_1 ver=1 serial=a 22.1.1.1:4500->22.1.1.2:64916
bound_if=4 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/472 options[01d8]=npu
create_dev no-sysctl rgwy-chg rport-chg
parent=L2tpoIPsec index=1
proxyid_num=1 child_num=0 refcnt=17 ilast=2 olast=2 ad=/0
stat: rxp=5 txp=4 rxb=592 txb=249
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=0
natt: mode=keepalive draft=32 interval=10 remote_port=64916
proxyid=L2tpoIPsec proto=17 sa=1 ref=3 serial=1 transport-mode add-route
src: 17:22.1.1.1-22.1.1.1:1701
dst: 17:22.1.1.2-22.1.1.2:0
SA: ref=3 options=1a6 type=00 soft=0 mtu=1454 expire=28786/0B replaywin=2048
seqno=5 esn=0 replaywin_lastseq=00000005 itn=0
life: type=01 bytes=0/0 timeout=28790/28800
dec: spi=ca646446 esp=aes key=32
ea60dfbad709b3c63917c3b7299520ff7606756ca15d2eb7cbff349b6562172e
ah=md5 key=16 2f2acfff0b556935d0aab8fc5725c8ec
enc: spi=0b514df2 esp=aes key=32
a8a92c2ed0e1fd7b6e405d8a6b9eb3be5eff573d80be3f830ce694917d634196
ah=md5 key=16 e426c33a7fe9041bdc5ce802760e8a3d
dec:pkts/bytes=5/245, enc:pkts/bytes=4/464
npu_flag=00 npu_rgwy=22.1.1.2 npu_lgwy=22.1.1.1 npu_selid=8 dec_npuid=0 enc_npuid=0

To view the L2TP VPN status:

# diagnose debug enable


# diagnose vpn l2tp status
----
----

FortiOS 6.4.6 Administration Guide 1407


Fortinet Technologies Inc.
VPN

HQ # Num of tunnels: 2
----
Tunnel ID = 1 (local id), 42 (remote id) to 10.1.100.15:1701
control_seq_num = 2, control_rec_seq_num = 4,
last recv pkt = 2
Call ID = 1 (local id), 1 (remote id), serno = 0, dev=ppp1,
assigned ip = 10.10.10.2
data_seq_num = 0,
tx = 152 bytes (2), rx= 21179 bytes (205)
Tunnel ID = 3 (local id), 34183 (remote id) to 22.1.1.2:58825
control_seq_num = 2, control_rec_seq_num = 4,
last recv pkt = 2
Call ID = 3 (local id), 18820 (remote id), serno = 2032472593, dev=ppp2,
assigned ip = 10.10.10.3
data_seq_num = 0,
tx = 152 bytes (2), rx= 0 bytes (0)
----
--VD 0: Startip = 10.10.10.1, Endip = 10.10.10.100
enforece-ipsec = false
----

Tunneled Internet browsing

This is a sample configuration of tunneled internet browsing using a dialup VPN. To centralize network management and 
control, all branch office traffic is tunneled to HQ, including Internet browsing.

To configure a dialup VPN to tunnel Internet browsing using the GUI:

 1. Configure the dialup VPN server FortiGate at HQ:
 a.   Go to VPN > IPsec Wizard and configure the following settings for VPN Setup:
 i. Enter a VPN name, in this example, HQ.
 ii. For Template Type, select Site to Site.
 iii. For Remote Device Type, select FortiGate.
 iv. For NAT Configuration, select The remote site is behind NAT.
 v. Click Next.

FortiOS 6.4.6 Administration Guide 1408


Fortinet Technologies Inc.
VPN

 b. Configure the following settings for Authentication:
 i. For Incoming Interface, select port9.
 ii. For Authentication Method, select Pre-shared Key.
 iii. In the Pre-shared Key field, enter sample as the key.
 iv. Click Next.
 c. Configure  the following settings for Policy & Routing:
 i. From the Local Interface dropdown menu, select port10.
 ii. Configure the Local Subnets as 172.16.101.0.
 iii. Configure the Remote Subnets as 0.0.0.0/0.
 iv. For Internet Access, select Share Local.
 v. For Shared WAN, select port9.
 vi. Click Create.
 2. Configure the dialup VPN client FortiGate at a branch:
 a.   Go to VPN > IPsec Wizard and configure the following settings for VPN Setup:
 i. Enter a VPN name, in this example, Branch1 or Branch2.
 ii. For Template Type, select Site to Site.
 iii. For Remote Device Type, select FortiGate.
 iv. For NAT Configuration, select The remote site is behind NAT.
 v. Click Next.
 b. Configure the following settings for Authentication:
 i. For IP Address, select Remote Device and enter 22.1.1.1.
 ii. For Outgoing Interface, select wan1.
 iii. For Authentication Method, select Pre-shared Key.
 iv. In the Pre-shared Key field, enter sample as the key.
 v. Click Next.
 c. Configure  the following settings for Policy & Routing:
 i. From the Local Interface dropdown menu, select internal.
 ii. Configure the Local Subnets as 10.1.100.0/192.1684.0.
 iii. Configure the Remote Subnets as 0.0.0.0/0.
 iv. For Internet Access, select Use Remote.
 v. Configure the Local Gateway to 15.1.1.1/13.1.1.1.
 vi. Click Create.

To configure a dialup VPN to tunnel Internet browsing using the CLI:

 1. Configure the WAN interface and static route on the FortiGate at HQ.
config system interface
edit "port9"
set alias "WAN"
set ip 22.1.1.1 255.255.255.0
next
edit "port10"
set alias "Internal"
set ip 172.16.101.1 255.255.255.0
next
end
config router static

FortiOS 6.4.6 Administration Guide 1409


Fortinet Technologies Inc.
VPN

edit 1
set gateway 22.1.1.2
set device "port9"
next
end

 2. Configure IPsec phase1-interface and phase2-interface configuration at HQ.
config vpn ipsec phase1-interface
edit "HQ"
set type dynamic
set interface "port9"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set dpd on-idle
set psksecret sample
set dpd-retryinterval 60
next
end
config vpn ipsec phase2-interface
edit "HQ"
set phase1name "HQ"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
next
end

 3. Configure the firewall policy at HQ.
config firewall policy
edit 1
set srcintf "HQ"
set dstintf "port9" "port10"
set srcaddr "10.1.100.0" "192.168.4.0"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

 4. Configure the WAN interface and static route on the FortiGate at the branches.
 a. Branch1.
config system interface
edit "wan1"
set ip 15.1.1.2 255.255.255.0
next
edit "internal"
set ip 10.1.100.1 255.255.255.0
next
end
config router static
edit 1
set gateway 15.1.1.1
set device "wan1"

FortiOS 6.4.6 Administration Guide 1410


Fortinet Technologies Inc.
VPN

next
end

 b. Branch2.
config system interface
edit "wan1"
set ip 13.1.1.2 255.255.255.0
next
edit "internal"
set ip 192.168.4.1 255.255.255.0
next
end
config router static
edit 1
set gateway 13.1.1.1
set device "wan1"
next
end

 5. Configure IPsec phase1-interface and phase2-interface configuration at the branches.   
 a. Branch1.
config vpn ipsec phase1-interface
edit "branch1"
set interface "wan1"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set dpd on-idle
set remote-gw 22.1.1.1
set psksecret sample
set dpd-retryinterval 5
next
end
config vpn ipsec phase2-interface
edit "branch1"
set phase1name "branch1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
set src-subnet 10.1.100.0 255.255.255.0
next
end

 b. Branch2.
config vpn ipsec phase1-interface
edit "branch2"
set interface "wan1"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set dpd on-idle
set remote-gw 22.1.1.1
set psksecret sample
set dpd-retryinterval 5
next

FortiOS 6.4.6 Administration Guide 1411


Fortinet Technologies Inc.
VPN

end
config vpn ipsec phase2-interface
edit "branch2"
set phase1name "branch2"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
set src-subnet 192.168.4.0 255.255.255.0
next
end

 6. Configure the firewall policy at the branches.
 a. Branch1.
config firewall policy
edit 1
set name "outbound"
set srcintf "internal"
set dstintf "branch1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "inbound"
set srcintf "branch1"
set dstintf "internal"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
end

 b. Branch2.
config firewall policy
edit 1
set name "outbound"
set srcintf "internal"
set dstintf "branch2"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "inbound"
set srcintf "branch2"
set dstintf "internal"
set srcaddr "all"
set dstaddr "all"
set action accept

FortiOS 6.4.6 Administration Guide 1412


Fortinet Technologies Inc.
VPN

set schedule "always"


set service "ALL"
next
end

 7. Configure the static routes at the branches.
 a. Branch1.
config router static
edit 2
set dst 22.1.1.1/32
set gateway 15.1.1.1
set device "wan1"
set distance 1
next
edit 3
set device "branch1"
set distance 5
next
end

 b. Branch2.
config router static
edit 2
set dst 22.1.1.1/32
set gateway 13.1.1.1
set device "wan1"
set distance 1
next
edit 3
set device "branch2"
set distance 5
next
end

 8. Optionally, view the VPN tunnel list on a branch with the diagnose vpn tunnel list command:


list all ipsec tunnel in vd 0
----
name=branch1 ver=1 serial=2 15.1.1.2:0->22.1.1.1:0
bound_if=7 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu create_
dev frag-rfc accept_traffic=1

proxyid_num=1 child_num=1 refcnt=19 ilast=0 olast=0 ad=r/2


stat: rxp=1 txp=1661 rxb=65470 txb=167314
dpd: mode=on-idle on=1 idle=5000ms retry=3 count=0 seqno=2986
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=branch1 proto=0 sa=1 ref=5 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=1438 expire=697/0B replaywin=1024
seqno=13a esn=0 replaywin_lastseq=00000000 itn=0
life: type=01 bytes=0/0 timeout=2368/2400
dec: spi=c53a8f7e esp=aes key=16 ecee0cd48664d903d3d6822b1f902fd2
ah=sha1 key=20 2440a189126c222093ca9acd8b37127285f1f8a7
enc: spi=6e3636fe esp=aes key=16 fdaa20bcc96f74ae9885e824d3efa29d
ah=sha1 key=20 70c0891c769ad8007ea1f31a39978ffbc73242d0

FortiOS 6.4.6 Administration Guide 1413


Fortinet Technologies Inc.
VPN

dec:pkts/bytes=0/16348, enc:pkts/bytes=313/55962
npu_flag=03 npu_rgwy=22.1.1.1 npu_lgwy=15.1.1.2 npu_selid=1 dec_npuid=1 enc_npuid=1

 9. Optionally, view static routing table on a branch with the get router info routing-table static 


command:
Routing table for VRF=0
S* 0.0.0.0/0 [5/0] is directly connected, branch1
S* 22.1.1.1/32 [1/0] via 15.1.1.1, wan1

Aggregate and redundant VPN

The following topics provide instructions on configuring aggregate and redundant VPNs:
 l Manual redundant VPN configuration on page 1414
 l OSPF with IPsec VPN for network redundancy on page 1418
 l IPsec VPN in an HA environment on page 1425
 l IPsec aggregate for redundancy and traffic load-balancing on page 1431
 l Per packet distribution and tunnel aggregation on page 1442
 l Redundant hub and spoke VPN on page 1446
 l Weighted round robin for IPsec aggregate tunnels on page 1452

Manual redundant VPN configuration

A FortiGate with two interfaces connected to the internet can be configured to support redundant VPNs to the same 
remote peer. Four distinct paths are possible for VPN traffic from end to end. If the primary connection fails, the FortiGate 
can establish a VPN using the other connection. 

FortiOS 6.4.6 Administration Guide 1414


Fortinet Technologies Inc.
VPN

Topology

The redundant configuration in this example uses route-based VPNs. The FortiGates must operate in NAT mode and 
use auto-keying. 
This example assumes the redundant VPNs are essentially equal in cost and capability. When the original VPN returns 
to service, traffic continues to use the replacement VPN until the replacement VPN fails. If the redundant VPN uses more 
expensive facilities, only use it as a backup while the main VPN is down.
A redundant configuration for each VPN peer includes:
 l One phase 1 configuration  for each path between the two peers with dead peer detection enabled
 l One phase 2 definition for each phase 1 configuration
 l One static route for each IPsec interface with different distance values to prioritize the routes
 l Two firewall policies per IPsec interface, one for each direction of traffic

To configure the phase 1 and phase 2 VPN settings:

 1. Go to VPN > IPsec Wizard and select the Custom template.


 2. Enter the tunnel name and click Next.

FortiOS 6.4.6 Administration Guide 1415


Fortinet Technologies Inc.
VPN

 3. Enter the following phase 1 settings for path 1:

Remote Gateway Static IP Address

IP Address Enter the IP address of the primary interface of the remote peer.

Interface Select the primary public interface of this peer.

Dead Peer Detection On-Demand

 4. Configure the remaining phase 1 and phase 2 settings as needed.
 5. Click OK.
 6. Repeat these steps for the remaining paths.
 a. Path 2:

Remote Gateway Static IP Address

IP Address Enter the IP address of the secondary interface of the remote peer.

Interface Select the primary public interface of this peer.

Dead Peer Detection On-Demand

 b. Path 3:

Remote Gateway Static IP Address

IP Address Enter the IP address of the primary interface of the remote peer.

Interface Select the secondary  public interface of this peer.

Dead Peer Detection On-Demand

 c. Path 4:

Remote Gateway Static IP Address

IP Address Enter the IP address of the secondary interface of the remote peer.

Interface Select the secondary public interface of this peer.

Dead Peer Detection On-Demand

To configure the static routes:

 1. Go to Network > Static Routes and click Create New.


 2. In the Destination field, enter the subnet of the private network.
 3. For Interface, select one of the IPsec interfaces on the local peer. 
 4. Enter a value for Administrative Distance.
 5. Click OK.
 6. Repeat these steps for the three remaining paths, and enter different values for Administrative Distance to prioritize 
the paths.

FortiOS 6.4.6 Administration Guide 1416


Fortinet Technologies Inc.
VPN

To configure the firewall policies:

 1. Create the policies for the local primary interface:
 a. Go to Policy & Objects > Firewall Policy and click Create New.
 b. Enter the following:

Name Enter a name for the  policy.

Incoming Interface Select the local interface to the internal (private) network.

Outgoing Interface Select one of the virtual IPsec interfaces.

Source All

Destination All

Schedule Always

Service All

Action ACCEPT

 c. Click OK.
 d. Click Create New and configure the policy for the other direction of traffic:

Name Enter a name for the  policy.

Incoming Interface Select one of the virtual IPsec interfaces.

Outgoing Interface Select the local interface to the internal (private) network.

Source All

Destination All

Schedule Always

Service All

Action ACCEPT

 e. In the policy list, drag the VPN policies above any other policies with similar source and destination addresses.
 2. Repeat these steps to create the policies for the three remaining paths.

Creating a backup IPsec interface

A route-based VPN can be configured to act as a backup IPsec interface when the main VPN is out of service. This can 
only be configured in the CLI.
The backup feature works on interfaces with static addresses that have dead peer detection enabled. The monitor 
option creates a backup VPN for the specified phase 1 configuration.

To create a backup IPsec interface:

config vpn ipsec phase1-interface


edit main_vpn
set dpd on-demand
set interface port1

FortiOS 6.4.6 Administration Guide 1417


Fortinet Technologies Inc.
VPN

set nattraversal enable


set psksecret ********
set remote-gw 192.168.10.8
set type static
next
edit backup_vpn
set dpd on-demand
set interface port2
set monitor main_vpn
set nattraversal enable
set psksecret ********
set remote-gw 192.168.10.8
set type static
next
end

OSPF with IPsec VPN for network redundancy

This is a sample configuration of using OSPF with IPsec VPN to set up network redundancy. Route selection is based on 
OSPF cost calculation. You can configure ECMP or primary/secondary routes by adjusting OSPF path cost.

Because the GUI can only complete part of the configuration, we recommend using the CLI.

To configure OSPF with IPsec VPN to achieve network redundancy using the CLI:

 1. Configure the WAN interface and static route.
Each FortiGate has two WAN interfaces connected to different ISPs. The ISP1 link is for the primary FortiGate and 
the IPS2 link is for the secondary FortiGate.
 a. Configure HQ1.   
config system interface
edit "port1"
set alias to_ISP1
set ip 172.16.200.1 255.255.255.0
next
edit "port2"
set alias to_ISP2
set ip 172.17.200.1 255.255.255.0
next
end
config router static
edit 1

FortiOS 6.4.6 Administration Guide 1418


Fortinet Technologies Inc.
VPN

set gateway 172.16.200.3


set device "port1"
next
edit 2
set gateway 172.17.200.3
set device "port2"
set priority 100
next
end
 b. Configure HQ2.   
config system interface
edit "port25"
set alias to_ISP1
set ip 172.16.202.1 255.255.255.0
next
edit "port26"
set alias to_ISP2
set ip 172.17.202.1 255.255.255.0
next
end
config router static
edit 1
set gateway 172.16.202.2
set device "port25"
next
edit 2
set gateway 172.17.202.2
set device "port26"
set priority 100
next
end
 2. Configure the internal (protected subnet) interface.
 a. Configure HQ1.   
config system interface
edit "dmz"
set ip 10.1.100.1 255.255.255.0
next
end
 b. Configure HQ2.   
config system interface
edit "port9"
set ip 172.16.101.1 255.255.255.0
next
end
 3. Configure IPsec phase1-interface and phase-2 interface. On each FortiGate, configure two IPsec tunnels: a primary 
and a secondary.
 a. Configure HQ1.   
config vpn ipsec phase1-interface
edit "pri_HQ2"
set interface "port1"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.202.1
set psksecret sample1

FortiOS 6.4.6 Administration Guide 1419


Fortinet Technologies Inc.
VPN

next
edit "sec_HQ2"
set interface "port2"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.17.202.1
set psksecret sample2
next
end
config vpn ipsec phase2-interface
edit "pri_HQ2"
set phase1name "pri_HQ2"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
next
edit "sec_HQ2"
set phase1name "sec_HQ2"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
next
end
 b. Configure HQ2.   
config vpn ipsec phase1-interface
edit "pri_HQ1"
set interface "port25"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.200.1
set psksecret sample1
next
edit "sec_HQ1"
set interface "port26"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.17.200.1
set psksecret sample2
next
end
config vpn ipsec phase2-interface
edit "pri_HQ1"
set phase1name "pri_HQ1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
next
edit "sec_HQ1"
set phase1name "sec_HQ1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
next
end

FortiOS 6.4.6 Administration Guide 1420


Fortinet Technologies Inc.
VPN

 4. Configure an inbound and outbound firewall policy for each IPsec tunnel.
 a. Configure HQ1.   
config firewall policy
edit 1
set name "pri_inbound"
set srcintf "pri_HQ2"
set dstintf "dmz"
set srcaddr "172.16.101.0"
set dstaddr "10.1.100.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "pri_outbound"
set srcintf "dmz"
set dstintf "pri_HQ2"
set srcaddr "10.1.100.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 3
set name "sec_inbound"
set srcintf "sec_HQ2"
set dstintf "dmz"
set srcaddr "172.16.101.0"
set dstaddr "10.1.100.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 4
set name "sec_outbound"
set srcintf "dmz"
set dstintf "sec_HQ2"
set srcaddr "10.1.100.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
end
 b. Configure HQ2.   
config firewall policy
edit 1
set name "pri_inbound"
set srcintf "pri_HQ1"
set dstintf "port9"
set srcaddr "10.1.100.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next

FortiOS 6.4.6 Administration Guide 1421


Fortinet Technologies Inc.
VPN

edit 2
set name "pri_outbound"
set srcintf "port9"
set dstintf "pri_HQ1"
set srcaddr "10.1.100.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 3
set name "sec_inbound"
set srcintf "sec_HQ1"
set dstintf "port9"
set srcaddr "10.1.100.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 4
set name "sec_outbound"
set srcintf "port9"
set dstintf "sec_HQ1"
set srcaddr "172.16.101.0"
set dstaddr "10.1.100.0"
set action accept
set schedule "always"
set service "ALL"
next
end
 5. Assign an IP address to the IPsec tunnel interface.   
 a. Configure HQ1.   
config system interface
edit "pri_HQ2"
set ip 10.10.10.1 255.255.255.255
set remote-ip 10.10.10.2 255.255.255.255
next
edit "sec_HQ2"
set ip 10.10.11.1 255.255.255.255
set remote-ip 10.10.11.2 255.255.255.255
next
end
 b. Configure HQ2.   
config system interface
edit "pri_HQ1"
set ip 10.10.10.2 255.255.255.255
set remote-ip 10.10.10.1 255.255.255.255
next
edit "sec_HQ1"
set ip 10.10.11.2 255.255.255.255
set remote-ip 10.10.11.1 255.255.255.255
next
end

FortiOS 6.4.6 Administration Guide 1422


Fortinet Technologies Inc.
VPN

 6. Configure OSPF.
 a. Configure HQ1.   
config router ospf
set router-id 1.1.1.1
config area
edit 0.0.0.0
next
end
config ospf-interface
edit "pri_HQ2"
set interface "pri_HQ2"
set cost 10
set network-type point-to-point
next
edit "sec_HQ2"
set interface "sec_HQ2"
set cost 20
set network-type point-to-point
next
end
config network
edit 1
set prefix 10.10.10.0 255.255.255.0
next
edit 2
set prefix 10.10.11.0 255.255.255.0
next
edit 3
set prefix 10.1.100.0 255.255.255.0
next
end
end
 b. Configure HQ2.
config router ospf
set router-id 2.2.2.2
config area
edit 0.0.0.0
next
end
config ospf-interface
edit "pri_HQ1"
set interface "pri_HQ1"
set cost 10
set network-type point-to-point
next
edit "sec_HQ1"
set interface "sec_HQ1"
set cost 20
set network-type point-to-point
next
end
config network
edit 1
set prefix 10.10.10.0 255.255.255.0
next
edit 2

FortiOS 6.4.6 Administration Guide 1423


Fortinet Technologies Inc.
VPN

set prefix 10.10.11.0 255.255.255.0


next
edit 3
set prefix 172.16.101.0 255.255.255.0
next
end
end

To check VPN and OSPF states using diagnose and get commands:

 1. Run the HQ1 # diagnose vpn ike gateway list command. The system should return the following:   


vd: root/0
name: pri_HQ2
version: 1
interface: port1 11
addr: 172.16.200.1:500 -> 172.16.202.1:500
virtual-interface-addr: 10.10.10.1 -> 10.10.10.2
created: 1024s ago
IKE SA: created 1/1 established 1/1 time 0/0/0 ms
IPsec SA: created 1/3 established 1/2 time 0/5/10 ms
id/spi: 45 d184777257b4e692/e2432f834aaf5658 direction: responder status: established
1024-1024s ago = 0ms proposal: aes128-sha256 key: 9ed41fb06c983344-
189538046f5ad204 lifetime/rekey: 86400/85105 DPD sent/recv: 00000003/00000000
vd: root/0
name: sec_HQ2
version: 1
interface: port2 12
addr: 172.17.200.1:500 -> 172.17.202.1:500
virtual-interface-addr: 10.10.11.1 -> 10.10.11.2
created: 346s ago
IKE SA: created 1/1 established 1/1 time 0/0/0 ms
IPsec SA: created 1/1 established 1/1 time 0/10/15 ms
id/spi: 48 d909ed68636b1ea5/163015e73ea050b8 direction: initiator status: established
0-0s ago = 0ms proposal: aes128-sha256 key: b9e93c156bdf4562-29db9fbafa256152
lifetime/rekey: 86400/86099 DPD sent/recv: 00000000/00000000
 2. Run the HQ1 # diagnose vpn tunnel list command. The system should return the following:   
list all ipsec tunnel in vd 0
name=pri_HQ2 ver=1 serial=1 172.16.200.1:0->172.16.202.1:0
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1
proxyid_num=1 child_num=0 refcnt=14 ilast=2 olast=2 ad=/0
stat: rxp=102 txp=105 rxb=14064 txb=7816
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=3
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=pri_HQ2 proto=0 sa=1 ref=2 serial=1 auto-negotiate
src: 0:0.0.0.0/0.0.0.0:0 dst: 0:0.0.0.0/0.0.0.0:0 SA: ref=3 options=18227 type=00
soft=0 mtu=1438 expire=42254/0B replaywin=2048
seqno=6a esn=0 replaywin_lastseq=00000067 itn=0
life: type=01 bytes=0/0 timeout=42932/43200 dec: spi=1071b4ee esp=aes key=16
032036b24a4ec88da63896b86f3a01db
ah=sha1 key=20 3962933e24c8da21c65c13bc2c6345d643199cdf
enc: spi=ec89b7e3 esp=aes key=16 92b1d85ef91faf695fca05843dd91626
ah=sha1 key=20 2de99d1376506313d9f32df6873902cf6c08e454
dec:pkts/bytes=102/7164, enc:pkts/bytes=105/14936
name=sec_HQ2 ver=1 serial=2 172.17.200.1:0->172.17.202.1:0
bound_if=12 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

FortiOS 6.4.6 Administration Guide 1424


Fortinet Technologies Inc.
VPN

proxyid_num=1 child_num=0 refcnt=14 ilast=3 olast=0 ad=/0


stat: rxp=110 txp=114 rxb=15152 txb=8428
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=3
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=sec_HQ2 proto=0 sa=1 ref=2 serial=1 auto-negotiate
src: 0:0.0.0.0/0.0.0.0:0 dst: 0:0.0.0.0/0.0.0.0:0 SA: ref=3 options=18227 type=00
soft=0 mtu=1438 expire=42927/0B replaywin=2048
seqno=2 esn=0 replaywin_lastseq=00000002 itn=0
life: type=01 bytes=0/0 timeout=42931/43200 dec: spi=1071b4ef esp=aes key=16
bcdcabdb7d1c7c695d1f2e0f5441700a
ah=sha1 key=20 e7a0034589f82eb1af41efd59d0b2565fef8d5da
enc: spi=ec89b7e4 esp=aes key=16 234240b69e61f6bdee2b4cdec0f33bea
ah=sha1 key=20 f9d4744a84d91e5ce05f5984737c2a691a3627e8
dec:pkts/bytes=1/68, enc:pkts/bytes=1/136
 3. Run the HQ1 # get router info ospf neighbor command. The system should return the following:   
OSPF process 0, VRF 0:
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 1. Full/ - 00:00:37 10.10.10.2 pri_HQ2
2.2.2.2 1. Full/ - 00:00:32 10.10.11.2 sec_HQ2
 4. Run the HQ1 # get router info routing-table ospf command. The system should return the following:   
Routing table for VRF=0
O 172.16.101.0/24 [110/20] via 10.10.10.2, pri_HQ2 , 00:03:21
In case the primary tunnel is down after route convergence.
 5. Run the HQ1 # get router info routing-table ospf command. The system should return the following:   
Routing table for VRF=0
O 172.16.101.0/24 [110/110] via 10.10.11.2, sec_HQ2 , 00:00:01

IPsec VPN in an HA environment

This is a sample configuration of site-to-site IPsec VPN in an HA environment.
For this example, set up HA as described in the HA topics. When setting up HA, enable the following options to ensure 
IPsec VPN traffic is not interrupted during an HA failover:
 l session-pickup under HA settings.
 l ha-sync-esp-seqno under IPsec phase1-interface settings.

You can configure IPsec VPN in an HA environment using the GUI or CLI.
In this example, the VPN name for HQ1 is "to_HQ2", and the VPN name for HQ2 is "to_HQ1".

FortiOS 6.4.6 Administration Guide 1425


Fortinet Technologies Inc.
VPN

To configure IPsec VPN in an HA environment in the GUI:

 1. Set up IPsec VPN on HQ1 (the HA cluster):
 a. Go to VPN > IPsec Wizard and configure the following settings for VPN Setup:
 i. Enter a VPN name.
 ii. For Template Type, select Site to Site.
 iii. For Remote Device Type, select FortiGate.
 iv. For NAT Configuration, set No NAT between sites.
 v. Click Next.
 b. Configure the following settings for Authentication:
 i. For Remote Device, select IP Address.
 ii. In the IP address field, enter 172.16.202.1.
 iii. For Outgoing Interface, select port1.
 iv. For Authentication Method, select Pre-shared Key.
 v. In the Pre-shared Key field, enter an example key.
 vi. Click Next.
 c. Configure the following settings for Policy & Routing:
 i. From the Local Interface dropdown menu, select the local interface.
 ii. Configure the Local Subnets as 10.1.100.0/24.
 iii. Configure the Remote Subnets as 172.16.101.0/24.
 iv. Click Create.
 2. Set up IPsec VPN on HQ2:
 a. Go to VPN > IPsec Wizard and configure the following settings for VPN Setup:
 i. Enter a VPN name.
 ii. For Template Type, select Site to Site.
 iii. For Remote Device Type, select FortiGate.
 iv. For NAT Configuration, set No NAT between sites.
 v. Click Next.
 b. Configure the following settings for Authentication:
 i. For Remote Device, select IP Address.
 ii. In the IP address field, enter 172.16.200.1.
 iii. For Outgoing Interface, select port13.
 iv. For Authentication Method, select Pre-shared Key.
 v. In the Pre-shared Key field, enter an example key.
 vi. Click Next.
 c. Configure the following settings for Policy & Routing:
 i. From the Local Interface dropdown menu, select the desired local interface. In this example, it is port9.
 ii. Configure the Local Subnets as 172.16.101.0.
 iii. Configure the Remote Subnets as 10.1.100.0
 iv. Click Create.

To configure IPsec VPN in an HA environment using the CLI:

 1. Configure HA. In this example, two FortiGates work in active-passive mode. The HA heartbeat interfaces are WAN1 
and WAN2:   
config system ha

FortiOS 6.4.6 Administration Guide 1426


Fortinet Technologies Inc.
VPN

set group-name "FGT-HA"


set mode a-p
set password sample
set hbdev "wan1" 50 "wan2" 50
set session-pickup enable
set priority 200
set override-wait-time 10
end
 2. Configure the WAN interface and default route. The WAN interface is the interface connected to the ISP. It can work 
in static mode (as shown in this example), DHCP, or PPPoE mode. The IPsec tunnel is established over the 
WAN interface.
 a. Configure HQ1:   
config system interface
edit "port1"
set vdom "root"
set ip 172.16.200.1 255.255.255.0
next
end
config router static
edit 1
set gateway 172.16.200.3
set device "port1"
next
end
 b. Configure HQ2:   
config system interface
edit "port25"
set vdom "root"
set ip 172.16.202.1 255.255.255.0
next
end
config router static
edit 1
set gateway 172.16.202.2
set device "port25"
next
end
 3. Configure the internal (protected subnet) interface. The internal interface connects to the corporate internal 
network. Traffic from this interface routes out the IPsec VPN tunnel.
 a. Configure HQ1:   
config system interface
edit "dmz"
set vdom "root"
set ip 10.1.100.1 255.255.255.0
next
end
 b. Configure HQ2:   
config system interface
edit "port9"
set vdom "root"
set ip 172.16.101.1 255.255.255.0
next
end
 4. Configure the IPsec phase1-interface. This example uses PSK as the authentication method. You can also use 
signature authentication.

FortiOS 6.4.6 Administration Guide 1427


Fortinet Technologies Inc.
VPN

 a. Configure HQ1:   
config vpn ipsec phase1-interface
edit "to_HQ2"
set interface "port1"
set peertype any
set net-device enable
set ha-sync-esp-seqno enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.202.1
set psksecret sample
next
end
 b. Configure HQ2:   
config vpn ipsec phase1-interface
edit "to_HQ1"
set interface "port25"
set peertype any
set net-device enable
set ha-sync-esp-seqno enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.200.1
set psksecret sample
next
 5. Configure the IPsec phase2-interface:
 a. Configure HQ1:   
config vpn ipsec phase2-interface
edit "to_HQ2"
set phase1name "to_HQ2"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
next
end
 b. Configure HQ2:   
config vpn ipsec phase2-interface
edit "to_HQ1"
set phase1name "to_HQ1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
next
end
 6. Configure static routes. Two static routes are added to reach the remote protected subnet. The blackhole route is 
important to ensure IPsec traffic does not match the default route when the IPsec tunnel is down.
 a. Configure HQ1:   
config router static
edit 2
set dst 172.16.101.0 255.255.255.0
set device "to_HQ2"
next
edit 3
set dst 172.16.101.0 255.255.255.0
set blackhole enable
set distance 254
next

FortiOS 6.4.6 Administration Guide 1428


Fortinet Technologies Inc.
VPN

end
 b. Configure HQ2:   
config router static
edit 2
set dst 10.1.100.0 255.255.255.0
set device "to_HQ1"
next
edit 3
set dst 10.1.100.0 255.255.255.0
set blackhole enable
set distance 254
next
end
 7. Configure two firewall policies to allow bi-directional IPsec traffic flow over the IPsec tunnel:
 a. Configure HQ1:   
config firewall policy
edit 1
set name "inbound"
set srcintf "to_HQ2"
set dstintf "dmz"
set srcaddr "172.16.101.0"
set dstaddr "10.1.100.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "outbound"
set srcintf "dmz"
set dstintf "to_HQ2"
set srcaddr "10.1.100.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
end
 b. Configure HQ2:   
config firewall policy
edit 1
set name "inbound"
set srcintf "to_HQ1"
set dstintf "port9"
set srcaddr "10.1.100.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "outbound"
set srcintf "port9"
set dstintf "to_HQ1"
set srcaddr "172.16.101.0"
set dstaddr "10.1.100.0"
set action accept

FortiOS 6.4.6 Administration Guide 1429


Fortinet Technologies Inc.
VPN

set schedule "always"


set service "ALL"
next
end
 8. Use the following diagnose commands to check IPsec phase1/phase2 interface status including the sequence 
number on the secondary FortiGate. The diagnose debug application ike -1 command is the key to 
troubleshoot why the IPsec tunnel failed to establish.
 a. Run the HQ1 # diagnose vpn ike gateway list command. The system should return the following:   
vd: root/0
name: to_HQ2
version: 1
interface: port1 11
addr: 172.16.200.1:500 -> 172.16.202.1:500
created: 5s ago
IKE SA: created 1/1 established 1/1 time 0/0/0 ms
IPsec SA: created 2/2 established 2/2 time 0/0/0 ms
id/spi: 12 6e8d0532e7fe8d84/3694ac323138a024 direction: responder status:
established 5-5s ago = 0ms proposal: aes128-sha256 key: b3efb46d0d385aff-
7bb9ee241362ee8d lifetime/rekey: 86400/86124 DPD sent/recv: 00000000/00000000
 b. Run the HQ1 # diagnose vpn tunnel list command. The system should return the following:   
list all ipsec tunnel in vd 0

name=to_HQ2 ver=1 serial=1 172.16.200.1:0->172.16.202.1:0


bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_
dev frag-rfc accept_traffic=1
proxyid_num=1 child_num=0 refcnt=11 ilast=7 olast=87 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=to_HQ2 proto=0 sa=1 ref=2 serial=1 auto-negotiate
src: 0:0.0.0.0/0.0.0.0:0 dst: 0:0.0.0.0/0.0.0.0:0 SA: ref=3 options=18227 type=00
soft=0 mtu=1438 expire=42927/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0
life: type=01 bytes=0/0 timeout=42930/43200 dec: spi=ef9ca700 esp=aes key=16
a2c6584bf654d4f956497b3436f1cfc7
ah=sha1 key=20 82c5e734bce81e6f18418328e2a11aeb7baa021b
enc: spi=791e898e esp=aes key=16 0dbb4588ba2665c6962491e85a4a8d5a
ah=sha1 key=20 2054b318d2568a8b12119120f20ecac97ab730b3
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
ESP seqno synced to primary FortiGate every five minutes, and big gap between primary and secondary to 
ensure that no packet is dropped after HA failover caused by tcp-replay. Check ESP sequence number synced 
on secondary FortiGate.
 c. Run the HQ1 # execute ha manage 0 admin command.
 d. Run the HQ1-Sec # diagnose vpn tunnel list command. The system should return the following:   
list all ipsec tunnel in vd 0
 
name=to_HQ2 ver=1 serial=1 172.16.200.1:0->172.16.202.1:0
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_
dev frag-rfc accept_traffic=1
proxyid_num=1 child_num=0 refcnt=11 ilast=13 olast=274 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=to_HQ2 proto=0 sa=1 ref=2 serial=1 auto-negotiate

FortiOS 6.4.6 Administration Guide 1430


Fortinet Technologies Inc.
VPN

src: 0:0.0.0.0/0.0.0.0:0 dst: 0:0.0.0.0/0.0.0.0:0 SA: ref=3 options=27 type=00


soft=0 mtu=1280 expire=42740/0B replaywin=2048
seqno=47868c01 esn=0 replaywin_lastseq=00000000 itn=0
life: type=01 bytes=0/0 timeout=42930/43200 dec: spi=ef9ca700 esp=aes key=16
a2c6584bf654d4f956497b3436f1cfc7
ah=sha1 key=20 82c5e734bce81e6f18418328e2a11aeb7baa021b
enc: spi=791e898e esp=aes key=16 0dbb4588ba2665c6962491e85a4a8d5a
ah=sha1 key=20 2054b318d2568a8b12119120f20ecac97ab730b3
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0

IPsec aggregate for redundancy and traffic load-balancing

This is a sample configuration of a multiple site-to-site IPsec VPN that uses an IPsec aggregate interface to set up 
redundancy and traffic load-balancing. The VPN tunnel interfaces must have net-device disabled in order to be 
members of the IPsec aggregate. 
Each FortiGate has two WAN interfaces connected to different ISPs. OSPF runs over the IPsec aggregate in this 
configuration.
The supported load balancing algorithms are: L3, L4, round-robin (default), weighted round-robin, and redundant. The 
first four options allow traffic to be load-balanced, while the last option (redundant) uses the first tunnel that is up for all 
traffic.
Dynamic routing can run on the aggregate interface, and it can be a member interface in SD-WAN (not shown in this 
configuration).

Configuring the HQ1 FortiGate in the GUI

There are five steps to configure the FortiGate:
 1. Create the IPsec tunnels.
 2. Create the IPsec aggregate.
 3. Configure the firewall policies.
 4. Configure the aggregate VPN interface IPs.
 5. Configure OSPF.

To create the IPsec tunnels:

 1. Go to VPN > IPsec Wizard and select the Custom template.


 2. For Name, enter pri_HQ2 and click Next.

FortiOS 6.4.6 Administration Guide 1431


Fortinet Technologies Inc.
VPN

 3. Enter the following:

Phase 1

IP Address 172.16.202.1

Interface port1

Device creation Disabled

Aggregate member Enabled

Authentication Method Pre-shared Key

Pre-shared Key Enter the secure key

IKE Mode Aggressive

Peer Options Accept Types Any peer ID

Phase 2

Auto-negotiate Enable

 4. Configure the other settings as needed.
 5. Click OK.
 6. Create another tunnel named sec_HQ2 with the following settings:

Phase 1

IP Address 172.17.202.1

Interface port2

Device creation Disabled

Aggregate member Enabled

Authentication Method Pre-shared Key

Pre-shared Key Enter the secure key

IKE Mode Aggressive

Peer Options Accept Types Any peer ID

Phase 2

Auto-negotiate Enable

To create the IPsec aggregate:

 1. Go to VPN > IPsec Tunnels and click Create New > IPsec Aggregate.


 2. For Name, enter agg_HQ2.
 3. Select a load balancing algorithm.
 4. From the Tunnel dropdown, select the tunnels that you created previously (pri_HQ2 and sec_HQ2). If required, 
enter weights for each tunnel.
 5. Click OK.

FortiOS 6.4.6 Administration Guide 1432


Fortinet Technologies Inc.
VPN

To configure the firewall policies:

 1. Go to Policy & Objects > Firewall Policy.


 2. Create an inbound traffic policy with the following settings:

Name inbound

Incoming Interface agg_HQ2

Outgoing Interface dmz

Source 172.16.101.0

Destination 10.1.100.0

Schedule always

Action ACCEPT

Service ALL

 3. Click OK.
 4. Create an outbound traffic policy with the following settings:

Name outbound

Incoming Interface dmz

Outgoing Interface agg_HQ2

Source 10.1.100.0

Destination 172.16.101.0

Schedule always

Action ACCEPT

Service ALL

To configure the aggregate VPN interface IPs:

 1. Go to Network > Interfaces and edit agg_HQ2.


 2. For IP, enter 10.10.10.1.
 3. For Remote IP/Netmask, enter 10.10.10.2 255.255.255.255.
 4. Click OK.

To configure OSPF:

 1. Go to Network > OSPF.


 2. For Router ID, enter 1.1.1.1.
 3. In the Areas table, click Create New.
 a. For Area ID, enter 0.0.0.0.
 b. Click OK.

FortiOS 6.4.6 Administration Guide 1433


Fortinet Technologies Inc.
VPN

 4. In the Networks table, click Create New.


 a. Set the Area to 0.0.0.0.
 b. For IP/Netmask, enter 10.1.100.0/24.
 c. Click OK.
 d. Click Create New.
 e. For IP/Netmask, enter 10.10.10.0/24.
 f. Click OK.
 5. Click Apply.

Configuring the HQ2 FortiGate in the GUI

There are five steps to configure the FortiGate:
 1. Create the IPsec tunnels.
 2. Create the IPsec aggregate.
 3. Configure the firewall policies.
 4. Configure the aggregate VPN interface IPs.
 5. Configure OSPF.

To create the IPsec tunnels:

 1. Go to VPN > IPsec Wizard and select the Custom template.


 2. For Name, enter pri_HQ1 and click Next.
 3. Enter the following:   

Phase 1

IP Address 172.16.200.1

Interface port25

Device creation Disabled

Aggregate member Enabled

Authentication Method Pre-shared Key

Pre-shared Key Enter the secure key

IKE Mode Aggressive

Peer Options Accept Types Any peer ID

Phase 2

Auto-negotiate Enable

 4. Configure the other settings as needed.
 5. Click OK.
 6. Create another tunnel named sec_HQ1 with the following settings:

Phase 1

IP Address 172.17.200.1

FortiOS 6.4.6 Administration Guide 1434


Fortinet Technologies Inc.
VPN

Interface port26

Device creation Disabled

Aggregate member Enabled

Authentication Method Pre-shared Key

Pre-shared Key Enter the secure key

IKE Mode Aggressive

Peer Options Accept Types Any peer ID

Phase 2

Auto-negotiate Enable

To create the IPsec aggregate:

 1. Go to VPN > IPsec Tunnels and click Create New > IPsec Aggregate.


 2. For Name, enter agg_HQ1.
 3. Select a load balancing algorithm.
 4. From the Tunnel dropdown, select the tunnels that you created previously (pri_HQ1 and sec_HQ1). If required, 
enter weights for each tunnel.
 5. Click OK.

To configure the firewall policies:

 1. Go to Policy & Objects > Firewall Policy.


 2. Create an inbound traffic policy with the following settings:

Name inbound

Incoming Interface agg_HQ1

Outgoing Interface port9

Source 10.1.100.0

Destination 172.16.101.0

Schedule always

Action ACCEPT

Service ALL

 3. Click OK.
 4. Create an outbound traffic policy with the following settings:

Name outbound

Incoming Interface port9

Outgoing Interface agg_HQ1

FortiOS 6.4.6 Administration Guide 1435


Fortinet Technologies Inc.
VPN

Source 172.16.101.0

Destination 10.1.100.0

Schedule always

Action ACCEPT

Service ALL

To configure the aggregate VPN interface IPs:

 1. Go to Network > Interfaces and edit agg_HQ1.


 2. For IP, enter 10.10.10.2.
 3. For Remote IP/Netmask, enter 10.10.10.1 255.255.255.255.
 4. Click OK.

To configure OSPF:

 1. Go to Network > OSPF.


 2. For Router ID, enter 2.2.2.2.
 3. In the Areas table, click Create New.
 a. For Area ID, enter 0.0.0.0.
 b. Click OK.
 4. In the Networks table, click Create New.
 a. Set the Area to 0.0.0.0.
 b. For IP/Netmask, enter 172.16.101.0/24.
 c. Click OK.
 d. Click Create New.
 e. For IP/Netmask, enter 10.10.10.0/24.
 f. Click OK.
 5. Click Apply.

Monitoring the traffic in the GUI

To monitor the traffic:

 1. Go to Dashboard > Network , hover over the IPsec widget, then click Expand to Full Screen.


 2. Expand the aggregate tunnel in the table to view statistics for each aggregate member.

Configuring the HQ1 FortiGate in the CLI

There are six steps to configure the FortiGate:
 1. Configure the interfaces.
 2. Configure two IPsec phase 1 and phase 2 interfaces.
 3. Configure the IPsec aggregate.
 4. Configure the firewall policies.
 5. Configure the aggregate VPN interface IPs.
 6. Configure OSPF.

FortiOS 6.4.6 Administration Guide 1436


Fortinet Technologies Inc.
VPN

To configure the interfaces:

 1. Configure port1, port2, and dmz as shown in the topology diagram.

To configure two IPsec phase 1 and phase 2 interfaces:

config vpn ipsec phase1-interface


edit "pri_HQ2"
set interface "port1"
set peertype any
set net-device disable
set aggregate-member enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.202.1
set psksecret sample1
next
edit "sec_HQ2"
set interface "port2"
set peertype any
set net-device disable
set aggregate-member enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.17.202.1
set psksecret sample2
next
end
config vpn ipsec phase2-interface
edit "pri_HQ2"
set phase1name "pri_HQ2"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm aes256gcm
chacha20poly1305
set auto-negotiate enable
next
edit "sec_HQ2"
set phase1name "sec_HQ2"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm aes256gcm
chacha20poly1305
set auto-negotiate enable
next
end

To configure the IPsec aggregate:

config system ipsec-aggregate


edit "agg_HQ2"
set member "pri_HQ2" "sec_HQ2"
next
end

To configure the firewall policies:

config firewall policy


edit 1
set name "inbound"
set srcintf "agg_HQ2"
set dstintf "dmz"

FortiOS 6.4.6 Administration Guide 1437


Fortinet Technologies Inc.
VPN

set srcaddr "172.16.101.0"


set dstaddr "10.1.100.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "outbound"
set srcintf "dmz"
set dstintf "agg_HQ2"
set srcaddr "10.1.100.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
end

To configure the aggregate VPN interface IPs:

config system interface


edit "agg_HQ2"
set ip 10.10.10.1 255.255.255.255
set remote-ip 10.10.10.2 255.255.255.255
next
end

To configure OSPF:

config router ospf


set router-id 1.1.1.1
config area
edit 0.0.0.0
next
end
config network
edit 1
set prefix 10.1.100.0 255.255.255.0
next
edit 2
set prefix 10.10.10.0 255.255.255.0
next
end
end

Configuring the HQ2 FortiGate in the CLI

There are six steps to configure the FortiGate:
 1. Configure the interfaces.
 2. Configure two IPsec phase 1 and phase 2 interfaces.
 3. Configure the IPsec aggregate.
 4. Configure the firewall policies.
 5. Configure the aggregate VPN interface IPs.
 6. Configure OSPF.

FortiOS 6.4.6 Administration Guide 1438


Fortinet Technologies Inc.
VPN

To configure the interfaces:

 1. Configure port25, port26, and port9 as shown in the topology diagram.

To configure two IPsec phase 1 and phase 2 interfaces:

config vpn ipsec phase1-interface


edit "pri_HQ1"
set interface "port25"
set peertype any
set net-device disable
set aggregate-member enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.200.1
set psksecret sample1
next
edit "sec_HQ1"
set interface "port26"
set peertype any
set net-device disable
set aggregate-member enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.17.200.1
set psksecret sample2
next
end
config vpn ipsec phase2-interface
edit "pri_HQ1"
set phase1name "pri_HQ1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm aes256gcm
chacha20poly1305
set auto-negotiate enable
next
edit "sec_HQ1"
set phase1name "sec_HQ1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm aes256gcm
chacha20poly1305
set auto-negotiate enable
next
end

To configure the IPsec aggregate:

config system ipsec-aggregate


edit "agg_HQ1"
set member "pri_HQ1" "sec_HQ1"
next
end

To configure the firewall policies:

config firewall policy


edit 1
set name "inbound"
set srcintf "agg_HQ1"
set dstintf "port9"

FortiOS 6.4.6 Administration Guide 1439


Fortinet Technologies Inc.
VPN

set srcaddr "10.1.100.0"


set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "outbound"
set srcintf "port9"
set dstintf "agg_HQ1"
set srcaddr "172.16.101.0"
set dstaddr "10.1.100.0"
set action accept
set schedule "always"
set service "ALL"
next
end

To configure the aggregate VPN interface IPs:

config system interface


edit "agg_HQ1"
set ip 10.10.10.2 255.255.255.255
set remote-ip 10.10.10.1 255.255.255.255
next
end

To configure OSPF:

config router ospf


set router-id 2.2.2.2
config area
edit 0.0.0.0
next
end
config network
edit 1
set prefix 172.16.101.0 255.255.255.0
next
edit 2
set prefix 10.10.10.0 255.255.255.0
next
end
end

Monitoring the traffic in the CLI

To view debugging information:

 1. Verify the status of the phase 1 IKE SAs:   
# diagnose vpn ike gateway list
vd: root/0
name: pri_HQ2
version: 1
interface: port1 11

FortiOS 6.4.6 Administration Guide 1440


Fortinet Technologies Inc.
VPN

addr: 172.16.200.1:500 -> 172.16.202.1:500


created: 1520s ago
IKE SA: created 1/2 established 1/1 time 10/10/10 ms
IPsec SA: created 2/2 established 1/1 time 0/0/0 ms
id/spi: 173 dcdede154681579b/e32f4c48c4349fc0 direction: responder status: established
1498-1498s ago = 10ms proposal: aes128-sha256 key: d7230a68d7b83def-
588b94495cfa9d38 lifetime/rekey: 86400/84631 DPD sent/recv: 0000000d/00000006
vd: root/0
name: sec_HQ2
version: 1
interface: port2 12
addr: 172.17.200.1:500 -> 172.17.202.1:500
created: 1520s ago
IKE SA: created 1/2 established 1/1 time 10/10/10 ms
IPsec SA: created 2/2 established 1/1 time 0/0/0 ms
id/spi: 174 a567bd7bf02a04b5/4251b6254660aee2 direction: responder status: established
1498-1498s ago = 10ms proposal: aes128-sha256 key: 9f44f500c28d8de6-
febaae9d1e6a164c lifetime/rekey: 86400/84631 DPD sent/recv: 00000008/0000000c
 2. Verify the phase 2 IPsec tunnel SAs:   
# diagnose vpn tunnel list
list all ipsec tunnel in vd 0
name=sec_HQ2 ver=1 serial=2 172.17.200.1:0->172.17.202.1:0
bound_if=5 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/512 options[0200]=frag-rfc
run_state=1 accept_traffic=1
proxyid_num=1 child_num=0 refcnt=7 ilast=5 olast=5 ad=/0
stat: rxp=39 txp=40 rxb=5448 txb=2732
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=15
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=sec_HQ2 proto=0 sa=1 ref=2 serial=2 auto-negotiate
src: 0:0.0.0.0/0.0.0.0:0 dst: 0:0.0.0.0/0.0.0.0:0 SA: ref=3 options=18227 type=00
soft=0 mtu=1438 expire=41230/0B replaywin=2048
seqno=29 esn=0 replaywin_lastseq=00000028 itn=0
life: type=01 bytes=0/0 timeout=42899/43200 dec: spi=1071b4f9 esp=aes key=16
1f4dbb78bea8e97650b52d8170b5ece7
ah=sha1 key=20 cd9bf2de0f49296cf489dd915d7baf6d78bc8f12
enc: spi=ec89b7ee esp=aes key=16 0546efecd0d1b9ba5944f635896e4404
ah=sha1 key=20 34599bc7dc25e1ce63ac9615bd50928ce0667dc8
dec:pkts/bytes=39/2796, enc:pkts/bytes=40/5456
name=pri_HQ2 ver=1 serial=1 172.16.200.1:0->172.16.202.1:0
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/512 options[0200]=frag-rfc
run_state=1 accept_traffic=1
proxyid_num=1 child_num=0 refcnt=5 ilast=15 olast=15 ad=/0
stat: rxp=38 txp=39 rxb=5152 txb=2768
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=20
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=pri_HQ2 proto=0 sa=1 ref=2 serial=2 auto-negotiate
src: 0:0.0.0.0/0.0.0.0:0 dst: 0:0.0.0.0/0.0.0.0:0 SA: ref=3 options=18227 type=00
soft=0 mtu=1438 expire=41231/0B replaywin=2048
seqno=28 esn=0 replaywin_lastseq=00000027 itn=0
life: type=01 bytes=0/0 timeout=42900/43200 dec: spi=1071b4f8 esp=aes key=16
142cce377b3432ba41e64128ade6848c
ah=sha1 key=20 20e64947e2397123f561584321adc0e7aa0c342d
enc: spi=ec89b7ed esp=aes key=16 2ec13622fd60dacce3d28ebe5fe7ab14
ah=sha1 key=20 c1787497508a87f40c73c0db0e835c70b3c3f42d
dec:pkts/bytes=38/2568, enc:pkts/bytes=39/5432
 3. Debug the IPsec aggregation list:   
# diagnose sys ipsec-aggregate list

FortiOS 6.4.6 Administration Guide 1441


Fortinet Technologies Inc.
VPN

agg_HQ2 algo=RR member=2 run_tally=2


members:
pri_HQ2
sec_HQ2
 4. Verify the OSPF neighbor information:   
# get router info ospf neighbor
OSPF process 0, VRF 0:
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 1. Full/ - 00:00:34 10.10.10.2 agg1_HQ2
 5. Verify the OSPF routing table:   
# get router info routing-table ospf
Routing table for VRF=0
O 172.16.101.0/24 [110/20] via 10.10.10.2, agg1_HQ2 , 00:18:43

Per packet distribution and tunnel aggregation

This is a sample configuration of aggregating IPsec tunnels by using per-packet load-balancing.

This feature only  allows static and DDNS tunnels to be members.
Dynamic (dialup) tunnels are not allowed because dialup instances tend to have different 
locations and hence different routing. This conflicts with the rule that all the members of an 
aggregate must have the same routing.

For example, a customer has two ISP connections, wan1 and wan2. On each FortiGate, two IPsec VPN interfaces are 
created. Next, an ipsec-aggregate interface is created and added as an SD-WAN member.

Configuring FortiGate 1

To create two IPsec VPN interfaces:

config vpn ipsec phase1-interface


edit "vd1-p1"
set interface "wan1"
set peertype any
set net-device disable
set aggregate-member enable
set proposal aes256-sha256
set dhgrp 14

FortiOS 6.4.6 Administration Guide 1442


Fortinet Technologies Inc.
VPN

set remote-gw 172.16.201.2


set psksecret ftnt1234
next
edit "vd1-p2"
set interface "wan2"
set peertype any
set net-device disable
set aggregate-member enable
set proposal aes256-sha256
set dhgrp 14
set remote-gw 172.16.202.2
set psksecret ftnt1234
next
end
config vpn ipsec phase2-interface
edit "vd1-p1"
set phase1name "vd1-p1"
next
edit "vd1-p2"
set phase1name "vd1-p2"
next
end

To create an IPsec aggregate interface:

config system ipsec-aggregate


edit "agg1"
set member "vd1-p1" "vd1-p2"
set algorithm L3
next
end
config system interface
edit "agg1"
set vdom "root"
set ip 172.16.11.1 255.255.255.255
set allowaccess ping
set remote-ip 172.16.11.2 255.255.255.255
end

To configure the firewall policy:

config firewall policy


edit 1
set name "1"
set srcintf "dmz"
set dstintf ""virtual-wan-link""
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

FortiOS 6.4.6 Administration Guide 1443


Fortinet Technologies Inc.
VPN

To configure SD-WAN:

config system sdwan


set status enable
config members
edit 1
set interface "agg1"
set gateway 172.16.11.2
next
end
end

Configuring FortiGate 2

To create two IPsec VPN interfaces:

config vpn ipsec phase1-interface


edit "vd2-p1"
set interface "wan1"
set peertype any
set net-device disable
set proposal aes256-sha256
set dhgrp 14
set remote-gw 172.16.200.1
set psksecret ftnt1234
next
edit "vd2-p2"
set interface "wan2"
set peertype any
set net-device disable
set proposal aes256-sha256
set dhgrp 14
set remote-gw 172.16.203.1
set psksecret ftnt1234
next
end
config vpn ipsec phase2-interface
edit "vd2-p1"
set phase1name "vd2-p1"
next
edit "vd2-p2"
set phase1name "vd2-p2"
next
end

To create an IPsec aggregate interface:

config system ipsec-aggregate


edit "agg2"
set member "vd2-p1" "vd2-p2"
set algorithm L3
next
end

FortiOS 6.4.6 Administration Guide 1444


Fortinet Technologies Inc.
VPN

config system interface


edit "agg2"
set vdom "root"
set ip 172.16.11.2 255.255.255.255
set allowaccess ping
set remote-ip 172.16.11.1 255.255.255.255
next
end

To configure the firewall policy:

config firewall policy


edit 1
set name "1"
set srcintf "dmz"
set dstintf ""virtual-wan-link""
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

To configure SD-WAN:

config system sdwan


set status enable
config members
edit 1
set interface "agg2"
set gateway 172.16.11.1
next
end
end

Related diagnose commands

To display aggregate IPsec members:

# diagnose sys ipsec-aggregate list


agg1 algo=L3 member=2 run_tally=2
members:
vd1-p1
vd1-p2

To check the VPN status:

# diagnose vpn tunnel list


list all ipsec tunnel in vd 0
------------------------------------------------------
name=vd1-p1 ver=1 serial=2 172.16.200.1:0->172.16.201.2:0 dst_mtu=0
bound_if=10 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/520 options[0208]=npu frag-rfc
run_state=1 accept_traffic=0

FortiOS 6.4.6 Administration Guide 1445


Fortinet Technologies Inc.
VPN

proxyid_num=1 child_num=0 refcnt=5 ilast=15 olast=676 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=vd1-p1 proto=0 sa=0 ref=1 serial=1
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
------------------------------------------------------
name=vd1-p2 ver=1 serial=3 172.16.203.1:0->172.16.202.2:0 dst_mtu=1500
bound_if=28 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/520 options[0208]=npu frag-rfc
run_state=1 accept_traffic=1

proxyid_num=1 child_num=0 refcnt=12 ilast=1 olast=1 ad=/0


stat: rxp=1 txp=1686 rxb=16602 txb=111717
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=vd1-p2 proto=0 sa=1 ref=9 serial=1
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=4 options=10226 type=00 soft=0 mtu=1438 expire=42164/0B replaywin=2048
seqno=697 esn=0 replaywin_lastseq=00000002 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42902/43200
dec: spi=f6ae9f83 esp=aes key=16 f6855c72295e3c5c49646530e6b96002
ah=sha1 key=20 f983430d6c161d0a4cd9007c7ae057f1ff011334
enc: spi=8c72ba1a esp=aes key=16 6330f8c532a6ca5c5765f6a9a6034427
ah=sha1 key=20 e5fe385ed5f0f6a33f1d507601b15743a8c70187
dec:pkts/bytes=1/16536, enc:pkts/bytes=1686/223872
npu_flag=02 npu_rgwy=172.16.202.2 npu_lgwy=172.16.203.1 npu_selid=2 dec_npuid=1 enc_
npuid=0

Redundant hub and spoke VPN

A redundant hub and spoke configuration allows VPN connections to radiate from a central FortiGate unit (the hub) to 
multiple remote peers (the spokes). Traffic can pass between private networks behind the hub and private networks 
behind the remote peers. Traffic can also pass between remote peer private networks through the hub.
This is a sample configuration of hub and spoke IPsec VPN. The following applies for this scenario:
 l The spokes have two WAN interfaces and two IPsec VPN tunnels for redundancy.
 l The secondary VPN tunnel is up only when the primary tunnel is down by dead peer detection.

FortiOS 6.4.6 Administration Guide 1446


Fortinet Technologies Inc.
VPN

Because the GUI can only complete part of the configuration, we recommend using the CLI.

To configure redundant hub and spoke VPN using the FortiOS CLI:

 1. Configure the hub.
 a. Configure the WAN, internal interface, and static route.   
config system interface
edit "port13"
set alias "WAN"
set ip 172.16.202.1 255.255.255.0
next
edit "port9"
set alias "Internal"
set ip 172.16.101.1 255.255.255.0
next
end
config router static
edit 1
set gateway 172.16.202.2
set device "port13"
next
end
 b. Configure the IPsec phase1-interface and phase2-interface.   
config vpn ipsec phase1-interface
edit "hub"
set type dynamic
set interface "port13"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set dpd on-idle
set psksecret sample
set dpd-retryinterval 60
next
end
config vpn ipsec phase2-interface
edit "hub"
set phase1name "hub"

FortiOS 6.4.6 Administration Guide 1447


Fortinet Technologies Inc.
VPN

set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm


aes256gcm chacha20poly1305
next
end
 c. Configure the firewall policy.   
config firewall policy
edit 1
set name "spoke-hub"
set srcintf "hub"
set dstintf "port9"
set srcaddr "all"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "spoke-spoke"
set srcintf "hub"
set dstintf "hub"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
end
 2. Configure the spokes.
 a. Configure the WAN, internal interface, and static route.
 i. Configure Spoke1.   
config system interface
edit "port1"
set ip 172.16.200.1 255.255.255.0
next
edit "wan1"
set mode dhcp
set distance 10
set priority 100
next
edit "dmz"
set ip 10.1.100.1 255.255.255.0
next
end
config router static
edit 1
set gateway 172.16.200.2
set device "port1"
next
end
 ii. Configure Spoke2.   
config system interface
edit "wan1"
set ip 172.16.200.3 255.255.255.0
next
edit "wan2"
set mode dhcp

FortiOS 6.4.6 Administration Guide 1448


Fortinet Technologies Inc.
VPN

set distance 10
set priority 100
next
edit "lan1"
set ip 192.168.4.1 255.255.255.0
next
end
config router static
edit 1
set gateway 172.16.200.2
set device "wan1"
next
end
 b. Configure IPsec phase1-interface and phase2-interface.
 i. Configure Spoke1.   
config vpn ipsec phase1-interface
edit "primary"
set interface "port1"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.202.1
set psksecret sample
next
edit "secondary"
set interface "wan1"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.202.1
set monitor "primary"
set psksecret sample
next
end
config vpn ipsec phase2-interface
edit "primary"
set phase1name "primary"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
set src-subnet 10.1.100.0 255.255.255.0
next
edit "secondary"
set phase1name "secondary"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
set src-subnet 10.1.100.0 255.255.255.0
next
end
 ii. Configure Spoke2.   
config vpn ipsec phase1-interface
edit "primary"
set interface "wan1"
set peertype any
set net-device enable

FortiOS 6.4.6 Administration Guide 1449


Fortinet Technologies Inc.
VPN

set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1


set remote-gw 172.16.202.1
set psksecret sample
next
edit "secondary"
set interface "wan2"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 172.16.202.1
set monitor "primary"
set psksecret sample
next
end
config vpn ipsec phase2-interface
edit "primary"
set phase1name "primary"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
set src-subnet 192.168.4.0 255.255.255.0
next
edit "secondary"
set phase1name "secondary"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
set src-subnet 192.168.4.0 255.255.255.0
next
end
 c. Configure the firewall policy.
 i. Configure Spoke1.   
config firewall policy
edit 1
set srcintf "dmz"
set dstintf "primary" "secondary"
set srcaddr "10.1.100.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
end
 ii. Configure Spoke2.   
config firewall policy
edit 1
set srcintf "lan1"
set dstintf "primary" "secondary"
set srcaddr "192.168.4.0"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
end

FortiOS 6.4.6 Administration Guide 1450


Fortinet Technologies Inc.
VPN

 d. Configure the static route.
 i. Configure Spoke1.   
config router static
edit 3
set dst 172.16.101.0 255.255.255.0
set distance 1
set device "primary"
next
edit 4
set dst 172.16.101.0 255.255.255.0
set distance 3
set device "secondary"
next
end
 ii. Configure Spoke2.   
config router static
edit 3
set dst 172.16.101.0 255.255.255.0
set distance 1
set device "primary"
next
edit 4
set dst 172.16.101.0 255.255.255.0
set distance 3
set device "secondary"
next
end
 3. Run diagnose and get commands.
 a. Run the Spoke1 # diagnose vpn tunnel list command. The system should return the following:   
name=primary ver=1 serial=1 172.16.200.1:0->172.16.202.1:0
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_
dev frag-rfc accept_traffic=1
proxyid_num=1 child_num=0 refcnt=15 ilast=0 olast=0 ad=/0
stat: rxp=1879 txp=1881 rxb=225480 txb=112860
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=1
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=primary proto=0 sa=1 ref=2 serial=2 auto-negotiate
src: 0:10.1.100.0/255.255.255.0:0 dst: 0:0.0.0.0/0.0.0.0:0 SA: ref=3 options=18227
type=00 soft=0 mtu=1438 expire=41002/0B replaywin=2048
seqno=758 esn=0 replaywin_lastseq=00000758 itn=0
life: type=01 bytes=0/0 timeout=42901/43200 dec: spi=0908732f esp=aes key=16
20770dfe67ea22dd8ec32c44d84ef4d5
ah=sha1 key=20 edc89fc2ec06309ba13de95e7e486f9b795b8707
enc: spi=a1d9eed1 esp=aes key=16 8eeea2526fba062e680d941083c8b5d1
ah=sha1 key=20 f0f5deaf88b2a69046c3154e9f751739b3f411f5
dec:pkts/bytes=1879/112740, enc:pkts/bytes=1879/225480
name=secondary ver=1 serial=2 172.17.200.1:0->172.16.202.1:0
bound_if=5 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_
dev frag-rfc accept_traffic=0
proxyid_num=1 child_num=0 refcnt=10 ilast=1892 olast=1892 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=0 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=secondary proto=0 sa=0 ref=2 serial=2 auto-negotiate
src: 0:10.1.100.0/255.255.255.0:0 dst: 0:0.0.0.0/0.0.0.0:0

FortiOS 6.4.6 Administration Guide 1451


Fortinet Technologies Inc.
VPN

 b. Run the Spoke1 # get router info routing-table static command. The system should return 


the following:   
Routing table for VRF=0
................
S 172.16.101.0/24 [1/0] is directly connected, primary

Weighted round robin for IPsec aggregate tunnels

A weighted round robin algorithm can be used for IPsec aggregate tunnels to distribute traffic by the weight of each 
member tunnel.
In this example, the FortiGate has two IPsec tunnels put into IPsec aggregate. Traffic is distributed among the members, 
with one third over tunnel1, and two thirds over tunnel2. To achieve this, the weighted round robin algorithm is selected, 
tunnel1 is assigned a weight of 10, and tunnel2 is assigned a weight of 20.

To create the IPsec aggregate in the GUI:

 1. Create the tunnel1 and tunnel2 custom IPsec tunnels. Ensure that Aggregate member is Enabled for each tunnel.

 2. Go to VPN > IPsec Tunnels and click Create New > IPsec Aggregate.


 3. Enter a name for the aggregate, such as agg1, and ensure that Algorithm is Weighted Round Robin.
 4. Add tunnel1 as an aggregate members, and set Weight to 10.

FortiOS 6.4.6 Administration Guide 1452


Fortinet Technologies Inc.
VPN

 5. Add tunnel2 as a second aggregate members, and set its Weight to 20.

 6. Click OK.
 7. To view and monitor the aggregate tunnel statistics, go to the IPsec widget on the Network dashboard.

To create the IPsec aggregate in the CLI:

 1. Create the tunnel1 and tunnel2 custom IPsec tunnels with aggregate-member enabled and aggregate-weight set 
for both tunnels:
config vpn ipsec phase1-interface
edit "tunnel1"
...
set aggregate-member enable
set aggregate-weight 10
...
next
edit "tunnel2"
...
set aggregate-member enable
set aggregate-weight 20
...
next
end

 2. Create the IPsec aggregate:
config system ipsec-aggregate
edit "agg1"
set member "tunnel1" "tunnel2"
set algorithm weighted-round-robin
next
end

FortiOS 6.4.6 Administration Guide 1453


Fortinet Technologies Inc.
VPN

Overlay Controller VPN (OCVPN)

Overlay Controller VPN (OCVPN) is a cloud based solution to simplify IPsec VPN setup. When OCVPN is enabled, 
IPsec phase1-interfaces, phase2-interfaces, static routes, and firewall policies are generated automatically on all 
FortiGates that belong to the same community network. A community network is defined as all FortiGates registered to 
FortiCare using the same FortiCare account.
If the network topology changes on any FortiGates in the community (such as changing a public IP address in DHCP 
mode, adding or removing protected subnets, failing over in dual WAN), the IPsec-related configuration for all devices is 
updated with Cloud assistance in self-learning mode. No intervention is required.
The following topics provide instructions on configuring OCVPN:
 l Full mesh OCVPN on page 1454
 l Hub-spoke OCVPN with ADVPN shortcut on page 1458
 l Hub-spoke OCVPN with inter-overlay source NAT on page 1463
 l OCVPN portal on page 1467
 l SD-WAN integration with OCVPN on page 684
 l Allow FortiClient to join OCVPN on page 1468
 l Troubleshooting OCVPN on page 1472

Full mesh OCVPN

This example shows how to configure a full mesh Overlay Controller VPN (OCVPN), establishing full mesh IPsec tunnels 
between all of the FortiGates.

License

 l Free license: Three devices full mesh, 10 overlays, 16 subnets per overlay.
 l Full License: Maximum of 16 devices, 10 overlays, 16 subnets per overlay.

Prerequisites

 l All FortiGates must be running FortiOS 6.2.0 or later.
 l All FortiGates must have Internet access.
 l All FortiGates must be registered on FortiCare using the same FortiCare account.

Restrictions

 l Non-root VDOMs do not support OCVPN.
 l FortiOS 6.2.x is not compatible with FortiOS 6.0.x.

Terminology

Poll-interval How often FortiGate tries to fetch OCVPN-related data from OCVPN Cloud.

Role The device OCVPN role of spoke, primary-hub, or secondary-hub.

Overlay Defines network overlays and bind to subnets.

FortiOS 6.4.6 Administration Guide 1454


Fortinet Technologies Inc.
VPN

Subnet Internal network subnet (IPsec protected subnet). Traffic to or from this subnet enters the 
IPsec tunnel encrypted by IPsec SA.

Sample topology

The following example shows three FortiGate units registered on FortiCare using the same FortiCare account. Each 
FortiGate unit has one internal subnet, and no NAT exists between the units. 

Sample configuration

The following overlays and subnets are used:
 l Branch1:   
 l Overlay name: QA. Local subnets: 10.1.100.0/24
 l Overlay name: PM. Local subnets: 10.2.100.0/24
 l Branch2:   
 l Overlay name: QA. Local interfaces: lan1
 l Overlay name: PM. Local interfaces: lan2
 l Branch3:   
 l Overlay name: QA. Local subnets: 172.16.101.0/24
 l Overlay name: PM. Local subnets: 172.16.102.0/24

The overlay names on each device must be the same for local and remote selector pairs to be 
negotiated.

To register FortiGates on FortiCare:

 1. Go to System > FortiGuard > License Information > FortiCare Support.
 2. To register, click Register or Launch Portal.
 3. Complete the options to register FortiGate on FortiCare.

FortiOS 6.4.6 Administration Guide 1455


Fortinet Technologies Inc.
VPN

To enable OCVPN in the GUI:

 1. Go to VPN > Overlay Controller VPN.


 2. Create the first overlay by setting the following options:  
 a. For Status, click Enabled.
 b. For Role, click Spoke.
 c. In the Overlays section, click Create New to create a network overlay.

 3. Specify the Name, Local subnets, and/or Local interfaces.


The local subnet must be routable and interfaces must have IP addresses.

FortiOS 6.4.6 Administration Guide 1456


Fortinet Technologies Inc.
VPN

 4. Click OK.

 5. Click Apply to commit the configuration.
 6. Repeat this procedure to create all the overlays.

To enable OCVPN in the CLI:

 1. Configure Branch1:
config vpn ocvpn
set status enable
config overlays
edit 1
set name "QA"
config subnets
edit 1
set subnet 10.1.100.0 255.255.255.0
next
end
next
edit 2
set name "PM"
config subnets
edit 1
set subnet 10.2.100.0 255.255.255.0
next
end
next

FortiOS 6.4.6 Administration Guide 1457


Fortinet Technologies Inc.
VPN

end
end

 2. Configure Branch2:   
config vpn ocvpn
set status enable
config overlays
edit 1
set name "QA"
config subnets
edit 1
set type interface
set interface "lan1"
next
end
next
edit 2
set name "PM"
config subnets
edit 1
set type interface
set interface "lan2"
next
end
next
end
end

 3. Configure Branch3:
config vpn ocvpn
set status enable
config overlays
edit 1
set name "QA"
config subnets
edit 1
set subnet 172.16.101.0 255.255.255.0
next
end
next
edit 1
set name "PM"
config subnets
edit 1
set subnet 172.16.102.0 255.255.255.0
next
end
next
end
end

Hub-spoke OCVPN with ADVPN shortcut

This topic shows a sample configuration of a hub-spoke One-Click VPN (OCVPN) with an Auto Discovery VPN (ADVPN) 
shortcut. OCVPN automatically detects the network topology based on members' information. To form a hub-spoke 

FortiOS 6.4.6 Administration Guide 1458


Fortinet Technologies Inc.
VPN

OCVPN, at least one device must announce its role as the primary hub, another device can work as the secondary hub 
(for redundancy), while others function as spokes.

License

 l Free license: Hub-spoke network topology not supported.
 l Full license: Maximum of 2 hubs, 10 overlays, 64 subnets per overlay; 1024 spokes, 10 overlays, 16 subnets per 
overlay.

Prerequisites

 l All FortiGates must be running FortiOS 6.2.0 or later.
 l All FortiGates must have Internet access.
 l All FortiGates must be registered on FortiCare using the same FortiCare account.

Restrictions

 l Non-root VDOMs do not support OCVPN.
 l FortiOS 6.2.x is not compatible with FortiOS 6.0.x.

OCVPN device roles

 l Primary hub.
 l Secondary hub.
 l Spoke (OCVPN default role).

Sample topology

Sample configuration

The steps below use the following overlays and subnets for the sample configuration:
 l Primary hub:
 l Overlay name: QA. Local subnets: 172.16.101.0/24
 l Overlay name: PM. Local subnets: 172.16.102.0/24

FortiOS 6.4.6 Administration Guide 1459


Fortinet Technologies Inc.
VPN

 l Secondary hub:
 l Overlays are synced from primary hub.
 l Spoke1:
 l Overlay name: QA. Local subnets: 10.1.100.0/24
 l Overlay name: PM. Local subnets: 10.2.100.0/24
 l Spoke2:
 l Overlay name: QA. Local interfaces: lan1
 l Overlay name: PM. Local interfaces: lan2

The overlay names on each device must be the same for local and remote selector pairs to be 
negotiated.

To register FortiGates on FortiCare:

 1. Go to System > FortiGuard > License Information > FortiCare Support.
 2. To register, click Register or Launch Portal.
 3. Complete the options to register FortiGate on FortiCare.

To enable hub-spoke OCVPN in the GUI:

 1. Go to VPN > Overlay Controller VPN.


 2. Configure the OCVPN primary hub by setting the following options:
 a. For Status, click Enabled.
 b. For Role, click Primary Hub.
 c. In the Overlays section, click Create New to create a network overlay.

 d. Specify the Name, Local subnets, and/or Local interfaces. Then click OK.

FortiOS 6.4.6 Administration Guide 1460


Fortinet Technologies Inc.
VPN

 e. Click Apply to commit the configuration.

 3. Configure the OCVPN secondary hub:
Overlays are synced from the primary hub and cannot be defined in the secondary hub.
 a. In the Overlay Controller VPN pane, select Secondary Hub for the Role.
 b. Select Apply to commit the configuration.

 4. Configure the OCVPN spokes:
 a. In the Overlay Controller VPN pane, select Spoke for the Role.
 b. In the Overlays section, click Create New to create a network overlay.
 c. Specify the Name, Local subnets, and/or Local interfaces.
The local subnet must be routable and interfaces must have IP addresses.

FortiOS 6.4.6 Administration Guide 1461


Fortinet Technologies Inc.
VPN

 d. Click OK and then click Apply to commit the configuration.

To enable hub-spoke OCVPN in the CLI:

 1. Configure the OCVPN primary hub:
config vpn ocvpn
set status enable
set role primary-hub
config overlays
edit 1
set name "QA"
config subnets
edit 1
set subnet 172.16.101.0 255.255.255.0
next
end
next
edit 2
set name "PM"
config subnets
edit 1
set subnet 172.16.102.0 255.255.255.0
next
end
next
end
end

 2. Configure the OCVPN secondary hub:
config vpn ocvpn
set status enable
set role secondary-hub
end

 3. Configure the OCVPN spoke1:
config vpn ocvpn
set status enable

FortiOS 6.4.6 Administration Guide 1462


Fortinet Technologies Inc.
VPN

config overlays
edit 1
set name "QA"
config subnets
edit 1
set subnet 10.1.100.0 255.255.255.0
next
end
next
edit 2
set name "PM"
config subnets
edit 1
set subnet 10.2.100.0 255.255.255.0
next
end
next
end
end

 4. Configure the OCVPN spoke2:
config vpn ocvpn
set status enable
config overlays
edit 1
set name "QA"
config subnets
edit 1
set subnet 192.168.4.0 255.255.255.0
next
end
next
edit 2
set name "PM"
config subnets
edit 1
set subnet 192.168.5.0 255.255.255.0
next
end
next
end
end

Hub-spoke OCVPN with inter-overlay source NAT

This topic shows a sample configuration of hub-spoke OCVPN with inter-overlay source NAT. OCVPN isolates traffic 
between overlays by default. With NAT enabled on spokes and assign-ip enabled on hub, you can have inter-overlay 
communication.
Inter-overlay communication means devices from any source addresses and any source interfaces can communicate 
with any devices in overlays' subnets when the overlay option assign-ip is enabled.
You must first disable auto-discovery before you can enable NAT.

FortiOS 6.4.6 Administration Guide 1463


Fortinet Technologies Inc.
VPN

License

 l Free license: Hub-spoke network topology not supported.
 l Full License: Maximum of 2 hubs, 10 overlays, 64 subnets per overlay; 1024 spokes, 10 overlays, 16 subnets per 
overlay.

Prerequisites

 l All FortiGates must be running FortiOS 6.2.0 or later.
 l All FortiGates must have Internet access.
 l All FortiGates must be registered on FortiCare using the same FortiCare account.

Restrictions

 l Non-root VDOMs do not support OCVPN.
 l FortiOS 6.2.x is not compatible with FortiOS 6.0.x.

OCVPN device roles

 l Primary hub.
 l Secondary hub.
 l Spoke (OCVPN default role).

Sample topology

Sample configuration

You can only configure this feature using the CLI.

The overlay names on each device must be the same for local and remote selector pairs to be 
negotiated.

FortiOS 6.4.6 Administration Guide 1464


Fortinet Technologies Inc.
VPN

To enable inter-overlay source NAT in the CLI:

 1. Configure the primary hub, enable overlay QA, and configure assign-ip and IP range:
config vpn ocvpn
set status enable
set role primary-hub
config overlays
edit 1
set name "QA"
set assign-ip enable
set ipv4-start-ip 172.16.101.100
set ipv4-end-ip 172.16.101.200
config subnets
edit 1
set subnet 172.16.101.0 255.255.255.0
next
end
next
edit 2
set name "PM"
set assign-ip enable
config subnets
edit 1
set subnet 172.16.102.0 255.255.255.0
next
end
next
end
end

 2. Configure the secondary hub:
config vpn ocvpn
set status enable
set role secondary-hub
end

 3. Configure spoke1 and enable NAT on the spoke:
config vpn ocvpn
set status enable
set auto-discovery disable
set nat enable
config overlays
edit 1
set name "QA"
config subnets
edit 1
set subnet 10.1.100.0 255.255.255.0
next
end
next
edit 2
set name "PM"
config subnets
edit 1
set subnet 10.2.100.0 255.255.255.0

FortiOS 6.4.6 Administration Guide 1465


Fortinet Technologies Inc.
VPN

next
end
next
end
end

 4. Configure spoke2 and enable NAT on the spoke:
config vpn ocvpn
set status enable
set auto-discovery disable
set nat enable
config overlays
edit 1
set name "QA"
config subnets
edit 1
set subnet 192.168.4.0 255.255.255.0
next
end
next
edit 2
set name "PM"
config subnets
edit 1
set subnet 192.168.5.0 255.255.255.0
next
end
next
end
end

A firewall policy with NAT is generated on the spoke:   
edit 9
set name "_OCVPN2-1.1_nat"
set uuid 3f7a84b8-3d36-51e9-ee97-8f418c91e666
set srcintf "any"
set dstintf "_OCVPN2-1.1"
set srcaddr "all"
set dstaddr "_OCVPN2-1.1_remote_networks"
set action accept
set schedule "always"
set service "ALL"
set comments "Generated by OCVPN Cloud Service."
set nat enable
next

FortiOS 6.4.6 Administration Guide 1466


Fortinet Technologies Inc.
VPN

OCVPN portal

When you log into the OCVPN portal, the OCVPN license type and device information display. The device information 
includes the device serial number, OCVPN role, hostname, public IP address, port number, and overlays.

You can unregister an OCVPN device from the OCVPN portal under Device on the right pane.

FortiOS 6.4.6 Administration Guide 1467


Fortinet Technologies Inc.
VPN

Use the OCVPN Diagram to show the OCVPN network topology.

Allow FortiClient to join OCVPN

Administrators can configure remote access for FortiClient within an OCVPN hub. This provides simple configurations to 
allow a user group access to an overlay network.

FortiOS 6.4.6 Administration Guide 1468


Fortinet Technologies Inc.
VPN

To configure remote FortiClient access to an OCVPN hub in the GUI:

 1. On the primary hub, configure the users and user groups required for the FortiClient dialup user authentication and 
authorization. In this example, there are two user groups (dev_grp and qa_grp).
 2. Go to VPN > Overlay Controller VPN and in the Overlays section, click Create New.
 3. Enter a name and the local subnet (174.16.101.0/24 for dev and 22.202.2.0/24 for qa).
 4. Enable FortiClient Access.
 5. In the Access Rules section, click Create New.
 6. Enter a name, and select the authentication groups and overlays.

The authentication groups will be used by the IPsec phase 1 interface for authentication, and by firewall policies for 
authorization. The overlay allows access to the resource.
 7. Click OK.
 8. Create more rules if needed.
 9. Click Apply.

To view the tunnel status and activity in the GUI:

 1. Go to Dashboard > Network.


 2. Click the IPsec widget to expand to full screen view.

To configure remote FortiClient access to an OCVPN hub in the CLI:

config vpn ocvpn


set status enable
set role primary-hub
set wan-interface "mgmt1"
set ip-allocation-block 10.254.0.0 255.255.0.0
config overlays
edit "dev"

FortiOS 6.4.6 Administration Guide 1469


Fortinet Technologies Inc.
VPN

config subnets
edit 1
set subnet 174.16.101.0 255.255.255.0
next
end
next
edit "qa"
config subnets
edit 1
set subnet 22.202.2.0 255.255.255.0
next
end
next
end
config forticlient-access
set status enable
set psksecret xxxxxxxxxxxx
config auth-groups
edit "dev"
set auth-group "dev_grp"
set overlays "dev"
next
edit "qa"
set auth-group "qa_grp"
set overlays "qa"
next
end
end
end

To view the tunnel status and activity in the CLI:

# diagnose vpn ike gateway list

vd: root/0
name: _OCVPN_FCT0_0
version: 1
interface: mgmt1 4
addr: 172.16.200.4:4500 -> 172.16.200.15:64916
created: 110s ago
xauth-user: usera
groups:
dev_grp 1
assigned IPv4 address: 10.254.128.1/255.255.255.255
nat: peer
IKE SA: created 1/1 established 1/1 time 20/20/20 ms
IPsec SA: created 1/1 established 1/1 time 0/0/0 ms

id/spi: 72 1ccd2abf2d981123/fd8da107f9e4d312
direction: responder
status: established 110-110s ago = 20ms
proposal: aes256-sha256
key: 105a0291b0c05219-3decdf78938a7bea-78943651e1720536-625114d66e46f668
lifetime/rekey: 86400/86019
DPD sent/recv: 00000000/00000af3

FortiOS 6.4.6 Administration Guide 1470


Fortinet Technologies Inc.
VPN

To view data on the PC running FortiClient:

C:\ route print


===========================================================================

IPv4 Route Table


===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 10.1.100.5 10.1.100.13 281
10.1.100.0 255.255.255.0 10.254.128.2 10.254.128.1 1
10.1.100.13 255.255.255.255 On-link 10.1.100.13 281
10.1.101.0 255.255.255.0 10.254.128.2 10.254.128.1 1
10.6.30.0 255.255.255.0 On-link 10.6.30.13 281
10.6.30.13 255.255.255.255 On-link 10.6.30.13 281
10.6.30.255 255.255.255.255 On-link 10.6.30.13 281
10.254.0.0 255.255.0.0 10.254.128.2 10.254.128.1 1
10.254.128.1 255.255.255.255 On-link 10.254.128.1 257
22.202.2.0 255.255.255.0 10.254.128.2 10.254.128.1 1
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
172.16.200.4 255.255.255.255 10.1.100.5 10.1.100.13 25
174.16.101.0 255.255.255.0 10.254.128.2 10.254.128.1 1
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 10.254.128.1 257
224.0.0.0 240.0.0.0 On-link 10.6.30.13 281
224.0.0.0 240.0.0.0 On-link 10.1.100.13 281
255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
255.255.255.255 255.255.255.255 On-link 10.254.128.1 257
255.255.255.255 255.255.255.255 On-link 10.6.30.13 281
255.255.255.255 255.255.255.255 On-link 10.1.100.13 281
===========================================================================
Persistent Routes:
Network Address Netmask Gateway Address Metric
0.0.0.0 0.0.0.0 10.1.100.5 Default

The PC can access the dev resource overlay, but not qa:
C:\Users\tester>ping 174.16.101.44

Pinging 174.16.101.44 with 32 bytes of data:


Reply from 174.16.101.44: bytes=32 time=1ms TTL=63
Reply from 174.16.101.44: bytes=32 time=1ms TTL=63
Reply from 174.16.101.44: bytes=32 time=1ms TTL=63
Reply from 174.16.101.44: bytes=32 time=1ms TTL=63

Ping statistics for 174.16.101.44:


Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 1ms, Average = 1ms

C:\Users\tester>ping 22.202.2.2

Pinging 22.202.2.2 with 32 bytes of data:


Request timed out.
Request timed out.

FortiOS 6.4.6 Administration Guide 1471


Fortinet Technologies Inc.
VPN

Request timed out.


Request timed out.

Ping statistics for 22.202.2.2:


Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

Troubleshooting OCVPN

This document includes troubleshooting steps for the following OCVPN network topologies:
 l Full mesh OCVPN.
 l Hub-spoke OCVPN with ADVPN shortcut.
 l Hub-spoke OCVPN with inter-overlay source NAT.
For OCVPN configurations in other network topologies, see the other OCVPN topics.

Troubleshooting full mesh network topology

 l Branch_1 # diagnose vpn ocvpn status


Current State : Registered
Topology : Full-Mesh
Role : Spoke
Server Status : Up
Registration time : Thu Feb 28 18:42:25 2019
Update time : Thu Feb 28 15:57:18 2019
Poll time : Fri Mar 1 15:02:28 2019

 l Branch_1 # diagnose vpn ocvpn show-meta


Topology :: auto
License :: full
Members :: 3
Max-free :: 3

 l Branch_1 # diagnose vpn ocvpn show-overlays


QA
PM

 l Branch_1 # diagnose vpn ocvpn show-members


Member: { "SN": "FG100D3G15801621", "IPv4": "172.16.200.1", "port": "500", "slot": 1000,
"overlay": [ { "id": 0, "name": "QA", "subnets": [ "10.1.100.0\/255.255.255.0" ], "ip_
range": "0.0.0.0-0.0.0.0" }, { "id": 1, "name": "PM", "subnets": [
"10.2.100.0\/255.255.255.0" ], "ip_range": "0.0.0.0-0.0.0.0" } ], "Name": "FortiGate-
100D", "topology_role": "spoke" }
Member: { "SN": "FG900D3915800083", "IPv4": "172.16.200.4", "port": "500", "slot": 1001,
"overlay": [ { "id": 0, "name": "QA", "subnets": [ "172.16.101.0\/255.255.255.0" ], "ip_
range": "0.0.0.0-0.0.0.0" }, { "id": 1, "name": "PM", "subnets": [
"172.16.102.0\/255.255.255.0" ], "ip_range": "0.0.0.0-0.0.0.0" } ], "Name": "Branch3",
"topology_role": "spoke" }
Member: { "SN": "FGT51E3U16001314", "IPv4": "172.16.200.199", "port": "500", "slot":
1002, "overlay": [ { "id": 0, "name": "QA", "subnets": [ "192.168.4.0\/255.255.255.0" ],
"ip_range": "0.0.0.0-0.0.0.0" }, { "id": 1, "name": "PM", "subnets": [
"192.168.5.0\/255.255.255.0" ], "ip_range": "0.0.0.0-0.0.0.0" } ], "Name": "Branch2",
"topology_role": "spoke" }

FortiOS 6.4.6 Administration Guide 1472


Fortinet Technologies Inc.
VPN

 l Branch_1 # diagnose vpn tunnel list


list all ipsec tunnel in vd 0
------------------------------------------------------
name=_OCVPN2-3.1 ver=2 serial=4 172.16.200.1:0->172.16.200.199:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=2 child_num=0 refcnt=13 ilast=7 olast=0 ad=/0


stat: rxp=0 txp=7 rxb=0 txb=588
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=6
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-3.1 proto=0 sa=1 ref=2 serial=8 auto-negotiate
src: 0:10.1.100.0-10.1.100.255:0
dst: 0:192.168.4.0-192.168.4.255:0
SA: ref=3 options=18627 type=00 soft=0 mtu=1438 expire=42923/0B replaywin=2048
seqno=8 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42931/43200
dec: spi=c34bb752 esp=aes key=16 3c5ceeff3cac1eaa2702b5ccb713ab9b
ah=sha1 key=20 5903e358b3d8938ee64f0412887a0fe741ccb105
enc: spi=b5bd4fe1 esp=aes key=16 8ae97a8abe24dae725d614d2a6efdcb0
ah=sha1 key=20 9ec200d9c0cef9e1b7cf76e05dbf344c70f53214
dec:pkts/bytes=0/0, enc:pkts/bytes=7/1064
proxyid=_OCVPN2-3.1 proto=0 sa=0 ref=2 serial=1 auto-negotiate
src: 0:10.1.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
------------------------------------------------------
name=_OCVPN2-4.1 ver=2 serial=6 172.16.200.1:0->172.16.200.4:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=2 child_num=0 refcnt=11 ilast=19 olast=19 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-4.1 proto=0 sa=1 ref=2 serial=7 auto-negotiate
src: 0:10.1.100.0-10.1.100.255:0
dst: 0:172.16.101.0-172.16.101.255:0
SA: ref=3 options=18627 type=00 soft=0 mtu=1438 expire=42911/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42931/43200
dec: spi=c34bb750 esp=aes key=16 8c9844a8bcd3fda6c7bd8a4f2ec81ef1
ah=sha1 key=20 680c7144346f5b52126cbad9f325821b048c7192
enc: spi=f2d1f2d4 esp=aes key=16 f9625fc8590152829eb39eecab3a3999
ah=sha1 key=20 5df8447416da541fa54dde9fa3e5c35fbfc4723f
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
proxyid=_OCVPN2-4.1 proto=0 sa=0 ref=2 serial=1 auto-negotiate
src: 0:10.1.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
------------------------------------------------------
name=_OCVPN2-3.2 ver=2 serial=3 172.16.200.1:0->172.16.200.199:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=2 child_num=0 refcnt=11 ilast=6 olast=6 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0

FortiOS 6.4.6 Administration Guide 1473


Fortinet Technologies Inc.
VPN

natt: mode=none draft=0 interval=0 remote_port=0


proxyid=_OCVPN2-3.2 proto=0 sa=1 ref=2 serial=8 auto-negotiate
src: 0:10.2.100.0-10.2.100.255:0
dst: 0:192.168.5.0-192.168.5.255:0
SA: ref=3 options=18627 type=00 soft=0 mtu=1438 expire=42923/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42930/43200
dec: spi=c34bb753 esp=aes key=16 58ddfad9a3699f1c49f3a9f369145c28
ah=sha1 key=20 e749c7e6a7aaff119707c792eb73cd975127873b
enc: spi=b5bd4fe2 esp=aes key=16 8f2366e653f5f9ad6587be1ce1905764
ah=sha1 key=20 5347bf24e51219d483c0f7b058eceab202026204
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
proxyid=_OCVPN2-3.2 proto=0 sa=0 ref=2 serial=1 auto-negotiate
src: 0:10.2.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
------------------------------------------------------
name=_OCVPN2-4.2 ver=2 serial=5 172.16.200.1:0->172.16.200.4:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=2 child_num=0 refcnt=11 ilast=17 olast=17 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-4.2 proto=0 sa=1 ref=2 serial=7 auto-negotiate
src: 0:10.2.100.0-10.2.100.255:0
dst: 0:172.16.102.0-172.16.102.255:0
SA: ref=3 options=18627 type=00 soft=0 mtu=1438 expire=42905/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42927/43200
dec: spi=c34bb751 esp=aes key=16 41449ee5ea43d3e1f80df05fc632cd44
ah=sha1 key=20 3ca2aea1c8764f35ccf987cdeca7cf6eb54331fb
enc: spi=f2d1f2d5 esp=aes key=16 9010dd57e502c6296b27a4649a45a6ba
ah=sha1 key=20 caf86a176ce04464221543f15fc3c63fc573b8ee
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
proxyid=_OCVPN2-4.2 proto=0 sa=0 ref=2 serial=1 auto-negotiate
src: 0:10.2.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0

 l Branch_1 # get router info routing-table all


Routing table for VRF=0
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

S* 0.0.0.0/0 [10/0] via 172.16.200.254, port1


C 10.1.100.0/24 is directly connected, dmz
C 10.2.100.0/24 is directly connected, loop
C 11.101.1.0/24 is directly connected, wan1
C 11.102.1.0/24 is directly connected, wan2
S 192.168.5.0/24 [20/0] is directly connected, _OCVPN2-3.2
C 172.16.200.0/24 is directly connected, port1
S 172.16.101.0/24 [20/0] is directly connected, _OCVPN2-4.1

FortiOS 6.4.6 Administration Guide 1474


Fortinet Technologies Inc.
VPN

S 172.16.102.0/24 [20/0] is directly connected, _OCVPN2-4.2


S 192.168.4.0/24 [20/0] is directly connected, _OCVPN2-3.1

Troubleshooting hub-spoke with ADVPN shortcut

 l Primary-Hub # diagnose vpn ocvpn status


Current State : Registered
Topology : Dual-Hub-Spoke
Role : Primary-Hub
Server Status : Up
Registration time : Sat Mar 2 11:31:54 2019
Poll time : Sat Mar 2 11:46:02 2019

 l Spoke1 # diagnose vpn ocvpn status


Current State : Registered
Topology : Dual-Hub-Spoke
Role : Spoke
Server Status : Up
Registration time : Sat Mar 2 11:41:22 2019
Poll time : Sat Mar 2 11:46:44 2019

 l Primary-Hub # diagnose vpn ocvpn show-members


Member: { "sn": "FG900D3915800083", "ip_v4": "172.16.200.4", "port": 500, "slot": 0,
"overlay": [ { "id": 0, "name": "QA", "subnets": [ "172.16.101.0\/255.255.255.0" ], "ip_
range": "0.0.0.0-0.0.0.0" }, { "id": 1, "name": "PM", "subnets": [
"172.16.102.0\/255.255.255.0" ], "ip_range": "0.0.0.0-0.0.0.0" } ], "name": "Primary-
Hub", "topology_role": "primary_hub", "eap": "disable", "auto_discovery": "enable" }
Member: { "sn": "FG100D3G15828488", "ip_v4": "172.16.200.2", "port": 500, "slot": 1,
"overlay": [ { "id": 0, "name": "QA", "subnets": [ "172.16.101.0\/255.255.255.0" ], "ip_
range": "0.0.0.0-0.0.0.0" }, { "id": 1, "name": "PM", "subnets": [
"172.16.102.0\/255.255.255.0" ], "ip_range": "0.0.0.0-0.0.0.0" } ], "name": "Secondary-
Hub", "topology_role": "secondary_hub", "eap": "disable", "auto_discovery": "enable" }
Member: { "sn": "FG100D3G15801621", "ip_v4": "172.16.200.1", "port": 500, "slot": 1000,
"overlay": [ { "id": 0, "name": "QA", "subnets": [ "10.1.100.0\/255.255.255.0" ], "ip_
range": "0.0.0.0-0.0.0.0" }, { "id": 1, "name": "PM", "subnets": [
"10.2.100.0\/255.255.255.0" ], "ip_range": "0.0.0.0-0.0.0.0" } ], "name": "Spoke1",
"topology_role": "spoke" }
Member: { "sn": "FGT51E3U16001314", "ip_v4": "172.16.200.3", "port": 500, "slot": 1001,
"overlay": [ { "id": 0, "name": "QA", "subnets": [ "192.168.4.0\/255.255.255.0" ], "ip_
range": "0.0.0.0-0.0.0.0" }, { "id": 1, "name": "PM", "subnets": [
"192.168.5.0\/255.255.255.0" ], "ip_range": "0.0.0.0-0.0.0.0" } ], "name": "Spoke2",
"topology_role": "spoke" }

 l Primary-Hub # diagnose vpn ocvpn show-meta


Topology :: auto
License :: full
Members :: 4
Max-free :: 3

 l Primary-Hub # diagnose vpn ocvpn show-overlays


QA
PM

FortiOS 6.4.6 Administration Guide 1475


Fortinet Technologies Inc.
VPN

 l Spoke1 # diagnose vpn tunnel list


list all ipsec tunnel in vd 0
------------------------------------------------------
name=_OCVPN2-0.0 ver=2 serial=6 172.16.200.1:0->172.16.200.4:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=1 child_num=0 refcnt=11 ilast=0 olast=0 ad=r/2


stat: rxp=1 txp=34 rxb=152 txb=2856
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=46
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-0.0 proto=0 sa=1 ref=2 serial=1 auto-negotiate adr
src: 0:10.1.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=1a227 type=00 soft=0 mtu=1438 expire=42895/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42901/43200
dec: spi=048477c7 esp=aes key=16 240e064c0f1c980ca31980b9e7605c9d
ah=sha1 key=20 6ff022cbebcaff4c5de62eefb2e6180c40a3adb2
enc: spi=dfcffa86 esp=aes key=16 862208de164a02af377756c2bcabd588
ah=sha1 key=20 af6e54781fd42d7a2ba2119ec95d0f95629c8448
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
------------------------------------------------------
name=_OCVPN2-1.0 ver=2 serial=8 172.16.200.1:0->172.16.200.2:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=0

proxyid_num=1 child_num=0 refcnt=10 ilast=934 olast=934 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=20000ms retry=3 count=0 seqno=1
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-1.0 proto=0 sa=0 ref=2 serial=1 auto-negotiate adr
src: 0:10.1.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
------------------------------------------------------
name=_OCVPN2-0.1 ver=2 serial=5 172.16.200.1:0->172.16.200.4:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=1 child_num=0 refcnt=11 ilast=12 olast=12 ad=r/2


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=46
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-0.1 proto=0 sa=1 ref=2 serial=1 auto-negotiate adr
src: 0:10.2.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=1a227 type=00 soft=0 mtu=1438 expire=42895/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42901/43200
dec: spi=048477c8 esp=aes key=16 701ec608767f4988b76c2f662464e654
ah=sha1 key=20 93c65d106dc610d7ee3f04487f08601a9e00ffdd
enc: spi=dfcffa87 esp=aes key=16 02b2d04dce3d81ebab69e128d45cb7ca
ah=sha1 key=20 4a9283847f852c83a75691fad44d07d8409a2267
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
------------------------------------------------------
name=_OCVPN2-1.1 ver=2 serial=7 172.16.200.1:0->172.16.200.2:0 dst_mtu=1500

FortiOS 6.4.6 Administration Guide 1476


Fortinet Technologies Inc.
VPN

bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev


frag-rfc accept_traffic=0

proxyid_num=1 child_num=0 refcnt=10 ilast=934 olast=934 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=20000ms retry=3 count=0 seqno=1
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-1.1 proto=0 sa=0 ref=2 serial=1 auto-negotiate adr
src: 0:10.2.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0

 l Spoke1 # get router info routing-table all


Routing table for VRF=0
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

S* 0.0.0.0/0 [10/0] via 172.16.200.254, port1


C 10.1.100.0/24 is directly connected, dmz
C 10.2.100.0/24 is directly connected, loop
C 11.101.1.0/24 is directly connected, wan1
C 11.102.1.0/24 is directly connected, wan2
S 172.16.102.0/24 [20/0] is directly connected, _OCVPN2-0.1
C 172.16.200.0/24 is directly connected, port1
S 172.16.101.0/24 [20/0] is directly connected, _OCVPN2-0.0
S 192.168.4.0/24 [20/0] is directly connected, _OCVPN2-0.0
S 192.168.5.0/24 [20/0] is directly connected, _OCVPN2-0.1

 l Generate traffic from spoke1 to spoke2 to trigger the ADVPN shortcut and check the VPN tunnel and routing-table 
again on spoke1.
branch1 # diagnose vpn tunnel list
list all ipsec tunnel in vd 0
------------------------------------------------------
name=_OCVPN2-0.0_0 ver=2 serial=a 172.16.200.1:0->172.16.200.3:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/720 options
[02d0]=create_dev no-sysctl rgwy-chg frag-rfc accept_traffic=1

parent=_OCVPN2-0.0 index=0
proxyid_num=1 child_num=0 refcnt=14 ilast=0 olast=0 ad=r/2
stat: rxp=7 txp=7 rxb=1064 txb=588
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-0.0 proto=0 sa=1 ref=2 serial=1 auto-negotiate add-route adr
src: 0:10.1.100.0-10.1.100.255:0
dst: 0:192.168.4.0-192.168.4.255:0
SA: ref=3 options=1a227 type=00 soft=0 mtu=1438 expire=43180/0B replaywin=2048
seqno=8 esn=0 replaywin_lastseq=00000008 itn=0 qat=0
life: type=01 bytes=0/0 timeout=43187/43200
dec: spi=048477c9 esp=aes key=16 27c35d53793013ef24cf887561e9f313
ah=sha1 key=20 2c8cfd328c3b29104db0ca74a00c6063f46cafe4
enc: spi=fb9e13fd esp=aes key=16 9d0d3bf6c84b7ddaf9d9196fe74002ed
ah=sha1 key=20 d1f541db787dea384c6a4df16fc228abeb7ae334

FortiOS 6.4.6 Administration Guide 1477


Fortinet Technologies Inc.
VPN

dec:pkts/bytes=7/588, enc:pkts/bytes=7/1064
------------------------------------------------------
name=_OCVPN2-0.0 ver=2 serial=6 172.16.200.1:0->172.16.200.4:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=1 child_num=1 refcnt=12 ilast=7 olast=7 ad=r/2


stat: rxp=2 txp=35 rxb=304 txb=2940
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=65
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-0.0 proto=0 sa=1 ref=2 serial=1 auto-negotiate adr
src: 0:10.1.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=1a227 type=00 soft=0 mtu=1438 expire=42500/0B replaywin=2048
seqno=2 esn=0 replaywin_lastseq=00000002 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42901/43200
dec: spi=048477c7 esp=aes key=16 240e064c0f1c980ca31980b9e7605c9d
ah=sha1 key=20 6ff022cbebcaff4c5de62eefb2e6180c40a3adb2
enc: spi=dfcffa86 esp=aes key=16 862208de164a02af377756c2bcabd588
ah=sha1 key=20 af6e54781fd42d7a2ba2119ec95d0f95629c8448
dec:pkts/bytes=1/84, enc:pkts/bytes=1/152
------------------------------------------------------
name=_OCVPN2-1.0 ver=2 serial=8 172.16.200.1:0->172.16.200.2:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=0

proxyid_num=1 child_num=0 refcnt=10 ilast=1328 olast=1328 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=20000ms retry=3 count=0 seqno=1
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-1.0 proto=0 sa=0 ref=2 serial=1 auto-negotiate adr
src: 0:10.1.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
------------------------------------------------------
name=_OCVPN2-0.1 ver=2 serial=5 172.16.200.1:0->172.16.200.4:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=1 child_num=0 refcnt=11 ilast=5 olast=5 ad=r/2


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=66
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-0.1 proto=0 sa=1 ref=2 serial=1 auto-negotiate adr
src: 0:10.2.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=1a227 type=00 soft=0 mtu=1438 expire=42500/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42901/43200
dec: spi=048477c8 esp=aes key=16 701ec608767f4988b76c2f662464e654
ah=sha1 key=20 93c65d106dc610d7ee3f04487f08601a9e00ffdd
enc: spi=dfcffa87 esp=aes key=16 02b2d04dce3d81ebab69e128d45cb7ca
ah=sha1 key=20 4a9283847f852c83a75691fad44d07d8409a2267
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
------------------------------------------------------
name=_OCVPN2-1.1 ver=2 serial=7 172.16.200.1:0->172.16.200.2:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev

FortiOS 6.4.6 Administration Guide 1478


Fortinet Technologies Inc.
VPN

frag-rfc accept_traffic=0

proxyid_num=1 child_num=0 refcnt=10 ilast=1328 olast=1328 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=20000ms retry=3 count=0 seqno=1
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-1.1 proto=0 sa=0 ref=2 serial=1 auto-negotiate adr
src: 0:10.2.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0

Routing table for VRF=0


Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

S* 0.0.0.0/0 [10/0] via 172.16.200.254, port1


C 10.1.100.0/24 is directly connected, dmz
C 10.2.100.0/24 is directly connected, loop
C 11.101.1.0/24 is directly connected, wan1
C 11.102.1.0/24 is directly connected, wan2
S 172.16.102.0/24 [20/0] is directly connected, _OCVPN2-0.1
C 172.16.200.0/24 is directly connected, port1
S 172.16.101.0/24 [20/0] is directly connected, _OCVPN2-0.0
S 192.168.4.0/24 [15/0] via 172.16.200.3, _OCVPN2-0.0_0
S 192.168.5.0/24 [20/0] is directly connected, _OCVPN2-0.1

 l Simulate the primary hub being unavailable where all spokes' dialup VPN tunnels will switch to the secondary hub, 
to check VPN tunnel status and routing-table.
list all ipsec tunnel in vd 0
------------------------------------------------------
name=_OCVPN2-0.0 ver=2 serial=6 172.16.200.1:0->172.16.200.4:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=0

proxyid_num=1 child_num=0 refcnt=10 ilast=25 olast=25 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=20000ms retry=3 count=0 seqno=82
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-0.0 proto=0 sa=0 ref=2 serial=1 auto-negotiate adr
src: 0:10.1.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
------------------------------------------------------
name=_OCVPN2-1.0 ver=2 serial=8 172.16.200.1:0->172.16.200.2:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=1 child_num=0 refcnt=11 ilast=14 olast=14 ad=r/2


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=9
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-1.0 proto=0 sa=1 ref=2 serial=1 auto-negotiate adr
src: 0:10.1.100.0/255.255.255.0:0

FortiOS 6.4.6 Administration Guide 1479


Fortinet Technologies Inc.
VPN

dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=1a227 type=00 soft=0 mtu=1438 expire=42723/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42898/43200
dec: spi=048477cd esp=aes key=16 9bb363a32378b5897cd42890c92df811
ah=sha1 key=20 2ed40583b9544e37867349b4adc7c013024d7e17
enc: spi=f345fb42 esp=aes key=16 3ea31dff3310b245700a131db4565851
ah=sha1 key=20 522862dfb232514b845e436133b148da0e67b7c4
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
------------------------------------------------------
name=_OCVPN2-0.1 ver=2 serial=5 172.16.200.1:0->172.16.200.4:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=0

proxyid_num=1 child_num=0 refcnt=10 ilast=19 olast=19 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=20000ms retry=3 count=0 seqno=83
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-0.1 proto=0 sa=0 ref=2 serial=1 auto-negotiate adr
src: 0:10.2.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
------------------------------------------------------
name=_OCVPN2-1.1 ver=2 serial=7 172.16.200.1:0->172.16.200.2:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=1 child_num=0 refcnt=11 ilast=12 olast=12 ad=r/2


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=9
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-1.1 proto=0 sa=1 ref=2 serial=1 auto-negotiate adr
src: 0:10.2.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=1a227 type=00 soft=0 mtu=1438 expire=42728/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42902/43200
dec: spi=048477cf esp=aes key=16 b6f0ca7564abcd8559b5b0ebb3fd04c1
ah=sha1 key=20 4130d040554b39daca72adac7583b9cc83cce3c8
enc: spi=f345fb43 esp=aes key=16 727582f20fcedff884ba693ed2164bcd
ah=sha1 key=20 b0a625803fde701ed9d28d256079e908954b7fc8
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0

Routing table for VRF=0


Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default

S* 0.0.0.0/0 [10/0] via 172.16.200.254, port1


C 10.1.100.0/24 is directly connected, dmz
C 10.2.100.0/24 is directly connected, loop
C 11.101.1.0/24 is directly connected, wan1
C 11.102.1.0/24 is directly connected, wan2

FortiOS 6.4.6 Administration Guide 1480


Fortinet Technologies Inc.
VPN

S 172.16.102.0/24 [21/0] is directly connected, _OCVPN2-1.1


C 172.16.200.0/24 is directly connected, port1
S 172.16.101.0/24 [21/0] is directly connected, _OCVPN2-1.0
S 192.168.4.0/24 [21/0] is directly connected, _OCVPN2-1.0
S 192.168.5.0/24 [21/0] is directly connected, _OCVPN2-1.1

Troubleshooting hub-spoke with inter-overlay source NAT

 l Primary-Hub # diagnose vpn ocvpn status


Current State : Registered
Topology : Dual-Hub-Spoke
Role : Primary-Hub
Server Status : Up
Registration time : Sat Mar 2 11:31:54 2019
Update time : Sat Mar 2 13:57:05 2019
Poll time : Sat Mar 2 14:03:31 2019

 l Spoke1 # diagnose vpn ocvpn status


Current State : Registered
Topology : Dual-Hub-Spoke
Role : Spoke
Server Status : Up
Registration time : Sat Mar 2 13:58:01 2019
Poll time : Sat Mar 2 14:04:22 2019

 l Primary-Hub # diagnose vpn ocvpn show-members


Member: { "sn": "FG900D3915800083", "ip_v4": "172.16.200.4", "port": 500, "slot": 0,
"overlay": [ { "id": 0, "name": "QA", "subnets": [ "172.16.101.0\/255.255.255.0" ], "ip_
range": "172.16.101.100-172.16.101.200" }, { "id": 1, "name": "PM", "subnets": [
"172.16.102.0\/255.255.255.0" ], "ip_range": "172.16.102.100-172.16.102.200" } ],
"name": "Primary-Hub", "topology_role": "primary_hub", "eap": "disable", "auto_
discovery": "enable" }
Member: { "sn": "FG100D3G15828488", "ip_v4": "172.16.200.2", "port": 500, "slot": 1,
"overlay": [ { "id": 0, "name": "QA", "subnets": [ "172.16.101.0\/255.255.255.0" ], "ip_
range": "0.0.0.0-0.0.0.0" }, { "id": 1, "name": "PM", "subnets": [
"172.16.102.0\/255.255.255.0" ], "ip_range": "0.0.0.0-0.0.0.0" } ], "name": "Secondary-
Hub", "topology_role": "secondary_hub", "eap": "disable", "auto_discovery": "enable" }
Member: { "sn": "FGT51E3U16001314", "ip_v4": "172.16.200.3", "port": 500, "slot": 1001,
"overlay": [ { "id": 0, "name": "QA", "subnets": [ "192.168.4.0\/255.255.255.0" ], "ip_
range": "0.0.0.0-0.0.0.0" }, { "id": 1, "name": "PM", "subnets": [
"192.168.5.0\/255.255.255.0" ], "ip_range": "0.0.0.0-0.0.0.0" } ], "name": "Spoke2",
"topology_role": "spoke" }
Member: { "sn": "FG100D3G15801621", "ip_v4": "172.16.200.1", "port": 500, "slot": 1000,
"overlay": [ { "id": 0, "name": "QA", "subnets": [ "10.1.100.0\/255.255.255.0" ], "ip_
range": "0.0.0.0-0.0.0.0" }, { "id": 1, "name": "PM", "subnets": [
"10.2.100.0\/255.255.255.0" ], "ip_range": "0.0.0.0-0.0.0.0" } ], "name": "Spoke1",
"topology_role": "spoke" }

 l Primary-Hub # diagnose vpn ocvpn show-meta


Topology :: auto
License :: full
Members :: 4
Max-free :: 3

FortiOS 6.4.6 Administration Guide 1481


Fortinet Technologies Inc.
VPN

 l Primary-Hub # diagnose vpn ocvpn show-overlays


QA
PM

 l Spoke1 # diagnose vpn tunnel list


list all ipsec tunnel in vd 0
------------------------------------------------------
name=_OCVPN2-0.0 ver=2 serial=c 172.16.200.1:0->172.16.200.4:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=3 child_num=0 refcnt=13 ilast=17 olast=17 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=29
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-0.0 proto=0 sa=1 ref=2 serial=1 auto-negotiate
src: 0:10.1.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=18227 type=00 soft=0 mtu=1438 expire=42299/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42899/43200
dec: spi=0484795d esp=aes key=16 10eeb76fadd49f00c333350d83509095
ah=sha1 key=20 971bde5dcfca7e52fd1573cb3489e9c855f6154e
enc: spi=dfcffaaa esp=aes key=16 d07a4dd683ee093af2dca9485aa436eb
ah=sha1 key=20 65369be35d5ecad8cae63557318419cd6005c230
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
proxyid=_OCVPN2-0.0_nat proto=0 sa=1 ref=2 serial=3 auto-negotiate
src: 0:172.16.101.101-172.16.101.101:0
dst: 0:0.0.0.0-255.255.255.255:0
SA: ref=3 options=18627 type=00 soft=0 mtu=1438 expire=42303/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42898/43200
dec: spi=04847961 esp=aes key=16 ea181036b02e8bc8711fb520b3e98a60
ah=sha1 key=20 b3c449d96d5d3f090975087a62447f6918ce7930
enc: spi=dfcffaac esp=aes key=16 f7ea5e42e9443698e6b8b32161ace40e
ah=sha1 key=20 a7e36dd1ec0bdb6eff0aa66e442707427400c700
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
proxyid=_OCVPN2-0.0_nat proto=0 sa=0 ref=2 serial=2 auto-negotiate
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
------------------------------------------------------
name=_OCVPN2-1.0 ver=2 serial=e 172.16.200.1:0->172.16.200.2:0 dst_mtu=0
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=2 child_num=0 refcnt=10 ilast=599 olast=599 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-1.0 proto=0 sa=0 ref=2 serial=1 auto-negotiate
src: 0:10.1.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
proxyid=_OCVPN2-1.0_nat proto=0 sa=0 ref=2 serial=2 auto-negotiate
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0

FortiOS 6.4.6 Administration Guide 1482


Fortinet Technologies Inc.
VPN

------------------------------------------------------
name=_OCVPN2-0.1 ver=2 serial=b 172.16.200.1:0->172.16.200.4:0 dst_mtu=1500
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=3 child_num=0 refcnt=13 ilast=17 olast=17 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=29
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-0.1 proto=0 sa=1 ref=2 serial=1 auto-negotiate
src: 0:10.2.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=18227 type=00 soft=0 mtu=1438 expire=42297/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42897/43200
dec: spi=0484795e esp=aes key=16 106eaa95a2be64b566e7d1ca0aa88f6a
ah=sha1 key=20 5dddfba7070b03d5a31931d41db06ff96e7bc542
enc: spi=dfcffaab esp=aes key=16 29c774dbd7e54464ee298c381e71a94e
ah=sha1 key=20 c3da7372789c0a53b3752e69baaba1a42d798820
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
proxyid=_OCVPN2-0.1_nat proto=0 sa=1 ref=2 serial=3 auto-negotiate
src: 0:172.16.102.101-172.16.102.101:0
dst: 0:0.0.0.0-255.255.255.255:0
SA: ref=3 options=18627 type=00 soft=0 mtu=1438 expire=42307/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0
life: type=01 bytes=0/0 timeout=42902/43200
dec: spi=04847962 esp=aes key=16 b7daa5807cfa86906592a012a9d2478f
ah=sha1 key=20 39c8bb4c9e3f1e9e451f22c58a172ff01155055d
enc: spi=dfcffaad esp=aes key=16 2ecc644def4cebe6b0c4b7729da43d8e
ah=sha1 key=20 469c6f319e83bd73468f55d430566afcd6215138
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
proxyid=_OCVPN2-0.1_nat proto=0 sa=0 ref=2 serial=2 auto-negotiate
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
------------------------------------------------------
name=_OCVPN2-1.1 ver=2 serial=d 172.16.200.1:0->172.16.200.2:0 dst_mtu=0
bound_if=11 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/528 options[0210]=create_dev
frag-rfc accept_traffic=1

proxyid_num=2 child_num=0 refcnt=10 ilast=599 olast=599 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=_OCVPN2-1.1 proto=0 sa=0 ref=2 serial=1 auto-negotiate
src: 0:10.2.100.0/255.255.255.0:0
dst: 0:0.0.0.0/0.0.0.0:0
proxyid=_OCVPN2-1.1_nat proto=0 sa=0 ref=2 serial=2 auto-negotiate
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0

 l Spoke1 # get router info routing-table all


Routing table for VRF=0
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2

FortiOS 6.4.6 Administration Guide 1483


Fortinet Technologies Inc.
VPN

i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area


* - candidate default

S* 0.0.0.0/0 [10/0] via 172.16.200.254, port1


C 10.1.100.0/24 is directly connected, dmz
C 10.2.100.0/24 is directly connected, loop
C 11.101.1.0/24 is directly connected, wan1
C 11.102.1.0/24 is directly connected, wan2
S 172.16.101.0/24 [20/0] is directly connected, _OCVPN2-0.1
C 172.16.101.101/32 is directly connected, _OCVPN2-0.1
C 172.16.200.0/24 is directly connected, port1
S 172.16.102.0/24 [20/0] is directly connected, _OCVPN2-0.0
C 172.16.102.101/32 is directly connected, _OCVPN2-0.0
S 192.168.4.0/24 [20/0] is directly connected, _OCVPN2-0.0
S 192.168.5.0/24 [20/0] is directly connected, _OCVPN2-0.1

 l Spoke1 # show firewall policy


..............................

edit 9
set name "_OCVPN2-1.1_nat"
set uuid 3f7a84b8-3d36-51e9-ee97-8f418c91e666
set srcintf "any"
set dstintf "_OCVPN2-1.1"
set srcaddr "all"
set dstaddr "_OCVPN2-1.1_remote_networks"
set action accept
set schedule "always"
set service "ALL"
set comments "Generated by OCVPN Cloud Service."
set nat enable
next
edit 12
set name "_OCVPN2-1.0_nat"
set uuid 3fafec98-3d36-51e9-80c0-5d99325bad83
set srcintf "any"
set dstintf "_OCVPN2-1.0"
set srcaddr "all"
set dstaddr "_OCVPN2-1.0_remote_networks"
set action accept
set schedule "always"
set service "ALL"
set comments "Generated by OCVPN Cloud Service."
set nat enable
next
.................................

FortiOS 6.4.6 Administration Guide 1484


Fortinet Technologies Inc.
VPN

ADVPN

Auto-Discovery VPN (ADVPN) allows the central hub to dynamically inform spokes about a better path for traffic 
between two spokes.
The following topics provide instructions on configuring ADVPN:
 l IPsec VPN wizard hub-and-spoke ADVPN support on page 1485
 l ADVPN with BGP as the routing protocol on page 1489
 l ADVPN with OSPF as the routing protocol on page 1498
 l ADVPN with RIP as the routing protocol on page 1507
 l UDP hole punching for spokes behind NAT on page 1516

IPsec VPN wizard hub-and-spoke ADVPN support

When using the IPsec VPN wizard to create a hub and spoke VPN, multiple local interfaces can be selected. At the end 
of the wizard, changes can be reviewed, real-time updates can be made to the local address group and tunnel interface, 
and easy configuration keys can be copied for configuring the spokes.
When editing a VPN tunnel, the Hub & Spoke Topology section provides access to the easy configuration keys for the 
spokes, and allows you to add more spokes.
This example shows the configuration of a hub with two spokes.

FortiOS 6.4.6 Administration Guide 1485


Fortinet Technologies Inc.
VPN

To configure the hub:

 1. Go to VPN > IPsec Wizard.


 2. Go through the steps of the wizard:
 a. VPN Setup:

Name hub

Template Type Hub-and-Spoke

Role Hub

 b. Authentication:

Incoming Interface port1

Authentication method Pre-shared Key

Pre-shared key <key>

 c. Tunnel Interface:

Tunnel IP 10.10.1.1

Remote IP/netmask 10.10.1.2/24

 d. Policy & Routing:


Multiple local interfaces and subnets can be configured.

Local AS 65400

Local interface port3


port4

Local subnets 174.16.101.0/24


173.1.1.0/24

Spoke #1 tunnel IP 10.10.1.3

Spoke #2 tunnel IP 10.10.1.4

FortiOS 6.4.6 Administration Guide 1486


Fortinet Technologies Inc.
VPN

 e. Review Settings:


Confirm that the settings look correct, then click Create.
 3. The summary shows details about the set up hub:
 l The Local address group and Tunnel interface can be edited directly on this page.
 l Spoke easy configuration keys can be used to quickly configure the spokes.

 4. Click Show Tunnel List to go to VPN > IPsec Tunnels. 


 5. Edit the VPN tunnel to add more spokes and to copy the spokes' easy configuration keys.

FortiOS 6.4.6 Administration Guide 1487


Fortinet Technologies Inc.
VPN

To configure the spokes:

 1. Go to VPN > IPsec Wizard.


 2. On the VPN Setup page of the wizard, enter the following:

Name spoke1

Template Type Hub-and-Spoke

Role Spoke

 3.  In the Easy configuration key field, paste the Spoke #1 key from the hub FortiGate, click Apply, then click Next.

 4. Adjust the Authentication settings as required, enter the Pre-shared key, then click Next.


 5. Adjust the Tunnel Interface settings as required, then click Next.
 6. Configure the Policy & Routing settings, then click Next:

Local interface wan2

Local subnets 10.1.100.0/24

 7. Review the settings, then click Create.
 8. The summary shows details about the set up spoke. The Local address group and Tunnel interface can be edited 
directly on this page.
 9. Follow the same steps to configure the second spoke.

To check that the tunnels are created and working:

 1. On the hub FortiGate, go to Dashboard > Network and expand the IPsec widget.


The tunnels to the spokes are established.

FortiOS 6.4.6 Administration Guide 1488


Fortinet Technologies Inc.
VPN

 2. On a spoke, go to Dashboard > Network and expand the IPsec widget.


The tunnel to the hub and the spoke to spoke shortcut are established.

ADVPN with BGP as the routing protocol

This is a sample configuration of ADVPN with BGP as the routing protocol. The following options must be enabled for 
this configuration:
 l On the hub FortiGate, IPsec phase1-interface net-device disable must be run.
 l IBGP must be used between the hub and spoke FortiGates.
 l bgp neighbor-group/neighbor-range must be reused.

Because the GUI can only complete part of the configuration, we recommend using the CLI.

To configure ADVPN with BGP as the routing protocol using the CLI:

 1. Configure hub FortiGate's WAN, internal interface, and static route.
config system interface
edit "port9"
set alias "WAN"
set ip 22.1.1.1 255.255.255.0
next
edit "port10"
set alias "Internal"

FortiOS 6.4.6 Administration Guide 1489


Fortinet Technologies Inc.
VPN

set ip 172.16.101.1 255.255.255.0


next
end
config router static
edit 1
set gateway 22.1.1.2
set device "port9"
next
end

 2. Configure the hub FortiGate.
 a. Configure the hub FortiGate IPsec phase1-interface and phase2-interface.   
config vpn ipsec phase1-interface
edit "advpn-hub"
set type dynamic
set interface "port9"
set peertype any
set net-device disable
set proposal aes128-sha256 aes256-sha256 3des-sha256 aes128-sha1 aes256-sha1
3des-sha1
set add-route disable
set dpd on-idle
set auto-discovery-sender enable
set tunnel-search nexthop
set psksecret sample
set dpd-retryinterval 5
next
end
config vpn ipsec phase2-interface
edit "advpn-hub"
set phase1name "advpn-hub"
set proposal aes128-sha1 aes256-sha1 3des-sha1 aes128-sha256 aes256-sha256
3des-sha256
next
end

 b. Configure the hub FortiGate firewall policy. 
config firewall policy
edit 1
set name "spoke2hub"
set srcintf "advpn-hub"
set dstintf "port10"
set srcaddr "all"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "spoke2spoke"
set srcintf "advpn-hub"
set dstintf "advpn-hub"
set srcaddr "all"
set dstaddr "all"
set action accept

FortiOS 6.4.6 Administration Guide 1490


Fortinet Technologies Inc.
VPN

set schedule "always"


set service "ALL"
next
end

 c. Configure the hub FortiGate's IPsec tunnel interface IP address.   
config system interface
edit "advpn-hub1"
set ip 10.10.10.254 255.255.255.255
set remote-ip 10.10.10.253 255.255.255.0
next
end

 d. Configure the hub FortiGate's BGP.
config router bgp
set as 65412
config neighbor-group
edit "advpn"
set link-down-failover enable
set remote-as 65412
set route-reflector-client enable
next
end
config neighbor-range
edit 1
set prefix 10.10.10.0 255.255.255.0
set neighbor-group "advpn"
next
end
config network
edit 1
set prefix 172.16.101.0 255.255.255.0
next
end
end

 3. Configure the spoke FortiGates.
 a.  Configure the spoke FortiGates' WAN, internal interfaces, and static routes.   
 i. Configure Spoke1.
config system interface
edit "wan1"
set alias "primary_WAN"
set ip 15.1.1.2 255.255.255.0
next
edit "wan2"
set alias "secondary_WAN"
set ip 12.1.1.2 255.255.255.0
next
edit "internal"
set ip 10.1.100.1 255.255.255.0
next
end
config router static
edit 1
set gateway 12.1.1.1

FortiOS 6.4.6 Administration Guide 1491


Fortinet Technologies Inc.
VPN

set device "wan2"


set distance 15
next
edit 2
set gateway 15.1.1.1
set device "wan1"
next
end

 ii. Configure the Spoke2.   
config system interface
edit "wan1"
set alias "primary_WAN"
set ip 13.1.1.2 255.255.255.0
next
edit "wan2"
set alias "secondary_WAN"
set ip 17.1.1.2 255.255.255.0
next
edit "internal"
set ip 192.168.4.1 255.255.255.0
next
end
config router static
edit 1
set gateway 17.1.1.1
set device "wan2"
set distance 15
next
edit 2
set gateway 13.1.1.1
set device "wan1"
next
end

 b. Configure the spoke FortiGates' IPsec phase1-interface and phase2-interface.   
 i. Configure Spoke1.
config vpn ipsec phase1-interface
edit "spoke1"
set interface "wan1"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set auto-discovery-receiver enable
set remote-gw 22.1.1.1
set psksecret sample
set dpd-retryinterval 5
next
edit "spoke1_backup"
set interface "wan2"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable

FortiOS 6.4.6 Administration Guide 1492


Fortinet Technologies Inc.
VPN

set dpd on-idle


set auto-discovery-receiver enable
set remote-gw 22.1.1.1
set monitor "spoke1"
set psksecret sample
set dpd-retryinterval 5
next
end
config vpn ipsec phase2-interface
edit "spoke1"
set phase1name "spoke1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
aes128gcm aes256gcm chacha20poly1305
set auto-negotiate enable
next
edit "spoke1_backup"
set phase1name "spoke1_backup"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
aes128gcm aes256gcm chacha20poly1305
set auto-negotiate enable
next
end

 ii. Configure Spoke2.
config vpn ipsec phase1-interface
edit "spoke2"
set interface "wan1"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set auto-discovery-receiver enable
set remote-gw 22.1.1.1
set psksecret sample
set dpd-retryinterval 5
next
edit "spoke2_backup"
set interface "wan2"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set auto-discovery-receiver enable
set remote-gw 22.1.1.1
set monitor "spoke2"
set psksecret sample
set dpd-retryinterval 5
next
end
config vpn ipsec phase2-interface
edit "spoke2"
set phase1name "spoke2"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
aes128gcm aes256gcm chacha20poly1305

FortiOS 6.4.6 Administration Guide 1493


Fortinet Technologies Inc.
VPN

set auto-negotiate enable


next
edit "spoke2_backup"
set phase1name "spoke2_backup"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
aes128gcm aes256gcm chacha20poly1305
set auto-negotiate enable
next
end

 c. Configure the spoke FortiGates' firewall policies.
 i. Configure Spoke1.
config firewall policy
edit 1
set name "outbound_advpn"
set srcintf "internal"
set dstintf "spoke1" "spoke1_backup"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "inbound_advpn"
set srcintf "spoke1" "spoke1_backup"
set dstintf "internal"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
end

 ii. Configure Spoke2.
config firewall policy
edit 1
set name "outbound_advpn"
set srcintf "internal"
set dstintf "spoke2" "spoke2_backup"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "inbound_advpn"
set srcintf "spoke2" "spoke2_backup"
set dstintf "internal"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"

FortiOS 6.4.6 Administration Guide 1494


Fortinet Technologies Inc.
VPN

next
end

 d. Configure the spoke FortiGates' tunnel interface IP addresses.
 i. Configure Spoke1.
config system interface
edit "spoke1"
set ip 10.10.10.1 255.255.255.255
set remote-ip 10.10.10.254 255.255.255.0
next
edit "spoke1_backup"
set ip 10.10.10.2 255.255.255.255
set remote-ip 10.10.10.254 255.255.255.0
next
end

 ii. Configure Spoke2.
config system interface
edit "spoke2"
set ip 10.10.10.3 255.255.255.255
set remote-ip 10.10.10.254 255.255.255.0
next
edit "spoke2_backup"
set ip 10.10.10.4 255.255.255.255
set remote-ip 10.10.10.254 255.255.255.0
next
end

 e. Configure the spoke FortiGates' BGP.
 i. Configure Spoke1.
config router bgp
set as 65412
config neighbor
edit "10.10.10.254"
set advertisement-interval 1
set link-down-failover enable
set remote-as 65412
next
end
config network
edit 1
set prefix 10.1.100.0 255.255.255.0
next
end
end

 ii. Configure Spoke2.
config router bgp
set as 65412
config neighbor
edit "10.10.10.254"
set advertisement-interval 1
set link-down-failover enable
set remote-as 65412
next

FortiOS 6.4.6 Administration Guide 1495


Fortinet Technologies Inc.
VPN

end
config network
edit 1
set prefix 192.168.4.0 255.255.255.0
next
end
end

 4. Run diagnose and get commands run on Spoke1 to check VPN and BGP states.
 a. Run the diagnose vpn tunnel list command on Spoke1. The system should return the following:
list all ipsec tunnel in vd 0
----
name=spoke1 ver=1 serial=2 15.1.1.2:0->22.1.1.1:0
bound_if=7 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu
create_dev frag-rfc accept_traffic=1

proxyid_num=1 child_num=1 refcnt=19 ilast=1 olast=1 ad=r/2


stat: rxp=1 txp=160 rxb=16428 txb=8969
dpd: mode=on-idle on=1 idle=5000ms retry=3 count=0 seqno=628
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1 proto=0 sa=1 ref=6 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=1438 expire=1225/0B replaywin=1024
seqno=a1 esn=0 replaywin_lastseq=00000002 itn=0
life: type=01 bytes=0/0 timeout=2369/2400
dec: spi=c53a8f5b esp=aes key=16 cbe88682ad896a69290027b6dd8f7162
ah=sha1 key=20 7bb704b388f83783ac76c2ab0b6c9f7dcf78e93b
enc: spi=6e3633fc esp=aes key=16 1a0da3f4deed3d16becc9dda57537355
ah=sha1 key=20 368544044bd9b82592d72476ff93d5055056da8d
dec:pkts/bytes=1/16364, enc:pkts/bytes=160/19168
npu_flag=03 npu_rgwy=22.1.1.1 npu_lgwy=15.1.1.2 npu_selid=1 dec_npuid=1 enc_npuid=1
----
name=spoke1_backup ver=1 serial=1 12.1.1.2:0->22.1.1.1:0
bound_if=6 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu
create_dev frag-rfc accept_traffic=0

proxyid_num=1 child_num=0 refcnt=11 ilast=0 olast=0 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=5000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1_backup proto=0 sa=0 ref=2 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0

 b. Run the get router info bgp summary command on Spoke1. The system should return the following: 


BGP router identifier 7.7.7.7, local AS number 65412
BGP table version is 2
1 BGP AS-PATH entries
0 BGP community entries

Neighbor V AS [[QualityAssurance62/MsgRcvd]]
[[QualityAssurance62/MsgSent]] [[QualityAssurance62/TblVer]] InQ OutQ Up/Down
State/PfxRcd
10.10.10.254 1. 65412 143 142 1. 1. 1.

FortiOS 6.4.6 Administration Guide 1496


Fortinet Technologies Inc.
VPN

00:24:45 2

Total number of neighbors 1

 c. Run the get router info routing-table bgp command on Spoke1. The system should return the 


following: 
Routing table for VRF=0
B 172.16.101.0/24 [200/0] via 10.10.10.254, spoke1, 00:23:57
B 192.168.4.0/24 [200/0] via 10.10.10.254, spoke1, 00:22:03

 d. Generate traffic between the spokes and check the shortcut tunnel and routing table. Run the diagnose vpn


tunnel list command on Spoke1. The system should return the following: 
list all ipsec tunnel in vd 0
----
name=spoke1 ver=1 serial=2 15.1.1.2:0->22.1.1.1:0
bound_if=7 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu
create_dev frag-rfc accept_traffic=1

proxyid_num=1 child_num=1 refcnt=19 ilast=2 olast=2 ad=r/2


stat: rxp=1 txp=268 rxb=16428 txb=31243
dpd: mode=on-idle on=1 idle=5000ms retry=3 count=0 seqno=714
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1 proto=0 sa=1 ref=6 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=1438 expire=345/0B replaywin=1024
seqno=10d esn=0 replaywin_lastseq=00000002 itn=0
life: type=01 bytes=0/0 timeout=2369/2400
dec: spi=c53a8f5b esp=aes key=16 cbe88682ad896a69290027b6dd8f7162
ah=sha1 key=20 7bb704b388f83783ac76c2ab0b6c9f7dcf78e93b
enc: spi=6e3633fc esp=aes key=16 1a0da3f4deed3d16becc9dda57537355
ah=sha1 key=20 368544044bd9b82592d72476ff93d5055056da8d
dec:pkts/bytes=1/16364, enc:pkts/bytes=268/48320
npu_flag=03 npu_rgwy=22.1.1.1 npu_lgwy=15.1.1.2 npu_selid=1 dec_npuid=1 enc_npuid=1
----
name=spoke1_backup ver=1 serial=1 12.1.1.2:0->22.1.1.1:0
bound_if=6 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu
create_dev frag-rfc accept_traffic=0

proxyid_num=1 child_num=0 refcnt=11 ilast=8 olast=8 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=5000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1_backup proto=0 sa=0 ref=2 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
----
name=spoke1_0 ver=1 serial=9 15.1.1.2:4500->13.1.1.2:4500
bound_if=7 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/728 options[02d8]=npu
create_dev no-sysctl rgwy-chg frag-rfc accept_traffic=1

parent=spoke1 index=0
proxyid_num=1 child_num=0 refcnt=17 ilast=4 olast=4 ad=r/2
stat: rxp=1 txp=100 rxb=112 txb=4686
dpd: mode=on-idle on=1 idle=5000ms retry=3 count=0 seqno=231
natt: mode=keepalive draft=32 interval=10 remote_port=4500

FortiOS 6.4.6 Administration Guide 1497


Fortinet Technologies Inc.
VPN

proxyid=spoke1 proto=0 sa=1 ref=5 serial=1 auto-negotiate adr


src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=1422 expire=447/0B replaywin=1024
seqno=65 esn=0 replaywin_lastseq=00000002 itn=0
life: type=01 bytes=0/0 timeout=2368/2400
dec: spi=c53a8f5c esp=aes key=16 73fd9869547475db78851e6c057ad9b7
ah=sha1 key=20 6ad3a5b1028f6b33c82ba494a370f13c7f462635
enc: spi=79cb0f2b esp=aes key=16 52ab0acdc830d58c00e5956a6484654a
ah=sha1 key=20 baa82aba4106dc60618f6fe95570728656799239
dec:pkts/bytes=1/46, enc:pkts/bytes=100/11568
npu_flag=03 npu_rgwy=13.1.1.2 npu_lgwy=15.1.1.2 npu_selid=5 dec_npuid=1 enc_npuid=1

 e. Run the get router info routing-tale bgp command. The system should return the following:


Routing table for VRF=0
B 172.16.101.0/24 [200/0] via 10.10.10.254, spoke1, 00:23:57
B 192.168.4.0/24 [200/0] via 10.10.10.3, spoke1_0 , 00:22:03

ADVPN with OSPF as the routing protocol

This is a sample configuration of ADVPN with OSPF as the routing protocol. The following options must be enabled for 
this configuration:
 l On the hub FortiGate, IPsec phase1-interface net-device enable must be run.
 l OSPF must be used between the hub and spoke FortiGates.

Because the GUI can only complete part of the configuration, we recommend using the CLI.

To configure ADVPN with OSPF as the routing protocol using the CLI:

 1. Configure hub FortiGate's WAN, internal interface, and static route.
config system interface
edit "port9"
set alias "WAN"
set ip 22.1.1.1 255.255.255.0
next
edit "port10"

FortiOS 6.4.6 Administration Guide 1498


Fortinet Technologies Inc.
VPN

set alias "Internal"


set ip 172.16.101.1 255.255.255.0
next
end
config router static
edit 1
set gateway 22.1.1.2
set device "port9"
next
end

 2. Configure the hub FortiGate.
 a. Configure the hub FortiGate IPsec phase1-interface and phase2-interface.   
config vpn ipsec phase1-interface
edit "advpn-hub"
set type dynamic
set interface "port9"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 3des-sha256 aes128-sha1 aes256-sha1
3des-sha1
set add-route disable
set dpd on-idle
set auto-discovery-sender enable
set tunnel-search nexthop
set psksecret sample
set dpd-retryinterval 5
next
end
config vpn ipsec phase2-interface
edit "advpn-hub"
set phase1name "advpn-hub"
set proposal aes128-sha1 aes256-sha1 3des-sha1 aes128-sha256 aes256-sha256
3des-sha256
next
end

 b. Configure the hub FortiGate firewall policy. 
config firewall policy
edit 1
set name "spoke2hub"
set srcintf "advpn-hub"
set dstintf "port10"
set srcaddr "all"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "spoke2spoke"
set srcintf "advpn-hub"
set dstintf "advpn-hub"
set srcaddr "all"
set dstaddr "all"

FortiOS 6.4.6 Administration Guide 1499


Fortinet Technologies Inc.
VPN

set action accept


set schedule "always"
set service "ALL"
next
end

 c. Configure the hub FortiGate's IPsec tunnel interface IP address.   
config system interface
edit "advpn-hub1"
set ip 10.10.10.254 255.255.255.255
set remote-ip 10.10.10.253 255.255.255.0
next
end

 d. Configure the hub FortiGate's OSPF.
config router ospf
set router-id 1.1.1.1
config area
edit 0.0.0.0
next
end
config network
edit 1
set prefix 10.10.10.0 255.255.255.0
next
edit 2
set prefix 172.16.101.0 255.255.255.0
next
end
end

 3. Configure the spoke FortiGates.
 a.  Configure the spoke FortiGates' WAN, internal interfaces, and static routes.   
 i. Configure Spoke1.
config system interface
edit "wan1"
set alias "primary_WAN"
set ip 15.1.1.2 255.255.255.0
next
edit "wan2"
set alias "secondary_WAN"
set ip 12.1.1.2 255.255.255.0
next
edit "internal"
set ip 10.1.100.1 255.255.255.0
next
end
config router static
edit 1
set gateway 12.1.1.1
set device "wan2"
set distance 15
next
edit 2
set gateway 15.1.1.1

FortiOS 6.4.6 Administration Guide 1500


Fortinet Technologies Inc.
VPN

set device "wan1"


next
end

 ii. Configure the Spoke2.   
config system interface
edit "wan1"
set alias "primary_WAN"
set ip 13.1.1.2 255.255.255.0
next
edit "wan2"
set alias "secondary_WAN"
set ip 17.1.1.2 255.255.255.0
next
edit "internal"
set ip 192.168.4.1 255.255.255.0
next
end
config router static
edit 1
set gateway 17.1.1.1
set device "wan2"
set distance 15
next
edit 2
set gateway 13.1.1.1
set device "wan1"
next
end

 b. Configure the spoke FortiGates' IPsec phase1-interface and phase2-interface.   
 i. Configure Spoke1.
config vpn ipsec phase1-interface
edit "spoke1"
set interface "wan1"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set auto-discovery-receiver enable
set remote-gw 22.1.1.1
set psksecret sample
set dpd-retryinterval 5
next
edit "spoke1_backup"
set interface "wan2"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set auto-discovery-receiver enable
set remote-gw 22.1.1.1
set monitor "spoke1"
set psksecret sample

FortiOS 6.4.6 Administration Guide 1501


Fortinet Technologies Inc.
VPN

set dpd-retryinterval 5
next
end
config vpn ipsec phase2-interface
edit "spoke1"
set phase1name "spoke1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
aes128gcm aes256gcm chacha20poly1305
set auto-negotiate enable
next
edit "spoke1_backup"
set phase1name "spoke1_backup"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
aes128gcm aes256gcm chacha20poly1305
set auto-negotiate enable
next
end

 ii. Configure Spoke2.
config vpn ipsec phase1-interface
edit "spoke2"
set interface "wan1"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set auto-discovery-receiver enable
set remote-gw 22.1.1.1
set psksecret sample
set dpd-retryinterval 5
next
edit "spoke2_backup"
set interface "wan2"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set auto-discovery-receiver enable
set remote-gw 22.1.1.1
set monitor "spoke2"
set psksecret sample
set dpd-retryinterval 5
next
end
config vpn ipsec phase2-interface
edit "spoke2"
set phase1name "spoke2"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
aes128gcm aes256gcm chacha20poly1305
set auto-negotiate enable
next
edit "spoke2_backup"
set phase1name "spoke2_backup"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256

FortiOS 6.4.6 Administration Guide 1502


Fortinet Technologies Inc.
VPN

aes128gcm aes256gcm chacha20poly1305


set auto-negotiate enable
next
end

 c. Configure the spoke FortiGates' firewall policies.
 i. Configure Spoke1.
config firewall policy
edit 1
set name "outbound_advpn"
set srcintf "internal"
set dstintf "spoke1" "spoke1_backup"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "inbound_advpn"
set srcintf "spoke1" "spoke1_backup"
set dstintf "internal"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
end

 ii. Configure Spoke2.
config firewall policy
edit 1
set name "outbound_advpn"
set srcintf "internal"
set dstintf "spoke2" "spoke2_backup"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "inbound_advpn"
set srcintf "spoke2" "spoke2_backup"
set dstintf "internal"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
end

FortiOS 6.4.6 Administration Guide 1503


Fortinet Technologies Inc.
VPN

 d. Configure the spoke FortiGates' tunnel interface IP addresses.
 i. Configure Spoke1.
config system interface
edit "spoke1"
set ip 10.10.10.1 255.255.255.255
set remote-ip 10.10.10.254 255.255.255.0
next
edit "spoke1_backup"
set ip 10.10.10.2 255.255.255.255
set remote-ip 10.10.10.254 255.255.255.0
next
end

 ii. Configure Spoke2.
config system interface
edit "spoke2"
set ip 10.10.10.3 255.255.255.255
set remote-ip 10.10.10.254 255.255.255.0
next
edit "spoke2_backup"
set ip 10.10.10.4 255.255.255.255
set remote-ip 10.10.10.254 255.255.255.0
next
end

 e. Configure the spoke FortiGates' OSPF.
 i. Configure Spoke1.
config router ospf
set router-id 7.7.7.7
config area
edit 0.0.0.0
next
end
config network
edit 1
set prefix 10.10.10.0 255.255.255.0
next
edit 2
set prefix 10.1.100.0 255.255.255.0
next
end
end

 ii. Configure Spoke2.
config router ospf
set router-id 8.8.8.8
config area
edit 0.0.0.0
next
end
config network
edit 1
set prefix 10.10.10.0 255.255.255.0
next
edit 2

FortiOS 6.4.6 Administration Guide 1504


Fortinet Technologies Inc.
VPN

set prefix 192.168.4.0 255.255.255.0


next
end
end

 4. Run diagnose and get commands on Spoke1 to check VPN and OSPF states.
 a. Run the diagnose vpn tunnel list command on Spoke1. The system should return the following:
list all ipsec tunnel in vd 0
----
name=spoke1 ver=1 serial=2 15.1.1.2:0->22.1.1.1:0
bound_if=7 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu
create_dev frag-rfc accept_traffic=1

proxyid_num=1 child_num=1 refcnt=19 ilast=5 olast=2 ad=r/2


stat: rxp=1 txp=263 rxb=16452 txb=32854
dpd: mode=on-idle on=1 idle=5000ms retry=3 count=0 seqno=2283
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1 proto=0 sa=1 ref=5 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=1438 expire=1057/0B replaywin=1024
seqno=108 esn=0 replaywin_lastseq=00000003 itn=0
life: type=01 bytes=0/0 timeout=2371/2400
dec: spi=c53a8f78 esp=aes key=16 7cc50c5c9df1751f6497a4ad764c5e9a
ah=sha1 key=20 269292ddbf7309a6fc05871e63ed8a5297b5c9a1
enc: spi=6e363612 esp=aes key=16 42bd49bced1e85cf74a24d97f10eb601
ah=sha1 key=20 13964f166aad48790c2e551d6df165d7489f524b
dec:pkts/bytes=1/16394, enc:pkts/bytes=263/50096
npu_flag=03 npu_rgwy=22.1.1.1 npu_lgwy=15.1.1.2 npu_selid=1 dec_npuid=1 enc_npuid=1
----
name=spoke1_backup ver=1 serial=1 12.1.1.2:0->22.1.1.1:0
bound_if=6 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu
create_dev frag-rfc accept_traffic=0

proxyid_num=1 child_num=0 refcnt=11 ilast=8 olast=8 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=5000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1_backup proto=0 sa=0 ref=2 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0

 b. Run the get router info ospf neighbor command on Spoke1. The system should return the following:


 
OSPF process 0, VRF 0: Neighbor ID Pri State Dead Time Address Interface 8.8.8.8 1.
Full/ - 00:00:35 10.10.10.254 spoke1 1.1.1.1 1. Full/ - 00:00:35 10.10.10.254 spoke1

 c. Run the get router info routing-table ospf command on Spoke1. The system should return the 


following: 
Routing table for VRF=0
O 172.16.101.0/24 [110/110] via 10.10.10.254, spoke1, 00:23:23
O 192.168.4.0/24 [110/110] via 10.10.10.254, spoke1, 00:22:35

 d. Generate traffic between the spokes, then check the shortcut tunnel and routing table. Run the diagnose
vpn tunnel list command on Spoke1. The system should return the following: 

FortiOS 6.4.6 Administration Guide 1505


Fortinet Technologies Inc.
VPN

list all ipsec tunnel in vd 0


----
----
name=spoke1 ver=1 serial=2 15.1.1.2:0->22.1.1.1:0
bound_if=7 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu
create_dev frag-rfc accept_traffic=1

proxyid_num=1 child_num=1 refcnt=19 ilast=2 olast=2 ad=r/2


stat: rxp=1 txp=313 rxb=16452 txb=35912
dpd: mode=on-idle on=1 idle=5000ms retry=3 count=0 seqno=2303
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1 proto=0 sa=1 ref=3 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=1438 expire=782/0B replaywin=1024
seqno=13a esn=0 replaywin_lastseq=00000003 itn=0
life: type=01 bytes=0/0 timeout=2371/2400
dec: spi=c53a8f78 esp=aes key=16 7cc50c5c9df1751f6497a4ad764c5e9a
ah=sha1 key=20 269292ddbf7309a6fc05871e63ed8a5297b5c9a1
enc: spi=6e363612 esp=aes key=16 42bd49bced1e85cf74a24d97f10eb601
ah=sha1 key=20 13964f166aad48790c2e551d6df165d7489f524b
dec:pkts/bytes=1/16394, enc:pkts/bytes=313/56432
npu_flag=03 npu_rgwy=22.1.1.1 npu_lgwy=15.1.1.2 npu_selid=1 dec_npuid=1 enc_npuid=1
----
name=spoke1_backup ver=1 serial=1 12.1.1.2:0->22.1.1.1:0
bound_if=6 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu
create_dev frag-rfc accept_traffic=0

proxyid_num=1 child_num=0 refcnt=11 ilast=13 olast=13 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=5000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1_backup proto=0 sa=0 ref=2 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
----
name=spoke1_0 ver=1 serial=e 15.1.1.2:4500->13.1.1.2:4500
bound_if=7 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/728 options[02d8]=npu
create_dev no-sysctl rgwy-chg frag-rfc accept_traffic=1

parent=spoke1 index=0
proxyid_num=1 child_num=0 refcnt=19 ilast=4 olast=2 ad=r/2
stat: rxp=641 txp=1254 rxb=278648 txb=161536
dpd: mode=on-idle on=1 idle=5000ms retry=3 count=0 seqno=184
natt: mode=keepalive draft=32 interval=10 remote_port=4500
proxyid=spoke1_backup proto=0 sa=1 ref=10 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=1422 expire=922/0B replaywin=1024
seqno=452 esn=0 replaywin_lastseq=00000280 itn=0
life: type=01 bytes=0/0 timeout=2370/2400
dec: spi=c53a8f79 esp=aes key=16 324f8cf840ba6722cc7abbba46b34e0e
ah=sha1 key=20 a40e9aac596b95c4cd83a7f6372916a5ef5aa505
enc: spi=ef3327b5 esp=aes key=16 5909d6066b303de4520d2b5ae2db1b61
ah=sha1 key=20 1a42f5625b5a335d8d5282fe83b5d6c6ff26b2a4

FortiOS 6.4.6 Administration Guide 1506


Fortinet Technologies Inc.
VPN

dec:pkts/bytes=641/278568, enc:pkts/bytes=1254/178586
npu_flag=03 npu_rgwy=13.1.1.2 npu_lgwy=15.1.1.2 npu_selid=a dec_npuid=1 enc_npuid=1

 e. Run the get router info routing-tale ospf command. The system should return the following:


Routing table for VRF=0
O 172.16.101.0/24 [110/110] via 10.10.10.254, spoke1, 00:27:14
O 192.168.4.0/24 [110/110] via 10.10.10.3, spoke1_0, 00:26:26

ADVPN with RIP as the routing protocol

This is a sample configuration of ADVPN with RIP as routing protocol. The following options must be enabled for this 
configuration:
 l On the hub FortiGate, IPsec phase1-interface net-device disable must be run.
 l RIP must be used between the hub and spoke FortiGates.
 l split-horizon-status enable must be run on the hub FortiGate.

Because the GUI can only complete part of the configuration, we recommend using the CLI.

To configure ADVPN with RIP as the routing protocol using the CLI:

 1. In the  CLI, configure hub FortiGate's WAN, internal interface, and static route.
config system interface
edit "port9"
set alias "WAN"
set ip 22.1.1.1 255.255.255.0
next
edit "port10"
set alias "Internal"
set ip 172.16.101.1 255.255.255.0
next
end
config router static
edit 1
set gateway 22.1.1.2
set device "port9"

FortiOS 6.4.6 Administration Guide 1507


Fortinet Technologies Inc.
VPN

next
end

 2. Configure the hub FortiGate.
 a. Configure the hub FortiGate IPsec phase1-interface and phase2-interface.   
config vpn ipsec phase1-interface
edit "advpn-hub"
set type dynamic
set interface "port9"
set peertype any
set net-device disable
set proposal aes128-sha256 aes256-sha256 3des-sha256 aes128-sha1 aes256-sha1
3des-sha1
set add-route disable
set dpd on-idle
set auto-discovery-sender enable
set tunnel-search nexthop
set psksecret sample
set dpd-retryinterval 5
next
end
config vpn ipsec phase2-interface
edit "advpn-hub"
set phase1name "advpn-hub"
set proposal aes128-sha1 aes256-sha1 3des-sha1 aes128-sha256 aes256-sha256
3des-sha256
next
end

 b. Configure the hub FortiGate firewall policy. 
config firewall policy
edit 1
set name "spoke2hub"
set srcintf "advpn-hub"
set dstintf "port10"
set srcaddr "all"
set dstaddr "172.16.101.0"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "spoke2spoke"
set srcintf "advpn-hub"
set dstintf "advpn-hub"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
end

FortiOS 6.4.6 Administration Guide 1508


Fortinet Technologies Inc.
VPN

 c. Configure the hub FortiGate's IPsec tunnel interface IP address.   
config system interface
edit "advpn-hub1"
set ip 10.10.10.254 255.255.255.255
set remote-ip 10.10.10.253 255.255.255.0
next
end

 d. Configure the hub FortiGate's RIP.
config router rip
set default-information-originate enable
config network
edit 1
set prefix 10.10.10.0 255.255.255.0
next
edit 2
set prefix 172.16.101.0 255.255.255.0
next
end
config interface
edit "advpn-hub"
set split-horizon-status disable
next
end
end

 3. Configure the spoke FortiGates.
 a.  Configure the spoke FortiGates' WAN, internal interfaces, and static routes.   
 i. Configure Spoke1.
config system interface
edit "wan1"
set alias "primary_WAN"
set ip 15.1.1.2 255.255.255.0
next
edit "wan2"
set alias "secondary_WAN"
set ip 12.1.1.2 255.255.255.0
next
edit "internal"
set ip 10.1.100.1 255.255.255.0
next
end
config router static
edit 1
set gateway 12.1.1.1
set device "wan2"
set distance 15
next
edit 2
set gateway 15.1.1.1
set device "wan1"
next
end

FortiOS 6.4.6 Administration Guide 1509


Fortinet Technologies Inc.
VPN

 ii. Configure the Spoke2.   
config system interface
edit "wan1"
set alias "primary_WAN"
set ip 13.1.1.2 255.255.255.0
next
edit "wan2"
set alias "secondary_WAN"
set ip 17.1.1.2 255.255.255.0
next
edit "internal"
set ip 192.168.4.1 255.255.255.0
next
end
config router static
edit 1
set gateway 17.1.1.1
set device "wan2"
set distance 15
next
edit 2
set gateway 13.1.1.1
set device "wan1"
next
end

 b. Configure the spoke FortiGates' IPsec phase1-interface and phase2-interface.   
 i. Configure Spoke1.
config vpn ipsec phase1-interface
edit "spoke1"
set interface "wan1"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set auto-discovery-receiver enable
set remote-gw 22.1.1.1
set psksecret sample
set dpd-retryinterval 5
next
edit "spoke1_backup"
set interface "wan2"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set auto-discovery-receiver enable
set remote-gw 22.1.1.1
set monitor "spoke1"
set psksecret sample
set dpd-retryinterval 5
next
end

FortiOS 6.4.6 Administration Guide 1510


Fortinet Technologies Inc.
VPN

config vpn ipsec phase2-interface


edit "spoke1"
set phase1name "spoke1"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
aes128gcm aes256gcm chacha20poly1305
set auto-negotiate enable
next
edit "spoke1_backup"
set phase1name "spoke1_backup"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
aes128gcm aes256gcm chacha20poly1305
set auto-negotiate enable
next
end

 ii. Configure Spoke2.
config vpn ipsec phase1-interface
edit "spoke2"
set interface "wan1"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set auto-discovery-receiver enable
set remote-gw 22.1.1.1
set psksecret sample
set dpd-retryinterval 5
next
edit "spoke2_backup"
set interface "wan2"
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set add-route disable
set dpd on-idle
set auto-discovery-receiver enable
set remote-gw 22.1.1.1
set monitor "spoke2"
set psksecret sample
set dpd-retryinterval 5
next
end
config vpn ipsec phase2-interface
edit "spoke2"
set phase1name "spoke2"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
aes128gcm aes256gcm chacha20poly1305
set auto-negotiate enable
next
edit "spoke2_backup"
set phase1name "spoke2_backup"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
aes128gcm aes256gcm chacha20poly1305
set auto-negotiate enable

FortiOS 6.4.6 Administration Guide 1511


Fortinet Technologies Inc.
VPN

next
end

 c. Configure the spoke FortiGates' firewall policies.
 i. Configure Spoke1.
config firewall policy
edit 1
set name "outbound_advpn"
set srcintf "internal"
set dstintf "spoke1" "spoke1_backup"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "inbound_advpn"
set srcintf "spoke1" "spoke1_backup"
set dstintf "internal"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
end

 ii. Configure Spoke2.
config firewall policy
edit 1
set name "outbound_advpn"
set srcintf "internal"
set dstintf "spoke2" "spoke2_backup"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "inbound_advpn"
set srcintf "spoke2" "spoke2_backup"
set dstintf "internal"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
end

FortiOS 6.4.6 Administration Guide 1512


Fortinet Technologies Inc.
VPN

 d. Configure the spoke FortiGates' tunnel interface IP addresses.
 i. Configure Spoke1.
config system interface
edit "spoke1"
set ip 10.10.10.1 255.255.255.255
set remote-ip 10.10.10.254 255.255.255.0
next
edit "spoke1_backup"
set ip 10.10.10.2 255.255.255.255
set remote-ip 10.10.10.254 255.255.255.0
next
end

 ii. Configure Spoke2.
config system interface
edit "spoke2"
set ip 10.10.10.3 255.255.255.255
set remote-ip 10.10.10.254 255.255.255.0
next
edit "spoke2_backup"
set ip 10.10.10.4 255.255.255.255
set remote-ip 10.10.10.254 255.255.255.0
next
end

 e. Configure the spoke FortiGates' RIP.
 i. Configure Spoke1.
config router rip
config network
edit 1
set prefix 10.10.10.0 255.255.255.0
next
edit 2
set prefix 10.1.100.0 255.255.255.0
next
end
end

 ii. Configure Spoke2.
config router rip
config network
edit 1
set prefix 10.10.10.0 255.255.255.0
next
edit 2
set prefix 192.168.4.0 255.255.255.0
next
end
end

 4. Run diagnose and get commands on Spoke1.
 a. Run the diagnose vpn tunnel list command on Spoke1. The system should return the following:
list all ipsec tunnel in vd 0
----

FortiOS 6.4.6 Administration Guide 1513


Fortinet Technologies Inc.
VPN

name=spoke1 ver=1 serial=2 15.1.1.2:0->22.1.1.1:0


bound_if=7 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu
create_dev frag-rfc accept_traffic=1

proxyid_num=1 child_num=1 refcnt=17 ilast=2 olast=2 ad=r/2


stat: rxp=1 txp=87 rxb=200 txb=6208
dpd: mode=on-idle on=1 idle=5000ms retry=3 count=0 seqno=1040
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1 proto=0 sa=1 ref=4 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=7 options=1a227 type=00 soft=0 mtu=1438 expire=1793/0B replaywin=1024
seqno=57 esn=0 replaywin_lastseq=00000002 itn=0
life: type=01 bytes=0/0 timeout=2370/2400
dec: spi=c53a8f60 esp=aes key=16 6b54e32d54d039196a74d96e96d1cf14
ah=sha1 key=20 e4903474614eafc96eda6400a3a5e88bbcb26a7f
enc: spi=6e36349d esp=aes key=16 914a40a7993eda75c4dea2f42905f27d
ah=sha1 key=20 8040eb08342edea2dae5eee058fd054a46688267
dec:pkts/bytes=1/132, enc:pkts/bytes=86/11696
npu_flag=03 npu_rgwy=22.1.1.1 npu_lgwy=15.1.1.2 npu_selid=1 dec_npuid=1 enc_npuid=1
----
name=spoke1_backup ver=1 serial=1 12.1.1.2:0->22.1.1.1:0
bound_if=6 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu
create_dev frag-rfc accept_traffic=0

proxyid_num=1 child_num=0 refcnt=11 ilast=0 olast=0 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=5000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1_backup proto=0 sa=0 ref=2 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0

 b. Run the get router info rip database command on Spoke1. The system should return the following: 


Codes: R - RIP, Rc - RIP connected, Rs - RIP static, K - Kernel,
C - Connected, S - Static, O - OSPF, I - IS-IS, B - BGP

Network Next Hop Metric From If Time


Rc 10.1.100.0/24 1. internal
Rc 10.10.10.2/32 1. spoke1
R 172.16.101.0/24 10.10.10.254 1. 10.10.10.254 spoke1 02:28
R 192.168.4.0/24 10.10.10.254 1. 10.10.10.254 spoke1 02:44

 c. Run the get router info routing-table rip command on Spoke1. The system should return the 


following: 
Routing table for VRF=0
R 172.16.101.0/24 [120/2] via 10.10.10.254, spoke1, 00:08:38
R 192.168.4.0/24 [120/3] via 10.10.10.254, spoke1, 00:08:38

 d. Generate traffic between the spokes, then check the shortcut tunnel and routing table. Run the diagnose
vpn tunnel list command on Spoke1. The system should return the following: 
list all ipsec tunnel in vd 0
----
name=spoke1 ver=1 serial=2 15.1.1.2:0->22.1.1.1:0
bound_if=7 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu

FortiOS 6.4.6 Administration Guide 1514


Fortinet Technologies Inc.
VPN

create_dev frag-rfc accept_traffic=1

proxyid_num=1 child_num=0 refcnt=19 ilast=3 olast=3 ad=r/2


stat: rxp=1 txp=78 rxb=200 txb=5546
dpd: mode=on-idle on=1 idle=5000ms retry=3 count=0 seqno=1039
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1 proto=0 sa=1 ref=5 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=7 options=1a227 type=00 soft=0 mtu=1438 expire=1807/0B replaywin=1024
seqno=4e esn=0 replaywin_lastseq=00000002 itn=0
life: type=01 bytes=0/0 timeout=2370/2400
dec: spi=c53a8f60 esp=aes key=16 6b54e32d54d039196a74d96e96d1cf14
ah=sha1 key=20 e4903474614eafc96eda6400a3a5e88bbcb26a7f
enc: spi=6e36349d esp=aes key=16 914a40a7993eda75c4dea2f42905f27d
ah=sha1 key=20 8040eb08342edea2dae5eee058fd054a46688267
dec:pkts/bytes=1/132, enc:pkts/bytes=77/10456
npu_flag=03 npu_rgwy=22.1.1.1 npu_lgwy=15.1.1.2 npu_selid=1 dec_npuid=1 enc_npuid=1
----
name=spoke1_backup ver=1 serial=1 12.1.1.2:0->22.1.1.1:0
bound_if=6 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/536 options[0218]=npu
create_dev frag-rfc accept_traffic=0

proxyid_num=1 child_num=0 refcnt=11 ilast=20 olast=20 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=5000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=spoke1_backup proto=0 sa=0 ref=2 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
----
name=spoke1_0 ver=1 serial=a 15.1.1.2:4500->13.1.1.2:4500
bound_if=7 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/728 options[02d8]=npu
create_dev no-sysctl rgwy-chg frag-rfc accept_traffic=1

parent=spoke1 index=0
proxyid_num=1 child_num=0 refcnt=20 ilast=2 olast=0 ad=r/2
stat: rxp=1 txp=7 rxb=112 txb=480
dpd: mode=on-idle on=1 idle=5000ms retry=3 count=0 seqno=0
natt: mode=keepalive draft=32 interval=10 remote_port=4500
proxyid=spoke1 proto=0 sa=1 ref=8 serial=1 auto-negotiate adr
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=1a227 type=00 soft=0 mtu=1422 expire=2358/0B replaywin=1024
seqno=8 esn=0 replaywin_lastseq=00000002 itn=0
life: type=01 bytes=0/0 timeout=2367/2400
dec: spi=c53a8f61 esp=aes key=16 c66aa7ae9657068108ed47c048ff56b6
ah=sha1 key=20 60661c68e20bbc913c2564ade85e01ea3769e703
enc: spi=79cb0f30 esp=aes key=16 bf6c898c2e1c64baaa679ed5d79c3b58
ah=sha1 key=20 146ca78be6c34eedb9cd66cc328216e08682ecb1
dec:pkts/bytes=1/46, enc:pkts/bytes=7/992
npu_flag=03 npu_rgwy=13.1.1.2 npu_lgwy=15.1.1.2 npu_selid=6 dec_npuid=1 enc_npuid=1

 e. Run the get router info routing-tale rip command. The system should return the following:

FortiOS 6.4.6 Administration Guide 1515


Fortinet Technologies Inc.
VPN

Routing table for VRF=0


R 172.16.101.0/24 [120/2] via 10.10.10.254, spoke1, 00:09:04
R 192.168.4.0/24 [120/2] via 10.10.10.3, spoke1_0, 00:00:02

UDP hole punching for spokes behind NAT

UDP hole punching allows ADVPN shortcuts to be established through a UDP hole on a NAT device. The NAT device 
must support RFC 4787 Endpoint-Independent Mapping.
In the following example, device 10.1.100.11 behind Spoke1 needs to reach device 192.168.4.33 behind Spoke2. 
Spoke1 and Spoke2 are behind NAT devices and have established IPsec tunnels to the Hub. The hole punching creates 
a shortcut between Spoke1 and Spoke2 that bypasses the Hub. 

To verify the ADVPN shortcut is established between both spokes behind NAT:

# diagnose debug enable


# diagnose debug application ike -1
ike 0: comes 22.1.1.1:4500->12.1.1.2:4500,ifindex=6....
ike 0: IKEv1 exchange=Informational id=3c10fb6a76f1e264/6c7b397100dffc63:58ac7c02 len=204
ike 0:toHub1:35: notify msg received: SHORTCUT-OFFER
ike 0:toHub1: shortcut-offer 10.1.100.11->192.168.4.33 psk 64 ppk 0 ver 1 mode 0
ike 0 looking up shortcut by addr 192.168.4.33, name toHub1
ike 0:toHub1: send shortcut-query 1438189781753480593 d3fdd1bfbc94caee/0000000000000000
12.1.1.2 10.1.100.11->192.168.4.33 psk 64 ttl 32 nat 1 ver 1 mode 0
ike 0:toHub1:35: sent IKE msg (SHORTCUT-QUERY): 12.1.1.2:4500->22.1.1.1:4500, len=236,
id=3c10fb6a76f1e264/6c7b397100dffc63:12e263f7
ike 0: comes 22.1.1.1:4500->12.1.1.2:4500,ifindex=6....
ike 0: IKEv1 exchange=Informational id=3c10fb6a76f1e264/6c7b397100dffc63:4976e1ac len=236
ike 0:toHub1:35: notify msg received: SHORTCUT-REPLY
ike 0:toHub1: recv shortcut-reply 1438189781753480593 d3fdd1bfbc94caee/16a1eb5b0f37ee23
14.1.1.3 to 10.1.100.11 psk 64 ppk 0 ver 1 mode 0 nat 55.1.1.2:64916
ike 0:toHub1: iif 22 192.168.4.33->10.1.100.11 route lookup oif 21
ike 0:toHub1: shortcut-reply received from 55.1.1.2:64916, local-nat=yes, peer-nat=yes

FortiOS 6.4.6 Administration Guide 1516


Fortinet Technologies Inc.
VPN

ike 0:toHub1: NAT hole punching to peer at 55.1.1.2:64916


ike 0:toHub1: created connection: 0x5e71f58 6 12.1.1.2->55.1.1.2:64916.
<==55.1.1.2:64916 this is UDP hole of NAT device
ike 0:toHub1: adding new dynamic tunnel for 55.1.1.2:64916
ike 0:toHub1_0: added new dynamic tunnel for 55.1.1.2:64916
ike 0:toHub1_0:48: initiator: main mode is sending 1st message...
ike 0:toHub1_0:48: cookie d3fdd1bfbc94caee/16a1eb5b0f37ee23
ike 0:toHub1_0:48: sent IKE msg (ident_i1send): 12.1.1.2:4500->55.1.1.2:64916, len=632,
id=d3fdd1bfbc94caee/16a1eb5b0f37ee23
ike 0: comes 55.1.1.2:64916->12.1.1.2:4500,ifindex=6....
ike 0: IKEv1 exchange=Identity Protection id=d3fdd1bfbc94caee/16a1eb5b0f37ee23 len=252
ike 0:toHub1_0:48: initiator: main mode get 1st response...


ike 0:toHub1_0:48: negotiation result
ike 0:toHub1_0:48: proposal id = 1:
ike 0:toHub1_0:48: protocol id = ISAKMP:
ike 0:toHub1_0:48: trans_id = KEY_IKE.
ike 0:toHub1_0:48: encapsulation = IKE/none
ike 0:toHub1_0:48: type=OAKLEY_ENCRYPT_ALG, val=AES_CBC, key-len=128
ike 0:toHub1_0:48: type=OAKLEY_HASH_ALG, val=SHA2_256.
ike 0:toHub1_0:48: type=AUTH_METHOD, val=PRESHARED_KEY.
ike 0:toHub1_0:48: type=OAKLEY_GROUP, val=MODP2048.
ike 0:toHub1_0:48: ISAKMP SA lifetime=86400
ike 0:toHub1_0:48: sent IKE msg (ident_i2send): 12.1.1.2:4500->55.1.1.2:64916, len=380,
id=d3fdd1bfbc94caee/16a1eb5b0f37ee23
ike 0: comes 55.1.1.2:64916->12.1.1.2:4500,ifindex=6....
ike 0: IKEv1 exchange=Identity Protection id=d3fdd1bfbc94caee/16a1eb5b0f37ee23 len=380
ike 0:toHub1_0:48: initiator: main mode get 2nd response...


ike 0:toHub1_0:48: add INITIAL-CONTACT
ike 0:toHub1_0:48: add INTERFACE-ADDR4 10.10.1.100
ike 0:toHub1_0:48: sent IKE msg (ident_i3send): 12.1.1.2:4500->55.1.1.2:64916, len=140,
id=d3fdd1bfbc94caee/16a1eb5b0f37ee23
ike 0: comes 55.1.1.2:64916->12.1.1.2:4500,ifindex=6....
ike 0: IKEv1 exchange=Identity Protection id=d3fdd1bfbc94caee/16a1eb5b0f37ee23 len=124
ike 0:toHub1_0:48: initiator: main mode get 3rd response...
ike 0:toHub1_0:48: received p1 notify type INTERFACE-ADDR4
ike 0:toHub1_0:48: INTERFACE-ADDR4 10.10.1.102
ike 0:toHub1_0:48: peer identifier IPV4_ADDR 14.1.1.3
ike 0:toHub1_0:48: PSK authentication succeeded
ike 0:toHub1_0:48: authentication OK
ike 0:toHub1_0:48: established IKE SA d3fdd1bfbc94caee/16a1eb5b0f37ee23
ike 0:toHub1_0:48: auto-discovery receiver
ike 0:toHub1_0:48: auto-discovery 2
ike 0:toHub1_0: add R/32 route 10.10.1.102 via 10.10.1.102, intf=toHub1(22)
ike 0:toHub1_0: add peer route 10.10.1.102
ike 0:toHub1: schedule auto-negotiate
ike 0:toHub1_0:48: no pending Quick-Mode negotiations
ike 0:toHub1_0:toHub1: IPsec SA connect 6 12.1.1.2->55.1.1.2:64916
ike 0:toHub1_0:toHub1: using existing connection
ike 0:toHub1_0:toHub1: traffic triggered, serial=1 1:10.1.100.11:2048->1:192.168.4.33:0
ike 0:toHub1:toHub1: config found
ike 0:toHub1_0:toHub1: IPsec SA connect 6 12.1.1.2->55.1.1.2:64916 negotiating
ike 0:toHub1_0:48: cookie d3fdd1bfbc94caee/16a1eb5b0f37ee23:8465e467

FortiOS 6.4.6 Administration Guide 1517


Fortinet Technologies Inc.
VPN

ike 0:toHub1_0:48:toHub1:109: natt flags 0x1f, encmode 1->3


ike 0:toHub1_0:48:toHub1:109: initiator selectors 0 0:0.0.0.0/0.0.0.0:0:0-
>0:0.0.0.0/0.0.0.0:0:0
ike 0:toHub1_0:48: sent IKE msg (quick_i1send): 12.1.1.2:4500->55.1.1.2:64916, len=620,
id=d3fdd1bfbc94caee/16a1eb5b0f37ee23:8465e467
ike 0: comes 55.1.1.2:64916->12.1.1.2:4500,ifindex=6....
ike 0: IKEv1 exchange=Quick id=d3fdd1bfbc94caee/16a1eb5b0f37ee23:8465e467 len=444
ike 0:toHub1_0:48:toHub1:109: responder selectors 0:0.0.0.0/0.0.0.0:0->0:0.0.0.0/0.0.0.0:0
ike 0:toHub1_0:48:toHub1:109: my proposal:


ike 0:toHub1_0:48:toHub1:109: add IPsec SA: SPIs=79654cf1/5e9936a5
ike 0:toHub1_0:48:toHub1:109: IPsec SA dec spi 79654cf1 key
16:5E21180992B8892DE5142E1F53ABD29E auth 20:49AA4AE14994A39A138392AC517B6E79D98CA673
ike 0:toHub1_0:48:toHub1:109: IPsec SA enc spi 5e9936a5 key
16:BE16B8EF4E75F7B3CF97A1D58D996890 auth 20:2F46B57CAC6F3185BB182F9280312263325F6BAF
ike 0:toHub1_0:48:toHub1:109: added IPsec SA: SPIs=79654cf1/5e9936a5
ike 0:toHub1_0:48:toHub1:109: sending SNMP tunnel UP trapp

To verify the spoke-to-spoke IPsec phase 1 tunnel shortcut is established:

# diagnose vpn ike gateway list


vd: root/0
name: toHub1
version: 1
interface: wan2 6
addr: 12.1.1.2:4500 -> 22.1.1.1:4500
created: 503s ago
assigned IPv4 address: 10.10.1.100/255.255.255.0
nat: me
auto-discovery: 2 receiver
IKE SA: created 1/1 established 1/1 time 0/0/0 ms
IPsec SA: created 1/3 established 1/3 time 0/0/0 ms

id/spi: 35 3c10fb6a76f1e264/6c7b397100dffc63
direction: initiator
status: established 503-503s ago = 0ms
proposal: aes128-sha256
key: 7fca86063ea2e72f-4efea6f1bec23948
lifetime/rekey: 86400/85596
DPD sent/recv: 00000000/00000000

vd: root/0
name: toHub1_0
version: 1
interface: wan2 6
addr: 12.1.1.2:4500 -> 55.1.1.2:64916
created: 208s ago
nat: me peer
auto-discovery: 2 receiver
IKE SA: created 1/1 established 1/1 time 20/20/20 ms
IPsec SA: created 1/1 established 1/1 time 10/10/10 ms

id/spi: 48 d3fdd1bfbc94caee/16a1eb5b0f37ee23
direction: initiator
status: established 208-208s ago = 20ms

FortiOS 6.4.6 Administration Guide 1518


Fortinet Technologies Inc.
VPN

proposal: aes128-sha256
key: 9bcac400d8e14e11-fffde33eaa3a8263
lifetime/rekey: 86400/85891
DPD sent/recv: 0000000a/00000000

Other VPN topics

The following topics provide instructions on configuring other VPN topics.
 l VPN and ASIC offload on page 1519
 l Encryption algorithms on page 1529
 l Fragmenting IP packets before IPsec encapsulation on page 1536
 l Configure DSCP for IPsec tunnels on page 1537
 l VXLAN over IPsec tunnel with virtual wire pair on page 1539
 l VXLAN over IPsec using a VXLAN tunnel endpoint on page 1542
 l Defining gateway IP addresses in IPsec with mode-config and DHCP on page 1546
 l FQDN support for remote gateways on page 1548

VPN and ASIC offload

This topic provides a brief introduction to VPN traffic offloading.

IPsec traffic processed by NPU

 1. Check the device ASIC information. For example, a FortiGate 900D has an NP6 and a CP8.   
# get hardware status
Model name: [[QualityAssurance62/FortiGate]]-900D
ASIC version: CP8
ASIC SRAM: 64M
CPU: Intel(R) Xeon(R) CPU E3-1225 v3 @ 3.20GHz
Number of CPUs: 4
RAM: 16065 MB
Compact Flash: 1925 MB /dev/sda
Hard disk: 244198 MB /dev/sdb
USB Flash: not available
Network Card chipset: [[QualityAssurance62/FortiASIC]] NP6 Adapter (rev.)

 2. Check port to NPU mapping.
# diagnose npu np6 port-list
Chip XAUI Ports Max Cross-chip
Speed offloading
----
np6_0 0
1. port17 1G Yes
1. port18 1G Yes
1. port19 1G Yes
1. port20 1G Yes
1. port21 1G Yes
1. port22 1G Yes
1. port23 1G Yes

FortiOS 6.4.6 Administration Guide 1519


Fortinet Technologies Inc.
VPN

1. port24 1G Yes
1. port27 1G Yes
1. port28 1G Yes
1. port25 1G Yes
1. port26 1G Yes
1. port31 1G Yes
1. port32 1G Yes
1. port29 1G Yes
1. port30 1G Yes
1. portB 10G Yes
1.
----
np6_1 0
1. port1 1G Yes
1. port2 1G Yes
1. port3 1G Yes
1. port4 1G Yes
1. port5 1G Yes
1. port6 1G Yes
1. port7 1G Yes
1. port8 1G Yes
1. port11 1G Yes
1. port12 1G Yes
1. port9 1G Yes
1. port10 1G Yes
1. port15 1G Yes
1. port16 1G Yes
1. port13 1G Yes
1. port14 1G Yes
1. portA 10G Yes
1.
----

 3. Configure the option in IPsec phase1 settings to control NPU encrypt/decrypt IPsec packets (enabled by default).   
config vpn ipsec phase1/phase1-interface
edit "vpn_name"
set npu-offload enable/disable
next
end

 4. Check NPU offloading. The NPU encrypted/decrypted counter should tick. The npu_flag 03 flag means that the 


traffic processed by the NPU is bi-directional.   
# diagnose vpn tunnel list
list all ipsec tunnel in vd 0
----
name=test ver=2 serial=1 173.1.1.1:0->11.101.1.1:0
bound_if=42 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/8 options[0008]=npu
proxyid_num=1 child_num=0 refcnt=14 ilast=2 olast=2 ad=/0
stat: rxp=12231 txp=12617 rxb=1316052 txb=674314
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=test proto=0 sa=1 ref=4 serial=7
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=10626 type=00 soft=0 mtu=1438 expire=42921/0B replaywin=2048

FortiOS 6.4.6 Administration Guide 1520


Fortinet Technologies Inc.
VPN

seqno=802 esn=0 replaywin_lastseq=00000680 itn=0


life: type=01 bytes=0/0 timeout=42930/43200
dec: spi=e313ac46 esp=aes key=16 0dcb52642eed18b852b5c65a7dc62958
ah=md5 key=16 c61d9fe60242b9a30e60b1d01da77660
enc: spi=706ffe03 esp=aes key=16 6ad98c204fa70545dbf3d2e33fb7b529
ah=md5 key=16 dcc3b866da155ef73c0aba15ec530e2e
dec:pkts/bytes=1665/16352, enc:pkts/bytes=2051/16826
npu_flag=03 npu_rgwy=11.101.1.1 npu_lgwy=173.1.1.1 npu_selid=6 dec_npuid=2 enc_npuid=2

FGT_900D # diagnose vpn ipsec st


All ipsec crypto devices in use:
NP6_0:
Encryption (encrypted/decrypted)
null : 0 1.
des : 0 1.
3des : 0 1.
aes : 0 1.
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 0 1.
sha1 : 0 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

NP6_1:
Encryption (encrypted/decrypted)
null : 14976 15357
des : 0 1.
3des : 0 1.
aes : 1664 2047
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 1664 2047
sha1 : 14976 15357
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

NPU Host Offloading:


Encryption (encrypted/decrypted)
null : 3 1.
des : 0 1.
3des : 0 1.
aes : 3 1.
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.

FortiOS 6.4.6 Administration Guide 1521


Fortinet Technologies Inc.
VPN

chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 3 1.
sha1 : 3 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

CP8:
Encryption (encrypted/decrypted)
null : 1 1.
des : 0 1.
3des : 0 1.
aes : 1 1.
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 1 1.
sha1 : 1 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

SOFTWARE:
Encryption (encrypted/decrypted)
null : 0 1.
des : 0 1.
3des : 0 1.
aes : 0 1.
aes-gcm : 29882 29882
aria : 21688 21688
seed : 153774 153774
chacha20poly1305 : 29521 29521
Integrity (generated/validated)
null : 59403 59403
md5 : 0 1.
sha1 : 175462 175462
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

 5. If traffic cannot be offloaded by the NPU, the CP will try to encrypt/decrypt the IPsec packets.

IPsec traffic processed by CP

 1. Check the NPU flag and CP counter.
# diagnose vpn tunnel list
list all ipsec tunnel in vd 0
----
name=test ver=2 serial=1 173.1.1.1:0->11.101.1.1:0
bound_if=42 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/0
proxyid_num=1 child_num=0 refcnt=13 ilast=0 olast=0 ad=/0

FortiOS 6.4.6 Administration Guide 1522


Fortinet Technologies Inc.
VPN

stat: rxp=8418 txp=8418 rxb=1251248 txb=685896


dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=test proto=0 sa=1 ref=3 serial=7
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=10226 type=00 soft=0 mtu=1438 expire=42037/0B replaywin=2048
seqno=20e3 esn=0 replaywin_lastseq=000020e3 itn=0
life: type=01 bytes=0/0 timeout=42928/43200
dec: spi=e313ac48 esp=aes key=16 393770842f926266530db6e43e21c4f8
ah=md5 key=16 b2e4e025e8910e95c1745e7855479cca
enc: spi=706ffe05 esp=aes key=16 7ef749610335f9f50e252023926de29e
ah=md5 key=16 0b81e4d835919ab2b8ba8edbd01aec9d
dec:pkts/bytes=8418/685896, enc:pkts/bytes=8418/1251248
npu_flag=00 npu_rgwy=11.101.1.1 npu_lgwy=173.1.1.1 npu_selid=6 dec_npuid=0 enc_npuid=0

FGT-D # diagnose vpn ipsec status


All ipsec crypto devices in use:
NP6_0:
Encryption (encrypted/decrypted)
null : 0 1.
des : 0 1.
3des : 0 1.
aes : 0 1.
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 0 1.
sha1 : 0 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

NP6_1:
Encryption (encrypted/decrypted)
null : 14976 15357
des : 0 1.
3des : 0 1.
aes : 1664 2047
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 1664 2047
sha1 : 14976 15357
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

NPU Host Offloading:


Encryption (encrypted/decrypted)

FortiOS 6.4.6 Administration Guide 1523


Fortinet Technologies Inc.
VPN

null : 3 1.
des : 0 1.
3des : 0 1.
aes : 3 1.
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 3 1.
sha1 : 3 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

CP8:
Encryption (encrypted/decrypted)
null : 1 1.
des : 0 1.
3des : 0 1.
aes : 8499 8499
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 8499 8499
sha1 : 1 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

SOFTWARE:
Encryption (encrypted/decrypted)
null : 0 1.
des : 0 1.
3des : 0 1.
aes : 0 1.
aes-gcm : 29882 29882
aria : 21688 21688
seed : 153774 153774
chacha20poly1305 : 29521 29521
Integrity (generated/validated)
null : 59403 59403
md5 : 0 1.
sha1 : 175462 175462
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

 2.  Two options are used to control if the CP processes packets. If disabled, packets are processed by the CPU.
config system global
set ipsec-asic-offload disable

FortiOS 6.4.6 Administration Guide 1524


Fortinet Technologies Inc.
VPN

set ipsec-hmac-offload disable


end

IPsec traffic processed by CPU

IPsec traffic might be processed by the CPU for the following reasons:
 l Some low end models do not have NPUs.
 l NPU offloading and CP IPsec traffic processing manually disabled.
 l Some types of proposals - SEED, ARIA, chacha20poly1305 - are not supported by the NPU or CP.
 l NPU flag set to 00 and software encrypt/decrypt counter ticked.
# diagnose vpn tunnel list
list all ipsec tunnel in vd 0
----
name=test ver=2 serial=1 173.1.1.1:0->11.101.1.1:0
bound_if=42 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/0
proxyid_num=1 child_num=0 refcnt=14 ilast=0 olast=0 ad=/0
stat: rxp=12162 txp=12162 rxb=1691412 txb=1008216
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=test proto=0 sa=1 ref=4 serial=8
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=3 options=10602 type=00 soft=0 mtu=1453 expire=42903/0B replaywin=2048
seqno=2d70 esn=0 replaywin_lastseq=00002d70 itn=0
life: type=01 bytes=0/0 timeout=42931/43200
dec: spi=e313ac4d esp=chacha20poly1305 key=36
812d1178784c1130d1586606e44e1b9ab157e31a09edbed583be1e9cc82e8c9f2655a2cf
ah=null key=0
enc: spi=706ffe0a esp=chacha20poly1305 key=36
f2727e001e2243549b140f1614ae3df82243adb070e60c33911f461b389b05a7a642e11a
ah=null key=0
dec:pkts/bytes=11631/976356, enc:pkts/bytes=11631/1627692
npu_flag=00 npu_rgwy=11.101.1.1 npu_lgwy=173.1.1.1 npu_selid=7 dec_npuid=0 enc_npuid=0

FGT_900D # diagnose vpn ipsec status


All ipsec crypto devices in use:
NP6_0:
Encryption (encrypted/decrypted)
null : 0 1.
des : 0 1.
3des : 0 1.
aes : 0 1.
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 0 1.
sha1 : 0 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

FortiOS 6.4.6 Administration Guide 1525


Fortinet Technologies Inc.
VPN

NP6_1:
Encryption (encrypted/decrypted)
null : 14976 15357
des : 0 1.
3des : 0 1.
aes : 1664 2047
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 1664 2047
sha1 : 14976 15357
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

NPU Host Offloading:


Encryption (encrypted/decrypted)
null : 3 1.
des : 0 1.
3des : 0 1.
aes : 3 1.
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 3 1.
sha1 : 3 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

CP8:
Encryption (encrypted/decrypted)
null : 1 1.
des : 0 1.
3des : 0 1.
aes : 8865 8865
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 8865 8865
sha1 : 1 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

SOFTWARE:
Encryption (encrypted/decrypted)

FortiOS 6.4.6 Administration Guide 1526


Fortinet Technologies Inc.
VPN

null : 0 1.
des : 0 1.
3des : 0 1.
aes : 531 531
aes-gcm : 29882 29882
aria : 21688 21688
seed : 153774 153774
chacha20poly1305 : 41156 41156
Integrity (generated/validated)
null : 71038 71038
md5 : 531 531
sha1 : 175462 175462
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

Disable automatic ASIC offloading

When auto-asic-offload is set to disable in the firewall policy, traffic is not offloaded and the NPU hosting counter 
is ticked.
# diagnose vpn ipsec status
All ipsec crypto devices in use:
NP6_0:
Encryption (encrypted/decrypted)
null : 0 1.
des : 0 1.
3des : 0 1.
aes : 0 1.
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 0 1.
sha1 : 0 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

NP6_1:
Encryption (encrypted/decrypted)
null : 14976 15357
des : 0 1.
3des : 0 1.
aes : 110080 2175
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 110080 2175
sha1 : 14976 15357
sha256 : 0 1.

FortiOS 6.4.6 Administration Guide 1527


Fortinet Technologies Inc.
VPN

sha384 : 0 1.
sha512 : 0 1.

NPU Host Offloading:


Encryption (encrypted/decrypted)
null : 3 1.
des : 0 1.
3des : 0 1.
aes : 111090 1.
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 111090 1.
sha1 : 3 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

CP8:
Encryption (encrypted/decrypted)
null : 1 1.
des : 0 1.
3des : 0 1.
aes : 8865 8865
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 8865 8865
sha1 : 1 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

SOFTWARE:
Encryption (encrypted/decrypted)
null : 0 1.
des : 0 1.
3des : 0 1.
aes : 539 539
aes-gcm : 29882 29882
aria : 21688 21688
seed : 153774 153774
chacha20poly1305 : 41259 41259
Integrity (generated/validated)
null : 71141 71141
md5 : 539 539
sha1 : 175462 175462
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

FortiOS 6.4.6 Administration Guide 1528


Fortinet Technologies Inc.
VPN

Encryption algorithms

This topic provides a brief introduction to IPsec phase 1 and phase 2 encryption algorithms and includes the following 
sections:
 l IKEv1 phase 1 encryption algorithm
 l IKEv1 phase 2 encryption algorithm
 l IKEv2 phase 1 encryption algorithm
 l IKEv2 phase 2 encryption algorithm
 l HMAC settings

IKEv1 phase 1 encryption algorithm

The default encryption algorithm is:
aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1

DES is a symmetric-key algorithm, which means the same key is used for encrypting and decrypting data. FortiOS 
supports:
 l des-md5
 l des-sha1
 l des-sha256
 l des-sha384
 l des-sha512
3DES applies the DES algorithm three times to each data. FortiOS supports:
 l 3des-md5
 l 3des-sha1
 l 3des-sha256
 l 3des-sha384
 l 3des-sha512
AES is a symmetric-key algorithm with different key lengths (128, 192, and 256 bits). FortiOS supports:
 l aes128-md5
 l aes128-sha1
 l aes128-sha256
 l aes128-sha384
 l aes128-sha512
 l aes192-md5
 l aes192-sha1
 l aes192-sha256
 l aes192-sha384
 l aes192-sha512
 l aes256-md5
 l aes256-sha1
 l aes256-sha256
 l aes256-sha384
 l aes256-sha512

FortiOS 6.4.6 Administration Guide 1529


Fortinet Technologies Inc.
VPN

The ARIA algorithm is based on AES with different key lengths (128, 192, and 256 bits). FortiOS supports:
 l aria128-md5
 l aria128-sha1
 l aria128-sha256
 l aria128-sha384
 l aria128-sha512
 l aria192-md5
 l aria192-sha1
 l aria192-sha256
 l aria192-sha384
 l aria192-sha512
 l aria256-md5
 l aria256-sha1
 l aria256-sha256
 l aria256-sha384
 l aria256-sha512
SEED is a symmetric-key algorithm. FortiOS supports:
 l seed128-md5
 l seed128-sha1
 l seed128-sha256
 l seed128-sha384
 l seed128-sha512
Suite-B is a set of  AES encryption with ICV in GCM mode. FortiOS supports Suite-B on new kernel platforms only. IPsec 
traffic cannot offload to NPU. CP9 supports Suite-B offloading, otherwise packets are encrypted and decrypted by 
software. FortiOS supports:
 l suite-b-gcm-128
 l suite-b-gcm-256

IKEv1 phase 2 encryption algorithm

The default encryption algorithm is:
aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm aes256gcm chacha20poly1305

With null encryption, IPsec traffic can offload NPU/CP. FortiOS supports:
 l null-md5
 l null-sha1
 l null-sha256
 l null-sha384
 l null-sha512
With the DES encryption algorithm, IPsec traffic can offload NPU/CP. FortiOS supports:
 l des-null
 l des-md5
 l des-sha1
 l des-sha256

FortiOS 6.4.6 Administration Guide 1530


Fortinet Technologies Inc.
VPN

 l des-sha384
 l des-sha512
With the 3DES encryption algorithm, IPsec traffic can offload NPU/CP. FortiOS supports:
 l 3des-null
 l 3des-md5
 l 3des-sha1
 l 3des-sha256
 l 3des-sha384
 l 3des-sha512
With the AES encryption algorithm, IPsec traffic can offload NPU/CP. FortiOS supports:
 l aes128-null
 l aes128-md5
 l aes128-sha1
 l aes128-sha256
 l aes128-sha384
 l aes128-sha512
 l aes192-null
 l aes192-md5
 l aes192-sha1
 l aes192-sha256
 l aes192-sha384
 l aes192-sha512
 l aes256-null
 l aes256-md5
 l aes256-sha1
 l aes256-sha256
 l aes256-sha384
 l aes256-sha512
With the AESGCM encryption algorithm, IPsec traffic cannot offload NPU/CP. FortiOS supports:
 l aes128gcm
 l aes256gcm
With the chacha20poly1305 encryption algorithm, IPsec traffic cannot offload NPU/CP. FortiOS supports:
 l chacha20poly1305
With the ARIA encryption algorithm, IPsec traffic cannot offload NPU/CP. FortiOS supports:
 l aria128-null
 l aria128-md5
 l aria128-sha1
 l aria128-sha256
 l aria128-sha384
 l aria128-sha512
 l aria192-null
 l aria192-md5

FortiOS 6.4.6 Administration Guide 1531


Fortinet Technologies Inc.
VPN

 l aria192-sha1
 l aria192-sha256
 l aria192-sha384
 l aria192-sha512
 l aria256-null
 l aria256-md5
 l aria256-sha1
 l aria256-sha256
 l aria256-sha384
 l aria256-sha512
With the SEED encryption algorithm, IPsec traffic cannot offload NPU/CP. FortiOS supports:
 l seed-null
 l seed-md5
 l seed-sha1
 l seed-sha256
 l seed-sha384
 l seed-sha512

IKEv2 phase 1 encryption algorithm

The default encryption algorithm is:
aes128-sha256 aes256-sha256 aes128gcm-prfsha256 aes256gcm-prfsha384 chacha20poly1305-
prfsha256

DES is a symmetric-key algorithm, which means the same key is used for encrypting and decrypting data. FortiOS 
supports:
 l des-md5
 l des-sha1
 l des-sha256
 l des-sha384
 l des-sha512
3DES applies the DES algorithm three times to each data. FortiOS supports:
 l 3des-md5
 l 3des-sha1
 l 3des-sha256
 l 3des-sha384
 l 3des-sha512
AES is a symmetric-key algorithm with different key lengths (128, 192, and 256 bits). FortiOS supports:
 l aes128-md5
 l aes128-sha1
 l aes128-sha256
 l aes128-sha384
 l aes128-sha512
 l aes128gcm-prfsha1

FortiOS 6.4.6 Administration Guide 1532


Fortinet Technologies Inc.
VPN

 l aes128gcm-prfsha256
 l aes128gcm-prfsha384
 l aes128gcm-prfsha512
 l aes192-md5
 l aes192-sha1
 l aes192-sha256
 l aes192-sha384
 l aes192-sha512
 l aes256-md5
 l aes256-sha1
 l aes256-sha256
 l aes256-sha384
 l aes256-sha512
 l aes256gcm-prfsha1
 l aes256gcm-prfsha256
 l aes256gcm-prfsha384
 l aes256gcm-prfsha512
The ARIA algorithm is based on AES with different key lengths (128, 192, and 256 bits). FortiOS supports:
 l aria128-md5
 l aria128-sha1
 l aria128-sha256
 l aria128-sha384
 l aria128-sha512
 l aria192-md5
 l aria192-sha1
 l aria192-sha256
 l aria192-sha384
 l aria192-sha512
 l aria256-md5
 l aria256-sha1
 l aria256-sha256
 l aria256-sha384
 l aria256-sha512
With the chacha20poly1305 encryption algorithm, FortiOS supports:
 l chacha20poly1305-prfsha1
 l chacha20poly1305-prfsha256
 l chacha20poly1305-prfsha384
 l chacha20poly1305-prfsha512
SEED is a symmetric-key algorithm. FortiOS supports:
 l seed128-md5
 l seed128-sha1
 l seed128-sha256

FortiOS 6.4.6 Administration Guide 1533


Fortinet Technologies Inc.
VPN

 l seed128-sha384
 l seed128-sha512
Suite-B is a set of  AES encryption with ICV in GCM mode. FortiOS supports Suite-B on new kernel platforms only. IPsec 
traffic cannot offload to NPU. CP9 supports Suite-B offloading, otherwise packets are encrypted and decrypted by 
software. FortiOS supports:
 l suite-b-gcm-128
 l suite-b-gcm-256

IKEv2 phase 2 encryption algorithm

The default encryption algorithm is:
aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm aes256gcm chacha20poly1305

With null encryption, IPsec traffic can offload NPU/CP. FortiOS supports:
 l null-md5
 l null-sha1
 l null-sha256
 l null-sha384
 l null-sha512
With the DES encryption algorithm, IPsec traffic can offload NPU/CP. FortiOS supports:
 l des-null
 l des-md5
 l des-sha1
 l des-sha256
 l des-sha384
 l des-sha512
With the 3DES encryption algorithm, IPsec traffic can offload NPU/CP. FortiOS supports:
 l 3des-null
 l 3des-md5
 l 3des-sha1
 l 3des-sha256
 l 3des-sha384
 l 3des-sha512
With the AES encryption algorithm, IPsec traffic can offload NPU/CP. FortiOS supports:
 l aes128-null
 l aes128-md5
 l aes128-sha1
 l aes128-sha256
 l aes128-sha384
 l aes128-sha512
 l aes192-null
 l aes192-md5
 l aes192-sha1
 l aes192-sha256

FortiOS 6.4.6 Administration Guide 1534


Fortinet Technologies Inc.
VPN

 l aes192-sha384
 l aes192-sha512
 l aes256-null
 l aes256-md5
 l aes256-sha1
 l aes256-sha256
 l aes256-sha384
 l aes256-sha512
With the AESGCM encryption algorithm, IPsec traffic cannot offload NPU. CP9 supports AESGCM offloading. FortiOS 
supports:
 l aes128gcm
 l aes256gcm
With the chacha20poly1305 encryption algorithm, IPsec traffic cannot offload NPU/CP. FortiOS supports:
 l chacha20poly1305
With the ARIA encryption algorithm, IPsec traffic cannot offload NPU/CP. FortiOS supports:
 l aria128-null
 l aria128-md5
 l aria128-sha1
 l aria128-sha256
 l aria128-sha384
 l aria128-sha512
 l aria192-null
 l aria192-md5
 l aria192-sha1
 l aria192-sha256
 l aria192-sha384
 l aria192-sha512
 l aria256-null
 l aria256-md5
 l aria256-sha1
 l aria256-sha256
 l aria256-sha384
 l aria256-sha512
With the SEED encryption algorithm, IPsec traffic cannot offload NPU/CP. FortiOS supports:
 l seed-null
 l seed-md5
 l seed-sha1
 l seed-sha256
 l seed-sha384
 l seed-sha512

FortiOS 6.4.6 Administration Guide 1535


Fortinet Technologies Inc.
VPN

HMAC settings

The FortiGate uses the HMAC based on the authentication proposal that is chosen in phase 1 or phase 2 of the IPsec 
configuration. Each proposal consists of the encryption-hash pair (such as 3des-sha256). The FortiGate matches the 
most secure proposal to negotiate with the peer. 

To view the chosen proposal and the HMAC hash used:

# diagnose vpn ike gateway list

vd: root/0
name: MPLS
version: 1
interface: port1 3
addr: 192.168.2.5:500 -> 10.10.10.1:500
virtual-interface-addr: 172.31.0.2 -> 172.31.0.1
created: 1015820s ago
IKE SA: created 1/13 established 1/13 time 10/1626/21010 ms
IPsec SA: created 1/24 established 1/24 time 0/11/30 ms

id/spi: 124 43b087dae99f7733/6a8473e58cd8990a


direction: responder
status: established 68693-68693s ago = 10ms
proposal: 3des-sha256
key: e0fa6ab8dc509b33-aa2cc549999b1823-c3cb9c337432646e
lifetime/rekey: 86400/17436
DPD sent/recv: 000001e1/00000000

Fragmenting IP packets before IPsec encapsulation

The ip-fragmentation command  controls packet fragmentation before IPsec encapsulation, which can benefit 
packet loss in some environments.
The following options are available for the ip-fragmentation variable.

Option Description

pre-encapsulation Fragment before IPsec encapsulation.

post-encapsulation (default value)  Fragment after IPsec encapsulation (RFC compliant).

To configure packet fragmentation using the CLI:

config vpn ipsec phase1-interface


edit "demo"
set interface "port1"
set authmethod signature
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set ip-fragmentation pre-encapsulation
set remote-gw 172.16.200.4
set certificate "Fortinet_Factory"
next
end

FortiOS 6.4.6 Administration Guide 1536


Fortinet Technologies Inc.
VPN

Configure DSCP for IPsec tunnels

Configuring the differentiated services (DiffServ) code in phase2 of an IPsec tunnel allows the tag to be applied to the 
Encapsulating Security Payload (ESP) packet.
 l If diffserv is disabled in the IPsec phase2 configuration, then the ESP packets' DSCP value is copied from the 
inner IP packet DSCP.
 l If diffserv is enabled in the IPsec phase2 configuration, then ESP packets' DSCP value is set to the configured 
value.

Offloading traffic to the NPU must be disabled for the tunnel.

In this example, NPU offloading is disabled, diffserv is enabled, and the diffserv code is set to 000111 on FGT-A. Only 
one side of the tunnel needs to have diffserv enabled.

To configure IPsec on FGT-A:

 1. Configure the phase1-interface:
config vpn ipsec phase1-interface
edit "s2s"
set interface "wan1"
set peertype any
set net-device disable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set npu-offload disable
set dhgrp 14 5
set wizard-type static-fortigate
set remote-gw 173.1.1.1
set psksecret ***********
next
end

 2. Configure the phase2-interface:
config vpn ipsec phase2-interface
edit "s2s"
set phase1name "s2s"

FortiOS 6.4.6 Administration Guide 1537


Fortinet Technologies Inc.
VPN

set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm


aes256gcm chacha20poly1305
set dhgrp 14 5
set diffserv enable
set diffservcode 000111
set src-addr-type name
set dst-addr-type name
set src-name "s2s_local"
set dst-name "s2s_remote"
next
end

 3. Check the state of the IPsec tunnel:
FGT-A # diagnose vpn tunnel list
list all ipsec tunnel in vd 0
------------------------------------------------------
name=s2s ver=1 serial=1 11.101.1.1:0->173.1.1.1:0 dst_mtu=1500
bound_if=17 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/512 options[0200]=frag-rfc
run_state=0 accept_traffic=1 overlay_id=0

proxyid_num=1 child_num=0 refcnt=11 ilast=12 olast=2978 ad=/0


stat: rxp=4 txp=4 rxb=608 txb=336
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=s2s proto=0 sa=1 ref=2 serial=2 dscp
src: 0:10.1.100.0/255.255.255.0:0
dst: 0:174.16.101.0/255.255.255.0:0
SA: ref=3 options=110226 type=00 soft=0 mtu=1438 expire=39916/0B replaywin=2048
seqno=5 esn=0 replaywin_lastseq=00000005 itn=0 qat=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=42899/43200
dec: spi=a41f202e esp=aes key=16 8a02875b80b884d961af227fe8b5cdee
ah=sha1 key=20 fc9760b79e79dbbeef630ec0c5dca74777976208
enc: spi=431bce1e esp=aes key=16 851117af24212da89e466d8bea9632bb
ah=sha1 key=20 0807cc0af2dc4ea049a6b1a4af410ccc71e2156d
dec:pkts/bytes=4/336, enc:pkts/bytes=4/608
npu_flag=00 npu_rgwy=173.1.1.1 npu_lgwy=11.101.1.1 npu_selid=1 dec_npuid=0 enc_npuid=0
run_tally=1

 4. Use a packet analyzer, or sniffer, to check the ESP packets:

FortiOS 6.4.6 Administration Guide 1538


Fortinet Technologies Inc.
VPN

VXLAN over IPsec tunnel with virtual wire pair

In this example, a site-to-site VPN tunnel is formed between two FortiGates. Multiple VLANs are configured that match 
on each FortiGate.  Host1 and Host2 are connected to VLAN10 on the switches.

To configure FGT-A in the CLI:

 1. Configure the WAN interface:
config system interface
edit "wan1"
set vdom "root"
set ip 11.11.11.11 255.255.255.0
set allowaccess ping https ssh http fgfm
set type physical
set role wan
set snmp-index 1
next
end

 2. Configure a static route to send all traffic out the WAN interface:
config router static
edit 1
set gateway 11.11.11.1
set device "wan1"
next
end

 3. Configure the IPsec tunnel:
config vpn ipsec phase1-interface
edit "ipsec"
set interface "wan1"
set peertype any
set proposal aes256-sha1
set remote-gw 22.22.22.22
set psksecret **********
next
end
config vpn ipsec phase2-interface
edit "ipsec"
set phase1name "ipsec"
set proposal aes256-sha1

FortiOS 6.4.6 Administration Guide 1539


Fortinet Technologies Inc.
VPN

set auto-negotiate enable


next
end

 4. Configure the VXLAN interface and bind it to the IPsec interface:
config system vxlan
edit "vxlan"
set interface "ipsec"
set vni 10
set remote-ip "22.22.22.22"
next
end

The remote IP address is the peer side WAN IP address.
 5. Configure a virtual wire pair with the LAN and VXLAN interfaces as members:
config system virtual-wire-pair
edit "vwp"
set member "port1" "vxlan"
set wildcard-vlan enable
next
end

The interfaces added to the virtual wire pair cannot be part of a switch, such as the default internal interface.
By enabling wildcard VLANs on the virtual wire pair, all VLAN tagged traffic that is allowed by the virtual wire pair 
firewall policies passes through the pair.
 6. Configure a firewall policy to allow traffic between the LAN and VXLAN interfaces:
config firewall policy
edit 4
set name "vwp-pol"
set srcintf "port1" "vxlan"
set dstintf "port1" "vxlan"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
next
end

To configure FGT-B in the CLI:

 1. Configure the WAN interface:
config system interface
edit "wan1"
set vdom "root"
set ip 22.22.22.22 255.255.255.0 255.255.255.0
set allowaccess ping https ssh http fgfm
set type physical
set role wan
set snmp-index 1
next
end

 2. Configure a static route to send all traffic out the WAN interface:

FortiOS 6.4.6 Administration Guide 1540


Fortinet Technologies Inc.
VPN

config router static


edit 1
set gateway 22.22.22.2
set device "wan1"
next
end

 3. Configure the IPsec tunnel:
config vpn ipsec phase1-interface
edit "ipsec"
set interface "wan1"
set peertype any
set proposal aes256-sha1
set remote-gw 11.11.11.11
set psksecret **********
next
end
config vpn ipsec phase2-interface
edit "ipsec"
set phase1name "ipsec"
set proposal aes256-sha1
set auto-negotiate enable
next
end

 4. Configure the VXLAN interface and bind it to the IPsec interface:
config system vxlan
edit "vxlan"
set interface "ipsec"
set vni 10
set remote-ip "11.11.11.11"
next
end

The remote IP address is the peer side WAN IP address.
 5. Configure a virtual wire pair with the LAN and VXLAN interfaces as members:
config system virtual-wire-pair
edit "vwp"
set member "port1" "vxlan"
set wildcard-vlan enable
next
end

 6. Configure a firewall policy to allow traffic between the LAN and VXLAN interfaces:
config firewall policy
edit 4
set name "vwp-pol"
set srcintf "port1" "vxlan"
set dstintf "port1" "vxlan"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"

FortiOS 6.4.6 Administration Guide 1541


Fortinet Technologies Inc.
VPN

next
end

Test the configuration

To test the configuration, ping Host2 (VLAN10: 192.168.10.2/24) from Host1 (VLAN10: 192.168.10.1/24):

C:\>ping 192.168.10.2

Pinging 192.168.10.2 with 32 bytes of data:


Reply from 192.168.10.2: bytes=32 time=8ms TTL=56
Reply from 192.168.10.2: bytes=32 time=8ms TTL=56
Reply from 192.168.10.2: bytes=32 time=8ms TTL=56
Reply from 192.168.10.2: bytes=32 time=11ms TTL=56

Ping statistics for 192.168.10.2:


Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 8ms, Maximum = 11ms, Average = 8ms

VXLAN over IPsec using a VXLAN tunnel endpoint

This example describes how to implement XLAN over IPsec VPN using a VXLAN tunnel endpoint (VTEP).

This example shows a specific configuration that uses a hub-and-spoke topology. However, the same logic can be 
applied to a static VPN with or without XAuth. In this  hub-and-spoke topology, dialup VPN is convenient because it uses 
a single phase 1 dialup definition on the hub FortiGate. Additional spoke tunnels are added without any changes to the 

FortiOS 6.4.6 Administration Guide 1542


Fortinet Technologies Inc.
VPN

hub, other than adding a user account for each additional spoke. Spoke-to-spoke communication is established through 
the hub. This example assumes the authentication users and user groups have already been created.
IPsec tunnel interfaces are used to support VXLAN tunnel termination. An IP address is set for each tunnel interface. 
Ping access is allowed for troubleshooting purposes.
VTEPs are created on each of the hub and spokes in order to forward VXLAN traffic through the IPsec tunnels. VXLAN 
encapsulates OSI layer 2 Ethernet frames within layer 3 IP packets. You will need to either combine the internal port and 
VXLAN interface into a soft switch, or create a virtual wire pair so that devices behind port1 have direct layer 2 access to 
remote peers over the VXLAN tunnel. This example uses a switch interface on the hub and a virtual wire pair on the 
spokes to demonstrate the two different methods.
Finally, in order to apply an IPsec VPN interface on the VXLAN interface setting, net-device must be disabled in the 
IPsec VPN phase 1 settings. All VXLAN interfaces in this example share the same VXLAN network ID (vni). 

To configure the hub FortiGate:

 1. Configure the phase 1 and phase 2 interfaces:
config vpn ipsec phase1-interface
edit "SPOKES"
set type dynamic
set interface "port2"
set mode aggressive
set peertype one
set net-device disable
set proposal aes256-sha256
set xauthtype auto
set authusrgrp "SPOKES"
set peerid "SPOKES"
set psksecret <secret>
next
end
config vpn ipsec phase2-interface
edit "SPOKES"
set phase1name "SPOKES"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
next
end

 2. Configure the IPsec VPN policy that allows VXLAN traffic between spokes:
config firewall policy
edit 1
set name "VXLAN_SPOKE_to_SPOKE"
set srcintf "SPOKES"
set dstintf "SPOKES"
set srcaddr "NET_192.168.255.0"
set dstaddr "NET_192.168.255.0"
set action accept
set schedule "always"
set service "UDP_4789"
set logtraffic all
set fsso disable
next
end

FortiOS 6.4.6 Administration Guide 1543


Fortinet Technologies Inc.
VPN

 3. Configure the IPsec tunnel interfaces (the remote IP address is not used, but it is necessary for this configuration):
config system interface
edit "SPOKES"
set vdom "root"
set ip 192.168.255.1 255.255.255.255
set allowaccess ping
set type tunnel
set remote-ip 192.168.255.254 255.255.255.0
set snmp-index 12
set interface "port2"
next
end

 4. Configure the VXLAN interface (the remote IP is the tunnel interfaces IPs of the spokes):
config system VXLAN
edit "SPOKES_VXLAN"
set interface "SPOKES"
set vni 1
set remote-ip "192.168.255.2" "192.168.255.3"
next
end

To configure the spoke FortiGates:

 1. Configure the phase 1 and phase 2 interfaces:
config vpn ipsec phase1-interface
edit "HUB"
set interface "port2"
set mode aggressive
set peertype any
set net-device disable
set proposal aes256-sha256
set localid "SPOKES"
set xauthtype client
set authusr "SPOKE1"
set authpasswd <secret>
set remote-gw <hub public IP>
set psksecret <secret>
next
end
config vpn ipsec phase2-interface
edit "HUB"
set phase1name "HUB"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm
aes256gcm chacha20poly1305
set auto-negotiate enable
set src-subnet 192.168.255.2 255.255.255.255
next
end

The hub FortiGate inserts a reverse route pointing to newly established tunnel interfaces 
for any of the subnets that the spoke FortiGate's source quick mode selectors provides. 
This is why you should set the tunnel IP address here. 

FortiOS 6.4.6 Administration Guide 1544


Fortinet Technologies Inc.
VPN

 2. Configure the IPsec VPN policy:
config firewall policy
edit 1
set name "VTEP_IPSEC_POLICY"
set srcintf "HUB"
set dstintf "HUB"
set srcaddr "none"
set dstaddr "none"
set action accept
set schedule "always"
set service "PING"
set logtraffic disable
set fsso disable
next
end

 3. Configure the IPsec tunnel interfaces:
config system interface
edit "HUB"
set vdom "root"
set ip 192.168.255.2 255.255.255.255
set allowaccess ping
set type tunnel
set remote-ip 192.168.255.1 255.255.255.0
set snmp-index 12
set interface "port2"
next
end

 4. Configure the VXLAN interface (the remote IP is the tunnel interface IP of the hub):
config system VXLAN
edit "HUB_VXLAN"
set interface "HUB"
set vni 1
set remote-ip "192.168.255.1"
next
end

To establish a VXLAN tunnel between spokes, you can add a spoke's tunnel IP address in remote-ip.

To add more remote IP addresses to a VXLAN interface, the interface cannot be in use. 
You may want to provision future spokes' remote IP addresses at this point to avoid traffic 
disruption. Otherwise, you must delete the reference (the policy in this example) before 
adding remote IP addresses.

To bind the VXLAN interface to the internal interface:

 1. Configure a switch interface on the hub:
config system switch-interface
edit "SW"
set vdom "root"
set member "port1" "SPOKES_VXLAN"
set intra-switch-policy {implicit | explicit}

FortiOS 6.4.6 Administration Guide 1545


Fortinet Technologies Inc.
VPN

next
end

Allowing intra-switch traffic is implicitly allowed by default. Use set intra-switch-
policy explicit to require firewall policies to allow traffic between switch interfaces.

 2. Configure a virtual wire pair on the spokes:
config system virtual-wire-pair
edit "VWP"
set member "HUB_VXLAN" "port1"
next
end

The virtual wire pair requires an explicit policy to allow traffic between interfaces.

To test the configuration:

 1. Ping the hub FortiGate from the spoke FortiGate:   
user@pc-spoke1:~$ ping 192.168.1.1 -c 3PING 192.168.1.1 (192.168.1.1) 56(84) bytes of
data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.24 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.672 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.855 ms
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.672/0.923/1.243/0.239 ms

 2. Sniff traffic on the hub FortiGate:   
# diagnose sniffer packet any 'icmp or (udp and port 4789)' 4 0 ainterfaces=[any]
filters=[icmp or (udp and port 4789)]
15:00:01.438230 SPOKES in 192.168.255.2.4790 -&gt; 192.168.255.1.4789: udp 106
<<<<1
15:00:01.438256 SPOKES_VXLAN in 192.168.1.2 -&gt; 192.168.1.1: icmp: echo request
<<<<2
15:00:01.438260 port1 out 192.168.1.2 -&gt; 192.168.1.1: icmp: echo request
<<<<3
15:00:01.438532 port1 in 192.168.1.1 -&gt; 192.168.1.2: icmp: echo reply
15:00:01.438536 SPOKES_VXLAN out 192.168.1.1 -&gt; 192.168.1.2: icmp: echo reply
15:00:01.438546 SPOKES out 192.168.255.1.4851 -&gt; 192.168.255.2.4789: udp 106

Defining gateway IP addresses in IPsec with mode-config and DHCP

For an IPsec tunnel, the gateway IP address (giaddr) can be defined on a DHCP relay agent. Both IPv4 and IPv6 
addresses are supported. An IPsec tunnel with mode-config and DHCP relay cannot specify a DHCP subnet range to 
the DHCP server.
The DHCP server assigns an IP address based on the giaddr set on the IPSec phase1 interface and sends an offer to 
this subnet. The DHCP server must have a route to the specified subnet giaddr.

FortiOS 6.4.6 Administration Guide 1546


Fortinet Technologies Inc.
VPN

Example

To define the gateway IP address on the DHCP relay server:

 1. Configure the VPN IPsec phase1 interface:
config vpn ipsec phase1-interface
edit "ipv4"
set type dynamic
set interface "port2"
set peertype any
set net-device disable
set mode-cfg enable
set proposal des-md5 des-sha1
set dpd on-idle
set dhgrp 5
set assign-ip-from dhcp
set dhcp-ra-giaddr 11.11.11.1
set psksecret ***********
set dpd-retryinterval 60
next
end

IPv6 could also be configured:
config vpn ipsec phase1-interface
edit "ipv6"
set type dynamic
set interface "port2"
set peertype any
set net-device disable
set mode-cfg enable
set proposal des-md5 des-sha1
set dpd on-idle

FortiOS 6.4.6 Administration Guide 1547


Fortinet Technologies Inc.
VPN

set dhgrp 5
set assign-ip-from dhcp
set dhcp6-ra-linkaddr 2000:11:11:11::1
set psksecret **********
set dpd-retryinterval 60
next
end

 2. Enable DHCP proxy and configure the DHCP server IP address:
config system settings
set dhcp-proxy enable
set dhcp-server-ip "10.1.1.1"
end

 3. Repeat the above steps for FGT_C and subnet B.

FQDN support for remote gateways

FortiGate supports FQDN when defining an IPsec remote gateway with a dynamically assigned IPv6 address. When 
FortiGate attempts to connect to the IPv6 device, FQDN will resolve the IPv6 address even when the address changes.
Using FQDN to configure the remote gateway is useful when the remote end has a dynamic IPv6 address assigned by 
their ISP or DHCPv6 server.

To set the VPN to DDNS and configure FQDN:

config vpn ipsec phase1-interface


edit "ddns6"
set type ddns
set interface "agg1"
set ip-version 6
set ike-version 2
set peertype any
set net-device disable
set proposal aes128-sha256 aes256-sha256 aes128gcm-prfsha256 aes256gcm-prfsha384
chacha20poly1305-prfsha256
set dpd on-idle
set remotegw-ddns "rgwa61.vpnlab.org"
set psksecret **********
next
end
config vpn ipsec phase2-interface
edit "ddns6"
set phase1name "ddns6"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm aes256gcm
chacha20poly1305
set src-addr-type subnet6
set dst-addr-type subnet6
set src-subnet6 2003:1:1:1::/64
next
end

FortiOS 6.4.6 Administration Guide 1548


Fortinet Technologies Inc.
VPN

FQDN resolves the IPv6 address

# diagnose test application dnsproxy 7

vfid=0, name=rgwa61.vpnlab.org, ttl=3600:3547:1747


2003:33:1:1::22 (ttl=3600)

FortiGate uses FQDN to connect to the IPv6 device

# diagnose vpn tunnel list name ddns6


list ipsec tunnel by names in vd 0
------------------------------------------------------
name=ddns6 ver=2 serial=2 2003:33:1:1::1:0->2003:33:1:1::22:0 dst_mtu=1500
bound_if=32 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/520 options[0208]=npu frag-rfc
run_state=0 accept_traffic=1 overlay_id=0

proxyid_num=1 child_num=0 refcnt=10 ilast=9 olast=9 ad=/0


stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=20000ms retry=3 count=0 seqno=72340
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=ddns6 proto=0 sa=1 ref=2 serial=1
src: 0:2003:1:1:1::/64:0
dst: 0:::/0:0
SA: ref=3 options=10226 type=00 soft=0 mtu=1422 expire=42680/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=42901/43200
dec: spi=ac7a5718 esp=aes key=16 9976b66280cc49f500d8edca093e03fb
ah=sha1 key=20 4d94d76fc18df5a180c52e0a6cd5f430fde48fe8
enc: spi=7ab888ec esp=aes key=16 841a95d3ee5ea5108a2ba269b74998d1
ah=sha1 key=20 ed0b52d27776e30149ee36af4fd4626681c2a3a1
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
npu_flag=00 npu_rgwy=2003:33:1:1::22 npu_lgwy=2003:33:1:1::1 npu_selid=0 dec_npuid=0 enc_
npuid=0
run_tally=1

The tunnel can still connect to the FQDN address when the IPv6 address changes

# diagnose debug application ike -1


# diagnose debug enable
ike 0:ddns6: set oper down
ike 0:ddns6: carrier down
ike shrank heap by 159744 bytes
ike 0: cache rebuild start
ike 0:ddns6: sending DNS request for remote peer rgwa61.vpnlab.org
ike 0: send IPv6 DNS query : rgwa61.vpnlab.org
ike 0: cache rebuild done
ike 0:ddns6: remote IPv6 DDNS gateway is empty, retry to resolve it
ike 0: DNS response received for remote gateway rgwa61.vpnlab.org
ike 0: DNS rgwa61.vpnlab.org -> 2003:33:1:1::33
ike 2:test:46932: could not send IKE Packet(P1_RETRANSMIT):50.1.1.1:500->50.1.1.2:500,
len=716: error 101:Network is unreachable
ike 0:ddns6: remote IPv6 DDNS gateway is empty, retry to resolve it
ike 0:ddns6: 'rgwa61.vpnlab.org' resolved to 2003:33:1:1::33
ike 0: cache rebuild start
ike 0:ddns6: local:2003:33:1:1::1, remote:2003:33:1:1::33
ike 0:ddns6: cached as static-ddns.

FortiOS 6.4.6 Administration Guide 1549


Fortinet Technologies Inc.
VPN

ike 0: cache rebuild done


ike 0:ddns6: auto-negotiate connection
ike 0:ddns6: created connection: 0x155aa510 32 2003:33:1:1::1->2003:33:1:1::33:500.

............................................................................................
.........................
ike 0:ddns6:46933:ddn6:47779: add IPsec SA: SPIs=ac7a5719/7ab888ed
ike 0:ddns6:46933:ddn6:47779: IPsec SA dec spi ac7a5719 key
16:0F27F1D1D02496F90D15A30E2C032678 auth 20:46564E0E86A054374B31E58F95E4458340121BCE
ike 0:ddns6:46933:ddn6:47779: IPsec SA enc spi 7ab888ed key
16:926B12908EE670E1A5DDA6AD8E96607B auth 20:42BF438DC90867B837B0490EAB08E329AB62CBE3
ike 0:ddns6:46933:ddn6:47779: added IPsec SA: SPIs=ac7a5719/7ab888ed
ike 0:ddns6:46933:ddn6:47779: sending SNMP tunnel UP trap
ike 0:ddns6: carrier up

VPN IPsec troubleshooting

See the following IPsec troubleshooting examples:
 l Understanding VPN related logs
 l IPsec related diagnose commands on page 1552

Understanding VPN related logs

This section provides some IPsec log samples.

IPsec phase1 negotiating

logid="0101037127" type="event" subtype="vpn" level="notice" vd="root" eventtime=1544132571


logdesc="Progress IPsec phase 1" msg="progress IPsec phase 1" action="negotiate"
remip=11.101.1.1
locip=173.1.1.1 remport=500 locport=500 outintf="port13"
cookies="e41eeecb2c92b337/0000000000000000" user="N/A" group="N/A" xauthuser="N/A"
xauthgroup="N/A" assignip=N/A vpntunnel="to_HQ" status="success" init="local"
mode="aggressive" dir="outbound" stage=1 role="initiator" result="OK"

IPsec phase1 negotiated

logid="0101037127" type="event" subtype="vpn" level="notice" vd="root" eventtime=1544132571


logdesc="Progress IPsec phase 1" msg="progress IPsec phase 1" action="negotiate"
remip=11.101.1.1
locip=173.1.1.1 remport=500 locport=500 outintf="port13"
cookies="e41eeecb2c92b337/1230131a28eb4e73" user="N/A" group="N/A" xauthuser="N/A"
xauthgroup="N/A" assignip=N/A vpntunnel="to_HQ" status="success" init="local"
mode="aggressive" dir="outbound" stage=2 role="initiator" result="DONE"

IPsec phase1 tunnel up

logid="0101037138" type="event" subtype="vpn" level="notice" vd="root" eventtime=1544132604


logdesc="IPsec connection status changed" msg="IPsec connection status change"
action="tunnel-up" remip=11.101.1.1 locip=173.1.1.1 remport=500 locport=500 outintf="port13"

FortiOS 6.4.6 Administration Guide 1550


Fortinet Technologies Inc.
VPN

cookies="5b1c59fab2029e43/bf517e686d3943d2" user="N/A" group="N/A" xauthuser="N/A"


xauthgroup="N/A" assignip=11.11.11.1 vpntunnel="to_HQ" tunnelip=N/A tunnelid=1530910918
tunneltype="ipsec" duration=0 sentbyte=0 rcvdbyte=0 nextstat=0

IPsec phase2 negotiate

logid="0101037129" type="event" subtype="vpn" level="notice" vd="root" eventtime=1544132604


logdesc="Progress IPsec phase 2" msg="progress IPsec phase 2" action="negotiate"
remip=11.101.1.1
locip=173.1.1.1 remport=500 locport=500 outintf="port13"
cookies="5b1c59fab2029e43/bf517e686d3943d2" user="N/A" group="N/A" xauthuser="N/A"
xauthgroup="N/A" assignip=11.11.11.1 vpntunnel="to_HQ" status="success" init="local"
mode="quick" dir="outbound" stage=1 role="initiator" result="OK"

IPsec phase2 tunnel up

logid="0101037139" type="event" subtype="vpn" level="notice" vd="root" eventtime=1544132604


logdesc="IPsec phase 2 status changed" msg="IPsec phase 2 status change" action="phase2-up"
remip=11.101.1.1 locip=173.1.1.1 remport=500 locport=500 outintf="port13"
cookies="5b1c59fab2029e43/bf517e686d3943d2" user="N/A" group="N/A" xauthuser="N/A"
xauthgroup="N/A" assignip=11.11.11.1 vpntunnel="to_HQ"
phase2_name="to_HQ"

IPsec phase2 sa install

logid="0101037133" type="event" subtype="vpn" level="notice" vd="root" eventtime=1544132604


logdesc="IPsec SA installed" msg="install IPsec SA" action="install_sa" remip=11.101.1.1
locip=173.1.1.1
remport=500 locport=500 outintf="port13" cookies="5b1c59fab2029e43/bf517e686d3943d2"
user="N/A" group="N/A" xauthuser="N/A" xauthgroup="N/A" assignip=11.11.11.1
vpntunnel="to_HQ" role="initiator" in_spi="ca646448" out_spi="747c10c6"

IPsec tunnel statistics

logid="0101037141" type="event" subtype="vpn" level="notice" vd="root" eventtime=1544131118


logdesc="IPsec tunnel statistics" msg="IPsec tunnel statistics" action="tunnel-stats"
remip=10.1.100.15 locip=172.16.200.4 remport=500 locport=500 outintf="mgmt1"
cookies="3539884dbd8f3567/c32e4c1beca91b36"
user="N/A" group="N/A" xauthuser="N/A" xauthgroup="N/A" assignip=N/A
vpntunnel="L2tpoIPsec_0" tunnelip=10.1.100.15 tunnelid=1530910802 tunneltype="ipsec"
duration=6231 sentbyte=57343 rcvdbyte=142640 nextstat=60

IPsec phase2 tunnel down

logid="0101037138" type="event" subtype="vpn" level="notice" vd="root" eventtime=1544132571


logdesc="IPsec connection status changed" msg="IPsec connection status change"
action="tunnel-down" remip=11.101.1.1 locip=173.1.1.1 remport=500 locport=500
outintf="port13" cookies="30820aa390687e39/886e72bf5461fb8d" user="N/A" group="N/A"
xauthuser="N/A" xauthgroup="N/A" assignip=11.11.11.1 vpntunnel="to_HQ" tunnelip=N/A
tunnelid=1530910786 tunneltype="ipsec" duration=6425 sentbyte=504 rcvdbyte=152 nextstat=0

FortiOS 6.4.6 Administration Guide 1551


Fortinet Technologies Inc.
VPN

IPsec phase1 sa deleted

logid="0101037134" type="event" subtype="vpn" level="notice" vd="root" eventtime=1544132571


logdesc="IPsec phase 1 SA deleted" msg="delete IPsec phase 1 SA" action="delete_phase1_sa"
remip=11.101.1.1 locip=173.1.1.1 remport=500 locport=500 outintf="port13"
cookies="30820aa390687e39/886e72bf5461fb8d" user="N/A" group="N/A" xauthuser="N/A"
xauthgroup="N/A" assignip=11.11.11.1 vpntunnel="to_HQ"

IPsec related diagnose commands

This section provides IPsec related diagnose commands.
 l Daemon IKE summary information list: diagnose vpn ike status
connection: 2/50
IKE SA: created 2/51 established 2/9 times 0/13/40 ms
IPsec SA: created 1/13 established 1/7 times 0/8/30 ms

 l IPsec phase1 interface status: diagnose vpn ike gateway list


vd: root/0
name: tofgtc
version: 1
interface: port13 42
addr: 173.1.1.1:500 -> 172.16.200.3:500
created: 4313s ago
IKE SA: created 1/1 established 1/1 time 10/10/10 ms
IPsec SA: created 0/0

id/spi: 92 5639f7f8a5dc54c0/809a6c9bbd266a4b
direction: initiator
status: established 4313-4313s ago = 10ms
proposal: aes128-sha256
key: 74aa3d63d88e10ea-8a1c73b296b06578
lifetime/rekey: 86400/81786
DPD sent/recv: 00000000/00000000

vd: root/0
name: to_HQ
version: 1
interface: port13 42
addr: 173.1.1.1:500 -> 11.101.1.1:500
created: 1013s ago
assigned IPv4 address: 11.11.11.1/255.255.255.252
IKE SA: created 1/1 established 1/1 time 0/0/0 ms
IPsec SA: created 1/1 established 1/1 time 0/0/0 ms

id/spi: 95 255791bd30c749f4/c2505db65210258b
direction: initiator
status: established 1013-1013s ago = 0ms
proposal: aes128-sha256
key: bb101b9127ed5844-1582fd614d5a8a33
lifetime/rekey: 86400/85086
DPD sent/recv: 00000000/00000010

FortiOS 6.4.6 Administration Guide 1552


Fortinet Technologies Inc.
VPN

 l IPsec phase2 tunnel status: diagnose vpn tunnel list


list all ipsec tunnel in vd 0
----
nname=L2tpoIPsec ver=1 serial=6 172.16.200.4:0->0.0.0.0:0
bound_if=4 lgwy=static/1 tun=intf/0 mode=dialup/2 encap=none/24 options[0018]=npu
create_dev
proxyid_num=0 child_num=0 refcnt=10 ilast=13544 olast=13544 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=0 idle=60000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
run_tally=0
----
name=to_HQ ver=1 serial=7 173.1.1.1:0->11.101.1.1:0
bound_if=42 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/8 options[0008]=npu
proxyid_num=1 child_num=0 refcnt=13 ilast=10 olast=1112 ad=/0
stat: rxp=1 txp=4 rxb=152 txb=336
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=5
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=to_HQ proto=0 sa=1 ref=2 serial=1
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA: ref=6 options=10226 type=00 soft=0 mtu=1438 expire=41773/0B replaywin=2048
seqno=5 esn=0 replaywin_lastseq=00000002 itn=0
life: type=01 bytes=0/0 timeout=42900/43200
dec: spi=ca64644a esp=aes key=16 6cc873fdef91337a6cf9b6948972c90f
ah=sha1 key=20 e576dbe3ff92605931e5670ad57763c50c7dc73a
enc: spi=747c10c8 esp=aes key=16 5060ad8d0da6824204e3596c0bd762f4
ah=sha1 key=20 52965cbd5b6ad95212fc825929d26c0401948abe
dec:pkts/bytes=1/84, enc:pkts/bytes=4/608
npu_flag=03 npu_rgwy=11.101.1.1 npu_lgwy=173.1.1.1 npu_selid=5 dec_npuid=2 enc_npuid=2

 l Packets encrypted/decrypted counter: diagnose vpn ipsec status


All ipsec crypto devices in use:
NP6_0:
Encryption (encrypted/decrypted)
null : 0 1.
des : 0 1.
3des : 0 1.
aes : 0 1.
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 0 1.
sha1 : 0 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

NP6_1:
Encryption (encrypted/decrypted)
null : 0 1.
des : 0 1.

FortiOS 6.4.6 Administration Guide 1553


Fortinet Technologies Inc.
VPN

3des : 0 1.
aes : 337152 46069
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 0 1.
sha1 : 337152 46069
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

NPU Host Offloading:


Encryption (encrypted/decrypted)
null : 0 1.
des : 0 1.
3des : 0 1.
aes : 38 1.
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 0 1.
sha1 : 38 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

CP8:
Encryption (encrypted/decrypted)
null : 0 1.
des : 0 1.
3des : 1337 1582
aes : 71 11426
aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 48 28
sha1 : 1360 12980
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

SOFTWARE:
Encryption (encrypted/decrypted)
null : 0 1.
des : 0 1.
3des : 0 1.
aes : 0 1.

FortiOS 6.4.6 Administration Guide 1554


Fortinet Technologies Inc.
VPN

aes-gcm : 0 1.
aria : 0 1.
seed : 0 1.
chacha20poly1305 : 0 1.
Integrity (generated/validated)
null : 0 1.
md5 : 0 1.
sha1 : 0 1.
sha256 : 0 1.
sha384 : 0 1.
sha512 : 0 1.

 l diagnose debug application ike -1


 l diagnose vpn ike log-filter dst-addr4 11.101.1.1
 l diagnose vpn ike log-filter src-addr4 173.1.1.1
# ike 0:to_HQ:101: initiator: aggressive mode is sending 1st message...
ike 0:to_HQ:101: cookie dff03f1d4820222a/0000000000000000
ike 0:to_HQ:101: sent IKE msg (agg_i1send): 173.1.1.1:500->11.101.1.1:500, len=912,
id=dff03f1d4820222a/0000000000000000
ike 0: comes 11.101.1.1:500->173.1.1.1:500,ifindex=42....
ike 0: IKEv1 exchange=Aggressive id=dff03f1d4820222a/6c2caf4dcf5bab75 len=624
ike 0:to_HQ:101: initiator: aggressive mode get 1st response...
ike 0:to_HQ:101: VID RFC 3947 4A131C81070358455C5728F20E95452F
ike 0:to_HQ:101: VID DPD AFCAD71368A1F1C96B8696FC77570100
ike 0:to_HQ:101: DPD negotiated
ike 0:to_HQ:101: VID draft-ietf-ipsra-isakmp-xauth-06.txt 09002689DFD6B712
ike 0:to_HQ:101: VID CISCO-UNITY 12F5F28C457168A9702D9FE274CC0204
ike 0:to_HQ:101: peer supports UNITY
ike 0:to_HQ:101: VID FORTIGATE 8299031757A36082C6A621DE00000000
ike 0:to_HQ:101: peer is [[QualityAssurance62/FortiGate]]/FortiOS (v0 b0)
ike 0:to_HQ:101: VID FRAGMENTATION 4048B7D56EBCE88525E7DE7F00D6C2D3
ike 0:to_HQ:101: VID FRAGMENTATION 4048B7D56EBCE88525E7DE7F00D6C2D3C0000000
ike 0:to_HQ:101: peer identifier IPV4_ADDR 11.101.1.1
ike 0:to_HQ:101: negotiation result
ike 0:to_HQ:101: proposal id = 1:
ike 0:to_HQ:101: protocol id = ISAKMP:
ike 0:to_HQ:101: trans_id = KEY_IKE.
ike 0:to_HQ:101: encapsulation = IKE/none
ike 0:to_HQ:101: type=OAKLEY_ENCRYPT_ALG, val=AES_CBC, key-len=128
ike 0:to_HQ:101: type=OAKLEY_HASH_ALG, val=SHA2_256.
ike 0:to_HQ:101: type=AUTH_METHOD, val=PRESHARED_KEY_XAUTH_I.
ike 0:to_HQ:101: type=OAKLEY_GROUP, val=MODP2048.
ike 0:to_HQ:101: ISAKMP SA lifetime=86400
ike 0:to_HQ:101: received NAT-D payload type 20
ike 0:to_HQ:101: received NAT-D payload type 20
ike 0:to_HQ:101: selected NAT-T version: RFC 3947
ike 0:to_HQ:101: NAT not detected
ike 0:to_HQ:101: ISAKMP SA dff03f1d4820222a/6c2caf4dcf5bab75 key
16:D81CAE6B2500435BFF195491E80148F3
ike 0:to_HQ:101: PSK authentication succeeded
ike 0:to_HQ:101: authentication OK
ike 0:to_HQ:101: add INITIAL-CONTACT
ike 0:to_HQ:101: sent IKE msg (agg_i2send): 173.1.1.1:500->11.101.1.1:500, len=172,
id=dff03f1d4820222a/6c2caf4dcf5bab75
ike 0:to_HQ:101: established IKE SA dff03f1d4820222a/6c2caf4dcf5bab75

FortiOS 6.4.6 Administration Guide 1555


Fortinet Technologies Inc.
VPN

ike 0: comes 11.101.1.1:500->173.1.1.1:500,ifindex=42....


ike 0: IKEv1 exchange=Mode config id=dff03f1d4820222a/6c2caf4dcf5bab75:97d88fb4 len=92
ike 0:to_HQ:101: mode-cfg type 16521 request 0:
ike 0:to_HQ:101: mode-cfg type 16522 request 0:
ike 0:to_HQ:101: sent IKE msg (cfg_send): 173.1.1.1:500->11.101.1.1:500, len=108,
id=dff03f1d4820222a/6c2caf4dcf5bab75:97d88fb4
ike 0: comes 11.101.1.1:500->173.1.1.1:500,ifindex=42....
ike 0: IKEv1 exchange=Mode config id=dff03f1d4820222a/6c2caf4dcf5bab75:3724f295 len=92
ike 0:to_HQ:101: sent IKE msg (cfg_send): 173.1.1.1:500->11.101.1.1:500, len=92,
id=dff03f1d4820222a/6c2caf4dcf5bab75:3724f295
ike 0:to_HQ:101: initiating mode-cfg pull from peer
ike 0:to_HQ:101: mode-cfg request APPLICATION_VERSION
ike 0:to_HQ:101: mode-cfg request INTERNAL_IP4_ADDRESS
ike 0:to_HQ:101: mode-cfg request INTERNAL_IP4_NETMASK
ike 0:to_HQ:101: mode-cfg request UNITY_SPLIT_INCLUDE
ike 0:to_HQ:101: mode-cfg request UNITY_PFS
ike 0:to_HQ:101: sent IKE msg (cfg_send): 173.1.1.1:500->11.101.1.1:500, len=140,
id=dff03f1d4820222a/6c2caf4dcf5bab75:3bca961f
ike 0: comes 11.101.1.1:500->173.1.1.1:500,ifindex=42....
ike 0: IKEv1 exchange=Mode config id=dff03f1d4820222a/6c2caf4dcf5bab75:3bca961f len=172
ike 0:to_HQ:101: mode-cfg type 1 response 4:0B0B0B01
ike 0:to_HQ:101: mode-cfg received INTERNAL_IP4_ADDRESS 11.11.11.1
ike 0:to_HQ:101: mode-cfg type 2 response 4:FFFFFFFC
ike 0:to_HQ:101: mode-cfg received INTERNAL_IP4_NETMASK 255.255.255.252
ike 0:to_HQ:101: mode-cfg received UNITY_PFS 1
ike 0:to_HQ:101: mode-cfg type 28676 response
28:0A016400FFFFFF000000000000000A016500FFFFFF00000000000000
ike 0:to_HQ:101: mode-cfg received UNITY_SPLIT_INCLUDE 0 10.1.100.0/255.255.255.0:0
local port 0
ike 0:to_HQ:101: mode-cfg received UNITY_SPLIT_INCLUDE 0 10.1.101.0/255.255.255.0:0
local port 0
ike 0:to_HQ:101: mode-cfg received APPLICATION_VERSION 'FortiGate-100D
v6.0.3,build0200,181009 (GA)'
ike 0:to_HQ: mode-cfg add 11.11.11.1/255.255.255.252 to 'to_HQ'/58
ike 0:to_HQ: set oper up
ike 0:to_HQ: schedule auto-negotiate
ike 0:to_HQ:101: no pending Quick-Mode negotiations
ike shrank heap by 159744 bytes
ike 0:to_HQ:to_HQ: IPsec SA connect 42 173.1.1.1->11.101.1.1:0
ike 0:to_HQ:to_HQ: using existing connection
# ike 0:to_HQ:to_HQ: config found
ike 0:to_HQ:to_HQ: IPsec SA connect 42 173.1.1.1->11.101.1.1:500 negotiating
ike 0:to_HQ:101: cookie dff03f1d4820222a/6c2caf4dcf5bab75:32f4cc01
ike 0:to_HQ:101:to_HQ:259: initiator selectors 0 0:0.0.0.0/0.0.0.0:0:0-
>0:0.0.0.0/0.0.0.0:0:0
ike 0:to_HQ:101: sent IKE msg (quick_i1send): 173.1.1.1:500->11.101.1.1:500, len=620,
id=dff03f1d4820222a/6c2caf4dcf5bab75:32f4cc01
ike 0: comes 11.101.1.1:500->173.1.1.1:500,ifindex=42....
ike 0: IKEv1 exchange=Quick id=dff03f1d4820222a/6c2caf4dcf5bab75:32f4cc01 len=444
ike 0:to_HQ:101:to_HQ:259: responder selectors 0:0.0.0.0/0.0.0.0:0->0:0.0.0.0/0.0.0.0:0
ike 0:to_HQ:101:to_HQ:259: my proposal:
ike 0:to_HQ:101:to_HQ:259: proposal id = 1:
ike 0:to_HQ:101:to_HQ:259: protocol id = IPSEC_ESP:
ike 0:to_HQ:101:to_HQ:259: PFS DH group = 14
ike 0:to_HQ:101:to_HQ:259: trans_id = ESP_AES_CBC (key_len = 128)
ike 0:to_HQ:101:to_HQ:259: encapsulation = ENCAPSULATION_MODE_TUNNEL

FortiOS 6.4.6 Administration Guide 1556


Fortinet Technologies Inc.
VPN

ike 0:to_HQ:101:to_HQ:259: type = AUTH_ALG, val=SHA1


ike 0:to_HQ:101:to_HQ:259: trans_id = ESP_AES_CBC (key_len = 256)
ike 0:to_HQ:101:to_HQ:259: encapsulation = ENCAPSULATION_MODE_TUNNEL
ike 0:to_HQ:101:to_HQ:259: type = AUTH_ALG, val=SHA1
ike 0:to_HQ:101:to_HQ:259: trans_id = ESP_AES_CBC (key_len = 128)
ike 0:to_HQ:101:to_HQ:259: encapsulation = ENCAPSULATION_MODE_TUNNEL
ike 0:to_HQ:101:to_HQ:259: type = AUTH_ALG, val=SHA2_256
ike 0:to_HQ:101:to_HQ:259: trans_id = ESP_AES_CBC (key_len = 256)
ike 0:to_HQ:101:to_HQ:259: encapsulation = ENCAPSULATION_MODE_TUNNEL
ike 0:to_HQ:101:to_HQ:259: type = AUTH_ALG, val=SHA2_256
ike 0:to_HQ:101:to_HQ:259: trans_id = ESP_AES_GCM_16 (key_len = 128)
ike 0:to_HQ:101:to_HQ:259: encapsulation = ENCAPSULATION_MODE_TUNNEL
ike 0:to_HQ:101:to_HQ:259: type = AUTH_ALG, val=NULL
ike 0:to_HQ:101:to_HQ:259: trans_id = ESP_AES_GCM_16 (key_len = 256)
ike 0:to_HQ:101:to_HQ:259: encapsulation = ENCAPSULATION_MODE_TUNNEL
ike 0:to_HQ:101:to_HQ:259: type = AUTH_ALG, val=NULL
ike 0:to_HQ:101:to_HQ:259: trans_id = ESP_CHACHA20_POLY1305 (key_len = 256)
ike 0:to_HQ:101:to_HQ:259: encapsulation = ENCAPSULATION_MODE_TUNNEL
ike 0:to_HQ:101:to_HQ:259: type = AUTH_ALG, val=NULL
ike 0:to_HQ:101:to_HQ:259: incoming proposal:
ike 0:to_HQ:101:to_HQ:259: proposal id = 1:
ike 0:to_HQ:101:to_HQ:259: protocol id = IPSEC_ESP:
ike 0:to_HQ:101:to_HQ:259: PFS DH group = 14
ike 0:to_HQ:101:to_HQ:259: trans_id = ESP_AES_CBC (key_len = 128)
ike 0:to_HQ:101:to_HQ:259: encapsulation = ENCAPSULATION_MODE_TUNNEL
ike 0:to_HQ:101:to_HQ:259: type = AUTH_ALG, val=SHA1
ike 0:to_HQ: schedule auto-negotiate
ike 0:to_HQ:101:to_HQ:259: replay protection enabled
ike 0:to_HQ:101:to_HQ:259: SA life soft seconds=42902.
ike 0:to_HQ:101:to_HQ:259: SA life hard seconds=43200.
ike 0:to_HQ:101:to_HQ:259: IPsec SA selectors #src=1 #dst=1
ike 0:to_HQ:101:to_HQ:259: src 0 4 0:0.0.0.0/0.0.0.0:0
ike 0:to_HQ:101:to_HQ:259: dst 0 4 0:0.0.0.0/0.0.0.0:0
ike 0:to_HQ:101:to_HQ:259: add IPsec SA: SPIs=ca64644b/747c10c9
ike 0:to_HQ:101:to_HQ:259: IPsec SA dec spi ca64644b key
16:D5C60F1A3951B288CE4DEC7E04D2119D auth 20:F872A7A26964208A9AA368A31AEFA3DB3F3780BC
ike 0:to_HQ:101:to_HQ:259: IPsec SA enc spi 747c10c9 key
16:97952E1594F718128D9D7B09400856EA auth 20:4D5E5BC45A9D5A9A4631E911932F5650A4639A37
ike 0:to_HQ:101:to_HQ:259: added IPsec SA: SPIs=ca64644b/747c10c9
ike 0:to_HQ:101:to_HQ:259: sending SNMP tunnel UP trap
ike 0:to_HQ:101: sent IKE msg (quick_i2send): 173.1.1.1:500->11.101.1.1:500, len=76,
id=dff03f1d4820222a/6c2caf4dcf5bab75:32f4cc01

SSL VPN

The following topics provide information about SSL VPN in FortiOS 6.4.6.
 l SSL VPN best practices on page 1558
 l SSL VPN quick start on page 1560
 l SSL VPN tunnel mode on page 1567
 l SSL VPN web mode for remote user on page 1574
 l SSL VPN authentication on page 1578
 l SSL VPN to IPsec VPN on page 1660

FortiOS 6.4.6 Administration Guide 1557


Fortinet Technologies Inc.
VPN

 l SSL VPN protocols on page 1670
 l SSL VPN troubleshooting on page 1671
 l Restricting VPN access to rogue/non-compliant devices with Security Fabric

SSL VPN best practices

Securing remote access to network resources is a critical part of security operations. SSL VPN allows administrators to 
configure, administer, and deploy a remote access strategy for their remote workers.
Choosing the correct mode of operation and applying the proper levels of security are integral to providing optimal 
performance and user experience, and keeping your user data safe.
The below guidelines outline selecting the correct SSL VPN mode for your deployment and employing best practices to 
ensure that your data are protected.
Information about SSL VPN throughput and maximum concurrent users is available on your device's datasheet; see 
Next-Generation Firewalls Models and Specifications.

Tunnel mode

In tunnel mode, the SSL VPN client encrypts all traffic from the remote client computer and sends it to the FortiGate 
through an SSL VPN tunnel over the HTTPS link between the user and the FortiGate.
The FortiGate establishes a tunnel with the client, and assigns a virtual IP (VIP) address to the client from a range 
reserved addresses. While the underlying protocols are different, the outcome is very similar to a IPsec VPN tunnel. All 
client traffic is encrypted, allowing the users and networks to exchange a wide range of traffic, regardless of the 
application or protocols.
Use this mode if you require:
 l A wide range of applications and protocols to be accessed by the remote client.
 l No proxying is done by the FortiGate.
 l Straightforward configuration and administration, as traffic is controlled by firewall policies.
 l A transparent experience for the end user. For example, a user that needs to RDP to their server only requires a 
tunnel connection; they can then use the usual client application, like Windows Remote Desktop, to connect.
Full tunneling forces all traffic to pass through the FortiGate (see SSL VPN full tunnel for remote user on page 1567). 
Split tunneling only routes traffic to the designated network through the FortiGate (see SSL VPN split tunnel for remote 
user on page 1560).

Limitations

Tunnel mode requires that the FortiClient VPN client be installed on the remote end. The standalone FortiClient VPN 
client is free to use, and can accommodate SSL VPN and IPsec VPN tunnels. For supported operating systems, see the 
FortiClient Technical Specifications.

Web mode

Web-only mode provides clientless network access using a web browser with built-in SSL encryption. Users 
authenticate to FortiGate's SSL VPN Web Portal, which provides access to network services and resources, including 
HTTP/HTTPS, Telnet, FTP, SMB/CIFS, VNC, RDP, and SSH. When a user starts a connection to a server from the web 

FortiOS 6.4.6 Administration Guide 1558


Fortinet Technologies Inc.
VPN

portal, FortiOS proxies this communication with the server. All communication between the FortiGate and the user 
continues to be over HTTPS, regardless of the service that is being accesssed.
Use this mode if you require:
 l A clientless solution in which all remote services are access through a web portal.
 l Tight control over the contents of the web portal.
 l Limited services provided to the remote users.

Limitations

 l Multiple applications and protocols are not supported.
 l VNC and RDP access might have limitations, such as certain shortcut keys not being supported.
 l In some configurations RDP can consume a significant amount of memory and CPU time.
 l Firewall performance might decrease as remote usage increases.
 l Highly customized web pages might not render correctly.

Security best practices

Integrate with authentication servers

For networks with many users, integrate your user configuration with existing authentication servers through LDAP, 
RADIUS, or FortiAuthenticator.
By integrating with existing authentication servers, such as Windows AD, there is a lower change of making mistakes 
when configuring local users and user groups. Your administration effort is also reduces.
See SSL VPN with LDAP user authentication on page 1578 for more information.

Use a non-factory SSL certificate for the SSL VPN portal

Your certificate should identify your domain so that a remote user can recognize the identity of the server or portal that 
they are accessing through a trusted CA. 
The default Fortinet factory self-signed certificates are provided to simplify initial installation and testing. If you use these 
certificates you are vulnerable to man-in-the-middle attacks, where an attacker spoofs your certificate, compromises 
your connection, and steals your personal information. It is highly recommended that you purchase a server certificate 
from a trusted CA to allow remote users to connect to SSL VPN with confidence. See Procure and import a signed SSL 
certificate on page 946 for more information.
Enabling the Do not Warn Invalid Server Certificate option on the client disables the certificate warning message, 
potentially allowing users to accidentally connect to untrusted servers. Disabling invalid server certificate warnings is not 
recommended.

Use multi-factor authentication

Multi-factor authentication (MFA) ensures that the end-user is who they claim to be by requiring at least two factors - a 
piece of information that the user knows (password), and an asset that the user has (OTP). A third factor, something a 
user is (fingerprint or face), may be enabled as well. FortiToken Mobile is typically used for MFA.
FortiGate comes with two free FortiTokens, and more can be purchased from the FortiToken Mobile iOS app or through 
Fortinet partners.
See SSL VPN with FortiToken mobile push authentication on page 1601 for more information.

FortiOS 6.4.6 Administration Guide 1559


Fortinet Technologies Inc.
VPN

2FA, a subset of MFA, can also be set up with email tokens. See Email Two-Factor Authentication on FortiGate for 
information.

Deploy user certificates for remote SSL VPN users

This method of 2FA uses a user certificate as the second authentication factor. This is more secure, as it identifies the 
end user using a certificate. The configuration and administration of this solution is significantly more complicated, and 
requires administrators with advanced knowledge of the FortiGate and certificate deployment.
See SSL VPN with certificate authentication on page 1639 for more information.

Define your minimum supported TLS version and cipher suites

Minimum and maximum supported TLS version can be configured in the FortiGate CLI. The cipher algorithm can also be 
customized.
See How to control the SSL version and cipher suite for SSL VPN for more information.

Properly administer firewall policies and profiles against only the access level required for the remote
user

Users do not all require the same access. Access should only be granted after careful considerations. Typically, users 
are placed in groups, and each group is allowed access to limited resources.
Using SSL VPN realms simplifies defining the control structure for mapping users and groups to the appropriate 
resources.
See SSL VPN multi-realm on page 1653 for more information.

SSL VPN quick start

The following topics provide introductory instructions on configuring SSL VPN:
 l SSL VPN split tunnel for remote user on page 1560
 l Connecting from FortiClient VPN client on page 1563
 l Set up FortiToken multi-factor authentication on page 1565
 l Connecting from FortiClient with FortiToken  on page 1566

SSL VPN split tunnel for remote user

This is a sample configuration of remote users accessing the corporate network and internet through an SSL VPN by 
tunnel mode using FortiClient but accessing the Internet without going through the SSL VPN tunnel.

FortiOS 6.4.6 Administration Guide 1560


Fortinet Technologies Inc.
VPN

Sample topology

Sample configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.

The split tunneling routing address cannot explicitly use an FQDN or an address group that 
includes an FQDN. To use an FQDN, leave the routing address blank and apply the FQDN as 
the destination address of the firewall policy.

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address. The port1 interface connects to the internal network.
 a. Go to Network > Interfaces and edit the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.
 d. Click OK.
 e. Go to Policy & Objects > Address and create an address for internal subnet 192.168.1.0.
 2. Configure user and user group.
 a. Go to User & Authentication > User Definition to create a local user sslvpnuser1.
 b. Go to User & Authentication > User Groups to create a group sslvpngroup with the member sslvpnuser1.
 3. Configure SSL VPN web portal.
 a. Go to VPN > SSL-VPN Portals to create a tunnel mode only portal my-split-tunnel-portal.
 b. Enable Split Tunneling.
 c. Select Routing Address to define the destination network that will be routed through the tunnel. Leave 
undefined to use the destination in the respective firewall policies.
 4. Configure SSL VPN settings.
 a. Go to VPN > SSL-VPN Settings.
 b. For Listen on Interface(s), select wan1.
 c. Set Listen on Port to 10443.
 d. Choose a certificate for Server Certificate. The default is Fortinet_Factory.
 e. In Authentication/Portal Mapping All Other Users/Groups, set the Portal to tunnel-access.
 f. Create new Authentication/Portal Mapping for group sslvpngroup mapping portal my-split-tunnel-portal.

FortiOS 6.4.6 Administration Guide 1561


Fortinet Technologies Inc.
VPN

 5. Configure SSL VPN firewall policy.
 a. Go to Policy & Objects > Firewall Policy.
 b. Fill in the firewall policy name. In this example, sslvpn split tunnel access.
 c. Incoming interface must be SSL-VPN tunnel interface(ssl.root).
 d. Choose an Outgoing Interface. In this example, port1.
 e. Set the Source to all and group to sslvpngroup.
 f. In this example, the Destination is all.
 g. Set Schedule to always, Service to ALL, and Action to Accept.
 h. Click OK.

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address.
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 2. Configure internal interface and protected subnet, then connect the port1 interface to the internal network.
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end
config firewall address
edit "192.168.1.0"
set subnet 192.168.1.0 255.255.255.0
next
end

 3. Configure user and user group.
config user local
edit "sslvpnuser1"
set type password
set passwd your-password
next
end
config user group
edit "sslvpngroup"
set member "sslvpnuser1"
next
end

 4. Configure SSL VPN web portal.
config vpn ssl web portal
edit "my-split-tunnel-portal"
set tunnel-mode enable
set split-tunneling enable

FortiOS 6.4.6 Administration Guide 1562


Fortinet Technologies Inc.
VPN

set split-tunneling-routing-address "192.168.1.0"


set ip-pools "SSLVPN_TUNNEL_ADDR1"
next
end

 5. Configure SSL VPN settings.
config vpn ssl settings
set servercert "Fortinet_Factory"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set tunnel-ipv6-pools "SSLVPN_TUNNEL_IPv6_ADDR1"
set source-interface "wan1"
set source-address "all"
set source-address6 "all"
set default-portal "full-access"
config authentication-rule
edit 1
set groups "sslvpngroup"
set portal "my-split-tunnel-portal"
next
next
end

 6. Configure one SSL VPN firewall policy to allow remote user to access the internal network. Traffic is dropped from 
internal to remote client.
config firewall policy
edit 1
set name "sslvpn split tunnel access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "192.168.1.0"
set groups “sslvpngroup”
set action accept
set schedule "always"
set service "ALL"
next
end

Connecting from FortiClient VPN client

For FortiGate administrators, a free version of FortiClient VPN is available which supports basic IPsec and SSL VPN and 
does not require registration with EMS. This version does not include central management, technical support, or some 
advanced features.

Downloading and installing the standalone FortiCient VPN client

You can download the free VPN client from FNDN or FortiClient.com.
When the free VPN client is run for the first time, it displays a disclaimer. You cannot configure or create a VPN 
connection until you accept the disclaimer and click I accept:

FortiOS 6.4.6 Administration Guide 1563


Fortinet Technologies Inc.
VPN

Configuring an SSL VPN connection

To configure an SSL VPN connection:

 1. On the Remote Access tab, click on the settings icon and then Add a New Connection. 

 2. Select SSL-VPN, then configure the following settings:   

Connection Name SSLVPNtoHQ

Description (Optional)

Remote Gateway 172.20.120.123

Customize port 10443

Client Certificate Select Prompt on connect or the certificate from the dropdown list.

Authentication Select Prompt on login for a prompt on the connection screen

 3. Click Save to save the VPN connection.

FortiOS 6.4.6 Administration Guide 1564


Fortinet Technologies Inc.
VPN

Connecting to SSL VPN

To connect to SSL VPN:

 1. On the Remote Access tab, select the VPN connection from the dropdown list.


Optionally, you can right-click the FortiTray icon in the system tray and select a VPN configuration to connect.
 2. Enter your username and password.
 3. Click the Connect button.
 4. After connecting, you can now browse your remote network. Traffic to 192.168.1.0 goes through the tunnel, while 
other traffic goes through the local gateway. FortiClient displays the connection status, duration, and other relevant 
information.
 5. Click the Disconnect button when you are ready to terminate the VPN session.

Checking the SSL VPN connection

To check the SSL VPN connection using the GUI:

 1. On the FortiGate, go to VPN > Monitor > SSL-VPN Monitor to verify the list of SSL users.


 2. On the FortiGate, go to Log & Report > Forward Traffic to view the details of the SSL entry.

To check the tunnel log in using the CLI:

get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 sslvpnuser1 1(1) 291 10.1.100.254 0/0 0/0

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP
0 sslvpnuser1 10.1.100.254 9 22099/43228 10.212.134.200

Set up FortiToken multi-factor authentication

This configuration adds multi-factor authentication (MFA) to the split tunnel configuration (SSL VPN split tunnel for 
remote user on page 1560). It uses one of the two free mobile FortiTokens that is already installed on the FortiGate.

To configure MFA using the GUI:

 1. Configure a user and user group:
 a. Go to User & Authentication > User Definition and edit local user sslvpnuser1.
 b. Enable Two-factor Authentication and select one mobile Token from the list,
 c. Enter the user's Email Address.
 d. Enable Send Activation Code and select Email.
 e. Click Next and click Submit.
 2. Activate the mobile token.
When a FortiToken is added to user sslvpnuser1, an email is sent to the user's email address. Follow the 
instructions to install your FortiToken mobile application on your device and activate your token.

FortiOS 6.4.6 Administration Guide 1565


Fortinet Technologies Inc.
VPN

To configure MFA using the CLI:

 1. Configure a user and user group:
config user local
edit "sslvpnuser1"
set type password
set two-factor fortitoken
set fortitoken <select mobile token for the option list>
set email-to <user's email address>
set passwd <user's password>
next
end
config user group
edit "sslvpngroup"
set member "sslvpnuser1"
next
end

 2. Activate the mobile token.
When a FortiToken is added to user sslvpnuser1, an email is sent to the user's email address. Follow the 
instructions to install your FortiToken mobile application on your device and activate your token.

Connecting from FortiClient with FortiToken

To activate your FortiToken:

 1. On your device, open FortiToken Mobile. If this is your first time opening the application, it may prompt you to create 
a PIN for secure access to the application and tokens.   

 2. You should have received your notification via email, select + and use the device camera to scan the token QR code 

in your email. 
 3. FortiToken Mobile provisions and activates your token and generates token codes immediately. To view the OTP's 
digits, select the eye icon. After you open the application, FortiToken Mobile generates a new six-digit OTP every 30 
seconds.   

FortiOS 6.4.6 Administration Guide 1566


Fortinet Technologies Inc.
VPN

To connect to SSL VPN:

 1. On the Remote Access tab, select the VPN connection from the dropdown list.


Optionally, you can right-click the FortiTray icon in the system tray and select a VPN configuration to connect.
 2. Enter your username and password.
 3. Click the Connect button.
 4. A Token field will appear, prompting you for the FortiToken code. Enter the FortiToken code from your Mobile 
device.
 5. After connecting, you can now browse your remote network. Traffic to 192.168.1.0 goes through the tunnel, while 
other traffic goes through the local gateway. FortiClient displays the connection status, duration, and other relevant 
information.
 6. Click the Disconnect button when you are ready to terminate the VPN session.

SSL VPN tunnel mode

The following topics provide instructions on configuring SSL VPN tunnel mode:
 l SSL VPN full tunnel for remote user
 l SSL VPN tunnel mode host check

SSL VPN full tunnel for remote user

This is a sample configuration of remote users accessing the corporate network and internet through an SSL VPN by 
tunnel mode using FortiClient.

Sample topology

Sample configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address:
 a. Go to Network > Interfaces and edit the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.
 d. Click OK.

FortiOS 6.4.6 Administration Guide 1567


Fortinet Technologies Inc.
VPN

 2. Configure user and user group:
 a. Go to User & Authentication > User Definition to create a local user sslvpnuser1.
 b. Go to User & Authentication > User Groups to create a group sslvpngroup with the member sslvpnuser1.
 3. Configure SSL VPN web portal:
 a. Go to VPN > SSL-VPN Portals to create a tunnel mode only portal my-full-tunnel-portal.
 b. Disable Split Tunneling.
 4. Configure SSL VPN settings:
 a. Go to VPN > SSL-VPN Settings.
 b. For Listen on Interface(s), select wan1.
 c. Set Listen on Port to 10443.
 d. Choose a certificate for Server Certificate. The default is Fortinet_Factory.
 e. In Authentication/Portal Mapping All Other Users/Groups, set the Portal to tunnel-access.
 f. Create new Authentication/Portal Mapping for group sslvpngroup mapping portal my-full-tunnel-portal.
 5. Configure SSL VPN firewall policies to allow remote user to access the internal network:
 a. Go to Policy & Objects > Firewall Policy and click Create New.
 b. Set Name to sslvpn tunnel mode access.
 c. Set Incoming Interface to SSL-VPN tunnel interface(ssl.root).
 d. Set Outgoing Interface to port1.
 e. Set the Source Address to all and User to sslvpngroup.
 f. Set Destination to all, Schedule to always, Service to ALL, and Action to Accept.
 g. Click OK.
 h. Click Create New.
 i. Set Name to sslvpn tunnel mode outgoing.
 j. Configure the same settings as the previous policy, except set Outgoing Interface to wan1.
 k. Click OK.

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address.
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 2. Configure the internal interface and protected subnet, then connect the port1 interface to the internal network.
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end

 3. Configure user and user group.
config user local
edit "sslvpnuser1"
set type password

FortiOS 6.4.6 Administration Guide 1568


Fortinet Technologies Inc.
VPN

set passwd your-password


next
end
config user group
edit "sslvpngroup"
set member "sslvpnuser1"
next
end

 4. Configure SSL VPN web portal and predefine RDP bookmark for windows server.
config vpn ssl web portal
edit "my-full-tunnel-portal"
set tunnel-mode enable
set split-tunneling disable
set ip-pools "SSLVPN_TUNNEL_ADDR1"
next
end

 5. Configure SSL VPN settings.
config vpn ssl settings
set servercert "Fortinet_Factory"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set tunnel-ipv6-pools "SSLVPN_TUNNEL_IPv6_ADDR1"
set source-interface "wan1"
set source-address "all"
set source-address6 "all"
set default-portal "full-access"
config authentication-rule
edit 1
set groups "sslvpngroup"
set portal "my-full-tunnel-portal"
next
end
end

 6. Configure SSL VPN firewall policies to allow remote user to access the internal network. Traffic is dropped from 
internal to remote client.
config firewall policy
edit 1
set name "sslvpn tunnel mode access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set groups "sslvpngroup"
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "sslvpn tunnel mode outgoing"
set srcintf "ssl.root"
set dstintf "wan1"
set srcaddr "all"

FortiOS 6.4.6 Administration Guide 1569


Fortinet Technologies Inc.
VPN

set dstaddr "all"


set groups "sslvpngroup"
set action accept
set schedule "always"
set service "ALL"
next
end

To see the results:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access.
 3. Add a new connection:
 l Set VPN Type to SSL VPN.
 l Set Remote Gateway to the IP of the listening FortiGate interface, in this example, 172.20.120.123.
 4. Select Customize Port and set it to 10443.
 5. Save your settings.
 6. Use the credentials you've set up to connect to the SSL VPN tunnel.
 7. After connection, all traffic except the local subnet will go through the tunnel FGT.
 8. Go to VPN > Monitor > SSL-VPN Monitor to verify the list of SSL users.
 9. On the FortiGate, go to Log & Report > Forward Traffic and view the details for the SSL entry.

SSL VPN tunnel mode host check

This is a sample configuration of remote users accessing the corporate network through an SSL VPN by tunnel mode 
using FortiClient with AV host check.

Sample topology

Sample configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.

The split tunneling routing address cannot explicitly use an FQDN or an address group that 
includes an FQDN. To use an FQDN, leave the routing address blank and apply the FQDN as 
the destination address of the firewall policy.

FortiOS 6.4.6 Administration Guide 1570


Fortinet Technologies Inc.
VPN

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address. The port1 interface connects to the internal network.
 a. Go to Network > Interfaces and edit the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.
 d. Click OK.
 e. Go to Policy & Objects > Address and create an address for internet subnet 192.168.1.0.
 2. Configure user and user group.
 a. Go to User & Authentication > User Definition to create a local user sslvpnuser1.
 b. Go to User & Authentication > User Groups to create a group sslvpngroup with the member sslvpnuser1.
 3. Configure SSL VPN web portal.
 a. Go to VPN > SSL-VPN Portals to create a tunnel mode only portal my-split-tunnel-portal.
 b. Enable Tunnel Mode and Enable Split Tunneling.
 c. Select Routing Address.
 4. Configure SSL VPN settings.
 a. Go to VPN > SSL-VPN Settings.
 b. For Listen on Interface(s), select wan1.
 c. Set Listen on Port to 10443.
 d. Choose a certificate for Server Certificate.

It is HIGHLY recommended that you acquire a signed certificate for your installation. 
Please review the SSL VPN best practices on page 1558 and learn how to Procure and 
import a signed SSL certificate on page 946.

 e. In Authentication/Portal Mapping All Other Users/Groups, set the Portal to tunnel-access.


 f. Create new Authentication/Portal Mapping for group sslvpngroup mapping portal my-split-tunnel-portal.
 5. Configure SSL VPN firewall policy.
 a. Go to Policy & Objects > Firewall Policy.
 b. Fill in the firewall policy name. In this example, sslvpn tunnel access with av check.
 c. Incoming interface must be SSL-VPN tunnel interface(ssl.root).
 d. Choose an Outgoing Interface. In this example, port1.
 e. Set the Source to all and group to sslvpngroup.
 f. In this example, the Destination is all.
 g. Set Schedule to always, Service to ALL, and Action to Accept.
 h. Click OK.
 6. Use CLI to configure SSL VPN web portal to enable the host to check for compliant antivirus software on the user’s 
computer.
config vpn ssl web portal
edit my-split-tunnel-access
set host-check av
next
end

FortiOS 6.4.6 Administration Guide 1571


Fortinet Technologies Inc.
VPN

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address.
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 2. Configure internal interface and protected subnet, then connect the port1 interface to the internal network.
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end
config firewall address
edit "192.168.1.0"
set subnet 192.168.1.0 255.255.255.0
next
end

 3. Configure user and user group.
config user local
edit "sslvpnuser1"
set type password
set passwd your-password
next
end
config user group
edit "sslvpngroup"
set member "vpnuser1"
next
end

 4. Configure SSL VPN web portal.
config vpn ssl web portal
edit "my-split-tunnel-portal"
set tunnel-mode enable
set split-tunneling enable
set split-tunneling-routing-address "192.168.1.0"
set ip-pools "SSLVPN_TUNNEL_ADDR1"
next
end

 5. Configure SSL VPN settings.
config vpn ssl settings
set servercert "Fortinet_Factory"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set tunnel-ipv6-pools "SSLVPN_TUNNEL_IPv6_ADDR1"
set source-interface "wan1"
set source-address "all"

FortiOS 6.4.6 Administration Guide 1572


Fortinet Technologies Inc.
VPN

set source-address6 "all"


set default-portal "full-access"
config authentication-rule
edit 1
set groups "sslvpngroup"
set portal "my-split-tunnel-portal"
next
end
end

 6. Configure one SSL VPN firewall policy to allow remote user to access the internal network. Traffic is dropped from 
internal to remote client.
config firewall policy
edit 1
set name "sslvpn web mode access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "192.168.1.0"
set groups “sslvpngroup”
set action accept
set schedule "always"
set service "ALL"
next
end

 7. Configure SSL VPN web portal to enable the host to check for compliant antivirus software on the user’s computer:
config vpn ssl web portal
edit my-split-tunnel-access
set host-check av
next
end

To see the results:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access.
 3. Add a new connection:
 l Set VPN Type to SSL VPN.
 l Set Remote Gateway to the IP of the listening FortiGate interface, in this example, 172.20.120.123.
 4. Select Customize Port and set it to 10443.
 5. Save your settings.
 6. Use the credentials you've set up to connect to the SSL VPN tunnel.
If the user's computer has antivirus software, a connection is established; otherwise FortiClient shows a compliance 
warning.
 7. After connection, traffic to 192.168.1.0 goes through the tunnel. Other traffic goes through local gateway.
 8. On the FortiGate, go to VPN > Monitor > SSL-VPN Monitor to verify the list of SSL users.
 9. On the FortiGate, go to Log & Report > Forward Traffic and view the details for the SSL entry.

FortiOS 6.4.6 Administration Guide 1573


Fortinet Technologies Inc.
VPN

SSL VPN web mode for remote user

This is a sample configuration of remote users accessing the corporate network through an SSL VPN by web mode 
using a web browser.

Sample topology

Sample configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address. The port1 interface connects to the internal network.
 a. Go to Network > Interfaces and edit  the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.
 d. Click OK.
 e. Go to Policy & Objects > Address and create an address for internet subnet 192.168.1.0.
 2. Configure user and user group.
 a. Go to User & Authentication > User Definition to create a local user sslvpnuser1.
 b. Go to User & Authentication > User Groups to create a group sslvpngroup with the member sslvpnuser1.
 3. Configure SSL VPN web portal.
 a. Go to VPN > SSL-VPN Portals to create a web mode only portal my-web-portal.
 b. Set Predefined Bookmarks for Windows server to type RDP.
 4. Configure SSL VPN settings.
 a. Go to VPN > SSL-VPN Settings.
 b. For Listen on Interface(s), select wan1.
 c. Set Listen on Port to 10443.

FortiOS 6.4.6 Administration Guide 1574


Fortinet Technologies Inc.
VPN

 d. Choose a certificate for Server Certificate. 

It is HIGHLY recommended that you acquire a signed certificate for your installation. 
Please review the SSL VPN best practices on page 1558 and learn how to Procure and 
import a signed SSL certificate on page 946.

 e. In Authentication/Portal Mapping All Other Users/Groups, set the Portal to web-access.


 f. Create new Authentication/Portal Mapping for group sslvpngroup mapping portal my-Web-portal.
 5. Configure SSL VPN firewall policy.
 a. Go to Policy & Objects > Firewall Policy.
 b. Fill in the firewall policy name. In this example, sslvpn web mode access.
 c. Incoming interface must be SSL-VPN tunnel interface(ssl.root).
 d. Choose an Outgoing Interface. In this example, port1.
 e. Set the Source to all and group to sslvpngroup.
 f. In this example, the Destination is the internal protected subnet 192.168.1.0.
 g. Set Schedule to always, Service to ALL, and Action to Accept.
 h. Click OK.

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address.
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 2. Configure the internal interface and protected subnet, then connect the port1 interface to the internal network.
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end
config firewall address
edit "192.168.1.0"
set subnet 192.168.1.0 255.255.255.0
next
end

 3. Configure user and user group.
config user local
edit "sslvpnuser1"
set type password
set passwd your-password
next
end
config user group
edit "sslvpngroup"

FortiOS 6.4.6 Administration Guide 1575


Fortinet Technologies Inc.
VPN

set member "vpnuser1"


next
end

 4. Configure SSL VPN web portal and predefine RDP bookmark for windows server.
config vpn ssl web portal
edit "my-web-portal"
set web-mode enable
config bookmark-group
edit "gui-bookmarks"
config bookmarks
edit "Windows Server"
set apptype rdp
set host "192.168.1.114"
set port 3389
set logon-user "your-windows-server-user-name"
set logon-password your-windows-server-password
next
end
next
end
next
end

 5. Configure SSL VPN settings.
config vpn ssl settings
set servercert "Fortinet_Factory"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set tunnel-ipv6-pools "SSLVPN_TUNNEL_IPv6_ADDR1"
set source-interface "wan1"
set source-address "all"
set source-address6 "all"
set default-portal "full-access"
config authentication-rule
edit 1
set groups "sslvpngroup"
set portal "my-web-portal"
next
end
end

 6. Configure one SSL VPN firewall policy to allow remote user to access the internal network. Traffic is dropped from 
internal to remote client
config firewall policy
edit 1
set name "sslvpn web mode access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "192.168.1.0"
set groups “sslvpngroup”
set action accept
set schedule "always"
set service "ALL"

FortiOS 6.4.6 Administration Guide 1576


Fortinet Technologies Inc.
VPN

next
end

To see the results:

 1. In a web browser, log into the portal https://172.20.120.123:10443 using the credentials you've set up.
 2. In the portal with the predefined bookmark, select the bookmark to begin an RDP session. If there are no predefined 
bookmarks, the Quick Connection tool can be used; see Quick Connection tool on page 1577 for more information.
 3. Go to VPN > Monitor > SSL-VPN Monitor to verify the list of SSL users.
 4. Go to Log & Report > Forward Traffic to view the details for the SSL entry.

Quick Connection tool

The Quick Connection tool allows a user to connect to a resource when it is not a predefined bookmark. The tool allows 
the user to specify the type of server and the URL or IP address of the host.

To connect to a resource:

 1. Select the connection type.
 2. Enter the required information, such as the IP address or URL of the host.
 3. Click Launch.

In a VNC session, to send Ctrl+Alt+Del, press F8 then select Send Ctrl-Alt-Delete.

RDP sessions

Some Windows servers require that a specific security be set for RDP sessions, as opposed to 
the standard RDP encryption security. For example, Windows 10 requires that TLS be used.

You can specify a location option if the remote computer does not use the same keyboard layout as your computer by 
appending it to the Host field using the following format: <IP address> -m <locale>
The available options are:

FortiOS 6.4.6 Administration Guide 1577


Fortinet Technologies Inc.
VPN

ar Arabic fr-be Belgian French no Norwegian

da Danish fr-ca Canadian French pl Polish

de German fr-ch Swiss French pt Portuguese

de-ch Swiss German hr Croatian pt-br Brazilian Portuguese

en-gb British English hu Hungarian ru Russian

en-uk UK English it Italian sl Slovenian

en-us US English ja Japanese sv Sudanese

es Spanish lt Lithuanian tk Turkmen

fi Finnish lv Latvian tr Turkish

fr French mk Macedonian    

SSL VPN authentication

The following topics provide instructions on configuring SSL VPN authentication:
 l SSL VPN with LDAP user authentication on page 1578
 l SSL VPN with LDAP user password renew on page 1583
 l SSL VPN with LDAP-integrated certificate authentication on page 1588
 l SSL VPN for remote users with MFA and user case sensitivity on page 1594
 l SSL VPN with FortiToken mobile push authentication on page 1601
 l SSL VPN with RADIUS on FortiAuthenticator on page 1607
 l SSL VPN with RADIUS and FortiToken mobile push on FortiAuthenticator on page 1611
 l SSL VPN with RADIUS password renew on FortiAuthenticator  on page 1616
 l SSL VPN with RADIUS on Windows NPS on page 1620
 l SSL VPN with multiple RADIUS servers on page 1625
 l SSL VPN with local user password policy on page 1634
 l SSL VPN with certificate authentication on page 1639
 l Dynamic address support for SSL VPN policies on page 1644
 l SSL VPN multi-realm on page 1653
 l NAS-IP support per SSL-VPN realm on page 1658

SSL VPN with LDAP user authentication

This is a sample configuration of SSL VPN for LDAP users.  In this example, the LDAP server is a Windows 2012 AD 
server. A user ldu1 is configured on Windows 2012 AD server.
You must have generated and exported a CA certificate from the AD server and then have imported it as an external CA 
certificate into the FortiGate.

FortiOS 6.4.6 Administration Guide 1578


Fortinet Technologies Inc.
VPN

Sample topology

Sample configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address. The port1 interface connects to the internal network:
 a. Go to Network > Interfaces and edit the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.
 d. Click OK.
 e. Go to Policy & Objects > Address and create an address for internet subnet 192.168.1.0.
 2. Import CA certificate into FortiGate:
 a. Go to System > Features Visibility and ensure Certificates is enabled.
 b. Go to System > Certificates and select Import > CA Certificate.
 c. Select Local PC and then select the certificate file.
The CA certificate now appears in the list of External CA Certificates. In this example, it is called CA_Cert_1.
 d. If you want, you can use CLI commands to rename the system-generated CA_Cert_1 to be more descriptive:
config vpn certificate ca
rename CA_Cert_1 to LDAPS-CA
end

FortiOS 6.4.6 Administration Guide 1579


Fortinet Technologies Inc.
VPN

 3. Configure the LDAP user:
 a. Go to User & Authentication > LDAP Servers  and click Create New.
 b. Specify Name and Server IP/Name.
 c. Specify Common Name Identifier and Distinguished Name.
 d. Set Bind Type to Regular.
 e. Specify Username and Password.
 f. Enable Secure Connection and set Protocol to LDAPS.
 g. For Certificate, select LDAP server CA LDAPS-CA from the list.
 4. Configure user group:
 a. Go to User & Authentication > User Groups to create a user group.
 b. Enter a Name.
 c. In Remote Groups, click Add to add ldaps-server.
 5. Configure SSL VPN web portal:
 a. Go to VPN > SSL-VPN Portals to edit the full-access portal.
This portal supports both web and tunnel mode.
 b. Disable Enable Split Tunneling so that all SSL VPN traffic goes through the FortiGate.
 6. Configure SSL VPN settings:
 a. Go to VPN > SSL-VPN Settings.
 b. Select the Listen on Interface(s), in this example, wan1.
 c. Set Listen on Port to 10443.
 d. Set Server Certificate to the authentication certificate.
 e. Under Authentication/Portal Mapping, set default Portal web-access for All Other Users/Groups.
 f. Create new Authentication/Portal Mapping for group ldaps-group mapping portal full-access.
 7. Configure SSL VPN firewall policy:
 a. Go to Policy & Objects > Firewall Policy.
 b. Fill in the firewall policy name, in this example, sslvpn certificate auth.
 c. Incoming interface must be SSL-VPN tunnel interface(ssl.root).
 d. Set the Source Address to all and Source User to ldaps-group.
 e. Set the Outgoing Interface to the local network interface so that the remote user can access the internal 
network, in this example, port1.
 f. Set Destination Address to the internal protected subnet 192.168.1.0.
 g. Set Schedule to always, Service to ALL, and Action to Accept.
 h. Enable NAT.
 i. Configure any remaining firewall and security options as desired.
 j. Click OK.

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address:
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

FortiOS 6.4.6 Administration Guide 1580


Fortinet Technologies Inc.
VPN

 2. Configure internal interface and protected subnet, then connect the port1 interface to the internal network:
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end
config firewall address
edit "192.168.1.0"
set subnet 192.168.1.0 255.255.255.0
next
end

 3. Import CA certificate into FortiGate:
 a. Go to System > Features Visibility and ensure Certificates is enabled.
 b. Go to System > Certificates and select Import > CA Certificate.
 c. Select Local PC and then select the certificate file.
The CA certificate now appears in the list of External CA Certificates. In the example, it is called CA_Cert_1.
 d. If you want, you can use CLI commands to rename the system-generated CA_Cert_1 to be more descriptive:
config vpn certificate ca
rename CA_Cert_1 to LDAPS-CA
end

 4. Configure the LDAP server:
config user ldap
edit "ldaps-server"
set server "172.20.120.161"
set cnid "cn"
set dn "cn=Users,dc=qa,dc=fortinet,dc=com"
set type regular
set username "CN=Administrator,cn=users,DC=qa,DC=fortinet,DC=com"
set password **********
set group-member-check group-object
set secure ldaps
set ca-cert "LDAPS-CA"
set port 636
next
end

 5. Configure user group:
config user group
edit "ldaps-group"
set member "ldaps-server"
next
end

 6. Configure SSL VPN web portal:
config vpn ssl web portal
edit "full-access"
set tunnel-mode enable
set web-mode enable
set ip-pools "SSLVPN_TUNNEL_ADDR1"
set split-tunneling disable

FortiOS 6.4.6 Administration Guide 1581


Fortinet Technologies Inc.
VPN

next
end

 7. Configure SSL VPN settings:
config vpn ssl settings
set servercert "server_certificate"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set source-interface "wan1"
set source-address "all"
set default-portal "web-access"
config authentication-rule
edit 1
set groups "ldaps-group"
set portal "full-access"
next
end
end

 8. Configure one SSL VPN firewall policy to allow remote user to access the internal network:
config firewall policy
edit 1
set name "sslvpn web mode access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "192.168.1.0"
set groups “ldaps-group”
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

To see the results of web portal:

 1. From a remote device, use a web browser to log into the SSL VPN web portal http://172.20.120.123:10443.
 2. Enter the ldu1 user credentials, then click Login.
 3. Go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.

To see the results of tunnel connection:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access > Configure VPN.
 3. Add a new connection:
 a. Set the connection name.
 b. Set Remote Gateway to the IP of the listening FortiGate interface, in this example, 172.20.120.123.
 c. Select Customize Port and set it to 10443.
 4. Save your settings.
 5. Log in using the ldu1 credentials.

FortiOS 6.4.6 Administration Guide 1582


Fortinet Technologies Inc.
VPN

To check the SSL VPN connection using the GUI:

 1. Go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.


 2. Go to Log & Report > Events and select VPN Events from the event type dropdown list to view the details of the SSL 
VPN connection event log.
 3. Go to Log & Report > Forward Traffic to view the details of the SSL VPN traffic.

To check the web portal login using the CLI:

# get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 ldu1 1(1) 229 10.1.100.254 0/0 0/0

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP

To check the tunnel login using the CLI:

# get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 ldu1 1(1) 291 10.1.100.254 0/0 0/0

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP
0 ldu1 10.1.100.254 9 22099/43228 10.212.134.200

SSL VPN with LDAP user password renew

This is a sample configuration of SSL VPN for LDAP users with Force Password Change on next logon. In this example, 


the LDAP server is a Windows 2012 AD server. A user ldu1 is configured on Windows 2012 AD server with Force
password change on next logon.
You must have generated and exported a CA certificate from the AD server and then have imported it as an external CA 
certificate into the FortiGate.

FortiOS 6.4.6 Administration Guide 1583


Fortinet Technologies Inc.
VPN

Sample topology

Sample configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address. The port1 interface connects to the internal network.
 a. Go to Network > Interfaces and edit the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.
 d. Click OK.
 e. Go to Policy & Objects > Address and create an address for internet subnet 192.168.1.0.
 2. Import CA certificate into FortiGate:
 a. Go to System > Features Visibility and ensure Certificates is enabled.
 b. Go to System > Certificates and select Import > CA Certificate.
 c. Select Local PC and then select the certificate file.
The CA certificate now appears in the list of External CA Certificates. In this example, it is called CA_Cert_1.
 d. If you want, you can use CLI commands to rename the system-generated CA_Cert_1 to be more descriptive:
config vpn certificate ca
rename CA_Cert_1 to LDAPS-CA
end

FortiOS 6.4.6 Administration Guide 1584


Fortinet Technologies Inc.
VPN

 3. Configure the LDAP user:
 a. Go to User & Authentication > LDAP Servers  and click Create New.
 b. Specify Name and Server IP/Name.
 c. Specify Common Name Identifier and Distinguished Name.
 d. Set Bind Type to Regular.
 e. Specify Username and Password.
 f. Enable Secure Connection and set Protocol to LDAPS.
 g. For Certificate, select LDAP server CA LDAPS-CA from the list.
 h. To enable the password-renew option, use these CLI commands.
config user ldap
edit "ldaps-server"
set password-expiry-warning enable
set password-renewal enable
next
end

 4. Configure user group:
 a. Go to User & Authentication > User Groups to create a user group.
 b. Enter a Name.
 c. In Remote Groups, click Add to add ldaps-server.
 5. Configure SSL VPN web portal:
 a. Go to VPN > SSL-VPN Portals to edit the full-access portal.
This portal supports both web and tunnel mode.
 b. Disable Enable Split Tunneling so that all SSL VPN traffic goes through the FortiGate.
 6. Configure SSL VPN settings:
 a. Go to VPN > SSL-VPN Settings.
 b. Select the Listen on Interface(s), in this example, wan1.
 c. Set Listen on Port to 10443.
 d. Set Server Certificate to the authentication certificate.
 e. Under Authentication/Portal Mapping, set default Portal web-access for All Other Users/Groups.
 f. Create new Authentication/Portal Mapping for group ldaps-group mapping portal full-access.
 7. Configure SSL VPN firewall policy:
 a. Go to Policy & Objects > Firewall Policy.
 b. Fill in the firewall policy name, in this example, sslvpn certificate auth.
 c. Incoming interface must be SSL-VPN tunnel interface(ssl.root).
 d. Set the Source Address to all and Source User to ldaps-group.
 e. Set the Outgoing Interface to the local network interface so that the remote user can access the internal 
network, in this example, port1.
 f. Set Destination Address to the internal protected subnet 192.168.1.0.
 g. Set Schedule to always, Service to ALL, and Action to Accept.
 h. Enable NAT.
 i. Configure any remaining firewall and security options as desired.
 j. Click OK.

FortiOS 6.4.6 Administration Guide 1585


Fortinet Technologies Inc.
VPN

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address:
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 2. Configure internal interface and protected subnet, then connect the port1 interface to the internal network:
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end
config firewall address
edit "192.168.1.0"
set subnet 192.168.1.0 255.255.255.0
next
end

 3. Import CA certificate into FortiGate:
 a. Go to System > Features Visibility and ensure Certificates is enabled.
 b. Go to System > Certificates and select Import > CA Certificate.
 c. Select Local PC and then select the certificate file.
The CA certificate now appears in the list of External CA Certificates. In the example, it is called CA_Cert_1.
 d. If you want, you can use CLI commands to rename the system-generated CA_Cert_1 to be more descriptive:
config vpn certificate ca
rename CA_Cert_1 to LDAPS-CA
end

 4. Configure the LDAP server:
config user ldap
edit "ldaps-server"
set server "172.20.120.161"
set cnid "cn"
set dn "cn=Users,dc=qa,dc=fortinet,dc=com"
set type regular
set username "CN=Administrator,cn=users,DC=qa,DC=fortinet,DC=com"
set password **********
set group-member-check group-object
set secure ldaps
set ca-cert "LDAPS-CA"
set port 636
set password-expiry-warning enable
set password-renewal enable
next
end

FortiOS 6.4.6 Administration Guide 1586


Fortinet Technologies Inc.
VPN

 5. Configure user group:
config user group
edit "ldaps-group"
set member "ldaps-server"
next
end

 6. Configure SSL VPN web portal:
config vpn ssl web portal
edit "full-access"
set tunnel-mode enable
set web-mode enable
set ip-pools "SSLVPN_TUNNEL_ADDR1"
set split-tunneling disable
next
end

 7. Configure SSL VPN settings:
config vpn ssl settings
set servercert "server_certificate"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set source-interface "wan1"
set source-address "all"
set default-portal "web-access"
config authentication-rule
edit 1
set groups "ldaps-group"
set portal "full-access"
next
end
end

 8. Configure one SSL VPN firewall policy to allow remote user to access the internal network:
config firewall policy
edit 1
set name "sslvpn web mode access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "192.168.1.0"
set groups “ldaps-group”
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

To see the results of web portal:

 1. From a remote device, use a web browser to log into the SSL VPN web portal http://172.20.120.123:10443.
 2. Log in using the ldu1 credentials.
Use a user that is configured on FortiAuthenticator with Force password change on next logon.

FortiOS 6.4.6 Administration Guide 1587


Fortinet Technologies Inc.
VPN

 3. Click Login. You are prompted to enter a new password. The prompt will timeout after 90 seconds.
 4. Go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.

To see the results of tunnel connection:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access > Configure VPN.
 3. Add a new connection:
 a. Set the connection name.
 b. Set Remote Gateway to the IP of the listening FortiGate interface, in this example, 172.20.120.123.
 c. Select Customize Port and set it to 10443.
 4. Save your settings.
 5. Log in using the ldu1 credentials.
You are prompted to enter a new password. The prompt will timeout after 90 seconds.

To check the SSL VPN connection using the GUI:

 1. Go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.


 2. Go to Log & Report > Events and select VPN Events from the event type dropdown list to view the details of the SSL 
VPN connection event log.
 3. Go to Log & Report > Forward Traffic to view the details of the SSL VPN traffic.

To check the web portal login using the CLI:

# get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 ldu1 1(1) 229 10.1.100.254 0/0 0/0

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP

To check the tunnel login using the CLI:

# get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 ldu1 1(1) 291 10.1.100.254 0/0 0/0

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP
0 ldu1 10.1.100.254 9 22099/43228 10.212.134.200

SSL VPN with LDAP-integrated certificate authentication

This is a sample configuration of SSL VPN that requires users to authenticate using a certificate with LDAP 
UserPrincipalName checking.
This sample uses Windows 2012R2 Active Directory acting as both the user certificate issuer, the certificate authority, 
and the LDAP server.

FortiOS 6.4.6 Administration Guide 1588


Fortinet Technologies Inc.
VPN

Sample topology

Sample configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.
In this sample, the User Principal Name is included in the subject name of the issued certificate. This is the user field we 
use to search LDAP in the connection attempt.
To use the user certificate, you must first install it on the user’s PC. When the user tries to authenticate, the user 
certificate is checked against the CA certificate to verify that they match.
Every user should have a unique user certificate. This allows you to distinguish each user and revoke a specific user’s 
certificate, such as if a user no longer has VPN access.

To install the server certificate:

The server certificate is used for authentication and for encrypting SSL VPN traffic.
 1. Go to System > Feature Visibility and ensure Certificates is enabled.
 2. Go to System > Certificates and select Import > Local Certificate.
 3. Set Type to Certificate.
 4. Choose the Certificate file and the Key file for your certificate, and enter the Password.
 5. If required, change the Certificate Name.
The server certificate now appears in the list of Certificates.

FortiOS 6.4.6 Administration Guide 1589


Fortinet Technologies Inc.
VPN

To install the CA certificate:

The CA certificate is the certificate that signed both the server certificate and the user certificate. In this example, it is 
used to authenticate SSL VPN users.
 1. Go to System > Certificates and select Import > CA Certificate.
 2. Select Local PC and then select the certificate file.
The CA certificate now appears in the list of External CA Certificates. In this example, it is called CA_Cert_1.

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address. The port1 interface connects to the internal network.
 a. Go to Network > Interfaces and edit the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.
 d. Click OK.
 e. Go to Policy & Objects > Address and create an address for internet subnet 192.168.1.0.
 2. Configure the LDAP server:
 a. Go to User & Authentication > LDAP Servers  and click Create New.
 b. Specify Name and Server IP/Name.
 c. Set Distinguished Name to dc=fortinet-fsso,dc=com.
 d. Set Bind Type to Regular.
 e. Set Username to cn=admin,ou=testing,dc=fortinet-fsso,dc=com.
 f. Set Password.
 g. Click OK.
 3. Configure PKI users and a user group:
To use certificate authentication, use the CLI to create PKI users.
config user peer
edit user1
set ca CA_Cert_1
set ldap-server "ldap-AD"
set ldap-mode principal-name
next
end

When you have create a PKI user, a new menu is added to the GUI:
 a. Go to User & Authentication > PKI to see the new user.
 b. Go to User & Authentication > User > User Groups and create a group sslvpn-group.
 c. Add the PKI peer object you created as a local member of the group.
 d. Add a remote group on the LDAP server and select the group of interest.
You need these users to be members using the LDAP browser window.
 4. Configure SSL VPN web portal:
 a. Go to VPN > SSL-VPN Portals to edit the full-access portal.
This portal supports both web and tunnel mode.
 b. Disable Enable Split Tunneling so that all SSL VPN traffic goes through the FortiGate.
 5. Configure SSL VPN settings:
 a. Go to VPN > SSL-VPN Settings.
 b. Select the Listen on Interface(s), in this example, wan1.

FortiOS 6.4.6 Administration Guide 1590


Fortinet Technologies Inc.
VPN

 c. Set Listen on Port to 10443.


 d. Set Server Certificate to the authentication certificate.
 e. Enable Require Client Certificate.
 f. Under Authentication/Portal Mapping, set default Portal web-access for All Other Users/Groups.
 g. Create new Authentication/Portal Mapping for group sslvpn-group mapping portal full-access.
 6. Configure SSL VPN firewall policy:
 a. Go to Policy & Objects > Firewall Policy.
 b. Fill in the firewall policy name. In this example, sslvpn certificate auth.
 c. Incoming interface must be SSL-VPN tunnel interface(ssl.root).
 d. Set the Source Address to all and Source User to sslvpn-group.
 e. Set the Outgoing Interface to the local network interface so that the remote user can access the internal 
network. In this example, port1.
 f. Set Destination Address to the internal protected subnet 192.168.1.0.
 g. Set Schedule to always, Service to ALL, and Action to Accept.
 h. Enable NAT.
 i. Configure any remaining firewall and security options as desired.
 j. Click OK.

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address:
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 2. Configure internal interface and protected subnet, then connect the port1 interface to the internal network:
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end
config firewall address
edit "192.168.1.0"
set subnet 192.168.1.0 255.255.255.0
next
end

 3. Configure the LDAP server:
config user ldap
edit "ldap-AD"
set server "172.18.60.206"
set cnid "cn"
set dn "dc=fortinet-fsso,dc=com"
set type regular
set username "cn=admin,ou=testing,dc=fortinet-fsso,dc=com"
set password ldap-server-password

FortiOS 6.4.6 Administration Guide 1591


Fortinet Technologies Inc.
VPN

next
end

 4. Configure PKI users and a user group:
config user peer
edit user1
set ca CA_Cert_1
set ldap-server "ldap-AD"
set ldap-mode principal-name
next
end
config user group
edit "sslvpn-group"
set member "ldap-AD" "test3"
config match
edit 1
set server-name "ldap-AD"
set group-name "CN=group3,OU=Testing,DC=Fortinet-FSSO,DC=COM"
next
end
next
end

 5. Configure SSL VPN web portal:
config vpn ssl web portal
edit "full-access"
set tunnel-mode enable
set web-mode enable
set ip-pools "SSLVPN_TUNNEL_ADDR1"
set split-tunneling disable
next
end

 6. Configure SSL VPN settings:
config vpn ssl settings
set servercert "server_certificate"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set source-interface "wan1"
set source-address "all"
set default-portal "web-access"
set reqclientcert enable
config authentication-rule
edit 1
set groups "sslvpn-group"
set portal "full-access"
next
end
end

 7. Configure one SSL VPN firewall policy to allow remote user to access the internal network:
config firewall policy
edit 1
set name "sslvpn web mode access"
set srcintf "ssl.root"

FortiOS 6.4.6 Administration Guide 1592


Fortinet Technologies Inc.
VPN

set dstintf "port1"


set srcaddr "all"
set dstaddr "192.168.1.0"
set groups “sslvpn-group”
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

To see the results of tunnel connection:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access > Configure VPN.
 3. Add a new connection.
 a. Set the connection name.
 b. Set Remote Gateway to the IP of the listening FortiGate interface, in this example, 172.20.120.123.
 c. Select Customize Port and set it to 10443.
 d. Enable Client Certificate and select the authentication certificate.
 4. Save your settings.
Connecting to the VPN only requires the user's certificate. It does not require username or password.

To see the results of web portal:

 1. In a web browser, log into the portal http://172.20.120.123:10443. 
A message requests a certificate for authentication.
 2. Select the user certificate.
You can connect to the SSL VPN web portal.

To check the SSL VPN connection using the GUI:

 1. Go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.


 2. Go to Log & Report > VPN Events to view the details of the SSL VPN connection event log.
 3. Go to Log & Report > Forward Traffic to view the details of the SSL VPN traffic.

To check the SSL VPN connection using the CLI:

Below is a sample output of diagnose debug application fnbamd -1 while the user connects. This is a 


shortened output sample of a few locations to show the important parts. This sample shows lookups to find the group 
memberships (three groups total) of the user and that the correct group being found results in a match.
[1148] fnbamd_ldap_recv-Response len: 16, svr: 172.18.60.206
[829] fnbamd_ldap_parse_response-Got one MESSAGE. ID:4, type:search-result
[864] fnbamd_ldap_parse_response-ret=0
[1386] __fnbamd_ldap_primary_grp_next-Auth accepted
[910] __ldap_rxtx-Change state to 'Done'
[843] __ldap_rxtx-state 23(Done)
[925] fnbamd_ldap_send-sending 7 bytes to 172.18.60.206
[937] fnbamd_ldap_send-Request is sent. ID 5
[753] __ldap_stop-svr 'ldap-AD'
[53] ldap_dn_list_del_all-Del CN=test3,OU=Testing,DC=Fortinet-FSSO,DC=COM

FortiOS 6.4.6 Administration Guide 1593


Fortinet Technologies Inc.
VPN

[399] ldap_copy_grp_list-copied CN=group3,OU=Testing,DC=Fortinet-FSSO,DC=COM


[399] ldap_copy_grp_list-copied CN=Domain Users,CN=Users,DC=Fortinet-FSSO,DC=COM
[2088] fnbamd_auth_cert_check-Matching group 'sslvpn-group'
[2007] __match_ldap_group-Matching server 'ldap-AD' - 'ldap-AD'
[2015] __match_ldap_group-Matching group 'CN=group3,OU=Testing,DC=Fortinet-FSSO,DC=COM' -
'CN=group3,OU=Testing,DC=Fortinet-FSSO,DC=COM'
[2091] fnbamd_auth_cert_check-Group 'sslvpn-group' matched
[2120] fnbamd_auth_cert_result-Result for ldap svr[0] 'ldap-AD' is SUCCESS
[2126] fnbamd_auth_cert_result-matched user 'test3', matched group 'sslvpn-group'

You can also use diagnose firewall auth list to validate that a firewall user entry exists for the SSL VPN user 


and is part of the right groups.

SSL VPN for remote users with MFA and user case sensitivity

By default, remote LDAP and RADIUS user names are case sensitive. When a remote user object is applied to SSL VPN 
authentication, the user must type the exact case that is used in the user definition on the FortiGate.
Case sensitivity can be disabled by disabling the username-case-sensitivity CLI command, allowing the remote 
user object to match any case that the end user types in.
In this example, a remote user is configured with multi-factor authentication (MFA). The user group includes the LDAP 
user and server, and is applied to SSL VPN authentication and the policy.

Topology

FortiOS 6.4.6 Administration Guide 1594


Fortinet Technologies Inc.
VPN

Example configuration

To configure the LDAP server:

 1. Generate and export a CA certificate from the AD server .
 2. Import the CA certificate into FortiGate:
 a. Go to System > Features Visibility and ensure Certificates is enabled.
 b. Go to System > Certificates and select Import > CA Certificate.
 c. Select Local PC and then select the certificate file.
The CA certificate now appears in the list of External CA Certificates. In this example, it is called CA_Cert_1.
 d. If you want, you can use CLI commands to rename the system-generated CA_Cert_1 to be more descriptive:
config vpn certificate ca
rename CA_Cert_1 to LDAPS-CA
end

 3. Configure the LDAP user:
 a. Go to User & Authentication > LDAP Servers  and click Create New.
 b. Configure the following options for this example:

Name WIN2K16-KLHOME

Server IP/Name 192.168.20.6

Server Port 636

Common Name Identifier sAMAccountName

Distinguished Name dc=KLHOME,dc=local

Bind Type Regular

Username KLHOME\\Administrator

Password *********

Secure Connection Enable

Protocol LDAPS

Certificate CA_Cert_1
This is the CA certificate that you imported in step 2.

FortiOS 6.4.6 Administration Guide 1595


Fortinet Technologies Inc.
VPN

 c. Click OK.

To configure an LDAP user with MFA:

 1. Go to User & Authentication > User Definition and click Create New.


 2. Select Remote LDAP User, then click Next.
 3. Select the just created LDAP server, then click Next.

 4. Right click to add the selected user, then click Submit.
 5. Edit the user that you just created.
The username will be pulled from the LDAP server with the same case as it has on the server.
 6. Set the Email Address to the address that FortiGate will send the FortiToken to.
 7. Enable Two-factor Authentication.
 8. Set Authentication Type to FortiToken.
 9. Set Token to a FortiToken device. See  for more information.

 10. Click OK.

To disable case sensitivity on the remote user:

This can only be configured in the CLI.
config user local
edit "fgdocs"
set type ldap
set two-factor fortitoken
set fortitoken "FTKMOBxxxxxxxxxx"
set email-to "[email protected]"
set username-case-sensitivity disable
set ldap-server "WIN2K16-KLHOME"
next
end

To configure a user group with the remote user and the LDAP server:

 1. Go to User & Authentication > User Groups and click Create New.


 2. Set the Name to LDAP-USERGRP.

FortiOS 6.4.6 Administration Guide 1596


Fortinet Technologies Inc.
VPN

 3. Set Members to the just created remote user.
 4. In the Remote Groups table, click Add:
 a. Set Remote Server to the LDAP server.
 b. Set the group or groups that apply, and right click to add them.
 c. Click OK.

 5. Click OK.

To apply the user group to the SSL VPN portal:

 1. Go to VPN > SSL-VPN Settings.


 2. In the Authentication/Portal Mapping table, click Create New.
 a. Set Users/Groups to the just created user group.
 b. Configure the remaining settings as required.
 c. Click OK.

 3. Click Apply.

To apply the user group to a firewall policy:

 1. Go to Policy & Objects > Firewall Policy and click Create New.


 2. Configure the following:   

Name SSLVPNtoInteral

Incoming Interface SSL-VPN tunnel interface (ssl.root)

Outgoing Interface port3

Source Address - SSLVPN_TUNNEL_ADDR1
User - LDAP-USERGRP

FortiOS 6.4.6 Administration Guide 1597


Fortinet Technologies Inc.
VPN

Destination The address of the internal network.
In this case: 192.168.20.0.

Schedule always

Service ALL

Action ACCEPT

NAT Enabled

 3. Configuring the remaining settings as required.
 4. Click OK.

To configure this example in the CLI:

 1. Configure the LDAP server:
config user ldap
edit "WIN2K16-KLHOME"
set server "192.168.20.6"
set cnid "sAMAccountName"
set dn "dc=KLHOME,dc=local"
set type regular
set username "KLHOME\\Administrator"
set password *********
set secure ldaps
set ca-cert "CA_Cert_1"
set port 636
next
end

 2. Configure an LDAP user with MFA:
config user local
edit "fgdocs"
set type ldap
set two-factor fortitoken
set fortitoken "FTKMOBxxxxxxxxxx"
set email-to "[email protected]"

FortiOS 6.4.6 Administration Guide 1598


Fortinet Technologies Inc.
VPN

set username-case-sensitivity disable


set ldap-server "WIN2K16-KLHOME"
next
end

 3. Disable case sensitivity on the remote user:
config user local
edit "fgdocs"
set type ldap
set two-factor fortitoken
set fortitoken "FTKMOBxxxxxxxxxx"
set email-to "[email protected]"
set username-case-sensitivity disable
set ldap-server "WIN2K16-KLHOME"
next
end

 4. Configure a user group with the remote user and the LDAP server:
config user group
edit "LDAP-USERGRP"
set member "fgdocs" "WIN2K16-KLHOME"
next
end

 5. Apply the user group to the SSL VPN portal:
config vpn ssl settings
set servercert <server certificate>
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set source-interface "port1"
set source-address "all"
set default-portal "web-access"
config authentication-rule
edit 1
set groups "LDAP-USERGRP"
set portal "full-access"
next
end
end

 6. Apply the user group to a firewall policy:
config firewall policy
edit 5
set name "SSLVPNtoInternal"
set srcintf "ssl.root"
set dstintf "port3"
set srcaddr "SSLVPN_TUNNEL_ADDR1"
set dstaddr "192.168.20.0"
set action accept
set schedule "always"
set service "ALL"
set groups "LDAP-USERGRP"
set nat enable
next
end

FortiOS 6.4.6 Administration Guide 1599


Fortinet Technologies Inc.
VPN

Verification

To setup the VPN connection:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access.
 3. Add a new connection:
 a. Set the connection name.
 b. Set Remote Gateway to the IP of the listening FortiGate interface.
 c. If required, set the Customize Port.
 4. Save your settings.

To test the connection with case sensitivity disabled:

 1. Connect to the VPN:
 a. Log in to the tunnel with the username, using the same case that it is on the FortiGate.
 b. When prompted, enter your FortiToken code.
You should now be connected.
 2. Check the web portal log in using the CLI:
# get vpn ssl monitor
SSL VPN Login Users:
Index User Group Auth Type Timeout From HTTP in/out HTTPS
in/out
0 fgdocs LDAP-USERGRP 16(1) 289 192.168.2.202 0/0
0/0

SSL VPN sessions:


Index User Group Source IP Duration I/O Bytes Tunnel/Dest IP
0 fgdocs LDAP-USERGRP 192.168.2.202 45 99883/5572
10.212.134.200

 3. Disconnect from the VPN connection.
 4. Reconnect to the VPN:   
 a. Log in to the tunnel with the username, using a different case than on the FortiGate.
 b. When prompted, enter your FortiToken code.
You should now be connected.
 5. Check the web portal log in using the CLI:
# get vpn ssl monitor
SSL VPN Login Users:
Index User Group Auth Type Timeout From HTTP in/out HTTPS
in/out
0 FGDOCS LDAP-USERGRP 16(1) 289 192.168.2.202 0/0
0/0

SSL VPN sessions:


Index User Group Source IP Duration I/O Bytes Tunnel/Dest IP
0 FGDOCS LDAP-USERGRP 192.168.2.202 45 99883/5572
10.212.134.200

In both cases, the remote user is matched against the remote LDAP user object and prompted for multi-factor 
authentication.

FortiOS 6.4.6 Administration Guide 1600


Fortinet Technologies Inc.
VPN

To test the connection with case sensitivity enabled:

 1. Enable case sensitivity for the user:
config user local
edit "fgdocs"
set username-case-sensitivity enable
next
end

 2. Connect to the VPN   
 a. Log in to the tunnel with the username, using the same case that it is on the FortiGate.
 b. When prompted, enter your FortiToken code.
You should now be connected.
 3. Check the web portal log in using the CLI:
# get vpn ssl monitor
SSL VPN Login Users:
Index User Group Auth Type Timeout From HTTP in/out HTTPS
in/out
0 fgdocs LDAP-USERGRP 16(1) 289 192.168.2.202 0/0
0/0

SSL VPN sessions:


Index User Group Source IP Duration I/O Bytes Tunnel/Dest IP
0 fgdocs LDAP-USERGRP 192.168.2.202 45 99883/5572
10.212.134.200

 1. Disconnect from the VPN connection.
 2. Reconnect to the VPN:   
 a. Log in to the tunnel with the username, using a different case than on the FortiGate.
You will not be prompted for your FortiToken code. You should now be connected.
 3. Check the web portal log in using the CLI:
# get vpn ssl monitor
SSL VPN Login Users:
Index User Group Auth Type Timeout From HTTP in/out HTTPS
in/out
0 FGdocs LDAP-USERGRP 16(1) 289 192.168.2.202 0/0
0/0

SSL VPN sessions:


Index User Group Source IP Duration I/O Bytes Tunnel/Dest IP
0 FGdocs LDAP-USERGRP 192.168.2.202 45 99883/5572
10.212.134.200

In this case, the user is allowed to log in without a FortiToken code because the entered user name did not match the 
name defined on the remote LDAP user object. Authentication continues to be evaluated against the LDAP server 
though, which is not case sensitive.

SSL VPN with FortiToken mobile push authentication

This is a sample configuration of SSL VPN that uses FortiToken mobile push two-factor authentication. If you enable 
push notifications, users can accept or deny the authentication request.

FortiOS 6.4.6 Administration Guide 1601


Fortinet Technologies Inc.
VPN

Sample topology

Sample configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address. The port1 interface connects to the internal network.
 a. Go to Network > Interfaces and edit the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.
 d. Click OK.
 e. Go to Policy & Objects > Address and create an address for internet subnet 192.168.1.0.
 2. Register FortiGate for FortiCare Support:
To add or download a mobile token on FortiGate, FortiGate must be registered for FortiCare Support. If your 
FortiGate is registered, skip this step.
 a. Go to Dashboard > Licenses.
 b. Hover the pointer on FortiCare Support to check if FortiCare registered. If not, click it and select Register.
 3. Add FortiToken mobile to FortiGate:
If your FortiGate has FortiToken installed, skip this step.
 a. Go to User & Authentication > FortiTokens and click Create New.
 b. Select Mobile Token and type in Activation Code.
 c. Every FortiGate has two free mobile tokens. Go to User & Authentication > FortiTokens and click Import Free
Trial Tokens.
 4. Enable FortiToken mobile push:
To use FTM-push authentication, use CLI to enable FTM-Push on the FortiGate.

FortiOS 6.4.6 Administration Guide 1602


Fortinet Technologies Inc.
VPN

 a. Ensure server-ip is reachable from the Internet and enter the following CLI commands:
config system ftm-push
set server-ip 172.20.120.123
set status enable
end

 b. Go to Network > Interfaces.


 c. Edit the wan1 interface.
 d. Under Administrative Access > IPv4, select FTM.
 e. Click OK.
 5. Configure user and user group:
 a. Go to User & Authentication > User Definition to create a local user sslvpnuser1.
 b. Enter the user's Email Address.
 c. Enable Two-factor Authentication and select one mobile Token from the list,
 d. Enable Send Activation Code and select Email.
 e. Click Next and click Submit.
 f. Go to User & Authentication > User Groups to create a group sslvpngroup with the member sslvpnuser1.
 6. Activate the mobile token:
 a. When the user sslvpnuser1 is created, an email is sent to the user's email address. Follow the instructions to 
install your FortiToken mobile application on your device and activate your token.
 7. Configure SSL VPN web portal:
 a. Go to VPN > SSL-VPN Portals to edit the full-access portal.
This portal supports both web and tunnel mode.
 b. Disable Enable Split Tunneling so that all SSL VPN traffic goes through the FortiGate.
 8. Configure SSL VPN settings:
 a. Go to VPN > SSL-VPN Settings.
 b. Select the Listen on Interface(s), in this example, wan1.
 c. Set Listen on Port to 10443.
 d. Set Server Certificate to the authentication certificate.
 e. Under Authentication/Portal Mapping, set default Portal web-access for All Other Users/Groups.
 f. Create new Authentication/Portal Mapping for group sslvpngroup mapping portal full-access.
 9. Configure SSL VPN firewall policy:
 a. Go to Policy & Objects > Firewall Policy.
 b. Fill in the firewall policy name. In this example, sslvpn certificate auth.
 c. Incoming interface must be SSL-VPN tunnel interface(ssl.root).
 d. Set the Source Address to all and Source User to sslvpngroup.
 e. Set the Outgoing Interface to the local network interface so that the remote user can access the internal 
network. In this example, port1.
 f. Set Destination Address to the internal protected subnet 192.168.1.0.
 g. Set Schedule to always, Service to ALL, and Action to Accept.
 h. Enable NAT.
 i. Configure any remaining firewall and security options as desired.
 j. Click OK.

FortiOS 6.4.6 Administration Guide 1603


Fortinet Technologies Inc.
VPN

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address.
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 2. Configure internal interface and protected subnet, then connect the port1 interface to the internal network.
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end
config firewall address
edit "192.168.1.0"
set subnet 192.168.1.0 255.255.255.0
next
end

 3. Register FortiGate for FortiCare Support.
To add or download a mobile token on FortiGate, FortiGate must be registered for FortiCare Support. If your 
FortiGate is registered, skip this step.
diagnose forticare direct-registration product-registration -a "your [email protected]" -p
"your password" -T "Your Country/Region" -R "Your Reseller" -e 1

 4. Add FortiToken mobile to FortiGate:
execute fortitoken-mobile import <your FTM code>

If your FortiGate has FortiToken installed, skip this step.
Every FortiGate has two free mobile Tokens. You can download the free token.
execute fortitoken-mobile import 0000-0000-0000-0000-0000

 5. Enable FortiToken mobile push:
 a. To use FTM-push authentication, ensure server-ip is reachable from the Internet and enable FTM-push in 
the FortiGate:
config system ftm-push
set server-ip 172.20.120.123
set status enable
end

 b. Enable FTM service on WAN interface:
config system interface
edit "wan1"
append allowaccess ftm
next
end

FortiOS 6.4.6 Administration Guide 1604


Fortinet Technologies Inc.
VPN

 6. Configure user and user group:
config user local
edit "sslvpnuser1"
set type password
set two-factor fortitoken
set fortitoken <select mobile token for the option list>
set email-to <user's email address>
set passwd <user's password>
next
end
config user group
edit "sslvpngroup"
set member "sslvpnuser1"
next
end

 7. Activate the mobile token.
When the user sslvpnuser1 is created, an email is sent to the user's email address. Follow the instructions to install 
your FortiToken mobile application on your device and activate your token.
 8. Configure SSL VPN web portal:
config vpn ssl web portal
edit "full-access"
set tunnel-mode enable
set web-mode enable
set ip-pools "SSLVPN_TUNNEL_ADDR1"
set split-tunneling disable
next
end

 9. Configure SSL VPN settings:
config vpn ssl settings
set servercert "server_certificate"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set source-interface "wan1"
set source-address "all"
set default-portal "web-access"
config authentication-rule
edit 1
set groups "sslvpngroup"
set portal "full-access"
next
end
end

 10. Configure one SSL VPN firewall policy to allow remote user to access the internal network:
config firewall policy
edit 1
set name "sslvpn web mode access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "192.168.1.0"
set groups “sslvpngroup”
set action accept

FortiOS 6.4.6 Administration Guide 1605


Fortinet Technologies Inc.
VPN

set schedule "always"


set service "ALL"
set nat enable
next
end

To see the results of web portal:

 1. From a remote device, use a web browser to log into the SSL VPN web portal http://172.20.120.123:10443.
 2. Log in using the sslvpnuser1 credentials.
The FortiGate pushes a login request notification through the FortiToken mobile application.
 3. Check your mobile device and select Approve.
When the authentication is approved, sslvpnuser1 is logged into the SSL VPN portal.
 4. On the FortiGate, go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.

To see the results of tunnel connection:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access > Configure VPN.
 3. Add a new connection:
 a. Set the connection name.
 b. Set Remote Gateway to the IP of the listening FortiGate interface, in this example, 172.20.120.123.
 c. Select Customize Port and set it to 10443.
 4. Save your settings.
 5. Log in using the sslvpnuser1 credentials and click FTM Push.
The FortiGate pushes a login request notification through the FortiToken mobile application.
 6. Check your mobile device and select Approve.
When the authentication is approved, sslvpnuser1 is logged into the SSL VPN tunnel.

To check the SSL VPN connection using the GUI:

 1. Go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.


 2. Go to Log & Report > Forward Traffic to view the details of the SSL VPN traffic.

To check the web portal login using the CLI:

get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 sslvpnuser1 1(1) 229 10.1.100.254 0/0 0/0

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP

To check the tunnel login using the CLI:

get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 sslvpnuser1 1(1) 291 10.1.100.254 0/0 0/0

FortiOS 6.4.6 Administration Guide 1606


Fortinet Technologies Inc.
VPN

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP
0 sslvpnuser1 10.1.100.254 9 22099/43228 10.212.134.200

SSL VPN with RADIUS on FortiAuthenticator

This is a sample configuration of SSL VPN that uses FortiAuthenticator as a RADIUS authentication server.

Sample topology

Sample configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.

To configure FortiAuthenticator using the GUI:

 1. Create a user on the FortiAuthenticator.
 a. On the FortiAuthenticator, go to Authentication > User Management > Local Users to create a user 
sslvpnuser1.
 b. Enable Allow RADIUS authentication and click OK to access additional settings.
 c. Go to Authentication > User Management > User Groups to create a group sslvpngroup.
 d. Add sslvpnuser1 to the group by moving the user from Available users to Selected users.
 2. Create the RADIUS client (FortiGate) on the FortiAuthenticator.
 a. On the FortiAuthenticator, go to Authentication > RADIUS Service > Clients to add the FortiGate as a RADIUS 
client OfficeServer).
 b. Enter the FortiGate IP address and set a Secret.
The secret is a pre-shared secure password that the FortiGate uses to authenticate to the FortiAuthenticator. 
 c. Set Realms to local | Local users.

FortiOS 6.4.6 Administration Guide 1607


Fortinet Technologies Inc.
VPN

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address. The port1 interface connects to the internal network.
 a. Go to Network > Interfaces and edit the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.
 d. Click OK.
 e. Go to Policy & Objects > Addresses and create an address for internal subnet 192.168.1.0.
 2. Create a RADIUS user and user group .
 a. On the FortiGate, go to User & Authentication > RADIUS Servers to create a user to connect to the RADIUS 
server (FortiAuthenticator).
 b. For Name, use FAC-RADIUS.
 c. Enter the IP address of the FortiAuthenticator, and enter the Secret created above.
 d. Click Test Connectivity to ensure you can connect to the RADIUS server.
 e. Select Test User Credentials and enter the credentials for sslvpnuser1.
The FortiGate can now connect to the FortiAuthenticator as the RADIUS client.
 f. Go to User & Authentication > User Groups and click Create New to map authenticated remote users to a user 
group on the FortiGate.
 g. For Name, use SSLVPNGroup.
 h. In Remote Groups, click Add.
 i. In the Remote Server dropdown list, select FAC-RADIUS.
 j. Leave the Groups field blank.
 3. Configure SSL VPN web portal.
 a. Go to VPN > SSL-VPN Portals to edit the full-access portal.
This portal supports both web and tunnel mode.
 b. Disable Enable Split Tunneling so that all SSL VPN traffic goes through the FortiGate.
 4. Configure SSL VPN settings.
 a. Go to VPN > SSL-VPN Settings.
 b. Select the Listen on Interface(s), in this example, wan1.
 c. Set Listen on Port to 10443.
 d. Set Server Certificate to the authentication certificate.
 e. Under Authentication/Portal Mapping, set default Portal web-access for All Other Users/Groups.
 f. Create new Authentication/Portal Mapping for group sslvpngroup mapping portal full-access.
 5. Configure SSL VPN firewall policy.
 a. Go to Policy & Objects > Firewall Policy.
 b. Fill in the firewall policy name. In this example, sslvpn certificate auth.
 c. Incoming Interface must be SSL-VPN tunnel interface(ssl.root).
 d. Set the Outgoing Interface to the local network interface so that the remote user can access the internal 
network. In this example: port1.
 e. Set the Source > Address  to all and Source > User to sslvpngroup.
 f. Set Destination > Address to the internal protected subnet 192.168.1.0.
 g. Set Schedule to always, Service to ALL, and Action to Accept.
 h. Enable NAT.
 i. Configure the remaining options as required.
 j. Click OK.

FortiOS 6.4.6 Administration Guide 1608


Fortinet Technologies Inc.
VPN

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address.
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 2. Configure internal interface and protected subnet, then connect the port1 interface to the internal network.
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end
config firewall address
edit "192.168.1.0"
set subnet 192.168.1.0 255.255.255.0
next
end

 3. Create a RADIUS user and user group.
config user radius
edit "FAC-RADIUS"
set server "172.20.120.161"
set secret <FAC client secret>
next
end
config user group
edit "sslvpngroup"
set member "FAC-RADIUS"
next
end

 4. Configure SSL VPN web portal.
config vpn ssl web portal
edit "full-access"
set tunnel-mode enable
set web-mode enable
set ip-pools "SSLVPN_TUNNEL_ADDR1"
set split-tunneling disable
next
end

 5. Configure SSL VPN settings.
config vpn ssl settings
set servercert "server_certificate"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set source-interface "wan1"
set source-address "all"
set default-portal "web-access"

FortiOS 6.4.6 Administration Guide 1609


Fortinet Technologies Inc.
VPN

config authentication-rule
edit 1
set groups "sslvpngroup"
set portal "full-access"
next
end
end

 6. Configure one SSL VPN firewall policy to allow remote user to access the internal network.
config firewall policy
edit 1
set name "sslvpn web mode access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "192.168.1.0"
set groups “sslvpngroup”
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

To see the results of web portal:

 1. From a remote device, use a web browser to log into the SSL VPN web portal http://172.20.120.123:10443.
 2. Log in using the sslvpnuser1 credentials.
 3. On the FortiGate, go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.

To see the results of tunnel connection:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access > Configure VPN.
 3. Add a new connection.
 l Set the connection name.
 l Set Remote Gateway to 172.20.120.123.
 4. Select Customize Port and set it to 10443.
 5. Save your settings.
 6. Log in using the sslvpnuser1 credentials and check that you are logged into the SSL VPN tunnel.

To check the SSL VPN connection using the GUI:

 1. Go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.


 2. Go to Log & Report > Forward Traffic to view the details of the SSL VPN traffic.

To check the web portal login using the CLI:

get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 sslvpnuser1 1(1) 229 10.1.100.254 0/0 0/0

FortiOS 6.4.6 Administration Guide 1610


Fortinet Technologies Inc.
VPN

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP

To check the tunnel login using the CLI:

get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 sslvpnuser1 1(1) 291 10.1.100.254 0/0 0/0

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP
0 sslvpnuser1 10.1.100.254 9 22099/43228 10.212.134.200

SSL VPN with RADIUS and FortiToken mobile push on FortiAuthenticator

This is a sample configuration of SSL VPN that uses FortiAuthenticator as a RADIUS authentication server and 
FortiToken mobile push two-factor authentication. If you enable push notifications, users can accept or deny the 
authentication request.

Sample topology

Sample configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.

FortiOS 6.4.6 Administration Guide 1611


Fortinet Technologies Inc.
VPN

To configure FortiAuthenticator using the GUI:

 1. On the FortiAuthenticator, go to System > Administration > System Access and configure a Public IP/FQDN for


FortiToken Mobile. If the FortiAuthenticator is behind a firewall, the public IP/FQDN will be an IP/port forwarding rule 
directed to one of the FortiAuthenticator interfaces. The interface that receives the approve/deny FTM push 
responses must have the FortiToken Mobile API service enabled.
 2. Add a FortiToken mobile license on the FortiAuthenticator:
 a. Go to Authentication > User Management > FortiTokens.
 b. Click Create New.
 c. Set Token type to FortiToken Mobile and enter the FortiToken Activation codes.
 3. Create the RADIUS client (FortiGate) on the FortiAuthenticator:
 a. Go to Authentication > RADIUS Service > Clients to add the FortiGate as a RADIUS client OfficeServer).
 b. Enter the FortiGate IP address and set a Secret.
The secret is a pre-shared secure password that the FortiGate uses to authenticate to the FortiAuthenticator. 
 c. Set Authentication method to Enforce two-factor authentication.
 d. Select Enable FortiToken Mobile push notifications authentication.
 e. Set Realms to local | Local users.
 4. Create a user and assign FortiToken mobile to the user on the FortiAuthenticator:
 a. Go to Authentication > User Management > Local Users to create a user sslvpnuser1.
 b. Enable Allow RADIUS authentication and click OK to access additional settings.
 c. Enable Token-based authentication and select to deliver the token code by FortiToken.
 d. Select the FortiToken added from the FortiToken Mobile dropdown menu.
 e. Set Delivery method to Email and fill in the User Information section.
 f. Go to Authentication > User Management > User Groups to create a group sslvpngroup.
 g. Add sslvpnuser1 to the group by moving the user from Available users to Selected users.
 5. Install the FortiToken mobile application on your Android or iOS smartphone.
The FortiAuthenticator sends the FortiToken mobile activation to the user’s email address.
 6. Activate the FortiToken mobile through the FortiToken mobile application by entering the activation code or 
scanning the QR code.

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address. The port1 interface connects to the internal network.
 a. Go to Network > Interfaces and edit the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.
 d. Click OK.
 e. Go to Policy & Objects > Address and create an address for internet subnet 192.168.1.0.
 2. Create a RADIUS user and user group:
 a. On the FortiGate, go to User & Authentication > RADIUS Servers to create a user to connect to the RADIUS 
server (FortiAuthenticator).
 b. For Name, use FAC-RADIUS.
 c. Enter the IP address of the FortiAuthenticator, and enter the Secret created above.
 d. Click Test Connectivity to ensure you can connect to the RADIUS server.
 e. Select Test User Credentials and enter the credentials for sslvpnuser1.
The FortiGate can now connect to the FortiAuthenticator as the RADIUS client.

FortiOS 6.4.6 Administration Guide 1612


Fortinet Technologies Inc.
VPN

 f. Go to User & Authentication > User Groups and click Create New to map authenticated remote users to a user 


group on the FortiGate.
 g. For Name, use SSLVPNGroup.
 h. In Remote Groups, click Add.
 i. In the Remote Server dropdown list, select FAC-RADIUS.
 j. Leave the Groups field blank.
 3. Configure SSL VPN web portal:
 a. Go to VPN > SSL-VPN Portals to edit the full-access portal.
This portal supports both web and tunnel mode.
 b. Disable Enable Split Tunneling so that all SSL VPN traffic goes through the FortiGate.
 4. Configure SSL VPN settings:
 a. Go to VPN > SSL-VPN Settings.
 b. Select the Listen on Interface(s), in this example, wan1.
 c. Set Listen on Port to 10443.
 d. Set Server Certificate to the authentication certificate.
 e. Under Authentication/Portal Mapping, set default Portal web-access for All Other Users/Groups.
 f. Create new Authentication/Portal Mapping for group sslvpngroup mapping portal full-access.
 5. Configure SSL VPN firewall policy:
 a. Go to Policy & Objects > Firewall Policy.
 b. Fill in the firewall policy name. In this example, sslvpn certificate auth.
 c. Incoming interface must be SSL-VPN tunnel interface(ssl.root).
 d. Set the Source Address to all and Source User to sslvpngroup.
 e. Set the Outgoing Interface to the local network interface so that the remote user can access the internal 
network. In this example: port1.
 f. Set Destination Address to the internal protected subnet 192.168.1.0.
 g. Set Schedule to always, Service to ALL, and Action to Accept.
 h. Enable NAT.
 i. Configure any remaining firewall and security options as desired.
 j. Click OK.

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address:
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 2. Configure internal interface and protected subnet, then connect the port1 interface to the internal network:
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end

FortiOS 6.4.6 Administration Guide 1613


Fortinet Technologies Inc.
VPN

config firewall address


edit "192.168.1.0"
set subnet 192.168.1.0 255.255.255.0
next
end

 3. Create a RADIUS user and user group:
config user radius
edit "FAC-RADIUS"
set server "172.20.120.161"
set secret <FAC client secret>
next
end
config user group
edit "sslvpngroup"
set member "FAC-RADIUS"
next
end

 4. Configure SSL VPN web portal:
config vpn ssl web portal
edit "full-access"
set tunnel-mode enable
set web-mode enable
set ip-pools "SSLVPN_TUNNEL_ADDR1"
set split-tunneling disable
next
end

 5. Configure SSL VPN settings:
config vpn ssl settings
set servercert "server_certificate"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set source-interface "wan1"
set source-address "all"
set default-portal "web-access"
config authentication-rule
edit 1
set groups "sslvpngroup"
set portal "full-access"
next
end
end

 6. Configure one SSL VPN firewall policy to allow remote user to access the internal network:
config firewall policy
edit 1
set name "sslvpn web mode access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "192.168.1.0"
set groups “sslvpngroup”
set action accept

FortiOS 6.4.6 Administration Guide 1614


Fortinet Technologies Inc.
VPN

set schedule "always"


set service "ALL"
set nat enable
next
end

To see the results of web portal:

 1. From a remote device, use a web browser to log into the SSL VPN web portal http://172.20.120.123:10443.
 2. Log in using the sslvpnuser1 credentials.
The FortiAuthenticator pushes a login request notification through the FortiToken Mobile application.
 3. Check your mobile device and select Approve.
When the authentication is approved, sslvpnuser1 is logged into the SSL VPN portal.
 4. On the FortiGate, go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.

To see the results of tunnel connection:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access > Configure VPN.
 3. Add a new connection:
 a. Set the connection name.
 b. Set Remote Gateway to the IP of the listening FortiGate interface, in this example: 172.20.120.123.
 c. Select Customize Port and set it to 10443.
 4. Save your settings.
 5. Log in using the sslvpnuser1 credentials and click FTM Push.
The FortiAuthenticator pushes a login request notification through the FortiToken Mobile application.
 6. Check your mobile device and select Approve.
When the authentication is approved, sslvpnuser1 is logged into the SSL VPN tunnel.

To check the SSL VPN connection using the GUI:

 1. Go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.


 2. Go to Log & Report > Forward Traffic to view the details of the SSL VPN traffic.

To check the web portal login using the CLI:

get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 sslvpnuser1 1(1) 229 10.1.100.254 0/0 0/0

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP

To check the tunnel login on CLI:

get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 sslvpnuser1 1(1) 291 10.1.100.254 0/0 0/0

FortiOS 6.4.6 Administration Guide 1615


Fortinet Technologies Inc.
VPN

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP
0 sslvpnuser1 10.1.100.254 9 22099/43228 10.212.134.200

SSL VPN with RADIUS password renew on FortiAuthenticator

This is a sample configuration of SSL VPN for RADIUS users with Force Password Change on next logon. In this 


example, the RADIUS server is a FortiAuthenticator. A user test1 is configured on FortiAuthenticator with Force
password change on next logon.

Sample topology

Sample configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address. The port1 interface connects to the internal network.
 a. Go to Network > Interfaces and edit the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.
 d. Click OK.
 e. Go to Policy & Objects > Address and create an address for internet subnet 192.168.1.0.

FortiOS 6.4.6 Administration Guide 1616


Fortinet Technologies Inc.
VPN

 2. Create a RADIUS user.
 a. Go to User & Authentication > RADIUS Servers to create a user.
 b. Set Authentication method to MS-CHAP-v2.
 c. Enter the IP/Name and Secret.
 d. Click Create.
Password renewal only works with the MS-CHAP-v2 authentication method.
 e. To enable the password-renew option, use these CLI commands.
config user radius
edit "fac"
set server "172.20.120.161"
set secret <fac radius password>
set auth-type ms_chap_v2
set password-renewal enable
next
end

 3. Configure user group.
 a. Go to User & Authentication > User Groups to create a user group.
 b. For the Name, enter fac-group.
 c. In Remote Groups, click Add to add Remote Server you just created.
 4. Configure SSL VPN web portal.
 a. Go to VPN > SSL-VPN Portals to edit the full-access portal.
This portal supports both web and tunnel mode.
 b. Disable Enable Split Tunneling so that all SSL VPN traffic goes through the FortiGate.
 5. Configure SSL VPN settings.
 a. Go to VPN > SSL-VPN Settings.
 b. Select the Listen on Interface(s), in this example, wan1.
 c. Set Listen on Port to 10443.
 d. Set Server Certificate to the authentication certificate.
 e. Under Authentication/Portal Mapping, set default Portal web-access for All Other Users/Groups.
 f. Create new Authentication/Portal Mapping for group fac-group mapping portal full-access.
 6. Configure SSL VPN firewall policy.
 a. Go to Policy & Objects > Firewall Policy.
 b. Fill in the firewall policy name, in this example, sslvpn certificate auth.
 c. Incoming interface must be SSL-VPN tunnel interface(ssl.root).
 d. Set the Source Address to all and Source User to fac-group.
 e. Set the Outgoing Interface to the local network interface so that the remote user can access the internal 
network, in this example, port1.
 f. Set Destination Address to the internal protected subnet 192.168.1.0.
 g. Set Schedule to always, Service to ALL, and Action to Accept.
 h. Enable NAT.
 i. Configure any remaining firewall and security options as desired.
 j. Click OK.

FortiOS 6.4.6 Administration Guide 1617


Fortinet Technologies Inc.
VPN

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address.
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 2. Configure internal interface and protected subnet, then connect the port1 interface to the internal network.
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end
config firewall address
edit "192.168.1.0"
set subnet 192.168.1.0 255.255.255.0
next
end

 3. Configure the RADIUS server.
config user radius
edit "fac"
set server "172.18.58.107"
set secret <fac radius password>
set auth-type ms_chap_v2
set password-renewal enable
next
end

 4. Configure user group.
config user group
edit "fac-group"
set member "fac"
next
end

 5. Configure SSL VPN web portal.
config vpn ssl web portal
edit "full-access"
set tunnel-mode enable
set web-mode enable
set ip-pools "SSLVPN_TUNNEL_ADDR1"
set split-tunneling disable
next
end

 6. Configure SSL VPN settings.
config vpn ssl settings
set servercert "server_certificate"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"

FortiOS 6.4.6 Administration Guide 1618


Fortinet Technologies Inc.
VPN

set source-interface "wan1"


set source-address "all"
set default-portal "web-access"
config authentication-rule
edit 1
set groups "fac-group"
set portal "full-access"
next
end
end

 7. Configure one SSL VPN firewall policy to allow remote user to access the internal network.
config firewall policy
edit 1
set name "sslvpn web mode access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "192.168.1.0"
set groups “fac-group”
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

To see the results of web portal:

 1. From a remote device, use a web browser to log into the SSL VPN web portal http://172.20.120.123:10443.
 2. Log in using the test1 credentials.
Use a user which is configured on FortiAuthenticator with Force password change on next logon.
 3. Click Login. You are prompted to enter a new password.
 4. On the FortiGate, go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.

To see the results of tunnel connection:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access > Configure VPN.
 3. Add a new connection.
 l Set the connection name.
 l Set Remote Gateway to the IP of the listening FortiGate interface, in this example, 172.20.120.123.
 4. Select Customize Port and set it to 10443.
 5. Save your settings.
 6. Log in using the test1 credentials.
You are prompted to enter a new password.

To check the SSL VPN connection using the GUI:

 1. Go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.


 2. Go to Log & Report > Events and select VPN Events from the event type dropdown list to view the details of the SSL 

FortiOS 6.4.6 Administration Guide 1619


Fortinet Technologies Inc.
VPN

VPN connection event log.
 3. Go to Log & Report > Forward Traffic to view the details of the SSL VPN traffic.

To check the web portal login using the CLI:

get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 test1 1(1) 229 10.1.100.254 0/0 0/0

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP

To check the tunnel login using the CLI:

get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 test1 1(1) 291 10.1.100.254 0/0 0/0

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP
0 test1 10.1.100.254 9 22099/43228 10.212.134.200

SSL VPN with RADIUS on Windows NPS

This is an example configuration of SSL VPN that uses Windows Network Policy Server (NPS) as a RADIUS 
authentication server.
The NPS must already be configured to accept the FortiGate as a RADIUS client and the choice of authentication 
method, such as MS-CHAPv2. A shared key must also have been created.

Example

FortiOS 6.4.6 Administration Guide 1620


Fortinet Technologies Inc.
VPN

The user is connecting from their PC to the FortiGate's port1 interface. RADIUS authentication occurs between the 
FortiGate and the Windows NPS, and the SSL-VPN connection is established once the authentication is successful.

Configure SSL-VPN with RADIUS on Windows NPS in the GUI

To configure the internal and external interfaces:

 1. Go to Network > Interfaces


 2. Edit the port1 interface and set IP/Network Mask to 192.168.2.5/24.
 3. Edit the port2 interface and set IP/Network Mask to 192.168.20.5/24.
 4. Click OK.

To create a firewall address:

 1. Go to Policy & Objects > Addresses and click Create New > Address.


 2. Set Name to 192.168.20.0.
 3. Leave Type as Subnet 
 4. Set IP/Netmask to 192.168.20.0/24.
 5. Click OK.

To add the RADIUS server:

 1. Go to User & Authentication > RADIUS Servers and click Create New.


 2. Set Name to rad-server.
 3. Leave Authentication method set to Default. The PAP, MS-CHAPv2, and CHAP methods will be tried in order.
 4. Under Primary Server, set IP/Name to 192.168.20.6 and Secret to the shared secret configured on the RADIUS 
server.
 5. Click Test Connectivity to test the connection to the server, and ensure that Connection status is Successful.
 6. Optionally, click Test User Credentials to test user credentials. Testing from the GUI is limited to PAP.

 7. Click OK.

To configure a user group:

 1. Go to User & Authentication > User Groups and click Create New.


 2. Set Name to rad-group.

FortiOS 6.4.6 Administration Guide 1621


Fortinet Technologies Inc.
VPN

 3. Under Remote Groups, click Add and add the rad-server.

 4. Click OK.

To configure SSL VPN settings:

 1. Go to VPN > SSL-VPN Settings.


 2. Select the Listen on Interface(s), in this example, port1.
 3. Set Listen on Port to 10443.
 4. If you have a server certificate, set Server Certificate to the authentication certificate.
 5. Under Authentication/Portal Mapping:
 a. Edit All Other Users/Groups and set Portal to web-access.
 b. Click Create New and create a mapping for the rad-group user group with Portal set to full-access.

 c. Click OK.
 6. Click Apply.

To configure an SSL VPN firewall policy:

 1. Go to Policy & Objects > Firewall Policy and click Create New.


 2. Set the policy name, in this example, sslvpn-radius.
 3. Set Incoming Interface to SSL-VPN tunnel interface(ssl.root).
 4. Set Outgoing Interface to the local network interface so that the remote user can access the internal network. In this 
example, port2.
 5. Set the Source > Address to all and Source > User to rad-group.
 6. Set Destination > Address to the internal protected subnet 192.168.20.0.
 7. Set Schedule to always, Service to ALL, and Action to Accept.

FortiOS 6.4.6 Administration Guide 1622


Fortinet Technologies Inc.
VPN

 8. Enable NAT.

 9. Configure the remaining options as required.
 10. Click OK.

Configure SSL-VPN with RADIUS on Windows NPS in the CLI

To configure SSL VPN using the CLI:

 1. Configure the internal and external interfaces:
config system interface
edit "port1"
set vdom "root"
set ip 192.168.2.5 255.255.255.0
set alias internal
next
edit "port2"
set vdom "root"
set ip 192.168.20.5 255.255.255.0
set alias external
next
end

 2. Configure the firewall address:
config firewall address
edit "192.168.20.0"
set subnet 192.168.20.0 255.255.255.0
next
end

 3. Add the RADIUS server:
config user radius
edit "rad-server"
set server "192.168.20.6"
set secret *********
next
end

 4. Create a user group and add the RADIUS server to it:.
config user group
edit "rad-group"
set member "rad-server"
next
end

FortiOS 6.4.6 Administration Guide 1623


Fortinet Technologies Inc.
VPN

 5. Configure SSL VPN settings:
config vpn ssl settings
set servercert "server_certificate"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set source-interface "port1"
set source-address "all"
set default-portal "web-access"
config authentication-rule
edit 1
set groups "rad-group"
set portal "full-access"
next
end
end

 6. Configure an SSL VPN firewall policy to allow remote user to access the internal network.
config firewall policy
edit 1
set name "sslvpn-radius"
set srcintf "ssl.root"
set dstintf "port2"
set srcaddr "all"
set dstaddr "192.168.20.0"
set groups “rad-group”
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

Results

To connect with FortiClient in tunnel mode:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access > Configure VPN.
 3. Add a new connection:
 a. Set the connection name.
 b. Set Remote Gateway to 192.168.2.5.
 c. Select Customize Port and set it to 10443.
 4. Save your settings.
 5. Log in using the RADIUS user credentials.

To check the SSL VPN connection using the GUI:

 1. Go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.


 2. Go to Log & Report > Events and select VPN Events from the event type drop-down list to view the details of the 
SSL VPN connection event log.
 3. Go to Log & Report > Forward Traffic to view the details of the SSL VPN traffic.

FortiOS 6.4.6 Administration Guide 1624


Fortinet Technologies Inc.
VPN

To check the login using the CLI:

# get vpn ssl monitor


SSL VPN Login Users:
Index User Group Auth Type Timeout From HTTP in/out HTTPS in/out
0 radkeith rad-group 2(1) 295 192.168.2.202 0/0 0/0

SSL VPN sessions:


Index User Group Source IP Duration I/O Bytes Tunnel/Dest IP
0 radkeith rad-group 192.168.2.202 18 28502/4966
10.212.134.200

SSL VPN with multiple RADIUS servers

When configuring two or more RADIUS servers, you can configure a Primary and Secondary server within the same 
RADIUS server configurations for backup purposes. You can also configure multiple RADIUS servers within the same 
User Group to service the access request at the same time. 

A tertiary server can be configured in the CLI.

Sample topology

Sample configurations

 l Configure a Primary and Secondary server for backup on page 1625
 l Authenticating to two RADIUS servers concurrently on page 1629

Configure a Primary and Secondary server for backup

When you define a Primary and Secondary RADIUS server, the access request will always be sent to the Primary server 
first. If the request is denied with an Access-Reject, then the user authentication fails. However, if there is no response 
from the Primary server after another attempt, the access request will be sent to the Secondary server. 

FortiOS 6.4.6 Administration Guide 1625


Fortinet Technologies Inc.
VPN

In this example, you will use a Windows NPS server as the Primary server and a FortiAuthenticator as the Secondary 
server. It is assumed that users are synchronized between the two servers.

To configure the internal and external interfaces:

 1. Go to Network > Interfaces.


 2. Edit the port1 interface and set IP/Network Mask to 192.168.2.5/24.
 3. Edit the port2 interface and set IP/Network Mask to 192.168.20.5/24.
 4. Click OK.

To create a firewall address:

 1. Go to Policy & Objects > Addresses and click Create New > Address.


 2. Set Name to 192.168.20.0.
 3. Leave Type as Subnet
 4. Set IP/Netmask to 192.168.20.0/24.
 5. Click OK.

To add the RADIUS servers:

 1. Go to User & Authentication > RADIUS Servers and click Create New.


 2. Set Name to PrimarySecondary.
 3. Leave Authentication method set to Default. The PAP, MS-CHAPv2, and CHAP methods will be tried in order.
 4. Under Primary Server, set IP/Name to 192.168.20.6 and Secret to the shared secret configured on the RADIUS 
server. 
 5. Click Test Connectivity to test the connection to the server, and ensure that Connection status is Successful. 
 6. Under Secondary Server, set IP/Name to 192.168.2.71 and Secret to the shared secret configured on the RADIUS 
server. 
 7. Click Test Connectivity to test the connection to the server, and ensure that Connection status is Successful. 
8. Click OK.

To configure the user group:

 1. Go to User & Authentication > User Groups and click Create New.


 2. In the Name field, enter  PrimarySecondaryGroup.
 3. In the Remote Groups area, click Add, and from the Remote Server dropdown, select PrimarySecondary.
 4. Click OK, and then click OK again.

To configure the SSL VPN settings:

 1. Go to VPN > SSL-VPN Settings.


 2. From the Listen on Interface(s) dropdown select  port1.
 3. In the Listen on Port field enter  10443.
 4. Optionally, from the Server Certificate dropdown, select the authentication certificate if you have one for this SSL 
VPN portal.
 5. Under Authentication/Portal Mapping, set the default portal web-access.   
 a. Select All Other Users/Groups and click Edit.
 b. From the Portal dropdown, select web-access.

FortiOS 6.4.6 Administration Guide 1626


Fortinet Technologies Inc.
VPN

 c. Click OK.
 6. Create a web portal for PrimarySecondaryGroup.   
 a. Under Authentication/Portal Mapping, click Create New.
 b. Click Users/Groups and select PrimarySecondaryGroup.
 c. From the Portal dropdown, select full-access.
 d. Click OK.

To configure SSL VPN firewall policy:

 1. Go to Policy & Objects > Firewall Policy.   


 2. Click Create New to create a new policy, or double-click an existing policy to edit it and configure the following 
settings:

Name Enter a name for the policy.

Incoming Interface SSL-VPN tunnel interface (ssl.root)

Outgoing interface Set to the local network interface so that the remote user can access the internal 


network.
For this example, select port3.

Source In the Address tab, select SSLVPN_TUNNEL_ADDR1
In the User tab, select PrimarySecondaryGroup

Destination Select the internal protected subnet 192.168.20.0.

Schedule always

Service All

Action Accept

NAT Enable

 3. Configure any remaining firewall and security options as required.
 4. Click OK.

To configure SSL VPN using the CLI:

 1. Configure the internal interface and firewall address:   
config system interface
edit "port3"
set vdom "root"
set ip 192.168.20.5 255.255.255.0
set alias "internal"
next
end
config firewall address
edit "192.168.20.0"
set uuid cc41eec2-9645-51ea-d481-5c5317f865d0
set subnet 192.168.20.0 255.255.255.0
next
end
 2. Configure the RADIUS server:  
config user radius

FortiOS 6.4.6 Administration Guide 1627


Fortinet Technologies Inc.
VPN

edit "PrimarySecondary"
set server "192.168.20.6"
set secret <secret>
set secondary-server "192.168.2.71"
set secondary-secret <secret>
next
end
 3. Add the RADIUS user to the user group:   
config user group
edit "PrimarySecondaryGroup"
set member "PrimarySecondary "
next
end
 4. Configure SSL VPN settings:   
config vpn ssl settings
set servercert "server_certificate"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set source-interface "port1"
set source-address "all"
set default-portal "web-access"
config authentication-rule
edit 1
set groups "PrimarySecondaryGroup "
set portal "full-access"
next
end
end
 5. Configure one SSL VPN firewall policy to allow remote users to access the internal network:   
config firewall policy
edit 1
set name "sslvpn-radius"
set srcintf "ssl.root"
set dstintf "port3"
set srcaddr "all"
set dstaddr "192.168.20.0"
set groups “PrimarySecondaryGroup”
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

To verify the connection:

User radkeith is a member of both the NPS server and the FAC server.
When the Primary server is up, it will connect to the SSL VPN tunnel using FortiClient.
# diagnose sniffer packet any 'port 1812' 4 0 l
interfaces=[any]
filters=[port 1812]
2020-05-15 16:26:50.838453 port3 out 192.168.20.5.2374 -> 192.168.20.6.1812: udp 118
2020-05-15 16:26:50.883166 port3 in 192.168.20.6.1812 -> 192.168.20.5.2374: udp 20
2020-05-15 16:26:50.883374 port3 out 192.168.20.5.2374 -> 192.168.20.6.1812: udp 182
2020-05-15 16:26:50.884683 port3 in 192.168.20.6.1812 -> 192.168.20.5.2374: udp 228

FortiOS 6.4.6 Administration Guide 1628


Fortinet Technologies Inc.
VPN

The access request is sent to the Primary NPS server 192.168.20.6, and the connection is successful.
# get vpn ssl monitor
SSL VPN Login Users:
Index User Group Auth Type Timeout From HTTP
in/out HTTPS in/out
0 radkeith PrimarySecondaryGroup 2(1) 285 192.168.2.202
0/0 0/0
SSL VPN sessions:
Index User Group Source IP Duration I/O Bytes
Tunnel/Dest IP
0 radkeith PrimarySecondaryGroup 192.168.2.202 62 132477/4966
10.212.134.200

When the Primary server is down, and the Secondary server is up, the connection is made to the SSLVPN tunnel again:
# diagnose sniffer packet any 'port 1812' 4 0 l
interfaces=[any]
filters=[port 1812]
2020-05-15 16:31:23.016875 port3 out 192.168.20.5.7989 -> 192.168.20.6.1812: udp 118
2020-05-15 16:31:28.019470 port3 out 192.168.20.5.7989 -> 192.168.20.6.1812: udp 118
2020-05-15 16:31:30.011874 port1 out 192.168.2.5.23848 -> 192.168.2.71.1812: udp 118
2020-05-15 16:31:30.087564 port1 in 192.168.2.71.1812 -> 192.168.2.5.23848: udp 20

Access request is sent to the Primary NPS server 192.168.20.6, but there was no response. RADIUS authentication falls 
through to the Secondary FortiAuthenticator 192.168.2.71, and the authentication was accepted. The VPN connection is 
established.
# get vpn ssl monitor
SSL VPN Login Users:
Index User Group Auth Type Timeout From HTTP
in/out HTTPS in/out
0 radkeith PrimarySecondaryGroup 2(1) 287 192.168.2.202
0/0 0/0
SSL VPN sessions:
Index User Group Source IP Duration I/O Bytes
Tunnel/Dest IP
0 radkeith PrimarySecondaryGroup 192.168.2.202 48 53544/4966
10.212.134.200

Authenticating to two RADIUS servers concurrently

There are times where users are located on separate RADIUS servers. This may be the case when migrating from an old 
server to a new one for example. In this scenario, a Windows NPS server and a FortiAuthenticator are configured in the 
same User Group. The access-request is sent to both servers concurrently. If FortiGate receives an access-accept from 
either server, authentication is successful.

To configure the internal and external interfaces:

 1. Go to Network > Interfaces.


 2. Edit the port1 interface and set IP/Network Mask to 192.168.2.5/24.

FortiOS 6.4.6 Administration Guide 1629


Fortinet Technologies Inc.
VPN

 3. Edit the port2 interface and set IP/Network Mask to 192.168.20.5/24.


 4. Click OK.

To create a firewall address:

 1. Go to Policy & Objects > Addresses and click Create New > Address.


 2. Set Name to 192.168.20.0.
 3. Leave Type as Subnet
 4. Set IP/Netmask to 192.168.20.0/24. 
 5. Click OK.

To configure the first RADIUS server:

 1. Go to User & Authentication > RADIUS Servers and click Create New.


 2. Set Name to win2k16.
 3. Leave Authentication method set to Default. The PAP, MS-CHAPv2, and CHAP methods will be tried in order.
 4. Under Primary Server, set IP/Name to 192.168.20.6 and Secret to the shared secret configured on the RADIUS 
server. 
 5. Click Test Connectivity to test the connection to the server, and ensure that Connection status is Successful. 
6. Click OK.

To configure the second RADIUS server:

 1. Go to User & Authentication > RADIUS Servers and click Create New.


 2. Set Name to fac.
 3. Leave Authentication method set to Default. The PAP, MS-CHAPv2, and CHAP methods will be tried in order.
 4. Under Primary Server, set IP/Name to 192.168.2.71 and Secret to the shared secret configured on the RADIUS 
server. 
 5. Click Test Connectivity to test the connection to the server, and ensure that Connection status is Successful. 
6. Click OK.

To configure the user group:

 1. Go to User & Authentication > User Groups and click Create New.


 2. In the Name field, enter  dualPrimaryGroup..
 3. In the Remote Groups area, click Add, and from the Remote Server dropdown, select fac.
 4. Click Add again. From the Remote Server dropdown select win2k16 and click OK.   
 5. Click OK, and then click OK again.

To configure the SSL VPN settings:

 1. Go to VPN > SSL-VPN Settings.


 2. From the Listen on Interface(s) dropdown select  port1.
 3. In the Listen on Port field enter  10443.
 4. Optionally, from the Server Certificate dropdown, select the authentication certificate if you have one for this SSL 
VPN portal.

FortiOS 6.4.6 Administration Guide 1630


Fortinet Technologies Inc.
VPN

 5. Under Authentication/Portal Mapping, set the default portal web-access.   


 a. Select All Other Users/Groups and click Edit.
 b. From the Portal dropdown, select web-access.
 c. Click OK.
 6. Create a web portal for PrimarySecondaryGroup.   
 a. Under Authentication/Portal Mapping, click Create New.
 b. Click Users/Groups and select dualPrimaryGroup.
 c. From the Portal dropdown, select full-access.
 d. Click OK.

To configure SSL VPN firewall policy:

 1. Go to Policy & Objects > Firewall Policy.   


 2. Click Create New to create a new policy, or double-click an existing policy to edit it.   

Name Enter a name for the policy.

Incoming Interface SSL-VPN tunnel interface (ssl.root)

Outgoing interface Set to the local network interface so that the remote user can access the internal 


network.
For this example, select port3.

Source In the Address tab, select SSLVPN_TUNNEL_ADDR1
In the User tab, select dualPrimaryGroup

Destination Select the internal protected subnet 192.168.20.0.

Schedule always

Service All

Action Accept

NAT Enable

 3. Configure any remaining firewall and security options as required.
 4. Click OK.

To configure SSL VPN using the CLI:

 1. Configure the internal interface and firewall address:  
config system interface
edit "port3"
set vdom "root"
set ip 192.168.20.5 255.255.255.0
set alias "internal"
next
end
config firewall address
edit "192.168.20.0"
set uuid cc41eec2-9645-51ea-d481-5c5317f865d0
set subnet 192.168.20.0 255.255.255.0
next
end

FortiOS 6.4.6 Administration Guide 1631


Fortinet Technologies Inc.
VPN

 2. Configure the RADIUS server:   
config user radius
edit "win2k16"
set server "192.168.20.6"
set secret <secret>
next
edit "fac"
set server "192.168.2.71"
set secret <secret>
next
end
 3. Add the RADIUS user to the user group:   
config user group
edit "dualPrimaryGroup"
set member "win2k16" “fac”
next
end
 4. Configure SSL VPN settings:   
config vpn ssl settings
set servercert "server_certificate"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set source-interface "port1"
set source-address "all"
set default-portal "web-access"
config authentication-rule
edit 1
set groups "dualPrimaryGroup"
set portal "full-access"
next
end
end
 5. Configure one SSL VPN firewall policy to allow remote users to access the internal network:   
config firewall policy
edit 1
set name "sslvpn-radius"
set srcintf "ssl.root"
set dstintf "port3"
set srcaddr "all"
set dstaddr "192.168.20.0"
set groups “dualPrimaryGroup”
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

To verify the connection:

User fackeith is a member of the FortiAuthenticator server only.
User radkeith is a member of both the NPS server and the FortiAuthenticator server, but has different passwords on 
each server.

FortiOS 6.4.6 Administration Guide 1632


Fortinet Technologies Inc.
VPN

Case 1: Connect to the SSLVPN tunnel using FortiClient with user FacAdmin:
# diagnose sniffer packet any 'port 1812' 4 0 l
interfaces=[any]
filters=[port 1812]
2020-05-15 17:21:31.217985 port3 out 192.168.20.5.11490 -> 192.168.20.6.1812: udp 118
2020-05-15 17:21:31.218091 port1 out 192.168.2.5.11490 -> 192.168.2.71.1812: udp 118
2020-05-15 17:21:31.219314 port3 in 192.168.20.6.1812 -> 192.168.20.5.11490: udp 20 <--
access-reject
2020-05-15 17:21:31.219519 port3 out 192.168.20.5.11490 -> 192.168.20.6.1812: udp 182
2020-05-15 17:21:31.220219 port3 in 192.168.20.6.1812 -> 192.168.20.5.11490: udp 42
2020-05-15 17:21:31.220325 port3 out 192.168.20.5.11490 -> 192.168.20.6.1812: udp 119
2020-05-15 17:21:31.220801 port3 in 192.168.20.6.1812 -> 192.168.20.5.11490: udp 20
2020-05-15 17:21:31.236009 port1 in 192.168.2.71.1812 -> 192.168.2.5.11490: udp 20 <--
access-accept
Access is denied by the NPS server because the user does not exist. However, access is accepted by 
FortiAuthenticator. The end result is the authentication is successful.
# get vpn ssl monitor
SSL VPN Login Users:
Index User Group Auth Type Timeout From HTTP
in/out HTTPS in/out
0 fackeith dualPrimaryGroup 2(1) 292 192.168.2.202 0/0
0/0
SSL VPN sessions:
Index User Group Source IP Duration I/O Bytes
Tunnel/Dest IP
0 fackeith dualPrimaryGroup 192.168.2.202 149 70236/4966
10.212.134.200

Case 2: Connect to the SSLVPN tunnel using FortiClient with user radkeith:
# diagnose sniffer packet any 'port 1812' 4 0 l
interfaces=[any]
filters=[port 1812]
2020-05-15 17:26:07.335791 port1 out 192.168.2.5.17988 -> 192.168.2.71.1812: udp 118
2020-05-15 17:26:07.335911 port3 out 192.168.20.5.17988 -> 192.168.20.6.1812: udp 118
2020-05-15 17:26:07.337659 port3 in 192.168.20.6.1812 -> 192.168.20.5.17988: udp 20 <--
access-accept
2020-05-15 17:26:07.337914 port3 out 192.168.20.5.17988 -> 192.168.20.6.1812: udp 182
2020-05-15 17:26:07.339451 port3 in 192.168.20.6.1812 -> 192.168.20.5.17988: udp 228
2020-05-15 17:26:08.352597 port1 in 192.168.2.71.1812 -> 192.168.2.5.17988: udp 20 <--
access-reject
There is a password mismatch for this user on the Secondary RADIUS server. However, even though the 
authentication was rejected by FortiAuthenticator, it was accepted by Windows NPS. Therefore, the end result is 
authentication successful.
# get vpn ssl monitor
SSL VPN Login Users:
Index User Group Auth Type Timeout From HTTP
in/out HTTPS in/out
0 radkeith dualPrimaryGroup 2(1) 290 192.168.2.202 0/0
0/0

FortiOS 6.4.6 Administration Guide 1633


Fortinet Technologies Inc.
VPN

SSL VPN sessions:


Index User Group Source IP Duration I/O Bytes
Tunnel/Dest IP
0 radkeith dualPrimaryGroup 192.168.2.202 142 64875/4966
10.212.134.200

SSL VPN with local user password policy

This is a sample configuration of SSL VPN for users with passwords that expire after two days. Users are warned after 
one day about the password expiring. The password policy can be applied to any local user password. The password 
policy cannot be applied to a user group or a local remote user such as LDAP/RADIUS/TACACS+.
In FortiOS 6.2, users are warned after one day about the password expiring and have one day to renew it. If the 
password expires, the user cannot renew the password and must contact the administrator for assistance.
In FortiOS 6.0/5.6, users are warned after one day about the password expiring and have to renew it. If the password 
expires, the user can still renew the password.

Sample topology

FortiOS 6.4.6 Administration Guide 1634


Fortinet Technologies Inc.
VPN

Sample configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address. The port1 interface connects to the internal network.
 a. Go to Network > Interfaces and edit the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.
 d. Click OK.
 e. Go to Policy & Objects > Address and create an address for internet subnet 192.168.1.0.
 2. Configure user and user group.
 a. Go to User & Authentication > User Definition to create a local user.
 b. Go to User & Authentication > User Groups to create a user group and add that local user to it.
 3. Configure and assign the password policy using the CLI.
 a. Configure a password policy that includes an expiry date and warning time. The default start time for the 
password is the time the user was created.
config user password-policy
edit "pwpolicy1"
set expire-days 2
set warn-days 1
next
end

 b. Assign the password policy to the user you just created.
config user local
edit "sslvpnuser1"
set type password
set passwd-policy "pwpolicy1"
next
end

 4. Configure SSL VPN web portal.
 a. Go to VPN > SSL-VPN Portals to edit the full-access portal.
This portal supports both web and tunnel mode.
 b. Disable Enable Split Tunneling so that all SSL VPN traffic goes through the FortiGate.
 5. Configure SSL VPN settings.
 a. Go to VPN > SSL-VPN Settings.
 b. Select the Listen on Interface(s), in this example, wan1.
 c. Set Listen on Port to 10443.
 d. Set Server Certificate to the authentication certificate.
 e. Under Authentication/Portal Mapping, set default Portal web-access for All Other Users/Groups.
 f. Create new Authentication/Portal Mapping for group sslvpngroup mapping portal full-access.
 6. Configure SSL VPN firewall policy.
 a. Go to Policy & Objects > Firewall Policy.
 b. Fill in the firewall policy name. In this example, sslvpn certificate auth.
 c. Incoming interface must be SSL-VPN tunnel interface(ssl.root).

FortiOS 6.4.6 Administration Guide 1635


Fortinet Technologies Inc.
VPN

 d. Set the Source Address to all and Source User to sslvpngroup.


 e. Set the Outgoing Interface to the local network interface so that the remote user can access the internal 
network. In this example, port1.
 f. Set Destination Address to the internal protected subnet 192.168.1.0.
 g. Set Schedule to always, Service to ALL, and Action to Accept.
 h. Enable NAT.
 i. Configure any remaining firewall and security options as desired.
 j. Click OK.

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address.
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 2. Configure internal interface and protected subnet, then connect the port1 interface to the internal network.
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end
config firewall address
edit "192.168.1.0"
set subnet 192.168.1.0 255.255.255.0
next
end

 3. Configure user and user group.
config user local
edit "sslvpnuser1"
set type password
set passwd your-password
next
end
config user group
edit "sslvpngroup"
set member "vpnuser1"
next
end

 4. Configure and assign the password policy.
 a. Configure a password policy that includes an expiry date and warning time. The default start time for the 
password is the time the user was created.
config user password-policy
edit "pwpolicy1"
set expire-days 2
set warn-days 1

FortiOS 6.4.6 Administration Guide 1636


Fortinet Technologies Inc.
VPN

next
end

 b. Assign the password policy to the user you just created.
config user local
edit "sslvpnuser1"
set type password
set passwd-policy "pwpolicy1"
next
end

 5. Configure SSL VPN web portal.
config vpn ssl web portal
edit "full-access"
set tunnel-mode enable
set web-mode enable
set ip-pools "SSLVPN_TUNNEL_ADDR1"
set split-tunneling disable
next
end

 6. Configure SSL VPN settings.
config vpn ssl settings
set servercert "server_certificate"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set source-interface "wan1"
set source-address "all"
set default-portal "web-access"
config authentication-rule
edit 1
set groups "sslvpngroup"
set portal "full-access"
next
end
end

 7. Configure one SSL VPN firewall policy to allow remote user to access the internal network.
config firewall policy
edit 1
set name "sslvpn web mode access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "192.168.1.0"
set groups “sslvpngroup”
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end

FortiOS 6.4.6 Administration Guide 1637


Fortinet Technologies Inc.
VPN

To see the results of web portal:

 1. From a remote device, use a web browser to log into the SSL VPN web portal http://172.20.120.123:10443.
 2. Log in using the sslvpnuser1 credentials.
When the warning time is reached, the user is prompted to enter a new password.
In FortiOS 6.2, when the password expires, the user cannot renew the password and must contact the 
administrator. 
In FortiOS 6.0/5.6, when the password expires, the user can still renew the password.
 3. On the FortiGate, go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.

To see the results of tunnel connection:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access > Configure VPN.
 3. Add a new connection.
 l Set the connection name.
 l Set Remote Gateway to the IP of the listening FortiGate interface, in this example, 172.20.120.123.
 4. Select Customize Port and set it to 10443.
 5. Save your settings.
 6. Log in using the sslvpnuser1 credentials.
When the warning time is reached, the user is prompted to enter a new password.

To check the SSL VPN connection using the GUI:

 1. Go to Dashboard > Network and expand the SSL-VPN widget to verify the user’s connection.


 2. Go to Log & Report > Forward Traffic to view the details of the SSL VPN traffic.

To check that login failed due to password expired on GUI:

 1. Go to Log & Report > Events and select VPN Events from the event type dropdown list to see the SSL VPN alert 


labeled ssl-login-fail.
 2. Click Details to see the log details about the Reason sslvpn_login_password_expired.

To check the web portal login using the CLI:

get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 sslvpnuser1 1(1) 229 10.1.100.254 0/0 0/0

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP

To check the tunnel login using the CLI:

get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 sslvpnuser1 1(1) 291 10.1.100.254 0/0 0/0

FortiOS 6.4.6 Administration Guide 1638


Fortinet Technologies Inc.
VPN

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP
0 sslvpnuser1 10.1.100.254 9 22099/43228 10.212.134.200

To check the FortiOS 6.2 login password expired event log:

FG201E4Q17901354 # execute log filter category event

FG201E4Q17901354 # execute log filter field subtype vpn

FG201E4Q17901354 # execute log filter field action ssl-login-fail

FG201E4Q17901354 # execute log display


1: date=2019-02-15 time=10:57:56 logid="0101039426" type="event" subtype="vpn" level="alert"
vd="root" eventtime=1550257076 logdesc="SSL VPN login fail" action="ssl-login-fail"
tunneltype="ssl-web" tunnelid=0 remip=10.1.100.254 user="u1" group="g1" dst_host="N/A"
reason="sslvpn_login_password_expired" msg="SSL user failed to logged in"

SSL VPN with certificate authentication

This is an example configuration of SSL VPN that requires users to authenticate using a client certificate. In this 
example, the server and client certificates are signed by the same Certificate Authority (CA).

Self-signed certificates are provided by default to simplify initial installation and testing. It is 
HIGHLY recommended that you acquire a signed certificate for your installation.
Continuing to use these certificates can result in your connection being compromised, allowing 
attackers to steal your information, such as credit card details.
For more information, please review the Use a non-factory SSL certificate for the SSL VPN 
portal on page 1559 and learn how to Procure and import a signed SSL certificate on page 
946.

Configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address. The port1 interface connects to the internal network.
 a. Go to Network > Interfaces and edit the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.

FortiOS 6.4.6 Administration Guide 1639


Fortinet Technologies Inc.
VPN

 d. Click OK.
 e. Go to Policy & Objects > Address and create an address for the internal subnet 192.168.1.0.
 2. Install the server certificate. The server certificate is used for authentication and for encrypting SSL VPN traffic.
 a. Go to System > Feature Visibility and ensure Certificates is enabled.
 b. Go to System > Certificates and select Import > Local Certificate.
 l Set Type to Certificate.
 l Choose the Certificate file and the Key file for your certificate, and enter the Password.
 l If required, you can change the Certificate Name.
The server certificate now appears in the list of Certificates. 
 3. Install the CA certificate.
The CA certificate is the certificate that signed both the server certificate and the user certificate. In this example, it 
is used to authenticate SSL VPN users.
 a. Go to System > Certificates and select Import > CA Certificate.
 b. Select Local PC and then select the certificate file.
The CA certificate now appears in the list of External CA Certificates. In this example, it is called CA_Cert_1.
 4. Configure PKI users and a user group.
To use certificate authentication, use the CLI to create PKI users.
config user peer
edit pki01
set ca CA_Cert_1
set subject User01
next
end

Ensure that the subject matches the name of the user certificate. In this example, User01.
When you have create a PKI user, a new menu is added to the GUI.
 a. Go to User & Authentication > PKI to see the new user.
 b. Edit the user account and expand Two-factor authentication.
 c. Enable Require two-factor authentication and set a password for the account.
 d. Go to User & Authentication > User > User Groups and create a group sslvpngroup.
 e. Add the PKI user pki01 to the group.
 5. Configure SSL VPN web portal.
 a. Go to VPN > SSL-VPN Portals to edit the full-access portal.
This portal supports both web and tunnel mode.
 b. Disable Enable Split Tunneling so that all SSL VPN traffic goes through the FortiGate.
 6. Configure SSL VPN settings.
 a. Go to VPN > SSL-VPN Settings.
 b. Select the Listen on Interface(s), in this example, wan1.
 c. Set Listen on Port to 10443.
 d. Set Server Certificate to the authentication certificate.
 e. Enable Require Client Certificate.
 f. Under Authentication/Portal Mapping, set default Portal web-access for All Other Users/Groups.
 g. Create new Authentication/Portal Mapping for group sslvpngroup mapping portal full-access.
 7. Configure SSL VPN firewall policy.
 a. Go to Policy & Objects > Firewall Policy.
 b. Fill in the firewall policy name. In this example, sslvpn certificate auth.
 c. Incoming interface must be SSL-VPN tunnel interface(ssl.root).

FortiOS 6.4.6 Administration Guide 1640


Fortinet Technologies Inc.
VPN

 d. Set the Source Address to all and Source User to sslvpngroup.


 e. Set the Outgoing Interface to the local network interface so that the remote user can access the internal 
network. In this example, port1.
 f. Set Destination Address to the internal protected subnet 192.168.1.0.
 g. Set Schedule to always, Service to ALL, and Action to Accept.
 h. Enable NAT.
 i. Configure any remaining firewall and security options as desired.
 j. Click OK.

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address.
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 2. Configure internal interface and protected subnet., then connect the port1 interface to the internal network.
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end
config firewall address
edit "192.168.1.0"
set subnet 192.168.1.0 255.255.255.0
next
end

 3. Install the server certificate.
The server certificate is used for encrypting SSL VPN traffic and will be used for authentication.  While it is easier to 
install the server certificate from GUI, the CLI can be used to import a p12 certificate from a TFTP server.
To import a p12 certificate, put the certificate server_certificate.p12 on your TFTP server, then run following 
command on the FortiGate:
execute vpn certificate local import tftp server_certificate.p12 <your tftp_server> p12
<your password for PKCS12 file>

To check that the server certificate is installed:
show vpn certificate local server_certificate

 4. Install the CA certificate.
The CA certificate is the certificate that signed both the server certificate and the user certificate. In this example, it 
is used to authenticate SSL VPN users. While it is easier to install the CA certificate from GUI, the CLI can be used 
to import a CA certificates from a TFTP server.
To import a CA certificate, put the CA certificate  on your TFTP server, then run following command on the FortiGate:
execute vpn certificate ca import tftp <your CA certificate name> <your tftp server>

To check that a new CA certificate is installed:

FortiOS 6.4.6 Administration Guide 1641


Fortinet Technologies Inc.
VPN

show vpn certificate ca

 5. Configure PKI users and a user group.
config user peer
edit pki01
set ca CA_Cert_1
set subject User01
set two-factor enable
set passwd <your-password>
next
end
config user group
edit "sslvpngroup"
set member "pki01"
next
end

 6. Configure SSL VPN web portal.
config vpn ssl web portal
edit "full-access"
set tunnel-mode enable
set web-mode enable
set ip-pools "SSLVPN_TUNNEL_ADDR1"
set split-tunneling disable
next
end

 7. Configure SSL VPN settings.
config vpn ssl settings
set servercert "server_certificate"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set source-interface "wan1"
set source-address "all"
set default-portal "web-access"
set reqclientcert enable
config authentication-rule
edit 1
set groups "sslvpngroup"
set portal "full-access"
next
end
end

 8. Configure one SSL VPN firewall policy to allow remote user to access the internal network.
config firewall policy
edit 1
set name "sslvpn web mode access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "192.168.1.0"
set groups “sslvpngroup”
set action accept
set schedule "always"
set service "ALL"

FortiOS 6.4.6 Administration Guide 1642


Fortinet Technologies Inc.
VPN

set nat enable


next
end

Installation

To use the user certificate, you must first install it on the user’s PC. When the user tries to authenticate, the user 
certificate is checked against the CA certificate to verify that they match.
Every user should have a unique user certificate. This allows you to distinguish each user and revoke a specific user’s 
certificate, such as if a user no longer has VPN access.

To install the user certificate on Windows 7, 8, and 10:

 1. Double-click the certificate file to open the Import Wizard.


 2. Use the Import Wizard to import the certificate into the Personal store of the current user.

To install the user certificate on Mac OS X:

 1. Open the certificate file, to open Keychain Access.


 2. Double-click the certificate.
 3. Expand Trust and select Always Trust.

To see the results of tunnel connection:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access > Configure VPN.
 3. Add a new connection.
 l Set VPN Type to SSL VPN.
 l Set Remote Gateway to the IP of the listening FortiGate interface, in this example, 172.20.120.123.
 4. Select Customize Port and set it to 10443.
 5. Enable Client Certificate and select the authentication certificate.
 6. Save your settings.
 7. Use the credentials you've set up to connect to the SSL VPN tunnel.
If the certificate is correct, you can connect.

To see the results of web portal:

 1. In a web browser, log into the portal http://172.20.120.123:10443. 
A message requests a certificate for authentication.
 2. Select the user certificate.
 3. Enter your user credentials.
If the certificate is correct, you can connect to the SSL VPN web portal.

To check the SSL VPN connection using the GUI:

 1. Go to VPN > Monitor > SSL-VPN Monitor to verify the list of SSL users.


 2. Go to Log & Report > Events and select VPN Events from the event type dropdown list to view the details for the 
SSL connection log.

FortiOS 6.4.6 Administration Guide 1643


Fortinet Technologies Inc.
VPN

To check the SSL VPN connection using the CLI:

get vpn ssl monitor


SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 pki01,cn=User01 1(1) 229 10.1.100.254 0/0 0/0
1 pki01,cn=User01 1(1) 291 10.1.100.254 0/0 0/0

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP
0 pki01,cn=User01 10.1.100.254 9 22099/43228 10.212.134.200

Dynamic address support for SSL VPN policies

Dynamic SSO user groups can be used in place of address objects when configuring SSL VPN policies. This allows 
dynamic IP addresses to be used in SSL VPN policies. A remote user group can be used for authentication while an 
FSSO group is separately used for authorization. Using a dummy policy for remote user authentication and a policy for 
FSSO group authorization, FSSO can be used with SSL VPN tunnels 
This image shows the authentication and authorization flow:

In this example, FortiAuthenticator is used as a RADIUS server. It uses a remote AD/LDAP server for authentication, 
then returns the authentication results to the FortiGate. This allows the client to have a dynamic IP address after 
successful authentication.

FortiOS 6.4.6 Administration Guide 1644


Fortinet Technologies Inc.
VPN

First, on the LDAP server, create two users each in their own group, user142 in group pc_group1, and user143 in group 
pc_group2.

Configure the FortiAuthenticator

To add a remote LDAP server and users on the FortiAuthenticator:

 1. Go to Authentication > Remote Auth. Servers > LDAP.


 2. Click Create New.
 3. Set the following: 
 l Name: ad_ldap_60
 l Primary server name/IP: 172.16.200.60
 l Base distinguished name: dc=fsso-qa,dc=com
 l Bind type: Regular
 l Username: cn=administrator,cn=User
 l Password: <enter a password>
 4. Click OK.
 5. Edit the new LDAP server.
 6. Import the remote LDAP users.
 7. Edit each user to confirm that they have the RADIUS attribute Acct-Interim-Interval. This attribute is used by 

FortiOS 6.4.6 Administration Guide 1645


Fortinet Technologies Inc.
VPN

FortiGate to send interim update account messages to the RADIUS server.

To create a RADIUS client for FortiGate as a remote authentication server:

 1. Go to Authentication > RADIUS Service > Clients.


 2. Click Create New.
 3. Set the following:
 l Name: fsso_ldap
 l Client address: Range 172.16.200.1~172.16.200.10
 l Secret: <enter a password>
 4. In the Realms table, set the realm to the LDAP server that was just added: ad_ldap_60.
 5. Click OK.
FortiAuthenticator can now be used as a RADIUS server, and the authentication credentials all come from the 
DC/LDAP server.

Fortinet Single Sign-On Collector Agent

To configure the Fortinet Single Sign-On Collector Agent:

 1. Select Require authenticated connection from FortiGate and enter a Password.


 2. Click Advanced Settings.
 3. Select the RADIUS Accounting tab.

FortiOS 6.4.6 Administration Guide 1646


Fortinet Technologies Inc.
VPN

 4. Select Enable RADIUS accounting server and set the Shared secret.

 5. Click OK, then click Save&close.
The collector agent can now accept accounting requests from FortiGate, and retrieve the IP addresses and 
usernames of SSL VPN client from the FortiGate with accounting request messages.

Configure the FortiGate

To configure the FortiGate in the CLI:

 1. Create a Fortinet Single Sign-On Agent fabric connector:
config user fsso
edit "AD_CollectAgent"
set server "172.16.200.60"
set password 123456
next
end

 2. Add the RADIUS server:
config user radius
edit "rad150"
set server "172.16.200.150"
set secret 123456
set acct-interim-interval 600
config accounting-server
edit 1
set status enable
set server "172.16.200.60"
set secret 123456
next
end
next
end

 3. Create a user group for the RADIUS server:
config user group
edit "rad_group"
set member "rad150"
next
end

FortiOS 6.4.6 Administration Guide 1647


Fortinet Technologies Inc.
VPN

 4. Create user groups for each of the FSSO groups:
config user group
edit "fsso_group1"
set group-type fsso-service
set member "CN=PC_GROUP1,OU=TESTING,DC=FSSO-QA,DC=COM"
next
edit "fsso_group2"
set group-type fsso-service
set member "CN=PC_GROUP2,OU=TESTING,DC=FSSO-QA,DC=COM"
next
end

 5. Create an SSL VPN portal and assign the RADIUS user group to it:
config vpn ssl web portal
edit "testportal"
set tunnel-mode enable
set ipv6-tunnel-mode enable
set web-mode enable
...
next
end
config vpn ssl settings
...
set default-portal "full-access"
config authentication-rule
edit 1
set groups "rad_group"
set portal "testportal"
next
end
end

 6. Create firewall addresses:
config firewall address
edit "none"
set subnet 0.0.0.0 255.255.255.255
next
edit "pc4"
set subnet 172.16.200.44 255.255.255.255
next
edit "pc5"
set subnet 172.16.200.55 255.255.255.255
next
end

 7. Create one dummy policy for authentication only, and two normal policies for authorization:
config firewall policy
edit 1
set name "sslvpn_authentication"
set srcintf "ssl.vdom1"
set dstintf "port1"
set srcaddr "all"
set dstaddr "none"
set action accept
set schedule "always"

FortiOS 6.4.6 Administration Guide 1648


Fortinet Technologies Inc.
VPN

set service "ALL"


set logtraffic all
set groups "rad_group"
set nat enable
next
edit 3
set name "sslvpn_authorization1"
set srcintf "ssl.vdom1"
set dstintf "port1"
set srcaddr "all"
set dstaddr "pc4"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set groups "fsso_group1"
set nat enable
next
edit 4
set name "sslvpn_authorization2"
set srcintf "ssl.vdom1"
set dstintf "port1"
set srcaddr "all"
set dstaddr "pc5"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set groups "fsso_group2"
set nat enable
next
end

To create an FSSO agent fabric connector in the GUI:

 1. Go to Security Fabric > External Connectors.


 2. Click Create New.
 3. Click Fortinet Single Sign-On Agent.
 4. Enter the name and Primary FSSO agent information.

 5. Click Apply & Refresh.


The FSSO groups are retrieved from the collector agent.

FortiOS 6.4.6 Administration Guide 1649


Fortinet Technologies Inc.
VPN

To add the RADIUS server in the GUI:

 1. Go to User & Authentication > RADIUS Servers.


 2. Click Create New.
 3. Enter a name for the server.
 4. Enter the IP/Name and Secret for the primary server.
 5. Click Test Connectivity to ensure that there is a successful connection.

 6. Click OK.
 7. Configure an accounting server with the following CLI command:
config user radius
edit rad150
set acct-interim-interval 600
config accounting-server
edit 1
set status enable
set server 172.16.200.60
set secret *********
next
end
next
end

To create a user group for the RADIUS server in the GUI:

 1. Go to User & Authentication > User Groups.


 2. Click Create New.
 3. Enter a name for the group and set the Type to Firewall.

FortiOS 6.4.6 Administration Guide 1650


Fortinet Technologies Inc.
VPN

 4. Add the RADIUS server as a remote group.

 5. Click OK.

To create user groups for each of the FSSO groups in the GUI:

 1. Go to User & Authentication > User Groups.


 2. Click Create New.
 3. Enter a name for the group and set the Type to Fortinet Single Sign-On (FSSO).
 4. Add PC_GROUP1 as a member:
CN=PC_GROUP1,OU=TESTING,DC=FSSO-QA,DC=COM

 5. Click OK.
 6. Add a second user group with PC_GROUP2 as a member:
CN=PC_GROUP1,OU=TESTING,DC=FSSO-QA,DC=COM

 7. Click OK.

To create an SSL VPN portal and assign the RADIUS user group to it in the GUI:

 1. Go to VPN > SSL VPN Portals.


 2. Click Create New.
 3. Configure the portal, then click OK.
 4. Go to VPN > SSL VPN Settings.
 5. Configure the required settings.

FortiOS 6.4.6 Administration Guide 1651


Fortinet Technologies Inc.
VPN

 6. Create an Authentication/Portal Mapping table entry:


 a. Click Create New.
 b. Set User/Groups to rad_group.
 c. Set Portal to testportal.
 d. Click OK.
 7. Click OK.

To create policies for authentication and authorization in the GUI:

 1. Go to Policy & Objects > Firewall Policy.


 2. Configure a dummy policy for authentication. Set the destination to none so that traffic is not allowed through the 
FortiGate, and add rad_group as a source.
 3. Configure two authorization policies, with the FSSO groups as sources.

Confirmation

On Client 1, log in to FortiClient using user142. Traffic can go to pc4 (172.16.200.44), but cannot go to pc5 
(172.16.200.55).
On Client 2, log in to FortiClient using user143. Traffic can go to pc5 (172.16.200.55), but cannot go to pc4 
(172.16.200.44).
On the FortiGate, check the authenticated users list and the SSL VPN status:
# diagnose firewall auth list

10.212.134.200, USER142
type: fsso, id: 0, duration: 173, idled: 173
server: AD_CollectAgent
packets: in 0 out 0, bytes: in 0 out 0
user_id: 16777229
group_id: 3 33554434
group_name: fsso_group1 CN=PC_GROUP1,OU=TESTING,DC=FSSO-QA,DC=COM

10.212.134.200, user142
type: fw, id: 0, duration: 174, idled: 174
expire: 259026, allow-idle: 259200
flag(80): sslvpn
server: rad150
packets: in 0 out 0, bytes: in 0 out 0
group_id: 4
group_name: rad_group

10.212.134.201, USER143
type: fsso, id: 0, duration: 78, idled: 78

FortiOS 6.4.6 Administration Guide 1652


Fortinet Technologies Inc.
VPN

server: AD_CollectAgent
packets: in 0 out 0, bytes: in 0 out 0
group_id: 1 33554435
group_name: fsso_group2 CN=PC_GROUP2,OU=TESTING,DC=FSSO-QA,DC=COM

10.212.134.201, user143
type: fw, id: 0, duration: 79, idled: 79
expire: 259121, allow-idle: 259200
flag(80): sslvpn
server: rad150
packets: in 0 out 0, bytes: in 0 out 0
group_id: 4
group_name: rad_group

----- 4 listed, 0 filtered ------


# get vpn ssl monitor
SSL VPN Login Users:
Index User Auth Type Timeout From HTTP in/out HTTPS in/out
0 user142 2(1) 600 10.1.100.145 0/0 0/0
1 user143 2(1) 592 10.1.100.254 0/0 0/0

SSL VPN sessions:


Index User Source IP Duration I/O Bytes Tunnel/Dest IP
0 user142 10.1.100.145 104 32190/16480 10.212.134.200
1 user143 10.1.100.254 11 4007/4966 10.212.134.201

SSL VPN multi-realm

This sample shows how to create a multi-realm SSL VPN that provides different portals for different user groups.

Sample topology

FortiOS 6.4.6 Administration Guide 1653


Fortinet Technologies Inc.
VPN

Sample configuration

WAN interface is the interface connected to ISP. This example shows static mode. You can also use DHCP or PPPoE 
mode. The SSL VPN connection is established over the WAN interface.

The split tunneling routing address cannot explicitly use an FQDN or an address group that 
includes an FQDN. To use an FQDN, leave the routing address blank and apply the FQDN as 
the destination address of the firewall policy.

To configure SSL VPN using the GUI:

 1. Configure the interface and firewall address. The port1 interface connects to the internal network.
 a. Go to Network > Interfaces and edit the wan1 interface.
 b. Set IP/Network Mask to 172.20.120.123/255.255.255.0.
 c. Edit port1 interface and set IP/Network Mask to 192.168.1.99/255.255.255.0.
 d. Click OK.
 e. Go to Policy & Objects > Address and create an address for internet QA_subnet with subnet 192.168.1.0/24 
and HR_subnet with subnet 10.1.100.0/24.
 2. Configure user and user group.
 a. Go to User & Authentication > User Definition to create local users qa-user1 and hr-user1.
 b. Go to User & Authentication > User Groups to create separate user groups for web-only and full-access 
portals:
 l QA_group with member qa-user1.
 l HR_group with the member hr-user1.
 3. Configure SSL VPN web portal.
 a. Go to VPN > SSL-VPN Portals to create portal qa-tunnel.
 b. Enable Tunnel Mode.
 c. Create a portal hr-web with Web Mode enabled.
 4. Configure SSL VPN realms.
 a. Go to System > Feature Visibility to enable SSL-VPN Realms.
 b. Go to VPN > SSL-VPN Realms to create realms for qa and hr.
 c. (Optional) To access each realm with FQDN instead of the default URLs https://172.20.120.123:10443/hr and  
https://172.20.120.123:10443/qa, you can configure a virtual-host for the realm in the CLI.
config vpn ssl web realm
edit hr
set virtual-host hr.mydomain.com
next
edit qa
set virtual-host qa.mydomain.com
next
end
Where mydomain.com is the name of your domain. Ensure FQDN resolves to the FortiGate wan1 interface 
and that your certificate is a wildcard certificate.
 5. Configure SSL VPN settings.
 a. Go to VPN > SSL-VPN Settings.
 b. For Listen on Interface(s), select wan1.
 c. Set Listen on Port to 10443.
 d. Choose a certificate for Server Certificate. The default is Fortinet_Factory.

FortiOS 6.4.6 Administration Guide 1654


Fortinet Technologies Inc.
VPN

 e. In Authentication/Portal Mapping All Other Users/Groups, set the Portal to web-access.


 f. Create new Authentication/Portal Mapping for group QA_group mapping portal qa-tunnel.
 g. Specify the realm qa.
 h. Add another entry for group HR_group mapping portal hr-web.
 i. Specify the realm hr.
 6. Configure SSL VPN firewall policy.
 a. Go to Policy & Objects > Firewall Policy.
 b. Create a firewall policy for QA access.
 c. Fill in the firewall policy name. In this example, QA sslvpn tunnel mode access.
 d. Incoming interface must be SSL-VPN tunnel interface(ssl.root).
 e. Choose an Outgoing Interface. In this example, port1.
 f. Set the Source to all and group to QA_group.
 g. In this example, the Destination is the internal protected subnet QA_subnet.
 h. Set Schedule to always, Service to ALL, and Action to Accept.
 i. Click OK.
 j. Create a firewall policy for HR access.
 k. Fill in the firewall policy name. In this example, HR sslvpn web mode access.
 l. Incoming interface must be SSL-VPN tunnel interface(ssl.root).
 m. Choose an Outgoing Interface. In this example, port1.
 n. Set the Source to all and group to HR_group.
 o. In this example, the Destination is the internal protected subnet HR_subnet.
 p. Set Schedule to always, Service to ALL, and Action to Accept.
 q. Click OK.

To configure SSL VPN using the CLI:

 1. Configure the interface and firewall address.
config system interface
edit "wan1"
set vdom "root"
set ip 172.20.120.123 255.255.255.0
next
end

 2. Configure internal interface and protected subnet, then connect the port1 interface to the internal network.
config system interface
edit "port1"
set vdom "root"
set ip 192.168.1.99 255.255.255.0
next
end
config firewall address
edit "QA_subnet"
set subnet 192.168.1.0 255.255.255.0
next
edit "HR_subnet"
set subnet 10.1.100.0 255.255.255.0

FortiOS 6.4.6 Administration Guide 1655


Fortinet Technologies Inc.
VPN

next
end

 3. Configure user and user group.
config user local
edit "qa_user1"
set type password
set passwd your-password
next
end
config user group
edit "QA_group"
set member "qa_user1"
next
end
config user local
edit "hr_user1"
set type password
set passwd your-password
next
end
config user group
edit "HR_group"
set member "hr_user1"
next
end

 4. Configure SSL VPN web portal.
config vpn ssl web portal
edit "qa-tunnel"
set tunnel-mode enable
set ip-pools "SSLVPN_TUNNEL_ADDR1"
set split-tunneling enable
set split-tunneling-routing-address "QA_subnet"
next
end
config vpn ssl web portal
edit "hr-web"
set web-mode enable
next
end

 5. Configure SSL VPN realms.   
config vpn ssl web realm
edit hr
set virtual-host hr.mydomain.com
next
edit qa
set virtual-host qa.mydomain.com
next
end
The set virtual-host setting is optional. For example:
config vpn ssl web realm
edit hr
next

FortiOS 6.4.6 Administration Guide 1656


Fortinet Technologies Inc.
VPN

edit qa
next
end
 6. Configure SSL VPN settings.
config vpn ssl settings
set servercert "Fortinet_Factory"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set tunnel-ipv6-pools "SSLVPN_TUNNEL_IPv6_ADDR1"
set source-interface "wan1"
set source-address "all"
set source-address6 "all"
set default-portal "full-access"
config authentication-rule
edit 1
set groups "QA_group"
set portal "qa-tunnel"
set realm qa
next
edit 2
set groups "HR_group"
set portal "hr-web"
set realm hr
next
end
end

 7. Configure two SSL VPN firewall policies to allow remote QA user to access internal QA network and HR user to 
access HR network.
config firewall policy
edit 1
set name "QA sslvnpn tunnel access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "QA_subnet"
set groups “QA_group”
set action accept
set schedule "always"
set service "ALL"
next
edit 2
set name "HR sslvpn web access"
set srcintf "ssl.root"
set dstintf "port1"
set srcaddr "all"
set dstaddr "HR_subnet"
set groups “HR_group”
set action accept
set schedule "always"
set service "ALL"
next
end

FortiOS 6.4.6 Administration Guide 1657


Fortinet Technologies Inc.
VPN

To see the results for QA user:

 1. Download FortiClient from www.forticlient.com.
 2. Open the FortiClient Console and go to Remote Access.
 3. Add a new connection.
 l Set VPN Type to SSL VPN.
 l Set Remote Gateway to https://172.20.120.123:10443/qa..
 l If a virtual-host is specified, use the FQDN defined for the realm  (qa.mydomain.com).
 4. Select Customize Port and set it to 10443.
 5. Save your settings.
 6. Use the credentials you've set up to connect to the SSL VPN tunnel.
If the user's computer has antivirus software, a connection is established; otherwise FortiClient shows a compliance 
warning.
 7. After connection, traffic to subnet 192.168.1.0 goes through the tunnel.
 8. On the FortiGate, go to Dashboard > Network and expand the SSL-VPN widget to verify the list of SSL users.
 9. On the FortiGate, go to VPN > Monitor > SSL-VPN Monitor to verify the list of SSL users.
 10. On the FortiGate, go to Log & Report > Forward Traffic and view the details of the traffic.

To see the results for HR user:

 1. In a web browser, log into the portal https://172.20.120.123:10443/hr using the credentials you've set up.
 2. Alternatively, if a virtual-host is specified, use the FQDN defined for the realm (hr.mydomain.com).
 3. On the FortiGate, go to Dashboard > Network and expand the SSL-VPN widget to verify the list of SSL users.  
 4. Go to Log & Report > Forward Traffic and view the details of the traffic.

NAS-IP support per SSL-VPN realm

For RADIUS authentication and authorization, the RADIUS client (the FortiGate) passes the username, password, and 
NAS-IP to the RADIUS server in its access request. The RADIUS server authenticates and authorizes based on this 
information. Each RADIUS server can be configured with multiple NAS-IPs for authenticating different groups and NAS 
clients.
On the FortiGate, configuring the NAS-IP in the realm settings overrides the RADIUS server setting, allowing multiple 
NAS-IPs to be mapped to the same RADIUS server.

In this example, the user wants to present one FortiGate VDOM with different NAS-IPs to a single RADIUS server based 
on specific rules.

FortiOS 6.4.6 Administration Guide 1658


Fortinet Technologies Inc.
VPN

To configure the SSL-VPN to use the NAS-IP in the realm settings:

 1. Configure a RADIUS user and add it to a group:
config user radius
edit "fac150"
set server "172.16.200.150"
set secret ********
set nas-ip 172.16.200.2
config accounting-server
edit 1
set status enable
set server "172.16.200.150"
set secret ********
next
end
next
end
config user group
edit "radgrp"
set member "fac150"
next
end

 2. Configure a realm for the user with a different NAS-IP:
config vpn ssl web realm
edit "realm1"
set login-page '.......'
set radius-server "fac150"
set nas-ip 10.1.100.2
next
end

 3. Configure SSL-VPN with an authentication rule that includes the user group and the realm:
config vpn ssl settings
...
config authentication-rule
edit 1
set groupd "radgrp"
set portal "testportal1"
set realm "realm1"
next
end
end

 4. Create a firewall policy:
config firewall policy
edit 1
set name "sslvpn1"
...
set srcintf "ssl.vdom1"
set groups "radgrp"
next
end

Because the RADIUS server and NAS-IP are specified in realm1, its NAS-IP is used for authentication.

FortiOS 6.4.6 Administration Guide 1659


Fortinet Technologies Inc.
VPN

SSL VPN to IPsec VPN

This is a sample configuration of site-to-site IPsec VPN that allows access to the remote endpoint via SSL VPN.
This example uses a pre-existing user group, a tunnel mode SSL VPN with split tunneling, and a route-based IPsec VPN 
between two FortiGates. All sessions must start from the SSL VPN interface.
If you want sessions to start from the FGT_2 subnet, you need more policies. Also, if the remote subnet is beyond FGT_
2 (if there are multiple hops), you need to include the SSL VPN subnet in those routers as well.

Sample topology

FortiOS 6.4.6 Administration Guide 1660


Fortinet Technologies Inc.
VPN

Sample configuration

To configure the site-to-site IPsec VPN on FGT_1:

 1. Go to VPN > IPsec Wizard.


 2. In the VPN Setup pane:
 a. Specify the VPN connection Name as to_FGT_2.
 b. Select Site to Site.
 c. Click Next.

 3. In the Authentication pane:  
 a. Enter the IP Address to the Internet-facing interface.
 b. For Authentication Method, click Pre-shared Key and enter the Pre-shared Key.
 c. Click Next.

 4. In the Policy & Routing pane:


 a. Set the Local Interface to the internal interface.
 b. Set the Local Subnets to include the internal and SSL VPN subnets for FGT_1.
 c. Set Remote Subnets to include the internal subnet for FGT_2.

FortiOS 6.4.6 Administration Guide 1661


Fortinet Technologies Inc.
VPN

 d. Click Create.

A confirmation screen shows a summary of the configuration including the firewall address groups for both the local and 
remote subnets, static routes, and security policies.

To configure SSL VPN settings:

 1. Go to VPN > SSL-VPN Settings.


 2. Set Listen on Interface(s) to wan1.
 3. To avoid port conflicts, set Listen on Port to 10443.
 4. For Restrict Access, select Allow access from any host.
 5. In the Tunnel Mode Client Settings section, select Specify custom IP ranges and include the SSL VPN subnet range 
created by the IPsec Wizard.
 6. In the Authentication/Portal Mapping section, add the VPN user group to the tunnel-access Portal. Set All Other
Users/Groups to the web-access Portal.

FortiOS 6.4.6 Administration Guide 1662


Fortinet Technologies Inc.
VPN

It is HIGHLY recommended that you acquire a signed certificate for your installation. 
Please review the SSL VPN best practices on page 1558 and learn how to Procure and 
import a signed SSL certificate on page 946.

 7. Click Apply.

To configure SSL VPN portal:

 1. Go to VPN > SSL-VPN Portals.


 2. Select tunnel-access and click Edit.
 3. Turn on Enable Split Tunneling so that only traffic intended for the local or remote networks flow through FGT_1 and 
follows corporate security profiles.
 4. For Routing Address, add the local and remote IPsec VPN subnets created by the IPsec Wizard.

FortiOS 6.4.6 Administration Guide 1663


Fortinet Technologies Inc.
VPN

 5. For Source IP Pools, add the SSL VPN subnet range created by the IPsec Wizard.

 6. Click OK.

To add policies to FGT_1:

 1. Go to Policy & Objects > Firewall Policy.


 2. Click Create New to create a policy that allows SSL VPN users access to the IPsec VPN tunnel.
 3. For Incoming Interface, select ssl.root.
 4. For Outgoing Interface, select the IPsec tunnel interface to_FGT_2.
 5. Set the Source to all and the VPN user group.
 6. Set Destination to the remote IPsec VPN subnet.
 7. Specify the Schedule.
 8. Set the Service to ALL.

FortiOS 6.4.6 Administration Guide 1664


Fortinet Technologies Inc.
VPN

 9. In the Firewall/Network Options section, disable NAT.

 10. Click OK.

To configure the site-to-site IPsec VPN on FGT_2:

 1. Go to VPN > IPsec Wizard.


 2. In the VPN Setup pane:
 a. Specify the VPN connection Name as to FGT_1.
 b. Select Site to Site.
 c. Click Next.

 3. In the Authentication pane:  
 a. Enter the IP Address to the Internet-facing interface.
 b. For Authentication Method, click Pre-shared Key and enter the Pre-shared Key of the FGT_1.

FortiOS 6.4.6 Administration Guide 1665


Fortinet Technologies Inc.
VPN

 c. Click Next.

 4. In the Policy & Routing pane:


 a. Set the Local Interface to the internal interface.
 b. Set the Local Subnets to include the internal and SSL VPN subnets for FGT_2.
 c. Set Remote Subnets to include the internal subnet for FGT_1.
 d. Click Create.

A confirmation screen shows a summary of the configuration including the firewall address groups for both the local and 
remote subnets, static routes, and security policies.

FortiOS 6.4.6 Administration Guide 1666


Fortinet Technologies Inc.
VPN

To check the results:

 1. Go to Monitor > IPsec Monitor.


 2. Select the tunnel and click Bring Up.

 3. Verify that the Status changes to Up.

 4. Configure the SSL VPN connection on the user's FortiClient and connect to the tunnel.

 5. On the user's computer, use CLI to send a ping though the tunnel to the remote endpoint to confirm access.

FortiOS 6.4.6 Administration Guide 1667


Fortinet Technologies Inc.
VPN

 6. Go to Monitor > Routing Monitor and verify that the routes for the IPsec and SSL VPNs are added.

 7. Go to Monitor > SSL-VPN Monitor and verify user connectivity.

 8. Go to Log & Report > Events, select VPN Events from the event type dropdown list, and view the IPsec and SSL 


tunnel statistics.

FortiOS 6.4.6 Administration Guide 1668


Fortinet Technologies Inc.
VPN

 9. Go to VPN > VPN Location Map and view VPN connection activity.

 10. Go to FortiView > Policies and view policy usage.

Troubleshooting

To troubleshoot on FGT_1, use the following CLI commands:

diagnose debug reset


diagnose debug flow show function-name enable
diagnose debug flow show iprope enable
diagnose debug flow filter addr 172.16.200.55
diagnose debug flow filter proto 1
diagnose debug flow trace start 2
diagnose debug enable

To troubleshoot using ping:

 1. Send a ping through the SSL VPN tunnel to 172.16.200.55 and analyze the output of the debug.
 2. Disable the debug output with this command: diagnose debug disable.
If traffic is entering the correct VPN tunnel on FGT_1, then run the same commands on FGT_2 to check whether the 
traffic is reaching the correct tunnel. If it is reaching the correct tunnel, confirm that the SSL VPN tunnel range is 
configured in the remote side quick mode selectors.

FortiOS 6.4.6 Administration Guide 1669


Fortinet Technologies Inc.
VPN

To troubleshoot using a sniffer command:

diagnose sniff packet any "host 172.16.200.44 and icmp" 4

To troubleshoot IPsec VPN issues, use the following commands on either FortiGate:

diagnose debug reset


diagnose vpn ike gateway clear
diagnose debug application ike -1
diagnose debug enable

SSL VPN protocols

The following topics provide information about SSL VPN protocols:
 l TLS 1.3 support on page 1670
 l SMBv2 support on page 1671

TLS 1.3 support

FortiOS supports TLS 1.3 for SSL VPN.

TLS 1.3 support requires IPS engine 4.205 or later and endpoints running FortiClient 6.2.0 or 
later.

To establish a client SSL VPN connection with TLS 1.3 to the FortiGate:

 1. Enable TLS 1.3 support using the CLI:
config vpn ssl setting
set ssl-max-proto-ver tls1-3
set ssl-min-proto-ver tls1-3
end
 2. Configure the SSL VPN and firewall policy:
 a. Configure the SSL VPN settings and firewall policy as needed.
 3. For Linux clients, ensure OpenSSL 1.1.1a is installed:
 a. Run the following commands in the Linux client terminal:   
root@PC1:~/tools# openssl
OpenSSL> version
If OpenSSL 1.1.1a is installed, the system displays a response like the following:
OpenSSL 1.1.1a 20 Nov 2018
 4. For Linux clients, use OpenSSL with the TLS 1.3 option to connect to SSL VPN:
 a. Run the following command in the Linux client terminal:
#openssl s_client -connect 10.1.100.10:10443 -tls1_3
 5. Ensure the SSL VPN connection is established with TLS 1.3 using the CLI:
# diagnose debug application sslvpn -1
# diagnose debug enable
The system displays a response like the following:
[207:root:1d]SSL established: TLSv1.3 TLS_AES_256_GCM_SHA384

FortiOS 6.4.6 Administration Guide 1670


Fortinet Technologies Inc.
VPN

Deep inspection (flow-based)

FortiOS supports TLS 1.3 for policies that have the following security profiles applied:
 l Web filter profile with flow-based inspection mode enabled.
 l Deep inspection SSL/SSH inspection profile.
For example, when a client attempts to access a website that supports TLS 1.3, FortiOS sends the traffic to the IPS 
engine. The IPS engine then decodes TLS 1.3 and the client is able to access the website.

SMBv2 support

On all FortiGate models, SMBv2 is enabled by default for SSL VPN. Client PCs can access the SMBv2 server using SSL 
VPN web-only mode.

To configure SMBv2:

 1. Set the minimum and maximum SMB versions.
config vpn ssl web portal
edit portal-name
set smb-min-version smbv2
set smb-max-version smbv3
next
end

 2. Configure SSL VPN and firewall policies as usual.
 3. Connect to the SSL VPN web portal and create an SMB bookmark for the SMBv2 server.
 4. Click the bookmark to connect to the SMBv2 server.
 5. On the FortiGate, use package capture to verify that SMBv2 works:

SSL VPN troubleshooting

The following topics provide information about SSL VPN troubleshooting:
 l Debug commands on page 1671
 l Troubleshooting common issues on page 1672

Debug commands

SSL VPN debug command

Use the following diagnose commands to identify SSL VPN issues. These commands enable debugging of SSL VPN 
with a debug level of -1 for detailed results.
diagnose debug application sslvpn -1
diagnose debug enable

The CLI displays debug output similar to the following:

FortiOS 6.4.6 Administration Guide 1671


Fortinet Technologies Inc.
VPN

FGT60C3G10002814 # [282:root]SSL state:before/accept initialization (172.20.120.12)


[282:root]SSL state:SSLv3 read client hello A (172.20.120.12)
[282:root]SSL state:SSLv3 write server hello A (172.20.120.12)
[282:root]SSL state:SSLv3 write change cipher spec A (172.20.120.12)
[282:root]SSL state:SSLv3 write finished B (172.20.120.12)
[282:root]SSL state:SSLv3 flush data (172.20.120.12)
[282:root]SSL state:SSLv3 read finished A:system lib(172.20.120.12)
[282:root]SSL state:SSLv3 read finished A (172.20.120.12)
[282:root]SSL state:SSL negotiation finished successfully (172.20.120.12)
[282:root]SSL established: DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1

To disable the debug:


diagnose debug disable
diagnose debug reset

Remote user authentication debug command

Use the following diagnose commands to identify remote user authentication issues.
diagnose debug application fnbamd -1
diagnose debug reset

Troubleshooting common issues

To troubleshoot getting no response from the SSL VPN URL:

 1. Go to VPN > SSL-VPN Settings.


 a. Check the SSL VPN port assignment.
 b. Check the Restrict Access setting to ensure the host you are connecting from is allowed.
 2. Go to Policy > Firewall Policy.
 a. Check that the policy for SSL VPN traffic is configured correctly.
 b. Check the URL you are attempting to connect to. It should follow this pattern:
https://<FortiGate IP>:<Port>

 c. Check that you are using the correct port number in the URL. Ensure FortiGate is reachable from the computer.
ping <FortiGate IP>

 d. Check the browser has TLS 1.1, TLS 1.2, and TLS 1.3 enabled.

To troubleshoot FortiGate connection issues:

 1. Check the Release Notes to ensure that the FortiClient version is compatible with your version of FortiOS.
 2. FortiClient uses IE security setting, In IE Internet options > Advanced > Security, check that Use TLS 1.1 and Use
TLS 1.2 are enabled.
 3. Check that SSL VPN ip-pools has free IPs to sign out. The default ip-poolsSSLVPN_TUNNEL_ADDR1 has 10 IP 
addresses.
 4. Export and check FortiClient debug logs.
 a. Go to File > Settings.
 b. In the Logging section, enable Export logs.
 c. Set the Log Level to Debug and select Clear logs.

FortiOS 6.4.6 Administration Guide 1672


Fortinet Technologies Inc.
VPN

 d. Try to connect to the VPN.
 e. When you get a connection error, select Export logs.

To troubleshoot SSL VPN hanging or disconnecting at 98%:

 1. A new SSL VPN driver was added to FortiClient 5.6.0 and later to resolve SSL VPN connection issues. If your 
FortiOS version is compatible, upgrade to use one of these versions.
 2. Latency or poor network connectivity can cause the login timeout on the FortiGate. In FortiOS 5.6.0 and later, use 
the following commands to allow a user to increase the SSL VPN login timeout setting.
config vpn ssl settings
set login-timeout 180 (default is 30)
set dtls-hello-timeout 60 (default is 10)
end

To troubleshoot tunnel mode connections shutting down after a few seconds:

This might occur if there are multiple interfaces connected to the Internet, for example, SD-WAN. This can cause the 
session to become “dirty”. To allow multiple interfaces to connect, use the following CLI commands.
If you are using a FortiOS 6.0.1 or later:
config system interface
edit <name>
set preserve-session-route enable
next
end

If you are using a FortiOS 6.0.0 or earlier:
config vpn ssl settings
set route-source-interface enable
end

To troubleshoot users being assigned to the wrong IP range:

 1. Go to VPN > SSL-VPN Portals and VPN > SSL-VPN Settings and ensure the same IP Pool is used in both places.


Using the same IP Pool prevents conflicts. If there is a conflict, the portal settings are used.

To troubleshoot slow SSL VPN throughput:

Many factors can contribute to slow throughput.
This recommendation tries to improve throughput by using the FortiOS Datagram Transport Layer Security (DTLS) 
tunnel option, available in FortiOS 5.4 and above.
DTLS allows SSL VPN to encrypt traffic using TLS and uses UDP as the transport layer instead of TCP. This avoids 
retransmission problems that can occur with TCP-in-TCP.
FortiClient 5.4.0 to 5.4.3 uses DTLS by default. FortiClient 5.4.4 and later uses normal TLS, regardless of the DTLS 
setting on the FortiGate.
To use DTLS with FortiClient:
 1. Go to File > Settings and enable Preferred DTLS Tunnel.
To enable DTLS tunnel on FortiGate, use the following CLI commands:

FortiOS 6.4.6 Administration Guide 1673


Fortinet Technologies Inc.
VPN

config vpn ssl settings


set dtls-tunnel enable
end

FortiOS 6.4.6 Administration Guide 1674


Fortinet Technologies Inc.
User & Authentication

In User & Authentication, you can control network access for different users and devices in your network. FortiGate 


authentication controls system access by user group. By assigning individual users to the appropriate user groups you 
can control each user’s access to network resources. You can define local users and peer users on the FortiGate unit. 
You can also define user accounts on remote authentication servers and connect them to FortiOS.
You can control network access for different device types in your network by doing the following:
 l Identifying and monitoring the types of devices connecting to your network
 l Using MAC address based access control to allow or deny individual devices
 l Using Telemetry data received from FortiClient endpoints to construct a policy to deny access to endpoints with 
known vulnerabilities or to quarantine compromised endpoints
The following sections provide information about users and devices:
 l Endpoint control and compliance on page 1675
 l User Definition on page 1683
 l User Groups on page 1685
 l Guest Management on page 1686
 l LDAP Servers on page 1689
 l RADIUS Servers on page 1699
 l TACACS+ Servers on page 1713
 l SAML on page 1714
 l Authentication Settings on page 1718
 l FortiTokens on page 1720
 l PKI on page 1747
 l Configuring the maximum log in attempts and lockout period on page 1746
 l Configuring firewall authentication on page 1747

Endpoint control and compliance

The section contains the following topics:
 l Per-policy disclaimer messages on page 1675
 l Compliance on page 1677
 l FortiGuard distribution of updated Apple certificates on page 1682

Per-policy disclaimer messages

FortiOS supports a customizable captive portal to direct users to install or enable required software.
Per-policy custom disclaimers in each VDOM are supported. For example, you may want to configure three firewall 
policies, each of which matches traffic from endpoints with different FortiClient statuses:

FortiOS 6.4.6 Administration Guide 1675


Fortinet Technologies Inc.
User & Authentication

Endpoint status FortiOS behavior

Endpoint does not have FortiClient installed. Traffic matches a firewall policy that displays an in-browser warning 
to install FortiClient from the provided link.

Endpoint has FortiClient installed, registered  Traffic matches a dynamic firewall policy which allows the endpoint to 
to EMS, and connected to the FortiGate. reach its destination via this policy.

Endpoint is deregistered from EMS and  Traffic matches another dynamic firewall policy that displays warning 
disconnected from the FortiGate. to register FortiClient to EMS.

To enable per-policy disclaimer messages:

config user setting


set auth-cert "Fortinet_Factory"
set per-policy-disclaimer enable
end

To configure per-policy disclaimers in the GUI:

 1. Ensure the per-policy disclaimer messages option is enabled.
 2. Go to Policy & Objects > Firewall Policy.
 3. Edit the policy that applies when an endpoint does not have FortiClient installed.
 4. Under Disclaimer Options, enable Display Disclaimer.
 5. Enable Customize Messages then click Edit Disclaimer Message. The default disclaimer message is shown.
 6. Edit the message to warn users to install FortiClient, and provide the FortiClient download link.

 7. Click Save.
 8. Repeat the above steps for each policy that requires a custom disclaimer message.

To configure per-policy disclaimers in the CLI:

config firewall policy


edit 1

FortiOS 6.4.6 Administration Guide 1676


Fortinet Technologies Inc.
User & Authentication

set name "111"


set srcintf "port12"
set dstintf "port11"
set srcaddr "all"
set dstaddr "pc155_address"
set action accept
set schedule "always"
set service "ALL"
set wsso disable
set groups "ems_03_group"
set disclaimer enable
set replacemsg-override-group "test"
set nat enable
next
edit 4
set name "44"
set srcintf "port12"
set dstintf "port11"
set srcaddr "all"
set dstaddr "pc5-address"
set action accept
set schedule "always"
set service "ALL"
set wsso disable
set groups "ems_03_group"
set disclaimer enable
set replacemsg-override-group "test2"
set nat enable
next
edit 6
set name "66"
set srcintf "port12"
set dstintf "port11"
set srcaddr "all"
set dstaddr "all"
set status disable
set schedule "always"
set service "ALL"
set logtraffic all
set fsso disable
set block-notification enable
set replacemsg-override-group "endpoint-override"
next
end

Compliance

The following topics provide information about compliance in FortiOS.
 l FortiSandbox Cloud region selection on page 1678
 l FortiGate VM unique certificate on page 1680
 l Running a file system check automatically on page 1681

FortiOS 6.4.6 Administration Guide 1677


Fortinet Technologies Inc.
User & Authentication

FortiSandbox Cloud region selection

In FortiOS, FortiSandbox Cloud services are decoupled from the FortiGate Cloud license. This allows you to specify a 
FortiSandbox Cloud region and take advantage of FortiSandbox features without a FortiGate Cloud account.
The following topology demonstrates how FortiGate Cloud Logs and FortiSandbox Cloud are separated in FortiOS:

To view the FortiGate Cloud Log and FortiSandbox licenses:

 1. Go to Dashboard > Status.


 2. The FortiGate Cloud widget shows separate license statuses for Log Retention and FortiSandbox Cloud.
In the following example, the FortiGate Cloud account is using a free license, and FortiSandbox Cloud is using a 
paid license:

To obtain a FortiSandbox Cloud license:

 1. Go to System > FortiGuard.


 2. In the License Information table, find  FortiSandbox Cloud and click Activate.
 3. Complete the prompts to obtain your license.   

The FortiSandbox Cloud license is linked to your antivirus license, so they will expire at the 
same time.

FortiOS 6.4.6 Administration Guide 1678


Fortinet Technologies Inc.
User & Authentication

If the FortiGate is not registered with a paid antivirus license, the FortiGate will use the free FortiGate Cloud license.  
This license limits the FortiGate to 100 FortiSandbox Cloud submissions per day.

To set the FortiSandbox Cloud region in the GUI:

 1. Go to Security Fabric > Fabric Connectors and double-click the FortiSandbox Cloud card.


 2. Select a region from the Region dropdown.
The following regions are available:
 l Europe
 l Global
 l Japan
 l US

 3. Click OK.

To set the FortiSandbox Cloud region in the CLI:

FGT_PROXY (global) # execute forticloud-sandbox region


0 Europe
1 Global
2 Japan
3 US
Please select cloud sandbox region[0-3]:3
Cloud sandbox region is selected: US

The separation of the FortiGate Cloud Log and FortiSandbox services are visible in the following example:
FGT_PROXY (global) # diagnose test application forticldd 3
Debug zone info:
Domain:FortiCloud ReleaseQA Global - 172.16.95.16
Home log server: 172.16.95.93:514
Alt log server: 172.16.95.27:514
Active Server IP: 172.16.95.93
Active Server status: up
Log quota: 102400MB
Log used: 0MB
Daily volume: 20480MB
fams archive pause: 0
APTContract : 1
APT server: 172.16.102.52:514
APT Altserver: 172.16.102.51:514
Active APTServer IP: 172.16.102.52
Active APTServer status: up

FortiOS 6.4.6 Administration Guide 1679


Fortinet Technologies Inc.
User & Authentication

FortiGate VM unique certificate

To safeguard against certificate compromise, FortiGate VM and FortiAnalyzer VM use the same deployment model as 
FortiManager VM where the license file contains a unique certificate tied to the serial number of the virtual device.
A hardware appliance usually comes with a BIOS certificate with a unique serial number that identifies the hardware 
appliance. This built-in BIOS certificate is different from a firmware certificate. A firmware certificate is distributed in all 
appliances with the same firmware version.
Using a BIOS certificate with a built-in serial number provides a high trust level for the other side in X.509 authentication.
Since a VM appliance has no BIOS certificate, a signed VM license can provide an equivalent of a BIOS certificate. The 
VM license assigns a serial number in the BIOS equivalent certificate. This gives the certificate an abstract access 
ability, which is similar to a BIOS certificate with the same high trust level.

This feature is only supported in new, registered VM licenses.

Sample configurations

Depending on the firmware version and VM license, the common name (CN) on the certificate will be configured 
differently.

To view validated certificates:

 1. Go to System > Certificates.


 2. Double-click on a VM certificate. There are two VM certificates: 
 l Fortinet_Factory 
 l  Fortinet_Factory_Backup
The Certificate Detail Information window displays.
 l If you are using new firmware (6.2.0 and later) with a new VM license, the CN becomes the FortiGate VM serial 
number.

FortiOS 6.4.6 Administration Guide 1680


Fortinet Technologies Inc.
User & Authentication

 l If you are using new firmware (6.2.0) with an old VM license, the CN remains as FortiGate. It does not change 
to the VM serial number.

 l If you are using old firmware (6.0.2) with a new VM license, the CN remains as FortiGate.

Running a file system check automatically

There is an option in FortiOS to enable automatic file system checks  if the FortiGate shuts down ungracefully.
By default, the automatic file system check is disabled. When an administrator logs in after an ungraceful shutdown, a 
warning message  appears advising them  to manually run a file system check.
GUI warning:

FortiOS 6.4.6 Administration Guide 1681


Fortinet Technologies Inc.
User & Authentication

CLI warning:
WARNING: File System Check Recommended! Unsafe reboot may have caused inconsistency in disk
drive.
It is strongly recommended that you check file system consistency before proceeding.
Please run 'execute disk scan 17'
Note: The device will reboot and scan during startup. This may take up to an hour

Enabling automatic file system checks

You can enable automatic file system checks in both the GUI and CLI.

To enable automatic file system checks in the GUI:

 1. Go to System > Settings.


 2. In the Start Up Settings section, enable Auto file system check.
 3. Click Apply.

To enable automatic file system checks using the CLI:

config system global


set autorun-log-fsck enable
end

FortiGuard distribution of updated Apple certificates

Push notifications for iPhone (for the purpose of two-factor authentication) require a TLS server certificate to 
authenticate to Apple. As this certificate is only valid for one year, a service extension allows FortiGuard to distribute 
updated TLS server certificates to FortiGate when needed.

FortiOS 6.4.6 Administration Guide 1682


Fortinet Technologies Inc.
User & Authentication

FortiGuard update service updates local Apple push notification TLS server certificates when the local certificate is 
expired. FortiGuard update service also reinstalls certificates when the certificates are lost.
You can verify that the feature is working on the FortiGate by using the CLI shell.

To verify certificate updates:

 1. Using FortiOS CLI shell, verify that all certificates are installed:   
/data/etc/apns # ls -al
drwxr-xr-x 2 0 0 Tue Jan 15 08:42:39 2019 1024 .
drwxr-xr-x 12 0 0 Tue Jan 15 08:45:00 2019 2048 ..
-rw-r--r-- 1 0 0 Sat Jan 12 00:06:30 2019 2377 apn-dev-cert.pem
-rw-r--r-- 1 0 0 Sat Jan 12 00:06:30 2019 1859 apn-dev-key.pem
-rw-r--r-- 1 0 0 Sat Jan 12 00:06:30 2019 8964 apn-dis-cert.pem
-rw-r--r-- 1 0 0 Sat Jan 12 00:06:30 2019 4482 apn-dis-key.pem

 2. Rename all current Apple certificates.
Apple push notification no longer works after you rename the certificates.
/data/etc/apns # mv apn-dis-cert.pem apn-dis-cert.pem.save
/data/etc/apns # mv apn-dev-key.pem apn-dev-key.pem.save
/data/etc/apns # mv apn-dev-cert.pem apn-dev-cert.pem.save
/data/etc/apns # mv apn-dis-key.pem apn-dis-key.pem.save
/data/etc/apns # ls -al
drwxr-xr-x 2 0 0 Tue Jan 15 08:51:15 2019 1024 .
drwxr-xr-x 12 0 0 Tue Jan 15 08:45:00 2019 2048 ..
-rw-r--r-- 1 0 0 Sat Jan 12 00:06:30 2019 2377 apn-dev-cert.pem.save
-rw-r--r-- 1 0 0 Sat Jan 12 00:06:30 2019 1859 apn-dev-key.pem.save
-rw-r--r-- 1 0 0 Sat Jan 12 00:06:30 2019 8964 apn-dis-cert.pem.save
-rw-r--r-- 1 0 0 Sat Jan 12 00:06:30 2019 4482 apn-dis-key.pem.save

 3. Run a FortiGuard update, and verify that all certificates are installed again:   
/data/etc/apns # ls -al
drwxr-xr-x 2 0 0 Tue Jan 15 08:56:20 2019 1024 .
drwxr-xr-x 12 0 0 Tue Jan 15 08:56:15 2019 2048 ..
-rw-r--r-- 1 0 0 Sat Jan 12 00:06:30 2019 2377 apn-dev-cert.pem.save
-rw-r--r-- 1 0 0 Sat Jan 12 00:06:30 2019 1859 apn-dev-key.pem.save
-rw-r--r-- 1 0 0 Tue Jan 15 08:56:20 2019 2167 apn-dis-cert.pem <-- downloaded
from FortiGuard
-rw-r--r-- 1 0 0 Sat Jan 12 00:06:30 2019 8964 apn-dis-cert.pem.save
-rw-r--r-- 1 0 0 Tue Jan 15 08:56:20 2019 1704 apn-dis-key.pem <-- downloaded
from FortiGuard
-rw-r--r-- 1 0 0 Sat Jan 12 00:06:30 2019 4482 apn-dis-key.pem.save
-rw-r--r-- 1 0 0 Tue Jan 15 08:56:20 2019 41 apn-version.dat <-- downloaded
from FortiGuard
/data/etc/apns #

User Definition

The following topics provide information about user definition:
 l User types on page 1684
 l Removing a user on page 1684

FortiOS 6.4.6 Administration Guide 1683


Fortinet Technologies Inc.
User & Authentication

User types

You can configure FortiOS users in FortiOS or on an external authentication server. The following summarizes user 
account types and authentication in FortiOS:

User type Authentication

Local Username and password must match a user account stored in FortiOS. 
Authentication by FortiOS security policy.

Remote Username and password must match a user account stored in FortiOS and on the 
remote authentication server. FortiOS supports LDAP, RADIUS, and TACACS+ 
servers.

Authentication server A FortiOS user group can include user accounts or groups that exist on a remote 
authentication server.

FSSO Microsoft Windows or Novell network users can use their network credentials to 
access resources through FortiOS. You can control access using FSSO user 
groups that contain Windows or Novell user groups as members.

PKI/peer Digital certificate holder who authenticates using a client certificate. No password 
is required unless two-factor authentication is enabled.

IM FortiOS does not authenticate IM users. FortiOS allows or blocks each IM user 
from accessing IM protocols. A global policy for each IM protocol governs 
unknown users' access to these protocols.

Guest Guest user accounts are temporary. The account expires after a selected period 
of time. See Guest Management on page 1686.

Removing a user

When a user account is no longer in use, you should delete it. If any configuration objects, such as a user group, 
reference the user account, you must remove the references before deleting the user.

To remove references to a user:

 1. Go to User & Authentication > User Definition.


 2. If the value in the Ref. column is not 0, click it.
 3. FortiOS displays a list of object references to the user. Use this information to remove these references.

To remove a user using the GUI:

 1. Go to User & Authentication > User Definition.


 2. Select the desired user.
 3. Click Delete, then OK.

To remove a user using the CLI:

config user local


delete exampleuser

FortiOS 6.4.6 Administration Guide 1684


Fortinet Technologies Inc.
User & Authentication

end

User Groups

A user group is a list of users. Security policies and some VPN configurations only allow access to specified user groups. 
This restricted access enforces role-based access control (RBAC) to your organization's network and resources. Users 
must be in a group and that group must be part of the security policy.
In most cases, FortiOS authenticates a user by requesting their username and password. FortiOS checks local user 
accounts first. Then, if it does not find a match, FortiOS checks the RADIUS, LDAP, and TACACS+ servers that belong 
to the user group. Authentication succeeds when FortiOS finds a matching username and password. If the user belongs 
to multiple groups on a server, FortiOS matches those groups as well.

FortiOS does not allow username overlap between RADIUS, LDAP, and TACACS+ servers.

Configuring POP3 authentication

FortiOS can authenticate users who have accounts on POP3 or POP3s email servers.

To configure POP3 authentication:

config user pop3


edit pop3_server1
set server pop3.fortinet.com
set secure starttls
set port 110
next
end

To configure a POP3 user group:

A user group can list up to six POP3 servers as members.
config user group
edit pop3_grp
set member pop3_server1
next
end

FortiOS 6.4.6 Administration Guide 1685


Fortinet Technologies Inc.
User & Authentication

Guest Management

Configuring guest access

A visitor to your premises may need a user account on your network during their stay. If you are hosting a large event, 
such as a conference, you may need to create many temporary accounts for the attendees. You can create many guest 
accounts simultaneously using randomly generated user IDs and passwords to reduce your workload for these large 
events.
The following describes managing guest access:
 1. Create one or more guest user groups. All members of a group have the same user ID type, password type, 
information fields used, and type and time of expiry.
 2. Create guest accounts.
 3. Use captive portal authentication and select the appropriate guest group.
 4. The guest receives an email, SMS message, or printout containing their user ID and password from the FortiOS 
administrator.
 5. The guest logs onto the network using the provided credentials.
 6. After the configured expiry time, the credentials are no longer valid.
This configuration consists of the following steps:
 1. Add an SMS service.
 2. Create a guest management administrator.
 3. Create a guest user group.
 4. Create guest user accounts.

To add an SMS service:

To send SMS notifications to guest users, add an email to SMS service to your FortiGate using the following commands:
config system sms-server
edit <server-name>
set mail-server <server-name>
next
end

To create a guest management administrator:

 1. Go to System > Administrators.


 2. Click Create New > Administrator.
 3. Enable Restrict admin to guest account provisioning only.
 4. For Guest Group, select the desired guest groups.

To create a guest user group:

The guest group configuration determines the provided fields when you create a guest user account.
 1. Go to User & Authentication > User Groups.
 2. Click Create New.
 3. For Type, select Guest.

FortiOS 6.4.6 Administration Guide 1686


Fortinet Technologies Inc.
User & Authentication

 4. If desired, enable Batch Guest Account Creation. When this is enabled, the following is true:


 l User IDs and passwords are auto-generated.
 l User accounts only have the User ID, Password, and Expiration fields. You can only edit the Expiration field. If 
the expiry time is a duration, such as eight hours, the countdown starts at initial login.
 l You can print the account information to provide to the guest. Guests do not receive email or SMS notifications.
 5. For User ID, select one of the following:   

Option Description

Email Guest's email address.

Auto Generated FortiOS creates a random user ID for the guest.

Specify The administrator assigns a user ID to the guest.

 6. For Password, select one of the following:   

Option Description

Disable No password.

Auto Generated FortiOS creates a random password for the guest.

Specify The administrator assigns a password to the guest.

 7. For Start Countdown, select one of the following:   

Option Description

On Account Creation FortiOS counts expiry time from time of account creation.

After First Login FortiOS counts expiry time from the guest's first login.

 8. For Time, configure the expiry time. You can change this for individual users.
 9. Configure any other field as required, then click OK.

Creating guest user accounts

To create a guest user account:

 1. Go to User & Authentication > Guest Management.


 2. Select the desired guest group.
 3. Click Create New.
 4. Configure the guest as desired.
 5. Click OK.

To create multiple guest user accounts automatically:

 1. Go to User & Authentication > Guest Management.


 2. Select the desired guest group. This group must have Batch Guest Account Creation enabled.
 3. Click Create New > Multiple Users.
 4. Enter the Number of Accounts.
 5. If desired, change the expiry.
 6. Click OK.

FortiOS 6.4.6 Administration Guide 1687


Fortinet Technologies Inc.
User & Authentication

Retail environment guest access

Businesses such as coffee shops provide free Internet access for customers. In this scenario, you do not need to 
configure guest management, as customers can access the WiFi access point without logon credentials.
However, consider that the business wants to contact customers with promotional offers to encourage future patronage. 
You can configure an email collection portal to collect customer email addresses for this purpose. You can configure a 
security policy to grant network access only to users who provide a valid email address. The first time a customer’s 
device attempts  WiFi connection, FortiOS requests an email address, which it validates. The customers' subsequent 
connections go directly to the Internet without interruption.
This configuration consists of the following steps:
 1. Creating an email collection portal on page 1688
 2. Creating a security policy on page 1688
 3. Checking for harvested emails on page 1689

Creating an email collection portal

The customer’s first contact with your network is a captive portal that presents a webpage requesting an email address. 
When FortiOS has validated the email address, the customer’s device MAC address is added to the Collected Emails 
device group.
This example modifies the freewifi WiFi interface to present an email collection captive portal.

To create an email collection portal:

config wireless-controller vap


edit freewifi
set security captive-portal
set portal-type email-collect
next
end

Creating a security policy

You must configure a security policy that allows traffic to flow from the WiFi SSID to the internet interface only for 
members of the Collected Emails device group. This policy must be listed first. Unknown devices are not members of the 
Collected Emails device group, so they do not match the policy.

To create a security policy:

config firewall policy


edit 3
set srcintf "freewifi"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set nat enable
set email-collect enable

FortiOS 6.4.6 Administration Guide 1688


Fortinet Technologies Inc.
User & Authentication

next
end

Checking for harvested emails

To check for harvested emails in the GUI:

 1. Go to Dashboard > Users & Devices.


 2. Hover over the Device Inventory widget and click Expand to Full Screen.

To check for harvested emails in the CLI:

# diagnose user device list


hosts
vd 0 d8:d1:aa:aa:69:0f gen 35 req 30 redir 1 last 43634s 7-11_2-int
ip 10.0.2.101 ip6 fe80::dad2:cbff:feab:610f
type 2 'iPhone' src http c 1 gen 29
os 'iPhone' version 'iOS 6.0.1' src http id 358 c 1
email '[email protected]'
vd 0 74:e1:bb:bb:69:f9 gen 36 req 20 redir 0 last 39369s 7-11_2-int
ip 10.0.2.100 ip6 fe80::76e2:b6ff:fedd:69f9
type 1 'iPad' src http c 1 gen 5
os 'iPad' version 'iOS 6.0' src http id 293 c 1
host 'Joes’s-iPad' src dhcp
email '[email protected]'

LDAP Servers

The following topics provide information about LDAP servers:
 l FSSO polling connector agent installation on page 1689
 l Enabling Active Directory recursive search on page 1695
 l Configuring LDAP dial-in using a member attribute on page 1696
 l Configuring wildcard admin accounts on page 1697

FSSO polling connector agent installation

This topic gives an example of configuring a local FSSO agent on the FortiGate. The agent actively pools Windows 
Security Event log entries on Windows Domain Controller (DC) for user log in information. The FSSO user groups can 
then be used in a firewall policy.
This method does not require any additional software components, and all the configuration can be done on the 
FortiGate.

To configure a local FSSO agent on the FortiGate:

 1. Configure an LDAP server on the FortiGate on page 1690
 2. Configure a local FSSO polling connector on page 1690
 3. Add the FSSO groups to a policy on page 1692

FortiOS 6.4.6 Administration Guide 1689


Fortinet Technologies Inc.
User & Authentication

Configure an LDAP server on the FortiGate

To configure an LDAP server on the FortiGate:

 1. Go to User & Authentication > LDAP Servers.


 2. Click Create New.
 3. Fill in the required information:   

 l Common Name Identifier must be changed from the default value because, in a Windows environment, 


sAMAccountName must be unique, and cn must not be unique.
 l Distinguished Name is the location in the LDAP tree where the FortiGate will start searching for user and group 
objects.
 l Active Directory requires authentication by default, so the Bind Type is Regular, and the user account log in 
information is entered in the requisite fields. Optionally, click Test User Credentials to ensure that the account 
has sufficient access rights.
 4. Click OK.
The FortiGate checks the connection, and updates the Connection Status. The connection must be successful 
before configuring the FSSO polling connector.

Configure a local FSSO polling connector

To configure a local FSSO polling connector:

 1. Go to Security Fabric > External Connectors.


 2. Click Create New.
 3. In the Endpoint/Identity section, select Poll Active Directory Server.

FortiOS 6.4.6 Administration Guide 1690


Fortinet Technologies Inc.
User & Authentication

 4. Fill in the required information.

 5. Select the just created LDAP server from the LDAP Server dropdown list.


The structure of the LDAP tree will be shown in the Users/Groups section.
 6. Go to the Groups tab.
 7. Select the required groups, right click on them, and select Add Selected. Multiple groups can be selected at one 
time by holding the CTRL or SHIFT keys. The groups list can be filtered or searched to limit the number of groups 
that are displayed.   

 8. Go to the Selected tab and verify that all the required groups are listed. Unneeded groups can be removed by right 
clicking and selecting Remove Selected.

FortiOS 6.4.6 Administration Guide 1691


Fortinet Technologies Inc.
User & Authentication

 9. Click OK.
 10. Go back to Security Fabric > External Connectors.
 11. There should be two new connectors:

 l The Local FSSO Agent is the backend process that is automatically created when the first FSSO polling 


connector is created.
 l The Active Directory Connector is the front end connector that can be configured by FortiGate administrators.
To verify the configuration, hover the cursor over the top right corner of the connector; a popup window will show the 
currently selected groups. A successful connection is also shown by a green up arrow in the lower right corner of the 
connector.
If you need to get log in information from multiple DCs, then you must configure other Active Directory connectors 
for each additional DC to be monitored.

Add the FSSO groups to a policy

FSSO groups can be used in a policy by either adding them to the policy directly, or by adding them to a local user group 
and then adding the group to a policy.

To add the FSSO groups to a local user group:

 1. Go to User & Authentication > User Groups.


 2. Click Create New.
 3. Enter a name for the group in the Name field.
 4. Set the Type to Fortinet Single Sign-On (FSSO).

FortiOS 6.4.6 Administration Guide 1692


Fortinet Technologies Inc.
User & Authentication

 5. Add the FSSO groups as members.

 6. Click OK.
 7. Add the local FSSO group to a policy.

To add the FSSO groups directly to a firewall policy:

 1. Go to Policy & Objects > Firewall Policy.


 2. Click Create New.
 3. Click in the Source field.
 4. In the Select Entries pane, select the User tab.
 5. Select the FSSO groups.

 6. Configure the remaining settings as required.
 7. Click OK.

FortiOS 6.4.6 Administration Guide 1693


Fortinet Technologies Inc.
User & Authentication

Troubleshooting

If an authenticated AD user cannot access the internet or pass the firewall policy, verify the local FSSO
user list:

# diagnose debug authd fsso list


----FSSO logons----
IP: 10.1.100.188 User: test2 Groups: CN=group2,OU=Testing,DC=Fortinet-FSSO,DC=COM
Workstation: MemberOf: CN=group2,OU=Testing,DC=Fortinet-FSSO,DC=COM
Total number of logons listed: 1, filtered: 0
----end of FSSO logons----

 1. Check that the group in MemberOf is allowed by the policy.
 2. If the expected AD user is not in list, but other users are, it means that either:   
 l The FortiGate missed the log in event, which can happen if many users log in at the same time, or
 l The user's workstation is unable to connect to the DC, and is currently logged in with cached credentials, so 
there is no entry in the DC security event log.
 3. If there are no users in the local FSSO user list:
 a. Ensure that the local FSSO agent is working correctly:
# diagnose debug enable
# diagnose debug authd fsso server-status

Server Name Connection Status Version Address


----------- ----------------- ------- -------
FGT_A (vdom1) # Local FSSO Agent connected FSAE server 1.1 127.0.0.1

The connection status must be connected.
 b. Verify the Active Directory connection status:
# diagnose debug fsso-polling detail 1
AD Server Status (connected):
ID=1, name(10.1.100.131),ip=10.1.100.131,source(security),users(0)
port=auto username=Administrator
read log eof=1, latest logon timestamp: Fri Jul 26 10:36:20 2019

polling frequency: every 10 second(s) success(274), fail(0)


LDAP query: success(0), fail(0)
LDAP max group query period(seconds): 0
LDAP status: connected

Group Filter: CN=group2,OU=Testing,DC=Fortinet-


FSSO,DC=com+CN=group21,OU=Testing,DC=Fortinet-FSSO,DC=COM

If the polling frequency shows successes and failures, that indicates sporadic network problems or a very busy 
DC. If it indicates no successes or failures, then incorrect credentials could be the issue.
If the LDAP status is connected, then the FortiGate can access the configured LDAP server. This is required for 
AD group membership lookup of authenticated users because the Windows Security Event log does not 
include group membership information. The FortiGate sends an LDAP search for group membership of 
authenticated users to the configure LDAP server. 
FortiGate adds authenticated users to the local FSSO user list only if the group membership is one of the 
groups in Group Filter.
 4. If necessary, capture the output of the local FortiGate daemon that polls Windows Security Event logs:
# diagnose debug application fssod -1

FortiOS 6.4.6 Administration Guide 1694


Fortinet Technologies Inc.
User & Authentication

This output contains a lot of detailed information which can be captured to a text file.

Limitations

 l NTLM based authentication is not supported.
 l If there are a large number of user log ins at the same time, the FSSO daemon may miss some. Consider using 
FSSO agent mode if this will be an issue. See Public and private SDN connectors on page 281 for information.
 l The FSSO daemon does not support all of the security log events that are supported by other FSSO scenarios. For 
example, only Kerberos log in events 4768 and 4769 are supported.

Enabling Active Directory recursive search

By default, nested groups (groups that are members or other groups) are not searched in Windows Active Directory (AD) 
LDAP servers because this can slow down the group membership search. There is an option in FortiOS to enable the 
searching of nested groups for user group memberships on AD LDAP servers. 

This option is not available for other LDAP servers, such as OpenLDAP-based  servers.

The default behavior does not include nested groups:
config user ldap
edit "ldap-ad"
set server "10.1.100.131"
set cnid "cn"
set dn "dc=fortinet-fsso,dc=com"
set type regular
set username "cn=Administrator,cn=users,dc=fortinet-fsso,dc=com"
set password XXXXXXXXXXXXXXXXXXXXXXXX
next
end

The default search results only show groups that have the user as member, and no groups that have groups as 
members:
diagnose test authserver ldap ldap-ad nuser nuser
authenticate 'nuser' against 'ldap-ad' succeeded!
Group membership(s) - CN=nested3,OU=Testing,DC=Fortinet-FSSO,DC=COM
CN=Domain Users,CN=Users,DC=Fortinet-FSSO,DC=COM

To enable recursive search to include nested groups in the results:

config user ldap


edit "ldap-ad"
set server "10.1.100.131"
set cnid "cn"
set dn "dc=fortinet-fsso,dc=com"
set type regular
set username "cn=Administrator,cn=users,dc=fortinet-fsso,dc=com"
set password XXXXXXXXXXXXXXXXXXXXXXXX
set search-type recursive

FortiOS 6.4.6 Administration Guide 1695


Fortinet Technologies Inc.
User & Authentication

next
end

The search results now include groups that have other groups as members:
diagnose test authserver ldap ldap-ad nuser nuser
authenticate 'nuser' against 'ldap-ad' succeeded!
Group membership(s) - CN=nested3,OU=Testing,DC=Fortinet-FSSO,DC=COM
CN=Domain Users,CN=Users,DC=Fortinet-FSSO,DC=COM
CN=nested2,OU=Testing,DC=Fortinet-FSSO,DC=COM
CN=nested1,OU=Testing,DC=Fortinet-FSSO,DC=COM

The group nested3 is a member of the group nested2, which is a member of the group nested1.

Configuring LDAP dial-in using a member attribute

In this configuration, users defined in Microsoft AD can set up a VPN connection based on an attribute that is set to 
TRUE, instead of their user group. You can activate the Allow Dialin property in AD user properties, which sets the 
msNPAllowDialin attribute to TRUE. You can use this procedure for other member attributes as your system requires.
This configuration consists of the following steps:
 1. Ensure that the AD server has the msNPAllowDialin attribute set to TRUE for the desired users.
 2. Configure user LDAP member attribute settings.
 3. Configure LDAP group settings.
 4. Ensure that you configured the settings correctly.

To configure user LDAP member attribute settings:

config user ldap


edit "ldap_server"
set server "192.168.201.3"
set cnid "sAMAccountName"
set dn "DC=fortilabanz,DC=com,DC=au"
set type regular
set username "[email protected]"
set password ******
set member-attr "msNPAllowDialin"
next
end

To configure LDAP group settings:

config user group


edit "ldap_grp"
set member "ldap"
config match
edit 1
set server-name "ldap"
set group-name "TRUE"
next
end
next
end

FortiOS 6.4.6 Administration Guide 1696


Fortinet Technologies Inc.
User & Authentication

To ensure that you configured the settings correctly:

Users that are members of the ldap user group should be able to authenticate. The following shows sample diagnose
debug output when the Allow Dial-in attribute is set to TRUE:
get_member_of_groups-Get the memberOf groups.
get_member_of_groups- attr='msNPAllowDialin', found 1 values
get_member_of_groups-val[0]='TRUE'
fnbamd_ldap_get_result-Auth accepted
fnbamd_ldap_get_result-Going to DONE state res=0
fnbamd_auth_poll_ldap-Result for ldap svr 192.168.201.3 is SUCCESS
fnbamd_auth_poll_ldap-Passed group matching

If the attribute is not set to TRUE but is expected, you may see the following output:
get_member_of_groups-Get the memberOf groups.
get_member_of_groups- attr='msNPAllowDialin', found 1 values
get_member_of_groups-val[0]='FALSE'
fnbamd_ldap_get_result-Auth accepted
fnbamd_ldap_get_result-Going to DONE state res=0
fnbamd_auth_poll_ldap-Result for ldap svr 192.168.201.3 is SUCCESS
fnbamd_auth_poll_ldap-Failed group matching

The difference between the two outputs is the last line, which shows passed or failed depending on whether the member 
attribute is set to the expected value.

Configuring wildcard admin accounts

To avoid setting up individual admin accounts in FortiOS, you can configure an admin account with the wildcard option 
enabled, allowing multiple remote admin accounts to match one local admin account. This way, multiple LDAP admin 
accounts can use one FortiOS admin account.
Benefits include:
 l Fast configuration of the FortiOS admin account to work with your LDAP network, saving effort and avoiding 
potential errors incurred when setting up multiple admin accounts
 l Reduced ongoing maintenance. As long as LDAP users belong to the same group and you do not modify the 
wildcard admin account in FortiOS, you do not need to configure changes on the LDAP accounts. If you add or 
remove a user from the LDAP group, you do not need to perform changes in FortiOS.
Potential issues include:
 l Multiple users may be logged in to the same account simultaneously. This may cause issues if both users make 
changes simultaneously.
 l Security is reduced since multiple users have login access to the same account, as opposed to an account for each 
user.
Wildcard admin configuration also applies to RADIUS. If configuring for RADIUS, configure the RADIUS server and 
RADIUS user group instead of LDAP. When using the GUI, wildcard admin is the only remote admin account that does 
not require you to enter a password on account creation. That password is normally used when the remote 
authentication server is unavailable during authentication.
This example uses default values where possible. If a specific value is not mentioned, the example sets it to its default 
value.

FortiOS 6.4.6 Administration Guide 1697


Fortinet Technologies Inc.
User & Authentication

You can configure  an admin account in Active Directory  f or LDAP authentication to allow an 
admin to  perform lookups and reset passwords without being a member of the Account 
Operators or Domain Administrators built-in groups. See Configuring least privileges  for LDAP 
admin account authentication in Active Directory on page 1699.

To configure the LDAP server:

The important parts of this configuration are the username and group lines. The username is the domain administrator 
account. The group binding allows only the GRP group access.
This example uses an example domain name. Configure as appropriate for your own network.
config user ldap
edit "ldap_server"
set server "192.168.201.3"
set cnid "sAMAccountName"
set dn "DC=example,DC=com,DC=au"
set type regular
set username "CN=Administrator,CN=Users,DC=example,DC=COM”
set password *
set group-member-check group-object
set group-object-filter (&
(objectcategory=group)member="CN=GRP,OU=training,DC=example,DC=COM"))
next
end

To configure the user group and add the LDAP server:

config user group


edit "ldap_grp"
set member "ldap"
config match
edit 1
set server-name "ldap_server"
set group-name "CN=GRP,OU=training,DC=example,DC=COM"
next
end
next
end
end
end
end

To configure the wildcard admin account:

config system admin


edit "test"
set remote-auth enable
set accprofile "super_admin"
set wildcard enable
set remote-group "ldap_grp"
next
end

FortiOS 6.4.6 Administration Guide 1698


Fortinet Technologies Inc.
User & Authentication

Configuring least privileges for LDAP admin account authentication in Active


Directory

An administrator should only have sufficient privileges for their role. In the case of LDAP admin bind, you can configure  
an admin account in Active Directory  f or LDAP authentication to allow an admin to  perform lookups and reset passwords 
without being a member of the Account Operators or Domain Administrators built-in groups.
For information about Active Directory, see the product documentation.

To configure account privileges for LDAP authentication in Active Directory:

 1. In the Active Directory Users and Computers administrative console, right-click the Organizational Unit (OU) or the 


top-level domain you want to configure and select Delegate Control.
 2. In the Delegation of Control Wizard dialog, click Next.
 3. In the Users or Groups dialog, click Add...  and search Active Directory for the users or groups.
 4. Click OK and then click Next.
 5. In the Tasks to Delegate dialog, select Create a custom task to delegate and click Next.
 6. Select Only the following objects in the folder and scroll to the bottom of the list. Select User objects and click Next.
 7. In the Permissions dialog, select General.
 8. From the Permissions list, select the following:   
 l Change password
 l Reset password
 9. Clear the General checkbox and select Property-specific.
 10. From the Permissions list, select the following:
l Write lockoutTime

l Read lockoutTime

l Write pwdLastSet

l Read pwdLastSet

l Write UserAccountControl

l Read UserAccountControl

 11. Click Next and click Finish.

RADIUS Servers

Topics about RADIUS servers include the following:
 l Configuring RADIUS SSO authentication on page 1699
 l RSA ACE (SecurID) servers on page 1706
 l Support for Okta RADIUS attributes filter-Id and class on page 1710
 l Send multiple RADIUS attribute values in a single RADIUS Access-Request on page 1712

Configuring RADIUS SSO authentication

A common RADIUS SSO (RSSO) topology involves a medium-sized company network of users connecting to the 
Internet through the FortiGate and authenticating with a RADIUS server. The following describes how to configure 

FortiOS 6.4.6 Administration Guide 1699


Fortinet Technologies Inc.
User & Authentication

FortiOS for this scenario. The example makes the following assumptions:
 l VDOMs are not enabled.
 l The super_admin account is used for all FortiGate configuration.
 l A RADIUS server is installed on a server or FortiAuthenticator and uses default attributes. 
 l BGP is used for any dynamic routing.
 l You have configured authentication event logging under Log & Report.
Example.com has an office with 20 users on the internal network who need access to the Internet. The office network is 
protected by a FortiGate-60C with access to the Internet through the wan1 interface, the user network on the internal 
interface, and all servers are on the DMZ interface. This includes an Ubuntu sever running FreeRADIUS. This example 
configures two users:

User Account

Pat Lee [email protected]

Kelly Green [email protected]

Configuring this example consists of the following steps:
 1. Configure RADIUS.
 2. Configure FortiGate interfaces.
 3. Configure a RSSO agent.
 4. Create a RSSO user group.
 5. Configure security policies.
 6. Test the configuration.

To configure RADIUS:

Configuring RADIUS includes configuring a RADIUS server such as FreeRADIUS on user's computers and configuring 
users in the system. In this example, Pat and Kelly belong to the exampledotcom_employees group. After completing 
the configuration, you must start the RADIUS daemon. The users have a RADIUS client installed on their PCs that allow 
them to authenticate through the RADIUS server.
For any problems installing FreeRADIUS, see the FreeRADIUS documentation.

To configure FortiGate interfaces:

You must define a DHCP server for the internal network, as this network type typically uses DHCP. The wan1 and dmz 
interfaces are assigned static IP addresses and do not need a DHCP server. The following table shows the FortiGate 

FortiOS 6.4.6 Administration Guide 1700


Fortinet Technologies Inc.
User & Authentication

interfaces used in this example:

Interface Subnet Act as DHCP server Devices

wan1 172.20.120.141 No Internet service provider

dmz 10.11.101.100 No Servers including 


RADIUS server

internal 10.11.102.100 Yes: x.x.x.110-250 Internal user network

 1. Go to Network > Interfaces.


 2. Edit wan1:   

Alias Internet

Addressing Mode Manual

IP/Network Mask 172.20.120.141/255.255.255.0

Administrative Access HTTPS, SSH

Enable DHCP Server Not selected

Comments Internet

Administrative Status Up

 3. Click OK.
 4. Edit dmz:   

Alias Servers

Addressing Mode Manual

IP/Network Mask 10.11.101.100/255.255.255.0

Administrative Access HTTPS, SSH, PING, SNMP

Enable DHCP Server Not selected

Listen for RADIUS Select


Accounting Messages

Comments Servers

Administrative Status Up

 5. Click OK.
 6. Edit internal:   

Alias Internal network

Addressing Mode Manual

IP/Network Mask 10.11.102.100/255.255.255.0

Administrative Access HTTPS, SSH, PING

FortiOS 6.4.6 Administration Guide 1701


Fortinet Technologies Inc.
User & Authentication

Enable DHCP Server Select

Address Range 10.11.102.110 - 10.11.102.250

Netmask 255.255.255.0

Default Gateway Same as Interface IP

Comments Internal network

Administrative Status Up

To create a RADIUS SSO agent:

 1. Go to Security Fabric > External Connectors.


 2. Click Create New.
 3. Under Endpoint/Identity, select RADIUS Single Sign-On Agent.
 4. Enable Use RADIUS Shared Secret. Enter the RADIUS server's shared secret.
 5. Enable Send RADIUS Responses. Click OK.

To create a RADIUS SSO user group:

 1. Go to User & Authentication > User Groups.


 2. Click Create New.
 3. For Type, select RADIUS Single Sign-On (RSSO).
 4. In RADIUS Attribute Value, enter the name of the RADIUS user group that this local user group represents.
 5. Click OK.

Configuring security policies

The following security policies are required for RADIUS SSO:

Sequence From To Type Schedule Description


Number

1 internal wan1 RADIUS SSO Business hours Authenticate outgoing user 


traffic

2 internal wan1 Regular Always Allow essential network 


services and VoIP

3 dmz wan1 Regular Always Allow servers to access the 


Internet

4 internal dmz Regular Always Allow users to access 


servers

5 any any Deny Always Implicit policy denying all 


traffic that has not been 
matched

FortiOS 6.4.6 Administration Guide 1702


Fortinet Technologies Inc.
User & Authentication

You must place the RADIUS SSO policy at the top of the policy list so that it is matched first. The only exception to this is 
if you have a policy to deny access to a list of banned users. In this case, you must put that policy at the top so that the 
RADIUS SSO does not mistakenly match a banned user or IP address.
You must configure lists before creating security policies.

Schedule

You must configure a business_hours schedule. You can configure a standard Monday to Friday 8 AM to 5 PM 
schedule, or whatever days and hours covers standard work hours at the company.

Address groups

You must configure the following address groups:

Name Interface Address range included

internal_network internal 10.11.102.110 to 10.11.102.250

company_servers dmz 10.11.101.110 to 10.11.101.250

Service groups

You must configure the service groups. The services listed are suggestions and you may include more or less as 
required:

Name Interface Description of services to be


included

essential_network_services internal Any network protocols required for normal 


network operation such as DNS, NTP, 
BGP

essential_server_services dmz All the protocols required by the company 


servers such as BGP, HTTP, HTTPS, FTP, 
IMAP, POP3, SMTP, IKE, SQL, MYSQL, 
NTP, TRACEROUTE, SOCKs, and SNMP

user_services internal Any protocols required by users such as 


HTTP, HTTPS, FTP

The following security policy configurations are basic and only include logging and default AV and IPS. These policies 
allow or deny access to non-RADIUS SSO traffic. These are essential as network services including DNS, NTP, and 
FortiGuard require access to the Internet.

To configure security policies:

 1. Go to Policy & Objects > Firewall Policy.


 2. Click Create New.

FortiOS 6.4.6 Administration Guide 1703


Fortinet Technologies Inc.
User & Authentication

 3. Configure the policy as follows, then click OK:

Incoming Interface Internal

Source Address internal_network

Outgoing Interface wan1

Destination Address all

Schedule always

Service essential_network_services

Action ACCEPT

NAT ON

Security Profiles ON: AntiVirus, IPS

Log Allowed Traffic ON

Comments Essential network services

 4. Click Create New, and configure the new policy as follows, then click OK:

Incoming Interface dmz

Source Address company_servers

Outgoing Interface wan1

Destination Address all

Schedule always

Service essential_server_services

Action ACCEPT

NAT ON

Security Profiles ON: AntiVirus, IPS

Log Allowed Traffic enable

Comments Company servers accessing the Internet

 5. Click Create New, and configure the new policy as follows, then click OK:

Incoming Interface Internal

Source Address internal_network

Outgoing Interface dmz

Destination Address company_servers

Schedule always

Service all

FortiOS 6.4.6 Administration Guide 1704


Fortinet Technologies Inc.
User & Authentication

Action ACCEPT

NAT ON

Security Profiles ON: AntiVirus, IPS

Log Allowed Traffic enable

Comments Access company servers

 6. Click Create New, and configure the RADIUS SSO policy as follows, then click OK. This policy allows access for 


members of specific RADIUS groups.

Incoming Interface Internal

Source Address internal_network

Source User(s) Select the user groups that you created for RSSO.

Outgoing Interface wan1

Destination Address all

Schedule business_hours

Service ALL

Action ACCEPT

NAT ON

Security Profiles ON: AntiVirus, Web Filter, IPS, and Email Filter. In each case, select the 


default profile.

 7. Place the RSSO policy higher in the security policy list than more general policies for the same interfaces. Click OK.

To test the configuration:

Once configured, a user only needs to log in to their PC using their RADIUS account. After that, when they attempt to 
access the Internet, the FortiGate uses their session information to get their RADIUS information. Once the user is 
verified, they can access the website.
 1. The user logs on to their PC and tries to access the Internet.
 2. The FortiGate contacts the RADIUS server for the user's information. Once confirmed, the user can access the 
Internet. Each step generates logs that enable you to verify that each step succeeded.
 3. If a step does not succeed, confirm that your configuration is correct.

FortiOS 6.4.6 Administration Guide 1705


Fortinet Technologies Inc.
User & Authentication

RSA ACE (SecurID) servers

SecurID is a two-factor system produced by the company RSA that uses one-time password (OTP) authentication. This 
system consists of the following:
 l Portable tokens that users carry
 l RSA ACE/Server
 l Agent host (the FortiGate)
When using SecurID, users carry a small device or "token" that generates and displays a pseudo-random password. 
According to RSA, each SecurID authenticator token has a unique 64-bit symmetric key that is combined with a powerful 
algorithm to generate a new code every 60 seconds. The token is time-synchronized with the SecurID RSA ACE/Server.
The RSA ACE/Server is the SecurID system's management component. It stores and validates the information about the 
SecurID tokens allowed on your network. Alternately, the server can be an RSA SecurID 130 appliance.
The agent host is the server on your network. In this case, this is the FortiGate, which intercepts user logon attempts. 
The agent host gathers the user ID and password entered from the SecurID token and sends the information to the RSA 
ACE/Server for validation. If valid, the RSA ACE/Server returns a reply indicating that it is a valid logon and FortiOS 
allows the user access to the network resources specified in the associated security policy.
Configuring SecurID with FortiOS consists of the following:
 1. Configure the RSA and RADIUS servers to work with each other. See RSA server documentation.
 2. Do one of the following:
 a. Configure the RSA SecurID 130 appliance.
 b. Configure the FortiGate as an agent host on the RSA ACE/Server.
 3. Configure the RADIUS server in FortiOS.
 4. Create a SecurID user group.
 5. Create a SecurID user.
 6. Configure authentication with SecurID.
The following instructions are based on RSA ACE/Server 5.1 and RSA SecurID 130 appliance. They assume that you 
have successfully completed all external RSA and RADIUS server configuration.

FortiOS 6.4.6 Administration Guide 1706


Fortinet Technologies Inc.
User & Authentication

In this example, the RSA server is on the internal network and has an IP address of 192.128.100.000. The FortiOS 
internal interface address is 192.168.100.3. The RADIUS shared secret is fortinet123, and the RADIUS server is at IP 
address 192.168.100.202.

To configure the RSA SecurID 130 appliance:

 1. Log on to the SecurID IMS console.
 2. Go to RADIUS > RADIUS clients, then select Add New.   

Setting Description

RADIUS Client Basics

Client Name FortiGate

Associated RSA Agent FortiGate

RADIUS Client Settings

IP Address Enter the FortiOS internal interface. In this example, it is 192.168.100.3.

Make / Model Select Standard Radius.

Shared Secret Enter the RADIUS shared secret. In this example, it is fortinet123.

Accounting Leave unselected.

Client Status Leave unselected.

 3. Configure your FortiGate as a SecurID client:
 4. Click Save.

To configure the FortiGate as an agent host on the RSA ACE/Server:

 1. On the RSA ACE/Server, go to Start > Programs > RSA ACE/Server, then Database Administration - Host Mode.
 2. From the Agent Host menu, select Add Agent Host.
 3. Configure the following:   

Setting Description

Name FortiGate

Network Address Enter the FortiOS internal interface. In this example, it is 192.168.100.3.

Secondary Nodes You can optionally enter other IP addresses that resolve to the FortiGate.

For more information, see the RSA ACE/Server documentation.

FortiOS 6.4.6 Administration Guide 1707


Fortinet Technologies Inc.
User & Authentication

To configure the RADIUS server in FortiOS:

 1. Go to User & Authentication > RADIUS Servers, then click Create New.


 2. Configure the following:   

Setting Description

Name RSA

Authentication method Select Default.

Primary Server

IP/Name 192.168.100.102. You can click Test to ensure the IP address is correct and 
that FortiOS can contact the RADIUS server.

Secret fortinet123

 3. Click OK.

To create a SecurID user group:

 1. Go to User & Authentication > User Groups. Click Create New.


 2. Configure the following:   

Setting Description

Name RSA_group

Type Firewall

 3. In Remote Groups, click Add, then select the RSA server.


 4. Click OK.

To create a SecurID user:

 1. Go to User & Authentication > User Definition. Click Create New.


 2. Configure the following:   

Setting Description

User Type Remote RADIUS User

Type wloman

RADIUS Server RSA

Contact Info (Optional) Enter email or SMS information.

User Group RSA_group

 3. Click Create.
You can test the configuration by entering the diagnose test authserver radius RSA auto wloman
111111111 command. The series of 1s is the OTP that your RSA SecurID token generates that you enter for access.

FortiOS 6.4.6 Administration Guide 1708


Fortinet Technologies Inc.
User & Authentication

Configuring authentication with SecurID

You can use the SecurID user group in several FortiOS features that authenticate by user group:
 l Security policy on page 1709
 l IPsec VPN XAuth on page 1709
 l PPTP VPN on page 1710
 l SSL VPN
Unless stated otherwise, the following examples use default values.

Security policy

The example creates a security policy that allows HTTP, FTP, and POP3 traffic from the internal interface to WAN1. If 
these interfaces are not available in FortiOS, substitute other similar interfaces. 

To configure a security policy with SecurID authentication:

 1. Go to Policy & Objects > Firewall Policy.


 2. Click Create New.
 3. Configure the following:   

Setting Description

Incoming Interface internal

Source Address all

Source User(s) RSA_group

Outgoing Interface wan1

Destination Address all

Schedule always

Service HTTP, FTP, POP3

Action ACCEPT

NAT On

Shared Shaper If you want to limit traffic or guarantee minimum bandwidth for traffic that uses 
the SecurID security policy, enable and use the default shaper, guarantee-
100kbps.

Log Allowed Traffic Enable if you want to generate usage reports on traffic that this policy has 
authenticated.

 4. Click OK.

IPsec VPN XAuth

In VPN > IPsec Wizard, select the SecurID user group on the Authentication page. The SecurID user group members 


must enter their SecurID code to authenticate.

FortiOS 6.4.6 Administration Guide 1709


Fortinet Technologies Inc.
User & Authentication

PPTP VPN

When configuring PPTP in the CLI, set usrgrp to the SecurID user group.

SSL VPN

You must map the SecurID user group to the portal that will serve SecurID users and include the SecurID user group in 
the security policy's Source User(s) field.

To map the SecurID group to an SSL VPN portal:

 1. Go to VPN > SSL-VPN Settings.


 2. Under Authentication/Portal Mapping, click Create New.
 3. Configure the following:   

Setting Description

Users/Groups RSA_group

Portal Select the desired portal.

 4. Click OK.

Support for Okta RADIUS attributes filter-Id and class

RADIUS user group membership information can be returned in the filter-Id (11) and class (25) attributes in RADIUS 
Access-Accept messages. The group membership information can be used for group matching in FortiGate user groups 
in firewall policies and for FortiGate wildcard administrators with remote RADIUS authentication.

In this example, a FortiAuthenticator is used as the RADIUS server. A local RADIUS user on the FortiAuthenticator is 
configure with two groups in the filter-Id attribute: okta-group1 and okta-group2.

To create the RADIUS user and set the attribute type to override group information:

config user radius


edit "FAC193"
set server "10.1.100.189"
set secret **********
set group-override-attr-type filter-Id

FortiOS 6.4.6 Administration Guide 1710


Fortinet Technologies Inc.
User & Authentication

next
end

FortiOS will only use the configured filter-Id attribute, even if the RADIUS server sends group names in both class and 
filter-id attributes. To return group membership information from the class attribute instead, set group-override-
attr-type to class.

To configure group match in the user group:

 1. Go to User & Authentication > User Groups.


 2. Click Create New.
 3. Enter a name for the group, and set Type to Firewall.
 4. In the Remote Groups table, click Add.
 5. Set Remote Server to the just created RADIUS server, FAC193.
 6. Set Groups to Specify, and enter the group name, okta-group2. The string must match the group name 
configured on the RADIUS server for the filter-Id attribute.

 7. Click OK.
The remote server is added to the Remote Groups table.
 8. Click OK.
 9. Add the new user group to a firewall policy and generate traffic on the client PC that requires firewall authentication, 
such as connecting to an external web server.
 10. After authentication, on the FortiGate, verify that traffic is authorized in the traffic log:
 a. Go to Log & Report > Forward Traffic.
 b. Verify that the traffic was authorized.

To use the remote user group with group match in a system wildcard administrator configuration:

 1. Go to System > Administrators.


 2. Edit an existing administrator, or create a new one.
 3. Set Type to Match all users in a remote server group.

FortiOS 6.4.6 Administration Guide 1711


Fortinet Technologies Inc.
User & Authentication

 4. Set Remote User Group to the remote server.

 5. Configure the remaining settings as required.
 6. Click OK.
 7. Log in to the FortiGate using the remote user credentials on the RADIUS server. 
If the correct group name is returned in the filter-Id attribute, administrative access is allowed.

Send multiple RADIUS attribute values in a single RADIUS Access-Request

A managed FortiSwitch can be configured to send multiple RADIUS attribute values in a single RADIUS Access-
Request. This option is configured per RADIUS user, and is set to none by default.
The available service type options are:

login User should be connected to a host.

framed User use Framed Protocol.

callback-login User disconnected and called back.

callback-framed User disconnected and called back, then a Framed Protocol.

outbound User granted access to outgoing devices.

administrative User granted access to the administrative unsigned interface.

nas-prompt User provided a command prompt on the NAS.

authenticate-only Authentication requested, and no authentication information needs to be 
returned.

callback-nas-prompt User disconnected and called back, then provided a command prompt.

call-check Used by the NAS in an Access-Request packet, Access-Accept to answer the 
call.

callback-administrative User disconnected and called back, granted access to the admin unsigned 
interface.

To configure a managed FortiSwitch to the RADIUS attributes login, framed, and authenticate-only all at
the same time:

config user radius


edit "Radius_Server"

FortiOS 6.4.6 Administration Guide 1712


Fortinet Technologies Inc.
User & Authentication

set switch-controller-service-type login framed authenticate-only


....
next
end

TACACS+ Servers

TACACS+ is a remote authenticate protocol that provides access control for routers, network access servers, and other 
network devices via one or more centralized servers.
FortiOS sends the following proprietary TACACS+ attributes to the TACACS+ server during authorization requests:

Attribute Description

service=<name> User must be authorized to access the specified service.

memberof Group that the user belongs to.

admin_prof Administrator profile (admin access only).

Only memberof and admin_prof attributes are parsed in authentication replies.

You can configure up to ten remote TACACS+ servers in FortiOS. You must configure at least one server before you can 
configure remote users.

You must configure a TACACS+ server in the CLI before you can access User &
Authentication > TACACS+ Servers in the GUI.

To configure FortiOS for TACACS+ authentication in the CLI:

config user tacacs+


edit "TACACS-SERVER"
set server [IP_ADDRESS]
set key [PASSWORD]
set authen-type ascii
next
end
config user group
edit "TACACS-GROUP"
set group-type firewall
set member "TACACS-SERVER"
next
end
config system admin
edit TACACS-USER
set remote-auth enable
set accprofile "super_admin"
set vdom "root"

FortiOS 6.4.6 Administration Guide 1713


Fortinet Technologies Inc.
User & Authentication

set wildcard enable


set remote-group "TACACS-GROUP"
next
end

To configure a TACACS+ server in the GUI:

A TACACS+ server must first be added in the CLI to make the option visible in the GUI.

 1. Go to User & Authentication > TACACS+ Servers.


 2. Click Create New.
 3. Configure the following settings:   

Setting Description

Name TACACS+ server name.

Server Name/IP TACACS+ server domain name or IP address.

Server Key Key to access the TACACS+ server.

Authentication Type Select the authentication type to use for the TACACS+ server.
Selecting Auto tries PAP, MSCHAP, and CHAP, in that order.

To configure IPv6 address support for TACACS+ servers:

config user tacacs+


edit <name>
set server <ipv6 address>
set source-ipv6 <ipv6 address>
next
end

SAML

The following topics provide information about SAML:
 l Outbound firewall authentication for a SAML user on page 1714
 l SAML SP for VPN authentication on page 1716

Outbound firewall authentication for a SAML user

When you configure a FortiGate as a service provider (SP), you can create an authentication profile that uses SAML for 
firewall authentication.

FortiOS 6.4.6 Administration Guide 1714


Fortinet Technologies Inc.
User & Authentication

You must use the identity provider's (IdP) remote certificate on the SPs.

The following example uses a FortiGate as an SP and FortiAuthenticator as the IdP server:

To configure firewall authentication:

 1. Configure the FortiGate SP to be a SAML user:
config user saml
edit "fac-firewall"
set entity-id "http://10.2.2.2:1000/saml/metadata/"
set single-sign-on-url "https://10.2.2.2:1003/saml/login/"
set single-logout-url "https://10.2.2.2:1003/saml/logout/"
set idp-entity-id "http://172.18.58.93:443/saml-idp/bbbbbb/metadata/"
set idp-single-sign-on-url "https://172.18.58.93:443/saml-idp/bbbbbb/login/"
set idp-single-logout-url "https://172.18.58.93:443/saml-idp/bbbbbb/logout/"
set idp-cert "REMOTE_Cert_3"
set user-name "username"
set group-name "group"
next
end

 2. Add the SAML user to the user group (optionally, you can configure group matching):
config user group
edit "saml_firewall"
set member "fac-firewall"
config match
edit 1
set server-name "fac-firewall"
set group-name "user_group1"
next
end
next
end

 3. Add the SAML user group to a firewall policy:
config firewall policy
edit 2
set srcintf "port3"

FortiOS 6.4.6 Administration Guide 1715


Fortinet Technologies Inc.
User & Authentication

set dstintf "port1"


set srcaddr "all"
set dstaddr "pc4"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set fsso disable
set groups "saml_firewall" "group_local"
set users "first"
set nat enable
next
end

 4. Configure the FortiAuthenticator IdP as needed.
 5. Run HTTP/HTTPS authentication for a remote user. The SAML login page appears:

SAML SP for VPN authentication

When you configure a FortiGate as a service provider (SP), you can create an authentication profile that uses SAML for  
SSL VPN web portal authentication. 
You can use SAML  with FortiClient for SSL VPN tunnel authentication. The following licensed versions are required for 
this functionality:
 l FortiClient (Windows) 6.4.0
 l FortiClient (macOS) 6.4.1
 l FortiClient (Linux) 6.4.1
The following example uses a FortiGate as an SP and FortiAuthenticator as the IdP server:

FortiOS 6.4.6 Administration Guide 1716


Fortinet Technologies Inc.
User & Authentication

To configure SSL VPN web portal authentication:

 1. Configure the FortiGate SP to be a SAML user:
config user saml
edit "fac-sslvpn"
set entity-id "https://10.2.2.2:10443/remote/saml/metadata/"
set single-sign-on-url "https://10.2.2.2:10443/remote/saml/login/"
set single-logout-url "https://10.2.2.2:10443/remote/saml/logout/"
set idp-entity-id "http://172.18.58.93:443/saml-idp/ssssss/metadata/"
set idp-single-sign-on-url "https://172.18.58.93:443/saml-idp/ssssss/login/"
set idp-single-logout-url "https://172.18.58.93:443/saml-idp/ssssss/logout/"
set idp-cert "REMOTE_Cert_3"
set user-name "username"
next
end

 2. Add the SAML user to the user group (group matching may also be configured):
config user group
edit "saml_sslvpn"
set member "fac-sslvpn"
next
end

 3. Configure SSL VPN:
config vpn ssl settings
set servercert "Fortinet_Factory"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set tunnel-ipv6-pools "SSLVPN_TUNNEL_IPv6_ADDR1"
set source-interface "port3"
set source-address "all"
set source-address6 "all"
set default-portal "full-access"
config authentication-rule
edit 1
set groups "saml_sslvpn"
set portal "full-access"
next
end
end

 4. Add the SAML user group to a firewall policy:
config firewall policy
edit 8
set srcintf "ssl.vdom1"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set groups "local" "saml_sslvpn"
set nat enable
next
end

 5. Configure the FortiAuthenticator IdP as needed.

FortiOS 6.4.6 Administration Guide 1717


Fortinet Technologies Inc.
User & Authentication

To connect from the SSL VPN web portal:

 1. In a web browser, enter the portal address. The SAML login page appears:

 2. Enter the user name and password.
 3. Click Login, or if SSO has been configured, click Single-Sign-On.
Once authenticated, the web portal opens.

To connect from SSL VPN tunnel mode with FortiClient:

 1. In FortiClient, click the Remote Access tab, and from the VPN Name dropdown, select the desired VPN tunnel.


 2. Click SAML Login.
 3. FortiClient displays an IdP authorization page in an embedded browser window. Enter the user name and 
password.
 4. Click Login.

Once authenticated, FortiClient establishes the SSL VPN tunnel.

Authentication Settings

You can configure general authentication settings, including timeout, protocol support, and certificates.

You cannot customize FTP and Telnet authentication replacement messages.

FortiOS 6.4.6 Administration Guide 1718


Fortinet Technologies Inc.
User & Authentication

To configure authentication settings using the GUI:

 1. Go to User & Authentication > Authentication Settings.


 2. Configure the following settings:   

Setting Description

Authentication Timeout Enter the desired timeout in minutes. You can enter a number between 1 and 
1440 (24 hours). The authentication timeout controls how long an 
authenticated connection can be idle before the user must reauthenticate. The 
default value is 5.

Protocol Support Select the protocols to challenge during firewall user authentication.
When you enable user authentication within a security policy, the 
authentication challenge is normally issued for any of four protocols, 
depending on the connection protocol:
 l HTTP (you can set this to redirect to HTTPS)
 l HTTPS
 l FTP
 l Telnet
The protocols selected here control which protocols support the authentication 
challenge. Users must connect with a supported protocol first so they can 
subsequently connect with other protocols. If HTTPS is selected as a protocol 
support method, it allows the user to authenticate with a customized local 
certificate.
When you enable user authentication within a security policy, FortiOS 
challenges the security policy user to authenticate. For user ID and password 
authentication, the user must provide their username and password. For 
certificate authentication (HTTPS or HTTP redirected to HTTPS only), you can 
install customized certificates on the unit and the user can also install 
customized certificates on their browser. Otherwise, users see a warning 
message and must accept a default Fortinet certificate. The network user's 
web browser may deem the default certificate invalid.

Certificate If using HTTPS protocol support, select the local certificate to use for 
authentication. This is available only if HTTPS and/or Redirect HTTP
Challenge to a Secure Channel (HTTPS) are selected.

To configure authentication settings using the CLI:

config user setting


set auth-timeout 5
set auth-type ftp http https telnet
set auth-cert Fortinet_Factory
end

FortiOS 6.4.6 Administration Guide 1719


Fortinet Technologies Inc.
User & Authentication

FortiTokens

FortiTokens are security tokens used as part of a multi-factor authentication (MFA) system on FortiGate and 
FortiAuthenticator. A security token is a 6-digit or 8-digit (configurable) one-time password (OTP) that is used to 
authenticate one's identity electronically as a prerequisite for accessing network resources. FortiToken is available as 
either a mobile or a physical (hard) token. Mobile tokens can be purchased as a license, or consumed with points as part 
of the FortiToken Cloud service.
FortiToken Mobile and physical FortiTokens store their encryption seeds on the cloud. FortiToken Mobile seeds are 
generated dynamically when the token is provisioned. They are always encrypted whether in motion or at rest.
You can only register FortiTokens to a single FortiGate or FortiAuthenticator for security purposes. This prevents 
malicious third parties from making fraudulent requests to hijack your FortiTokens by registering them on another 
FortiGate or FortiAuthenticator. If re-registering a FortiToken Mobile or Hard Token on another FortiGate is required, you 
must contact Fortinet Customer Support.
Common usage for FortiTokens includes:
 l Applying MFA to a VPN dialup user connecting to the corporate network
 l Applying MFA to FortiGate administrators
 l Applying MFA to firewall authentication and captive portal authentication

The MFA process commonly involves:
 l Something you know: User password
 l Something you have: The FortiToken OTP
A third factor of authentication is added to the authentication process:
 l Something you are: Your fingerprint or face
To enable the third factor, refer to the Activating FortiToken Mobile on a mobile phone on page 
1725 section.

The following illustrates the FortiToken MFA process:

 1. The user attempts to access a network resource.
 2. FortiOS matches the traffic to an authentication security policy and prompts the user for their username and 
password.
 3. The user enters their username and password.
 4. FortiOS verifies their credentials. If valid, it prompts the user for the FortiToken code.
 5. The user views the current code on their FortiToken. They enter the code at the prompt.
 6. FortiOS verifies the FortiToken code. If valid, it allows the user access to network resources.

If the FortiToken has drifted, the following must take place for the FortiToken to resynchronize with
FortiOS:

 1. FortiOS prompts the user to enter a second code to confirm.
 2. The user gets the next code from the FortiToken. They enter the code at the prompt.
 3. FortiOS uses both codes to update its clock to match the FortiToken.

FortiOS 6.4.6 Administration Guide 1720


Fortinet Technologies Inc.
User & Authentication

This section includes the following topics to quickly get started with FortiTokens:
 l FortiToken Mobile quick start on page 1721
 l FortiToken Cloud quick start on page 1732
 l Registering hard tokens on page 1736
 l Managing FortiTokens on page 1739
 l FortiToken Mobile Push on page 1741
 l Troubleshooting and diagnosis on page 1743

FortiToken Mobile quick start

FortiToken Mobile is an OATH compliant, event- and time-based one-time password (OTP) generator for mobile 
devices. It provides an easy and flexible way to deploy and provision FortiTokens to your end users through mobile 
devices. FortiToken Mobile produces its OTP codes in an application that you can download onto your Android or iOS 
mobile device without the need for a physical token.
You can download the free FortiToken Mobile application for Android from the Google Play Store, and for iOS from the 
Apple App Store.

FortiOS 6.4.6 Administration Guide 1721


Fortinet Technologies Inc.
User & Authentication

This section focuses on quickly getting started and setting up FortiToken Mobile for use on a FortiGate:
 l Registering FortiToken Mobile on page 1722
 l Provisioning FortiToken Mobile on page 1723
 l Activating FortiToken Mobile on a mobile phone on page 1725
 l Applying multi-factor authentication on page 1732

Registering FortiToken Mobile

To deploy FortiToken Mobile for your end users, you must first register the tokens on your FortiGate. After registering the 
tokens, you can assign them to your end users.
Each FortiGate comes with two free FortiToken Mobile tokens. These tokens should appear under User & Authentication
> FortiTokens. If no tokens appear, you may import them. Ensure that your FortiGate is registered and has internet 
access to connect to the FortiToken servers to import the tokens.

To import FortiTokens from the FortiGate GUI:

 1. Go to User & Authentication > FortiTokens.


 2. Click the Import Free Trial Tokens icon at the top. The two free tokens are imported.

To import FortiTokens from the FortiGate CLI:

# execute fortitoken-mobile import 0000-0000-0000-0000-0000


# show user fortitoken

If only one free token appears, you can first delete that token and then follow the procedure to 
import the two free tokens from either the GUI or the CLI.

If you have the FortiToken Mobile redemption certificate, you can register FortiToken Mobile on a FortiGate.

To register FortiToken Mobile from the FortiGate GUI:

 1. Go to User & Authentication > FortiTokens and click Create New. The New FortiToken dialog appears.


 2. For the Type field, select Mobile Token.
 3. Locate the 20-digit code on the redemption certificate and type it in the Activation Code field.
 4. Click OK. The token is successfully registered.

If you attempt to add invalid FortiToken serial numbers, there is no error message. FortiOS 
does not add invalid serial numbers to the list.

To register FortiToken Mobile from the FortiGate CLI:

# execute fortitoken-mobile import <20-digit activation code>


# show user fortitoken

FortiOS 6.4.6 Administration Guide 1722


Fortinet Technologies Inc.
User & Authentication

FortiToken Mobile stores its encryption seeds on the cloud. You can only register it to a single 
FortiGate or FortiAuthenticator.

Provisioning FortiToken Mobile

Once registered, FortiTokens need to be provisioned for users before they can be activated. In this example, you will 
provision a Mobile token for a local user. Similar steps can be taken to assign FortiTokens to other types of users.

To create a local user and assign a FortiToken in the FortiGate GUI:

 1. Go to User & Authentication > User Definition, and click Create New. The Users/Groups Creation Wizard appears. 
 2. In the User Type tab, select Local User, and click Next.   

 3. In the Login Credentials tab, enter a Username and Password for the user, and click Next.   

FortiOS 6.4.6 Administration Guide 1723


Fortinet Technologies Inc.
User & Authentication

 4. In the Contact Info tab: 


 a. Enable the Two-factor Authentication toggle.
 b. Select FortiToken for Authentication Type.
 c. Select a Token to assign to the user from the drop-down list.
 d. Enter the user's email address in the Email Address field. This is the email where the user will receive the QR 
code for activation of the FortiToken.
 e. Click Next.

 5. In the Extra Info tab, make sure the User Account Status field is set to Enabled. You can also optionally assign the 


user to a user group by enabling the User Group toggle.   

 6. Click Submit. An activation code should be sent to the created user by email or SMS, depending upon the delivery 
method configured above.

FortiGate  has the Email Service setting configured using the server notifications.fortinet.net by 
default. To see configuration, go to System > Settings > Email Service.

The activation code expires if not activated within the 3-day time period by default. However, the expiry time period is 
configurable.

FortiOS 6.4.6 Administration Guide 1724


Fortinet Technologies Inc.
User & Authentication

To configure the time period (in hours) for FortiToken Mobile, using the CLI:

config system global


set two-factor-ftm-expiry <1-168>
end

To resend the email or SMS with the activation code, refer to the Managing FortiTokens on 
page 1739 section.

Activating FortiToken Mobile on a mobile phone

After your system administrator provisions your token, you receive a notification with an activation code and expiry date 
via SMS or email. If you do not activate your token by the expiry date, you must contact your system administrator so that 
they can reassign your token for activation.
Platforms that support FortiToken Mobile:

Platform Device and firmware support

iOS iPhone, iPad, and iPod Touch with iOS 6.0 and later.

Android Phones and tablets with Android Jellybean 4.1 and later.

Windows Windows 10 (desktop and mobile), Windows Phone 8.1, and Windows Phone 8.

FortiToken is a Windows Universal Platform (UWP) application. To 
download FortiToken for Windows 10 desktop and mobile platforms, 
see FortiToken for Windows on the Microsoft Store.

The following instructions describe procedures when using FortiToken Mobile for iOS on an iPhone. Procedures may 
vary depending on your device and firmware.

To activate FortiToken Mobile on iOS:

 1. On your iOS device, tap on the FortiToken application icon to open the application. If this is your first time opening 
the application, it may prompt you to create a PIN for secure access to the application and tokens.   

FortiOS 6.4.6 Administration Guide 1725


Fortinet Technologies Inc.
User & Authentication

 2. Tap on the + icon. The Scan Barcode screen appears.

 3.  If you received the QR code via email, locate and scan the QR code in your email.   
OR
If you received the activation key via SMS, tap on Enter Manually at the bottom of the screen, and tap on Fortinet.   

FortiOS 6.4.6 Administration Guide 1726


Fortinet Technologies Inc.
User & Authentication

  E
  nter your email address in the Name field, the activation key in the Key field, and tap Done.   

FortiOS 6.4.6 Administration Guide 1727


Fortinet Technologies Inc.
User & Authentication

 4. FortiToken Mobile activates your token, and starts generating OTP digits immediately. To view or hide the OTP 
digits, tap the eye icon.   

After you open the application, FortiToken Mobile generates a new 6-digit OTP every 30 seconds. All configured tokens 
display on the application homescreen.
The FortiToken Mobile activation process described above caters to the MFA process that involves two factors 
(password and OTP) of the authentication process. A third factor (fingerprint or face) can be enabled as well.

To enable Touch/Face ID on iOS for FortiToken Mobile:

 1. Open the FortiToken application and tap on Info.

FortiOS 6.4.6 Administration Guide 1728


Fortinet Technologies Inc.
User & Authentication

 2. Tap on Touch/Face ID & PIN.

 3. Enable and set up a 4-digit PIN for the application. The PIN is required to be enabled before you can enable 
Touch/Face ID.

FortiOS 6.4.6 Administration Guide 1729


Fortinet Technologies Inc.
User & Authentication

FortiOS 6.4.6 Administration Guide 1730


Fortinet Technologies Inc.
User & Authentication

 4. Enable Touch/Face ID.

You cannot enable Touch/Face ID for FortiToken if Touch/Face ID is not set up and 


enabled for device unlock (iPhone Unlock in this case) on iOS. You must first set up and 
enable Touch/Face ID from Settings on your iOS device.

FortiOS 6.4.6 Administration Guide 1731


Fortinet Technologies Inc.
User & Authentication

 5. When prompted by iOS, allow the FortiToken application to use Touch/Face ID by tapping on OK in the prompt.

Applying multi-factor authentication

Multi-factor authentication (MFA) may also be set up for SSL VPN users, administrators, firewall policy, wireless users, 
and so on. The following topics explain more about how you may use the newly created user in such scenarios:
 l MFA for  SSL VPN: Set up FortiToken multi-factor authentication on page 1565
 l MFA for IPsec VPN: Add FortiToken multi-factor authentication on page 1389
 l MFA for Administrators: Associating a FortiToken to an administrator account on page 773
 l MFA with Captive Portal
 l MFA for wireless users via Captive Portal
 l Configuring firewall authentication on page 1747

FortiToken Cloud quick start

FortiToken Cloud is an Identity and Access Management as a Service (IDaaS) cloud service offering by Fortinet. It 
enables FortiGate and FortiAuthenticator customers to add MFA  for their respective users, through the use of Mobile 
tokens or Hard tokens. It protects local and remote administrators as well as firewall and VPN users.

FortiOS 6.4.6 Administration Guide 1732


Fortinet Technologies Inc.
User & Authentication

To simplify FortiToken management and provisioning, centralized token authentication is available in the cloud, as 
opposed to built into FortiGate or FortiAuthenticator. FortiToken Cloud uses a flexible SKU-based subscription 
mechanism that enables you to subscribe and scale your FortiToken Cloud MFA service using a points-based system. 
For more details, refer to the How to Add Licenses/Points and the FortiToken Cloud Admin Guide documents on the 
Docs Library.
This section focuses on quickly getting started and setting up FortiToken Cloud:
 l Managing FortiToken Cloud trial and licenses on page 1733
 l Provisioning FortiToken Cloud on page 1734
 l FortiToken Mobile token activation and verifying token status on page 1736

Managing FortiToken Cloud trial and licenses

Starting a FortiToken Cloud Trial

The FortiToken Cloud trial provides 24 points and allows up to 120 users. Points are consumed daily, and each point is 
one user per month. 

To start a FortiToken Cloud trial:

 1. Log in to your account on the FortiToken Cloud site (ftc.fortinet.com).
 2. If this is your first time, you will receive an Unauthorized (401) message. Click on the Click here for Free Trial 
option.

FortiOS 6.4.6 Administration Guide 1733


Fortinet Technologies Inc.
User & Authentication

 3. Your trial starts.

Registering FortiToken Cloud Licenses

Once your trial has started and you need to add more points to your FortiToken Cloud service, you can purchase the  
FortiToken Cloud SKU from our reseller and register the license on our support portal. To know more about how to 
register for and add FortiToken Cloud licenses, refer to the How to Add Licenses/Points document.

Provisioning FortiToken Cloud

To assign a FortiToken Cloud to a local or remote user using a FortiGate or FortiAuthenticator, the device must be  
registered on the same account as the FortiToken Cloud contracts. This guide focuses on provisioning FortiToken Cloud 
on FortiGate. To know more about provisioning FortiToken Cloud on FortiAuthenticator, refer to the Getting Started—
FAC-FTC users document.

To configure FortiToken Cloud to a local or remote user using a FortiGate:

 1. Enable the FortiToken Cloud service from the CLI:
config system global
set fortitoken-cloud-service enable
end
 2. Go to User & Authentication > User Definition.
 3. Edit an existing user, or create a new user using the Users/Groups Creation Wizard. 
 4. Enable the Two-factor Authentication toggle.
 5. Select FortiToken Cloud for Authentication Type.
 6. Enter the user's email address in the Email Address field. This is the email where the user will receive the QR code 
for activation of the FortiToken.

FortiOS 6.4.6 Administration Guide 1734


Fortinet Technologies Inc.
User & Authentication

 7. Click OK.

To configure centralized token authentication in the cloud on the FortiGate using the CLI:

 1. Enable the FortiToken Cloud service feature:
config system global
set fortitoken-cloud-service enable
end

 2. Assign the token to local users or administrators using the fortitoken-cloud option:
config user local
edit "guest"
set type password
set two-factor fortitoken-cloud
set email-to .........
...
next
end

The following commands can be used to manage FortiToken Cloud users:

FortiOS 6.4.6 Administration Guide 1735


Fortinet Technologies Inc.
User & Authentication

Command Description
diagnose ftk-cloud show Show all current users on the FortiToken Cloud server.
users

diagnose ftk-cloud Delete the specified user from FortiToken Cloud.


delete user <username>

diagnose ftk-cloud sync Update the information on the FortiToken Cloud server after changing an email 


address or phone number on the FortiGate.
diagnose ftk-cloud Change the current FortiToken Cloud server. All FortiToken Cloud related 
server <server_ip> operations on the FortiGate will be synchronized with the new server.

FortiToken Mobile token activation and verifying token status

Once the FortiToken Cloud user is created, the FortiToken Cloud service will send an activation email to the end user. At 
this point, if you go to the FortiToken Cloud > Users page, the newly provisioned user will be displayed with a pending 
activation icon in the Status column.

To activate FortiToken Mobile on your mobile phone, follow the instructions as described in the Activating FortiToken 
Mobile on a mobile phone on page 1725 section of the FortiToken Mobile Quick Start Guide.
Once FortiToken Mobile is activated for a user, FortiToken Cloud displays the user with an active status, and the pending 
activation icon disappears from the Status column on the FortiToken Cloud > Users page.

You can see more details about FortiToken Mobile activated for a user from the FortiToken Cloud > Mobile page.

Registering hard tokens

Registering FortiTokens consists of the following steps:
 1. Adding FortiTokens to FortiOS.
 2. Activating FortiTokens.

FortiOS 6.4.6 Administration Guide 1736


Fortinet Technologies Inc.
User & Authentication

 3. Associating FortiTokens with user accounts.

Adding FortiTokens to FortiOS

You can add FortiTokens to FortiOS in the following ways:
 l Add FortiToken serial numbers using the GUI
 l Add FortiToken serial numbers using the CLI
 l Import FortiTokens using a serial number or seed file using the GUI

To manually add single hard token to FortiOS using the GUI:

 1. Go to User & Authentication > FortiTokens.


 2. Click Create New.
 3. For Type, select Hard Token.
 4. In the Serial Number field, enter one or more FortiToken serial numbers.
 5. Click OK.

To add multiple FortiTokens to FortiOS using the CLI:

config user fortitoken


edit <serial_number>
next
edit <serial_number2>
next
end

To import multiple FortiTokens to FortiOS using the GUI:

 1. Go to User & Authentication > FortiTokens.


 2. Click Create New.
 3. For Type, select Hard Token.

FortiOS 6.4.6 Administration Guide 1737


Fortinet Technologies Inc.
User & Authentication

 4. Click Import. The Import Tokens section slides in on the screen.

 5. Select Serial Number File.

Seed files are only used with FortiToken-200CD. These are special hardware tokens that 
come with FortiToken seeds on a CD. See the FortiToken Comprehensive Guide for 
details.

 6. Click Upload.
 7. Browse to the file's location on your local machine, select the file, then click OK. 
 8. Click OK.

Activating FortiTokens

You must activate the FortiTokens before starting to use them. FortiOS requires connection to FortiGuard servers for 
FortiToken activation. During activation, FortiOS queries FortiGuard servers about each token's validity. Each token can 
only be used on a single FortiGate or FortiAuthenticator. If tokens are already registered, they are deemed invalid for re-
activation on another device. FortiOS encrypts the serial number and information before sending for added security.

To activate a FortiToken using the GUI:

 1. Go to User & Authentication > FortiTokens.


 2. Select the desired FortiTokens that have an Available status.
 3. Click Activate from the menu above.
 4. Click Refresh. The selected FortiTokens are activated.

To activate a FortiToken using the CLI:

config user fortitoken


edit <token_serial_num>
set status activate
next
end

Associating FortiTokens with user accounts

You can associate FortiTokens with local user or administrator accounts.

FortiOS 6.4.6 Administration Guide 1738


Fortinet Technologies Inc.
User & Authentication

To associate a FortiToken to a local user account using the GUI:

 1. Ensure that you have successfully added your FortiToken serial number to FortiOS and that its status is Available.
 2. Go to User & Authentication > User Definition. Edit the desired user account.
 3. Enable Two-factor Authentication.
 4. From the Token dropdown list, select the desired FortiToken serial number.
 5. In the Email Address field, enter the user's email address.
 6. Click OK.

To associate a FortiToken to a local user account using the CLI:

config user local


edit <username>
set type password
set passwd "myPassword"
set two-factor fortitoken
set fortitoken <serial_number>
set email-to "[email protected]"
set status enable
next
end

Before you can use a new FortiToken, you may need to synchronize it due to clock drift.

To associate a FortiToken to an administrator account, refer to the Associating a FortiToken to an administrator account 
on page 773 section.

Managing FortiTokens

This section focuses on the following:
 l Resending an activation email on page 1739
 l Locking/unlocking FortiTokens on page 1740
 l Managing FortiTokens drift on page 1740
 l Deactivating FortiTokens on page 1740
 l Moving FortiTokens to another device on page 1741

Resending an activation email

To resend an activation email/SMS for a mobile token on a FortiGate:

 1. Go to User & Authentication > User Definition and edit the user.


 2. Click Send Activation Code Email from the Two-factor Authentication section.

FortiOS 6.4.6 Administration Guide 1739


Fortinet Technologies Inc.
User & Authentication

Locking/unlocking FortiTokens

To change FortiToken status to active or to lock:

config user fortitoken


edit <token_serial_num>
set status <active | lock>
next
end

A user attempting to log in using a locked FortiToken cannot successfully authenticate.

Managing FortiTokens drift

If the FortiToken has drifted, the following must take place for the FortiToken to resynchronize with
FortiOS:

 1. FortiOS prompts the user to enter a second code to confirm.
 2. The user gets the next code from the FortiToken. They enter the code at the prompt.
 3. FortiOS uses both codes to update its clock to match the FortiToken.
If you still experience clock drift, it may be the result of incorrect time settings on your mobile device. If so, make sure that 
the mobile device clock is accurate by confirming the network time and the correct timezone.
If the device clock is set correctly, the issue could be the result of the  FortiGate and FortiTokens being initialized prior to 
setting an NTP server. This will result in a time difference that is too large to correct with the synchronize function. To 
avoid this, selected Tokens can be manually drift adjusted.

To show current drift and status for each FortiToken:

diagnose fortitoken info


FORTITOKEN DRIFT STATUS
FTK200XXXXXXXXXC 0 token already activated, and seed won't be returned
FTK200XXXXXXXXXE 0 token already activated, and seed won't be returned
FTKMOBXXXXXXXXXA 0 provisioned
FTKMOBXXXXXXXXX4 0 new
Total activated token: 0
Total global activated token: 0
Token server status: reachable

This command lists the serial number and drift for each configured FortiToken. You can check if it is necessary to 
synchronize the FortiGate and any particular FortiTokens.

To adjust Mobile FortiToken for drift:

# execute fortitoken sync <FortiToken_ID> <token_code1> <next_token_code2>

Deactivating FortiTokens

To deactivate FortiToken on a FortiGate:

 1. Go to User & Authentication > User Definition.


 2. Select and edit the user for which you want to deactivate the token.
 3. Disable the Two-factor Authentication toggle.

FortiOS 6.4.6 Administration Guide 1740


Fortinet Technologies Inc.
User & Authentication

 4. Click OK. The token will be removed from the user's Two-factor Authentication column. The user will also be 


removed from the token's User column under User & Authentication > FortiTokens.

Moving FortiTokens to another device

FortiTokens can only be activated on a single FortiGate or FortiAuthenticator. To move FortiTokens to another device, 
you would first have to reset the registered FortiTokens on a device and then reactivate them on another device.
To reset Hard tokens registered to a FortiGate appliance (non-VM model), you can reset all hardware FTK200 tokens 
from the Support Portal, or during RMA transfer. See the Migrating users and FortiTokens to another FortiGate KB 
article, for more information.

The above process will reset all Hard tokens and you cannot select individual tokens to reset.

To reset FortiToken Mobile,  a single Hard token, a Hard token registered to a VM, and so on, an administrator must 
contact Customer Support and/or open a ticket on the Support Portal.
Once reset, the FortiTokens can be activated on another FortiGate or FortiAuthenticator.

FortiToken Mobile Push

FortiToken Mobile Push allows authentication requests to be sent as push notifications to the end user's FortiToken 
Mobile application.
The FortiToken Mobile push service operates as follows:
 1. FortiGate sends a DNS query to the FortiToken Mobile Push proxy server (push.fortinet.com).
 2. FortiGate connects to the proxy server via an encrypted connection over TCP/443.
 3. The proxy server handles the notification request by making a TLS connection with either Apple (for iOS) or Google 
(for Android) notification servers. Notification data may include the recipient, session, FortiGate callback IP and 
port, and so on.
 4. The notification service from either Apple or Google notifies the user's mobile device of the push request.
 5. The FortiToken Mobile application on the user's mobile displays a prompt for the user to either Approve or Deny the 

FortiOS 6.4.6 Administration Guide 1741


Fortinet Technologies Inc.
User & Authentication

request.   

FortiOS 6.4.6 Administration Guide 1742


Fortinet Technologies Inc.
User & Authentication

To configure FortiToken Mobile push services using the CLI:

config system ftm-push


set status enable
set server-ip <ip-address>
set server-port [1-65535]
end

The default server port is 4433.
The server IP address is the public IP address of the FortiOS interface that FortiToken Mobile calls back to. FortiOS uses 
this IP address for incoming FortiToken Mobile calls.
If an SSL VPN user authenticates with their token, then logs out and attempts to reauthenticate within a minute, a Please
wait x seconds to login again message displays. This replaces a previous error/permission denied message. The x 
value depends on the calculation of how much time is left in the current time step.
config system interface
edit "guest"
set allowaccess ftm
next
end

FortiOS supports FortiAuthenticator-initiated FortiToken Mobile Push notifications for users 
attempting to authenticate through a VPN and/or RADIUS server (with FortiAuthenticator as 
the RADIUS server).

Troubleshooting and diagnosis

This section contains some common scenarios for FortiTokens troubleshooting and diagnosis:
 l FortiToken Statuses on page 1743
 l Recovering trial FortiTokens on page 1744
 l Recovering lost Administrator FortiTokens on page 1745
 l SSL VPN with multi-factor authentication expiry timers on page 1746

FortiToken Statuses

When troubleshooting FortiToken issues, it is important to understand different FortiToken statuses. FortiToken status 
may be retrieved either from the CLI or the GUI, with a slightly different naming convention.
Before you begin, verify that the FortiGate has Internet connectivity  and is also connected to both the FortiGuard and 
registration servers:
# execute ping fds1.fortinet.com
# execute ping directregistration.fortinet.com
# execute ping globalftm.fortinet.net

The globalftm.fortinet.net server is the Fortinet Anycast server added in FortiOS 
6.4.2.

FortiOS 6.4.6 Administration Guide 1743


Fortinet Technologies Inc.
User & Authentication

If there are connectivity issues,  retrieving FortiToken statuses or performing FortiToken activation could fail. Therefore, 
troubleshoot connectivity issues before continuing.

To retrieve FortiToken statuses:

 l In the CLI:
# diagnose fortitoken info
 l In the GUI:
Go to User & Authentication > FortiTokens.
Various FortiToken statuses in either the CLI or the GUI may be described as follows:

CLI GUI Description


new Available Newly added, not pending, not activated, not yet assigned.
active Assigned Assigned to a user, hardware token.
provisioning Pending Assigned to a user and waiting for activation on the FortiToken Mobile app.
provisioned Assigned Assigned to user and activated on the FortiToken Mobile app.
provision   Token provided to user but not activated on the FortiToken Mobile app. To fix, 
timeout the token needs to be re-provisioned and activated in time.
token already Error Token is locked by FortiGuard FDS. The hardware token was already activated 
activated, and on another device and locked by FDS.
seed won't be
returned

locked Either manually locked by an Administrator (set status lock), or locked 


automatically, for example, when the token is unassigned and the FortiCare 
FTM provisioning server was unreachable to process that change.

Recovering trial FortiTokens

You can recover trial FortiTokens if deleted from a FortiGate, or if  stuck in a state where it is not possible to provision  to a 
user.
When a token is stuck in an unusual state or with errors, delete the FortiTokens from the unit and proceed to recover trial 
FortiTokens.

To recover trial tokens via the GUI:

 1. Go to User & Authentication > FortiTokens.


 2. Click the Import Free Trial Tokens button at the top. The two free trial tokens are recovered.

To recover trial tokens via the CLI:

# execute fortitoken-mobile import 0000-0000-0000-0000-0000

 l Before attempting to recover the trial tokens, both the tokens should be deleted from the 
unit first.
 l If VDOMs are enabled, trial tokens are in the management VDOM (root by default).

FortiOS 6.4.6 Administration Guide 1744


Fortinet Technologies Inc.
User & Authentication

Following error codes might come up in the CLI:

 l If the device is not registered:
# execute fortitoken-mobile import 0000-0000-0000-0000-0000
import fortitoken license error: -7571
 l If the serial number format is incorrect:
# execute fortitoken-mobile import 0000-0000-0000-0000-00
import fortitoken license error: -7566

Recovering lost Administrator FortiTokens

If an Administrator loses their FortiToken or the FortiToken is not working, they will not be able to log into the admin 
console through the GUI or the CLI. If there is another Administrator that can log into the device, they may be able to 
reset the two-factor settings configured for the first Administrator, or create a new Admin user for them. Note that a 
super_admin user will be able to edit other admin user settings, but a prof_admin user will not be able to edit super_
admin settings.
In the case where there are no other administrators configured, the only option is to flash format the device and reload a 
backup config file. You must have console access to the device in order to format and flash the device. It is 
recommended to be physically on site to perform this operation.

The process of resetting an Admin user password using the maintainer account cannot be 
used to reset or disable two-factor authentication.

Before formatting the device, verify that you have a backup config file. You may or may not have the latest config file 
backed up, though you should consider using a backed up config file, and reconfigure the rest of the recent changes 
manually. Otherwise, you may need to configure your device starting from the default factory settings.

To recover lost Administrator FortiTokens:

 1. If you have a backed up config file:   
 a. Open the config file and search for the specific admin user. For representational purposes we will use Test in 
our example.
# edit "Test"
set accprofile "super_admin"
set vdom "root"
set two-factor fortitoken
set fortitoken "FTKXXXXXXXXXX"
set email-to "[email protected]"
set password *********
next
end
 b. Once you find the settings for the Test user, delete the fortitoken-related settings:
# edit "Test"
set accprofile "super_admin"
set vdom "root"
set password *********
next
end
 2. Format the boot device during a maintenance window and reload the firmware image using instructions in the   
Formatting and loading FortiGate firmware image using TFTP KB article.

FortiOS 6.4.6 Administration Guide 1745


Fortinet Technologies Inc.
User & Authentication

 3. Once the reload is complete, log into the admin console from the GUI using the default admin user credentials, and 
go to Configuration > Restore from the top right corner to reload your config file created in Step 1 above.
 4. Once the FortiGate reboots and your configuration is restored, you can log in with your admin user credentials.

SSL VPN with multi-factor authentication expiry timers

When SSL VPN is configured with multi-factor authentication (MFA), sometimes you may require a longer token expiry 
time  than the default 60 seconds.

To configure token expiry timers using the CLI:

config system global


set two-factor-ftk-expiry <number of seconds>
set two-factor-ftm-expiry <number of seconds>
set two-factor-sms-expiry <number of seconds>
set two-factor-fac-expiry <number of seconds>
set two-factor-email-expiry <number of seconds>
end

These timers apply to the tokens themselves and remain valid for as long as configured above. However, SSL VPN does 
not necessarily accept tokens for the entire duration they are valid. To ensure SSLVPN accepts the token for longer 
durations, you need to configure the remote authentication timeout setting accordingly.

To configure the remote authentication timeout:

config system global


set remoteauthtimeout <1-300 seconds>
end

SSL VPN waits for a maximum of five minutes for a valid token code to be provided before closing down the connection, 
even if the token code is valid for longer.

The remoteauthtimout setting  shows how long SSL VPN waits not only for a valid token to 
be provided before closing down the connection, but also for other remote authentication like 
LDAP, RADIUS, and so on.

Configuring the maximum log in attempts and lockout period

Failed log in attempts can indicate malicious attempts to gain access to your network. To prevent this security risk, you 
can limit the number of failed log in attempts. After the configured maximum number of failed log in attempts is reached, 
access to the account is blocked for the configured lockout period.

To configure number of maximum log in attempts:

This example sets the maximum number of log in attempts to five.
config user setting
set auth-lockout-threshold 5
end

FortiOS 6.4.6 Administration Guide 1746


Fortinet Technologies Inc.
User & Authentication

To configure the lockout period in seconds:

This example sets the lockout period to five minutes (300 seconds).
config user setting
set auth-lockout-duration 300
end

PKI

The following topics include information about public key infrastructure (PKI):
 l Creating a PKI/peer user on page 1747
 l SSL VPN with certificate authentication on page 1639
 l SSL VPN with LDAP-integrated certificate authentication on page 1588

Creating a PKI/peer user

A PKI/peer user is a digital certificate holder. A FortiOS PKI user account contains the information required to determine 
which CA certificate to use to validate the user's certificate. You can include a peer user in a firewall user group or peer 
certificate group used in IPsec VPN.
To define a peer user, you need the following:
 l Peer username
 l Text from the user's certificate's subject field, or the name of the CA certificate used to validate the user's certificate

To create a peer user for PKI authentication:

config user peer


edit peer1
set subject [email protected]
set ca CA_Cert_1
next
end

You can add or modify other configuration settings for PKI authentication, including configuring using an LDAP server to 
check client certificate access rights. See the FortiOS CLI Reference.

Configuring firewall authentication

In this example, a Windows network is connected to the FortiGate on port 2, and another LAN, Network_1, is connected 
on port 3.

FortiOS 6.4.6 Administration Guide 1747


Fortinet Technologies Inc.
User & Authentication

All Windows network users authenticate when they log on to their network. Engineering and Sales groups members can 
access the Internet without reentering their authentication credentials. The example assumes that you have already 
installed and configured FSSO on the domain controller.
LAN users who belong to the Internet_users group can access the Internet after entering their username and password. 
The example shows two users: User1, authenticated by a password stored in FortiOS; and User 2, authenticated on an 
external authentication server. Both users are local users since you create the user accounts in FortiOS.
 1. Create a locally authenticated user account.
 2. Create a RADIUS-authenticated user account.
 3. Create an FSSO user group.
 4. Create a firewall user group.
 5. Define policy addresses.
 6. Create security policies.

Creating a locally authenticated user account

User1 is authenticated by a password stored in FortiOS.

To create a locally authenticated user account in the GUI:

 1. Go to User & Authentication > User Definition and click Create New.


 2. Configure the following settings:

User Type Local User

User Name User1

Password hardtoguess1@@1

User Account Status Enabled

 3. Click Submit.

To create a locally authenticated user account in the CLI:

config user local


edit user1
set type password
set passwd hardtoguess1@@1
next
end

FortiOS 6.4.6 Administration Guide 1748


Fortinet Technologies Inc.
User & Authentication

Creating a RADIUS-authenticated user account

You must first configure FortiOS to access the external authentication server, then create the user account.

To create a RADIUS-authenticated user account in the GUI:

 1. Go to User & Authentication > RADIUS Servers and click Create New.


 2. Configure the following settings:   

Name OurRADIUSsrv

Authentication method Default

Primary Server

IP/Name 10.11.101.15

Secret OurSecret

 3. Click OK.
 4. Go to User & Authentication > User Definition and click Create New.
 5. Configure the following settings:   

User Type Remote RADIUS User

User Name User2

RADIUS Server OurRADIUSsrv

User Account Status Enabled

 6. Click Submit.

To create a RADIUS-authenticated user account in the CLI:

config user radius


edit OurRADIUSsrv
set server 10.11.102.15
set secret OurSecret
set auth-type auto
next
end
config user local
edit User2
set name User2
set type radius
set radius-server OurRADIUSsrv
next
end

Creating an FSSO user group

This example assumes that you have already set up FSSO on the Windows network and that it used advanced mode, 
meaning that it uses LDAP to access user group information. You must do the following:

FortiOS 6.4.6 Administration Guide 1749


Fortinet Technologies Inc.
User & Authentication

 l Configure LDAP access to the Windows AD global catalog
 l Specify the collector agent that sends user log in information to FortiOS
 l Select Windows user groups to monitor
 l Select and add the Engineering and Sales groups to an FSSO user group

To create an FSSO user group in the GUI:

 1. Configure LDAP for FSSO:
 a. Go to User & Authentication > LDAP Servers and click Create New.
 b. Configure the following settings:   

Name ADserver

Server Name / IP 10.11.101.160

Distinguished Name dc=office,dc=example,dc=com

Bind Type Regular

Username cn=FSSO_Admin,cn=users,dc=office,dc=example,dc=com

Password Enter a secure password.

 c. Leave other fields as-is. Click OK.
 2. Specify the collector agent for FSSO;
 a. Go to Security Fabric > External Connectors and click Create New.
 b. Under Endpoint/Identity, select Fortinet Single Sign-On Agent.
 c. Configure the following settings:   

Name Enter the Windows AD server name. This name appears in the Windows 
AD server list when you create user groups. In this example, the name is 
WinGroups.

Server IP/Name Enter the IP address or name of the server where the agent is installed. 
The maximum name length is 63 characters. In this example, the IP 
address is 10.11.101.160.

Password Enter the password of the server where the agent is installed. You only 
need to enter a password for the collector agent if you configured the agent 
to require authenticated access.
If the TCP port used for FSSO is not the default, 8000, you can run the 
config user fsso command to change the setting in the CLI.

Collector Agent AD access  Advanced
mode

LDAP Server Select the previously configured LDAP server. In this example, it is 
ADserver.

User/Groups/Organization  Select the users, groups, and OUs to monitor.
Units

 d. Click OK.

FortiOS 6.4.6 Administration Guide 1750


Fortinet Technologies Inc.
User & Authentication

 3. Create the FSSO_Internet_users user group:
 a. Go to User & Authentication > User Groups and click Create New.
 b. Configure the following settings:   

Name FSSO_Internet_users

Type Fortinet Single Sign-On (FSSO)

Members Engineering, Sales

 c. Click OK.

To create an FSSO user group in the CLI:

config user ldap


edit "ADserver"
set server "10.11.101.160"
set dn "cn=users,dc=office,dc=example,dc=com"
set type regular
set username "cn=administrator,cn=users,dc=office,dc=example,dc=com"
set password set_a_secure_password
next
end
config user fsso
edit "WinGroups"
set ldap-server "ADserver"
set password ********
set server "10.11.101.160"
next
end
config user group
edit FSSO_Internet_users
set group-type fsso-service
set member CN=Engineering,cn=users,dc=office,dc=example,dc=com
CN=Sales,cn=users,dc=office,dc=example,dc=com
next
end

Creating a firewall user group

This example shows a firewall user group with only two users. You can add additional members.

To create a firewall user group in the GUI:

 1. Go to User & Authentication > User Groups and click Create New.


 2. Configure the following settings:   

Name Internet_users

Type Firewall

Members User1, User2

 3. Click OK.

FortiOS 6.4.6 Administration Guide 1751


Fortinet Technologies Inc.
User & Authentication

To create a firewall user group in the CLI:

config user group


edit Internet_users
set group-type firewall
set member User1 User2
next
end

Defining policy addresses

To define policy addresses:

 1. Go to Policy & Objects > Addresses.


 2. Click Create New > Address.
 3. Configure the following settings:   

Name Internal_net

Type Subnet

IP/Netmask 10.11.102.0/24

Interface Port 3

 4. Click OK.
 5. Create another new address by repeating steps 2-4 using the following settings:   

Name Windows_net

Type Subnet

IP/Netmask 10.11.101.0/24

Interface Port 2

Creating security policies

You must create two security policies: one for the firewall group connecting through port 3, and one for the FSSO group 
connecting through port 2.

To create security policies using the GUI:

 1. Go to Policy & Objects > Firewall Policy.


 2. Click Create New.
 3. Configure the following settings:   

Incoming Interface Port2

Source Address Windows_net

Source User(s) FSSO_Internet_users

FortiOS 6.4.6 Administration Guide 1752


Fortinet Technologies Inc.
User & Authentication

Outgoing Interface Port1

Destination Address all

Schedule always

Service ALL

NAT Enabled.

Security Profiles You can enable security profiles as desired.

 4. Click OK.
 5. Create another new policy by repeating steps 2-4 using the following settings:   

Incoming Interface Port3

Source Address Internal_net

Source User(s) Internet_users

Outgoing Interface Port1

Destination Address all

Schedule always

Service ALL

NAT Enabled.

Security Profiles You can enable security profiles as desired.

 6. Click OK.

To create security policies using the CLI:

config firewall policy


edit 0
set srcintf port2
set dstintf port1
set srcaddr Windows_net
set dstaddr all
set action accept
set groups FSSO_Internet_users
set schedule always
set service ANY
set nat enable
next
end
config firewall policy
edit 0
set srcintf port3
set dstintf port1
set srcaddr internal_net
set dstaddr all
set action accept
set schedule always
set groups Internet_users
set service ANY

FortiOS 6.4.6 Administration Guide 1753


Fortinet Technologies Inc.
User & Authentication

set nat enable


next
end

FortiOS 6.4.6 Administration Guide 1754


Fortinet Technologies Inc.
Wireless configuration

See the FortiWiFi and FortiAP Cookbook.

FortiOS 6.4.6 Administration Guide 1755


Fortinet Technologies Inc.
Switch Controller

Use the Switch Controller function, also known as FortiLink, to remotely manage FortiSwitch units. In the commonly-
used layer 2 scenario, the FortiGate that is acting as a switch controller is connected to distribution FortiSwitch units. The 
distribution FortiSwitch units are in the top tier of stacks of FortiSwitch units and connected downwards with Convergent 
or Access layer FortiSwitch units. To leverage CAPWAP and the Fortinet proprietary FortiLink protocol, set up data and 
control planes between the FortiGate and FortiSwitch units.
FortiLink allows administrators to create and manage different VLANs, and apply the full-fledged security functions of 
FortiOS to them, such as 802.1X authentication and firewall policies. Most of the security control capabilities on the 
FortiGate are extended to the edge of the entire network, combining FortiGate, FortiSwitch, and FortiAP devices, and 
providing secure, seamless, and unified access control to users.
See FortiSwitch devices managed by FortiOS.

FortiOS 6.4.6 Administration Guide 1756


Fortinet Technologies Inc.
Log and Report

Logging and reporting are useful components to help you understand what is happening on your network, and to inform 
you about certain network activities, such as the detection of a virus, a visit to an invalid website, an intrusion, a failed log 
in attempt, and myriad others.
Logging records the traffic that passes through, starts from, or ends on the FortiGate, and records the actions the 
FortiGate took during the traffic scanning process. After this information is recorded in a log message, it is stored in a log 
file that is stored on a log device (a central storage location for log messages). FortiGates support several log devices, 
such as FortiAnalyzer, FortiGate Cloud, and syslog servers. Approximately 5% of memory is used for buffering logs sent 
to FortiAnalyzer. The FortiGate system memory and local disk can also be configured to store logs, so it is also 
considered a log device.
Reports show the recorded activity in a more readable format. A report gathers all the log information that it needs, then 
presents it in a graphical format with a customizable design and automatically generated charts showing what is 
happening on the network. Reports can be generated on FortiGate devices with disk logging and on FortiAnalyzer 
devices.

Performance statistics are not logged to disk. Performance statistics can be received by a 
syslog server or by FortiAnalyzer.

The following topics provide information about logging and reporting:
 l Viewing event logs on page 1757
 l Sample logs by log type on page 1759
 l Log buffer on FortiGates with an SSD disk on page 1778
 l Checking the email filter log on page 1781
 l Supported log types to FortiAnalyzer, syslog, and FortiAnalyzer Cloud on page 1782
 l Sending traffic logs to FortiAnalyzer Cloud on page 1782
 l Configuring multiple FortiAnalyzers on a multi-VDOM FortiGate on page 1785
 l Configuring multiple FortiAnalyzers (or syslog servers) per VDOM on page 1788
 l Source and destination UUID logging on page 1789
 l Logging the signal-to-noise ratio and signal strength per client on page 1791
 l RSSO information for authenticated destination users in logs on page 1794
 l Threat weight on page 1797
 l Troubleshooting on page 1798

Viewing event logs

All event log subtypes are available from the introductory screen and the event log subtype dropdown list on the Log &
Report > Events page. Not all of the event log subtypes are available by default. 

FortiOS 6.4.6 Administration Guide 1757


Fortinet Technologies Inc.
Log and Report

SD-WAN Events Always available.

System Events Always available.

Router Events Always available.

VPN Events Available when VPN is enabled in System > Feature Visibility.

User Events Always available.

Endpoint Events Available when Endpoint Control is enabled in System > Feature Visibility.

HA Events Always available.

Security Rating Events Always available, but logs are only generated when a Security Rating License is 


registered.

WAN Opt. & Cache Events Available on devices with two hard disks by default. On devices with one hard 


disk, the disk usage must be set to wanopt and then WAN Opt. & Cache must be 
enabled in System > Feature Visibility.

WiFi Events Available on hardware devices when WiFi Controller is enabled in System >


Feature Visibility.

FortiExtender Events Available when FortiExtender is enabled in System > Feature Visibility.

SDN Connector Events Always available.

FortiSwitch Events Always available.

FortiOS 6.4.6 Administration Guide 1758


Fortinet Technologies Inc.
Log and Report

Sample logs by log type

This topic provides a sample raw log for each subtype and the configuration requirements.

Traffic Logs > Forward Traffic

Log configuration requirements

config firewall policy


edit 1
set srcintf "port12"
set dstintf "port11"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set logtraffic all
set application-list "g-default"
set ssl-ssh-profile "certificate-inspection"
set nat enable
next
end

Sample log

date=2019-05-10 time=11:37:47 logid="0000000013" type="traffic" subtype="forward"


level="notice" vd="vdom1" eventtime=1557513467369913239 srcip=10.1.100.11 srcport=58012
srcintf="port12" srcintfrole="undefined" dstip=23.59.154.35 dstport=80 dstintf="port11"
dstintfrole="undefined" srcuuid="ae28f494-5735-51e9-f247-d1d2ce663f4b" dstuuid="ae28f494-
5735-51e9-f247-d1d2ce663f4b" poluuid="ccb269e0-5735-51e9-a218-a397dd08b7eb" sessionid=105048
proto=6 action="close" policyid=1 policytype="policy" service="HTTP" dstcountry="Canada"
srccountry="Reserved" trandisp="snat" transip=172.16.200.2 transport=58012 appid=34050
app="HTTP.BROWSER_Firefox" appcat="Web.Client" apprisk="elevated" applist="g-default"
duration=116 sentbyte=1188 rcvdbyte=1224 sentpkt=17 rcvdpkt=16 utmaction="allow" countapp=1
osname="Ubuntu" mastersrcmac="a2:e9:00:ec:40:01" srcmac="a2:e9:00:ec:40:01" srcserver=0
utmref=65500-742

Traffic Logs > Local Traffic

Log configuration requirements

config log setting


set local-in-allow enable
set local-in-deny-unicast enable
set local-in-deny-broadcast enable
set local-out enable
end

FortiOS 6.4.6 Administration Guide 1759


Fortinet Technologies Inc.
Log and Report

Sample log

date=2019-05-10 time=11:50:48 logid="0001000014" type="traffic" subtype="local"


level="notice" vd="vdom1" eventtime=1557514248379911176 srcip=172.16.200.254 srcport=62024
srcintf="port11" srcintfrole="undefined" dstip=172.16.200.2 dstport=443 dstintf="vdom1"
dstintfrole="undefined" sessionid=107478 proto=6 action="server-rst" policyid=0
policytype="local-in-policy" service="HTTPS" dstcountry="Reserved" srccountry="Reserved"
trandisp="noop" app="Web Management(HTTPS)" duration=5 sentbyte=1247 rcvdbyte=1719 sentpkt=5
rcvdpkt=6 appcat="unscanned"

Traffic Logs > Multicast Traffic

Log configuration requirements

config firewall multicast-policy


edit 1
set dstaddr 230-1-0-0
set dstintf port3
set srcaddr 172-16-200-0
set srcintf port25
set action accept
set log enable
next
end
config system setting
set multicast-forward enable
end

Sample log

date=2019-03-31 time=06:42:54 logid="0002000012" type="traffic" subtype="multicast"


level="notice" vd="vdom1" eventtime=1554039772 srcip=172.16.200.55 srcport=60660
srcintf="port25" srcintfrole="undefined" dstip=230.1.1.2 dstport=7878 dstintf="port3"
dstintfrole="undefined" sessionid=1162 proto=17 action="accept" policyid=1
policytype="multicast-policy" service="udp/7878" dstcountry="Reserved" srccountry="Reserved"
trandisp="noop" duration=22 sentbyte=5940 rcvdbyte=0 sentpkt=11 rcvdpkt=0 appcat="unscanned"

Traffic Logs > Sniffer Traffic

Log configuration requirements

config firewall sniffer


edit 3
set logtraffic all
set interface "port1"
set ips-sensor-status enable
set ips-sensor "sniffer-profile"
next
end

FortiOS 6.4.6 Administration Guide 1760


Fortinet Technologies Inc.
Log and Report

Sample log

date=2019-05-10 time=14:18:54 logid="0004000017" type="traffic" subtype="sniffer"


level="notice" vd="root" eventtime=1557523134021045897 srcip=208.91.114.4 srcport=50463
srcintf="port1" srcintfrole="undefined" dstip=104.80.88.154 dstport=443 dstintf="port1"
dstintfrole="undefined" sessionid=2193276 proto=6 action="accept" policyid=3
policytype="sniffer" service="HTTPS" dstcountry="United States" srccountry="Canada"
trandisp="snat" transip=0.0.0.0 transport=0 duration=10 sentbyte=0 rcvdbyte=0 sentpkt=0
rcvdpkt=0 appcat="unscanned" utmaction="allow" countips=1 crscore=5 craction=32768
sentdelta=0 rcvddelta=0 utmref=65162-7772

Event Logs > SD-WAN Events

Log configuration requirements

config log eventfilter


set event enable
set sdwan enable
end

Sample log

date=2020-03-29 time=16:41:30 logid="0113022923" type="event" subtype="sdwan" level="notice"


vd="root" eventtime=1585525290513555981 tz="-0700" logdesc="Virtual WAN Link status"
eventtype="Health Check" healthcheck="ping1" slatargetid=1 oldvalue="1" newvalue="2"
msg="Number of pass member changed."
date=2020-03-29 time=16:51:27 logid="0113022925" type="event" subtype="sdwan" level="notice"
vd="root" eventtime=1585525888177637570 tz="-0700" logdesc="Virtual WAN Link SLA
information" eventtype="SLA" healthcheck="ping1" slatargetid=1 interface="R150" status="up"
latency="0.013" jitter="0.001" packetloss="100.000%" inbandwidth="0kbps"
outbandwidth="0kbps" bibandwidth="0kbps" slamap="0x0" metric="packetloss" msg="Health Check
SLA status. SLA failed due to being over the performance metric threshold."

Event Logs > System Events

Log configuration requirements

config log eventfilter


set event enable
set system enable
end

Sample log

date=2019-05-13 time=11:20:54 logid="0100032001" type="event" subtype="system"


level="information" vd="vdom1" eventtime=1557771654587081441 logdesc="Admin login
successful" sn="1557771654" user="admin" ui="ssh(172.16.200.254)" method="ssh"
srcip=172.16.200.254 dstip=172.16.200.2 action="login" status="success" reason="none"
profile="super_admin" msg="Administrator admin logged in successfully from ssh
(172.16.200.254)"

FortiOS 6.4.6 Administration Guide 1761


Fortinet Technologies Inc.
Log and Report

Event Logs > Router Events

Log configuration requirements

config log eventfilter


set event enable
set router enable
end
config router bgp
set log-neighbour-changes enable
end
config router ospf
set log-neighbour-changes enable
end

Sample log

date=2019-05-13 time=14:12:26 logid="0103020301" type="event" subtype="router"


level="warning" vd="root" eventtime=1557781946677737955 logdesc="Routing log" msg="OSPF:
RECV[Hello]: From 31.1.1.1 via port9:172.16.200.1: Invalid Area ID 0.0.0.0"

Event Logs > VPN Events

Log configuration requirements

config log eventfilter


set event enable
set vpn enable
end

Sample log

date=2019-05-13 time=14:21:42 logid="0101037127" type="event" subtype="vpn" level="notice"


vd="root" eventtime=1557782502722231889 logdesc="Progress IPsec phase 1" msg="progress IPsec
phase 1" action="negotiate" remip=50.1.1.101 locip=50.1.1.100 remport=500 locport=500
outintf="port14" cookies="9091f4d4837ea71c/0000000000000000" user="N/A" group="N/A"
xauthuser="N/A" xauthgroup="N/A" assignip=N/A vpntunnel="test" status="success" init="local"
mode="main" dir="outbound" stage=1 role="initiator" result="OK"

Event Logs > User Events

Log configuration requirements

config log eventfilter


set event enable
set user enable
end

FortiOS 6.4.6 Administration Guide 1762


Fortinet Technologies Inc.
Log and Report

Sample log

date=2019-05-13 time=15:55:56 logid="0102043008" type="event" subtype="user" level="notice"


vd="root" eventtime=1557788156913809277 logdesc="Authentication success" srcip=10.1.100.11
dstip=172.16.200.55 policyid=1 interface="port10" user="bob" group="local-group1"
authproto="TELNET(10.1.100.11)" action="authentication" status="success" reason="N/A"
msg="User bob succeeded in authentication"

Event Logs > Endpoint Events

Log configuration requirements

config log eventfilter


set event enable
set endpoint enable
end

Sample log

date=2019-05-14 time=08:32:13 logid="0107045057" type="event" subtype="endpoint"


level="information" vd="root" eventtime=1557847933900764210 logdesc="FortiClient connection
added" action="add" status="success" license_limit="unlimited" used_for_type=4 connection_
type="sslvpn" count=1 user="skubas" ip=172.18.64.250 name="VAN-200957-PC"
fctuid="52C66FE08F724FE0B116DAD5062C96CD" msg="Add a FortiClient Connection."
date=2019-05-14 time=08:19:38 logid="0107045058" type="event" subtype="endpoint"
level="information" vd="root" eventtime=1557847179037488154 logdesc="FortiClient connection
closed" action="close" status="success" license_limit="unlimited" used_for_type=5
connection_type="sslvpn" count=1 user="skubas" ip=172.18.64.250 name="VAN-200957-PC"
fctuid="52C66FE08F724FE0B116DAD5062C96CD" msg="Close a FortiClient Connection."

Event Logs > HA Events

Log configuration requirements

config log eventfilter


set event enable
set ha enable
end

Sample log

date=2019-05-10 time=09:53:18 logid="0108037894" type="event" subtype="ha" level="critical"


vd="root" eventtime=1557507199208575235 logdesc="Virtual cluster member joined" msg="Virtual
cluster detected member join" vcluster=1 ha_group=0 sn="FG2K5E3916900286"

Event Logs > Security Rating Events

Log configuration requirements

config log eventfilter


set event enable

FortiOS 6.4.6 Administration Guide 1763


Fortinet Technologies Inc.
Log and Report

set security-rating enable


end

Sample log

date=2019-05-13 time=14:40:59 logid="0110052000" type="event" subtype="security-rating"


level="notice" vd="root" eventtime=1557783659536252389 logdesc="Security Rating summary"
auditid=1557783648 audittime=1557783659 auditscore="5.0" criticalcount=1 highcount=6
mediumcount=8 lowcount=0 passedcount=38

Event Logs > WAN Opt & Cache Events

Log configuration requirements

config log eventfilter


set event enable
set wan-opt enable
end

Sample log

date=2019-05-14 time=09:37:46 logid="0105048039" type="event" subtype="wad" level="error"


vd="root" eventtime=1557851867382676560 logdesc="SSL fatal alert sent" session_id=0
policyid=0 srcip=0.0.0.0 srcport=0 dstip=208.91.113.83 dstport=636 action="send" alert="2"
desc="certificate unknown" msg="SSL Alert sent"
date=2019-05-10 time=15:48:31 logid="0105048038" type="event" subtype="wad" level="error"
vd="root" eventtime=1557528511221374615 logdesc="SSL Fatal Alert received" session_
id=5f88ddd1 policyid=0 srcip=172.18.70.15 srcport=59880 dstip=91.189.89.223 dstport=443
action="receive" alert="2" desc="unknown ca" msg="SSL Alert received"

Event Logs > Wireless

Log configuration requirements

config log eventfilter


set event enable
set wireless-activity enable
end
config wireless-controller log
set status enable
end

Sample log

date=2019-05-13 time=11:30:08 logid="0104043568" type="event" subtype="wireless"


level="warning" vd="vdom1" eventtime=1557772208134721423 logdesc="Fake AP on air"
ssid="fortinet" bssid="90:6c:ac:89:e1:fa" aptype=0 rate=130 radioband="802.11n" channel=6
action="fake-ap-on-air" manuf="Fortinet, Inc." security="WPA2 Personal" encryption="AES"
signal=-93 noise=-95 live=353938 age=505 onwire="no" detectionmethod="N/A" stamac="N/A"
apscan="N/A" sndetected="N/A" radioiddetected=0 stacount=0 snclosest="FP320C3X17001909"
radioidclosest=0 apstatus=0 msg="Fake AP On-air fortinet 90:6c:ac:89:e1:fa chan 6 live
353938 age 505"

FortiOS 6.4.6 Administration Guide 1764


Fortinet Technologies Inc.
Log and Report

Event Logs > SDN Connector

Log configuration requirements

config log eventfilter


set event enable
set connector enable
end

Sample log

date=2019-05-13 time=16:09:43 logid="0112053200" type="event" subtype="connector"


level="information" vd="root" eventtime=1557788982 logdesc="IP address added" cfgobj="aws1"
action="object-add" addr="54.210.36.196" cldobjid="i-0fe5a1ef16bb94796" netid="vpc-97e81cee"
msg="connector object discovered in addr-obj aws1, 54.210.36.196"
date=2019-05-13 time=16:09:43 logid="0112053201" type="event" subtype="connector"
level="information" vd="root" eventtime=1557788982 logdesc="IP address removed"
cfgobj="aws1" action="object-remove" addr="172.31.31.101" cldobjid="i-0fe5a1ef16bb94796"
netid="vpc-97e81cee" msg="connector object removed in addr-obj aws1, 172.31.31.101"

Event Logs > FortiExtender Events

Log configuration requirements

config log eventfilter


set event enable
set fortiextender enable
end

Sample log

date=2019-02-20 time=09:57:22 logid="0111046400" type="event" subtype="fortiextender"


level="notice" vd="root" eventtime=1550685442 logdesc="FortiExtender system activity"
action="FortiExtender Authorized" msg="ext SN:FX04DN4N16002352 authorized"
date=2019-02-20 time=09:51:42 logid="0111046401" type="event" subtype="fortiextender"
level="notice" vd="root" eventtime=1550685102 logdesc="FortiExtender controller activity"
sn="FX04DN4N16002352" ip=11.11.11.2 action="ext session-deauthed" msg="ext
SN:FX04DN4N16002352 deauthorized"
date=2019-02-20 time=10:02:26 logid="0111046409" type="event" subtype="fortiextender"
level="information" vd="root" eventtime=1550685746 logdesc="Remote FortiExtender info
activity" sn="FX04DN4N16002352" ip=11.11.11.2 action="Cellular Connected"
imei="359376060442770" imsi="302720502331361" iccid="89302720403038146410"
phonenumber="+16045067526" carrier="Rogers" plan="Rogers-plan" apn="N/A" service="LTE"
msg="FX04DN4N16002352 STATE: sim with imsi:302720502331361 in slot:2 on carrier:Rogers
connected"
date=2019-02-20 time=10:33:57 logid="0111046407" type="event" subtype="fortiextender"
level="warning" vd="root" eventtime=1550687636 logdesc="Remote FortiExtender warning
activity" sn="FX04DN4N16002352" ip=11.11.11.2 action="Cellular Disconnected"
imei="359376060442770" imsi="N/A" iccid="N/A" phonenumber="N/A" carrier="N/A" plan="N/A"
apn="N/A" service="LTE" msg="FX04DN4N16002352 STATE: sim with imsi: in slot:2 on carrier:N/A
disconnected"

FortiOS 6.4.6 Administration Guide 1765


Fortinet Technologies Inc.
Log and Report

date=2019-02-20 time=10:02:24 logid="0111046409" type="event" subtype="fortiextender"


level="information" vd="root" eventtime=1550685744 logdesc="Remote FortiExtender info
activity" sn="FX04DN4N16002352" ip=11.11.11.2 action="Cellular Connecting"
imei="359376060442770" imsi="302720502331361" iccid="89302720403038146410"
phonenumber="+16045067526" carrier="Rogers" plan="Rogers-plan" apn="N/A" service="N/A"
msg="FX04DN4N16002352 STATE: sim with imsi:302720502331361 in slot:2 on carrier:Rogers
connecting
date=2019-02-20 time=10:47:19 logid="0111046407" type="event" subtype="fortiextender"
level="warning" vd="root" eventtime=1550688438 logdesc="Remote FortiExtender warning
activity" sn="FX04DN4N16002352" ip=11.11.11.2 action="SIM Change" imei="N/A" slot=2
msg="FX04DN4N16002352 SIM: SIM2 is inserted"
date=2019-02-20 time=10:57:50 logid="0111046407" type="event" subtype="fortiextender"
level="warning" vd="root" eventtime=1550689069 logdesc="Remote FortiExtender warning
activity" sn="FX04DN4N16002352" ip=11.11.11.2 action="SIM Change" imei="359376060442770"
slot=1 msg="FX04DN4N16002352 SIM: SIM2 is plucked out"
date=2019-02-20 time=12:02:24 logid="0111046407" type="event" subtype="fortiextender"
level="warning" vd="root" eventtime=1550692942 logdesc="Remote FortiExtender warning
activity" sn="FX04DN4N16002352" ip=11.11.11.2 action="SIM Switch" imei="359376060442770"
reason="sim-switch can't take effect due to unavailability of 2 sim cards"
msg="FX04DN4N16002352 SIM: sim-switch can't take effect due to unavailability of 2 sim
cards"
date=2019-02-19 time=18:08:46 logid="0111046409" type="event" subtype="fortiextender"
level="information" vd="root" eventtime=1550628524 logdesc="Remote FortiExtender info
activity" sn="FX04DN4N16002352" ip=11.11.11.2 action="Cellular Signal Statistics"
imei="359376060442770" imsi="302720502331361" iccid="89302720403038146410"
phonenumber="+16045067526" carrier="Rogers" plan="Rogers-plan" service="LTE" sinr="7.0 dB"
rsrp="-89 dBm" rsrq="-16 dB" signalstrength="92 dBm" rssi="-54" temperature="40 C" apn="N/A"
msg="FX04DN4N16002352 INFO: LTE RSSI=-54dBm,RSRP=-89dBm,RSRQ=-
16dB,SINR=7.0dB,BAND=B2,CELLID=061C700F,BW=15MHz,RXCH=1025,TXCH=19025,TAC=8AAC,TEMPERATURE=4
0 C"
date=2019-02-19 time=18:09:46 logid="0111046409" type="event" subtype="fortiextender"
level="information" vd="root" eventtime=1550628585 logdesc="Remote FortiExtender info
activity" sn="FX04DN4N16002352" ip=11.11.11.2 action="Cellular Data Statistics"
imei="359376060442770" imsi="302720502331361" iccid="89302720403038146410"
phonenumber="+16045067526" carrier="Rogers" plan="Rogers-plan" service="LTE" rcvdbyte=7760
sentbyte=3315 msg="FX04DN4N16002352 INFO: SIM2 LTE, rx=7760, tx=3315, rx_diff=2538, tx_
diff=567"

Event Logs > FortiSwitch Events

Log configuration requirements

config log eventfilter


set event enable
set switch-controller enable
end

Sample log

date=2020-09-28 time=15:37:02 eventtime=1601332622257714795 tz="-0700" logid="0114032695"


type="event" subtype="switch-controller" level="notice" vd="vdom1" logdesc="FortiSwitch

FortiOS 6.4.6 Administration Guide 1766


Fortinet Technologies Inc.
Log and Report

link" user="Fortilink" sn="S248EPTF18001384" name="S248EPTF18001384" msg="port51 Module re-


initialized to recover from ERROR state."
date=2020-09-28 time=15:37:02 eventtime=1601332622255619520 tz="-0700" logid="0114032697"
type="event" subtype="switch-controller" level="warning" vd="vdom1" logdesc="FortiSwitch
switch" user="Fortilink" sn="S248EPTF18001384" name="S248EPTF18001384" msg="FortiLink:
internal echo reply timed out"
date=2020-09-28 time=15:37:01 eventtime=1601332621664809633 tz="-0700" logid="0114032605"
type="event" subtype="switch-controller" level="information" vd="vdom1" logdesc="Switch-
Controller Tunnel Up" user="Switch-Controller" ui="cu_acd" sn="S248EPTF18001384"
name="S248EPTF18001384" msg="CAPWAP Tunnel Up (169.254.1.3)"
date=2020-09-28 time=15:36:59 eventtime=1601332619501461995 tz="-0700" logid="0114022904"
type="event" subtype="switch-controller" level="notice" vd="vdom1" logdesc="CAPUTP session
status notification" user="Switch-Controller" ui="cu_acd" sn="S248EPTF18001384"
name="S248EPTF18001384" msg="S248EPTF18001384 Connected via session join" action="session-
join" srcip=169.254.1.3
date=2020-09-28 time=15:36:26 eventtime=1601332560434649361 tz="-0700" logid="0114032601"
type="event" subtype="switch-controller" level="information" vd="vdom1" logdesc="Switch-
Controller discovered" user="daemon_admin" ui="cmdbsvr" sn="S524DN4K16000116"
name="S524DN4K16000116" msg="S524DN4K16000116 Discovered"
date=2020-09-28 time=15:36:26 eventtime=1601332560405228924 tz="-0700" logid="0114032601"
type="event" subtype="switch-controller" level="information" vd="vdom1" logdesc="Switch-
Controller discovered" user="daemon_admin" ui="cmdbsvr" sn="S248EPTF18001827"
name="S248EPTF18001827" msg="S248EPTF18001827 Discovered"
date=2020-09-28 time=15:36:26 eventtime=1601332560336851635 tz="-0700" logid="0114032601"
type="event" subtype="switch-controller" level="information" vd="vdom1" logdesc="Switch-
Controller discovered" user="daemon_admin" ui="cmdbsvr" sn="S248EPTF18001384"
name="S248EPTF18001384" msg="S248EPTF18001384 Discovered"

Security Logs > Antivirus

Log configuration requirements

config antivirus profile


edit "test-av"
config http
set options scan
end
set av-virus-log enable
set av-block-log enable
next
end
config firewall policy
edit 1
set srcintf "port12"
set dstintf "port11"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable

FortiOS 6.4.6 Administration Guide 1767


Fortinet Technologies Inc.
Log and Report

set av-profile "test-av"


set logtraffic utm
set nat enable
next
end

Sample log

date=2019-05-13 time=11:45:03 logid="0211008192" type="utm" subtype="virus"


eventtype="infected" level="warning" vd="vdom1" eventtime=1557773103767393505 msg="File is
infected." action="blocked" service="HTTP" sessionid=359260 srcip=10.1.100.11
dstip=172.16.200.55 srcport=60446 dstport=80 srcintf="port12" srcintfrole="undefined"
dstintf="port11" dstintfrole="undefined" policyid=4 proto=6 direction="incoming"
filename="eicar.com" quarskip="File-was-not-quarantined." virus="EICAR_TEST_FILE"
dtype="Virus" ref="http://www.fortinet.com/ve?vn=EICAR_TEST_FILE" virusid=2172
url="http://172.16.200.55/virus/eicar.com" profile="g-default" agent="curl/7.47.0"
analyticscksum="275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f"
analyticssubmit="false" crscore=50 craction=2 crlevel="critical"
# Corresponding Traffic Log #
date=2019-05-13 time=11:45:04 logid="0000000013" type="traffic" subtype="forward"
level="notice" vd="vdom1" eventtime=1557773104815101919 srcip=10.1.100.11 srcport=60446
srcintf="port12" srcintfrole="undefined" dstip=172.16.200.55 dstport=80 dstintf="port11"
dstintfrole="undefined" srcuuid="48420c8a-5c88-51e9-0424-a37f9e74621e" dstuuid="187d6f46-
5c86-51e9-70a0-fadcfc349c3e" poluuid="3888b41a-5c88-51e9-cb32-1c32c66b4edf" sessionid=359260
proto=6 action="close" policyid=4 policytype="policy" service="HTTP" dstcountry="Reserved"
srccountry="Reserved" trandisp="snat" transip=172.16.200.2 transport=60446 appid=15893
app="HTTP.BROWSER" appcat="Web.Client" apprisk="medium" applist="g-default" duration=1
sentbyte=412 rcvdbyte=2286 sentpkt=6 rcvdpkt=6 wanin=313 wanout=92 lanin=92 lanout=92
utmaction="block" countav=1 countapp=1 crscore=50 craction=2 osname="Ubuntu"
mastersrcmac="a2:e9:00:ec:40:01" srcmac="a2:e9:00:ec:40:01" srcserver=0 utmref=65497-770

Security Logs > Web Filter

Log configuration requirements

config webfilter profile


edit "test-webfilter"
set web-content-log enable
set web-filter-activex-log enable
set web-filter-command-block-log enable
set web-filter-cookie-log enable
set web-filter-applet-log enable
set web-filter-jscript-log enable
set web-filter-js-log enable
set web-filter-vbs-log enable
set web-filter-unknown-log enable
set web-filter-referer-log enable
set web-filter-cookie-removal-log enable
set web-url-log enable
set web-invalid-domain-log enable
set web-ftgd-err-log enable
set web-ftgd-quota-usage enable
next
end

FortiOS 6.4.6 Administration Guide 1768


Fortinet Technologies Inc.
Log and Report

config firewall policy


edit 1
set name "v4-out"
set srcintf "port12"
set dstintf "port11"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set logtraffic utm
set utm-status enable
set webfilter-profile "test-webfilter"
set nat enable
next
end

Sample log

date=2019-05-13 time=16:29:45 logid="0316013056" type="utm" subtype="webfilter"


eventtype="ftgd_blk" level="warning" vd="vdom1" eventtime=1557790184975119738 policyid=1
sessionid=381780 srcip=10.1.100.11 srcport=44258 srcintf="port12" srcintfrole="undefined"
dstip=185.244.31.158 dstport=80 dstintf="port11" dstintfrole="undefined" proto=6
service="HTTP" hostname="morrishittu.ddns.net" profile="test-webfilter" action="blocked"
reqtype="direct" url="/" sentbyte=84 rcvdbyte=0 direction="outgoing" msg="URL belongs to a
denied category in policy" method="domain" cat=26 catdesc="Malicious Websites" crscore=30
craction=4194304 crlevel="high"
# Corresponding traffic log #
date=2019-05-13 time=16:29:50 logid="0000000013" type="traffic" subtype="forward"
level="notice" vd="vdom1" eventtime=1557790190452146185 srcip=10.1.100.11 srcport=44258
srcintf="port12" srcintfrole="undefined" dstip=185.244.31.158 dstport=80 dstintf="port11"
dstintfrole="undefined" srcuuid="ae28f494-5735-51e9-f247-d1d2ce663f4b" dstuuid="ae28f494-
5735-51e9-f247-d1d2ce663f4b" poluuid="ccb269e0-5735-51e9-a218-a397dd08b7eb" sessionid=381780
proto=6 action="close" policyid=1 policytype="policy" service="HTTP" dstcountry="Germany"
srccountry="Reserved" trandisp="snat" transip=172.16.200.2 transport=44258 duration=5
sentbyte=736 rcvdbyte=3138 sentpkt=14 rcvdpkt=5 appcat="unscanned" utmaction="block"
countweb=1 crscore=30 craction=4194304 osname="Ubuntu" mastersrcmac="a2:e9:00:ec:40:01"
srcmac="a2:e9:00:ec:40:01" srcserver=0 utmref=65497-796

Security Logs > DNS Query

Log configuration requirements

config dnsfilter profile


edit "dnsfilter_fgd"
config ftgd-dns
set options error-allow
end
set log-all-domain enable
set block-botnet enable
next
end
config firewall policy
edit 1

FortiOS 6.4.6 Administration Guide 1769


Fortinet Technologies Inc.
Log and Report

set srcintf "port12"


set dstintf "port11"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set dnsfilter-profile "dnsfilter_fgd"
set logtraffic utm
set nat enable
next
end

Sample log

date=2019-05-15 time=15:05:49 logid="1501054802" type="utm" subtype="dns" eventtype="dns-


response" level="notice" vd="vdom1" eventtime=1557957949740931155 policyid=1 sessionid=6887
srcip=10.1.100.22 srcport=50002 srcintf="port12" srcintfrole="undefined"
dstip=172.16.100.100 dstport=53 dstintf="port11" dstintfrole="undefined" proto=17
profile="dnsfilter_fgd" srcmac="a2:e9:00:ec:40:41" xid=57945 qname="changelogs.ubuntu.com"
qtype="AAAA" qtypeval=28 qclass="IN" ipaddr="2001:67c:1560:8008::11" msg="Domain is
monitored" action="pass" cat=52 catdesc="Information Technology"
date=2019-05-15 time=15:05:49 logid="1500054000" type="utm" subtype="dns" eventtype="dns-
query" level="information" vd="vdom1" eventtime=1557957949653103543 policyid=1
sessionid=6887 srcip=10.1.100.22 srcport=50002 srcintf="port12" srcintfrole="undefined"
dstip=172.16.100.100 dstport=53 dstintf="port11" dstintfrole="undefined" proto=17
profile="dnsfilter_fgd" srcmac="a2:e9:00:ec:40:41" xid=57945 qname="changelogs.ubuntu.com"
qtype="AAAA" qtypeval=28 qclass="IN"
# Corresponding traffic log #
date=2019-05-15 time=15:08:49 logid="0000000013" type="traffic" subtype="forward"
level="notice" vd="vdom1" eventtime=1557958129950003945 srcip=10.1.100.22 srcport=50002
srcintf="port12" srcintfrole="undefined" dstip=172.16.100.100 dstport=53 dstintf="port11"
dstintfrole="undefined" srcuuid="ae28f494-5735-51e9-f247-d1d2ce663f4b" dstuuid="ae28f494-
5735-51e9-f247-d1d2ce663f4b" poluuid="ccb269e0-5735-51e9-a218-a397dd08b7eb" sessionid=6887
proto=17 action="accept" policyid=1 policytype="policy" service="DNS" dstcountry="Reserved"
srccountry="Reserved" trandisp="snat" transip=172.16.200.2 transport=50002 duration=180
sentbyte=67 rcvdbyte=207 sentpkt=1 rcvdpkt=1 appcat="unscanned" utmaction="allow" countdns=1
osname="Linux" mastersrcmac="a2:e9:00:ec:40:41" srcmac="a2:e9:00:ec:40:41" srcserver=0
utmref=65495-306

Security Logs > Application Control

Log configuration requirements

# log enabled by default in application profile entry

config application list


edit "block-social.media"
set other-application-log enable
config entries
edit 1
set category 2 5 6 23
set log enable

FortiOS 6.4.6 Administration Guide 1770


Fortinet Technologies Inc.
Log and Report

next
end
next
end
config firewall policy
edit 1
set name "to_Internet"
set srcintf "port10"
set dstintf "port9"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set logtraffic utm
set application-list "block-social.media"
set ssl-ssh-profile "deep-inspection"
set nat enable
next
end

Sample log

date=2019-05-15 time=18:03:36 logid="1059028704" type="utm" subtype="app-ctrl"


eventtype="app-ctrl-all" level="information" vd="root" eventtime=1557968615 appid=40568
srcip=10.1.100.22 dstip=195.8.215.136 srcport=50798 dstport=443 srcintf="port10"
srcintfrole="lan" dstintf="port9" dstintfrole="wan" proto=6 service="HTTPS"
direction="outgoing" policyid=1 sessionid=4414 applist="block-social.media"
appcat="Web.Client" app="HTTPS.BROWSER" action="pass" hostname="www.dailymotion.com"
incidentserialno=1962906680 url="/" msg="Web.Client: HTTPS.BROWSER," apprisk="medium"
scertcname="*.dailymotion.com" scertissuer="DigiCert SHA2 High Assurance Server CA"
date=2019-05-15 time=18:03:35 logid="1059028705" type="utm" subtype="app-ctrl"
eventtype="app-ctrl-all" level="warning" vd="root" eventtime=1557968615 appid=16072
srcip=10.1.100.22 dstip=195.8.215.136 srcport=50798 dstport=443 srcintf="port10"
srcintfrole="lan" dstintf="port9" dstintfrole="wan" proto=6 service="HTTPS"
direction="incoming" policyid=1 sessionid=4414 applist="block-social.media"
appcat="Video/Audio" app="Dailymotion" action="block" hostname="www.dailymotion.com"
incidentserialno=1962906682 url="/" msg="Video/Audio: Dailymotion," apprisk="elevated"
date=2019-05-15 time=18:03:35 logid="1059028705" type="utm" subtype="app-ctrl"
eventtype="app-ctrl-all" level="warning" vd="root" eventtime=1557968615 appid=16072
srcip=10.1.100.22 dstip=195.8.215.136 srcport=50798 dstport=443 srcintf="port10"
srcintfrole="lan" dstintf="port9" dstintfrole="wan" proto=6 service="HTTPS"
direction="incoming" policyid=1 sessionid=4414 applist="block-social.media"
appcat="Video/Audio" app="Dailymotion" action="block" hostname="www.dailymotion.com"
incidentserialno=1962906681 url="/" msg="Video/Audio: Dailymotion," apprisk="elevated"
# Corresponding Traffic Log # date=2019-05-15 time=18:03:41 logid="0000000013"
type="traffic" subtype="forward" level="notice" vd="root" eventtime=1557968619
srcip=10.1.100.22 srcport=50798 srcintf="port10" srcintfrole="lan" dstip=195.8.215.136
dstport=443 dstintf="port9" dstintfrole="wan" poluuid="d8ce7a90-7763-51e9-e2be-741294c96f31"
sessionid=4414 proto=6 action="client-rst" policyid=1 policytype="policy" service="HTTPS"
dstcountry="France" srccountry="Reserved" trandisp="snat" transip=172.16.200.10
transport=50798 appid=16072 app="Dailymotion" appcat="Video/Audio" apprisk="elevated"
applist="block-social.media" appact="drop-session" duration=5 sentbyte=1150 rcvdbyte=7039

FortiOS 6.4.6 Administration Guide 1771


Fortinet Technologies Inc.
Log and Report

sentpkt=13 utmaction="block" countapp=3 devtype="Unknown" devcategory="None"


mastersrcmac="00:0c:29:51:38:5e" srcmac="00:0c:29:51:38:5e" srcserver=0 utmref=0-330

Security Logs > Intrusion Prevention

Log configuration requirements

# log enabled by default in ips sensor

config ips sensor


edit "block-critical-ips"
config entries
edit 1
set severity critical
set status enable
set action block
set log enable
next
end
next
end
config firewall policy
edit 1
set name "to_Internet"
set srcintf "port10"
set dstintf "port9"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set logtraffic utm
set ips-sensor "block-critical-ips"
set nat enable
next
end

Sample log

date=2019-05-15 time=17:56:41 logid="0419016384" type="utm" subtype="ips"


eventtype="signature" level="alert" vd="root" eventtime=1557968201 severity="critical"
srcip=10.1.100.22 srccountry="Reserved" dstip=172.16.200.55 srcintf="port10"
srcintfrole="lan" dstintf="port9" dstintfrole="wan" sessionid=4017 action="dropped" proto=6
service="HTTP" policyid=1 attack="Adobe.Flash.newfunction.Handling.Code.Execution"
srcport=46810 dstport=80 hostname="172.16.200.55" url="/ips/sig1.pdf" direction="incoming"
attackid=23305 profile="block-critical-ips" ref="http://www.fortinet.com/ids/VID23305"
incidentserialno=582633933 msg="applications3:
Adobe.Flash.newfunction.Handling.Code.Execution," crscore=50 craction=4096
crlevel="critical"
# Corresponding Traffic Log # date=2019-05-15 time=17:58:10 logid="0000000013"
type="traffic" subtype="forward" level="notice" vd="root" eventtime=1557968289
srcip=10.1.100.22 srcport=46810 srcintf="port10" srcintfrole="lan" dstip=172.16.200.55
dstport=80 dstintf="port9" dstintfrole="wan" poluuid="d8ce7a90-7763-51e9-e2be-741294c96f31"

FortiOS 6.4.6 Administration Guide 1772


Fortinet Technologies Inc.
Log and Report

sessionid=4017 proto=6 action="close" policyid=1 policytype="policy" service="HTTP"


dstcountry="Reserved" srccountry="Reserved" trandisp="snat" transip=172.16.200.10
transport=46810 duration=89 sentbyte=565 rcvdbyte=9112 sentpkt=9 rcvdpkt=8
appcat="unscanned" utmaction="block" countips=1 crscore=50 craction=4096 devtype="Unknown"
devcategory="None" mastersrcmac="00:0c:29:51:38:5e" srcmac="00:0c:29:51:38:5e" srcserver=0
utmref=0-302

Security Logs > Anomaly

Log configuration requirements

config firewall DoS-policy


edit 1
set interface "port12"
set srcaddr "all"
set dstaddr "all"
set service "ALL"
config anomaly
edit "icmp_flood"
set status enable
set log enable
set action block
set threshold 50
next
end
next
end

Sample log

date=2019-05-13 time=17:05:59 logid="0720018433" type="utm" subtype="anomaly"


eventtype="anomaly" level="alert" vd="vdom1" eventtime=1557792359461869329
severity="critical" srcip=10.1.100.11 srccountry="Reserved" dstip=172.16.200.55
srcintf="port12" srcintfrole="undefined" sessionid=0 action="clear_session" proto=1
service="PING" count=1 attack="icmp_flood" icmpid="0x1474" icmptype="0x08" icmpcode="0x00"
attackid=16777316 policyid=1 policytype="DoS-policy"
ref="http://www.fortinet.com/ids/VID16777316" msg="anomaly: icmp_flood, 51 > threshold 50"
crscore=50 craction=4096 crlevel="critical"

Security Logs > Data Leak Prevention

Log configuration requirements

config dlp sensor


edit "dlp-file-type-test"
set comment ''
set replacemsg-group ''
config filter
edit 1
set name ''
set severity medium
set type file
set proto http-get http-post ftp
set filter-by file-type

FortiOS 6.4.6 Administration Guide 1773


Fortinet Technologies Inc.
Log and Report

set file-type 1
set archive enable
set action block
next
end
set dlp-log enable
next
end
config firewall policy
edit 1
set name "to_Internet"
set srcintf "port10"
set dstintf "port9"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set inspection-mode proxy
set logtraffic utm
set dlp-sensor "dlp-file-type-test"
set ssl-ssh-profile "deep-inspection"
set nat enable
next
end

Sample log

date=2019-05-15 time=17:45:30 logid="0954024576" type="utm" subtype="dlp" eventtype="dlp"


level="warning" vd="root" eventtime=1557967528 filteridx=1 dlpextra="dlp-file-size11"
filtertype="file-type" filtercat="file" severity="medium" policyid=1 sessionid=3423
epoch=1740880646 eventid=0 srcip=10.1.100.22 srcport=50354 srcintf="port10"
srcintfrole="lan" dstip=52.216.177.83 dstport=443 dstintf="port9" dstintfrole="wan" proto=6
service="HTTPS" filetype="pdf" direction="incoming" action="block"
hostname="fortinetweb.s3.amazonaws.com" url="/docs.fortinet.com/v2/attachments/be3d0e3d-
4b62-11e9-94bf-00505692583a/FortiOS_6.2.0_Log_Reference.pdf" agent="Wget/1.17.1"
filename="FortiOS_6.2.0_Log_Reference.pdf" filesize=16360 profile="dlp-file-type-test"
# Corresponding Traffic Log #
date=2019-05-15 time=17:45:34 logid="0000000013" type="traffic" subtype="forward"
level="notice" vd="root" eventtime=1557967534 srcip=10.1.100.22 srcport=50354
srcintf="port10" srcintfrole="lan" dstip=52.216.177.83 dstport=443 dstintf="port9"
dstintfrole="wan" poluuid="d8ce7a90-7763-51e9-e2be-741294c96f31" sessionid=3423 proto=6
action="server-rst" policyid=1 policytype="policy" service="HTTPS" dstcountry="United
States" srccountry="Reserved" trandisp="snat" transip=172.16.200.10 transport=50354
duration=5 sentbyte=2314 rcvdbyte=5266 sentpkt=33 rcvdpkt=12 appcat="unscanned" wanin=43936
wanout=710 lanin=753 lanout=753 utmaction="block" countdlp=1 crscore=5 craction=262144
crlevel="low" devtype="Unknown" devcategory="None" mastersrcmac="00:0c:29:51:38:5e"
srcmac="00:0c:29:51:38:5e" srcserver=0 utmref=0-152

FortiOS 6.4.6 Administration Guide 1774


Fortinet Technologies Inc.
Log and Report

Security Logs > SSH and Security Logs > SSL

Log configuration requirements

config ssh-filter profile


edit "ssh-deepscan"
set block shell
set log shell
set default-command-log disable
next
end
config firewall policy
edit 1
set srcintf "port21"
set dstintf "port23"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set inspection-mode proxy
set ssh-filter-profile "ssh-deepscan"
set profile-protocol-options "protocol"
set ssl-ssh-profile "ssl"
set nat enable
next
end

For SSL-Traffic-log, enable logtraffic all

config firewall policy


edit 1
set srcintf "dmz"
set dstintf "wan1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set inspection-mode proxy
set logtraffic all
set ssl-ssh-profile "deep-inspection"
set nat enable
next
end

For SSL-UTM-log

#EVENTTYPE="SSL-ANOMALIES"

By default, ssl-anomalies-log is enabled.

FortiOS 6.4.6 Administration Guide 1775


Fortinet Technologies Inc.
Log and Report

config firewall ssl-ssh-profile


edit "deep-inspection"
set comment "Read-only deep inspection profile."
set server-cert-mode re-sign
set caname "Fortinet_CA_SSL"
set untrusted-caname "Fortinet_CA_Untrusted"
set ssl-anomalies-log enable
set ssl-exemptions-log disable
set ssl-negotiation-log disable
set rpc-over-https disable
set mapi-over-https disable
set use-ssl-server disable
next
end
# EVENTTYPE="SSL-EXEMPT"

Enable ssl-exemptions-log to generate ssl-utm-exempt log.
config firewall ssl-ssh-profile
edit "deep-inspection"
set comment "Read-only deep inspection profile."
set server-cert-mode re-sign
set caname "Fortinet_CA_SSL"
set untrusted-caname "Fortinet_CA_Untrusted"
set ssl-anomalies-log enable
set ssl-exemptions-log enable
set ssl-negotiation-log disable
set rpc-over-https disable
set mapi-over-https disable
set use-ssl-server disable
next
end
# EVENTTYPE="SSL-negotiation"

Enable ssl-negotiation-log to log SSL negotiation..
config firewall ssl-ssh-profile
edit "deep-inspection"
set comment "Read-only deep inspection profile."
set server-cert-mode re-sign
set caname "Fortinet_CA_SSL"
set untrusted-caname "Fortinet_CA_Untrusted"
set ssl-anomalies-log enable
set ssl-exemptions-log enable
set ssl-negotiation-log enable
set rpc-over-https disable
set mapi-over-https disable
set use-ssl-server disable
next
end

Sample log for SSH

date=2019-05-15 time=16:18:17 logid="1601061010" type="utm" subtype="ssh" eventtype="ssh-


channel" level="warning" vd="vdom1" eventtime=1557962296 policyid=1 sessionid=344
profile="ssh-deepscan" srcip=10.1.100.11 srcport=43580 dstip=172.16.200.44 dstport=22

FortiOS 6.4.6 Administration Guide 1776


Fortinet Technologies Inc.
Log and Report

srcintf="port21" srcintfrole="undefined" dstintf="port23" dstintfrole="undefined" proto=6


action="blocked" direction="outgoing" login="root" channeltype="shell"
# Corresponding Traffic Log #
date=2019-05-15 time=16:18:18 logid="0000000013" type="traffic" subtype="forward"
level="notice" vd="vdom1" eventtime=1557962298 srcip=10.1.100.11 srcport=43580
srcintf="port21" srcintfrole="undefined" dstip=172.16.200.44 dstport=22 dstintf="port23"
dstintfrole="undefined" poluuid="49871fae-7371-51e9-17b4-43c7ff119195" sessionid=344 proto=6
action="close" policyid=1 policytype="policy" service="SSH" dstcountry="Reserved"
srccountry="Reserved" trandisp="snat" transip=172.16.200.171 transport=43580 duration=8
sentbyte=3093 rcvdbyte=2973 sentpkt=18 rcvdpkt=16 appcat="unscanned" utmaction="block"
countssh=1 utmref=65535-0

Sample log for SSL

For SSL-Traffic-log

date=2019-05-16 time=10:08:26 logid="0000000013" type="traffic" subtype="forward"


level="notice" vd="root" eventtime=1558026506763925658 srcip=10.1.100.66 srcport=38572
srcintf="dmz" srcintfrole="dmz" dstip=104.154.89.105 dstport=443 dstintf="wan1"
dstintfrole="wan" poluuid="a17c0a38-75c6-51e9-4c0d-d547347b63e5" sessionid=100 proto=6
action="server-rst" policyid=1 policytype="policy" service="HTTPS" dstcountry="United
States" srccountry="Reserved" trandisp="snat" transip=172.16.200.11 transport=38572
duration=5 sentbyte=930 rcvdbyte=6832 sentpkt=11 rcvdpkt=19 appcat="unscanned" wanin=1779
wanout=350 lanin=754 lanout=754 utmaction="block" countssl=1 crscore=5 craction=262144
crlevel="low" utmref=65467-0

For SSL-UTM-log

#EVENTTYPE="SSL-ANOMALIES"
date=2019-03-28 time=10:44:53 logid="1700062002" type="utm" subtype="ssl" eventtype="ssl-
anomalies" level="warning" vd="vdom1" eventtime=1553795092 policyid=1 sessionid=10796
service="HTTPS" srcip=10.1.100.66 srcport=43602 dstip=104.154.89.105 dstport=443
srcintf="port2" srcintfrole="undefined" dstintf="port3" dstintfrole="undefined" proto=6
action="blocked" msg="Server certificate blocked" reason="block-cert-invalid"
date=2019-03-28 time=10:51:17 logid="1700062002" type="utm" subtype="ssl" eventtype="ssl-
anomalies" level="warning" vd="vdom1" eventtime=1553795476 policyid=1 sessionid=11110
service="HTTPS" srcip=10.1.100.66 srcport=49076 dstip=172.16.200.99 dstport=443
srcintf="port2" srcintfrole="undefined" dstintf="port3" dstintfrole="undefined" proto=6
action="blocked" msg="Server certificate blocked" reason="block-cert-untrusted"
date=2019-03-28 time=10:55:43 logid="1700062002" type="utm" subtype="ssl" eventtype="ssl-
anomalies" level="warning" vd="vdom1" eventtime=1553795742 policyid=1 sessionid=11334
service="HTTPS" srcip=10.1.100.66 srcport=49082 dstip=172.16.200.99 dstport=443
srcintf="port2" srcintfrole="undefined" dstintf="port3" dstintfrole="undefined" proto=6
action="blocked" msg="Server certificate blocked" reason="block-cert-req"
date=2019-03-28 time=10:57:42 logid="1700062053" type="utm" subtype="ssl" eventtype="ssl-
anomalies" level="warning" vd="vdom1" eventtime=1553795861 policyid=1 sessionid=11424
service="SMTPS" profile="block-unsupported-ssl" srcip=10.1.100.66 srcport=41296
dstip=172.16.200.99 dstport=8080 srcintf="port2" srcintfrole="undefined" dstintf=unknown-0
dstintfrole="undefined" proto=6 action="blocked" msg="Connection is blocked due to
unsupported SSL traffic" reason="malformed input"
date=2019-03-28 time=11:00:17 logid="1700062002" type="utm" subtype="ssl" eventtype="ssl-
anomalies" level="warning" vd="vdom1" eventtime=1553796016 policyid=1 sessionid=11554

FortiOS 6.4.6 Administration Guide 1777


Fortinet Technologies Inc.
Log and Report

service="HTTPS" srcip=10.1.100.66 srcport=49088 dstip=172.16.200.99 dstport=443


srcintf="port2" srcintfrole="undefined" dstintf="port3" dstintfrole="undefined" proto=6
action="blocked" msg="Server certificate blocked" reason="block-cert-sni-mismatch"
# EVENTTYPE="SSL-EXEMPT"

date=2019-03-28 time=11:09:14 logid="1701062003" type="utm" subtype="ssl" eventtype="ssl-


exempt" level="notice" vd="vdom1" eventtime=1553796553 policyid=1 sessionid=12079
service="HTTPS" srcip=10.1.100.66 srcport=49102 dstip=172.16.200.99 dstport=443
srcintf="port2" srcintfrole="undefined" dstintf="port3" dstintfrole="undefined" proto=6
action="exempt" msg="SSL connection exempted" reason="exempt-addr"
date=2019-03-28 time=11:10:55 logid="1701062003" type="utm" subtype="ssl" eventtype="ssl-
exempt" level="notice" vd="vdom1" eventtime=1553796654 policyid=1 sessionid=12171
service="HTTPS" srcip=10.1.100.66 srcport=47390 dstip=50.18.221.132 dstport=443
srcintf="port2" srcintfrole="undefined" dstintf="port3" dstintfrole="undefined" proto=6
action="exempt" msg="SSL connection exempted" reason="exempt-ftgd-cat"
# EVENTYPE="SSL-NEGOTIATION"
date=2020-02-07 time=11:10:58 logid="1702062101" type="utm" subtype="ssl" eventtype="ssl-
negotiation" level="warning" vd="vdom1" eventtime=1581102658589415731 tz="-0800"
action="blocked" policyid=1 sessionid=141224 service="HTTPS" profile="deep-inspection-clone"
srcip=10.1.100.66 srcport=33666 dstip=172.16.200.99 dstport=8080 srcintf="port2"
srcintfrole="undefined" dstintf="port3" dstintfrole="undefined" proto=6
eventsubtype="unexpected-protocol" msg="SSL connection is blocked."

Log buffer on FortiGates with an SSD disk

FortiGates with an SSD disk have a configurable log buffer. When the connection to FortiAnalyzer is unreachable, the 
FortiGate is able to buffer logs on disk if the memory log buffer is full. The logs queued on the disk buffer can be sent 
successfully once the connection to FortiAnalyzer is restored.
The number of logs queued on the disk buffer is visible in the Log & Report > Log Settings page:

The queued logs are buffered to the memory first and then disk. Main miglogd handles the disk buffering job, while 
miglogd-children handles the memory buffering. Disk buffer statistics only appear under Main miglogd, and 
memory buffer statistics only appears under miglogd-children. If the total buffer is full, new logs will overwrite the old 
logs.

FortiOS 6.4.6 Administration Guide 1778


Fortinet Technologies Inc.
Log and Report

To configure the log buffer:

 1. Allocate disk space (MB) to temporarily store logs to FortiAnalyzer:
config system global
set faz-disk-buffer-size 200
end

 2. Check the Main miglogd and miglogd-children statistics. The 200 MB disk buffer has been set, and there 


are currently no logs buffered in memory or on disk when FortiAnalyzer is reachable:
# diagnose test application miglogd 41 0
cache maximum: 106100940(101MB) objects: 0 used: 0(0MB) allocated: 0(0MB)
VDOM:root
Queue for: global-faz

memory queue:
num:0 size:0(0MB) max:101906636(97MB) logs:0

disk max queue size:200MB total:0MB


totol items:0
disk queue agents:
devid:-1-10-0-1
buffer path:/var/log/qbuf/10.0/1
saved size:0MB cached size:0
save roll:0 restore roll:0
restore id:0 space:0MB

# diagnose test application miglogd 41 1


cache maximum: 106100940(101MB) objects: 0 used: 0(0MB) allocated: 0(0MB)
VDOM:root
Queue for: global-faz

memory queue:
num:0 size:0(0MB) max:101906636(97MB) logs:0

disk queue client:


devid:-1-10-0-1 status:buffering
Total in cache:0 size:0(0MB) max:4MB logs:0

 3. Disable the connection between the FortiGate and FortiAnalyzer. For example, delete the FortiGate from the 
FortiAnalyzer authorized device list.
Assuming a massive number of logs (~ 300000) are recorded during this downtime, the logs will be queued in the 
memory buffer first. If the memory buffer is full, then the remaining logs will be queued on the disk buffer.
 4. Check the Main miglogd and miglogd-children statistics again. All 97 MB of the memory buffer  is occupied, 
and 76 of the 200 MB has been taken from the disk buffer:
# diagnose test application miglogd 41 0
cache maximum: 106100940(101MB) objects: 0 used: 0(0MB) allocated: 0(0MB)
VDOM:root
Queue for: global-faz

memory queue:
num:0 size:0(0MB) max:101906636(97MB) logs:0

disk max queue size:200MB total:76MB


totol items:128917

FortiOS 6.4.6 Administration Guide 1779


Fortinet Technologies Inc.
Log and Report

disk queue agents:


devid:-1-10-0-1
buffer path:/var/log/qbuf/10.0/1
saved size:76MB cached size:3324984
save roll:19 restore roll:0
restore id:0 space:0MB

# diagnose test application miglogd 41 1


cache maximum: 106100940(101MB) objects: 165721 used: 101908358(97MB) allocated:
106449280(101MB)
VDOM:root
Queue for: global-faz

memory queue:
num:165718 size:101906500(97MB) max:101906636(97MB) logs:165718

disk queue client:


devid:-1-10-0-1 status:restoring
restore id:1267 space:0MB
Total in cache:3 size:1858(0MB) max:4MB logs:3

The overall miglogd statistics shows the total cached logs is the sum of the logs buffered in memory and on disk:
# diagnose test application miglogd 6
mem=0, disk=11, alert=0, alarm=0, sys=0, faz=300053, faz-cloud=0, webt=0, fds=0
interface-missed=44
Queues in all miglogds: cur:165718 total-so-far:165718
global log dev statistics:
faz 0: sent=0, failed=0, cached=300053, dropped=0 , relayed=0
Num of REST URLs: 0

 5. Enable the connection between FortiAnalyzer and the FortiGate. 
 6. After a while, check the miglogd statistics to confirm that all buffered logs are being sent to FortiAnalyzer 
successfully:
# diagnose test application miglogd 6
mem=0, disk=11, alert=0, alarm=0, sys=0, faz=300058, faz-cloud=0, webt=0, fds=0
interface-missed=44
Queues in all miglogds: cur:4294832957 total-so-far:165726
global log dev statistics:
faz 0: sent=300058, failed=0, cached=0, dropped=0 , relayed=0
Num of REST URLs: 15

# diagnose test application miglogd 41 0


cache maximum: 106100940(101MB) objects: 0 used: 0(0MB) allocated: 0(0MB)
VDOM:root
Queue for: global-faz

memory queue:
num:0 size:0(0MB) max:101906636(97MB) logs:0

disk max queue size:200MB total:0MB


totol items:0
disk queue agents:
devid:-1-10-0-1
buffer path:/var/log/qbuf/10.0/1
saved size:0MB cached size:0

FortiOS 6.4.6 Administration Guide 1780


Fortinet Technologies Inc.
Log and Report

save roll:20 restore roll:20


restore id:1267 space:0MB

# diagnose test application miglogd 41 1


cache maximum: 106100940(101MB) objects: 0 used: 0(0MB) allocated: 0(0MB)
VDOM:root
Queue for: global-faz

memory queue:
num:0 size:0(0MB) max:101906636(97MB) logs:0

disk queue client:


devid:-1-10-0-1 status:buffering
Total in cache:0 size:0(0MB) max:4MB logs:0

Checking the email filter log

To check the email filter log in the CLI:

execute log filter category 5

execute log display


1 logs found.
1 logs returned.

1: date=2019-04-09 time=03:41:18 logid="0510020491" type="utm" subtype="emailfilter"


eventtype="imap" level="notice" vd="vdom1" eventtime=1554806478647415130 policyid=1
sessionid=439 srcip=10.1.100.22 srcport=39937 srcintf="port21" srcintfrole="undefined"
dstip=172.16.200.45 dstport=143 dstintf="port17" dstintfrole="undefined" proto=6
service="IMAPS" profile="822881" action="blocked" from="[email protected]"
to="[email protected]" recipient="testpc3" direction="incoming" msg="from ip is in ip
blacklist.(path black ip 172.16.200.9)" subject="testcase822881" size="525" attachment="no"

To check the email filter log in the GUI:

 1. Go to Log & Report > Anti-Spam.

FortiOS 6.4.6 Administration Guide 1781


Fortinet Technologies Inc.
Log and Report

Supported log types to FortiAnalyzer, syslog, and FortiAnalyzer


Cloud

This topic describes which log messages are supported by each logging destination:

Log Type FortiAnalyzer Syslog FortiAnalyzer Cloud

Traffic Yes Yes No

Event Yes Yes Yes

Virus Yes Yes Yes

Webfilter Yes Yes Yes

IPS Yes Yes Yes

Emailfilter Yes Yes Yes

Anomaly Yes Yes Yes

VOIP Yes Yes Yes

DLP Yes Yes Yes

App-Ctrl Yes Yes Yes

WAF Yes Yes Yes

GTP Yes Yes Yes

DNS Yes Yes Yes

SSH Yes Yes Yes

SSL Yes Yes Yes

CIFS No Yes Yes

Sending traffic logs to FortiAnalyzer Cloud

FortiGates with a FortiCloud Premium subscription (AFAC) for Cloud-based Central Logging & Analytics, can send traffic 
logs to FortiAnalyzer Cloud in addition to UTM logs and event logs. After the Premium subscription is registered through 
FortiCare, FortiGuard will verify the purchase and authorize the AFAC contract. Once the contract is verified, FortiGuard 
will deliver the contract to FortiGate.
FortiGates with a Standard FortiAnalyzer Cloud subscription (FAZC) can only send UTM and event logs. FortiGates with 
a Premium subscription will send the UTM and event logs even if the Standard subscription has expired. 

FortiAnalyzer Cloud does not support DLP/IPS archives at this time.

FortiOS 6.4.6 Administration Guide 1782


Fortinet Technologies Inc.
Log and Report

Example

In the following example, you will configure a FortiGate with a valid Premium subscription (AFAC) and expired Standard 
subscription (FAZC) to send traffic logs to FortiAnalyzer Cloud.
 1. Configure the log delivery. 
config log fortianalyzer-cloud setting
set status enable
set ips-archive disable
set access-config enable
set enc-algorithm high
set ssl-min-proto-version default
set conn-timeout 10
set monitor-keepalive-period 5
set monitor-failure-retry-period 5
set certificate ''
set source-ip ''
set interface-select-method auto
set upload-option realtime
set priority default
set max-log-rate 0
end
 2. Verify the status of the FortiCloud Premium subscription (AFAC) and standard FortiAnalyzer Cloud subscription 
(FAZC).   
The FAZC and AFAC fields display the subscription expiration date. The Support contract field displays the 
FortiCare account information. The User ID field displays the ID for FortiAnalyzer-Cloud instance.
# diagnose test update info
...
FAZC,Tue Sep 24 16:00:00 2030
AFAC,Mon Nov 29 16:00:00 2021
...
Support contract: pending_registration=255 got_contract_info=1
account_id=[****@fortinet.com] company=[Fortinet] industry=[Technology]
User ID: 979090
The FAZC and AFAC subscriptions are valid (date of verification is November 29, 2020).
 3. Check the status of FortiAnalyzer Cloud.   
# execute log fortianalyzer-cloud test-connectivity
FortiAnalyzer Host Name: FAZVM64-VIO-CLOUD
FortiAnalyzer Adom Name: root
FortiGate Device ID: FG101FTK19000000
Registration: registered
Connection: allow
Adom Disk Space (Used/Allocated): 50351453B/53687091200B
Analytics Usage (Used/Allocated): 41368925B/37580963840B
Analytics Usage (Data Policy Days Actual/Configured): 60/60 Days
Archive Usage (Used/Allocated): 8982528B/16106127360B
Archive Usage (Data Policy Days Actual/Configured): 235/365 Days
Log: Tx & Rx (log not received)
IPS Packet Log: Tx & Rx
Content Archive: Tx & Rx
Quarantine: Tx & Rx
Certificate of Fortianalyzer valid and serial number is:FAZVCLTM20000000
 4. When the FortiCloud Premium (AFAC) and standard FortiAnalyzer Cloud (FAZC) subscriptions are valid, the 
FortiGate sends the traffic, event, and UTM logs to the remote FortiAnalyzer Cloud.   

FortiOS 6.4.6 Administration Guide 1783


Fortinet Technologies Inc.
Log and Report

Traffic:
# execute log filter device fortianalyzer-cloud
# execute log filter category traffic
# execute log filter dump
category: traffic
device: fortianalyzer-cloud
start-line: 1
view-lines: 10
max-checklines: 0
HA member:
Oftp search string:
# execute log display
6512 logs found.
10 logs returned.
1: date=2020-11-29 time=13:57:33 id=6900668351836585985 itime="2020-11-29 13:57:34"
euid=3 epid=1027 dsteuid=3 dstepid=101 logflag=1 logver=604041797 type="traffic"
subtype="forward" level="notice" action="accept" policyid=1 sessionid=46536
srcip=10.1.100.72 dstip=172.16.100.55 transip=172.16.200.7 srcport=40797 dstport=53
transport=40797 trandisp="snat" duration=190 proto=17 sentbyte=268 rcvdbyte=0
sentpkt=4 rcvdpkt=0 logid=0000000013 service="DNS" app="DNS" appcat="unscanned"
srcintfrole="undefined" dstintfrole="undefined" srcserver=0 dstserver=0
policytype="policy" eventtime=1606687054554969021 poluuid="c041939c-2930-51eb-1448-
34c44a663331" srcmac="00:0c:29:eb:86:d6" mastersrcmac="00:0c:29:eb:86:d6"
dstmac="e8:1c:ba:c2:86:63" masterdstmac="e8:1c:ba:c2:86:63" srchwvendor="VMware"
osname="Linux" srccountry="Reserved" dstcountry="Reserved" srcintf="dmz"
dstintf="wan1" policyname="to_WAN" tz="-0800" devid="FG101FTK19000000" vd="root"
dtime="2020-11-29 13:57:33" itime_t=1606687054 devname="FortiGate-101F_F"
Event:
# execute log filter device fortianalyzer-cloud
# execute log filter category event
# execute log filter dump
category: event
device: fortianalyzer-cloud
start-line: 1
view-lines: 10
max-checklines: 0
HA member:
Oftp search string:
# execute log display
1067 logs found.
10 logs returned.
1: date=2020-11-29 time=14:12:16 id=6900672144292708352 itime="2020-11-29 14:12:17"
euid=3 epid=3 dsteuid=3 dstepid=3 logver=604041797 logid=0100038404 type="event"
subtype="system" level="error" msg="unable to resolve FortiGuard hostname"
logdesc="FortiGuard hostname unresolvable" hostname="service.fortiguard.net"
eventtime=1606687936888734117 tz="-0800" devid="FG101FTK19000000" vd="root"
dtime="2020-11-29 14:12:16" itime_t=1606687937 devname="FortiGate-101F_F"
UTM:
# execute log filter device fortianalyzer-cloud
# execute log filter category utm-virus
# execute log filter dump
category: virus
device: fortianalyzer-cloud
start-line: 1
view-lines: 10
max-checklines: 0
HA member:

FortiOS 6.4.6 Administration Guide 1784


Fortinet Technologies Inc.
Log and Report

Oftp search string:


# execute log display
4 logs found.
4 logs returned.
1: date=2020-11-27 time=15:53:41 id=6899956121704857638 itime="2020-11-27 15:53:45"
euid=1027 epid=101 dsteuid=3 dstepid=101 logver=604041797 type="utm"
subtype="virus" level="warning" action="passthrough" sessionid=1957747803
policyid=1 srcip=168.10.199.186 dstip=172.252.3.20 srcport=22765 dstport=80 proto=6
vrf=32 logid=0212008448 service="NNTP" user="user3" group="group1"
eventtime=1606521221884991620 crscore=5 craction=2 crlevel="low"
srcintfrole="undefined" dstintfrole="undefined" direction="incoming"
filefilter="file-pattern" filetype="ignored" filename="file_test" checksum="12345"
eventtype="filename" srcintf="ssl.root" dstintf="x1" msg="File is blocked." tz="-
0800" devid="FG101FTK19000000" vd="root" dtime="2020-11-27 15:53:41" itime_
t=1606521225 devname="FortiGate-101F_F"
 5. When the FortiGate has a valid Premium FortiCloud subscription (AFAC) and an expired Standard FortiCloud 
subscription (FAZC), the FortiGate still sends the logs to the remote FortiAnalyzer Cloud.

Configuring multiple FortiAnalyzers on a multi-VDOM FortiGate

This topic shows a sample configuration of multiple FortiAnalyzers on a multi-VDOM FortiGate.
In this example:
 l The FortiGate has three VDOMs:
 l Root (management VDOM)
 l VDOM1
 l VDOM2
 l There are four FortiAnalyzers.
These IP addresses are used as examples in the instructions below.
 l FAZ1: 172.16.200.55
 l FAZ2: 172.18.60.25
 l FAZ3: 192.168.1.253
 l FAZ4: 192.168.1.254
 l Set up FAZ1 and FAZ2 under global.
 l These two collect logs from the root VDOM and VDOM2.
 l FAZ1 and FAZ2 must be accessible from management VDOM root.
 l Set up FAZ3 and FAZ4 under VDOM1.
 l These two collect logs from VDOM1.
 l FAZ3 and FAZ4 must be accessible from VDOM1.

To set up FAZ1 as global FortiAnalyzer 1 from the GUI:

Prerequisite: FAZ1 must be reachable from the management root VDOM.
 1. Go to Global > Log & Report > Log Settings.
 2. Enable Send logs to FortiAnalyzer/FortiManager.
 3. Enter the FortiAnalyzer IP.
In this example: 172.16.200.55.

FortiOS 6.4.6 Administration Guide 1785


Fortinet Technologies Inc.
Log and Report

 4. For Upload option, select Real Time.


 5. Click Apply.

To set up FAZ2 as global FortiAnalyzer 2 from the CLI:

Prerequisite: FAZ2 must be reachable from the management root VDOM.
config log fortianalyzer2 setting
set status enable
set server "172.18.60.25"
set upload-option realtime
end

To set up FAZ3 and FAZ4 as VDOM1 FortiAnalyzer 1 and FortiAnalyzer 2:

Prerequisite: FAZ3 and FAZ4 must be reachable from VDOM1.
config log setting
set faz-override enable
end

config log fortianalyzer override-setting


set status enable
set server "192.168.1.253"
set upload-option realtime
end

config log fortianalyzer2 override-setting


set status enable
set server "192.168.1.254"
set upload-option realtime
end

Checking FortiAnalyzer connectivity

To use the diagnose command to check FortiAnalyzer connectivity:

 1. Check the global FortiAnalyzer status:   
FGTA(global) # diagnose test application miglogd 1
faz: global , enabled
server=172.16.200.55, realtime=3, ssl=1, state=connected, src=, mgmt_name=FGh_
Log_root_172.16.200.55, reliable=1
status: ver=6, used_disk=0, total_disk=0, global=0, vfid=0 conn_
verified=N
SNs: last sn update:1369 seconds ago.
Sn list:

queue: qlen=0.
filter: severity=6, sz_exclude_list=0
voip dns ssh ssl
subcategory:
traffic: forward local multicast sniffer
anomaly: anomaly

FortiOS 6.4.6 Administration Guide 1786


Fortinet Technologies Inc.
Log and Report

server: global, id=0, fd=90, ready=1, ipv6=0, 172.16.200.55/514


oftp-state=5
faz2: global , enabled
server=172.18.60.25, realtime=1, ssl=1, state=connected, src=, mgmt_name=FGh_
Log_root_172.18.60.25, reliable=0
status: ver=6, used_disk=0, total_disk=0, global=0, vfid=0 conn_
verified=N
SNs: last sn update:1369 seconds ago.
Sn list:

queue: qlen=0.
filter: severity=6, sz_exclude_list=0
voip dns ssh ssl
subcategory:
traffic: forward local multicast sniffer
anomaly: anomaly

server: global, id=1, fd=95, ready=1, ipv6=0, 172.18.60.25/514


oftp-state=5

 2. Check the VDOM1 override FortiAnalyzer status:   
FGTA(global) # diagnose test application miglogd 3101
faz: vdom, enabled, override
server=192.168.1.253, realtime=1, ssl=1, state=connected, src=, mgmt_name=FGh_
Log_root_192.168.1.253, reliable=1
status: ver=6, used_disk=0, total_disk=0, global=0, vfid=0 conn_
verified=N
SNs: last sn update:1369 seconds ago.
Sn list:
(FAZ-VM0000000001,age=17s)
queue: qlen=0.
filter: severity=6, sz_exclude_list=0
voip dns ssh ssl
subcategory:
traffic: forward local multicast sniffer
anomaly: anomaly

server: vdom, id=0, fd=72, ready=1, ipv6=0, 192.168.1.253/514


oftp-state=5
faz2: vdom, enabled, override
server=192.168.1.254, realtime=1, ssl=1, state=connected, src=, mgmt_name=FGh_
Log_root_192.168.1.254, reliable=0
status: ver=6, used_disk=0, total_disk=0, global=0, vfid=0 conn_
verified=N
SNs: last sn update:1369 seconds ago.
Sn list:
(FL-1KET318000008,age=17s)
queue: qlen=0.
filter: severity=6, sz_exclude_list=0
voip dns ssh ssl
subcategory:
traffic: forward local multicast sniffer
anomaly: anomaly

server: vdom, id=1, fd=97, ready=1, ipv6=0, 192.168.1.254/514

FortiOS 6.4.6 Administration Guide 1787


Fortinet Technologies Inc.
Log and Report

oftp-state=5
faz3: vdom, disabled, override

Configuring multiple FortiAnalyzers (or syslog servers) per VDOM

In a VDOM, multiple FortiAnalyzer and syslog servers can be configured as follows:
 l Up to three override FortiAnalyzer servers
 l Up to four override syslog servers
If the VDOM faz-override and/or syslog-override setting is enabled or disabled (default) before upgrading, the 
setting remains the same after upgrading.
If the override setting is disabled, the GUI displays the global FortiAnalyzer1 or syslog1 setting. If the override setting is 
enabled, the GUI displays the VDOM override FortiAnalyzer1 or syslog1 setting.
You can only use CLI to enable the override to support multiple log servers.

To enable FortiAnalyzer and syslog server override under VDOM:

config log setting


set faz-override enable
set syslog-override enable
end

When faz-override and/or syslog-override is enabled, the following CLI commands are available for configuring 
VDOM override:

To configure VDOM override for FortiAnalyzer:

 1. Configure the FortiAnalyzer override settings:
config log fortianalyzer/fortianalyzer2/fortianalyzer3 override-setting
set status enable
set server "123.12.123.123"
set reliable enable
end

 2. Configure the override filters:
config log fortianalyzer/fortianalyzer2/fortianalyzer3 override-filter
set severity information
set forward-traffic enable
set local-traffic enable
set multicast-traffic enable
set sniffer-traffic enable
set anomaly enable
set voip enable
set dlp-archive enable
set dns enable
set ssh enable
set ssl enable
end

FortiOS 6.4.6 Administration Guide 1788


Fortinet Technologies Inc.
Log and Report

To configure VDOM override for a syslog server:

 1. Configure the syslog override settings:
config log syslogd/syslogd2/syslogd3/syslogd4 override-setting
set status enable
set server "123.12.123.12"
set facility local1
end

 2. Configure the override filters:
config log syslogd/syslogd2/syslogd3/syslogd4 override-filter
set severity information
set forward-traffic enable
set local-traffic enable
set multicast-traffic enable
set sniffer-traffic enable
set anomaly enable
set voip enable
set dns enable
set ssh enable
set ssl enable
end

Source and destination UUID logging

The log-uuid setting in system global is split into two settings: log-uuid-address and log-uuid policy.


The traffic log includes two internet-service name fields: Source Internet Service (srcinetsvc) and Destination
Internet Service (dstinetsvc). 

Log UUIDs

UUIDs can be matched for each source and destination that match a policy that is added to the traffic log. This allows the 
address objects to be referenced in log analysis and reporting.
As this may consume a significant amount of storage space, this feature is optional. By default, policy UUID insertion is 
enabled and  address UUID insertion is disabled.

To enable address and policy UUID insertion in traffic logs using the GUI:

 1. Go to Log & Report > Log Settings.


 2. Under UUIDs in Traffic Log, enable Policy and/or Address.

FortiOS 6.4.6 Administration Guide 1789


Fortinet Technologies Inc.
Log and Report

 3. Click Apply.

To enable address and policy UUID insertion in traffic logs using the CLI:

config system global


set log-uuid-address enable
set log-uuid-policy enable
end

Sample forward traffic log:
# date=2019-01-25 time=11:32:55 logid="0000000013" type="traffic" subtype="forward"
level="notice" vd="vdom1" eventtime=1528223575 srcip=192.168.1.183 srcname="PC24"
srcport=33709 srcintf="lan" srcintfrole="lan" dstip=192.168.70.184 dstport=80
dstintf="wan1" dstintfrole="wan" srcuuid="27dd503e-883c-51e7-ade1-7e015d46494f"
dstuuid="27dd503e-883c-51e7-ade1-7e015d46494f"
poluuid="9e0fe24c-1808-51e8-1257-68ce4245572c" sessionid=5181 proto=6
action="client-rst" policyid=4 policytype="policy" service="HTTP" trandisp="snat"
transip=192.168.70.228 transport=33709 appid=38783 app="Wget"
appcat="General.Interest" apprisk="low" applist="default" duration=5 sentbyte=450
rcvdbyte=2305 sentpkt=6 wanin=368 wanout=130 lanin=130 lanout=130 utmaction="block"
countav=2 countapp=1 crscore=50 craction=2 devtype="Linux PC" devcategory="None"
osname="Linux" mastersrcmac="00:0c:29:36:5c:c3" srcmac="00:0c:29:36:5c:c3"
srcserver=0 utmref=65523-1018

Internet service name fields

Traffic logs for internet-service include two fields: Source Internet Service and Destination Internet Service. 

To view the internet-service fields using the GUI:

 1. Go to Log & Report > Forward Traffic.


 2. Double-click on an entry to view the Log Details. The Source Internet Service and Destination Internet Service fields 

FortiOS 6.4.6 Administration Guide 1790


Fortinet Technologies Inc.
Log and Report

are visible in the Log Details pane.

Sample internet-service name fields in a forward traffic log:
# date=2019-01-25 time=14:17:04 logid="0000000013" type="traffic" subtype="forward"
level="notice" vd="vdom1" eventtime=1548454622 srcip=10.1.100.11 srcport=51112
srcintf="port3" srcintfrole="undefined" dstip=172.217.14.228 dstport=80
dstintf="port1" dstintfrole="undefined" poluuid="af519380-2094-51e9-391c-
b78e8edbddfc" srcinetsvc="isdb-875099" dstinetsvc="Google.Gmail" sessionid=6930
proto=6 action="close" policyid=2 policytype="policy" service="HTTP"
dstcountry="United States" srccountry="Reserved" trandisp="snat"
transip=172.16.200.2 transport=51112 duration=11 sentbyte=398 rcvdbyte=756 sentpkt=6
rcvdpkt=4 appcat="unscanned" devtype="Router/NAT Device" devcategory="Fortinet
Device" mastersrcmac="90:6c:ac:41:7a:24" srcmac="90:6c:ac:41:7a:24" srcserver=0
dstdevtype="Unknown" dstdevcategory="Fortinet Device"
masterdstmac="08:5b:0e:1f:ed:ed" dstmac="08:5b:0e:1f:ed:ed" dstserver=0

Logging the signal-to-noise ratio and signal strength per client

The signal-to-noise ratio (snr) and signal strength (signal) are logged per client in the WiFi event and traffic logs.
When a WiFi client connects to a tunnel or local-bridge mode SSID on an FortiAP that is managed by a FortiGate, signal-
to-noise ratio  and signal strength details are included in WiFi event logs for local-bridge traffic statistics and 
authentication, and in forward traffic logs for tunnel traffic. This allows you to store and view clients' historical signal 
strength and signal-to-noise ratio information.

FortiOS 6.4.6 Administration Guide 1791


Fortinet Technologies Inc.
Log and Report

To verify when a client is connecting to an SSID:

 1. Go to Log & Report > Events and select WiFi Events from the events drop-down list.


The Signal and Signal/Noise columns show the signal strength and signal-to-noise ratio for each applicable client.

 2. WiFi event log messages include the signal and snr values:
date=2020-05-27 time=11:26:28 logid="0104043579" type="event" subtype="wireless"
level="notice" vd="vdom1" eventtime=1590603988877156921 tz="-0700" logdesc="Wireless
client IP assigned" sn="FP231ETF20000455" ap="FP231ETF20000455" vap="stability3"
ssid="FOS_QA_Starr_140E_Guest-11" radioid=1 user="N/A" group="N/A"
stamac="1c:87:2c:b6:a8:49" srcip=11.10.80.2 channel=6 radioband="802.11n,g-only"
signal=-45 snr=50 security="WPA2 Personal" encryption="AES" action="client-ip-detected"
reason="Reserved 0" mpsk="N/A" msg="Client 1c:87:2c:b6:a8:49 had an IP address detected
(by DHCP packets)."
date=2020-05-27 time=11:26:11 logid="0104043573" type="event" subtype="wireless"
level="notice" vd="vdom1" eventtime=1590603970962702892 tz="-0700" logdesc="Wireless
client authenticated" sn="FP231ETF20000455" ap="FP231ETF20000455" vap="stability3"
ssid="FOS_QA_Starr_140E_Guest-11" radioid=1 user="N/A" group="N/A"
stamac="1c:87:2c:b6:a8:49" srcip=0.0.0.0 channel=6 radioband="802.11n,g-only" signal=-45
snr=50 security="WPA2 Personal" encryption="AES" action="client-authentication"
reason="Reserved 0" mpsk="N/A" msg="Client 1c:87:2c:b6:a8:49 authenticated."

FortiOS 6.4.6 Administration Guide 1792


Fortinet Technologies Inc.
Log and Report

To verify tunnel traffic when a client is connecting to a tunnel mode SSID:

 1. Go to Log & Report > Forward Traffic.


The Signal and Signal/Noise columns show the signal strength and signal-to-noise ratio for each applicable client.

 2. Forward traffic log messages include the signal and snr values:
date=2020-05-27 time=11:30:26 logid="0000000013" type="traffic" subtype="forward"
level="notice" vd="vdom1" eventtime=1590604226533016978 tz="-0700" srcip=11.10.80.2
srcname="WIFI23" srcport=53926 srcintf="stability3" srcintfrole="lan" srcssid="FOS_QA_
Starr_140E_Guest-11" apsn="FP231ETF20000455" ap="FP231ETF20000455" channel=6
radioband="802.11n,g-only" signal=-31 snr=64 dstip=91.189.91.157 dstport=123
dstintf="wan1" dstintfrole="wan" srccountry="United States" dstcountry="United States"
sessionid=322069 proto=17 action="accept" policyid=13 policytype="policy"
poluuid="7c14770c-1456-51e9-4c57-806e9c499782" policyname="wmm" service="NTP"
trandisp="snat" transip=172.16.200.111 transport=53926 appid=16270 app="NTP"
appcat="Network.Service" apprisk="elevated" applist="g-default" duration=180 sentbyte=76
rcvdbyte=76 sentpkt=1 rcvdpkt=1 utmaction="allow" countapp=1 osname="Linux"
mastersrcmac="1c:87:2c:b6:a8:49" srcmac="1c:87:2c:b6:a8:49" srcserver=0 utmref=65534-66

To verify local-bridge traffic statistics when a client is connecting to a local-bridge mode SSID:

 1. Go to Log & Report > Events and select WiFi Events from the events drop-down list.


The Signal and Signal/Noise columns show the signal strength and signal-to-noise ratio for each applicable client.

 2. WiFi event log messages include the signal and snr values:
date=2020-05-26 time=17:48:57 logid="0104043687" type="event" subtype="wireless"
level="information" vd="vdom1" eventtime=1590540537841497433 tz="-0700" logdesc="Traffic
stats for station with bridge wlan" sn="FP231ETF20000455" ap="FP231ETF20000455"
vap="wifi.fap.01" ssid="FOS_QA_Starr-140E-LB-cap-2" srcip=10.128.100.4 user="N/A"
stamac="00:1e:e5:df:b1:63" signal=-53 snr=52 sentbyte=8970016 rcvdbyte=985910
nextstat=300 action="sta-wl-bridge-traffic-stats" msg="Traffic stats for bridge ssid
client 00:1e:e5:df:b1:63"

FortiOS 6.4.6 Administration Guide 1793


Fortinet Technologies Inc.
Log and Report

RSSO information for authenticated destination users in logs

FortiGate can use RSSO accounting information from authenticated RSSO users to populate destination users and 
groups, along with source users and groups.
RSSO user login information can be forwarded by the RADIUS server to the FortiGate that is listening for incoming 
RADIUS accounting start messages on the RADIUS accounting port. Accounting start messages usually contain the 
IP address, user name, and user group information. FortiGate uses this information in traffic logs, which include dstuser 
and dstgroup fields for user and group destination information .
For instructions on configuring RSSO, see RADIUS single sign-on  agent on page 348.
The three following scenarios show traffic between pc1 and the internet, and pc1 and pc2.

Scenario 1

In this scenario, RSSO user test2 in group rsso-grp1 is authenticated on pc1. Traffic flows from pc1 to the internet.

Expected result:

In the logs, user test2 is shown as the source user in the rsso-grp1 group.

FortiOS 6.4.6 Administration Guide 1794


Fortinet Technologies Inc.
Log and Report

To verify the results:

 1. In the GUI, go to Log & Report > Forward Traffic and view the details of an entry with test2 as the source.


 2. In the Source section, User is test2 and Group is the rsso-grp1.

 3. The log message shows the user and group:
10: date=2020-05-25 time=15:34:43 logid="0000000013" type="traffic" subtype="forward"
level="notice" vd="vdom1" eventtime=1590446083718007055 tz="-0700" srcip=10.1.100.188
srcname="win7-2-A.Fortinet-FSSO.COM" srcport=56982 srcintf="port10"
srcintfrole="undefined" dstip=172.217.3.195 dstport=443 dstintf="port9"
dstintfrole="undefined" srccountry="Reserved" dstcountry="United States"
sessionid=120651 proto=17 action="accept" policyid=1 policytype="policy"
poluuid="d130f886-9ec6-51ea-206e-8c561c5244c6" policyname="pol1" user="test2"
group="rsso-grp1" authserver="vdom1" service="udp/443" trandisp="snat"
transip=172.16.200.1 transport=56982 duration=181 sentbyte=2001 rcvdbyte=1820 sentpkt=6
rcvdpkt=4 appcat="unscanned" sentdelta=0 rcvddelta=0 srchwvendor="VMware"
osname="Windows" srcswversion="7" mastersrcmac="00:0c:29:44:be:b9"
srcmac="00:0c:29:44:be:b9" srcserver=0

Scenario 2

In this scenario, RSSO user test2 is authenticated on pc1. Traffic is initialized on pc2 (172.16.200.185) going to pc1 
(10.1.100.188).

Expected result:

In the logs, user test2 is shown as the destination user (dstuser). No destination group (dstgroup) is logged because 
no RSSO user is logged in on pc2, so the traffic from pc2 is unauthenticated.

To verify the results:

 1. In the GUI, go to Log & Report > Forward Traffic and view the details of an entry with 172.16.200.185 (pc2) as the 


source.

FortiOS 6.4.6 Administration Guide 1795


Fortinet Technologies Inc.
Log and Report

 2. In the Other section, Destination User is test2 and no destination group is shown.

 3. The log message shows the destination user:
1: date=2020-05-22 time=07:38:06 logid="0000000020" type="traffic" subtype="forward"
level="notice" vd="root" eventtime=1590158286585506922 tz="-0700" srcip=172.16.200.185
identifier=1 srcintf="port9" srcintfrole="undefined" dstip=10.1.100.188 dstintf="port10"
dstintfrole="undefined" srccountry="Reserved" dstcountry="Reserved" sessionid=4395
proto=1 action="accept" policyid=3 policytype="policy" poluuid="d4f18e1e-9c36-51ea-6ec0-
3a354d5910ee" policyname="pol2" dstuser="test2" dstauthserver="root" service="PING"
trandisp="snat" transip=10.1.100.1 transport=0 duration=128 sentbyte=7620 rcvdbyte=5220
sentpkt=127 rcvdpkt=87 appcat="unscanned" sentdelta=7620 rcvddelta=5220

Scenario 3

In this scenario, RSSO user test2 in group rsso-grp1 is authenticated on pc1, and user test3 in group rsso-grp2 is 
authenticated on pc2. Traffic flows from pc2 to pc1.

Expected result:

In the logs, user test3 is shown as the source user in the rsso-grp1 group. User test2 is shown as destination user 
(dstuser) in the rsso-grp1 destination group (dstgroup). The destination group is logged because an RSSO user is 
logged in to pc2.

To verify the results:

 1. In the GUI, go to Log & Report > Forward Traffic and view the details of an entry with 172.16.200.185 (pc2) as the 


source.
 2. In the Source section, User is test3 and Group is the rsso-grp2. In the Other section, Destination User is test2 and 
Destination Group is rsso-grp1.

FortiOS 6.4.6 Administration Guide 1796


Fortinet Technologies Inc.
Log and Report

 3. The log message shows both the source and the destination users and groups:
8: date=2020-05-25 time=14:23:07 logid="0000000013" type="traffic" subtype="forward"
level="notice" vd="vdom1" eventtime=1590441786958007914 tz="-0700" srcip=172.16.200.185
srcport=64096 srcintf="port9" srcintfrole="undefined" dstip=10.1.100.188 dstport=80
dstintf="port10" dstintfrole="undefined" srccountry="Reserved" dstcountry="Reserved"
sessionid=112445 proto=6 action="close" policyid=3 policytype="policy"
poluuid="5894c368-9eca-51ea-fb4c-ec5a6c1d5043" policyname="pol2" user="test3"
group="rsso-grp2" authserver="vdom1" dstuser="test2" dstgroup="rsso-grp1"
dstauthserver="vdom1" service="HTTP" trandisp="snat" transip=10.1.100.1 transport=64096
duration=1 sentbyte=328 rcvdbyte=563 sentpkt=6 rcvdpkt=5 appcat="unscanned"
dsthwvendor="VMware" dstosname="Windows" dstswversion="7"
masterdstmac="00:0c:29:44:be:b9" dstmac="00:0c:29:44:be:b9" dstserver=0

Threat weight

Threat weight helps aggregate and score threats based on user-defined severity levels. It adds several fields such as 
threat level (crlevel), threat score (crscore), and threat type (craction) to traffic logs. Threat weight logging is 
enabled by default and the settings can be customized. Threats can be viewed from the Top Threats FortiView 
dashboard.

To configure threat weight settings:

 1. Go to Log & Report > Threat Weight.


 2. Adjust the settings as needed, such as individual weights per threat type and risk level values.
 3. Click Apply.

To add the Top Threats monitor to the dashboard:

 1. In the tree menu, click Dashboard and in the FortiView section, click the + sign. The Add Monitor pane opens.


 2. In the Security section, enable Show More and click Top Threats.
 3. Configure the settings as needed.
 4. Click Add Monitor.

FortiOS 6.4.6 Administration Guide 1797


Fortinet Technologies Inc.
Log and Report

 5. Go to Dashboard > Top Threats. The Top Threats monitor displays threats based on the scores in the traffic logs.

 6. Double-click a threat to view the summary.
 7. Click Sources, Destinations, Countries/Regions, or Sessions to view more information. Double-click an entry to 
view the log details.

Troubleshooting

The following topics provide information about troubleshooting logging and reporting:
 l Log-related diagnose commands on page 1798
 l Backing up log files or dumping log messages on page 1804
 l SNMP OID for logs that failed to send on page 1806

Log-related diagnose commands

This topic shows commonly used examples of log-related diagnose commands.
Use the following diagnose commands to identify log issues:

FortiOS 6.4.6 Administration Guide 1798


Fortinet Technologies Inc.
Log and Report

 l The following commands enable debugging log daemon (miglogd) at the proper debug level:
diagnose debug application miglogd x
diagnose debug enable

 l The following commands display different status/statistics of miglogd at the proper level:
diagnose test application miglogd x
diagnose debug enable

To get the list of available levels, press Enter after diagnose test/debug application miglogd. The following 


are some examples of commonly use levels.
If the debug log display does not return correct entries when log filter is set:
diagnose debug application miglogd 0x1000

For example, use the following command to display all login system event logs:
execute log filter device disk
execute log filter category event
execute log filter field action login

execute log display

Files to be searched:
file_no=65523, start line=0, end_line=237
file_no=65524, start line=0, end_line=429
file_no=65525, start line=0, end_line=411
file_no=65526, start line=0, end_line=381
file_no=65527, start line=0, end_line=395
file_no=65528, start line=0, end_line=458
file_no=65529, start line=0, end_line=604
file_no=65530, start line=0, end_line=389
file_no=65531, start line=0, end_line=384
session ID=1, total logs=3697
back ground search. process ID=26240, session_id=1
start line=1 view line=10
( action "login" )
ID=1, total=3697, checked=238, found=5
ID=1, total=3697, checked=668, found=13
ID=1, total=3697, checked=1080, found=23
ID=1, total=3697, checked=1462, found=23
ID=1, total=3697, checked=1858, found=23
ID=1, total=3697, checked=2317, found=54
ID=1, total=3697, checked=2922, found=106
ID=1, total=3697, checked=3312, found=111
ID=1, total=3697, checked=3697, found=114

You can check and/or debug the FortiGate to FortiAnalyzer connection status.

To show connect status with detailed information:

diagnose test application miglogd 1

faz: global , enabled


server=172.18.64.234, realtime=3, ssl=1, state=connected, src=, mgmt_name=FGh_Log_
vdom1_172.18.64.234, reliable=0, sni_prefix_type=none, required_entitlement=none
status: ver=6, used_disk=0, total_disk=0, global=0, vfid=0 conn_verified=Y

FortiOS 6.4.6 Administration Guide 1799


Fortinet Technologies Inc.
Log and Report

SNs: last sn update:107 seconds ago.


Sn list:
(FL-8HFT718900132,age=107s)
queue: qlen=0.
filter: severity=6, sz_exclude_list=0
voip dns ssh ssl cifs
subcategory:
traffic: forward local multicast sniffer
anomaly: anomaly

server: global, id=0, fd=132, ready=1, ipv6=0, 172.18.64.234/514


oftp-state=5

To collect debug information when FortiAnalyzer is enabled:

diagnose debug application miglogd 0x100

FGT-B-LOG (global) # <16208> miglog_start_rmt_conn()-1552: setting epoll_hd:0x7fc364e125e0


to _rmt_connect
<16209> miglog_start_rmt_conn()-1552: setting epoll_hd:0x7f72647715e0 to _rmt_connect
<16206> miglog_start_rmt_conn()-1552: setting epoll_hd:0x141f69e0 to _rmt_connect
<16209> _rmt_connect()-1433: oftp is ready.
<16209> _rmt_connect()-1435: xfer_status changed from 2 to 2 for global-faz
<16209> _rmt_connect()-1439: setting epoll_hd:0x7f72647715e0 to _rmt_recv
<16209> _check_oftp_certificate()-248: checking sn:FL-8HFT718900132 vs cert sn:FL-
8HFT718900132
<16209> _check_oftp_certificate()-252: Verified the certificate of peer (172.18.64.234) to
match sn=FL-8HFT718900132
<16209> _faz_post_connection()-292: Certificate verification:enabled, Faz verified:1
<16209> _send_queue_item()-518: xfer_status changed from 2 to 1 for global-faz
<16209> _send_queue_item()-523: type=0, cat=0, logcount=0, len=0
<16209> _oftp_send()-487: dev=global-faz type=17 pkt_len=34

<16209> _oftp_send()-487: opt=253, opt_len=10


<16209> _oftp_send()-487: opt=81, opt_len=12
<16208> _rmt_connect()-1433: oftp is ready.
<16208> _rmt_connect()-1435: xfer_status changed from 2 to 2 for global-faz
<16208> _rmt_connect()-1439: setting epoll_hd:0x7fc364e125e0 to _rmt_recv
<16208> _check_oftp_certificate()-248: checking sn:FL-8HFT718900132 vs cert sn:FL-
8HFT718900132
<16208> _check_oftp_certificate()-252: Verified the certificate of peer (172.18.64.234) to
match sn=FL-8HFT718900132
<16208> _faz_post_connection()-292: Certificate verification:enabled, Faz verified:1
<16208> _send_queue_item()-518: xfer_status changed from 2 to 1 for global-faz
<16208> _send_queue_item()-523: type=0, cat=0, logcount=0, len=0
<16208> _oftp_send()-487: dev=global-faz type=17 pkt_len=34

<16208> _oftp_send()-487: opt=253, opt_len=10


<16209> _oftp_recv()-1348: opt=252, opt_len=996
<16208> _oftp_send()-487: opt=81, opt_len=12
<16209> _process_response()-960: checking opt code=252
<16209> _faz_process_oftp_resp()-488: ha nmember:1 nvcluster:0 mode:1
<16209> __is_sn_known()-356: MATCHED: idx:0 sn:FL-8HFT718900132
<16209> _faz_process_oftp_resp()-494: Received SN:FL-8HFT718900132 should update:0

<16208> _oftp_recv()-1348: dev=global-faz type=252 pkt_len=1008

FortiOS 6.4.6 Administration Guide 1800


Fortinet Technologies Inc.
Log and Report

<16208> _oftp_recv()-1348: opt=252, opt_len=996


<16208> _process_response()-960: checking opt code=252
<16208> _faz_process_oftp_resp()-488: ha nmember:1 nvcluster:0 mode:1
<16208> __is_sn_known()-356: MATCHED: idx:0 sn:FL-8HFT718900132
<16208> _faz_process_oftp_resp()-494: Received SN:FL-8HFT718900132 should update:0

<16206> _rmt_connect()-1433: oftp is ready.


<16206> _rmt_connect()-1435: xfer_status changed from 2 to 2 for global-faz
<16206> _rmt_connect()-1439: setting epoll_hd:0x141f69e0 to _rmt_recv
<16206> _check_oftp_certificate()-248: checking sn:FL-8HFT718900132 vs cert sn:FL-
8HFT718900132
<16206> _check_oftp_certificate()-252: Verified the certificate of peer (172.18.64.234) to
match sn=FL-8HFT718900132
<16206> _faz_post_connection()-292: Certificate verification:enabled, Faz verified:1
<16206> _send_queue_item()-518: xfer_status changed from 2 to 1 for global-faz
<16206> _send_queue_item()-523: type=0, cat=0, logcount=0, len=0
<16206> _oftp_send()-487: dev=global-faz type=17 pkt_len=34

<16206> _oftp_send()-487: opt=253, opt_len=10


<16206> _oftp_send()-487: opt=81, opt_len=12
<16206> _oftp_recv()-1348: dev=global-faz type=252 pkt_len=1008

<16206> _oftp_recv()-1348: opt=252, opt_len=996


<16206> _process_response()-960: checking opt code=252
<16206> _faz_process_oftp_resp()-488: ha nmember:1 nvcluster:0 mode:1
<16206> __is_sn_known()-356: MATCHED: idx:0 sn:FL-8HFT718900132
<16206> _faz_process_oftp_resp()-494: Received SN:FL-8HFT718900132 should update:0

<16209> _oftp_recv()-1348: dev=global-faz type=1 pkt_len=985

<16209> _oftp_recv()-1348: opt=12, opt_len=16


......
<16209> _build_ack()-784: xfer_status changed from 1 to 2 for global-faz
<16209> _process_response()-960: checking opt code=81
......
<16209> _send_queue_item()-523: type=1, cat=0, logcount=0, len=0
<16209> _oftp_send()-487: dev=global-faz type=1 pkt_len=24

<16209> _oftp_send()-487: opt=1, opt_len=12


<16209> _send_queue_item()-523: type=7, cat=0, logcount=0, len=988
<16209> _oftp_send()-487: dev=global-faz type=252 pkt_len=1008

<16209> _oftp_send()-487: opt=252, opt_len=996


<16208> _oftp_recv()-1348: dev=global-faz type=1 pkt_len=58

<16208> _oftp_recv()-1348: opt=12, opt_len=16


<16208> _oftp_recv()-1348: opt=51, opt_len=9
<16208> _oftp_recv()-1348: opt=49, opt_len=12
<16208> _oftp_recv()-1348: opt=52, opt_len=9
<16208> _build_ack()-784: xfer_status changed from 1 to 2 for global-faz
<16208> _process_response()-960: checking opt code=52
<16208> _send_queue_item()-523: type=1, cat=0, logcount=0, len=0
<16208> _oftp_send()-487: dev=global-faz type=1 pkt_len=24

<16208> _oftp_send()-487: opt=1, opt_len=12

FortiOS 6.4.6 Administration Guide 1801


Fortinet Technologies Inc.
Log and Report

<16206> _oftp_recv()-1348: dev=global-faz type=1 pkt_len=985

......
<16208> _send_queue_item()-523: type=3, cat=1, logcount=1, len=301
<16206> _oftp_recv()-1348: opt=78, opt_len=55
......
<16206> _build_ack()-784: xfer_status changed from 1 to 2 for global-faz
<16206> _process_response()-960: checking opt code=81
......
<16206> _send_queue_item()-523: type=1, cat=0, logcount=0, len=0
<16206> _oftp_send()-487: dev=global-faz type=1 pkt_len=24

<16206> _oftp_send()-487: opt=1, opt_len=12


<16206> _send_queue_item()-523: type=7, cat=0, logcount=0, len=988
<16206> _oftp_send()-487: dev=global-faz type=252 pkt_len=1008

<16206> _oftp_send()-487: opt=252, opt_len=996


<16206> _add_change_notice_queue_item()-269: Change notice packect added to queue. len=145
......
<16206> _send_queue_item()-523: type=2, cat=0, logcount=0, len=300
<16206> _oftp_send()-487: dev=global-faz type=37 pkt_len=300

......

<16206> _oftp_send()-487: opt=152, opt_len=40


<16206> _oftp_send()-487: opt=74, opt_len=40
<16206> _oftp_send()-487: opt=82, opt_len=93
<16206> _oftp_recv()-1348: dev=global-faz type=1 pkt_len=24

<16206> _oftp_recv()-1348: opt=1, opt_len=12


<16206> _process_response()-960: checking opt code=1

To check the FortiGate to FortiGate Cloud log server connection status:

diagnose test application miglogd 20

FGT-B-LOG # diagnose test application miglogd 20


Home log server:
Address: 172.16.95.92:514
Alternative log server:
Address: 172.16.95.26:514
oftp status: established
Debug zone info:
Server IP: 172.16.95.92
Server port: 514
Server status: up
Log quota: 102400MB
Log used: 673MB
Daily volume: 20480MB
FDS arch pause: 0
fams archive pause: 0

To check real-time log statistics by log type since the miglogd daemon start:

diagnose test application miglogd 4

FortiOS 6.4.6 Administration Guide 1802


Fortinet Technologies Inc.
Log and Report

FGT-B-LOG (global) # diagnose test application miglogd 4


info for vdom: root
disk
event: logs=1238 len=262534, Sun=246 Mon=247 Tue=197 Wed=0 Thu=55 Fri=246 Sat=247
compressed=163038
dns: logs=4 len=1734, Sun=0 Mon=0 Tue=0 Wed=0 Thu=4 Fri=0 Sat=0 compressed=453

report
event: logs=1244 len=225453, Sun=246 Mon=247 Tue=197 Wed=0 Thu=61 Fri=246 Sat=247

faz
event: logs=6 len=1548, Sun=0 Mon=0 Tue=6 Wed=0 Thu=0 Fri=0 Sat=0 compressed=5446

info for vdom: vdom1


memory
traffic: logs=462 len=389648, Sun=93 Mon=88 Tue=77 Wed=0 Thu=13 Fri=116 Sat=75
event: logs=3724 len=1170237, Sun=670 Mon=700 Tue=531 Wed=0 Thu=392 Fri=747 Sat=684
app-ctrl: logs=16 len=9613, Sun=3 Mon=3 Tue=3 Wed=0 Thu=0 Fri=5 Sat=2
dns: logs=71 len=29833, Sun=0 Mon=0 Tue=0 Wed=0 Thu=71 Fri=0 Sat=0

disk
traffic: logs=462 len=389648, Sun=93 Mon=88 Tue=77 Wed=0 Thu=13 Fri=116 Sat=75
compressed=134638
event: logs=2262 len=550957, Sun=382 Mon=412 Tue=307 Wed=0 Thu=306 Fri=459 Sat=396
compressed=244606
app-ctrl: logs=16 len=9613, Sun=3 Mon=3 Tue=3 Wed=0 Thu=0 Fri=5 Sat=2 compressed=3966
dns: logs=71 len=29833, Sun=0 Mon=0 Tue=0 Wed=0 Thu=71 Fri=0 Sat=0 compressed=1499

report
traffic: logs=462 len=375326, Sun=93 Mon=88 Tue=77 Wed=0 Thu=13 Fri=116 Sat=75
event: logs=3733 len=1057123, Sun=670 Mon=700 Tue=531 Wed=0 Thu=401 Fri=747 Sat=684
app-ctrl: logs=16 len=9117, Sun=3 Mon=3 Tue=3 Wed=0 Thu=0 Fri=5 Sat=2

faz
traffic: logs=462 len=411362, Sun=93 Mon=88 Tue=77 Wed=0 Thu=13 Fri=116 Sat=75
compressed=307610
event: logs=3733 len=1348297, Sun=670 Mon=700 Tue=531 Wed=0 Thu=401 Fri=747 Sat=684
compressed=816636
app-ctrl: logs=16 len=10365, Sun=3 Mon=3 Tue=3 Wed=0 Thu=0 Fri=5 Sat=2 compressed=8193
dns: logs=71 len=33170, Sun=0 Mon=0 Tue=0 Wed=0 Thu=71 Fri=0 Sat=0 compressed=0

To check log statistics to the local/remote log device since the miglogd daemon start:

diagnose test application miglogd 6 1 <<< 1 means the first child daemon
diagnose test application miglogd 6 2 <<< 2 means the second child daemon
FGT-B-LOG (global) # diagnose test application miglogd 6 1
mem=4288, disk=4070, alert=0, alarm=0, sys=5513, faz=4307, webt=0, fds=0
interface-missed=208
Queues in all miglogds: cur:0 total-so-far:36974
global log dev statistics:
syslog 0: sent=6585, failed=152, relayed=0
faz 0: sent=13, failed=0, cached=0, dropped=0 , relayed=0

FortiOS 6.4.6 Administration Guide 1803


Fortinet Technologies Inc.
Log and Report

To check the miglogd daemon number and increase/decrease miglogd daemon:

diagnose test application miglogd 15 <<< Show miglog ID


diagnose test application miglogd 13 <<< Increase one miglogd child
diagnose test application miglogd 14 <<< Decrease one miglogd child
FGT-B-LOG (global) # diagnose test application miglogd 15
Main miglogd: ID=0, children=2, active-children=2
ID=1, duration=70465.
ID=2, duration=70465.
FGT-B-LOG (global) # diagnose test application miglogd 13

FGT-B-LOG (global) # diagnose test application miglogd 15


Main miglogd: ID=0, children=3, active-children=3
ID=1, duration=70486.
ID=2, duration=70486.
ID=3, duration=1.
FGT-B-LOG (global) # diagnose test application miglogd 14
FGT-B-LOG (global) # diagnose test application miglogd 15
Main miglogd: ID=0, children=2, active-children=2
ID=1, duration=70604.
ID=2, duration=70604.

To check the remote queue and see the maximum buffered memory size:

diagnose test application miglogd 41


cache maximum: 105405644(100MB) objects: 0 used: 0(0MB) allocated: 0(0MB)

VDOM:root
Queue for: global-faz

memory queue:
num:0 size:0(0MB) max:105405644(100MB) logs:0

Queue for: fds

memory queue:
num:0 size:0(0MB) max:97852620(93MB) logs:0

Backing up log files or dumping log messages

When a log issue is caused by a particular log message, it is very help to get logs from that FortiGate. This topic provides 
steps for using execute log backup or dumping log messages to a USB drive.

Backing up full logs using execute log backup

This command backs up all disk log files and is only available on FortiGates with an SSD disk.
Before running execute log backup, we recommend temporarily stopping miglogd and reportd.

FortiOS 6.4.6 Administration Guide 1804


Fortinet Technologies Inc.
Log and Report

To stop and kill miglogd and reportd:

diagnose sys process daemon-auto-restart disable miglogd


diagnose sys process daemon-auto-restart disable reportd

Or
 1. Determine the process, or thread, ID (PID) of miglogd and reportd: 
# diagnose sys top 10 99

 2. Kill each process:
# diagnose sys kill 9 <PID>

To store the log file on a USB drive:

 1. Plug in a USB drive into the FortiGate.
 2. Run this command:
execute log backup /usb/log.tar

To restart miglogd and reportd:

diagnose sys process daemon-auto-restart enable miglogd


diagnose sys process daemon-auto-restart enable reportd

Dumping log messages

To dump log messages:

 1. Enable log dumping for miglogd daemon:
(global) # diagnose test application miglogd 26 1
miglogd(1) log dumping is enabled

 2. Display all miglogd dumping status:
global) # diagnose test application miglogd 26 0 255
miglogd(0) log dumping is disabled
miglogd(1) log dumping is enabled
miglogd(2) log dumping is disabled
(global) # diagnose test application miglogd 26 2
miglogd(2) log dumping is enabled

(global) # diagnose test application miglogd 26 0


miglogd(0) log dumping is enabled

(global) # diagnose test application miglogd 26 0 255


miglogd(0) log dumping is enabled
miglogd(1) log dumping is enabled
miglogd(2) log dumping is enabled

 3. Let the FortiGate run and collect log messages.

FortiOS 6.4.6 Administration Guide 1805


Fortinet Technologies Inc.
Log and Report

 4. List the log dump files:
(global) # diagnose test application miglogd 33
2019-04-17 15:50:02 20828 log-1-0.dat
2019-04-17 15:48:31 4892 log-2-0.dat

 5. Back up log dump files to the USB drive:
(global) # diagnose test application miglogd 34

Dumping file miglog1_index0.dat copied to USB disk OK.

Dumping file miglog2_index0.dat copied to USB disk OK.

 6. Disable log dumping for miglogd daemon:
(global) # diagnose test application miglogd 26 0
miglogd(0) log dumping is disabled

(global) # diagnose test application miglogd 26 1


miglogd(1) log dumping is disabled

(global) # diagnose test application miglogd 26 2


miglogd(2) log dumping is disabled

(global) # diagnose test application miglogd 26 0 255


miglogd(0) log dumping is disabled
miglogd(1) log dumping is disabled
miglogd(2) log dumping is disabled

SNMP OID for logs that failed to send

When a syslog server encounters low-performance conditions and slows down to respond, the buffered syslog 
messages in the kernel might overflow after a certain number of retransmissions, causing the overflowed messages to 
be lost. OIDs track the lost messages or failed logs.
SNMP query OIDs include log statistics for global log devices:
 l FORTINET-FORTIGATE-MIB:fortinet.fnFortiGateMib.fgLog.fgLogDeviceNumber 1.3.6.1.4.1.12356.101.21.1.1
 l FORTINET-FORTIGATE-
MIB:fortinet.fnFortiGateMib.fgLog.fgLogDevices.fgLogDeviceTable.fgLogDeviceEntry.fgLogDeviceEntryIndex 
1.3.6.1.4.1.12356.101.21.2.1.1.1
 l FORTINET-FORTIGATE-
MIB:fortinet.fnFortiGateMib.fgLog.fgLogDevices.fgLogDeviceTable.fgLogDeviceEntry.fgLogDeviceEnabled 
1.3.6.1.4.1.12356.101.21.2.1.1.2
 l FORTINET-FORTIGATE-
MIB:fortinet.fnFortiGateMib.fgLog.fgLogDevices.fgLogDeviceTable.fgLogDeviceEntry.fgLogDeviceName 
1.3.6.1.4.1.12356.101.21.2.1.1.3
 l FORTINET-FORTIGATE-
MIB:fortinet.fnFortiGateMib.fgLog.fgLogDevices.fgLogDeviceTable.fgLogDeviceEntry.fgLogDeviceSentCount 
1.3.6.1.4.1.12356.101.21.2.1.1.4
 l FORTINET-FORTIGATE-
MIB:fortinet.fnFortiGateMib.fgLog.fgLogDevices.fgLogDeviceTable.fgLogDeviceEntry.fgLogDeviceRelayedCount 
1.3.6.1.4.1.12356.101.21.2.1.1.5

FortiOS 6.4.6 Administration Guide 1806


Fortinet Technologies Inc.
Log and Report

 l FORTINET-FORTIGATE-
MIB:fortinet.fnFortiGateMib.fgLog.fgLogDevices.fgLogDeviceTable.fgLogDeviceEntry.fgLogDeviceCachedCount 
1.3.6.1.4.1.12356.101.21.2.1.1.6
 l FORTINET-FORTIGATE-
MIB:fortinet.fnFortiGateMib.fgLog.fgLogDevices.fgLogDeviceTable.fgLogDeviceEntry.fgLogDeviceFailedCount 
1.3.6.1.4.1.12356.101.21.2.1.1.7
 l FORTINET-FORTIGATE-
MIB:fortinet.fnFortiGateMib.fgLog.fgLogDevices.fgLogDeviceTable.fgLogDeviceEntry.fgLogDeviceDroppedCount 
1.3.6.1.4.1.12356.101.21.2.1.1.8
Where:
 l fgLogDeviceNumber is the number of devices in the table.
 l fgLogDeviceEnabled is either 1 or 0, indicating whether the device is enabled.
 l fgLogDeviceName is the name of the device.
A FortiGate connected to a syslog server or FortiAnalyzer generates statistics that can be seen using the diagnose
test application miglogd command:
(global) # diagnose test application miglogd 6
mem=404, disk=657, alert=0, alarm=0, sys=920, faz=555, webt=0, fds=0
interface-missed=460
Queues in all miglogds: cur:0 total-so-far:526
global log dev statistics:
syslog 0: sent=254, failed=139, relayed=0
syslog 1: sent=220, failed=139, relayed=0
syslog 2: sent=95, failed=73, relayed=0
faz 0: sent=282, failed=0, cached=0, dropped=0 , relayed=0
Num of REST URLs: 3
/api/v2/monitor/system/csf/ : 0 : 300
/api/v2/cmdb/system/interface/ : 394.0.673.15877729363538323653.1547149763 : 1200
/api/v2/monitor/system/ha-checksums/ : 0 : 1200
faz 1: sent=272, failed=0, cached=0, dropped=0 , relayed=0
Num of REST URLs: 2
/api/v2/monitor/system/csf/ : 0 : 300
/api/v2/cmdb/system/interface/ : 394.0.673.15877729363538323653.1547149763 : 1200

The same statistics are also available in snmpwalk/snmpget on the OID 1.3.6.1.4.1.12356.101.21.
snmpwalk -v2c -c REGR-SYS 172.16.200.1 1.3.6.1.4.1.12356.101.21
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.1.1.0 = INTEGER: 9
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.1.0 = INTEGER: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.1.1 = INTEGER: 1
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.1.2 = INTEGER: 2
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.1.3 = INTEGER: 3
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.1.4 = INTEGER: 4
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.1.5 = INTEGER: 5
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.1.6 = INTEGER: 6
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.1.7 = INTEGER: 7
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.1.8 = INTEGER: 8
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.0 = INTEGER: 1
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.1 = INTEGER: 1
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.2 = INTEGER: 1
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.3 = INTEGER: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.4 = INTEGER: 1
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.5 = INTEGER: 1
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.6 = INTEGER: 0

FortiOS 6.4.6 Administration Guide 1807


Fortinet Technologies Inc.
Log and Report

FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.7 = INTEGER: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.8 = INTEGER: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.0 = STRING: "syslog"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.1 = STRING: "syslog2"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.2 = STRING: "syslog3"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.3 = STRING: "syslog4"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.4 = STRING: "faz"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.5 = STRING: "faz2"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.6 = STRING: "faz3"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.7 = STRING: "webtrends"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.8 = STRING: "fds"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.4.0 = Counter32: 254
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.4.1 = Counter32: 220
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.4.2 = Counter32: 95
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.4.3 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.4.4 = Counter32: 282
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.4.5 = Counter32: 272
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.4.6 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.4.7 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.4.8 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.5.0 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.5.1 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.5.2 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.5.3 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.5.4 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.5.5 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.5.6 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.5.7 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.5.8 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.6.0 = Gauge32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.6.1 = Gauge32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.6.2 = Gauge32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.6.3 = Gauge32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.6.4 = Gauge32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.6.5 = Gauge32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.6.6 = Gauge32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.6.7 = Gauge32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.6.8 = Gauge32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.0 = Counter32: 139
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.1 = Counter32: 139
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.2 = Counter32: 73
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.3 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.4 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.5 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.6 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.7 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.8 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.8.0 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.8.1 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.8.2 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.8.3 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.8.4 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.8.5 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.8.6 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.8.7 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.8.8 = Counter32: 0

FortiOS 6.4.6 Administration Guide 1808


Fortinet Technologies Inc.
Log and Report

To get the type of logging device that is attached to the FortiGate:

root@PC05:/home/tester/autolib/trunk# snmpwalk -v2c -c REGR-SYS 172.16.200.1


1.3.6.1.4.1.12356.101.21.2.1.1.3
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.0 = STRING: "syslog"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.1 = STRING: "syslog2"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.2 = STRING: "syslog3"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.3 = STRING: "syslog4"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.4 = STRING: "faz"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.5 = STRING: "faz2"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.6 = STRING: "faz3"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.7 = STRING: "webtrends"
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.3.8 = STRING: "fds"

To get the present state of the logging device that is attached to the FortiGate:

root@PC05:/home/tester/autolib/trunk# snmpwalk -v2c -c REGR-SYS 172.16.200.1


1.3.6.1.4.1.12356.101.21.2.1.1.2
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.0 = INTEGER: 1
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.1 = INTEGER: 1
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.2 = INTEGER: 1
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.3 = INTEGER: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.4 = INTEGER: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.5 = INTEGER: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.6 = INTEGER: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.7 = INTEGER: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.2.8 = INTEGER: 0

To get the failed log count value:

root@PC05:/home/tester/autolib/trunk# snmpwalk -v2c -c REGR-SYS 172.16.200.1


1.3.6.1.4.1.12356.101.21.2.1.1.7
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.0 = Counter32: 139
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.1 = Counter32: 139
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.2 = Counter32: 73
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.3 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.4 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.5 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.6 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.7 = Counter32: 0
FORTINET-FORTIGATE-MIB::fnFortiGateMib.21.2.1.1.7.8 = Counter32: 0

FortiOS 6.4.6 Administration Guide 1809


Fortinet Technologies Inc.
VM

Amazon Web Services

See the FortiOS 6.4.6 AWS Administration Guide.

Microsoft Azure

See the FortiOS 6.4.6 Azure Administration Guide.

Google Cloud Platform

See the 6.4.6 FortiOS GCP Administration Guide.

Oracle OCI

See the 6.4.6 FortiOS OCI Administration Guide.

AliCloud

See the 6.4.6 FortiOS AliCloud Administration Guide.

Private cloud

See the Private Cloud section in the Virtualization document library.

VM license

The FortiGate VM License page is accessible from the Dashboard > Status page in the Virtual Machine widget. Click the 


device license and select FortiGate VM License. 

FortiOS 6.4.6 Administration Guide 1810


Fortinet Technologies Inc.
VM

The FortiGate VM License page displays the following information:

Field Description

License status One of the following statuses is displayed:
 l Valid: the VM can connect and validate the license against a FortiManager or 
FortiGuard server. All features are available.
 l Warning: the VM cannot connect and validate against a FortiManager or 
FortiGuard server. A check is made against how many days the warning 
status is continuous. If the number is less than 30 days, the status does not 
change.
 l Invalid: the VM cannot connect and validate against a FortiManager or 
FortiGuard server. A check is made against how many days the warning 
status is continuous. If the number is 30 days or more, the status changes to 
invalid. GUI access is restricted until a valid license is uploaded. Firewall 
policies will not work. FortiGuard downloads are not available.
 l Pending: a temporary state where the VM is attempting to validate its license.
Reasons for having a warning or invalid status include:
 l The network environment does not allow FortiGate-VM to connect to the 
FortiGuard server.
 l The license might be expired. Check the expiration date for evaluation or 
term-based licenses.
 l Another VM has been already validated with FortiGuard using the same 
license. See VM license activation for details about duplicated VM instances.

Allocated vCPUs Number of allocated and total allowable vCPUs

Allocated RAM Amount of allocated RAM (in FortiOS 6.2.2 and later, there are no RAM 
restrictions)

Expires on Expiry date (value depends on the type of license)

This information is visible in the CLI by running get system status (see CLI troubleshooting).

Uploading a license file

After you submit an order for a FortiGate-VM, Fortinet sends a license registration code to the email address that you 
entered in the order form. Use this code on the FortiCloud portal to register the FortiGate-VM. 
Once the VM is registered, you can download the license file in .LIC format. On the FortiGate VM License page, click 
Upload. The system will prompt you to reboot and validate the license with the FortiGuard server. Once validated, your 
FortiGate-VM is fully functional.
The VM license window may also appear immediately after logging in if you are running a VM with an evaluation license 
that has expired.
In cases where the GUI is not accessible, you can upload the license using secure copy (SCP).

For information about injecting Flex-VM license tokens, see Injecting tokens into FortiGate-VM 


in the Flex VM Deployment Guide.

FortiOS 6.4.6 Administration Guide 1811


Fortinet Technologies Inc.
VM

To upload the license using SCP:

 1. Enable SCP:
config system global
set admin-scp enable
end

 2. Enable SSH in the administrative access for the interface where the transfer will take place:
config system interface
edit <interface>
append allowaccess ssh
next
end

 3. On your computer, upload the VM license. This example is for Linux:
scp <filename> <admin-user>@<FortiGate_IP>:vmlicense

Types of VM licenses

FortiGate-VM offers perpetual licensing (normal series and V-series) and annual subscription licensing (S-series). SKUs 
are based on the number of vCPUs (1, 2, 4, 8, 16, 32, or unlimited).
The Flex-VM program allows qualified enterprise and MSSP customers to create as many VM entitlements as required. 
Resource consumption is based upon predefined points that are calculated on a daily basis. For information, see the 
Flex-VM Program Guide in the Fortinet document library.

Feature Normal series V-series S-series Flex-VM

Licensing and  The VM base is perpetual. Single annually  An annually 


support You must separately contract support  contracted SKU that  contracted program 
services on an annual basis. contains a VM base  to create multiple 
See the price list for details. and a FortiCare  sets of a single 
service bundle. entitlement per VM. 
Four support service  Entitlements contain 
bundle types are  a VM base and 
available: FortiCare bundle.
 l Only FortiCare Four support service 
 l UTM bundle types are 
 l Enterprise available:
 l 360 Protection  l Only FortiCare
 l UTM
 l Enterprise
 l 360 Protection

FortiOS 6.4.6 Administration Guide 1812


Fortinet Technologies Inc.
VM

Feature Normal series V-series S-series Flex-VM

vCPU number  Not supported. Supported. You can  Supported. You can 


upgrade during  also upgrade the  apply different VM 
contracted term support service  entitlement 
bundle.  configurations in the 
Contact a Fortinet  Flex-VM portal. API 
sales representative  is not supported at 
to upgrade. this time.

vCPU number  Not supported.  
downgrade during 
contracted term

VDOM support By default, each CPU  By default, all CPU levels do not support   


level supports up to a  adding VDOMs.
certain number of 
VDOMs.
Refer to the 
FortiGate-VM data 
sheet for default 
limits.

CLI troubleshooting

In some cases, more information can be viewed from the CLI to diagnose issues with VM licensing. This is also useful 
when the GUI is inaccessible due to an invalid contract.
Before you begin, ensure your FortiGate has the proper routes to connect to the internet.

To view the license status, expiration date, and VM resources:

# get system status


Version: FortiGate-VM64-KVM v6.4.2,build1723,200730 (GA)
...
Serial-Number: FGVM08**********
....
License Status: Valid
License Expiration Date: 2020-12-10
VM Resources: 1 CPU/8 allowed, 2010 MB RAM
...

To display license details:

# diagnose debug vm-print-license


SerialNumber: FGVM08**********
CreateDate: Tue Dec 10 00:57:32 2019
License expires: Thu Dec 10 00:00:00 2020
Expiry: 366
Key: yes
Cert: yes
Key2: yes

FortiOS 6.4.6 Administration Guide 1813


Fortinet Technologies Inc.
VM

Cert2: yes
Model: 08 (11)
CPU: 8
MEM: 2147483647

To display license information from FortiGuard:

# diagnose hardware sysinfo vm full


UUID: abbe****************************
valid: 1
status: 1
code: 200
warn: 0
copy: 0
received: 4604955037
warning: 4600905081
recv: 202009152207
dup:

This combination indicates the license is valid and functioning normally:
valid: 1
status: 1
code: 200

This combination indicates the license is valid but may be running a duplicate instance:
valid: 1
status: 4
code: 401

This combination indicates the system cannot connect to FortiGuard:
valid: 0
status: 2
code: 502

This combination indicates the license is invalid:
valid: 0
status: 3
code: 400

Contact Fortinet Support for assistance if your licensing issue persists.

FortiGate multiple connector support

This guide shows how to configure Fabric connectors and resolve dynamic firewall addresses through the configured 
Fabric connector in FortiOS.
FortiOS supports multiple Fabric connectors including public connectors (AWS, Azure, GCP, OCI, AliCloud) and private 
connectors (Kubernetes, VMware ESXi, VMware NSX, OpenStack, Cisco ACI, Nuage). FortiOS also supports multiple 
instances for each type of Fabric connector.

FortiOS 6.4.6 Administration Guide 1814


Fortinet Technologies Inc.
VM

This guide uses an Azure Fabric connector as an example. The configuration procedure for all supported Fabric 
connectors is the same. In the following topology, the FortiGate accesses the Azure public cloud through the Internet:

This process consists of the following:
 1. Configure the interface.
 2. Configure a static route to connect to the Internet.
 3. Configure two Azure Fabric connectors with different client IDs.
 4. Check the configured Fabric connectors.
 5. Create two firewall addresses.
 6. Check the resolved firewall addresses after the update interval.
 7. Run diagnose commands.

To configure the interface:

 1. In FortiOS, go to Network > Interfaces.


 2. Edit port1:
 a. From the Role dropdown list, select WAN.
 b. In the IP/Network Mask field, enter 10.6.30.4/255.255.255.0 for the interface connected to the Internet.

To configure a static route to connect to the Internet:

 1. Go to Network > Static Routes. Click Create New.


 2. In the Destination field, enter 0.0.0.0/0.0.0.0.
 3. From the Interface dropdown list, select port1.
 4. In the Gateway Address field, enter 10.60.30.254.

To configure two Azure Fabric connectors with different client IDs:

 1. Go to Security Fabric > External Connectors.


 2. Click Create New. Configure the first Fabric connector:
 a. Select Microsoft Azure.
 b. In the Name field, enter azure1.
 c. In the Status field, select Enabled.
 d. From the Server region dropdown list, select Global.
 e. In the Tenant ID field, enter the tenant ID. In this example, it is 942b80cd-1b14-42a1-8dcf-4b21dece61ba.
 f. In the Client ID field, enter the client ID. In this example, it is 14dbd5c5-307e-4ea4-8133-68738141feb1.
 g. In the Client secret field, enter the client secret.
 h. Leave the Resource path disabled.
 i. Click OK.
 3. Click Create New. Configure the second Fabric connector:
 a. Select Microsoft Azure.
 b. In the Name field, enter azure2.

FortiOS 6.4.6 Administration Guide 1815


Fortinet Technologies Inc.
VM

 c. In the Status field, select Enabled.
 d. From the Server region dropdown list, select Global.
 e. In the Tenant ID field, enter the tenant ID. In this example, it is 942b80cd-1b14-42a1-8dcf-4b21dece61ba.
 f. In the Client ID field, enter the client ID. In this example, it is 3baf0a6c-44ff-4f94-b292-07f7a2c36be6.
 g. In the Client secret field, enter the client secret.
 h. Leave the Resource path disabled.
 i. Click OK.

To check the configured Fabric connectors:

 1. Go to Security Fabric > External Connectors.


 2. Click the Refresh icon in the upper right corner of each configured Fabric connector. A green up arrow appears in 
the lower right corner, meaning that both Fabric connectors are connected to the Azure cloud using different client 
IDs.

To create two firewall addresses:

This process creates two Fabric connector firewall addresses to associate with the configured Fabric connectors.
 1. Go to Policy & Objects > Addresses.
 2. Click Create New > Address. Configure the first Fabric connector firewall address:
 a. In the Name field, enter azure-address-1.
 b. From the Type dropdown list, select Fabric Connector address.
 c. From the SDN Connector dropdown list, select azure1.
 d. For SDN address type, select Private.
 e. From the Filter dropdown list, select the desired filter.
 f. For Interface, select any.
 g. Click OK.
 3. Click Create New > Address. Configure the second Fabric connector firewall address:
 a. In the Name field, enter azure-address-1.
 b. From the Type dropdown list, select Fabric Connector address.
 c. From the SDN Connector dropdown list, select azure2.
 d. For SDN address type, select Private.
 e. From the Filter dropdown list, select the desired filter.
 f. For Interface, select any.
 g. Click OK.

To check the resolved firewall addresses after the update interval:

By default, the update interval is 60 seconds.
 1. Go to Policy & Objects > Addresses.
 2. Hover over the created addresses. The firewall address that the configured Fabric connectors resolved display.   

FortiOS 6.4.6 Administration Guide 1816


Fortinet Technologies Inc.
VM

To run diagnose commands:

Run the show sdn connector status command. Both Fabric connectors should appear with a status of connected.


Run the diagnose debug application azd -1 command. The output should look like the following:
Level2-downstream-D # diagnose debug application azd -1
...
azd sdn connector azure1 start updating IP addresses
azd checking firewall address object azure-address-1, vd 0
IP address change, new list:
10.18.0.4
...

To restart the Azure Fabric connector daemon, run the diagnose test application azd 99 command.

Adding VDOMs with FortiGate v-series

Each FortiGate-VM base license type allows a default number of VDOMs. This topic provides sample procedures to add 
VDOMs beyond the default number using separately purchased VDOM licenses.
This topic consists of the following steps:
 1. Activate the FortiGate-VM with the base license.
 2. Add more VDOMs to the FortiGate-VM.

To activate the FortiGate-VM with the base license:

 1. Purchase and register the FortiGate-VM base license in FortiCare:
 a. Purchase the FortiGate-VM base license from Fortinet or a Fortinet reseller.
 b. You receive a license certification with a registration code. Open the certification.
 c. Log in to Fortinet Customer Service & Support.
 d. Go to Asset > Register/Activate and enter the provided registration code.
 e. Follow the registration process. The serial number generates and displays on the Registration Completion 
page.
 f. Go to Asset > Manage/View Products. Click the serial number to download the license file.
 2. Upload the FortiGate-VM base license file to FortiOS:
 a. Log in to the FortiGate-VM GUI.
 b. In Dashboard > Status, in the Virtual Machine widget, click FortiGate VM License.
 c. Click the Upload button.
 d. Select the FortiGate-VM base license file, then click OK. The FortiGate-VM reboots after applying the base 
license.
 3. Verify the FortiGate-VM base license status and VDOM information:
 a. Log  in to the FortiGate-VM GUI.
 b. In Dashboard > Status, in the Virtual Machine widget, ensure that there is a checkmark in front of the FortiGate-
VM base license name. The checkmark indicates that the base license is valid.
 c. You can check VDOM information using the CLI. The following output shows that the maximum number of 
VDOMs is currently one. This is correct since the FortiGate-VM base license only supports the default root 
VDOM that the system uses.   

FortiOS 6.4.6 Administration Guide 1817


Fortinet Technologies Inc.
VM

To add more VDOMs to the FortiGate-VM:

You can repeat this procedure multiple times to stack multiple VDOM licenses on the same FortiGate-VM.
 1. Purchase and register the FortiGate-VM upgrade license in FortiCare. This example adds 15 VDOMs:
 a. Purchase the FortiGate-VM upgrade license from Fortinet or a Fortinet reseller.
 b. You receive a license certification with a registration code. Open the certification.
 c. Log in to Fortinet Customer Service & Support.
 d. Go to Asset > Register/Activate and enter the provided registration code.
 e. On the Specify License Confirmation Information screen, enter the FortiGate-VM serial number to apply the 
VDOM upgrade license to the FortiGate-VM. In this example, the FortiGate-VM serial number is 
FGVM4VTM19000476.   

 f. Follow the registration process.
 g. Go to Asset > Manage/View Products > . Select the desired product, then click License & Key. The VDOM 
upgrade license displays under Registered License(s), and a key for adding 15 VDOMs (in this example 
M6JSD-8EE32-VHIJB-N) displays under Available Key(s).   

 2. Apply the FortiGate-VM upgrade license key to FortiOS:
 a. Log in to the FortiGate-VM CLI in the local console or using SSH.
 b. Apply the VDOM upgrade license key:   
FGVM4VTM19000476 # execute upd-vd-license M6JSD-8EE32-VHIJB-N
update vdom license succeeded
 3. Verify the FortiGate-VM VDOM information:
 a. Log  in to the FortiGate-VM CLI in the local console or using SSH.
 b. Check VDOM information using the CLI. The following output shows that the maximum number of VDOMs is 
currently 15. When you add VDOMs for the first time on a FortiGate-VM v-series instance, FortiOS does not 
count the default VDOM, as the default VDOM is the so-called root VDOM that the system uses and FortiOS 
does not treat it as a countable VDOM in terms of VDOM addition. Therefore, as in this example, if your 

FortiOS 6.4.6 Administration Guide 1818


Fortinet Technologies Inc.
VM

FortiGate-VM had the default VDOM configuration, then you add 15 VDOMs, FortiOS displays the maximum 
VDOM number as 15, not 16.   
# get system status
Version: FortiGate-VM64-KVM v6.4.4,build1803,201209 (GA)
Virus-DB: 82.00644(2020-12-18 12:20)
Extended DB: 82.00644(2020-12-18 12:20)
Extreme DB: 1.00000(2018-04-09 18:07)
IPS-DB: 16.00982(2020-12-17 01:04)
IPS-ETDB: 0.00000(2001-01-01 00:00)
APP-DB: 16.00982(2020-12-17 01:04)
INDUSTRIAL-DB: 6.00741(2015-12-01 02:30)
Serial-Number: FGVM02TM20000000
IPS Malicious URL Database: 2.00862(2020-12-18 06:12)
License Status: Invalid Copy
License Expiration Date: 2021-10-02
VM Resources: 2 CPU/2 allowed, 2010 MB RAM
Log hard disk: Available
Hostname: FGDocs
Private Encryption: Disable
Operation Mode: NAT
Current virtual domain: root
Max number of virtual domains: 1
Virtual domains status: 1 in NAT mode, 0 in TP mode
Virtual domain configuration: disable
FIPS-CC mode: disable
Current HA mode: standalone
Branch point: 1803
Release Version Information: GA
FortiOS x86-64: Yes
System time: Fri Dec 25 13:24:20 2020

Terraform: FortiOS as a provider

Fortinet's Terraform support provides customers with more ways to efficiently deploy, manage, and automate security 
across physical FortiGate appliances and virtual environments. You can use Terraform to automate various IT 
infrastructure needs, thereby diminishing mistakes from repetitive manual configurations. 
For example, if Fortinet is releasing a new FortiOS version, your organization may require you to test a new functionality 
to determine how it may impact the environment before globally deploying the new version. In this case, the ability to 
rapidly stand up environments and test these functions prior to production environment integration provides a resource-
efficient and fault-tolerant approach.
The following example demonstrates how to use the Terraform FortiOS provider to perform simple configuration 
changes on a FortiGate unit. It requires the following:
 l FortiOS 6.0 or later
 l FortiOS Provider: This example uses terraform-provider-fortios 1.0.0.
 l Terraform: This example uses Terraform 0.11.14.
 l REST API administrator created on the FortiGate with the API key
For more information, see the Terraform FortiOS Provider at https://www.terraform.io/docs/providers/fortios/index.html.

FortiOS 6.4.6 Administration Guide 1819


Fortinet Technologies Inc.
VM

To create a REST API administrator:

 1. On the FortiGate, go to System > Administrators and click Create New > REST API Admin.


 2. Enter the Username and, optionally, enter Comments.
 3. Select an Administrator Profile.
 4. We recommend that you create a new profile with minimal privileges for this terraform script:   
 a. In the Administrator Profile drop down click Create New.
 b. Enter a name for the profile.
 c. Configure the Access Permissions:   
 l None: The REST API is not permitted access to the resource.
 l Read: The REST API can send read requests (HTTP GET) to the resource.
 l Read/Write: The REST API can send read and write requests (HTTP GET/POST/PUT/DELETE) to the 
resource.
 d. Click OK.
 5. Enter Trusted Hosts to specify the devices that are allowed to access this FortiGate.
 6. Click OK. 
An API key is displayed. This key is only shown once, so you must copy and store it securely.

To configure FortiGate with Terraform Provider module support:

 1. Download the terraform-provider-fortios file to a directory on the management computer.
 2. Create a new file with the .tf extension for configuring your FortiGate:   
root@mail:/home/terraform# ls
terraform-provider-fortios_v1.0.0_x4 test.tf
 3. Edit the test.tf Terraform configuration file:
In this example, the FortiGate's IP address is 10.6.30.5, and the API user token is 17b********************63ck. Your 
provider information must also be changed.
# Configure the FortiOS Provider
provider "fortios" {
hostname = "10.6.30.5"
token = "17b********************63ck"
}

 4. Create the resources for configuring your DNS object and adding a static route:
resource "fortios_system_setting_dns" "test1" {
primary = "172.16.95.16"
secondary = "8.8.8.8"
}
resource "fortios_networking_route_static" "test1" {
dst = "110.2.2.122/32"
gateway = "2.2.2.2"
blackhole = "disable"
distance = "22"
weight = "3"
priority = "3"
device = "port2"
comment = "Terraform test"
}

 5. Save your Terraform configuration file.

FortiOS 6.4.6 Administration Guide 1820


Fortinet Technologies Inc.
VM

 6. In the terminal, enter terraform init to initialize the working directory.


It reads the provider if the name follows the convention terraform-provider-[name]:
root@mail:/home/terraform# terraform init
Initializing the backend...
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

 7. Run terraform -v to verify the version of loaded provider module:


root@mail:/home/terraform# terraform -v
Terraform v0. 11.14
+ provider.fortios v1.0.0

 8. Enter terraform plan to parse the configuration file and read from the FortiGate configuration to see what 


Terraform changes:
This example create a static route and updates the DNS address. You can see that Terraform reads the DNS 
addresses from the FortiGate and then lists them.
root@mail:/home/terraform# terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
fortios_networking_route_static.test1: Refreshing state... (ID: 2)
fortios_system_setting_dns.test1: Refreshing state... (ID: 208.91.112.53)
------------------------------------------------------------------------
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
~ update in-place
Terraform will perform the following actions:
+ fortios_networking_route_static.test1
id: <computed>
blackhole: "disable"
comment: "Terraform test"
device: "port2"
distance: "22"
dst: "110.2.2.122/32"
gateway: "2.2.2.2"
priority: "3"
weight: "3"
~ fortios_system_setting_dns.test1
primary: "208.91.112.53" => "172.16.95.16"
secondary: "208.91.112.22" => "8.8.8.8"
Plan: 1 to add, 1 to change, 0 to destroy.
------------------------------------------------------------------------
Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.

FortiOS 6.4.6 Administration Guide 1821


Fortinet Technologies Inc.
VM

If you are running terraform-provider-fortios 1.1.0, you may see the following error:
Error: Error getting CA Bundle, CA Bundle should be set when
insecure is false.
In this case, add the following line to the FortiOS provider configuration in the test.tf file:
insecure = "true"

 9. Enter terraform apply to continue the configuration: 


root@mail:/home/terraform# terraform apply
fortios_system_setting_dns.test1: Refreshing state... (ID: 208.91.112.53)
fortios_networking_route_static.test1: Refreshing state... (ID: 2)
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
~ update in-place
Terraform will perform the following actions:
+ fortios_networking_route_static.test1
id: <computed>
blackhole: "disable"
comment: "Terraform test"
device: "port2"
distance: "22"
dst: "110.2.2.122/32"
gateway: "2.2.2.2"
priority: "3"
weight: "3"
~ fortios_system_setting_dns.test1
primary: "208.91.112.53" => "172.16.95.16"
secondary: "208.91.112.22" => "8.8.8.8"
Plan: 1 to add, 1 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
fortios_networking_route_static.test1: Creating...
blackhole: "" => "disable"
comment: "" => "Terraform test"
device: "" => "port2"
distance: "" => "22"
dst: "" => "110.2.2.122/32"
gateway: "" => "2.2.2.2"
priority: "" => "3"
weight: "" => "3"
fortios_system_setting_dns.test1: Modifying... (ID: 208.91.112.53)
primary: "208.91.112.53" => "172.16.95.16"
secondary: "208.91.112.22" => "8.8.8.8"
fortios_networking_route_static.test1: Creation complete after 0s (ID: 2)
fortios_system_setting_dns.test1: Modifications complete after 0s (ID: 172.16.95.16)
Apply complete! Resources: 1 added, 1 changed, 0 destroyed.

The FortiGate is now configured according to the configuration file.
 10. To change or delete something in the future, edit the configuration file and then apply it again. In supported cases, it 
deletes, adds, or updates new entries as configured. For instance, in this example you can remove the static route 
and revert the DNS address to its original configuration by changing the .tf file:   

FortiOS 6.4.6 Administration Guide 1822


Fortinet Technologies Inc.
VM

 a. Edit the configuration file:
# Configure the FortiOS Provider
provider "fortios" {
hostname = "10.6.30.5"
token = "17b********************63ck"
}
resource "fortios_system_setting_dns" "test1" {
primary = "208.91.112.53"
secondary = "208.91.112.22"
}
#resource "fortios_networking_route_static" "test1" {
# dst = "110.2.2.122/32"
# gateway = "2.2.2.2"
# blackhole = "disable"
# distance = "22"
# weight = "3"
# priority = "3"
# device = "port2"
# comment = "Terraform test"
#}

 b. Entering terraform apply deletes the static route that is commented out of the configuration file, and 


reverts the DNS address to the old address:
root@mail:/home/terraform# terraform apply
fortios_system_setting_dns.test1: Refreshing state... (ID: 172.16.95.16)
fortios_networking_route_static.test1: Refreshing state... (ID: 2)
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
~ update in-place
- destroy
Terraform will perform the following actions:
- fortios_networking_route_static.test1
~ fortios_system_setting_dns.test1
primary: "172.16.95.16" => "208.91.112.53"
secondary: "8.8.8.8" => "208.91.112.22"
Plan: 0 to add, 1 to change, 1 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
fortios_networking_route_static.test1: Destroying... (ID: 2)
fortios_system_setting_dns.test1: Modifying... (ID: 172.16.95.16)
primary: "172.16.95.16" => "208.91.112.53"
secondary: "8.8.8.8" => "208.91.112.22"
fortios_networking_route_static.test1: Destruction complete after 0s
fortios_system_setting_dns.test1: Modifications complete after 0s (ID: 208.91.112.53)
Apply complete! Resources: 0 added, 1 changed, 1 destroyed.

Troubleshooting

Use the HTTPS daemon debug to begin troubleshooting why a configuration was not accepted:
# diagnose debug enable
# diagnose debug application httpsd -1

FortiOS 6.4.6 Administration Guide 1823


Fortinet Technologies Inc.
VM

The REST API 403 error means that your administrator profile does not have sufficient 
permissions.
The REST API 401 error means that you do not have the correct token or trusted host.

PF and VF SR-IOV driver and virtual SPU support

Physical Function (PF) and Virtual Function (VF) PCI Passthrough and SR-IOV drivers in FortiGate guest VM are 
supported.
PF provides the ability for PCI Passthrough, but requires an entire Network Interface Card (NIC) for a VM. It can usually 
achieve greater performance than a Virtual Function (VF) based SR-IOV. PF is also expensive. While VF allows one NIC 
to be shared among multiple guests VMs, PF is allocated to one port on a VM.
The supported driver versions are:

Driver Version Hypervisor PCI- vSPU (In- Note


Passthrough/SR- guest
IOV DPDK)

ixgbe 5.6.5 ESXi, KVM Yes Yes  

Ixgbevf 4.6.3 ESXi, KVM Yes    

i40e 2.10.19.82 ESXi, KVM Yes Yes  

i40evf 3.6.15 ESXi, KVM Yes Yes Available in FortiOS 


  6.4.0 and earlier 
versions.

Iavf  3.7.61.20 ESXi, KVM Yes Yes Replaces i40evf in 


    FortiOS 6.4.1 and later 
  versions. Supports 
Intel E810-C 100G 
adapters.

Mlx5 4.6-1.0.1 ESXi, KVM Yes Yes Supports Mellanox 


ConnectX-5 100G 
adapters.

Bcxt_en 1.10.1- ESXi, KVM Yes Yes Available in FortiOS 


  216.0.416.1 6.4.3 and later 
versions. Supports 
Broadcom P2100G 
100G adapters.

Vmxnet3 1.4.a.0-k- ESXi   Yes The combination of 


NAPI VMware ESXi and 
NSX-T does not 
support virtual SPU 
(vSPU).

FortiOS 6.4.6 Administration Guide 1824


Fortinet Technologies Inc.
VM

Other hypervisors, such as Xen or Microsoft Hyper-V, may work with vSPU, although they are 
unverified.

All tools and software utilities for UEFI 1.X have been removed from 6.2.0 and later releases. 
Update to UEFI 2.x to use the UEFI tools or software utilities.

You perform the configuration to use PF or VF on the hypervisor, and do not configure it on the FortiGate.

To check what driver is being used on the FortiGate:

# diagnose hardware deviceinfo nic port2


Name: port2
Driver: i40e
Version: 2.4.10
Bus: 0000:03:00.0
Hwaddr: 3c:fd:fe:1e:98:02
Permanent Hwaddr:3c:fd:fe:1e:98:02
State: up
Link: up
Mtu: 1500
Supported: auto 1000full 10000full
Advertised: auto 1000full 10000full
Auto: disabled
Rx packets: 0
Rx bytes: 0
Rx compressed: 0
...

Using OCI IMDSv2

OCI IMDSv2 offers increased security for accessing instance metadata compared to IMDSv1. IMDSv2 is used in OCI 
SDN connectors and on instance deployments with bootstrap metadata. When upgrading from previous FortiOS builds 
with legacy IMDSv1 endpoints, the endpoints will be updated to IMDSv2, and the same calls can be made.
The following use cases illustrate IMDSv2 support on the FortiGate-VM.

To configure the Oracle OCI instance to use IMDSv2:

 1. In OCI, deploy an instance using IMDSv2 with bootstrap metadata. There are two methods to enable IMDSv2 :
 l Use the OCI command line to deploy an instance using user-data. This example uses a MIME file that 
contains the license and configuration, as well as a JSON file that specifies to disable V1 metadata.
oci compute instance launch
--availability-domain wwwl:US-ASHBURN-AD-1
--compartment-id
ocid1.tenancy.oc1..aaaaaaaaaaa3aaaaaaaaaaaaaaaaa7xxxxxxx54aaaaaa4xxxxxxxx55xxxa
--display-name fos-byol-v6.4.6-b2290-emulated

FortiOS 6.4.6 Administration Guide 1825


Fortinet Technologies Inc.
VM

--image-id
ocid1.image.oc1.iad.aaaaaaaa6xxx43xxxxxxxxx7aaaaaaaaaaaaaaaaaaaa3xxxxxxxxxxxxxxx
--subnet-id
ocid1.subnet.oc1.iad.aaaaaaaaxxxxxxxxx2xxxxxxxxxxxxxxxxxxxx5aaa4xxxxxxxxxxxx42aaa
--shape VM.Standard1.4
--assign-public-ip true
--user-data-file /home/oci/userdata/mime.txt
--ssh-authorized-keys-file /home/oci/userdata/myfirstkeypair.pub
--instance-options file://home/oci/scripts/metadatav2.json
root@mail:/home/oci/scripts# cat metadatav2.json
{
"areLegacyImdsEndpointsDisabled": true
}

 l While the instance is running, edit the instance metadata service version in the GUI ,and change the allowed 
IMDS version to VERSION 2 ONLY (see Getting Instance Metadata in the OCI documentation).

 2. The FortiGate will use the metadata v2 endpoints to get the metadata bootstrap information. In FortiOS, verify this 
by running the following after bootup:
# diagnose debug cloudinit show

To configure an SDN connector with meta-IAM enabled and firewall addresses to obtain dynamic
addresses:

 1. Configure an IAM policy and dynamic group (see How Policies Work and Managing Dynamic Groups in the OCI 
documentation).

FortiOS 6.4.6 Administration Guide 1826


Fortinet Technologies Inc.
VM

 2. In FortiOS, configure the OCI Fabric connector (see OCI SDN connector using certificates on page 322 for detailed 
instructions):
 a. Create the SDN connector.
 b. Verify that the OCI connector comes up (Security Fabric > External Connectors page indicates the status is 
up).
 c. Configure a dynamic firewall address with a filter.
 d. Verify the dynamic firewall address is resolved by the SDN connector.

To manually update the external IP:

# execute update-eip
instance: fos-byol-v6.4.6-b2290-emulated
vnic0: fos-byol-v6.4.6-b2290-emulated
10.0.0.58 (129.213.138.192)
port1: 10.0.0.58, eip: 129.213.138.192
EIP is updated successfully

To verify the OCI daemon debugs related to metadata:

# diagnose test application ocid 4


instance: fos-byol-v6.4.6-b2290-emulated
vnic0: fos-byol-v6.4.6-b2290-emulated
10.0.0.58
# diagnose test application ocid 5
Compartment
Id:ocid1.tenancy.oc1..aaaaaaaaaaa3aaaaaaaaaaaaaaaaa7xxxxxxx54aaaaaa4xxxxxxxx55xxxa
Instance Id:ocid1.instance.oc1.iad.axxxxxxxxxxxxxxxxxxx4aaaaa5aaaaaaaaa4xxxxxxx2aaaaaaaa
Instance Name:fos-byol-v6.4.6-b2290-emulated
OCI Regarxiehlion:us-ashburn-1
# diagnose test application ocid 6
Instance Principal Token has been refreshed

FortiOS 6.4.6 Administration Guide 1827


Fortinet Technologies Inc.
Troubleshooting

Troubleshooting

This section is intended for administrators with super_admin permissions who require assistance with  basic and 
advanced troubleshooting. Admins with other types of permissions may not be able to perform all of the tasks in this 
section. 
This section contains the following troubleshooting topics:
 l Troubleshooting methodologies on page 1829
 l Troubleshooting scenarios on page 1832
 l Checking the system date and time on page 1833
 l Checking the hardware connections on page 1834
 l Checking FortiOS network settings on page 1835
 l Troubleshooting CPU and network resources on page 1838
 l FortiGuard server settings on page 1876
 l Troubleshooting high CPU usage on page 1839
 l Checking the modem status on page 1843
 l Running ping and traceroute on page 1844
 l Checking the logs on page 1847
 l Verifying routing table contents in NAT mode on page 1848
 l Verifying the correct route is being used on page 1849
 l Verifying the correct firewall policy is being used on page 1849
 l Checking the bridging information in transparent mode on page 1850
 l Checking the number of sessions that UTM proxy uses on page 1851
 l Checking wireless information on page 1855
 l  Performing a sniffer trace (CLI and packet capture) on page 1856
 l Debugging the packet flow on page 1859
 l Testing a proxy operation on page 1862
 l Displaying detail Hardware NIC information on page 1862
 l Performing a traffic trace on page 1865
 l Using a session table on page 1865
 l Finding object dependencies on page 1869
 l Diagnosing NPU-based interfaces on page 1870
 l Identifying the XAUI link used for a specific traffic stream on page 1870
 l Running the TAC report on page 1872
 l Other commands on page 1872
 l FortiGuard troubleshooting on page 1875
 l Additional resources on page 1878

FortiOS 6.4.6 Administration Guide 1828


Fortinet Technologies Inc.
Troubleshooting

Troubleshooting methodologies

The sections in this topic provide an overview of how to prepare to troubleshoot problems in FortiGate. They include 
verifiying your user permissions, establishing a baseline, defining the problem, and creating a plan. 

Verify user permissions

Before you begin troubleshooting, verify the following:
 l You have administrator privileges for the FortiGate.
 l The FortiGate is integrated into your network.
 l The operation mode is configured.
 l The system time, DNS settings, administrator password, and network interfaces are configured.
 l Firmware, FortiGuard AntiVirus, FortiGuard Application Control, and FortiGuard IPS are up to date.

If you are using a FortiGate that has virtual domains (VDOMs) enabled, you can often 
troubleshoot within your own VDOM. However, you should inform the super_admin for the 
FortiGate that you willl be performing troubleshooting tasks.
You may also need access to other networking equipment, such as switches, routers, and 
servers to carry out tests. If you do not have access to this equipment, contact your network 
administrator for assistance.

Establish a baseline

FortiGate operates at all layers of the OSI model. For this reason, troubleshooting can be complex. Establishing baseline 
parameters for your system before a problem occurs  helps to reduce the complexity when you need to troubleshoot.
A best practice is to establish and record the normal operating status. Regular operation data shows trends, and allows 
you to see where changes occur when  problems arise. You can gather this data by using logs and SNMP tools to 
monitor the system performance or by regularly running information gathering commands and saving the output. 

You should back up your FortiOS configuration on a regular basis even when you are not 
troubleshooting. You can restore the backed up configuration as needed to save time 
recreating it from the factory default settings.

Use the following CLI commands to obtain normal operating data for a FortiGate:

get system status Displays firmware versions and FortiGuard engine versions, and 


other system information.
get system performance status Displays CPU and memory states, average network usage, average 
sessions and session setup rate, viruses caught, IPS attacks blocked, 
and uptime.
get hardware memory Displays information about memory.

FortiOS 6.4.6 Administration Guide 1829


Fortinet Technologies Inc.
Troubleshooting

get system session status Displays total number of sessions.


get router info routing-table all Displays all the routes in the routing table, including their type, 
source, and other useful data.
get ips session Displays memory used and maximum amount available to IPS as well 
as counts
get webfilter ftgd-statistics Displays a list of FortiGuard related counts of status, errors, and other 
data.
diagnose sys session list Displays the list of current detailed sessions.
show sys dns Displays the configured DNS servers.
diagnose sys ntp status Displays information about NTP servers.

You can run any commands that apply to your system for information gathering. For example, if you have active VPN 
connections, use the get vpn series of commands to get more information about them. 
Use execute tac report to get an extensive snapshot of your system. This command runs many diagnostic 
commands for specific configurations. It also records the current state of each feature  regardless of the features 
deployed on your FortiGate. If you need to troubleshoot later, you can run the same command again and compare the 
differences to identify any suspicious output. 

Define the problem

The following questions  are intended to compare the current behavior of the FortiGate with normal operations to help 
you define the problem. Be specific  with your answers. After you define the problem,  search for a solution in the 
troubleshooting scenarios section, and then create a plan to resolve it. 

What is the problem? The problem being observed may not be the actual problem. You should 


determine where the problem  lies before starting to troubleshoot the FortiGate.

Was the device working If the device never worked, it might be defective. For more information, see 


before? Troubleshooting your installation on page 56.

Can the problem be If the problem is intermittent, it may be dependent on system load. 


reproduced? Intermittent problems are challenging to troubleshoot because they are difficult to 
reproduce.

What has changed? Use the FortiGate event log to identify possible configuration changes. 


There may be changes in the operating environment. For example, there might be 
a gradual increase in load as more sites are forwarded through the firewall. 
If something has changed, roll back the change and assess the impact.

What is the scope of the After you isolate the problem, determine what applications, users, devices, and 


problem? operating systems the problem affects.
The following questions are intended to  n
  arrow the scope of the problem and 
identify what to check during troubleshooting. The more factors you can eliminate, 
the less you need to check. For this reason, be as specific and accurate as 
possible when gathering information.
 l What is not working? 

FortiOS 6.4.6 Administration Guide 1830


Fortinet Technologies Inc.
Troubleshooting

 l Is more than one thing  not working? 
 l Is it partly working? If so, what parts are working?
 l Is it a connectivity issue for the entire device, or is there an application that 
isn’t reaching the Internet?
 l Where did the problem occur?
 l When did the problem occur and to which users or groups of users?
 l What components are involved?
 l What applications are affected?
 l Can you use a packet sniffer to trace the problem?
 l Can you use system debugging or look in the session table to trace the 
problem?
 l Do any of the log files indicate a failure has occurred?

Create a troubleshooting plan

After you define the problem and its scope, develop a troubleshooting plan. 

Create checklist Make a list all the possible causes of the problem  and how you can test for each 


cause. 
Create a  checklist to keep track of what has been tried and what is left to test. 
Checklists are useful when more than one person is performing troubleshooting 
tasks. 

Obtain the required equipment Testing your solution may require additional networking equipment, computers, or 


other devices. 
Network administrators usually have additional networking equipment available to 
loan you, or a lab where you can bring the FortiGate unit to test.
If you do not have access to equipment, check for shareware applications that can 
perform the same tasks. Often, there are software solutions you can use when 
hardware is too expensive.

Consult Fortinet After the checklist is created, refer to the troubleshooting scenarios sections to 


troubleshooting resources assist with implementing your plan. See Troubleshooting scenarios on page 
1832.

Gather information for If you still require technical assistance after the plan is implemented, be prepared 


technical support to provide Fortinet technical support with following information:
 l Firmware build version (use the get system status command)
 l Network topology diagram
 l Recent configuration file
 l Recent debug log (optional) 
 l Summary of troubleshooting steps you have taken and the results. 

Do not provide the output from the execute tac report unless 
the support team requests it. The output from this command is 
very large and is not required in many cases.

FortiOS 6.4.6 Administration Guide 1831


Fortinet Technologies Inc.
Troubleshooting

Contact technical support Before contacting technical support, ensure you have  login access (preferably 


with full read/write privileges) to all networking devices that could be relevant to 
troubleshooting.  
If you are using VMs, be prepared to have someone who can log in to the virtual 
hosting platform in case it is necessary to check and possibly modify resource 
allocation.
For information about contacting technical support, go to FortiCare Support 
Service page.

Troubleshooting scenarios

The following table is intended to help you diagnose common problems and provides links to the corresponding 
troubleshooting topics:

Problem Probable cause Recommended action

Hardware  l Are all of the cables and interfaces  Checking the hardware connections on page 


connections connected properly? 1834
 l Is the LED for the interface green?

FortiOS network  l If you are having problems connecting to  Checking FortiOS network settings on page 


settings the management interface, is your  1835
protocol enabled on the interface for 
administrative access?
 l Does the interface have an IP address?

CPU and memory  l Is the  CPU running at almost 100  Troubleshooting CPU and network resources 


resources percent usage? on page 1838
 l Is your FortiGate running low on 
memory?

Modem status  l Is the modem connected? Checking the modem status on page 1843


 l Are there PPP issues?

Ping and traceroute Is the FortiGate experiencing complete  Running ping and traceroute on page 1844


packet loss?

Logs Do you need to identify a problem? Checking the logs on page 1847

Contents of the  l Are there routes in the routing table for  Verifying routing table contents in NAT mode 


routing table (in default and static routes? on page 1848
NAT mode)  l Do all connected subnets have a route in 
the routing table?
 l Does a route have a higher priority than 
it should?

Traffic routes Is the traffic routed correctly? Verifying the correct route is being used on 


page 1849

Firewall policies Is the correct firewall policy applied to the  Verifying the correct firewall policy is being 

FortiOS 6.4.6 Administration Guide 1832


Fortinet Technologies Inc.
Troubleshooting

Problem Probable cause Recommended action

expected traffic? used on page 1849

Bridging Are you having problems in transparent  Checking the bridging information in 


information in mode? transparent mode on page 1850
transparent mode

Number of  l Have you reached the maximum number  Checking the number of sessions that UTM 


sessions used by of sessions for a protocol? proxy uses on page 1851
UTM proxy  l Are new sessions failing to start for a 
certain protocol?

Firewall session  l Are there active firewall sessions? Using a session table on page 1865


list

Wireless Network Is the wireless network working properly? Checking wireless information on page 1855

FortiGuard Is the FortiGate communicating properly with  Verifying connectivity to FortiGuard  on page 


connectivity FortiGuard? 1875

Sniffer trace  l Is traffic entering the FortiGate? Does   Performing a sniffer trace (CLI and packet 


the traffic arrive on the expected  capture) on page 1856
interface?
 l Is the ARP resolution correct for the 
next-hop destination?
 l Is the traffic exiting the FortiGate to the 
destination as expected?
 l Is the FortiGate sending traffic back to 
the originator?

Packet flow Is traffic entering or leaving the FortiGate as  Debugging the packet flow on page 1859


expected?

Checking the system date and time

The system date and time are important for FortiGuard services, logging events, and sending alerts. The wrong time 
makes the log entries confusing and difficult to use. 
When possible, use Network Time Protocol (NTP) to set the date and time. This is an automatic method that does not 
require manual intervention. However, you must ensure that the port is allowed through the firewalls on your network. 
FortiToken synchronization requires NTP in many situations. 
For information about setting the system date and time, see Setting the system time on page 785.

To view and configure the date and time in the GUI:

 1. Go to Dashboard > Status. The date and time are displayed in the System Information widget, next to System Time.


 2. Go to System > Settings.
 3. In the System Time section, select NTP, and then configure the Time Zone, and Set Time settings as required.

FortiOS 6.4.6 Administration Guide 1833


Fortinet Technologies Inc.
Troubleshooting

To view the date and time in the CLI:

execute date
execute time

To configure the date and time in the CLI:

Use the set timezone ? command to display a list of timezones and the integers that represent them.


config system global
set timezone <integer>
end
config system ntp
set type custom
config ntpserver
edit 1
set server “ntp1.fortinet.net”
next
edit 2
set server “ntp2.fortinet.net”
next
end
set ntpsync enable
set syncinterval 60
end

Checking the hardware connections

If traffic is not flowing from the FortiGate, there may be a problem with the hardware connection. 

To check hardware connections:

 1. Ensure the network cables are plugged into the interfaces.
 2. Verify the LED connection lights for the network cables indicate there is a connection. The lights are typically green 
when there is a connection.
 3. Change the cable when:
 l The cable or its connector are damaged. 
 l You are unsure of the type or quality of the cable, such as straight through or crossover. 
 l You see exposed wires at the connector.
 4. Connect the FortiGate to different hardware.
 5. Go to Network > Interfaces to ensure the link status for the interface is set to Up.   
The link status is based on the physical connection and cannot be set in FortiOS.

To enable an interface in the GUI:

You should still perform basic software connectivity tests to ensure complete connectivity even if there was a problem 
with the hardware connection. The interface might also be disabled, or its Status might be set to Down. See Interfaces on 
page 384.
 1. Go to Network > Interfaces. 
 2. Select an interface, such as Port1, and click Edit.

FortiOS 6.4.6 Administration Guide 1834


Fortinet Technologies Inc.
Troubleshooting

 3. In the Miscellaneous area, next to Status, click Enabled.
 4. Click OK.

To enable an interface in the CLI:

config system interface


edit port1
set status up
next
end

Checking FortiOS network settings

Check the FortiOS network settings if you have problems connecting to the management interface. FortiOS network 
settings include, interface settings, DNS Settings, and DHCP settings. 

Interface settings

If you can access the FortiGate with the management cable only,  you can view the interface settings in the GUI. 

To view the interface settings in the GUI:

 1. Go to Network > Interfaces.


 2. Select an interface and click Edit.
 3. Check the following interfaces to ensure they are not blocking traffic.   

Setting Description

Link Status The status is Up when a valid cable is plugged in. The status is Down when an 


invalid cable is plugged in.
The Link Status is shown physically by the connection LED for the interface. If the 
LED is  green, the connection is good. If Link Status is Down, the interface does not 
work. 
Link status also appears in the Network > Interfaces page by default.

Addressing mode Do not  use DHCP if you do not have a DHCP server. You will not be able to log into 


an interface in DHCP mode as it will not have an IP address.

IP/Network Mask An interface requires an IP address to  connect to other devices. Ensure there is a 


valid IP address in this field. The one exception is when DHCP is enabled for this 
interface to get its IP address from an external DHCP server.

IPv6 address The same protocol must be used by both ends to complete the connection. Ensure 


this interface and the remote connection are both using IPv4 or both are using IPv6 
addresses.

Administrative access If no protocols are selected, you will have to use the local management cable to 


connect to the unit. If you are using IPv6, configure the IPv6 administrative access 
protocols. 

 Status Ensure the status is set to Up or the interface will not work.

FortiOS 6.4.6 Administration Guide 1835


Fortinet Technologies Inc.
Troubleshooting

To display the internal interface settings in the CLI:

FGT# show system interface <interface_name>

To view the list of possible interface settings:

config system interface


edit <interface_name>
get
end

DNS settings

To view DNS settings in the GUI:

Go to Network > DNS.


You can trace many networking problems back to DNS issues. Check the following items:
 1. Are there values for both the Primary DNS server and Secondary DNS server fields.
 2. Is the Local Domain Name correct?
 3. Are you using IPv6 addressing? If so, are the IPv6 DNS settings correct?
 4. Are you using Dynamic DNS (DDNS)? If so, is it using the correct server, credentials, and interface?
 5. Can you contact both DNS servers to verify the servers are operational?
 6. If an interface addressing mode is set to DHCP and is set to override the internal DNS, is that interface receiving a 
valid DNS entry from the DHCP server? Is it a reasonable address and can it be contacted to verify it is operational?
 7. Are there any DENY security policies that need to allow DNS? 
 8. Can any internal device perform a successful traceroute to a location using the FQDN? 

DHCP server settings

DHCP servers are common on internal and wireless networks. The DHCP server will cause problems if it is not 
configured correctly.

To view DHCP server settings in the GUI:

 1. Go to Network > Interfaces.


 2. Select an interface, and click Edit.

Check the following items:

 1. Is the DHCP server enabled?
 2. Is the DHCP server entry set to Relay? If so, verify there is another DHCP server to which requests can be relayed. 
Otherwise,  set it to Server.
 3. Does the DHCP server use a valid IP address range? Are other devices using the addresses? If one or more 
devices are using IP addresses in this range, you can use the IP reservation feature to ensure the DHCP server 
does not use these addresses. See DHCP server on page 491
 4. Is there a gateway entry? If not, add a gateway entry to ensure that the server's clients have a default route. 
 5. Is the system DNS setting being used? A best practice is to avoid confusion by using the system DNS whenever 
possible. However, you can specify up to three custom DNS servers, and you should use all three entries for 
redundancy.

FortiOS 6.4.6 Administration Guide 1836


Fortinet Technologies Inc.
Troubleshooting

There are some situations, such as a new wireless interface, or during the initial FortiGate 
configuration, where interfaces override the system DNS entries. When this happens, it often 
shows up as intermittent Internet connectivity. 
To fix the problem, go to Network > DNS, and enable Use FortiGuard Servers.

Checking CPU and memory resources

Check the CPU and memory resources when the FortiGate is not working, the network is slow, or there is a reduced 
firewall session setup rate. All processes share the system resources in FortiOS, including CPU and memory. 

To view system resources in the GUI:

Go to Dashboard > Status.


The resource information is located in the CPU and Memory widgets. For information, see Dashboards and widgets on 
page 62.

To view system resources in the CLI:

get system performance status

Sample output:

FGT# get system performance status


CPU states: 0% user 0% system 0% nice 100% idle 0% iowait 0% irq 0% softirq
CPU0 states: 0% user 0% system 0% nice 100% idle 0% iowait 0% irq 0% softirq
CPU1 states: 0% user 0% system 0% nice 100% idle 0% iowait 0% irq 0% softirq
CPU2 states: 0% user 0% system 0% nice 100% idle 0% iowait 0% irq 0% softirq
CPU3 states: 0% user 0% system 0% nice 100% idle 0% iowait 0% irq 0% softirq
Memory: 4050332k total, 527148k used (13%), 3381312k free (83%), 141872k freeable (3%)
Average network usage: 41 / 28 kbps in 1 minute, 54 / 44 kbps in 10 minutes, 42 / 34 kbps
in 30 minutes
Average sessions: 33 sessions in 1 minute, 48 sessions in 10 minutes, 38 sessions in 30
minutes
Average session setup rate: 0 sessions per second in last 1 minute, 0 sessions per second
in last 10 minutes, 0 sessions per second in last 30 minutes
Virus caught: 0 total in 1 minute
IPS attacks blocked: 0 total in 1 minute
Uptime: 0 days, 22 hours, 59 minutes

The first line of the output shows the CPU usage by category:
CPU states: 0% user 0% system 0% nice 100% idle 0% iowait 0% irq 0% softirq

The second line of the output shows the memory usage:
Memory: 4050332k total, 527148k used (13%), 3381312k free (83%), 141872k freeable (3%)

Memory usage should not exceed 90%. Using too much memory prevents some processes from functioning properly. 
For example, if the system is running low on memory, antivirus scanning enters into failopen mode where it drops 
connections or bypasses the antivirus system. 
Other lines of output, such as average network usage, average session setup rate, viruses caught, 
and IPS attacks blocked,  help determine why system resource usage is high. 
For example:

FortiOS 6.4.6 Administration Guide 1837


Fortinet Technologies Inc.
Troubleshooting

 l A high average network usage may indicate high traffic processing on the FortiGate, 


 l A very low or zero, average session setup rate may indicate the proxy is overloaded and unable to do its 
job. 

Troubleshooting CPU and network resources

FortiGate has stopped working

If the FortiGate has stopped working, the first line of the output will look similar to this:
CPU states: 0% user 0% system 0% nice 100% idle

Network is slow

If your network is running slow, the first line of the output will look similar to this:
CPU states: 1% user 98% system 0% nice 1% idle

This example shows that all of the CPU is being used by system processes, and the FortiGate is overloaded. When 
overloading occurs,  it is possible a process such as scanunitid is using all the resources to scan traffic. In this case 
you need to reduce the amount of traffic  being scanned by blocking unwanted protocols, configuring more security 
policies to limit scanning to certain protocols, or similar actions.
It is also possible a hacker has accessed your network and is overloading it with malicious activity, such as running a 
spam server or using zombie PCs to attack other networks on the Internet. 
You can use the following command to investigate the problem with the CPU:
get system performance top

This command shows all of the top processes that are running on the FortiGate  and their CPU usage. The process 
names are on the left. If a process is using most of the CPU cycles, investigate it to determine whether the activity is 
normal.

Reduced firewall session setup rate

A reduced firewall session setup rate can be caused by a lack of system resources on the FortiGate, or reaching the 
session count limit for a VDOM.

As a best practice, administrators should  record the session setup rate during normal 
operation to establish a baseline  to help define a problem when your are troubleshooting.

The session setup rate appears in the average sessions section of the output.
A reduced firewall session setup rate will look similar to this:
Average sessions: 80 sessions in 1 minute, 30 sessions in 10 minutes, 42 sessions in 30
minutes
Average session setup rate: 3 sessions per second in last 1 minute, 0 sessions per second in
last 10 minutes, 0 sessions per second in last 30 minutes

In the example above,  there were 80 sessions in 1 minute, or an average of 3 sessions per second. 

FortiOS 6.4.6 Administration Guide 1838


Fortinet Technologies Inc.
Troubleshooting

The values for 10 minutes and 30 minutes allow you to take a longer average for a more reliable value if your 


FortiGate is working at maximum capacity. The smallest FortiGate can have 1,000 sessions established per second 
across the unit. 

The session setup rate is a global command. If you have multiple VDOMs configured with 
many sessions in each VDOM, the session setup rate per VDOM will be slower than if there 
are no VDOMs configured. 

High memory usage

As with any system, a FortiGate has limited hardware resources, such as memory, and all processes running on the 
FortiGate share the memory. Each process uses more or less memory, depending on its workload. For example, a 
process usually uses more memory in high traffic situations. If some processes use all of the available memory, other 
processes will not be able to run.
When high memory usage occurs, the services may freeze up, connections may be lost, or new connections may be 
refused.
If you see high memory usage in the Memory widget, the FotiGate  may be handling high traffic volumes. Alternatively,  
the FortiGate may have problems with connection pool limits that are affecting a single proxy. If the FortiGate receives 
large volumes of traffic on a specific proxy, the unit may exceed the connection pool limit. If the number of free 
connections within a proxy connection pool reaches zero, issues may occur. 

To view current memory usage information in the CLI:

diagnose hardware sysinfo memory

Sample output:

total: used: free: shared: buffers: cached: shm:


Mem: 2074185728 756936704 1317249024 0 20701184 194555904 161046528
Swap: 0 0 0
MemTotal: 2025572 kB
MemFree: 1286376 kB
MemShared: 0 kB
Buffers: 20216 kB
Cached: 189996 kB
SwapCached: 0 kB
Active: 56644 kB
Inactive: 153648 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 2025572 kB
LowFree: 1286376 kB
SwapTotal: 0 kB
SwapFree: 0 kB

Troubleshooting high CPU usage

Connection-related problems may occur when FortiGate's CPU resources are over extended. This occurs when you 
deploy too many FortiOS features at the same time.  

FortiOS 6.4.6 Administration Guide 1839


Fortinet Technologies Inc.
Troubleshooting

Examples of CPU intensive features:

 l VPN high-level encryption
 l Intensive scanning of all traffic
 l Logging all traffic and packets 
 l Dashboard widgets that frequently perform data updates
For information on customizing the CPU use threshold, see Execute a CLI script based on CPU and memory thresholds 
on page 276.

Determining the current level of CPU usage

You can view CPU usage levels in the GUI or CLI. For precise usage values for both overall usage and specific 
processes, use the CLI.

To view CPU usage in the GUI:

Go to Dashboard > Status. Real-time CPU usage information is located in the CPU widget.

To view CPU usage in the CLI:

 l Show top processes information: 
diagnose sys top
 l Show top threads information:
diagnose sys top-all

Sample output:

Run Time: 86 days, 0 hours and 10 minutes


0U, 0N, 0S, 100I, 0WA, 0HI, 0SI, 0ST; 3040T, 2437F
bcm.user 93 S < 3.1 0.4
httpsd 18922 S 1.5 0.5
httpsd 19150 S 0.3 0.5
newcli 20195 R 0.1 0.1
cmdbsvr 115 S 0.0 0.8
pyfcgid 20107 S 0.0 0.6
forticron 146 S 0.0 0.5
httpsd 139 S 0.0 0.5
cw_acd 166 S 0.0 0.5
miglogd 136 S 0.0 0.5
pyfcgid 20110 S 0.0 0.4
pyfcgid 20111 S 0.0 0.4
pyfcgid 20109 S 0.0 0.4
httpsd 20192 S 0.0 0.4
miglogd 174 S 0.0 0.4
miglogd 175 S 0.0 0.4
fgfmd 165 S 0.0 0.3
newcli 20191 S 0.0 0.3
initXXXXXXXXXXX 1 S 0.0 0.3
httpsd 184 s 0.0 0.3

The following table explains the codes in the second line of the output:

FortiOS 6.4.6 Administration Guide 1840


Fortinet Technologies Inc.
Troubleshooting

Code Description
U Percentage of user space applications that are currently using the CPU
N Percentage  of time that the CPU spent on low priority processes  since the last shutdown
S Percentage  of system processes (or kernel processes) that are using the CPU
I Percentage  of idle CPU resources
WA Percentage  of time that the CPU spent waiting on IO peripherals   since the last shutdown
HI Percentage  of time that the CPU spent  h
  andling hardware interrupt routines since the last shutdown
SI Percentage  of time that the CPU spent handling software interrupt routines since the last shutdown
ST Steal time: Percentage  of time a virtual CPU waits for the physical CPU when the hypervisor is 
servicing another virtual processor
T Total FortiOS system memory in MB
F Free memory in MB

Each additional line of the command output displays information specific to processes or threads that are running on the 
FortiGate unit. For example, the sixth line of the output is: newcli 20195 R 0.1 0.1
The following table describes the data in the sixth line of the output:

Item Description
newcli The process (or thread) name.
Duplicate process or thread names indicate that separate instances of that process or thread are 
running.
20195 The process or thread ID, which can be any number.
R Current state of the process or thread. The process or thread state can be:   
 l R - running
 l S - sleep
 l Z - zombie
 l D- disk sleep
0.1 The percentage of CPU capacity that the process or thread is using.
CPU usage can range from 0.0 for a process or thread that is sleeping to higher values for a process 
or thread that's taking a lot of CPU time.
0.1 The amount of memory that the process or thread is using.
Memory usage can range from 0.1 to 5.5 and higher.

You can use the following single-key commands when running diagnose sys top or diagnose sys top-all:


 l q to quit and return to the normal CLI prompt.
 l p to sort the processes by the amount of CPU that the processes are using.
 l m to sort the processes by the amount of memory that the processes are using.

FortiOS 6.4.6 Administration Guide 1841


Fortinet Technologies Inc.
Troubleshooting

The output only displays the top  processes or threads that are running. For example, if  20 are listed, they are the top 20 
currently running, sorted by either CPU or memory usage. You can configure the number of processes or threads 
displayed, using the following CLI commands:
diagnose sys top <integer_seconds> <integer_maximum_lines>
diagnose sys top-all <integer_seconds> <integer_maximum_lines>

Where:
 l <integer_seconds> is the delay in seconds (default is 5)
 l <integer_maximum_lines> is the maximum number of lines (or processes) to  list (default is 20)

Determining which features are using the most CPU resources

You can use the CLI to view the top few processes that are currently running and using the most CPU resources.

To view processes using the most CPU resources:

get system performance top

The entries at the top are using the most  CPU resources. The second column from the right shows CPU usage by 
percentage.  Note which processes are using the most resources and try to reduce their CPU load.
Processes you will see include:
 l ipsengine: the IPS engine that scans traffic for intrusions
 l scanunitd: antivirus scanner
 l httpsd: secure HTTP 
 l iked: internet key exchange (IKE) in use with IPsec VPN tunnels
 l newcli: active whenever you're accessing the CLI
 l sshd: there are active secure socket connections
 l cmdbsrv: the command database server application
Go to the features that are at the top of the list and look for evidence of CPU overuse. Generally, the monitor for a feature 
is a good place to start.

Checking for unnecessary CPU “wasters”

These are some best practices that will reduce your CPU usage, even if the FortiGate is not experiencing high CPU 
usage. Note that if the following information instructs you to turn off a feature that you require, disregard that part of the 
instructions.
 l Use hardware acceleration wherever possible to offload tasks from the CPU. Offloading tasks, such as encryption, 
frees up the CPU for other tasks.
 l Avoid the use of GUI widgets that require computing cycles, such as the Top Sessions widget. These widgets 
constantly pol the system for information, which uses CPU and other resources.
 l Schedule antivirus, IPS, and firmware updates during off-peak hours. These updates do not usually consume CPU 
resources but they can disrupt normal operation.
 l Check the log levels and which events are being logged. This is the severity of the messages that are recorded. 
Consider going up one level to reduce the amount of logging. Also, if there are events you do not need to monitor, 
remove them from the list. 

FortiOS 6.4.6 Administration Guide 1842


Fortinet Technologies Inc.
Troubleshooting

 l Log to FortiCloud instead of logging to memory or disk. Logging to memory quickly uses up resources and logging 
to local disk impacts overall performance and reduces the lifetime of the unit.   
Fortinet recommends logging to FortiCloud to avoid using too much CPU.
 l If the disk is almost full, transfer the logs or data off the disk to free up space. When a disk is almost full it consumes 
a lot of resources to find  free space and organize the files.
 l If  packet logging is enabled on the FortiGate, consider disabling it. When packet logging is enabled, it records every 
packet that comes through that policy.
 l Halt all sniffers and traces. 
 l Ensure the FortiGate isn't scanning traffic twice. Traffic does not need to be rescanned if it enters the FortiGate on 
one interface, goes out another, and then comes back in again. Doing so is a waste of resources. However, ensure 
that traffic truly is being scanned once.
 l Reduce the session timers to close unused sessions faster. Enter the following CLI commands, which reduce the 
default values. Note that, by default, the system adds 10 seconds to tcp-timewait.
config system global
set tcp-halfclose-timer 30
set tcp-halfopen-timer 30
set tcp-timewait-timer 0
set udp-idle-timer 60
end
 l Go to System > Feature Visibility, and enable only features that you need.

SNMP monitoring

When CPU usage is under control, use SNMP to monitor CPU usage. Alternatively, use logging to record CPU and 
memory usage every 5 minutes. 
Once the system is back to normal, you should set up a warning system that sends alerts when CPU resources are used 
excessively. A common method to do this is using SNMP. SNMP monitors many values in FortiOS and allows you to set 
high water marks that generate events. You can run an application on your computer to watch for and record these 
events. 

To enable SNMP:

 1. Go to System > SNMP.


 2. Configure an SNMP community.
See SNMP on page 907.

You can use the System Resources widget to record CPU usage if SNMP is too complicated. 
However, the widget only records problems as they happen and will  not send you alerts for 
problems. 

Checking the modem status

You can use the CLI to troubleshoot a modem that is not working properly, or troubleshoot a FortiGate that does not 
detect the modem.

To diagnose modem issues in the CLI:

diagnose sys modem {cmd | com | detect | history | external-modem | query| reset}

FortiOS 6.4.6 Administration Guide 1843


Fortinet Technologies Inc.
Troubleshooting

You should always run the following command after you connect a USB modem to FortiGate: 
diagnose sys modem detect

Use the following command to  view  the modem's configuration, vendor and custom product identification number: 
get system modem

Use the following commands to resolve connectivity issues: 
 l diagnose debug enable: Activates the debug on the console
 l diagnose debug application modemd: Dumps communication between the modem and the unit.
 l diagnose debug application ppp: Dumps the PPP negotiating messages. 
 l execute modem dial: Displays modem debug output.
The modem diagnose output should not contain errors when initializing. You should also verify the number  used to dial 
into your ISP. 

Running ping and traceroute

Ping and traceroute are useful tools in network troubleshooting. Alone, either tool can determine network connectivity 
between two points. However, ping can be used to generate simple network traffic that you can view using diagnose 
commands in FortiGate. This combination can be very powerful when you are trying to locate network problems.
Ping and traceroute can also tell you if your computer or network device has access to a domain name server (DNS). 
Both tools can use IP addresses or device domain names to determine why particular services, such as email or web 
browsing, may not work properly.

If ping does not work, it may be disabled on at least one of the interface settings and security 
policies for that interface. 

Both ping and traceroute require particular ports to be open on firewalls to function. Since you typically use these tools to 
troubleshoot, you can allow them in the security policies and on interfaces only when you need them. Otherwise, keep 
the ports disabled for added security.

Ping

The ping command sends a very small packet to a destination, and waits for a response. The response has a timer that 
expires when the destination is unreachable. 
Ping is part of layer 3 on the OSI Networking Model. Ping sends Internet Control Message Protocol (ICMP) “echo 
request” packets to the destination, and listens for “echo response” packets in reply. However, many public networks 
block ICMP packets because ping can be used in a denial of service (DoS) attack (such as Ping of Death or a smurf 
attack), or by an attacker to find active locations on the network. By default, FortiGate units have ping enabled while 
broadcast-forward is disabled on the external interface.

What ping can tell you

Beyond the basic connectivity information, ping can tell you the amount of packet loss (if any), how long it takes the 
packet to make the round trip, and the variation in that time from packet to packet.
If packet loss is detected, you should investigate the following:

FortiOS 6.4.6 Administration Guide 1844


Fortinet Technologies Inc.
Troubleshooting

 l Possible ECMP, split horizon, or network loops.
 l Cabling, to ensure there are no loose connections.
 l Verify which security policy was used. To do this:    
Go to Policy & Objects > Firewall Policy and view the packet count column.
If there is total packet loss, you should investigate the following:
 1. Ensure cabling is correct, and all equipment between the two locations is accounted for.
 2. Ensure all IP addresses and routing information along the route is configured as expected.
 3. Ensure all firewalls, including FortiGate security policies allow PING to pass through.

How to use ping

Ping syntax is the same for nearly every type of system on a network. 

To ping from a FortiGate unit:

 1. Go to  Dashboad, and connect to the CLI through either telnet or the CLI widget.
 2. Enter execute ping 10.11.101.101 to send 5 ping packets to the destination IP address. There are no 
options for this command.
Head_Office_620b # execute ping 10.11.101.101
PING 10.11.101.101 (10.11.101.101): 56 data bytes
64 bytes from 10.11.101.101: icmp_seq=0 ttl=255 time=0.3 ms
64 bytes from 10.11.101.101: icmp_seq=1 ttl=255 time=0.2 ms
64 bytes from 10.11.101.101: icmp_seq=2 ttl=255 time=0.2 ms
64 bytes from 10.11.101.101: icmp_seq=3 ttl=255 time=0.2 ms
64 bytes from 10.11.101.101: icmp_seq=4 ttl=255 time=0.2 ms

--- 10.11.101.101 ping statistics ---


5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.3 ms

To ping from a Microsoft Windows PC:

 1. Open a command window.
 2. Enter ping 10.11.101.100 to ping the default internal interface of the FortiGate with four packets.   
Other options include:
 l -t to send packets until you press Ctrl+C
 l -a to resolve addresses to domain names where possible
 l -n X to send X ping packets and stop
C:\>ping 10.11.101.101

Pinging 10.11.101.101 with 32 bytes of data:


Reply from 10.11.101.101: bytes=32 time=10ms TTL=255
Reply from 10.11.101.101: bytes=32 time<1ms TTL=255
Reply from 10.11.101.101: bytes=32 time=1ms TTL=255
Reply from 10.11.101.101: bytes=32 time=1ms TTL=255

Ping statistics for 10.11.101.101:


Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 10ms, Average = 3ms

FortiOS 6.4.6 Administration Guide 1845


Fortinet Technologies Inc.
Troubleshooting

To ping from a Linux PC:

 1. Go to a shell prompt. 
 2. Enter “ping 10.11.101.101”.

Traceroute

Where ping will only tell you if it reached its destination and returned successfully, traceroute shows each step of the 
journey to its destination and how long each step takes. If ping finds an outage between two points, you can use 
traceroute to locate exactly where the problem is.
Traceroute works by sending ICMP packets to test each hop along the route. It  sends three packets, and then increases 
the time to live (TTL) setting by one each time. This effectively allows the packets to go one hop farther along the route. 
This is  why most traceroute commands display their maximum hop count before they start tracing the route, which is the 
maximum number of steps it takes before it declares the destination unreachable. Also, the TTL setting may result in 
steps along the route timing out due to slow responses. There are many possible reasons for this to occur.
By default, traceroute uses UDP datagrams with destination ports numbered from 33434 to 33534. The traceroute utility 
may also offer the option to select use of ICMP echo request (type 8) instead, which the Windows tracert utility uses. If 
you must, allow both protocols inbound through the FortiGate security policies (UDP with ports from 33434 to 33534 and 
ICMP type 8). 

To track traceroute packets in the GUI:

Go to Policy & Objects > Firewall Policy and view the packet count column.


This allows you to verify the connection and confirm which security policy the traceroute packets are using.

What traceroute can tell you

Both ping and traceroute verify connectivity between two points. However, only traceroute shows you each step in the 
connection path. Also, ping and traceroute use different protocols and ports, so one may succeed where the other fails.
You can verify your DNS connection using traceroute. If you enter an FQDN instead of an IP address for the traceroute, 
DNS tries to resolve that domain name. If the name isn't resolved,  you have DNS issues. 

Using traceroute

The traceroute command varies slightly between operating systems. In Microsoft Windows, the command name is 
shortened to “tracert”. Also, your output lists different domain names and IP addresses along your route.

To use traceroute on a Microsoft Windows PC:

 1. Open a command window.
 2. Enter tracert fortinet.com to trace the route from the PC to the Fortinet web site.   
C:\>tracert fortinet.com
Tracing route to fortinet.com [208.70.202.225]
over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms 172.20.120.2
2 66 ms 24 ms 31 ms 209-87-254-xxx.storm.ca [209.87.254.221]
3 52 ms 22 ms 18 ms core-2-g0-0-1104.storm.ca [209.87.239.129]
4 43 ms 36 ms 27 ms core-3-g0-0-1185.storm.ca [209.87.239.222]
5 46 ms 21 ms 16 ms te3-x.1156.mpd01.cogentco.com [38.104.158.69]

FortiOS 6.4.6 Administration Guide 1846


Fortinet Technologies Inc.
Troubleshooting

6 25 ms 45 ms 53 ms te8-7.mpd01.cogentco.com [154.54.27.249]
7 89 ms 70 ms 36 ms te3-x.mpd01.cogentco.com [154.54.6.206]
8 55 ms 77 ms 58 ms sl-st30-chi-.sprintlink.net [144.232.9.69]
9 53 ms 58 ms 46 ms sl-0-3-3-x.sprintlink.net [144.232.19.181]
10 82 ms 90 ms 75 ms sl-x-12-0-1.sprintlink.net [144.232.20.61]
11 122 ms 123 ms 132 ms sl-0-x-0-3.sprintlink.net [144.232.18.150]
12 129 ms 119 ms 139 ms 144.232.20.7
13 172 ms 164 ms 243 ms sl-321313-0.sprintlink.net [144.223.243.58]
14 99 ms 94 ms 93 ms 203.78.181.18
15 108 ms 102 ms 89 ms 203.78.176.2
16 98 ms 95 ms 97 ms 208.70.202.225

The first column on the left is the hop count, which can't exceed 30 hops. When that number is reached, the 
traceroute ends.
The second, third, and fourth columns display how much time each of the three packets takes to reach this stage of 
the route. These values are in milliseconds and normally vary quite a bit. Typically a value of <1ms indicates a local 
connection.
The fifth column (farthest to the right) shows the domain name of the device and its IP address, or possibly only the 
IP address. 

To perform a traceroute on a Linux PC:

 1. Go to a command line prompt. 
 2. Enter “traceroute fortinet.com”.   
The Linux traceroute output is very similar to the Windows tracert output.

To trace a route from a FortiGate to a destination IP address in the CLI:

# execute traceroute www.fortinet.com

traceroute to www.fortinet.com (66.171.121.34), 32 hops max, 84 byte packets


1 172.20.120.2 0.637 ms 0.653 ms 0.279 ms
2 209.87.254.221 <static-209-87-254-221.storm.ca> 2.448 ms 2.519 ms 2.458 ms
3 209.87.239.129 <core-2-g0-2.storm.ca> 2.917 ms 2.828 ms 9.324 ms
4 209.87.239.199 <core-3-bdi1739.storm.ca> 13.248 ms 12.401 ms 13.009 ms
5 216.66.41.113 <v502.core1.tor1.he.net> 17.181 ms 12.422 ms 12.268 ms
6 184.105.80.9 <100ge1-2.core1.nyc4.he.net> 21.355 ms 21.518 ms 21.597 ms
7 198.32.118.41 <ny-paix-gni.twgate.net> 83.297 ms 84.416 ms 83.782 ms
8 203.160.228.217 <217-228-160-203.TWGATE-IP.twgate.net> 82.579 ms 82.187 ms 82.066 ms
9 203.160.228.229 <229-228-160-203.TWGATE-IP.twgate.net> 82.055 ms 82.455 ms 81.808 ms
10 203.78.181.2 82.262 ms 81.572 ms 82.015 ms
11 203.78.186.70 83.283 ms 83.243 ms 83.293 ms
12 66.171.127.177 84.030 ms 84.229 ms 83.550 ms
13 66.171.121.34 <www.fortinet.com> 84.023 ms 83.903 ms 84.032 ms
14 66.171.121.34 <www.fortinet.com> 83.874 ms 84.084 ms 83.810 ms

Checking the logs

A log message records the traffic passing through FortiGate to your network and the action FortiGate takes when it 
scans the traffic. You should log as much information as possible when you first configure FortiOS.  If  FortiGate logs are 
too large, you can turn off or scale back the logging for features that are not in use.

FortiOS 6.4.6 Administration Guide 1847


Fortinet Technologies Inc.
Troubleshooting

It is difficult to troubleshoot logs without a baseline. Before you can determine if the logs indicate a problem, you need to 
know what logs result from normal operation.  

When troubleshooting with log files

 l Compare current logs to a recorded baseline of normal operation.
 l If you need to, increase the level of logging (such as from Warning to Information) to obtain more information.
When increasing logging levels, ensure that you configure email alerts and select both disk usage and log quota. 
This ensures that you will be notified if the increase in logging causes problems. 

To configure the log settings in the GUI:

Go to Log & Report > Log Settings.


Determine the activities that generate the most log entries:
 l Check all logs to ensure important information is not overlooked.
 l Filter or order log entries based on different fields, such as level, service, or IP address, to look for patterns that may 
indicate a specific problem, such as frequent blocked connections on a specific port for all IP addresses.
Logs can help identify and locate any problems, but they do not solve them. The purpose of logs is to speed up your 
problem solving and save you time and effort.
For more information about logging and log reports, see Log and Report on page 1757.

Verifying routing table contents in NAT mode

Verify the contents of the routing table when a FortiGate has limited or no connectivity.
The routing table stores  the routes currently in use for both static and dynamic protocols. Storing a route in the routing 
table saves time and resources performing a lookup. To ensure the most recently used routes remain in the table, old 
routes are bumped  to make room for new ones. You cannot perform this task when FortiGate is in transparent mode.
If FortiGate is running in NAT mode, verify that all desired routes are in the routing table, including local subnets, default 
routes, specific static routes, and dynamic routing protocols.

To view the routing table in the CLI:

get router info routing-table al

Sample output:

FGT# get router info routing-table all


Codes:
K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default
S* 0.0.0.0/0 [10/0] via 172.20.120.2, wan1
C 10.31.101.0/24 is directly connected, internal
C 172.20.120.0/24 is directly connected, wan1

FortiOS 6.4.6 Administration Guide 1848


Fortinet Technologies Inc.
Troubleshooting

Verifying the correct route is being used

Run a trace route from a  machine in the local area network (LAN) to ensure traffic is flowing as expected through the 
correct route when there is more than one default route.
In the following example output:
 l The first hop contains the IP address 10.10.1.99, which is the internal interface of the FortiGate. 
 l The second hop contains the IP address 172.20.120.2, to which the wan1 interface of the FortiGate is 
connected.
This means the route through the wan1 interface is being used for this traffic.
C:\>tracert www.fortinet.com
Tracing route to www.fortinet.com [66.171.121.34]
over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms 10.10.1.99
2 1 ms <1 ms <1 ms 172.20.120.2
3 3 ms 3 ms 3 ms static-209-87-254-221.storm.ca [209.87.254.221]
4 3 ms 3 ms 3 ms core-2-g0-2.storm.ca [209.87.239.129]
5 13 ms 13 ms 13 ms core-3-bdi1739.storm.ca [209.87.239.199]
6 12 ms 19 ms 11 ms v502.core1.tor1.he.net [216.66.41.113]
7 22 ms 22 ms 21 ms 100ge1-2.core1.nyc4.he.net [184.105.80.9]
8 84 ms 84 ms 84 ms ny-paix-gni.twgate.net [198.32.118.41]
9 82 ms 84 ms 82 ms 217-228-160-203.TWGATE-IP.twgate.net [203.160.22
8.217]
10 82 ms 81 ms 82 ms 229-228-160-203.TWGATE-IP.twgate.net [203.160.22
8.229]
11 82 ms 82 ms 82 ms 203.78.181.2
12 84 ms 83 ms 83 ms 203.78.186.70
13 84 ms * 85 ms 66.171.127.177
14 84 ms 84 ms 84 ms fortinet.com [66.171.121.34]
15 84 ms 84 ms 83 ms fortinet.com [66.171.121.34]

You can also see the route taken for each session by debugging the packet flow in the CLI. For more information, see 
Debugging the packet flow on page 1859.

Verifying the correct firewall policy is being used

If you have more than one firewall policy, you can check which policy is being used in the Policy & Objects module in the 


GUI.

To verify the firewall policy in the GUI:

 1. Go to Policy & Objects > Firewall Policy.   


 2. Look in the Count column to see which policy is being used. The count must show traffic increasing.
Debugging the packet flow in the CLI shows the policy ID that's allowing the traffic. For information,  see Debugging the 
packet flow on page 1859.

FortiOS 6.4.6 Administration Guide 1849


Fortinet Technologies Inc.
Troubleshooting

Checking the bridging information in transparent mode

Checking the bridging information is useful when you are experiencing connectivity problems. When FortiGate is set to 
transparent mode, it acts like a bridge and sends all incoming traffic out on the other interfaces. Each bridge is a link 
between interfaces. 
When traffic is flowing between the interfaces, you can see the bridges listed in the CLI. If no bridges are listed, this is the 
likely cause of the connectivity issue. When investigating bridging information, check for the MAC address of the 
interface or device in question.

How to check the bridging information

To view the list of bridge instances in the CLI:

diagnose netlink brctl list

Sample output:

#diagnose netlink brctl list


list bridge information
1. root.b fdb: size=256 used=6 num=7 depth=2 simple=no
Total 1 bridges

How to display forwarding domain information

You can use forwarding domains, or collision domains, in routing to limit where packets are forwarded on the network. 
Layer 2 broadcasts are limited to the same group. By default, all interfaces are in group 0. For example, if the FortiGate 
has 12 interfaces, only two may be in the same forwarding domain, which limits packets that are broadcast to those two 
interfaces. This reduces traffic on the rest of the network. 
Collision domains prevent the forwarding of ARP packets to all VLANs on an interface. Without collision domains, 
duplicate MAC addresses on VLANs may cause ARP packets to be duplicated. Duplicate ARP packets can cause some 
switches to reset. It's important to know what interfaces are part of which forwarding domains because this determines 
which interfaces can communicate with each other. 

To manually configure forwarding domains in transparent mode in the CLI:

config system interface


edit <interface_name>
set forward-domain <integer>
end

To display the forward domains information in the CLI:

diagnose netlink brctl domain <name> <id>

Where <name> is the name of the forwarding domain to display and <id> is the domain ID.

Sample output:

diagnose netlink brctl domain ione 101


show bridge root.b ione forward domain.

FortiOS 6.4.6 Administration Guide 1850


Fortinet Technologies Inc.
Troubleshooting

id=101 dev=trunk_1 6

To list the existing bridge MAC table in the CLI:

diagnose netlink brctl name host <name>

Sample output:

show bridge control interface root.b host.


fdb: size=256, used=6, num=7, depth=2, simple=no
Bridge root.b host table

port no device devname mac addr ttl attributes


2 7 wan2 02:09:0f:78:69:00 0 Local Static
5 6 vlan_1 02:09:0f:78:69:01 0 Local Static
3 8 dmz 02:09:0f:78:69:01 0 Local Static
4 9 internal 02:09:0f:78:69:02 0 Local Static
3 8 dmz 00:80:c8:39:87:5a 194  
4 9 internal 02:09:0f:78:67:68 8  
1 3 wan1 00:09:0f:78:69:fe 0 Local Static

To list the existing bridge port list in the CLI:

diagnose netlink brctl name port <name>

Sample output:

show bridge root.b data port.


trunk_1 peer_dev=0
internal peer_dev=0
dmz peer_dev=0
wan2 peer_dev=0
wan1 peer_dev=0

Checking the number of sessions that UTM proxy uses

Each FortiGate model has a maximum number of sessions that the UTM proxy supports. The UTM proxy handles all the 
traffic for the following protocols: HTTP, SMTP, POP3, IMAP, FTP, and NNTP. If the proxy for a protocol fills up its 
session table, FortiGate enters conserve mode until entries and memory free up again.

Conserve or failopen mode

Depending on the conserve mode configuration, no new sessions are created until old ones end, once the maximum is 
reached. You can configure this behavior when memory is running low or the proxy connection limit has been reached. 

To configure failopen in the CLI:

config system global


set av-failopen-session {enable | disable}
set av-failopen {off | one-shot | pass}
end

FortiOS 6.4.6 Administration Guide 1851


Fortinet Technologies Inc.
Troubleshooting

To set the behavior for these conditions, you must enable av-failopen-session. When  enabled, and a proxy for a 
protocol runs out of room in its session table, that protocol goes into failopen mode and behaves as defined in the av-
failopen command. 
av-failopen determines the behavior of the proxy until entries are free in the session table again for that proxy. 

off  This option turns off accepting any new AV sessions, but continues to process 
any existing AV sessions that are currently active.
All the protocols listed (HTTP, SMTP, POP3, IMAP, FTP, and NNTP) are scanned 
by FortiGate Antivirus. If AV scanning is enabled, av-failopen off is set, and 
the proxy session table fills up, which means that no new sessions of that type are 
accepted. 
For example, if the POP3 session table is full and email AV scanning is enabled, 
no additional POP3 connections are allowed until the session table has free 
space. This is a secure option because no unscanned traffic is allowed to pass.

one-shot When memory is low, bypass the antivirus system. 
The term one-shot comes from the fact that once you are in one-shot av-
failopen mode, you must set av-failopen to either pass or off to restart AV 
scanning. 
This is a very unsecure option because it allows all traffic without AV scanning, 
and it never reverts to normal without manual assistance. 

pass  When memory is low, bypass the antivirus system. 
The difference between pass and one-shot options is that when memory is 
freed up, the system automatically starts AV scanning again. 
This is an unsecure option because it allows traffic to pass without AV scanning. 
However, it is better than one-shot because it automatically restarts AV 
scanning, when possible.

If the proxy session table is full for one or more protocols, and your FortiGate enters into conserve or failopen mode:
 l It appears as though the FortiGate has lost the connection.
 l Network services are intermittent or don't exist.
 l Other services work normally  until their sessions end, and then they join the queue of session-starved applications. 

Checking sessions in use

Sessions are organized into sections according to the protocol they use. This provides statistics and errors specific to  
that protocol. 

Due to the amount of output from this command, you should connect to the CLI with a terminal 
program, such as puTTY, that logs output. Otherwise, you may not be able to access all the 
output information from the command.

To check sessions in use and related errors in the CLI:

# get test proxyworker 4

FortiOS 6.4.6 Administration Guide 1852


Fortinet Technologies Inc.
Troubleshooting

Sample output

The following output only displays HTTP entries. The other protocols were removed to limit the output. There will be 
separate entries for each supported protocol (HTTP, SMTP, POP3, IMAP, FTP, and NNTP) in each section of the 
output. To view the session descriptions, scroll to the end of the output.
FGT# # get test proxyworker 4

Worker[0]
HTTP Common
Current Connections 8/8032
Max Concurrent Connections 76

Worker Stat
Running time (HH:MM:SS:usec) 29:06:27:369365
Time in loop scanning 2:08:000198
Error Count (accept) 0
Error Count (read) 0
Error Count (write) 0
Error Count (poll) 0
Error Count (alloc) 0
Last Error 0
Acceptor Read 6386
Acceptor Write 19621
Acceptor Close 0

HTTP Stat
Bytes sent 667012 (kb)
Bytes received 680347 (kb)
Error Count (alloc) 0
Error Count (accept) 0
Error Count (bind) 0
Error Count (connect) 0
Error Count (socket) 0
Error Count (read) 134
Error Count (write) 0
Error Count (retry) 40
Error Count (poll) 0
Error Count (scan reset) 2
Error Count (urlfilter wait) 3
Last Error 104
Web responses clean 17950
Web responses scan errors 23
Web responses detected 16
Web responses infected with worms 0
Web responses infected with viruses 0
Web responses infected with susp 0
Web responses file blocked 0
Web responses file exempt 0
Web responses bannedword detected 0
Web requests oversize pass 16
Web requests oversize block 0
Last Server Scan errors 102
URL requests exempt 0
URL requests blocked 0
URL requests passed 0
URL requests submit error 0

FortiOS 6.4.6 Administration Guide 1853


Fortinet Technologies Inc.
Troubleshooting

URL requests rating error 0


URL requests rating block 0
URL requests rating allow 10025
URL requests infected with worms 0
Web requests detected 0
Web requests file blocked 0
Web requests file exempt 0
POST requests clean 512
POST requests scan errors 0
POST requests infected with viruses 0
POST requests infected with susp 0
POST requests file blocked 0
POST requests bannedword detected 0
POST requests oversize pass 0
POST requests oversize block 0
Web request backlog drop 0
Web response backlog drop 0

Worker Accounting
poll=721392/649809/42 pollfail=0 cmdb=85 scan=19266 acceptor=25975

HTTP Accounting
setup_ok=8316 setup_fail=0 conn_ok=0 conn_inp=8316
urlfilter=16553/21491/20 uf_lookupf=0
scan=23786 clt=278876 srv=368557

SMTP Accounting
setup_ok=12 setup_fail=0 conn_ok=0 conn_inp=12
scan=12 suspend=0 resume=0 reject=0 spamadd=0 spamdel=0 clt=275 srv=279

POP3 Accounting
setup_ok=30 setup_fail=0 conn_ok=0 conn_inp=30
scan=3 clt=5690 srv=5836

IMAP Accounting
setup_ok=0 setup_fail=0 conn_ok=0 conn_inp=0
scan=0 clt=0 srv=0

FTP Accounting
setup_ok=0 setup_fail=0 conn_ok=0 conn_inp=0
scan=0 clt=0 srv=0 datalisten=0 dataclt=0 datasrv=0

NNTP Accounting
setup_ok=0 setup_fail=0 conn_ok=0 conn_inp=0
scan=0 clt=0 srv=0

Section descriptions:

Section Description

HTTP Common current  This displays an entry for each protocol. Each protocol displays the connections 
connections  currently used, and the maximum connections allowed. 
This maximum is for the UTM proxy, which means all of the protocol connections 
combined cannot be larger than this number. The maximum session count for 
each protocol is the same. 

FortiOS 6.4.6 Administration Guide 1854


Fortinet Technologies Inc.
Troubleshooting

Section Description

You may also see Max Concurrent Connections for each protocol. This is 


the number of maximum connections of this type  allowed at one time. If VDOMs 
are enabled, this value is defined either on the global or per-VDOM level at VDOM
> Global Resources.

Worker Stat  This displays statistics about the UTM proxy including how long it has been 
running, and how many errors it has found. 

HTTP Stat  This section includes statistics about the HTTP protocol proxy. This is a very 
extensive list that includes errors, web responses, and any UTM positive 
matches. 
There are similar sections for each protocol, but the specific entries for the 
protocol will vary based on what UTM scanning is looking for (spam control for 
email, file transfer blocking for FTP, and so on). 

Worker Accounting Lists accounting information about the UTM proxy such as polling statistics, how 
many sessions were scanned, and how many were accepted. 
This information can show you if expected AV scanning is taking place or not. 
Under normal operation there should not be errors or fails.

HTTP Accounting The accounting sections for each protocol provide information about successful 
session creation, failures, how many sessions are being scanned or filtered, and 
how many are client or server originated.
If setup_fail is larger than zero, run the command again to see if it's increasing 
quickly. If it is, your FortiGate may be in conserve mode. 

Related commands

To dump memory usage:

# get test proxyworker 1

To display statistics per VDOM:

# get test proxyworker 4444

To restart the proxy:

# get test proxyworker 99

Checking wireless information

Check wireless connections, stations, and interfaces when the problem is not caused by a physical interface.

Troubleshooting station connection issues

To check if a station entry is created on access control in the CLI:

FG600B3909600253 # diagnose wireless-controller wlac -d sta

FortiOS 6.4.6 Administration Guide 1855


Fortinet Technologies Inc.
Troubleshooting

* vf=0 wtp=70 rId=2 wlan=open ip=0.0.0.0 mac=00:09:0f:db:c4:03 rssi=0 idle=148 bw=0 use=2
vf=0 wtp=70 rId=2 wlan=open ip=172.30.32.122 mac=00:25:9c:e0:47:88 rssi=-40 idle=0 bw=9
use=2

Enabling diagnostics for a specific station

This example uses the station MAC address to find where it is failing:
FG600B3909600253 # diagnose wireless-controller wlac sta_filter 00:25:9c:e0:47:88 1
Set filter sta 00:25:9c:e0:47:88 level 1
FG600B3909600253 # 71419.245 <ih> IEEE 802.11 mgmt::disassoc <== 00:25:9c:e0:47:88 vap open
rId 1 wId 0 00:09:0f:db:c4:03
71419.246 <dc> STA del 00:25:9c:e0:47:88 vap open rId 1 wId 0
71419.246 <cc> STA_CFG_REQ(34) sta 00:25:9c:e0:47:88 del ==> ws (0-192.168.35.1:5246) rId 1
wId 0
71419.246 <cc> STA del 00:25:9c:e0:47:88 vap open ws (0-192.168.35.1:5246) rId 1 wId 0
00:09:0f:db:c4:03 sec open reason I2C_STA_DEL
71419.247 <cc> STA_CFG_RESP(34) 00:25:9c:e0:47:88 <== ws (0-192.168.35.1:5246) rc 0
(Success).

Performing a sniffer trace (CLI and packet capture)

When you troubleshoot networks and routing in particular, it helps to look inside the headers of packets to determine if 
they are traveling the route that you expect them to take. Packet sniffing is also known as network tap, packet capture, or 
logic analyzing.

For FortiGates with NP2, NP4, or NP6 interfaces that are offloading traffic, disable offloading 
on these interfaces before you perform a trace or it will change the sniffer trace.

Sniffing packets

To perform a sniffer trace in the CLI:

Before you start sniffing packets, you should prepare to capture the output to a file. A large amount of data may scroll by 
and you will not be able to see it without saving it first. One method is to use a terminal program like puTTY to connect to 
the FortiGate CLI. Once the packet sniffing count is reached, you can end the session and analyze the output in the file. 
The general form of the internal FortiOS packet sniffer command is:
# diagnose sniffer packet <interface_name> <‘filter’> <verbose> <count> <tsformat>

To stop the sniffer, type CTRL+C.

<interface_name> The name of the interface to sniff, such as port1 or internal. This can also be 


any to sniff all interfaces.
<‘filter’> What to look for in the information the sniffer reads. none indicates no filtering, 
and all packets are displayed as the other arguments indicate.
The filter must be inside single quotes (‘).
<verbose> The level of verbosity as one of:

FortiOS 6.4.6 Administration Guide 1856


Fortinet Technologies Inc.
Troubleshooting

 l 1 - print header of packets
 l 2 - print header and data from IP of packets
 l 3 - print header and data from Ethernet of packets
 l 4 - print header of packets with interface name
<count> The number of packets the sniffer reads before stopping. If you don't put a 
number here, the sniffer will run until you stop it with <CTRL+C>.
<tsformat> The timestamp format.   
 l a: absolute UTC time, yyyy-mm-dd hh:mm:ss.ms
 l l: absolute LOCAL time, yyyy-mm-dd hh:mm:ss.ms
 l otherwise: relative to the start of sniffing, ss.ms

Simple sniffing example:

# diagnose sniffer packet port1 none 1 3.

This displays the next three packets on the port1 interface using no filtering, and verbose level 1. At this verbosity level, 
you can see the source IP and port, the destination IP and port, action (such as ack), and sequence numbers. 
In the output below, port 443 indicates these are HTTPS packets and that 172.20.120.17 is both sending and receiving 
traffic.
Head_Office_620b # diagnose sniffer packet port1 none 1 3
interfaces=[port1]
filters=[none]
0.545306 172.20.120.17.52989 -> 172.20.120.141.443: psh 3177924955 ack 1854307757
0.545963 172.20.120.141.443 -> 172.20.120.17.52989: psh 1854307757 ack 3177925808
0.562409 172.20.120.17.52988 -> 172.20.120.141.443: psh 4225311614 ack 3314279933

Advanced sniffing example:

The following commands will report packets on any interface that are traveling between a computer with the host name 
of “PC1” and a computer with the host name of “PC2”. With verbosity 4 and above, the sniffer trace displays the interface 
names where traffic enters or leaves the FortiGate unit. To stop the sniffer, type CTRL+C.
FGT# diagnose sniffer packet any "host <PC1> or host <PC2>" 4
or
FGT# diagnose sniffer packet any "(host <PC1> or host <PC2>) and icmp" 4

The following CLI command for a sniffer includes the ARP protocol in the filter which may be useful to troubleshoot a 
failure in the ARP resolution. For example, PC2 may be down and not responding to the FortiGate ARP requests.
FGT# diagnose sniffer packet any "host <PC1> or host <PC2> or arp" 4

Using packet capture

To use packet capture, the FortiGate must have a disk. You can enable the capture-packet  in the firewall policy.

To enable packet capture in the CLI:

config firewall policy


edit <id>
set capture-packet enable
next

FortiOS 6.4.6 Administration Guide 1857


Fortinet Technologies Inc.
Troubleshooting

end

To configure packet capture filters in the GUI:

Go to Network > Packet Capture.


When you add a packet capture filter, enter the following information and click OK.

Interface Select the interface to sniff from the drop-down menu. 
You must select one interface. You cannot change the interface without deleting 
the filter and creating a new one, unlike the other fields.

Max Packets to Save Enter the number of packets to capture before the filter stops. 


This number cannot be zero. You can halt the capturing before this number is 
reached. 

Enable Filters Select this option to specify filter fields.

Host(s) Enter the IP address of one or more hosts.
Separate multiple hosts with commas. To enter a range, use a dash without 
spaces. For example, 172.16.1.5-172.16.1.15, or enter a subnet. 

Port(s) Enter one or more ports to capture on the selected interface.
Separate multiple ports with commas. To enter a range, use a dash without 
spaces, for example 88-90.

VLAN(s) Enter one or more VLANs (if any). Separate multiple VLANs with commas.

Protocol Enter one or more protocols. Separate multiple protocols with commas. To enter a 
range, use a dash without spaces. For example, 1-6, 17, 21-25.

Include IPv6 Packets Select this option if you are troubleshooting IPv6 networking, or if your network 


uses IPv6. Otherwise, leave it disabled.

Include Non-IP Packets The protocols in the list are all IP based except for ICMP (ping). 


Use this feature to capture non-IP based packets. Examples of non-IP packets 
include IPsec, IGMP, ARP, and ICMP. 

Managing filters

If you select a filter, you have the option to start and stop packet capture in the edit window, or download the captured 
packets. You can also see the filter status and the number of packets captured. 
You can select the filter and start capturing packets. When the filter is running, the number of captured packets increases 
until it reaches the Max Packet Count or you stop it.  Y
  ou cannot download the output file while the filter is running. 

Packet capture controls

To start, stop, or resume packet capture, use the symbols on the screen. These symbols are the same as those used for 
audio or video playback. Hover over the symbol to reveal explanatory text. Similarly, to download the *.pcap file, use the 
download symbol on the screen.

FortiOS 6.4.6 Administration Guide 1858


Fortinet Technologies Inc.
Troubleshooting

Downloading the file

You can download the  *.pcap file when the packet capture is complete. You must use a third party application, such as 
Wireshark, to read *,pcap files. This tool provides you with extensive analytics and the full contents of the packets that 
were captured.

Debugging the packet flow

Debug the packet flow when network traffic is not entering and leaving the FortiGate as expected. Debugging the packet 
flow can only be done in the CLI. Each command configures a part of the debug action. The final commands starts the 
debug. 

To trace the packet flow in the CLI:

# diagnose debug flow trace start

To follow packet flow by setting a flow filter:

# diagnose debug flow {filter | filter6} <option>


 l Enter filter if your network uses IPv4.
 l Enter filter6 if your network uses IPv6.

Replace <option> with one of the following variables:

Variable Description
addr IPv4 or IPv6 address
clear clear filter
daddr destination IPv4 or IPv6 address
dport destination port
negate inverse IPv4 or IPv6 filter   
port port
proto protocol number
saddr source address
sport source port
vd index of virtual domain; -1 matches all

If FortiGate is connected to FortiAnalyzer or FortiCloud, the diagnose debug flow output will be 
recorded as event log messages and then sent to the devices. Do not run this command 
longer than necessary, as it generates a significant amount of data.

FortiASIC NP4 or NP6 interface pairs that offload traffic will change the packet flow. Before 
debugging any NP4 or NP6 interfaces, disable offloading on those interfaces. 
To do this, enter diagnose npu <interface pair> fastpath disable, where 
interface pair is np4, np6, np4lite, or np6lite.

FortiOS 6.4.6 Administration Guide 1859


Fortinet Technologies Inc.
Troubleshooting

To start flow monitoring with a specific number of packets:

# diagnose debug flow trace start <N>

To stop flow tracing at any time:

# diagnose debug flow trace stop

The following example shows the flow trace for a device with an IP address of  203.160.224.97:
# diagnose debug enable
# diagnose debug flow filter addr 203.160.224.97
# diagnose debug flow show function-name enable
# diagnose debug flow trace start 100

Sample output: HTTP

To observe the debug flow trace, connect to the website at the following address:
https://www.fortinet.com

Comment: SYN packet received:
id=20085 trace_id=209 func=resolve_ip_tuple_fast
line=2700 msg="vd-root received a packet(proto=6,
192.168.3.221:1487->203.160.224.97:80) from port5."

SYN sent and a new session is allocated:
id=20085 trace_id=209 func=resolve_ip_tuple line=2799
msg="allocate a new session-00000e90"

Lookup for next-hop gateway address:
id=20085 trace_id=209 func=vf_ip4_route_input line=1543
msg="find a route: gw-192.168.11.254 via port6"

Source NAT, lookup next available port:
id=20085 trace_id=209 func=get_new_addr line=1219
msg="find SNAT: IP-192.168.11.59, port-31925"
direction“

Matched security policy. Check to see which policy this session matches:
id=20085 trace_id=209 func=fw_forward_handler line=317
msg="Allowed by Policy-3: SNAT"

Apply source NAT:
id=20085 trace_id=209 func=__ip_session_run_tuple
line=1502 msg="SNAT 192.168.3.221->192.168.11.59:31925"

SYN ACK received:
id=20085 trace_id=210 func=resolve_ip_tuple_fast line=2700
msg="vd-root received a packet(proto=6, 203.160.224.97:80-
>192.168.11.59:31925) from port6."

Found existing session ID. Identified as the reply direction:
id=20085 trace_id=210 func=resolve_ip_tuple_fast line=2727
msg="Find an existing session, id-00000e90, reply direction"

Apply destination NAT to inverse source NAT action:

FortiOS 6.4.6 Administration Guide 1860


Fortinet Technologies Inc.
Troubleshooting

id=20085 trace_id=210 func=__ip_session_run_tuple


line=1516 msg="DNAT 192.168.11.59:31925-
>192.168.3.221:1487"

Lookup for next-hop gateway address for reply traffic:
id=20085 trace_id=210 func=vf_ip4_route_input line=1543
msg="find a route: gw-192.168.3.221 via port5"

ACK received:
id=20085 trace_id=211 func=resolve_ip_tuple_fast line=2700
msg="vd-root received a packet(proto=6,
192.168.3.221:1487->203.160.224.97:80) from port5."

Match existing session in the original direction:
id=20085 trace_id=211 func=resolve_ip_tuple_fast line=2727
msg="Find an existing session, id-00000e90, original
direction"

Apply source NAT:
id=20085 trace_id=211 func=__ip_session_run_tuple
line=1502 msg="SNAT 192.168.3.221->192.168.11.59:31925"

Receive data from client:
id=20085 trace_id=212 func=resolve_ip_tuple_fast
line=2700 msg="vd-root received a packet(proto=6,
192.168.3.221:1487->203.160.224.97:80) from port5."

Match existing session in the original direction:
id=20085 trace_id=212 func=resolve_ip_tuple_fast
line=2727 msg="Find an existing session, id-00000e90,
original direction"

Apply source NAT:
id=20085 trace_id=212 func=__ip_session_run_tuple
line=1502 msg="SNAT 192.168.3.221->192.168.11.59:31925"

Receive data from server:
id=20085 trace_id=213 func=resolve_ip_tuple_fast
line=2700 msg="vd-root received a packet(proto=6,
203.160.224.97:80->192.168.11.59:31925) from port6."

Match existing session in reply direction:
id=20085 trace_id=213 func=resolve_ip_tuple_fast
line=2727 msg="Find an existing session, id-00000e90,
reply direction"

Apply destination NAT to inverse source NAT action:
id=20085 trace_id=213 func=__ip_session_run_tuple
line=1516 msg="DNAT 192.168.11.59:31925-
>192.168.3.221:1487"

Sample output: IPsec (policy-based)


id=20085 trace_id=1 msg="vd-root received a packet(proto=1, 10.72.55.240:1->10.71.55.10:8)
from internal."
id=20085 trace_id=1 msg="allocate a new session-00001cd3"

FortiOS 6.4.6 Administration Guide 1861


Fortinet Technologies Inc.
Troubleshooting

id=20085 trace_id=1 msg="find a route: gw-66.236.56.230 via wan1"


id=20085 trace_id=1 msg="Allowed by Policy-2: encrypt"
id=20085 trace_id=1 msg="enter IPsec tunnel-RemotePhase1"
id=20085 trace_id=1 msg="encrypted, and send to 15.215.225.22 with source 66.236.56.226"
id=20085 trace_id=1 msg="send to 66.236.56.230 via intf-wan1“
id=20085 trace_id=2 msg="vd-root received a packet (proto=1, 10.72.55.240:1-1071.55.10:8)
from internal."
id=20085 trace_id=2 msg="Find an existing session, id-00001cd3, original direction"
id=20085 trace_id=2 msg="enter IPsec ="encrypted, and send to 15.215.225.22 with source
66.236.56.226“ tunnel-RemotePhase1"
id=20085 trace_id=2 msgid=20085 trace_id=2 msg="send to 66.236.56.230 via intf-wan1"

Testing a proxy operation

To monitor proxy operations in the CLI:

diagnose test application <application> <option>

To display a list of available application values:

diagnose test application ?

To display a list of available option values:

diagnose test application <application> ?

The <option> value will depend on the application value  used in the command. 
For example, if the application is http, the CLI command that displays the <option> values is:
diagnose test application http ?

Displaying detail Hardware NIC information

Monitoring the hardware NIC is important because interface errors  indicate data link or physical layer issues which may 
impact the performance of the FortiGate.

To monitor hardware network operations in the CLI:

diagnose hardware deviceinfo nic <interface>

Sample output:

The following is sample output when the  <interface> is set to lan:
System_Device_Name lan
Current_HWaddr 00:09:0f:68:35:60
Permanent_HWaddr 00:09:0f:68:35:60
State up
Link up
Speed 100
Duplex full
[……]

FortiOS 6.4.6 Administration Guide 1862


Fortinet Technologies Inc.
Troubleshooting

Rx_Packets=5685708
Tx_Packets=4107073
Rx_Bytes=617908014
Tx_Bytes=1269751248
Rx_Errors=0
Tx_Errors=0
Rx_Dropped=0
Tx_Dropped=0
[……]

Error descriptions

The diagnose hardware deviceinfo nic command displays a list of error names and values that are related to 


hardware. 
The following table describes possible hardware errors:

Field Description

Rx_Errors = rx error  Bad frame was marked as error by PHY
count

Rx_CRC_Errors + This error is only valid in 10/100M mode
Rx_Length_Errors -
Rx_Align_Errors

Rx_Dropped or Running out of buffer space
Rx_No_Buffer_
Count

Rx_Missed_Errors Equals Rx_FIFO_Errors + CEXTERR (Carrier Extension Error Count); only valid in 1000M 
mode, which is marked by PHY

Tx_Errors = Tx_ ECOL (Excessive Collisions Count); only valid in half-duplex mode
Aborted_Errors

Tx_Window_Errors Late Collisions (LATECOL) Count 
Late collisions are collisions that occur after 64-byte time into the transmission of the packet 
while working in 10 to 100 Mb/s data rate and 512-byte time into the transmission of the 
packet while working in the 1,000 Mb/s data rate. This register only increments if transmits are 
enabled and the device is in half-duplex mode.

Rx_Dropped See Rx_Errors

Tx_Dropped Not defined

Collisions Total number of collisions experienced by the transmitter; valid in half-duplex mode

Rx_Length_Errors Transmission length error

Rx_Over_Errors Not defined

Rx_CRC_Errors Frame CRC error

Rx_Frame_Errors Same as Rx_Align_Errors
This error is only valid in 10/100M mode.

FortiOS 6.4.6 Administration Guide 1863


Fortinet Technologies Inc.
Troubleshooting

Field Description

Rx_FIFO_Errors Same as Rx_Missed_Errors - a missed packet count

Tx_Aborted_Errors See Tx_Errors

Tx_Carrier_Errors The PHY should assert the internal carrier sense signal during every transmission. Failure to 
do so may indicate that the link has failed or the PHY has an incorrect link configuration. This 
register only increments if transmits are enabled. This register isn't valid in internal SerDes 1 
mode (TBI mode for the 82544GC/EI) and is valid only when the Ethernet controller is 
operating at full duplex.

Tx_FIFO_Errors Not defined

Tx_Heartbeat_Errors Not defined

Tx_Window_Errors See LATECOL

Tx_Single_Collision_ Counts the number of times that a successfully transmitted packet encountered a single 
Frames collision
The value increments only if transmits are enabled and the Ethernet controller is in half-duplex 
mode.

Tx_Multiple_ A Multiple Collision Count which indicates the number of times that a transmit encountered 
Collision_Frames more than one collision, but less than 16. The value increments only if transmits are enabled 
and the Ethernet controller is in half-duplex mode.

Tx_Deferred Counts defer events.
A deferred event occurs when the transmitter cannot immediately send a packet due to:
 l The medium being busy because another device is transmitting
 l The IPG timer hasn't expired
 l Half-duplex deferral events are occurring
 l XOFF frames are being received 
 l he link is not up. 
This register only increments if transmits are enabled. This counter does not increment for 
streaming transmits that are deferred due to TX IPG.

Rx_Frame_Too_ The Rx frame is oversized
Longs

Rx_Frame_Too_ The Rx frame is too short
Shorts

Rx_Align_Errors This error is only valid in 10/100M mode

Symbol Error Count Counts the number of symbol errors between reads - SYMERRS.
The count increases for every bad symbol that's received, whether or not a packet is currently 
being received and whether or not the link is up. This register increments only in internal 
SerDes mode.

FortiOS 6.4.6 Administration Guide 1864


Fortinet Technologies Inc.
Troubleshooting

Performing a traffic trace

Traffic tracing allows you to follow a specific packet stream. This is useful when you want to confirm that packets are 
using the route you expect them to take on your network.

To view traffic sessions:

Use this command to view the characteristics of a traffic session though specific security policies.
diagnose sys session

To trace per-packet operations for flow tracing:

diagnose debug flow

To trace per-Ethernet frame:

diagnose sniffer packet

To trace a route from a FortiGate to a destination IP address:

# execute traceroute www.fortinet.com


traceroute to www.fortinet.com (66.171.121.34), 32 hops max, 84 byte packets
1 172.20.120.2 0.637 ms 0.653 ms 0.279 ms
2 209.87.254.221 <static-209-87-254-221.storm.ca> 2.448 ms 2.519 ms 2.458 ms
3 209.87.239.129 <core-2-g0-2.storm.ca> 2.917 ms 2.828 ms 9.324 ms
4 209.87.239.199 <core-3-bdi1739.storm.ca> 13.248 ms 12.401 ms 13.009 ms
5 216.66.41.113 <v502.core1.tor1.he.net> 17.181 ms 12.422 ms 12.268 ms
6 184.105.80.9 <100ge1-2.core1.nyc4.he.net> 21.355 ms 21.518 ms 21.597 ms
7 198.32.118.41 <ny-paix-gni.twgate.net> 83.297 ms 84.416 ms 83.782 ms
8 203.160.228.217 <217-228-160-203.TWGATE-IP.twgate.net> 82.579 ms 82.187 ms 82.066 ms
9 203.160.228.229 <229-228-160-203.TWGATE-IP.twgate.net> 82.055 ms 82.455 ms 81.808 ms
10 203.78.181.2 82.262 ms 81.572 ms 82.015 ms
11 203.78.186.70 83.283 ms 83.243 ms 83.293 ms
12 66.171.127.177 84.030 ms 84.229 ms 83.550 ms
13 66.171.121.34 <www.fortinet.com> 84.023 ms 83.903 ms 84.032 ms
14 66.171.121.34 <www.fortinet.com> 83.874 ms 84.084 ms 83.810 ms

Using a session table

A session is a communication channel between two devices or applications across the network. Sessions allow FortiOS 
to inspect and act on a sequential group of packets in a session all at once instead of inspecting each packet individually. 
Each  session has an entry in the session table that includes important information about the session.
You can view FortiGate session tables from the FortiGate GUI or CLI. The most useful troubleshooting data comes from 
the CLI. The session table in the GUI also provides useful summary information, particularly the current policy number 
that the session is using.

When to use a session table

Session tables are useful when verifying open connections. For example, if you have a web browser open to browse the 
Fortinet website, you would expect a session entry from your computer on port 80 to the IP address for the Fortinet 

FortiOS 6.4.6 Administration Guide 1865


Fortinet Technologies Inc.
Troubleshooting

website.
You can also use a session table to investigate why there are too many sessions for FortiOS to process.

GUI

To view session information in the GUI:

 1. Go to Security Fabric > Physical Topology.


 2. From the Metrics dropdown, select Sessions.

Finding the security policy for a specific connection

Every program and device on your network must have an open communication channel or session to pass information. 
FortiGate manages these sessions with features such as traffic shaping, antivirus scanning, and blocking known bad 
websites. Each session will have an entry in the session table.
If a secure web browser session is not working properly, you can check the session table to ensure the session is still 
active and going to the proper address. The session table can also tell you the security policy number it matches, so you 
can check what is happening in that policy.

1. Get the connection information.

You need to be able to identify the session you want. To do this, you will need:
 l The source IP address (usually your computer)
 l The destination IP address (if you have it) 
 l The port number which is determined by the program you are using. Common ports are:   
 l Port 80 (HTTP for web browsing)   
 l Port 443 (HTTPS for SSL encrypted web browsing)   
 l Port 22 (SSH for Secure Shell)   
 l Port 25 (SMTP for Mail Transfer)

2. Find the session and policy ID

Go to Security Fabric > Physical Topology. From the Metrics dropdown, select Sessions.


To find your session, search for  your source IP address, destination IP address (if you have it), and port number. The 
policy ID is listed after the destination information. 

3. Use filters to find a session

If there are multiple pages of sessions, you can use a filter to hide the sessions you do not need. To filter the sessions in 
the table, click Add Filter, and select an option from the list. You can filter the table by Destination IP, Source IP, or 
Source Port.

CLI

The session table output in the CLI is very large. The CLI command supports filters to show only the data you need.

FortiOS 6.4.6 Administration Guide 1866


Fortinet Technologies Inc.
Troubleshooting

To view session data in the CLI:

diagnose sys session list

An entry is placed in the session table for each traffic session passing through a security policy

To filter session data:

diagnose sys session filter <option>

The values for <option> include the following:

Value Definition
clear Clear session filter
dintf Destination interface
dport Destination port
dst Destination IP address
duration Duration of the session
expire Expire
negate Inverse filter
nport NAT'd source port
nsrc NAT'd source ip address
policy Policy ID
proto Protocol number
proto-state Protocol state
session-state1 Session state1   
session-state2 Session state2
sintf Source interface
sport Source port
src Source IP address
vd Index of virtual domain, -1 matches all

Even though UDP is a sessionless protocol, FortiGate keeps track of the following states:
 l When UDP reply does not have a value of 0
 l When UDP reply has a value of 1
The following table displays firewall session states from the session table:

State Description

log Session is being logged

FortiOS 6.4.6 Administration Guide 1867


Fortinet Technologies Inc.
Troubleshooting

State Description

local Session is originated from or destined for local stack

ext Session is created by a firewall session helper

may_dirty Session is created by a policy
For example, the session for ftp control channel will have this state but ftp data
channel won't. This is also seen when NAT is enabled.

ndr Session will be checked by IPS signature

nds Session will be checked by IPS anomaly

br Session is being bridged (TP) mode

Examining the firewall session list

The firewall session list displays all open sessions in FortiGate. Examine the list for strange patterns, such as no 
sessions apart from the internal network, or all sessions are only to one IP address.
When you examine the firewall session list in the CLI, you can use filters to reduce the output. 

To examine the firewall session list in the CLI:

You can use a filter to limit the sessions displayed by source, destination address, port, or NAT'd address. To use more 
than one filter, enter a separate line for each value.
The following example filters the session list based on a source address of 10.11.101.112:
FGT# diagnose sys session filter src 10.11.101.112
FGT# diagnose sys session list

The following example filters the session list based on a destination address of 172.20.120.222.
FGT# diagnose sys session filter dst 172.20.120.222
FGT# diagnose sys session list

To clear all sessions corresponding to a filter:
FGT# diagnose sys session filter dst 172.20.120.222
FGT# diagnose sys session clear

Checking source NAT information

Checking source NAT is important when you are troubleshooting from the remote end of the connection outside the  
firewall. 

To check the source NAT information in the CLI:

When you display the session list in the CLI, you can match the NAT'd source address (nsrc) and port (nport). This is 
useful when multiple internal IP addresses are NAT'd to a common external-facing source IP address.
FGT# diagnose sys session filter nsrc 172.20.120.122
FGT# diagnose sys session filter nport 8888
FGT# diagnose sys session list

FortiOS 6.4.6 Administration Guide 1868


Fortinet Technologies Inc.
Troubleshooting

Finding object dependencies

You may be prevented from deleting a configuration object when  other configuration objects depend on it. You can use 
the GUI or CLI to identify objects which depend on, or make reference to the configuration you are trying to delete. 
Additionally, if you have a virtual interface with dependent objects, you will need to find and remove those dependencies 
before deleting the interface. 

To remove interface object dependencies in the GUI:

 1. Go to Network > Interfaces. The Ref. column displays the number of objects that reference this interface.


 2. Select the number in the Ref . column for the interface. A window listing the dependencies appears.
 3. Use these detailed entries to locate and remove object references to this interface. The trash can icon is enabled 
after all the object dependencies are removed.
 4. Remove the interface by selecting the check box for the interface, and select Delete.

To find object dependencies in the CLI:

When running multiple VDOMs, use the following command in the global configuration only.
diagnose sys checkused <path.object.mkey>

The command searches for the named object  in both the most recently used global and VDOM configurations.

Examples

To verify which objects a security policy with an ID of 1 refers to:
diagnose sys checkused firewall.policy.policyid 1

To check what is referred to by interface port1:
diagnose sys checkused system.interface.name port1

To show all dependencies for an interface:
diagnose sys checkused system.interface.name <interface name>

Sample output:

In this example , the interface has dependent objects, including four address objects, one VIP, and three security 
policies.
entry used by table firewall.address:name '10.98.23.23_host’
entry used by table firewall.address:name 'NAS'
entry used by table firewall.address:name 'all'
entry used by table firewall.address:name 'fortinet.com'
entry used by table firewall.vip:name 'TORRENT_10.0.0.70:6883'
entry used by table firewall.policy:policyid '21'
entry used by table firewall.policy:policyid '14'
entry used by table firewall.policy:policyid '19'

FortiOS 6.4.6 Administration Guide 1869


Fortinet Technologies Inc.
Troubleshooting

Diagnosing NPU-based interfaces

Some Fortinet products contain network processors, such as NP4, NP6Lite, or NP6. Offloading requirements will vary 
depending on the model.

To view the initial session setup for NPU-based interfaces:

diagnose debug flow


 l If the session is programmed into the ASIC (fastpath) correctly, the  command will not detect the packets that arrive 
at the CPU. 
 l If the NPU functionality is disabled, the CPU  detects all the packets. However, you should only disable the 
NPU functionality for troubleshooting purposes.

To diagnose NPU-based interfaces:

 1. Get the NPx or NPU ID and port numbers.   
diagnose npu <processor> list
The output will look like this:
ID Model Slot Interface
0 On-board port1 fabric1 fabric3 fabric5
1 On-board fabric2 port2 base2 fabric4
 2. Disable the NPU functionality.   
diagnose npu <processor> fastpath disable <dev_id>
The dev_id is the NPx ID number.
 3. Analyze the packets.   
diagnose npu <processor> fastpath-sniffer enable port1

These commands  only apply to NP4 and NP6 interfaces. 

The output will look similar to:
NP4 Fast Path Sniffer on port1 enabled
This causes traffic on port1 of the network processor to be sent to the CPU. This means you can perform a 
standard sniffer trace and use other diagnostic commands,  if it is a standard CPU-driven port.

Identifying the XAUI link used for a specific traffic stream

The diagnose npu np6 xaui-hash command takes a 6-tuple input of the traffic stream to identify the NP6 XAUI link 


that the traffic passes through.
This command is only available on the 38xxD, 39xxD, 34xxE, 36xxE, and 5001E series devices.

Syntax

diagnose npu np6 xaui-hash <interface> <proto> <src_ip> <dst_ip> <src_port> <dst_port>

FortiOS 6.4.6 Administration Guide 1870


Fortinet Technologies Inc.
Troubleshooting

Variable Description
<interface> The network interface that the packets are coming from.
<proto> The proto number, 6 for TCP or 17 for UDP.
<src_ip> The source IP address.
<dst_ip> The destination IP address.
<src_port> The source port.
<dst_port> The destination port.

Examples

# diagnose npu np6 xaui-hash port1 6 1.1.1.1 2.2.2.1 4567 80


NP6_ID: 0, XAUI_LINK: 2
# diagnose npu np6 xaui-hash port1 6 1.1.1.1 2.2.2.1 4567 200
NP6_ID: 6, XAUI_LINK: 2
# diagnose npu np6 xaui-hash port1 6 1.1.1.1 2.2.2.1 4567 20
NP6_ID: 1, XAUI_LINK: 2
# diagnose npu np6 xaui-hash port1 6 1.1.1.1 2.2.2.1 4567 23
NP6_ID: 1, XAUI_LINK: 1

The NP6_ID is the NP index of the model that is being used. It can be found with the diagnose npu np6 port-list 


command.

Date and time settings

Fortinet support may ask you to check the date and time settings for log message timestamp synchronization and for 
certificates that have a time requirement to check for validity. 

To check time settings:

execute time

To check date settings:

execute date

If all devices have the same time, it helps to correlate log entries from different devices.
execute time
current time is: 12:40:48
last ntp sync:Thu Mar 16 12:00:21 2006
execute date
current date is: 2006-03-16

To force synchronization with an NTP server:

config system ntp


set ntpsync {enable | disable}
end

FortiOS 6.4.6 Administration Guide 1871


Fortinet Technologies Inc.
Troubleshooting

If all devices have the same time, it helps to correlate log entries from different devices.

Running the TAC report

The Technical Assistance Center (TAC) report runs an exhaustive series of diagnostic commands. Some of the 
commands are only needed if you are using features, such as HA, VPN tunnels, or a modem. Fortinet support my ask 
you to use the report output to provide information about the current state of your FortiGate.
Due the amount of output generated, the report may take a few minutes to run. If you are logging CLI output to a file, you 
can run this command to familiarize yourself with the diagnostic commands. 

To run the TAC report in the CLI:

execute tac report

Other commands

You may be asked to provide the following information when you contact Fortinet support.
 l ARP table on page 1872
 l IP address on page 1874

ARP table

The ARP table is used to determine the destination MAC addresses of the network nodes, as well as the VLANs and 
ports from where the nodes are reached.

To view the ARP table:

# get system arp

Address Age(min) Hardware Addr Interface


10.10.1.3 1 50:b7:c3:75:ea:dd internal7
192.168.0.190 0 28:f1:0e:03:2a:97 wan1
192.168.0.97 0 f4:f2:6d:37:b0:99 wan1

To view the ARP cache in the system:

# diagnose ip arp list

index=14 ifname=internal7 10.10.1.3 50:b7:c3:75:ea:dd state=00000004 use=2494 confirm=1995


update=374 ref=3
index=5 ifname=wan1 192.168.0.190 28:f1:0e:03:2a:97 state=00000002 use=88 confirm=86
update=977639 ref=2
index=22 ifname=internal 192.168.1.111 00:0c:29:c6:79:3d state=00000004 use=3724
confirm=9724 update=3724 ref=0
index=5 ifname=wan1 224.0.1.140 01:00:5e:00:01:8c state=00000040 use=924202 confirm=930202
update=924202 ref=1
index=5 ifname=wan1 192.168.0.97 f4:f2:6d:37:b0:99 state=00000002 use=78 confirm=486

FortiOS 6.4.6 Administration Guide 1872


Fortinet Technologies Inc.
Troubleshooting

update=614 ref=26
index=14 ifname=internal7 10.10.1.11 state=00000020 use=172 confirm=1037790 update=78 ref=2

ARP cache

The default ARP timeout value is 5 minutes (300 seconds), and can vary depending on the state of the ARP entry and 
the objects that are using it, as highlighted in the following output sample:
index=5 ifname=wan1 224.0.1.140 01:00:5e:00:01:8c state=00000040 use=924202
confirm=930202 update=924202 ref=1

There are multiple possible states for an ARP entry, and the state-transition mechanism can be complex. Common 
states include the following:

State Meaning Description

000000002 or 0x02 REACHABLE An ARP response was received

000000004 or 0x04  STALE No ARP response within the expected time

000000008 or 0x08 DELAY A transition state between STALE and REACHABLE  


before Probes are sent out

000000020 or 0x20 FAILED Did not manage to resolve within the maximum  


configured number of probes

000000040 or 0x40 NOARP Device does not support ARP, e.g. IPsec interface

000000080 or 0x80 PERMANENT A statically defined ARP entry

An entry that is in the STALE (0x04) or FAILED (0x20) states with no references to it (ref=0) can be deleted. Many factors 
affect the state-transmit mechanism and if an entry is used by other subsystems. For example, ARP creation, ARP 
request/reply, neighbor lookup, routing, and others can cause an ARP entry to be in use or referenced.
The garbage collection mechanism runs every 30 seconds, and checks and removes stale and unreferenced entries if 
they have been stale for longer than 60 seconds. Garbage collection will also be triggered when the number of ARP 
entries exceeds the configured threshold. If the threshold is exceeded, no entries can be added to the ARP table.

To set the maximum number of ARP entries threshold:

config system global


set arp-max-entry <integer>
end

arp-max-entry <integer> The maximum number of dynamically learned MAC addresses that can be added 
to the ARP table (131072 - 2147483647, default = 131072

To clear all of the entries in the ARP table:

execute clear system arp table

To delete a single ARP entry from the ARP table:

diagnose ip arp delete <interface name> <IP address>

FortiOS 6.4.6 Administration Guide 1873


Fortinet Technologies Inc.
Troubleshooting

To add static ARP entries:

config system arp-table


edit 1
set interface "internal"
set ip 192.168.50.8
set mac bc:14:01:e9:77:02
next
end

To view a summary of the ARP table:

# diagnose sys device list root

list virtual firewall root info:


ip4 route_cache: table_size=65536 max_depth=2 used=31 total=34
arp: table_size=16 max_depth=2 used=5 total=6
proxy_arp: table_size=256 max_depth=0 used=0 total=0
arp6: table_size=32 max_depth=1 used=3 total=3
proxy_arp6: table_size=256 max_depth=0 used=0 total=0
local table version=00000000 main table version=0000002b
vf=root dev=root vrf=0
vf=root dev=ssl.root vrf=0
...
vf=root dev=internal5 vrf=0
ses=0/0 ses6=0/0 rt=0/0 rt6=0/0

IP address

You may want to verify the IP addresses assigned to the FortiGate interfaces are what you expect them to be. 

To verify IP addresses:

diagnose ip address list

The output  lists the:
 l IP address and mask (if available) 
 l index of the interface (a type of ID number) 
 l  devname (the interface name)
While physical interface names are set, virtual interface names can vary. A good way to use this command is to list all of 
the virtual interface names.  For vsys_ha and vsys_fgfm, the IP addresses are the local host, which are virtual 
interfaces that are used internally. 

Sample output:

# diagnose ip address list


IP=10.31.101.100->10.31.101.100/255.255.255.0 index=3 devname=internal
IP=172.20.120.122->172.20.120.122/255.255.255.0 index=5 devname=wan1
IP=127.0.0.1->127.0.0.1/255.0.0.0 index=8 devname=root
IP=127.0.0.1->127.0.0.1/255.0.0.0 index=11 devname=vsys_ha
IP=127.0.0.1->127.0.0.1/255.0.0.0 index=13 devname=vsys_fgfm

FortiOS 6.4.6 Administration Guide 1874


Fortinet Technologies Inc.
Troubleshooting

FortiGuard troubleshooting

The FortiGuard service provides updates to AntiVirus (AV), Antispam (AS), Intrusion Protection Services (IPS), 
Webfiltering (WF), and more. The FortiGuard Distribution System (FDS) consists of a number of servers across the 
world that provide updates to your FortiGate unit. Problems can occur with the connection to FDS and its configuration 
on your local FortiGate unit. 
Some of the more common troubleshooting methods are listed here, including:
 l Troubleshooting process for FortiGuard updates on page 1876
 l FortiGuard server settings on page 1876
 l FortiGuard server settings on page 1876

Verifying connectivity to FortiGuard

You can verify FortiGuard connectivity in the GUI and CLI.

To verify FortiGuard connectivity in the GUI:

 1. Got to Dashboard > Status.


 2. Check the Licenses widget. When FortiGate is connected to FortiGuard, a green check mark appears next to the 
available FortiGuard services.

To verify FortiGuard connectivity in the CLI:

execute ping service.fortiguard.net


execute ping update.fortiguard.net

Sample output:

FG100D# execute ping service.fortiguard.net


PING guard.fortinet.net (208.91.112.196): 56 data bytes
64 bytes from 208.91.112.196: icmp_seq=0 ttl=51 time=61.0 ms
64 bytes from 208.91.112.196: icmp_seq=1 ttl=51 time=60.0 ms
64 bytes from 208.91.112.196: icmp_seq=2 ttl=51 time=59.6 ms
64 bytes from 208.91.112.196: icmp_seq=3 ttl=51 time=58.9 ms
64 bytes from 208.91.112.196: icmp_seq=4 ttl=51 time=59.2 ms

--- guard.fortinet.net ping statistics ---


5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 58.9/59.7/61.0 ms

FG100D# execute ping update.fortiguard.net


PING fds1.fortinet.com (208.91.112.68): 56 data bytes
64 bytes from 208.91.112.68: icmp_seq=0 ttl=53 time=62.0 ms
64 bytes from 208.91.112.68: icmp_seq=1 ttl=53 time=61.8 ms
64 bytes from 208.91.112.68: icmp_seq=2 ttl=53 time=61.3 ms
64 bytes from 208.91.112.68: icmp_seq=3 ttl=53 time=61.9 ms
64 bytes from 208.91.112.68: icmp_seq=4 ttl=53 time=61.8 ms

FortiOS 6.4.6 Administration Guide 1875


Fortinet Technologies Inc.
Troubleshooting

Troubleshooting process for FortiGuard updates

The following process shows the logical steps you should take when troubleshooting problems with FortiGuard updates: 
 1. Does the device have a valid license that includes these services?
Each device requires a valid FortiGuard license to access updates for some or all of these services. You can verify 
the status of the support contract for your devices at the Fortinet Support website.
 2. If the device is part of a high availability (HA) cluster, do all members of the cluster have the same level of
support?
You can verify the status of the support contract for all of the devices in your HA cluster at the Fortinet Support 
website.
 3. Are services enabled on the device?
To see the FortiGuard information and status for a device in the GUI, go to System > FortiGuard.
Use this page to verify the status of each component, and enable each service. 
 4. Can the device communicate with FortiGuard servers?
Go to System > FortiGuard in the GUI,  and try to update AntiVirus and IPS, or test the availability of Web Filtering 
and AS default and alternate ports.
 5. Is there proper routing to reach the FortiGuard servers?
Ensure there is a static or dynamic route that allows your FortiGate to reach the FortiGuard servers. Usually a 
generic default route to the internet is enough, but you may need to verify this if your network is complex.
 6. Are there issues with DNS?
An easy way to test this is to attempt a traceroute from behind the FortiGate to an external network using the Fully 
Qualified Domain Name (FQDN) for a location. If the traceroute FQDN name doesn't resolve, you have general 
DNS problems.
 7. Is there anything upstream that might be blocking FortiGuard traffic, either on the network or ISP side?
Many firewalls block all ports, by default, and ISPs often block ports that are low. There may be a firewall between 
the FortiGate and the FortiGuard servers that's blocking the traffic. By default, FortiGuard uses port 53. If that port is 
blocked you need to either open a hole for it or change the port it is using.
 8. Is there an issue with source ports?
It is possible that ports that FortiGate uses to contact FortiGuard are being changed before they reach FortiGuard or 
on the return trip before they reach FortiGate. A possible solution for this is to use a fixed-port at NAT'd firewalls to 
ensure the port remains the same. You can use packet sniffing to find more information about what's happening with 
ports.
 9. Are there security policies that include antivirus?
If none of the security policies include antivirus, the antivirus database will not be updated. If antivirus is included, 
only the database type that's used will be updated.

FortiGuard server settings

Your local FortiGate connects to remote FortiGuard servers to get updates to FortiGuard information, such as new 
viruses that may have been found or other new threats. 
This section provides methods to display FortiGuard server information on your FortiGate, and how to use that 
information and update it to fix potential problems. 

FortiOS 6.4.6 Administration Guide 1876


Fortinet Technologies Inc.
Troubleshooting

Displaying the server list

To get a list of FDS servers FortiGate uses to send web filtering requests:

get webfilter status

or
diagnose debug rating

Rating requests are only sent to the server at the top of the list in normal operation. Each server is probed for Round Trip 
Time (RTT) every two minutes. Rating may not be enabled on your FortiGate. 
Optionally, you can add a refresh rate to the end of the command to determine how often the server list is refreshed.

Sample output:

Locale : english
License : Contract
Expiration : Thu Oct 9 02:00:00 2011
-=- Server List (Mon Feb 18 12:55:48 2008) -=-
IP Weight RTT Flags TZ Packets CurrLost TotalLost
a.b.c.d 0 1 DI 2 1926879 0 11176
10.1.101.1 10 329 1 10263 0 633
10.2.102.2 20 169 0 16105 0 80
10.3.103.3 20 182 0 6741 0 776
10.4.104.4 20 184 0 5249 0 987
10.5.105.5 25 181 0 12072 0 178

Output details

The server list includes the IP addresses of alternate servers if the first entry cannot be reached. In this example, the IP 
addresses are not public addresses.
The following flags in get webfilter status indicate the server status:

Flag Description
D The server was found through the DNS lookup of the hostname. 
If the hostname returns more than one IP address, all of them are flagged with D and are used first 
for INIT requests before falling back to the other servers.
I The server to which the last INIT request was sent
F The server hasn't responded to requests and is considered to have failed
T The server is currently being timed
S Rating requests can be sent to the server.
The flag is set for a server only in two cases:
 l The server exists in the servers list received from the (Undefined variable: 
FortinetVariables.ProductName1) or any other INIT server.
 l The server list received from the (Undefined variable: FortinetVariables.ProductName1) is 
empty so the (Undefined variable: FortinetVariables.ProductName1) is the only server that the 
(Undefined variable: FortinetVariables.ProductName6) knows and it should be used as the 
rating server.

FortiOS 6.4.6 Administration Guide 1877


Fortinet Technologies Inc.
Troubleshooting

Sorting the server list

The server list is sorted first by weight. The server with the smallest RTT appears at the top of the list, regardless of 
weight. When a packet is lost (there has been no response in 2 seconds), it is re-sent to the next server in the list. 
Therefore, the top position in the list is selected based on RTT, while the other positions are based on weight.

Calculating weight

The weight for each server increases with failed packets and decreases with successful packets. To lower the possibility 
of using a remote server, the weight isn't allowed to dip below a base weight. The base weight is calculated as the 
difference in hours between the FortiGate and the server multiplied by 10. The farther away the server is, the higher its 
base weight is and the lower it appears in the list.

Additional resources

To learn more about FortiGate and FortiOS, as well information about technical issues, please refer to the following 
resources:

Technical documentation

Installation, Administration, and Quick Start Guides, as well as other technical documents, are available online at the 
Fortinet Document Library

Fortinet video library

The Fortinet Video Library hosts a collection of video which provide valuable information about Fortinet products.

Release notes

Issues that arise after the technical documentation has been published will often be listed in the Release Notes. To find 
these, go to the Fortinet Document Library.

Knowledge base

The Fortinet Knowledge Base provides access to a variety of articles, white papers, and other documentation that 
provides technical insight into a range of Fortinet products. The Knowledge Base is available online at: 
http://kb.fortinet.com

Fortinet technical discussion forums

An online technical forum allows administrators to contribute to discussions about issues that relate to their Fortinet 
products. Searching the forum can help an administrator identify if an issue has been experienced by another user. You 

FortiOS 6.4.6 Administration Guide 1878


Fortinet Technologies Inc.
Troubleshooting

can access the support forums  at: https://forum.fortinet.com/

Fortinet training services online campus

The Fortinet Training Services Online Campus hosts a collection of tutorials and training materials which you can use to 
increase your knowledge of Fortinet products. https://www.fortinet.com/training.html

Fortinet Support

You defined your problem, researched a solution, put together a plan to find the solution, and executed that plan. At this 
point, if the problem hasn't been solved, it's time to contact Fortinet Support for assistance. 

FortiOS 6.4.6 Administration Guide 1879


Fortinet Technologies Inc.
Copyright© 2021 Fortinet, Inc. All rights reserved. Fortinet®, FortiGate®, FortiCare® and FortiGuard®, and certain other marks are registered trademarks of Fortinet, Inc., in the
U.S. and other jurisdictions, and other Fortinet names herein may also be registered and/or common law trademarks of Fortinet. All other product or company names may be
trademarks of their respective owners. Performance and other metrics contained herein were attained in internal lab tests under ideal conditions, and actual performance and
other results may vary. Network variables, different network environments and other conditions may affect performance results. Nothing herein represents any binding
commitment by Fortinet, and Fortinet disclaims all warranties, whether express or implied, except to the extent Fortinet enters a binding written contract, signed by Fortinet’s
General Counsel, with a purchaser that expressly warrants that the identified product will perform according to certain expressly-identified performance metrics and, in such
event, only the specific performance metrics expressly identified in such binding written contract shall be binding on Fortinet. For absolute clarity, any such warranty will be
limited to performance in the same ideal conditions as in Fortinet’s internal lab tests. In no event does Fortinet make any commitment related to future deliverables, features or
development, and circumstances may change such that any forward-looking statements herein are not accurate. Fortinet disclaims in full any covenants, representations, and
guarantees pursuant hereto, whether express or implied. Fortinet reserves the right to change, modify, transfer, or otherwise revise this publication without notice, and the most
current version of the publication shall be applicable.

You might also like