If you've spent any time configuring user authentication on... Full Story
By Manny Fernandez
July 30, 2024
TCP Encpsulation of ESP Packets for VPN Tunnels
Have you ever worked with international customers that have governments that block IPsec traffic on the standard UDP 500 and 4500 into the country? If you are running FortiGates, you can get around it. Fortinet can encapsulate the ESP protocol packets inside a TCP header as well as IKE packets.
NOTE: This will only work with IKEv2 and will NOT work with ADVPN
First, a refresher on IPSec VPNs
With a traditional IPSec Tunnel you have an initial IKE (Internet Key Exchange) connection which establishes the secure connection to the far end. There are to phases used to build the tunnel:
Phase 1 – In this phase, we establish an ISAKMP (Internet Security Association and Key Managament) session. In this phase, we negotiate authentication, hashing algorithms, encryption schemes, etc. When this is done, these parameters form an SA (Security Association). This Phase 1 is used for tunnel managment. This happens on UDP port 500 and for NAT-T it is UDP 4500.
Phase II – Within this secure tunnel, we then establish the second part of the tunnel which is IKE Phase II refered to as the IPsec Tunnel. In this phase, you identify what networks/IPs will be exchanged and they both must agree.
ESP – Once the tunnel is estabished, you now start to send traffic over ESP or AH. Normally it Is ESP.
This is an oversimplification of the the IPSec VPN process.
Lets get started. You can either use the VPN wizard on the FortiGate or you can create one from scratch on the cli. I like to control my objects and normally use the cli.
Setting up the ike-tcp-port on the FortiGate. This will only affect the tunnels where you set the transport to TCP , the default is UDP.
Before:
config system settings
"this commands is not present" set ike-tcp-port 443
After:

I created the VPN tunnel using the default configuration so that I can test that everything was working as planned. Once it was tested and I could ping across, I changed the transport on both side of the Phase1-interface.
![]()
Once both sides were configured, we can see that the tunnel came up as planned.

Using a standard ipsec debug (see my troubleshooting ipsec post)
![]()
Here we can see that port 443 is being used by iked.
Remember that all other components of the VPN need to be in place (policies, routes, objects, etc)
In FortiOS 7.6 the option is available in the UI.

Hope this helps.
Recent posts
-
-
DNS is one of those technologies that quietly underpins... Full Story
-
BGP issues on FortiGate firewalls usually trace back to... Full Story
-
Every time your laptop talks to your router, a... Full Story
-
If you've spent any time configuring NAT on a... Full Story
-
If you have spent any time configuring firewall policies... Full Story
-
High availability on FortiGate is one of those features... Full Story
-
If you've configured SD-WAN on a FortiGate, you've almost... Full Story
-
FortiLink is the management protocol that turns a FortiSwitch... Full Story
-
FortiSwitches are pretty rock solid from Mean Time Between... Full Story
-
This is a quicky tip. Have you ever gone... Full Story
-
DNS is one of those quiet pieces of internet... Full Story
-
This article is an updated version of the previous... Full Story
-
You will add ns2 as a secondary (slave) BIND9... Full Story
-
In the process of deploying my lab, I needed... Full Story
-
RFC 8805, used to be known as Self-Correcting IP... Full Story
-
Years back, I wrote an article about certificate pinning. ... Full Story
-
FortiGates have the ability to send alerts to Microsoft... Full Story
-
In this post, I am going to walk through... Full Story
-
Troubleshooting VoIP on a FortiGate can feel like trying... Full Story
-
Prior to FortiOS 7.0, there were three commands to... Full Story
-
In this post, I am going to go over... Full Story
-
What we are going to do: We are going... Full Story
-
Choosing between FGCP (FortiGate Clustering Protocol) and FGSP (FortiGate... Full Story
-
Creating a VLAN on macOS (The "Pro" Move) A... Full Story
-
This blog post explores the logic behind how macOS... Full Story
-
Pretty Fly for a Wi-Fi Tell My Wi-Fi Love... Full Story
-
Part of my daily gig is creating BoMs (Bill-of-Materials)... Full Story
-
ICMP introduces several security risks, but careful filtering, rate... Full Story
-
The command diag debug application dhcps -1 enables full... Full Story
-
In the world of FortiOS, execute tac report is... Full Story
-
LLDP; What is it The Link Layer Discovery Protocol... Full Story
-
What it actually does When you run diagnose fdsm... Full Story
-
Monkey Bites are bite-sized, high-impact security insights designed for... Full Story
-
I have run macOS in macOS with Parallels but... Full Story
-
Don't be confused with my other FortiNAC posts where... Full Story
-
This is the third session in a multi-part article... Full Story
-
Today I was configuring key-based authentication on a FortiGate... Full Story
-
Netcat, often called the "Swiss Army knife" of networking,... Full Story
-
At its core, IEEE 802.1X is a network layer... Full Story
-
In case you did not see the previous FortiNAC... Full Story
-
This is our 5th session where we are going... Full Story
-
Now that we have Wireshark installed and somewhat configured,... Full Story
-
The Philosophy of Packet Analysis Troubleshooting isn't about looking... Full Story
-
Overview FortiOS 8.0 introduces custom tags as a first-class... Full Story
-
These are two distinct mechanisms on FortiOS, and conflating... Full Story
-
Replacement messages are the pages and text blocks that... Full Story