В FreeBSD ifconfig кажется, что вызов удаляет маршрут шлюза по умолчанию, даже если ему задан тот же IP-адрес (например, при обновлении только сетевой маски). Это ошибка или особенность?
Насколько я помню, Linux в этом случае не меняет шлюз по умолчанию.
Во FreeBSD ifconfig
который удаляет прямое подключение к подсети, также удаляет маршруты, содержащие эту подсеть (обновление сетевых масок IIRC сводится к удалению и замене). Это «особенность», позволяющая не запутать вашу конфигурацию маршрутизации, пытаясь поговорить с хостом, которого он больше не может достичь, хотя и вызывает определенную путаницу, когда пользователи сталкиваются с исчезающими маршрутами.
Смотрите также: http://forums.freebsd.org/showthread.php?t=12132
Я считаю, что это происходит потому, что команда ifconfig фактически удаляет старый IP-адрес и создает новый, а не просто меняет его. "Это особенность!"
Я искал способ сохранить маршрут к gw по умолчанию на месте, но, поскольку я увидел эту ветку и попробовал самостоятельно, думаю, выхода нет. Единственное, что мне нужно было сделать, это установить gw по умолчанию вручную сразу после установки ip:
sudo ifconfig eth0 10.0.0.2 subnet 255.255.255.0
sudo route add default gw 10.0.0.138
так что имейте в виду, если вы делаете это удаленно, лучше запустите обе команды с помощью &&, иначе вы застрянете
sudo ifconfig eth0 10.0.0.2 subnet 255.255.255.0 && sudo route add default gw 10.0.0.138