FortiProxy
FortiProxy provides enterprise-class protection against internet-borne threats and Advanced Web Content Caching
sahmed_FTNT
Staff & Editor
Staff & Editor
Article Id 414917
Description This article describes how to configure FortiProxy in transparent mode to allow traffic without any changes on the user browser. With a minimum configuration, FortiProxy can be deployed without any changes made on the end user's site. This also helps administrators to inspect traffic and apply UTM compliance in larger environments.
Scope FortiProxy.
Solution

The following topology is used for deployment:

 

Drawing (1).png

 

The topology above can be used by the end user to route WAN traffic as per the requirement, the traffic originating from the  end-user is in Transparent mode with UTM inspection option and with minimum routing change with no browser settings changes required

 

Step 1:

 

LAN interface configuration:

 

config system interface
    edit "port2"
        set vdom "root"
        set ip 10.30.40.1 255.255.255.0
        set allowaccess ping https http
        set type physical
        set snmp-index 2
    next
end

 

WAN interface configuration:

 

config system interface
    edit "port1"
        set vdom "root"
        set ip 10.9.11.217 255.255.240.0
        set allowaccess ping https ssh http telnet
        set type physical
        set snmp-index 1
    next
end

 

step1.png

 

Step 2:

 

Routing configuration:

 

config router static
    edit 1
        set status enable
        set dst 0.0.0.0 0.0.0.0
        set gateway 10.9.15.254
        set weight 0
        set priority 1
        set device "port1"
        set comment ''
    next
end

 

step 2.png

 

Step 3:

 

FortiProxy policy configuration:

 

config firewall policy
    edit 1
        set uuid fb2d5420-a7eb-51f0-f628-1c0367dbb24d
        set srcintf "port2"
        set dstintf "port1"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
end

 

step5.png

 

Step 4:

 

Verify the internet on the end user:

 

step4.png

 

For traffic flow confirmation:

 

Packet sniffer:

 

diag sniffer packet any ' icmp ' 4 0 l
interfaces=[any]
filters=[ icmp ]
2025-10-13 15:00:42.079866 port2 in 10.30.40.2 -> 1.1.1.1: icmp: echo request
2025-10-13 15:00:42.079901 port1 out 10.9.11.217 -> 1.1.1.1: icmp: echo request
2025-10-13 15:00:42.086416 port1 in 1.1.1.1 -> 10.9.11.217: icmp: echo reply
2025-10-13 15:00:42.086448 port2 out 1.1.1.1 -> 10.30.40.2: icmp: echo reply

 

Debug flow filter:

 

diagnose debug reset

diagnose debug console timestamp enable

diagnose debug flow show function-name enable
diagnose debug flow trace start 50

diagnose debug enable

 

Proxy# 2025-10-13 15:03:33 id=20085 trace_id=29 func=__dump_flowi4 line=54 msg="ip_route_input_slow:2241 flowi4 saddr=10.30.40.2 daddr=1.1.1.1 sport=0 dport=0 iif=4 oif=0 proto=0 mark=0x0 flag=0x0 ready to route packet"
2025-10-13 15:03:33 id=20085 trace_id=29 func=ip_route_input_slow line=2251 msg="route found type=1 table_id=254 pol_route=0"
2025-10-13 15:03:34 id=20085 trace_id=29 func=ip_forward line=165 msg="proceed with forwarding skb"
2025-10-13 15:03:34 id=20085 trace_id=29 func=shared_shaper_handler line=737 msg="ct 000000008b47f1f8 forward shaper <none>(0000000000000000) result accept"
2025-10-13 15:03:35 id=20085 trace_id=29 func=shaper_handler line=836 msg="shaping check finished for ct 000000008b47f1f8, result accept"
2025-10-13 15:03:35 id=20085 trace_id=30 func=print_pkt_detail line=112 msg="vd-root at hook-fpx_setup_flow_pre_route received a packet(proto=1, 1.1.1.1:0->10.9.11.217:0) from port1. type=0, code=0, id=1, seq=15043."
2025-10-13 15:03:36 id=20085 trace_id=30 func=ip_route_input_slow line=2173 msg="start input route 1.1.1.1->10.30.40.2 dev port1 vfid 0"
2025-10-13 15:03:36 id=20085 trace_id=30 func=__dump_flowi4 line=54 msg="ip_route_input_slow:2241 flowi4 saddr=1.1.1.1 daddr=10.30.40.2 sport=0 dport=0 iif=3 oif=0 proto=0 mark=0x0 flag=0x0 ready to route packet"
2025-10-13 15:03:37 id=20085 trace_id=30 func=ip_route_input_slow line=2251 msg="route found type=1 table_id=254 pol_route=0"
2025-10-13 15:03:37 id=20085 trace_id=30 func=ip_forward line=165 msg="proceed with forwarding skb"
2025-10-13 15:03:38 id=20085 trace_id=30 func=shared_shaper_handler line=737 msg="ct 000000008b47f1f8 reverse shaper <none>(0000000000000000) result accept"
2025-10-13 15:03:38 id=20085 trace_id=30 func=shaper_handler line=836 msg="shaping check finished for ct 000000008b47f1f8, result accept"
2025-10-13 15:03:39 id=20085 trace_id=31 func=print_pkt_detail line=112 msg="vd-root at hook-fpx_setup_flow_pre_route received a packet(proto=1, 10.30.40.2:0->1.1.1.1:0) from port2. type=8, code=0, id=1, seq=15044."