Pull to refresh

OSPF (Quagga), Shorewall и Policy Routing: проблема inactive route

Reading time 2 min
Views 4.3K
Если кто-то использует 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=$(grep -v -e '^#' -e '^?' /etc/shorewall/providers | sort -u -t $'\t' -k1,1 | cut -d$'\t' -f 5 | eval $(for i in $(grep -v -e '^#' -e '^\[' /etc/shorewall/params);do echo -e "$i \c";done;echo '') envsubst)
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.


Подсказку на решение удалось найти далеко не сразу, но вот ссылка на соответствующий источник.
Tags:
Hubs:
+8
Comments 2
Comments Comments 2

Articles