FortiGate Practice Lab — Configuration Reference

Topology: EXT-USER — INET-R1 — FortiGate (port1/2/3/4) — SW1 — PC1/PC2 | DMZ-SRV on port3

Interface Zone IP Gateway
port1 outside / WAN 203.0.113.2/28 203.0.113.1
port2 inside / LAN 192.168.1.1/24
port3 dmz 172.16.10.1/24
port4 mgmt (DHCP) via DHCP
Host IP
PC1 192.168.1.10
PC2 192.168.1.11
DMZ-SRV 172.16.10.10
EXT-USER 198.51.100.10
Public VIP 203.0.113.10

1. Interfaces

config system interface
    edit "port1"
        set alias "outside"
        set mode static
        set ip 203.0.113.2 255.255.255.240
        set allowaccess ping
        set role wan
    next
    edit "port2"
        set alias "inside"
        set mode static
        set ip 192.168.1.1 255.255.255.0
        set allowaccess ping https ssh
        set role lan
    next
    edit "port3"
        set alias "dmz"
        set mode static
        set ip 172.16.10.1 255.255.255.0
        set allowaccess ping
        set role dmz
    next
    edit "port4"
        set mode dhcp
        set allowaccess https http ping ssh
        set role lan
    next
end

2. DNS

config system dns
    set primary 8.8.8.8
    set secondary 1.1.1.1
end

3. Default Route

config router static
    edit 1
        set gateway 203.0.113.1
        set device "port1"
    next
end

4. Firewall Address Objects

config firewall address
    edit "INSIDE_NET"
        set subnet 192.168.1.0 255.255.255.0
    next
    edit "DMZ_NET"
        set subnet 172.16.10.0 255.255.255.0
    next
    edit "DMZ-SRV"
        set subnet 172.16.10.10 255.255.255.255
    next
    edit "EXT-USER"
        set subnet 198.51.100.10 255.255.255.255
    next
end

5. VIP — DNAT (203.0.113.10 → 172.16.10.10)

config firewall vip
    edit "VIP-DMZ-SRV"
        set extip 203.0.113.10
        set extintf "port1"
        set mappedip "172.16.10.10"
        set portforward disable
    next
end

6. Firewall Policies

# Name Src Intf Dst Intf Action NAT
1 INSIDE-TO-INET port2 port1 accept yes
2 INSIDE-TO-DMZ port2 port3 accept no
3 INET-TO-DMZ-VIP port1 port3 accept no
4 EXTUSER-TO-DMZ-ONLY port1 port3 accept no
5 DENY-DMZ-TO-INSIDE port3 port2 deny no
config firewall policy
    edit 1
        set name "INSIDE-TO-INET"
        set srcintf "port2"
        set dstintf "port1"
        set srcaddr "INSIDE_NET"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set nat enable
        set logtraffic all
    next
    edit 2
        set name "INSIDE-TO-DMZ"
        set srcintf "port2"
        set dstintf "port3"
        set srcaddr "INSIDE_NET"
        set dstaddr "DMZ_NET"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
    edit 3
        set name "INET-TO-DMZ-VIP"
        set srcintf "port1"
        set dstintf "port3"
        set srcaddr "all"
        set dstaddr "VIP-DMZ-SRV"
        set action accept
        set schedule "always"
        set service "HTTP" "HTTPS"
        set logtraffic all
    next
    edit 4
        set name "EXTUSER-TO-DMZ-ONLY"
        set srcintf "port1"
        set dstintf "port3"
        set srcaddr "EXT-USER"
        set dstaddr "DMZ-SRV"
        set action accept
        set schedule "always"
        set service "HTTP" "HTTPS"
        set logtraffic all
    next
    edit 5
        set name "DENY-DMZ-TO-INSIDE"
        set srcintf "port3"
        set dstintf "port2"
        set srcaddr "DMZ_NET"
        set dstaddr "INSIDE_NET"
        set action deny
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
end

7. Management GUI Access (port4)

port4 is set to DHCP and connected to a CML External Connector bridge so the host machine can reach the web GUI.

config system interface
    edit "port4"
        set mode dhcp
        set allowaccess https http ping ssh
        set role lan
    next
end

Check the assigned IP after boot:

get system interface physical

Then browse to https://<port4-ip> from your host machine and accept the self-signed cert warning.


8. Verification Commands

# Interface IPs and status
get system interface physical

# Routing table
get router info routing-table all

# Active sessions
diagnose sys session list

# Policy hit counts
diagnose firewall iprope show 100004

# Test outbound from FortiGate
execute ping 8.8.8.8

# Test outbound sourced from outside IP
execute ping-options source 203.0.113.2
execute ping 8.8.8.8

# Live flow debug
diagnose debug flow filter addr 198.51.100.10
diagnose debug flow show function-name enable
diagnose debug flow trace start 50
diagnose debug enable

# Stop debug
diagnose debug disable
diagnose debug flow trace stop

9. Stretch Goals

Web Filter on Inside-to-Internet

config webfilter profile
    edit "INSIDE-WEBFILTER"
        config ftgd-wf
            config filters
                edit 1
                    set category 62
                    set action block
                next
            end
        end
    next
end

config firewall policy
    edit 1
        set webfilter-profile "INSIDE-WEBFILTER"
        set ssl-ssh-profile "certificate-inspection"
    next
end

IPS on DMZ Inbound Policy

config ips sensor
    edit "DMZ-IPS"
        config entries
            edit 1
                set severity medium high critical
                set action drop
            next
        end
    next
end

config firewall policy
    edit 3
        set ips-sensor "DMZ-IPS"
    next
end

10. Factory Reset

Wipes everything and returns to factory defaults. Use when starting over.

execute factoryreset

Type y to confirm. Device reboots. Log back in with admin / blank password and set a new password when prompted.