Created on
04-21-2025
06:34 AM
Edited on
04-28-2025
10:33 PM
By
Anthony_E
Description | This article indicates that the reason FortiGate does not send a reply to the client is that the IP Pool includes the client's IP, and arp-reply is enabled. |
Scope | FortiGate v6.4.16, v7.0.13, v7.2.6 and v7.4.1. |
Solution |
The client (10.10.10.10) initiates the traffic. FortiGate allows the traffic and also receives the reply from the server, however the FortiGate does not forward the reply to the client.
Sniffer shows the behavior:
2025-04-20 14:34:09.461964 VLAN 321 in 10.10.10.10 -> 8.8.4.4: icmp: echo request
This is because the FortiGate has an IP Pool that includes the client IP address, with arp-reply enabled.
config firewall ippool
Note: By default, arp-reply is enabled.
When the arp-reply is enabled, FortiGate considers the IP included in that IP Pool as a local address: Technical Tip: ARP reply setting in Virtual IP/IP Pool
For this reason, the reply will be forwarded to the root, and as a result, the client will not receive the reply from the server. The below debug flow shows the behavior.
Traffic initiated by the client and processed by FortiGate:
2025-04-20 14:39:45 id=20085 trace_id=1000 func=print_pkt_detail line=5953 msg="vd-root:0 received a packet(proto=1, 10.10.10.10:1->8.8.4.4:2048) tun_id=0.0.0.0 from VLAN 321. type=8, code=0, id=1, seq=53."
Note: Double SNAT due to the client IP being included in the IP Pool.
The reply from the server is received by the FortiGate and forwarded to the root instead of the client.
2025-04-20 14:39:45 id=20085 trace_id=1001 func=print_pkt_detail line=5953 msg="vd-root:0 received a packet(proto=1, 8.8.4.4:60417->12.106.165.50:0) tun_id=0.0.0.0 from port1. type=0, code=0, id=60417, seq=53."
The scenario below shows when the arp-reply is disabled, and the traffic is sent directly to the client:
config firewall ippool
Sniffer:
2025-04-20 15:17:05.733839 VLAN 321 in 10.10.10.10 -> 8.8.4.4: icmp: echo request
Debug flow:
2025-04-20 14:40:16 id=20085 trace_id=1008 func=print_pkt_detail line=5953 msg="vd-root:0 received a packet(proto=1, 10.10.10.10:1->8.8.4.4:2048) tun_id=0.0.0.0 from VLAN 321. type=8, code=0, id=1, seq=57."
Reply from server:
2025-04-20 14:40:16 id=20085 trace_id=1009 func=print_pkt_detail line=5953 msg="vd-root:0 received a packet(proto=1, 8.8.4.4:60417->12.106.165.50:0) tun_id=0.0.0.0 from port1. type=0, code=0, id=60417, seq=57."
The solution is to remove the client IP from the IP Pool if it is not needed; otherwise, disable the arp-reply for the IP Pool.
Technical Tip: IP pool and virtual IP behavior changes in FortiOS 6.4, 7.0, 7.2, and 7.4 |
The Fortinet Security Fabric brings together the concepts of convergence and consolidation to provide comprehensive cybersecurity protection for all users, devices, and applications and across all network edges.
Copyright 2025 Fortinet, Inc. All Rights Reserved.