Dead Gateway Detection is feature like the backup or reduntant ISP service.
In case we have 2 ISP connections to internet – a backup line with smaller bandwith and another used normally – we can use one as a backup internet connection.
The topology:
1.1.1.0/24 | | Firewall | | | 2.2.2.0/24 | | | DFGW1 2.2.2.254 | | | 8.8.8.8 | 3.3.3.0/24 | DFGW2 3.3.3.254 | 9.9.9.9 |
– Server or Host used for destination to ping on
port1: 8.8.8.8
port2: 9.9.9.9
– Default gateway on
port1: 2.2.2.254
port2: 3.3.3.254
– Interface IP on
port1: 2.2.2.1
port2: 3.3.3.1
port3: 1.1.1.1
1. PING Server configuration.
firewall (root) # show full-configuration router gwdetect
config router gwdetect
edit "port1"
set failtime 5
set ha-priority 1
set interval 5
set protocol ping
set server "8.8.8.8"
set source-ip 0.0.0.0
next
edit "port2"
set failtime 5
set ha-priority 1
set interval 5
set protocol ping
set server "9.9.9.9"
set source-ip 0.0.0.0
next
end
|
2. Default routes with different priority. The smallest priority will be used.
firewall (root) # show full-configuration router static
config router static
edit 1
set blackhole disable
set comment ''
set device "port1"
set distance 10
set dst 0.0.0.0 0.0.0.0
set dynamic-gateway disable
set gateway 2.2.2.254
set priority 0
set weight 0
next
edit 2
set blackhole disable
set comment ''
set device "port2"
set distance 10
set dst 0.0.0.0 0.0.0.0
set dynamic-gateway disable
set gateway 3.3.3.254
set priority 100
set weight 0
next
end
|
3. Interface configuration.
firewall (root) # show sys interface port1
config system interface
edit "port1"
set vdom "root"
set ip 2.2.2.1 255.255.255.0
set allowaccess ping https ssh fgfm
set fail-detect enable
set fail-detect-option detectserver
set type physical
set spillover-threshold 1
set alias "external1"
set macaddr 00:0c:29:00:7c:76
next
end
firewall (root) # show sys interface port2
config system interface
edit "port2"
set vdom "root"
set ip 3.3.3.1 255.255.255.0
set allowaccess https ssh fgfm
set fail-detect enable
set fail-detect-option detectserver
set type physical
set alias "external2"
set macaddr 00:0c:29:00:7c:80
next
end
|
Lets test it, how it works.
Set the Ping server configured on Port1 down (8.8.8.8)
firewall (root) # get router info routing-table all
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default
S* 0.0.0.0/0 [10/0] via 3.3.3.254, port2, [100/0]
C 1.1.1.0/24 is directly connected, port3
C 2.2.2.0/24 is directly connected, port1
C 3.3.3.0/24 is directly connected, port2
|
We will see that the default route goes on port2.
Set the Ping server configured on port1 up.
firewall (root) # get router info routing-table all
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default
S* 0.0.0.0/0 [10/0] via 2.2.2.254, port1
[10/0] via 3.3.3.254, port2, [100/0]
C 1.1.1.0/24 is directly connected, port3
C 2.2.2.0/24 is directly connected, port1
C 3.3.3.0/24 is directly connected, port2
|
The default route is on port1 again. The question that I cannot answer now:
– If the second default route is on a different interface and the currently used ISP line goes down (the ping host is not pingable anymore), then what happens with the active sessions? With Cisco ASA the sessions cannot survive if the default gateway is on another interface, with Checkpoint it works fine. What is with Fortigate in this case? Is the interface in the session table or not?
Ralph
November 25, 2012
Hello, when the route goes down, then for existing sessions a new route will be determined.
itsecworks
November 28, 2012
Thanks for your answer! That means Fortigate does not uses the interface in its session table (or it uses but it can update it..)