Если кто-то использует quagga (OSPF) и планирует сделать балансировку каналов, через которые работает OSPF, используя Shorewall, прошу под кат.

Итак, сама проблема


Есть у нас нормально работающий OSPF, который прекрасно обменивается маршрутами, и все хорошо. Но вот вы решили, что вам нужен второй провайдер, а для улучшения ситуации с QoS, вы применили что-то на подобие LXC на службе QoS (заменяем ifb на veth) (начали балансировку на интерфейсах с OSPF). Тут у вас и случится проблема: при вполне нормальных и живых каналах, маршрутах и т.п. quagga не проставляет маршруты в таблицу маршрутизации. Что еще больше смущает, команда в vtysh: show ip osfp route показывает все маршруты, а в show ip route эти маршруты стоят в статусе inactive route.

Причина


Оказалось, что виноват «Shorewall», который на интерфейсах с балансировкой добавляет лишние маршруты вида:

10.0.11.0/24 dev eth1  proto kernel  scope link  src 10.0.11.2
10.0.11.1 dev eth1  scope link  src 10.0.11.2  <============= Вот и проблема
10.0.12.0/24 dev eth2  proto kernel  scope link  src 10.0.12.2
10.0.12.1 dev eth2  scope link  src 10.0.12.2 <============= Она второй раз

Встретив такое, quagga теряется, и не устанавливает маршруты проходящие через такое.

Решение


Небольшой скрипт, который будем выполнять при запуске shorewall:

/usr/local/bin/shorewall-prov-fix.sh
#!/bin/bash
IF=$(eval $(for i in $(grep -v '^#' /etc/shorewall/params);do echo -e "$i \c";done;echo '') envsubst < <( grep -v '^#' /etc/shorewall/providers ) | cut -d$'\t' -f 5)
for IF_ in $IF; do
	IP=$(ip a s $IF_ | grep 'inet ' | cut -d ' ' -f 6 |sed -e 's/\/.*$//')
	SRC=$(ip route show dev $IF_ scope link src $IP |grep -v kernel)
	eval "ip route del dev $IF_ $SRC scope link src $IP"
done

И пропишем его в:

/etc/shorewall/started
/usr/local/bin/shorewall-prov-fix.sh  > /dev/null 2>&1

P.S.


Подсказку на решение удалось найти далеко не сразу, но вот ссылка на соответствующий источник.
Поделиться с друзьями
-->

Комментарии (2)


  1. n1kkk1ros
    07.09.2016 10:41

    Может все таки OSPF? Бооьно уж глаза режет


    1. MagicGTS
      07.09.2016 10:41

      Спасибо, на руках автоматом очеаятка идет.