Zap
|
PhD
|
|
|
|
Рег.: 21.04.2006
|
Сообщений: 70
|
Из: Не в ГЗ, но близко
|
Рейтинг: 110
|
|
Как увидеть адрес gateway второстепенного интерфейса в FreeBSD
14.07.2012 13:35
|
|
|
Пишу, так как крыша едет от нелогичности ситуации и гугленья. Есть две сетевых карты и два провайдера. Оба выдают маршруты по DHCP. Один из них прописывает свой gateway в default route. Но второй, блин, выдает только IP и подсеть, а шлюз у него где? Как его отловить, чтобы потом в pf прописать policy based routing? Вот как выглядит таблица netstat -rn
code: Destination Gateway Flags Refs Use Netif Expire
default *.117.116.129 UGS 19 454519 re0
*.188.32.128/25 link#3 U 0 0 rl0
*.188.32.193 link#3 UHS 0 0 lo0
127.0.0.1 link#5 UH 0 6766 lo0
172.25.212.0/25 link#2 U 2 3329834 re1
172.25.212.1 link#2 UHS 0 0 lo0
*.117.112.0/20 *.117.116.129 UGS 0 26098 re0
*.117.116.128/25 link#1 U 0 1 re0
*.117.116.197 link#1 UHS 0 0 lo0
Вот на link#3 и проблема.
|
|
BorisL
|
постоянный отец
|
|
|
|
Рег.: 23.02.2004
|
Сообщений: 17631
|
Из: torrent.msu
|
Рейтинг: 3560
|
|
Re: Как увидеть адрес gateway второстепенного интерфейса в FreeBSD
[re: Zap]
14.07.2012 14:07
|
|
|
2 одинаковых префиксов в рамках одного FIB в FreeBSD не бывает. Скорее всего default gw от второго провайдера приезжает, но при попытке добавиться обламывается.
|
|
Zap
|
PhD
|
|
|
|
Рег.: 21.04.2006
|
Сообщений: 70
|
Из: Не в ГЗ, но близко
|
Рейтинг: 110
|
|
Re: Как увидеть адрес gateway второстепенного интерфейса в FreeBSD
[re: BorisL]
14.07.2012 15:49
|
|
|
Терминология: Первая сеть *.177.116.197. Вторая сеть *.188.32.193. Увы, но я не знаю что такое префик и FIB. Могу добавить, что месяц назад я мог выцепить второй шлюз, так как мне присылался какой-то маршрут по второй сети с указанием шлюза. Я правильно понимаю, что информация о втором шлюзе теряется на стадии получения настроек по DHCP и если я ее не выцеплю каким-нибудь dhclient-script, то потом ее уже не посмотреть?
|
|
BorisL
|
постоянный отец
|
|
|
|
Рег.: 23.02.2004
|
Сообщений: 17631
|
Из: torrent.msu
|
Рейтинг: 3560
|
|
Re: Как увидеть адрес gateway второстепенного интерфейса в FreeBSD
[re: Zap]
14.07.2012 21:01
|
|
|
Маршрут по умолчанию, в большинстве случаев, описывается префиксом 0.0.0.0/0. Двух одинаковых 0/0 в основной таблице маршрутизации в FreeBSD быть (пока) не может. Чтение про FIB можешь начать с setfib(1).
|
|
Zap
|
PhD
|
|
|
|
Рег.: 21.04.2006
|
Сообщений: 70
|
Из: Не в ГЗ, но близко
|
Рейтинг: 110
|
|
Re: Как увидеть адрес gateway второстепенного интерфейса в FreeBSD
[re: BorisL]
21.07.2012 16:44
|
|
|
Мне подошло все-таки больше залезть в /sbin/dhclient-script и дописать там такую вещь:
code: echo "`date '+%Y-%m-%d %H:%M:%S'` Reason = $reason, interface = $interface, medium = $medium, old_ip_address = $old_ip_address, new_ip_address = $new_
ip_address, new_routers = $new_routers" >> /var/log/dhcp.log
if [ -n $new_routers ]; then
echo "$new_routers" > /etc/router_$interface
if [ $reason = BOUND ] || [ $reason = RENEW ] || [ $reason = REBIND ] || [ $reason = REBOOT ]; then
echo "" > /etc/pf-both.conf
echo first_gw = `cat /etc/router_rl0` >> /etc/pf-both.conf
echo second_gw = `cat /etc/router_re0` >> /etc/pf-both.conf
cat /etc/pf.gen >> /etc/pf-both.conf
pfctl -f /etc/pf-both.conf
fi
fi
А именно записыватть в лог /var/log/dhcp.log все события, если был прислан адрес шлюза, то записать его в соответствующий файл по имени интерфейса. Затем, если новый шлюз появился, то собрать файл правил pf из адресов шлюзов и заготовленного куска и применить его через pfctl. Собственно теперь при смене настроек интерфейса по DHCP или перезагрузке собирается файл правил и сразу применяется. Решение ламерское, но может кому пригодится.
|
|