BGP на Mikrotik

В дальнейшем используя интернет страницу cloudhosting.lv, вы соглашаетесь с правилами пользования Куки. Узнай больше. Согласен

BGP на Mikrotik

Включите IPv6 на вашем роутере

Первое, что мы сделаем, это включим IPv6 на нашем маршрутизаторе Mikrotik.

system package enable ipv6
system reboot 
y

Это перезагрузит компьютер, и когда он вернется, у него будет новое меню с именем IPv6.

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

/ip settings set arp-timeout=04:00:00

Определите IPv4- и IPv6-адреса ваших интерфейсов для IP-транзита, Perú IX (PIT Peru sac) (pitperu.net) и вашей внутренней сети.

Предположения для примера:

  • ASN, предоставленный LACNIC нашей организации, - AS 123456.
  • Блок IPv4, назначенный LACNIC, равен 100.100.100.0 / 22.
  • Блок IPv6, назначенный LACNIC, равен 2803: cd10 :: / 32
  • IPv4-адрес для соединения точка-точка провайдера IP-транзита198.51.100.2 / 30 (где оборудование на стороне провайдера IP-транзита, с которым мы будем выполнять BGP, 198.51.100.1)
  • IPv6-адрес для соединения точка-точка провайдера IP-транзита 2803: dd99: 1111 :: 2/126 (где оборудование на стороне провайдера IP-транзита, с которым мы будем выполнять BGP, 2803: dd99: 1111 :: 1)
  • IPv4-адрес, присвоенный Perú IX (PIT Peru sac) (pitperu.net): 45.183.47.254 / 24
  • IPv6-адрес, присвоенный Perú IX (PIT Peru sac) (pitperu.net): 2803: cd60: 6411: 5 :: ff / 64
  • Настройте адреса IPv4 и IPv6, предоставленные LACNIC на интерфейсе обратной связи.

    Первое, что нужно сделать, это создать интерфейс обратной связи и назначить его адресам IPv4 и IPv6, предоставленным LACNIC. Другой вариант - назначить IP другому интерфейсу или статический маршрут другому маршрутизатору.

    /interface bridge add name=loopback
    #change la 100.100.100.1/22 for the first IPv4 of the range assigned by LACNIC #
    /ip address add address=100.100.100.1/22 interface=loopback 
    #cambiar la 2803:cd10::/32 por la primera IPv6 del rango asignado por LACNIC#
    /ipv6 address add address=2803:cd10::/32 advertise=no interface=loopback  

    Затем мы собираемся определить адреса IPv4 и IPv6 провайдера IP-транзита, если они еще не определены на устройстве:

    #cambiar la 198.51.100.2/30 por la IPv4 otorgada por tu Proveedor de IP transit#
    /ip address add address=198.51.100.2/30 interface=IP_TRANSIT
    #cambiar la 2803:dd99:1111::2/126 por la IPv6 otorgada por tu Proveedor de IP transit#
    /ipv6 address add address=2803:dd99:1111::2/126 advertise=no interface=IP_TRANSIT

    Наконец, мы собираемся настроить IP-адреса, предоставленные Perú IX (PIT Peru sac).

    #cambiar la 45.183.47.254/24 por la IPv4 asignada por Perú IX (PIT Peru sac)#
    /ip address add address=45.183.47.254/24 interface=PIT_PERU_sac 
    #cambiar la 2803:cd60:6411:5::ff/64 por la IPv6 asignada por Perú IX (PIT Peru sac)#
    /ipv6 address add address=2803:cd60:6411:5::ff/64 advertise=no interface=PIT_PERU_sac

    Введите ASN вашей организации (ASN, предоставленный LACNIC)

    В нашем примере мы собираемся предположить, что LACNIC дал нам ASN 123456, в router-id мы собираемся поместить наш первый общедоступный IPv4-адрес.

    # change the name to the name you like, the ace to your ASN number granted by LACNIC and in route-id you can use the IP of the loopback or another #
    /routing bgp instance add name=AS123456 as=123456 router-id=100.100.100.1

    Создайте фильтры маршрутизации для цепочек OUT и IN

    Перед запуском сеансов BGP ОЧЕНЬ ВАЖНО создать фильтры безопасности как для ввода, так и для вывода.

    Важно : в фильтрах порядок факторов имеет значение, первый индекс каждой цепочки всегда обрабатывается первым.

    Выходные фильтры IPv4 (OUT)

     #change the 100.100.100.0/22 with your prefix assigned by LACNIC #
     
    /routing filter
    add action=accept chain=IP_TRANSIT_IPv4_OUT prefix=100.100.100.0/22 prefix-length=22
    add action=discard chain=IP_TRANSIT_IPv4_OUT
     
     
    #change the 100.100.100.0/22 with your prefix assigned by LACNIC. It is important that we are going to send more specific prefixes to IX, in this case / 24s #
     
    /routing filter
    add action=accept chain=PIT_PERU_sac_IPv4_OUT prefix=100.100.100.0/22 prefix-length=22-24
    add action=discard chain=PIT_PERU_sac_IPv4_OUT

    Выходные фильтры IPv6 (OUT)

    # change 2803: cd10 :: / 32 with your IPv6 prefix assigned by LACNIC #
     
    /routing filter
    add action=accept chain=IP_TRANSIT_IPv6_OUT prefix=2803:cd10::/32 prefix-length=32
    add action=discard chain=IP_TRANSIT_IPv6_OUT
     
     
    #change 2803: cd10 :: / 32 with your IPv6 prefix assigned by LACNIC. It is important that we will send more specific prefixes to IX, in this case / 48s #
     
    /routing filter
    add action=accept chain=PIT_PERU_sac_IPv6_OUT prefix=2803:cd10::/32 prefix-length=32-48
    add action=discard chain=PIT_PERU_sac_IPv6_OUT

    Почему мы размещаем рекламу для провайдера IP-транзита / 22 (менее конкретный префикс) и для Perú IX (PIT Peru sac) множественный / 24 (более конкретный)?

    Это важно, чтобы гарантировать, что путь через Perú IX (PIT Peru sac) предпочтительнее, чем IP-транзит, и, таким образом, избежать того, что трафик, который может обслуживаться через Perú IX (PIT Peru sac), вместо этого обслуживается через IP-транзит.

    Входные (IN) фильтры IPv4

    Здесь мы должны принять решение, просим ли мы провайдера IP-транзита прислать нам только маршрут по умолчанию или мы запрашиваем DFZ (полная таблица BGP без маршрута по умолчанию, также известная как Full BGP)

    # we will only use this first line if we are accepting default route #
     
    /routing filter
    add action=accept chain=IP_TRANSIT_IPv4_IN prefix=0.0.0.0/0
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=45.183.47.0/24 prefix-length=24-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=10.0.0.0/8 prefix-length=8-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=100.64.0.0/10 prefix-length=10-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=127.0.0.0/8 prefix-length=8-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=169.254.0.0/16 prefix-length=16-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=172.16.0.0/12 prefix-length=12-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=192.0.8.0/24 prefix-length=24-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=192.88.99.0/24 prefix-length=24-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=192.168.0.0/16 prefix-length=16-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=198.18.0.0/15 prefix-length=15-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=198.51.0.0/24 prefix-length=24-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=203.0.113.0/24 prefix-length=24-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=224.0.0.0/4 prefix-length=4-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=240.0.0.0/4 prefix-length=4-32
    add action=discard chain=IP_TRANSIT_IPv4_IN prefix=0.0.0.0/0 prefix-length=25-32
    add action=accept chain=IP_TRANSIT_IPv4_IN
     
     
     
    In the filters of the Perú IX (PIT Peru sac) chain we will also apply filters, although the Route Servers apply filters it is important to always apply filters anyway #
     
    /routing filter
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=0.0.0.0/0
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=45.183.47.0/24 prefix-length=24-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=10.0.0.0/8 prefix-length=8-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=100.64.0.0/10 prefix-length=10-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=127.0.0.0/8 prefix-length=8-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=169.254.0.0/16 prefix-length=16-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=172.16.0.0/12 prefix-length=12-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=192.0.8.0/24 prefix-length=24-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=192.88.99.0/24 prefix-length=24-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=192.168.0.0/16 prefix-length=16-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=198.18.0.0/15 prefix-length=15-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=198.51.0.0/24 prefix-length=24-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=203.0.113.0/24 prefix-length=24-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=224.0.0.0/4 prefix-length=4-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=240.0.0.0/4 prefix-length=4-32
    add action=discard chain=PIT_PERU_sac_IPv4_IN prefix=0.0.0.0/0 prefix-length=25-32
    add action=accept chain=PIT_PERU_sac_IPv4_IN

    Входящие фильтры (IN) IPv6

    Здесь мы должны принять все префиксы, которые отправляет нам Perú IX (PIT Peru sac), кроме тех, которые рекомендуются для фильтрации передовых практик.

    # the first line will only be used if we accept the default path #
     
    /routing filter
    add action=accept chain=IP_TRANSIT_IPv6_IN prefix=::/0
    add action=discard chain=IP_TRANSIT_IPv6_IN prefix=100::/64 prefix-length=64-128
    add action=discard chain=IP_TRANSIT_IPv6_IN prefix=2001:2::/48 prefix-length=48-128
    add action=discard chain=IP_TRANSIT_IPv6_IN prefix=2001:10::/28 prefix-length=28-128
    add action=discard chain=IP_TRANSIT_IPv6_IN prefix=2001:db8::/32 prefix-length=32-128
    add action=discard chain=IP_TRANSIT_IPv6_IN prefix=2002::/16 prefix-length=16-128
    add action=discard chain=IP_TRANSIT_IPv6_IN prefix=3ffe::/16 prefix-length=16-128
    add action=discard chain=IP_TRANSIT_IPv6_IN prefix=fc00::/7 prefix-length=7-128
    add action=discard chain=IP_TRANSIT_IPv6_IN prefix=fe80::/10 prefix-length=10-128
    add action=discard chain=IP_TRANSIT_IPv6_IN prefix=fec0::/10 prefix-length=10-128
    add action=discard chain=IP_TRANSIT_IPv6_IN prefix=ff00::/8 prefix-length=8-128
    add action=discard chain=IP_TRANSIT_IPv6_IN prefix=::/0 prefix-length=65-128
    add action=accept chain=IP_TRANSIT_IPv6_IN
     
    #In the filters of the Perú IX (PIT Peru sac) chain we will also apply filters, although the Route Servers apply filters it is important to always apply filters anyway #
    /routing filter
    add action=discard chain=PIT_PERU_sac_IPv6_IN prefix=::/0
    add action=discard chain=PIT_PERU_sac_IPv6_IN prefix=100::/64 prefix-length=64-128
    add action=discard chain=PIT_PERU_sac_IPv6_IN prefix=2001:2::/48 prefix-length=48-128
    add action=discard chain=PIT_PERU_sac_IPv6_IN prefix=2001:10::/28 prefix-length=28-128
    add action=discard chain=PIT_PERU_sac_IPv6_IN prefix=2001:db8::/32 prefix-length=32-128
    add action=discard chain=PIT_PERU_sac_IPv6_IN prefix=2002::/16 prefix-length=16-128
    add action=discard chain=PIT_PERU_sac_IPv6_IN prefix=3ffe::/16 prefix-length=16-128
    add action=discard chain=PIT_PERU_sac_IPv6_IN prefix=fc00::/7 prefix-length=7-128
    add action=discard chain=PIT_PERU_sac_IPv6_IN prefix=fe80::/10 prefix-length=10-128
    add action=discard chain=PIT_PERU_sac_IPv6_IN prefix=fec0::/10 prefix-length=10-128
    add action=discard chain=PIT_PERU_sac_IPv6_IN prefix=ff00::/8 prefix-length=8-128
    add action=discard chain=PIT_PERU_sac_IPv6_IN prefix=::/0 prefix-length=65-128
    add action=accept chain=PIT_PERU_sac_IPv6_IN

    Создайте одноранговый узел BGP с вашим провайдером IP-транзита

    #Change the instance for the one that corresponds in your case, the same in the remote-address and remote-as #
    /routing bgp peer add name=IP_TRANSIT_IPv4 instance=AS123456 remote-address=198.51.100.1 remote-as=1200 in-filter=IP_TRANSIT_IPv4_IN out-filter=IP_TRANSIT_IPv4_OUT remove-private-as=yes
    #Change the instance for the one that corresponds in your case, the same in the remote-address and remote-as #
    /routing bgp peer add name=IP_TRANSIT_IPv6 instance=AS123456 remote-address=2803:dd99:1111::1 remote-as=1200 in-filter=IP_TRANSIT_IPv6_IN out-filter=IP_TRANSIT_IPv6_OUT remove-private-as=yes address-families=ipv6

    Создайте одноранговые узлы BGP с помощью серверов маршрутизации Perú IX (PIT Peru sac) (pitperu.net)

    В этом примере мы собираемся настроить как IPv4, так и IPv6 сервера маршрутизации Perú IX (PIT Peru sac), то есть RS1 и RS2, в нашем примере нам был назначен пароль BGP «peeringinperu».”

    /routing bgp peer add name=PIT_PERU_sac_RS1_IPv4 instance=AS123456 remote-address=45.183.47.1 remote-as=64115 tcp-md5-key=peeringinperu max-prefix-limit=12000 max-prefix-restart-time=360 in-filter=PIT_PERU_sac_IPv4_IN out-filter=PIT_PERU_sac_IPv4_OUT remove-private-as=yes
    /routing bgp peer add name=PIT_PERU_sac_RS2_IPv4 instance=AS123456 remote-address=45.183.47.2 remote-as=64115 tcp-md5-key=peeringinperu max-prefix-limit=12000 max-prefix-restart-time=360 in-filter=PIT_PERU_sac_IPv4_IN out-filter=PIT_PERU_sac_IPv4_OUT remove-private-as=yes
     
    /routing bgp peer add name=PIT_PERU_sac_RS1_IPv6 instance=AS123456 remote-address=2803:cd60:6411:5::1 remote-as=64115 tcp-md5-key=peeringinperu max-prefix-limit=12000 max-prefix-restart-time=360 in-filter=PIT_PERU_sac_IPv6_IN out-filter=PIT_PERU_sac_IPv6_OUT remove-private-as=yes address-families=ipv6
    /routing bgp peer add name=PIT_PERU_sac_RS2_IPv6 instance=AS123456 remote-address=2803:cd60:6411:5::2 remote-as=64115 tcp-md5-key=peeringinperu max-prefix-limit=12000 max-prefix-restart-time=360 in-filter=PIT_PERU_sac_IPv6_IN out-filter=PIT_PERU_sac_IPv6_OUT remove-private-as=yes address-families=ipv6

    Определите префиксы, которые вы собираетесь анонсировать

    Здесь нам нужно будет изменить префиксы для префиксов, назначенных LACNIC, и мы объявим это как / 22, так и / 24. В IPv6 мы будем анонсировать его пока только как / 32.

    /routing bgp network add network=100.100.100.0/22 synchronize=no
    /routing bgp network add network=100.100.100.0/24 synchronize=no
    /routing bgp network add network=100.100.101.0/24 synchronize=no
    /routing bgp network add network=100.100.102.0/24 synchronize=no
    /routing bgp network add network=100.100.103.0/24 synchronize=no
     
    /routing bgp network add network=2803:cd10::/32 synchronize=no

    Проверить работу

    Проверьте статус BGP Peers, если они работают, они должны сказать status Established, если он говорит Connect или Idle, это означает, что что-то неправильно настроено на вашей стороне или на стороне провайдера.

       /routing bgp peer print

    Я надеюсь, что это руководство поможет вам легко и безопасно окунуться в прекрасный мир BGP

    Ограничения BGP в Mikrotik RouterOS

    В связи с большим количеством вопросов делюсь с вами списком ограничений, которые есть у RouterOS, по крайней мере, в ее версии 6.x.x с BGP.

  • Изменения в фильтрах BGP не отражаются в маршрутах, полученных или отправленных одноранговому узлу BGP. Чтобы решить эту проблему, вы можете отключить и снова включить фильтры соответствующей цепочки, если это не сработает, вы можете изменить порядок фильтров. И помните, что вам нужно проявить терпение с BGP в RouterOS, поскольку это только одноядерный процесс. Это не влияет на саму маршрутизацию, но важно проверить после внесения изменений, чтобы убедиться, что вы их сделали.
  • Он не отображает список рекламных объявлений в графическом интерфейсе Winbox, и это еще одно хорошо известное ограничение. Чтобы решить эту проблему, откройте Терминал и введите команду «/ routing bgp Advertisements print»
  • Медленное время конвергенции, поскольку BGP в RouterOS 6.x является одноядерным процессом и поэтому не может использовать преимущества нескольких ядер ЦП.
  • При получении полной таблицы BGP (DFZ) от однорангового узла BGP очень медленно отображаются все маршруты в графическом интерфейсе Winbox. Мой совет - использовать регулярное выражение и команду «/ ip route print…» вместо просмотра маршрутов через графический интерфейс.
  • ти моменты вовсе не означают, что BGP неправильный в RouterOS, просто вы должны научиться жить с этими ограничениями и помнить о них