Bug #10397
closedChanging default or static route gateway on 2.5.0 does not remove old route
0%
Description
2.5.0 has multi-path (RADIX_MPATH) enabled in its kernel (#9544) which allows multiple routes to the same destination to exist in the routing table.
This leads to a problem when changing the default gateway on system_gateways.php. When the user selects a different default gateway, then saves and applies changes, the old default is not removed:
WAN gateway selected as default:
: netstat -rn4 | grep default default 198.51.100.1 UGS em0
Default changed to WAN2 gateway, then save/apply:
: netstat -rn4 | grep default default 198.51.100.1 UGS em0 default 203.0.113.1 UGS em2
The second route must be removed by hand (e.g. route delete default 198.51.100.1
), or a reboot would also clear it.
Updated by Jim Pingle over 4 years ago
- Subject changed from Changing default gateway on 2.5.0 does not remove old default to Changing default or static route gateway on 2.5.0 does not remove old route
This also affects static routes. Changing a route gateway does not remove the old route.
Updated by Viktor Gurov over 4 years ago
Jim Pingle wrote:
This also affects static routes. Changing a route gateway does not remove the old route.
It is possible to add parser to route_add_or_change() to delete existing route on change,
but it is better to fix it in FreeBSD
simple example from route(8) is not working:
EXAMPLES ... Add a static route to the 172.16.10.0/24 network via the 172.16.1.1 gate- way: route add -net 172.16.10.0/24 172.16.1.1 Change the gateway of an already established static route in the routing table: route change -net 172.16.10.0/24 172.16.1.2
Test:
# route add -net 172.16.10.0/24 172.16.1.1 add net 172.16.10.0: gateway 172.16.1.1 # route change -net 172.16.10.0/24 172.16.1.2 route: route has not been found change net 172.16.10.0: gateway 172.16.1.2 fib 0: not in table
Updated by Luiz Souza about 4 years ago
This is correct and working as intended.
With the multi-path routes, the gateway cannot be changed, but all other options can be changed and for that, you must specify the correct entry which, in a multi-path scenario, includes the specific gateway.
pfSense must be updated/changed to accommodate the necessary steps to remove the old gateway before adding a new route.
Updated by Renato Botelho about 4 years ago
- Status changed from Confirmed to Feedback
It should be fixed on recent 2.5.0 snapshots
Updated by Alhusein Zawi about 4 years ago
when changing the default route , old route is removed .
[2.5.0-DEVELOPMENT][admin@pfSense.localdomain]/root: netstat -rn4 | grep default
default 10.0.2.2 UGS em0
[2.5.0-DEVELOPMENT][admin@pfSense.localdomain]/root: netstat -rn4 | grep default
default 192.168.20.100 UGS em2
[2.5.0-DEVELOPMENT][admin@pfSense.localdomain]/root: netstat -rn4 | grep default
default 10.0.2.2 UGS em0
fixed.
Updated by Alhusein Zawi about 4 years ago
- Status changed from Feedback to Resolved
Updated by → luckman212 about 4 years ago
Were there any commits to pfSense to fiz this or were all the changes from upstream FreeBSD?
Updated by Renato Botelho about 4 years ago
→ luckman212 wrote:
Were there any commits to pfSense to fiz this or were all the changes from upstream FreeBSD?
It was fixed reworking functions related to route table on pfSense. Main commit is this c428cdf436cc9e407e64fd550be96bb0ecad3fb3
Updated by → luckman212 about 4 years ago
Wow that's a monster commit. Thank you rbgarga!