LINUX.ORG.RU
ФорумAdmin

Настройка bird под bgp, для анонса ipv6 блока.

 , ,


0

1

Доброго времени суток. Помогите плиз с настройкой bird. Купли мы блок ipv6, зарегали свою AS. С провойдером/цод договорились что он откроет в нашу сторону BGP сессию, теперь настал наш черёд, промучился я несколько дней с квагой, решил попробовать bird. Не могу завести хоть ты тресни, то одно то другое. Инфы не очень много в интернете, да и касается она вся ipv4, но я как мог набрасывал конфиг в том числе и с помощью форума. Буду признателен за помощь. Если кто-то готов помочь только на денежной основе, то готов рассмотреть.

Небольшая схемка для понимания структуры: https://ibb.co/yWFFgvh

netplan

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: no
      dhcp6: no
      addresses:
        - 91.238.82.45/31
        - 2a0f:9440:0001:0064:0000:0000:0000:0002/126
        - 2a0c:4181::1/32
      gateway4: 91.238.82.44
      gateway6: 2a0f:9440:0001:0064:0000:0000:0000:0001
      nameservers:
        addresses: [ 8.8.8.8, 8.8.4.4 ]
      routes:
        - to: 2a0f:9440:1:64::/126
          via: 2a0f:9440:0001:0064:0000:0000:0000:0001
          metric: 100

/etc/bird/bird6.conf

log syslog all;

#router id 192.168.1.5;    

protocol device {
        scan time 10;
}

debug commands 2;

timeformat route "%F %T";

protocol direct {
    interface "enp1s0";
}

protocol kernel {
        export all;
        scan time 15;
}

protocol static static1 {
#       disabled;               # Disable by default
#       table testable;         # Connect to a non-default table
        preference 254; # Default preference of routes
#       debug { states, routes, filters, interfaces, events, packets };
#       debug all;
        route 2a0c:4181::/32 via "lo";
}


filter BGP_ISP1_in {
        if  net =  ::/0  then {
        print "BGP_ISP1 : default route accepted:", net;
            accept;
        }
        reject;
};

filter BGP_ISP1_out {
        if net = 2a0c:4181::/32 then {
            accept;
        }
        reject;
};

protocol bgp {
        table master;
        router id 2a0f:9440:1:64::2;
#       disabled;
        description "BGP-ISP1";
        local as 56434; 
        neighbor 2a0f:9440:0001:0064:0000:0000:0000:0001 as 62240;
#       bfd;
        hold time 240;
        startup hold time 240;
        connect retry time 120;
        keepalive time 80;      # defaults to hold time / 3
#        keepalive time 10;      # defaults to hold time / 3
        connect delay time 5;     # How long do we wait before initial connect
        error wait time 60, 300;# Minimum and maximum time we wait after an error (when consecutive
                                # errors occur, we increase the delay exponentially ...
        error forget time 300;  # ... until this timeout expires)
#       disable after error;    # Disable the protocol automatically when an error occurs
        next hop self;          # Disable next hop processing and always advertise our local address as nexthop
        path metric 1;          # Prefer routes with shorter paths (like Cisco does)
        default bgp_med 0;      # MED value we use for comparison when none is defined
#        default bgp_local_pref 100;       # The same for local preference
#        source address 91.238.82.45;    # What local address we use for the TCP connection
        export filter BGP_ISP1_out;
        import filter BGP_ISP1_in;

ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 2a0c:4181::ff/32 scope global 
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ac:1f:6b:8b:48:d4 brd ff:ff:ff:ff:ff:ff
    inet 91.238.82.45/31 brd 255.255.255.255 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet6 2a0c:4181::1/32 scope global 
       valid_lft forever preferred_lft forever
    inet6 2a0f:9440:1:64::2/126 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::ae1f:6bff:fe8b:48d4/64 scope link 
       valid_lft forever preferred_lft forever

На данный момент bird не запускается, ругается на директиву router id. Я пробовал в нескольких вариациях. Но он не в каком виде не хочет принимать, не понимаю что ему надо.

journalctl -xe

Nov 09 09:17:17 s59 bird6[2093]: /etc/bird/bird6.conf, line 49: Router IDs must be entered as hexadecimal numbers or IPv4 addresses in IPv6 version
Nov 09 09:17:17 s59 bird6[2093]: bird: /etc/bird/bird6.conf, line 49: Router IDs must be entered as hexadecimal numbers or IPv4 addresses in IPv6 version
Nov 09 09:17:17 s59 systemd[1]: bird6.service: Control process exited, code=exited status=1
Nov 09 09:17:17 s59 systemd[1]: bird6.service: Failed with result 'exit-code'.
Nov 09 09:17:17 s59 systemd[1]: Failed to start BIRD Internet Routing Daemon (IPv6).



Последнее исправление: cheg (всего исправлений: 2)

Nov 09 09:17:17 s59 bird6[2093]: bird: /etc/bird/bird6.conf, line 49: Router IDs must be entered as hexadecimal numbers or IPv4 addresses in IPv6 version

«IPv4 addresses in IPv6 version» означает что router-id должен быть вида 1.1.1.1(как IPv4-адрес). Да, даже для IPv6-соединений(подозреваю что router-id у протокола оставили неизменным длиной 4 байта).

Выдержка из мануала(мануал на версию 1.6, так как в 2.0 уже нет раздельных bird/bird6):

router id IPv4 address

    Set BIRD's router ID. It's a world-wide unique identification of your router, usually one of router's IPv4 addresses. Default: in IPv4 version, the lowest IP address of a non-loopback interface. In IPv6 version, this option is mandatory. 

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Спасибо. Поправил по вашим указаниям, вылезла другая ошибка но её тоже оперативно пофиксли. Я правильно понимаю, что BGP поднялся и всё ок?

bgp1     BGP      master   up     11:11:40    Established   
  Description:    BGP-ISP1
  Router ID:      91.238.82.45
  Preference:     100
  Input filter:   BGP_ISP1_in
  Output filter:  BGP_ISP1_out
  Routes:         0 imported, 1 exported, 0 preferred
  Route change stats:     received   rejected   filtered    ignored   accepted
    Import updates:         149665          0     149665          0          0
    Import withdraws:          289          0        ---     149954          0
    Export updates:              2          0          1        ---          1
    Export withdraws:            0        ---        ---        ---          0
  BGP state:          Established
    Neighbor address: 2a0f:9440:1:64::1
    Neighbor AS:      62240
    Neighbor ID:      91.199.118.0
    Neighbor caps:    refresh restart-aware AS4
    Session:          external AS4
    Source address:   2a0f:9440:1:64::2
    Hold timer:       69/90
    Keepalive timer:  5/80

cheg
() автор топика
Ответ на: комментарий от cheg

Если маршрут по умолчанию по BGP пришел - то да. В выхлопе видно что import updates были отброшены целиком, но маршрут по умолчанию часто особым образом обрабатывается, тут не подскажу - надо смотреть:

show route protocol bgp1

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от cheg

Значит скорее всего маршрут по умолчанию через BGP либо не пришел, либо был отфильтрован. Уточните у аплинка шлют ли они вообще дефолт по ipv6.

Можно оставить статикой конечно, но если аплинков 2 или больше и от обоих вы планируете принимать только маршрут по умолчанию, то тогда статика не имеет смысла - при падении линка не будет переключения маршрута на оставшийся.

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Задал, буду ждать ответа. Так как с цодом лагв ответе на тикет бывает до суток.

Насколько критичен маршрут для использования нашего блока в качестве ipv6 проксей? Просто я щас попробовал отправить запрос и он не сработал.

root@s59:~# curl -v --interface 2a0c:4181:078f:ba01:29b8:d5b8:fb6d:32e9 -k ip6.me/api/
*   Trying 216.115.184.69...
* TCP_NODELAY set
* Name '2a0c:4181:078f:ba01:29b8:d5b8:fb6d:32e9' family 2 resolved to '2a0c:4181:78f:ba01:29b8:d5b8:fb6d:32e9' family 10
* bind failed with errno 22: Invalid argument
*   Trying 2604:90:1:1::69...
* TCP_NODELAY set
* Hostname 2a0c:4181:078f:ba01:29b8:d5b8:fb6d:32e9 was found in DNS cache
* Name '2a0c:4181:078f:ba01:29b8:d5b8:fb6d:32e9' family 10 resolved to '2a0c:4181:78f:ba01:29b8:d5b8:fb6d:32e9' family 10
* Local port: 0
* Immediate connect fail for 2604:90:1:1::69: Network is unreachable
* Closing connection 0
curl: (7) bind failed with errno 22: Invalid argument

cheg
() автор топика
Ответ на: комментарий от cheg

Надо смотреть на всяких Looking glass. Например тут.

Пока что ситуация такая:

 Router: mskn13ra
Command: show bgp 2a0c:4181::1/32


Tue Nov  9 13:30:49.411 UTC
% Network not in table

То есть либо ваш маршрут не приняли, либо не передают дальше, либо он где-то режется у магистралов.

В RIPE записи для вашей AS корректны, а вот e AS62240 ваша не упоминается в списке связей - это может быть причиной фильтрации у магистралов.

Looking Glass у самой AS62240 похоже кастрированный - запросы на подробное состояние BGP там не послать - только ping/traceroute.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Супер, цод\провайдер на любой запрос отвечает, что бесплатно они этого делать не будут, ни дебажить не просто посмотреть)) Так как это не входит в обычный service plan.

cheg
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.