Technical Tip: Configuring and troubleshooting an IKEv2 site-to-site VPN between Cisco FlexVPN with smart defaults and a FortiGate using VTI
| Description | This article describes how to configure, diagnose, and troubleshoot an IKEv2 site-to-site IPsec VPN between a Cisco router and a FortiGate firewall using a route-based (VTI) design. It also documents the whole troubleshooting process with real command-line outputs, highlighting the differences between a non-working and a working deployment. |
| Scope | FortiGate 7.2.x to 7.4.x, and 7.4.x to 7.6.x. |
| Solution |
FortiGate IKEv2 implementation overview:
FortiGate implements a standards-compliant IKEv2 stack aligned with RFC 7296.
Cisco FlexVPN Smart Defaults – Initial Behavior:
Cisco FlexVPN Smart Defaults automatically negotiate IKEv2 and IPsec parameters.
Troubleshooting Logic Overview:
The troubleshooting process follows this strict order:
Phase 1 diagnostics must always be validated first, as Phase 2 negotiation cannot occur unless the IKE SA is fully established.
FortiGate command:
High-level tunnel status (FortiGate).
Command:
get vpn ipsec tunnel summary
Working scenario output:
'CISCO-FLEXVPN' 192.168.12.2:0 selectors(total,up): 1/1 rx(pkt,err): 28/0 tx(pkt,err): 28/0
Interpretation (working):
Non-working scenario (typical):
'CISCO-FLEXVPN' 192.168.12.2:0 selectors(total,up): 1/0 rx(pkt,err): 0/0 tx(pkt,err): 0/0
Interpretation (non-working):
Cisco command:
Working scenario output:
Tunnel-id Local Remote Status
Interpretation (working):
Non-working scenario (typical indicators):
Interpretation (non-working):
Phase 2 Diagnostics – IPsec / Child SA (initial failure).
FortiGate command:
diagnose vpn tunnel list
Non-working output excerpt:
Interpretation:
Packet Capture Analysis – Non-Working State. WAN-Side Capture (Non-Working).
FortiGate command:
diagnose sniffer packet port1 "host 192.168.12.2 and (udp port 500 or udp port 4500 or esp)" 4 0 a
Observed output:
Interpretation:
FortiGate command:
diagnose sniffer packet CISCO-FLEXVPN "icmp" 4 0 a
Observed output: 0 packets received by filter. Interpretation:
Root cause identification.
The root cause was identified as:
The following adjustments were required.
Cisco:
FortiGate:
Phase 2 Verification – working state.
FortiGate command:
diagnose vpn tunnel list
Working output example
status=up
Interpretation:
Packet Capture Analysis – working state. WAN-Side Capture (Working).
FortiGate command:
diagnose sniffer packet port1 "host 192.168.12.2 and esp" 4 0 a
Observed output:
192.168.12.2 -> 192.168.12.1: ESP
Interpretation:
Tunnel Interface Capture (Working).
FortiGate command:
diagnose sniffer packet CISCO-FLEXVPN "icmp" 4 0 a
Observed output:
172.16.12.2 -> 172.16.12.1: icmp echo request
Interpretation:
Connectivity verification:
Cisco:
ping 172.16.12.1 source 172.16.12.2
FortiGate:
execute ping 172.16.12.2
Both directions succeed.
Interoperability notes:
Conclusion: |

