У меня есть виртуальный ящик FreeBSD 8.0 с двумя интерфейсами Ethernet, em0 и em1. em0 - 192.168.1.99, а em1 - 192.168.1.100. Оба "прикреплены к: Bridged Adapter
".
Когда оба встают, если я скажу
# route add default 192.168.1.1
# netstat -rn
# default 192.168.1.1 UGS 1 6 em0
Все идет нормально. Он выбрал em0.
# ifconfig em0 down
# route delete 0.0.0.0
# route add default 192.168.1.1
# netstat -rn
# default 192.168.1.1 UGS 1 6 *em0*
Хорошо. Так что по-прежнему выбирает em0 (должно быть, действительно нравится), даже если он не работает. Я тестировал, и если я выберу другой ip (скажем, 10.0.0.1) для em0, он выберет em1 для маршрута.
Это заставляет меня задуматься: как я могу заставить freebsd выбрать em1 в качестве исходящего интерфейса? Я помню, что в Linux мы могли сделать это с помощью dev
аргумент.
P.S. Я пробовал использовать опцию -interface - не повезло. Я попытался
# route add default 192.168.1.1 -interface 192.168.1.100
# route add default 192.168.1.1 -interface em1
Результат был
0.0.0.0&0xc0a80164 192.168.1.1 US 0 0 em0 =>
Я использую FreeBSD 8.0-STABLE. Любая помощь будет оценена по достоинству.
РЕДАКТИРОВАТЬ: В Debian Lenny тот же набор операций правильно выбирает интерфейс, который вверх как исходящий интерфейс. Когда оба встали
route add default gw 192.168.1.1
выбирает маршрут eth2 добавляет по умолчанию gw 192.168.1.1 dev eth0 выбирает eth0
Так что должен быть способ добиться этого во FreeBSD, верно?
Вам нужно использовать -ifp
флаг, а не -interface
.
Похоже, вам нужны два IP-адреса и резервные соединения. В этом случае вы хотите создать адаптер LAGG, присоедините его к двум сетевым адаптерам и поместите IP-адреса в интерфейс LAGG.
Если это не так, можете ли вы точно описать, чего пытаетесь достичь?
Вам следует взглянуть на «Link Aggregation and Failover» в Руководстве FreeBSD здесь https://www.freebsd.org/doc/handbook/network-aggregation.html