5

In FreeBSD, an ifconfig call seems to delete the default gateway route, even when given the same IP-address (e.g. when updating the netmask only). Is it a bug or a feature?
As fas as I remember Linux doesn't change the default gateway in this case.

Eugene Yarmash
  • 2,433
  • 5
  • 34
  • 54

3 Answers3

4

In FreeBSD an ifconfig that removes direct connectivity to a subnet also zaps routes containing that subnet (IIRC updating netmasks is reduced to a remove-and-replace). This is a "feature" so as not to confuse your routing configuration by trying to talk to a host it can't reach anymore, though it causes its share of confusion when users encounter disappearing routes.

See also: http://forums.freebsd.org/showthread.php?t=12132

voretaq7
  • 79,879
  • 17
  • 130
  • 214
  • 1
    Thanks. This is something to keep in mind when running `ifconfig` on a remote host. – Eugene Yarmash Jun 14 '10 at 18:58
  • 2
    Oh yes - I've been bitten enough times that I now set a safety reboot (`shutdown -r +10`) before doing any network-affecting stuff on a remote host. Great if you trust the machine to reboot correctly since if you break something it will come back with its boot-time config pretty quickly :) – voretaq7 Jun 14 '10 at 21:29
2

I believe this happens because the ifconfig command is actually deleting the old IP and creating the new one, not just changing it. "It's a feature!"

Jed Daniels
  • 7,282
  • 2
  • 34
  • 42
1

I was looking for a way to keep the route to default gw in place, but since I saw this thread and tried on my own I guess there's no way. The only thing I had to do is set default gw manually right after setting the ip:

sudo ifconfig eth0 10.0.0.2 subnet 255.255.255.0
sudo route add default gw 10.0.0.138

so keep in mind if you're doing this remotely better run both commands with && or you'll get stuck out

sudo ifconfig eth0 10.0.0.2 subnet 255.255.255.0 && sudo route add default gw 10.0.0.138
tutuDajuju
  • 110
  • 1
  • 7