A secure enterprise network built in GNS3 with FortiGate VM firewalls. The lab demonstrates segmentation, high availability, site-to-site and remote-access VPNs, NAT, next-generation security profiles, a DMZ web service, and centralized FortiGate logging.
- VLAN-based segmentation for HQ users, servers, DMZ, branch users, HA management, and VPN transit networks
- Inter-VLAN routing and least-privilege FortiGate policies between security zones
- Active-passive FortiGate HA with configuration synchronization
- Dynamic NAT/PAT, port-forwarding static NAT, DHCP, and routing
- Route-based IPsec site-to-site VPN between HQ and the branch
- SSL-VPN configuration for remote access
- IPS, Web Filtering, Application Control, and certificate inspection
- FortiGate syslog collection with Splunk on Ubuntu Server
| Zone | Subnet | Key address |
|---|---|---|
| HQ users | 10.10.10.0/24 |
Gateway 10.10.10.1 |
| HQ servers | 10.10.20.0/24 |
Splunk 10.10.20.10 |
| HQ DMZ | 10.10.30.0/24 |
Nginx 10.10.30.10 |
| Branch users | 10.20.10.0/24 |
Gateway 10.20.10.1 |
| VPN transit | 172.16.255.0/30 |
HQ .1, branch .2 |
| HA management | 192.168.40.0/24 |
Primary .2, secondary .3 |
| Lab WAN | 192.168.133.0/24 |
HQ 192.168.133.131 |
The base configuration provides segmented VLAN interfaces, routing, security policies, NAT, DHCP, IPsec, and NGFW inspection profiles.
The primary is running active-passive HA in group 10 and reports a healthy cluster.
The replacement secondary booted successfully, joined the cluster, and synchronized with the primary.
HQ and branch clients obtained DHCP leases. Traffic passed in both directions after the IPsec tunnel negotiated.
FortiGate sends UDP syslog from 10.10.20.1 to port 5514. The Ubuntu receiver is active and real FortiGate events are arriving for Splunk ingestion.
The remote-access user group, tunnel address pool, portal, and SSL-VPN-to-HQ policy are configured.
The Ubuntu DMZ server uses 10.10.30.10/24; Nginx is active and returns HTTP 200 OK internally.
The VIP maps WAN TCP port 8080 to Nginx on 10.10.30.10:80, and the FortiGate can reach the DMZ host.
- GNS3
2.2.xand the GNS3 VM with enough RAM for the selected nodes - FortiGate VM/KVM
7.0.xappliance installed in GNS3 - Ubuntu Server 24.04 for the DMZ and Splunk nodes
- Splunk Enterprise for Linux
FortiGate, Ubuntu, Splunk, and other appliance images are intentionally not included. Obtain and license them from their official publishers.
- Import
project/FortiGate-NGFW-Lab.gns3into GNS3 and resolve nodes against your installed appliance templates. - Start the switches and
FG-HQ, then applyconfigs/01_FG-HQ_PRIMARY_BASE.conf. - Apply
configs/02_FG-HQ_PRIMARY_ENABLE_HA.confto the primary. - Start
FG-HQ-SECONDARYand applyconfigs/03_FG-HQ_SECONDARY_JOIN_HA.conf. - Start the branch nodes and apply
configs/04_FG-BRANCH.conf. - Configure the HQ and branch VPCS clients with
ip dhcpand test the IPsec tunnel. - Build the DMZ server with
configs/07_DMZ_WEB_SERVER_SETUP.md. - Apply
configs/08_FG-HQ_DMZ_STATIC_NAT.confafter Nginx responds internally. - Install the UDP receiver described in
splunk/README.md, then applyconfigs/05_FG-HQ_Splunk_Syslog.conf. - Apply
configs/06_FG-HQ_SSL-VPN.confafter VLAN, HA, and IPsec tests pass.
These are deliberately simple, public, lab-only credentials. Do not reuse them outside an isolated practice environment.
| Account | Username | Password |
|---|---|---|
| FortiGate administrator | admin |
FortiLab123! |
| Ubuntu servers | labadmin |
FortiLab123! |
| Splunk administrator | admin |
FortiLab123! |
| SSL-VPN user | labvpn |
FortiLab123! |
| HA cluster key | — | FortiLab-HA-2026 |
| IPsec pre-shared key | — | FortiLab-IPsec-2026 |
HA synchronization, DHCP, bidirectional IPsec traffic, Nginx, internal DMZ reachability, NGFW profiles, and FortiGate syslog delivery were verified. Static NAT and SSL-VPN are configured. A live external Internet/FortiClient test still requires selecting and mapping the correct GNS3 Cloud/NAT adapter on the machine importing the project; that host-specific mapping is not portable in a .gns3 file.
configs/ FortiGate configuration stages and DMZ instructions
docs/screenshots/ Topology plus one verification image for each config stage
project/ Portable GNS3 topology file (no appliance images)
splunk/ UDP 5514 receiver and Splunk monitor configuration








