BIRD vs Quagga или, проблемы с OSPF

Статическая и динамическая, протоколы

BIRD vs Quagga или, проблемы с OSPF

Сообщение cemka » 10 ноя 2016, 19:46

Здравствуйте Уважаемые!
Прошу Вас помощи, т.к рунет не особо "пестрит" русскоязычными мануалами по настройке "Птички".
В общем ситуация следующая:
Имеются сети на микротиках, все микротики подключаются к центральному микротику по L2TP, и обмениваются с ним маршрутами по OSPF. Интерфейсы выставлены в тип p-t-p, вся маршрутная информация в одной area (backbone). Все работает замечательно, вопросов и проблем каких-либо не возникает, но, среди микротиков есть "белая ворона", PC маршрутизатор на Debian со своей сетью за ним.
Debian так же подключен к центральному микротику по L2TP. Стояла на дебиане Quagga - в ней все работает замечательно, принимает все сети от центрального микротика по OSPF и анонсирует в ответ информацию о сети за собой.

Решил я как-то на Debian переехать с Quagga на BIRD (т.к в нем есть поддержка нескольких таблиц маршрутизации, а в quagga нет), и тут столкнулся с проблемой. Сеть из микротиков видит сети пришедшие от Debian в OSPF как AS External (LSA type 5), и не помещает данные сети в таблицу маршрутизации. В случае с Quagga - все определяется как надо, сети от дебиана классифицируются как intra area.

В общем вот конфиг BIRD с которым наблюдается проблема:
cat /etc/bird.conf | grep -v ^# | grep -v ^$

Код: Выделить всё
timeformat base     iso long;
timeformat log      iso long;
timeformat protocol iso long;
timeformat route    iso long;
log "/var/log/bird.log" all;
log stderr all;
filter import_OSPF {
        if ( source = RTS_OSPF && net != 0.0.0.0/0 && net != 10.10.0.1/32 ) then {
        print "net accepted:", net;
        accept;
        }
        reject;
}
filter export_OSPF {
        if net = 192.168.100.0/24 then {
        ospf_metric2 = 25;
        accept;
        }
        reject;
}
table rostelecom;
table orion_telecom;
protocol direct {
        debug all;
        interface "br0";        # Restrict network interfaces it works with
}
protocol kernel {
        learn;
        import all;
        persist off; # Don’t remove routes on bird shutdown
        scan time 20; # Scan kernel routing table every 20 seconds
        export all; # Default is export none
}
protocol kernel {
        table orion_telecom;
        learn;
        scan time 20;
        kernel table 101;
        export all;
}
protocol kernel {
        table rostelecom;
        learn;
        scan time 20;
        kernel table 102;
        export all;
}
protocol device {
        scan time 2;            # Scan interfaces every 10 seconds
}
protocol pipe {
        table orion_telecom;
        peer table master;
        import all;
}
protocol pipe {
        table rostelecom;
        peer table master;
        import all;
}
protocol ospf MyOSPF {
        router id 192.168.100.100;
        export filter export_OSPF;
        import filter import_OSPF;
        debug all;
        tick 2;
        rfc1583compat yes;
        area 0.0.0.0 {
                stub no;
                interface "ppp0.gygol.loc" {
                        hello 10;
                        retransmit 5;
                        cost 10;
                        transmit delay 1;
                        dead count 4;
                        wait 40;
                        type pointopoint;
                };
               };
        };


Вот что в OSPF Routes на Микротике

Код: Выделить всё
[admin@Master] > routing ospf route print
 # DST-ADDRESS        STATE          COST                   GATEWAY         INTERFACE               
 0 10.10.0.1/32       intra-area     200                    10.10.0.2       L2TP1   
                                                                           10.10.0.3       L2TP2
                                                                           10.10.0.5       L2TP3   
                                                                           10.10.0.6       L2TP4         
                                                                           10.10.0.7       L2TP5       
                                                                           10.10.0.8       L2TP6       
                                                                           10.10.0.9       L2TP7
                                                                           10.10.0.10      L2TP8         
 1 10.10.0.2/32       intra-area     100                    0.0.0.0         L2TP1   
 2 10.10.0.3/32       intra-area     100                    0.0.0.0         L2TP2
 3 10.10.0.4/32       intra-area     100                    0.0.0.0         L2TP_DEBIAN       
 4 10.10.0.5/32       intra-area     100                    0.0.0.0         L2TP3   
 5 10.10.0.6/32       intra-area     100                    0.0.0.0         L2TP4         
 6 10.10.0.7/32       intra-area     100                    0.0.0.0         L2TP5       
 7 10.10.0.8/32       intra-area     100                    0.0.0.0         L2TP6       
 8 10.10.0.9/32       intra-area     100                    0.0.0.0         L2TP7
 9 10.10.0.10/32      intra-area     100                    0.0.0.0         L2TP8         
10 10.10.0.11/32      intra-area     100                    0.0.0.0         L2TP9       
11 10.10.1.1/32       intra-area     250                    10.10.0.2       L2TP1   
                                                                          10.10.0.3       L2TP2
                                                                          10.10.0.5       L2TP3   
                                                                          10.10.0.6       L2TP4         
                                                                          10.10.0.7       L2TP5       
                                                                          10.10.0.8       L2TP6       
                                                                          10.10.0.9       L2TP7
12 10.10.1.2/32       intra-area     160                    192.168.254.2   ipip_to_slave       
13 10.10.1.3/32       intra-area     160                    192.168.254.2   ipip_to_slave       
14 10.10.1.5/32       intra-area     160                    192.168.254.2   ipip_to_slave       
15 10.10.1.6/32       intra-area     160                    192.168.254.2   ipip_to_slave       
16 10.10.1.7/32       intra-area     160                    192.168.254.2   ipip_to_slave       
17 10.10.1.8/32       intra-area     160                    192.168.254.2   ipip_to_slave       
18 10.10.1.9/32       intra-area     160                    192.168.254.2   ipip_to_slave       
19 192.168.35.0/24    inter-area     110                    10.10.0.9       L2TP7
20 192.168.40.0/24    inter-area     110                    10.10.0.8       L2TP6       
21 192.168.41.0/24    inter-area     110                    10.10.0.7       L2TP5       
22 192.168.42.0/24    inter-area     110                    10.10.0.6       L2TP4         
23 192.168.43.0/24    inter-area     110                    10.10.0.5       L2TP3   
24 192.168.44.0/24    inter-area     110                    10.10.0.3       L2TP2
25 192.168.45.0/24    inter-area     110                    10.10.0.2       L2TP1   
26 192.168.46.0/24    inter-area     160                    192.168.254.2   ipip_to_slave       
27 192.168.55.0/24    intra-area     100                    0.0.0.0         LAN master (ether3)     
28 192.168.60.0/24    intra-area     110                    10.10.0.10      L2TP8         
[b]29 192.168.100.0/24   ext-2          25                    [/b]
30 192.168.250.0/24   inter-area     110                    10.10.0.6       L2TP4         
31 192.168.254.0/30   intra-area     150                    0.0.0.0         ipip_to_slave       


Вот конфиг Quagga, с которым нет данной проблемы (прошу не пинать, уверен, что в нем есть ошибки):

Код: Выделить всё
root@debian:/home# cat /etc/quagga/ospfd.conf | grep -v ^! | grep -v ^$
hostname ospfd-router
password *****
enable password *****
log file /var/log/quagga/ospfd.log
interface eth0
 description Orionnet.ru
interface eth1
 description LAN
interface eth2
interface lo
interface ppp0
interface ppp0.gygol.loc
 description ppp0.gygol.loc
 ip ospf cost 10
interface ppp1
interface ppp1.wsthdd.ru
router ospf
 ospf router-id 192.168.100.100
 redistribute kernel route-map TO-OSPF
 redistribute connected route-map TO-OSPF
 redistribute static route-map TO-OSPF
 network 10.10.0.0/28 area 0.0.0.0
 network 192.168.100.0/24 area 0.0.0.0
 distribute-list WSTHDD out kernel
 distribute-list WSTHDD out connected
 distribute-list WSTHDD out static
access-list WSTHDD deny 192.168.55.0/24
ip prefix-list ospf-new seq 10 permit 192.168.100.0/24 le 32
ip prefix-list ospf-new seq 20 permit 192.168.10.0/24 le 32
ip prefix-list ospf-new seq 30 permit 10.10.0.0/28 le 32
ip prefix-list ospf-new seq 40 deny any
route-map TO-OSPF permit 10
 match ip address prefix-list ospf-new
line vty
root@debian:/home#



Если останавливаю BIRD и запускаю Quagga - то на микротике следующая картина, и все работает:

Код: Выделить всё
[admin@Master] > routing ospf route print
 # DST-ADDRESS        STATE          COST                               GATEWAY         INTERFACE                           
 0 10.10.0.1/32       intra-area     110                                10.10.0.4       L2TP_DEBIAN                   
 1 10.10.0.2/32       intra-area     100                                0.0.0.0         L2TP1               
 2 10.10.0.3/32       intra-area     100                                0.0.0.0         L2TP2             
 3 10.10.0.4/32       intra-area     100                                0.0.0.0         L2TP_DEBIAN                   
 4 10.10.0.5/32       intra-area     100                                0.0.0.0         L2TP3               
 5 10.10.0.6/32       intra-area     100                                0.0.0.0         L2TP4                   
 6 10.10.0.7/32       intra-area     100                                0.0.0.0         L2TP5                   
 7 10.10.0.8/32       intra-area     100                                0.0.0.0         L2TP6                 
 8 10.10.0.9/32       intra-area     100                                0.0.0.0         L2TP7         
 9 10.10.0.10/32      intra-area     100                                0.0.0.0         L2TP8                   
10 10.10.0.11/32      intra-area     100                                0.0.0.0         L2TP9                   
11 10.10.1.1/32       intra-area     250                                10.10.0.2       L2TP1               
                                                                                        10.10.0.3       L2TP2             
                                                                                        10.10.0.5       L2TP3               
                                                                                        10.10.0.6       L2TP4                   
                                                                                        10.10.0.7       L2TP5                   
                                                                                        10.10.0.8       L2TP6                 
                                                                                        10.10.0.9       L2TP7         
12 10.10.1.2/32       intra-area     160                                192.168.254.2   ipip_to_slave                   
13 10.10.1.3/32       intra-area     160                                192.168.254.2   ipip_to_slave                   
14 10.10.1.5/32       intra-area     160                                192.168.254.2   ipip_to_slave                   
15 10.10.1.6/32       intra-area     160                                192.168.254.2   ipip_to_slave                   
16 10.10.1.7/32       intra-area     160                                192.168.254.2   ipip_to_slave                   
17 10.10.1.8/32       intra-area     160                                192.168.254.2   ipip_to_slave                   
18 10.10.1.9/32       intra-area     160                                192.168.254.2   ipip_to_slave                   
19 192.168.35.0/24    inter-area     110                                10.10.0.9       L2TP7         
20 192.168.40.0/24    inter-area     110                                10.10.0.8       L2TP6                 
21 192.168.41.0/24    inter-area     110                                10.10.0.7       L2TP5                   
22 192.168.42.0/24    inter-area     110                                10.10.0.6       L2TP4                   
23 192.168.43.0/24    inter-area     110                                10.10.0.5       L2TP3               
24 192.168.44.0/24    inter-area     110                                10.10.0.3       L2TP2             
25 192.168.45.0/24    inter-area     110                                10.10.0.2       L2TP1               
26 192.168.46.0/24    inter-area     160                                192.168.254.2   ipip_to_slave                   
27 192.168.55.0/24    intra-area     100                                0.0.0.0         LAN master (ether3)                 
28 192.168.60.0/24    intra-area     110                                10.10.0.10      L2TP8                   
[b]29 192.168.100.0/24   intra-area     110                                10.10.0.4       L2TP_DEBIAN     [/b]               
30 192.168.250.0/24   inter-area     110                                10.10.0.6       L2TP4                   
31 192.168.254.0/30   intra-area     150                                0.0.0.0         ipip_to_slave                   


Люди добрые, подскажите пожалуйста где я допустил ошибку?
cemka
проходил мимо
 
Сообщения: 1
Зарегистрирован: 10 ноя 2016, 18:42

Re: BIRD vs Quagga или, проблемы с OSPF

Сообщение root » 11 ноя 2016, 09:12

В подобных проблемах сложно разбираться удаленно, но попробовать можно.
Надо нарисовать схему, на которой отобразить все роутеры и подсети за ними. Визуализация уже половина решения проблемы.

cemka писал(а): Сеть из микротиков видит сети пришедшие от Debian в OSPF как AS External (LSA type 5), и не помещает данные сети в таблицу маршрутизации

Ниверю.
Код: Выделить всё
>ip route print

В студию.

BIRD + Микрот у нас в сети:
Код: Выделить всё
> ip route print
...skiped...
10 91.217.137.ХХХ/32   ext-2          10000                                                        10.255.255.22   core-02
...skiped...
 > routing ospf route print
...skiped...
19  Do  91.217.137.ХХХ/32                   10.255.255.22           110
...skiped...

А что показывает
Код: Выделить всё
# birdc show route for 192.168.100.0/24

?
Настройки OSPF и фильтров на микроте ?
Какая версия BIRD ?

Добавил бы networks {10.10.0.0/24}; в area 0.0.0.0
Добавил бы дебага в ospf:
Код: Выделить всё
debug { states, interfaces, events, routes };


Фильтры я бы мальца переделал.
Пример:
Код: Выделить всё
function bogons()
prefix set bogons_list;
{
    bogons_list = [ 172.16.0.0/12+, 192.168.0.0/16+, 10.0.0.0/8+,
               169.254.0.0/16+, 224.0.0.0/4+, 240.0.0.0/4+ ];
    if net ~ bogons_list then return true;
    return false;
}
filter inbound {
        ...skiped...
        if (bogons()) then reject "Reject bogons";
        ...skiped...
        accept;
}
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia


Вернуться в Маршрутизация / Routing

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7