Настройка протокола BGP в маршрутизаторах Mikrotik RouterOS
Настройка протокола BGP в маршрутизаторах Mikrotik RouterOS
Прежде всего, посмотрите видео, там рассмотрен простейший пример без фильтров и каких либо приоритетов между каналами. Есть несколько поправок, best path выбирается не по количеству маршрутизаторов до адреса назначения, а по количеству автономных систем.(по длине AS-PATH.) Так же микротик может работает с подсетями /31
Рассмотрим другой пример настройки BGP
Предположим, что наш номер AS - AS12345, IP-адрес - 192.168.255.25, наш общедоступный диапазон IP-адресов, полученный RIPE или другой подобной организацией, - 109.205.240.0/21.Номер AS нашего пирингового ISP1 - AS11111, его пиринговый IP - 192.168.255.29. В этом примере мы не будем использовать пароль MD5 между одноранговыми узлами. Посмотрите на картинку ниже:

Configuration of global routing process BGP (Основные настройки)
/routing bgp instance set default as=12345 redistribute-static=no redistribute-connected=no
/routing bgp network add network=109.205.240.0/21 synchronize=no
Setting first BGP peer ISP1
/routing bgp peer add remote-address=192.168.255.29 remote-as=11111 instance=default out-filter=AS11111-bgp-out in-filter=AS11111-bgp-in
Filters BGP-out – мы разрешаем анонсирование только наших сетей. Если процесс Mikrotik BGP попытается объявить другие маршруты, они будут заблокированы фильтром.
/routing filter add action=accept chain=AS11111-bgp-out prefix=109.205.240.0/21 set-bgp-prepend=3
/routing filter add action=discard chain=AS11111-bgp-out
В нашем примере ISP1 является резервным каналом, тогда мы должны создать специальное правило для фильтра BGP-out. Это правило было создано с помощью функции добавления AS-PATH prepending к BGP, это означает, что мы удлиняем путь к нашей AS, и входящий трафик не будет пересылаться через ISP1 другими интернет-провайдерами. В результате весь входящий трафик будет проходить через ISP2, а ISP1 является резервным на случай, если ISP2 не работает. (речь про: set-bgp-prepend=3 )
Filters BGP-in – Мы не хотим принимать «плохие» IP-сети, такие как частные диапазоны и bogons, и мы не хотим получать собственную сеть из Интернета.
/routing filter add action=discard chain=AS11111-bgp-in prefix=10.0.0.0/8
/routing filter add action=discard chain=AS11111-bgp-in prefix=169.254.0.0/16
/routing filter add action=discard chain=AS11111-bgp-in prefix=192.168.0.0/16
/routing filter add action=discard chain=AS11111-bgp-in prefix=172.16.0.0/12
/routing filter add action=discard chain=AS11111-bgp-in prefix=224.0.0.0/4
/routing filter add action=discard chain=AS11111-bgp-in prefix=240.0.0.0/4
/routing filter add action=discard chain=AS11111-bgp-in prefix=127.0.0.0/8
/routing filter add action=discard chain=AS11111-bgp-in prefix=109.205.240.0/21
/routing filter add action=accept chain=AS11111-bgp-in
Теперь на BGP peering with ISP1 должен работать.
Configuration of BGP peering with ISP2
/routing bgp peer add remote-address=10.10.10.101 remote-as=22222 instance=default
out-filter=AS22222-bgp-out in-filter=AS22222-bgp-in
Filter BGP-out – мы разрешаем анонсирование только наших сетей. Notice that there is no AS-PATH prepending rule, because ISP2 is a main one in our setup.
/routing filter add action=accept chain=AS22222-bgp-out prefix=109.205.240.0/21
/routing filter add action=discard chain=AS22222-bgp-out
Filter BGP-in – it’s similar to BGP-in for ISP1. We don’t accept “wrong” IP networks, such as private ranges and bogons, and we don’t want to receive own network from Internet.
/routing filter add action=discard chain=AS22222-bgp-in comment="" disabled=no prefix=10.0.0.0/8
/routing filter add action=discard chain=AS22222-bgp-in comment="" disabled=no prefix=169.254.0.0/16
/routing filter add action=discard chain=AS22222-bgp-in comment="" disabled=no prefix=192.168.0.0/16
/routing filter add action=discard chain=AS22222-bgp-in comment="" disabled=no prefix=172.16.0.0/12
/routing filter add action=discard chain=AS22222-bgp-in comment="" disabled=no prefix=224.0.0.0/4
/routing filter add action=discard chain=AS22222-bgp-in comment="" disabled=no prefix=240.0.0.0/4
/routing filter add action=discard chain=AS22222-bgp-in comment="" disabled=no prefix=127.0.0.0/8
/routing filter add action=discard chain=AS22222-bgp-in comment="" disabled=no prefix=109.205.240.0/21
/routing filter add action=accept chain=AS22222-bgp-in comment="" disabled=no set-bgp-local-pref=200
Последняя инструкция отличается от входящего фильтра BGP для ISP1. Я ставлю Local preference 200 (по умолчанию 100). Для всех полученных маршрутов от ISP2 мы установим атрибут local-preference = 200. Это означает, что весь исходящий трафик будет идти через ISP2. (речь про: set-bgp-local-pref=200 )
ДОПОЛНИТЕЛЬНЫЕ комментарии не относящиеся к конкретному примеру:
Advanced routing filters for manipulation traffic:
ISP1
chain=mtel-bg-out
without parameter = High priority
chain=mtel-bg-in set-distance=10
= High priority
ISP1
chain=mtel-int-out
without parameter = High priority
chain=mtel-int-in set-bgp-local-pref=200
= High priority
ISP2
chain=gcn-out set-bgp-prepend=5
= Medium priority
chain=gcn-in
without parameter = Medium priority
ISP3
chain=thezone-out set-bgp-prepend=10 = Low priority
chain=thezone-in set-bgp-local-pref=80 = Low priority
Monitoring
1. /routing bgp peer print - показывает статус всех пиров.2. /routing bgp peer print status - более расширенная статистика.
3. /routing bgp advertisements print <peer_name> - увидеть анонсированные маршруты и маршруты, полученные
4. /ip route print count-only
5. /ip route print where dst-address=194.145.63.0/24
6. /ip route print detail where dst-address=194.145.63.0/24
[admin@R1] > /routing bgp peer print
Flags: X - disabled, E - established
# INSTANCE REMOTE-ADDRESS REMOTE-AS
0 E itservice 213.226.26.113 12716
1 E itservice 213.226.26.117 12716
2 E itservice 212.70.158.89 12615
3 E itservice 93.155.130.66 34368