Настройка протокола 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. (речь про: s et-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
Настройка BGP для обхода блокировок, версия 3, без VPS
Зачем всё это делается в принципе и как оно устроено логически — описано в первой и второй статьях.
После их публикации я получил несколько вопросов от людей, которые пользуются VPN с не принадлежащих им ресурсов (например, приобретающих коммерческую услугу VPN). Этим людям раньше я советовал завести VPS для развертывания BGP-сервиса или каким-то еще образом получить доступ к серверу на Linux.
Но с сегодняшнего дня для них (и для всех остальных) есть более удобный вариант — на бесплатном сервисе antifilter.download появилась возможность автоматически настраивать BGP-сессию с вашим маршрутизатором.
Для его использования вам необходимо иметь всего лишь:
- фиксированный маршрутизируемый IP-адрес (т.н. «белый». Он может выделяться динамически, но должен быть всегда одним и тем же); UPD. Уже не важно, см. ниже по тексту.
- маршрутизатор с поддержкой протокола BGP (в статье, традиционно, пример построен на базе RouterOS маршрутизаторов Mikrotik);
- уже настроенный туннель VPN с этого маршрутизатора.
Умолчания в тексте статьи
- имя интерфейса туннеля на маршрутизаторе — gre-tunnel1
- номер автономной системы с вашей стороны — 64512 (выбираете сами в соответствии с RFC6996 — из диапазона 64512-65534 включительно).
- внешний IP-адрес вашего маршрутизатора — 81.117.103.94
Последовательность действий, если вы хотите управлять сервисом и у вас есть фиксированный маршрутизируемый IP-адрес
Делаем раз
заходим из вашей сети (это важно) на сайт antifilter.download, проматываем до раздела BGP, нажимаем «Активировать управление BGP».
Делаем два
проверяем, что сайт показывает именно наш IP, вводим выбранный номер своей автономной системы, помечаем чекбоксы, какие именно маршруты отдавать, подтверждаем капчу, нажимаем «Создать пиринг». После этого сайт покажет, что для вашего адреса настройки существуют. Время применения настроек в сервисе — не более 5 минут.
Делаем три
заходим на свой маршрутизатор Mikrotik и настраиваем на нем BGP-пиринг с сервисом:
Не забываем поменять умолчательные AS, IP и имя интерфейса на ваши. В вышеприведенных командах должно быть сделано четыре замены — не больше и не меньше.
… и всё работает
Если с момента нажатия кнопки «Создать пиринг» прошло более 5 минут и вы всё правильно настроили — у вас уже всё работает.
Если вы захотели поменять список выгружаемых в вашу сторону префиксов — это делается через удаление настроек на веб-странице и создание их вновь, благо — из настроек там одно число и три галочки.
Префиксы от сервиса маркируются соответствующими комьюнити, поэтому если захочется строить более сложные правила обработки — всё в ваших руках.
Настоятельно не рекомендую подключать список одиночных IP — даже топовым SOHO-маршрутизаторам Mikrotik от него не очень хорошо, а средние, например hAP lite, ведут себя крайне непредсказуемо.
UPD. Последовательность действий, если у вас нет фиксированного IP или вас устраивают настройки по умолчанию
Делаем раз
заходим на свой маршрутизатор Mikrotik и настраиваем на нем BGP-пиринг с сервисом:
Не забываем поменять умолчательные router-id и имя интерфейса на ваши. В вышеприведенных командах должно быть сделано три замены — не больше и не меньше. В качестве router-id можете написать в принципе любое тридцатидвухбитное число в формате IP-адреса, но чтобы не вызвать спецэффектов при совпадении, я бы рекомендовал использовать ваш текущий внешний IP-адрес. При его изменениях менять его необходимости не будет.
Номер AS в этом случае фиксированный, 64999, как и набор анонсируемых префиксов (ipsum+subnet), если кому-то этого чересчур много — всегда можно при приеме фильтровать по комьюнити или другими способами манипулировать анонсами.
… и всё работает
Если после активации настроек на вашем роутере прошло более 5 минут и вы всё правильно настроили — у вас уже всё работает.
При смене IP-адреса сессия будет восстанавливаться ориентировочно в течение 5 минут.
Заключение
Да, я понимаю, что уже «горшочек, не вари», и надеюсь, что на этом для меня тема обхода блокировок закрыта.
Настройка BGP на маршрутизаторах Микротик
Настройка интерфейса BGP
Разберемся как настроить BGP на маршрутизаторах Микротик, допустим нам нужно анонсировать сеть 212.45.0.0/24, наша автономная система AS20111. Подключаемся к маршрутизатору через winbox. Переходим на вкладку Routing-BGP. В открывшемся окне выбираем вкладку Interfaces.

Кликаем два раза по интерфейсу default, если этого интерфейса нет, то создаем его нажав кнопку «+»-добавить.
Нужно разобраться с MikroTik, но не определились с чего начать? В курсе «Настройка оборудования MikroTik» все по порядку. Подойдет и для начала работы с этим оборудованием, и для того, чтобы систематизировать знания. Это видеокурс из 162 уроков и 45 лабораторных работ, построен на официальной программе MTCNA. Проходить можно, когда удобно и пересматривать по необходимости – материалы курса выдаются бессрочно. Также есть 30 дней на личные консультации с автором. На пробу выдают 25 уроков бесплатно, заказать их можно на странице курса.
Заполняем поля как показано на картинке.

Name – название интерфейса, по умолчанию default
AS – номер нашей автономной системы
Router ID – IP адрес маршрутизатора Mikrotik
Ставим галочки Redistribute Connected, Redistribute-static, client-to-client-reflection
Обозначение остальных полей
Redistribute Connected – при включении через это соединение будет распространяться информацию о подключенных маршрутах, т. е. маршрутах к сетям, к которым наш маршрутизатор может обратиться напрямую..
Redistribute-static – при включении через это соединение будет распространяться информацию о статических маршрутах, т. е. маршрутах прописанных на нашем роутере, раздел ip -> routes
Redistribute-RIP – при включении через интерфейс BGP будет анонсировать информацию о маршрутах полученных через RIP
Redistribute-OSPF — при включении через интерфейс BGP будет анонсировать информацию о маршрутах полученных через ospf
Redistribute-Other-BGP – при включении через интерфейс BGP будет анонсировать информацию о маршрутах полученных через другое BGP соединение.
Out Filter — Цепочка фильтра маршрутизации вывода, используемая всеми одноранговыми узлами BGP, принадлежащими этому экземпляру
Confederation – Если используется конфедерация BGP здесь указываем номер автономной системы, который идентифицирует [локальную] конфедерацию в целом.
confederation-peers — Если используется конфедерация BGP здесь указываем список номеров автономных систем, внутренних для локальной конфедерации. Также поддерживаются диапазоны чисел. Например, 10,20,30-50.
Cluster ID – Идентификатор кластера, используется если этот интерфейс BGP является рефлектором маршрута.
Routing Table – название таблицы маршрутизации, в которой работает этот интерфейс BGP
Создание фильтров BGP
Следующим шагом создадим фильтры для нашего BGP соединения. Нам нужно создать два типа фильтра, входящий и исходящий, в первом мы запретим посылать в нашу автономную систему префиксы извне нашей собственной сети, а так же другие не нужные префиксы, в исходящем фильтре мы запретим отправлять наружу все префиксы кроме нашего.
Создаем фильтры на вход. Нам нужно запретить следующие префиксы.
Все частные сети 10.0.0.0/8, 192.168.0.0/16 и 172.16.0.0/12
Канальные сети 169.254.0.0/16
Сеть многоадресной рассылки 224.0.0.0/4
Резервную сеть 240.0.0.0/4
Внутрикоммуникационную подсеть 127.0.0.0/8
А так же, нашу собственную сеть 212.45.0.0/24
Переходим на вкладку Routes-Filter и нажимаем кнопку добавить.

Chain – цепочка правил для автономной системы партнера, если номер автономной системы партнера 2222 то здесь пишем AS2222-bgp-in
Prefix – префикс подсети прием с которой нам необходимо запретить
Далее переходим на Вкладку Actions (действие) и выбираем discard (запретить)

После чего нажимаем «OK»
Таким же образом создаем правила для следующих префиксов
После создания запрещающих правил, создаем правило разрешающее обращение к нашей AS со всех других сетей. Для этого в chain выбираем AS2222-bgp-in

Action ставим accept
Следующим шагом создадим фильтры для цепочки OUT, В ней запретим анонсировать наружу все сети кроме нашей . Для начала создаем разрешающее правило для префикса 212.45.0.0/24. Нажимаем кнопку добавить правило.

Chain – для автономной системы 2222 будет AS2222-bgp-out
Prefix – префикс нашей сети 212.45.0.0/24
На вкладке Actions выбираем accept

И последним создаем запрещающее правило на анонсирование всех префиксов.


В результате всех действий должен получится список фильтров как на рисунке.

Настройка провайдера BGP
Снова открываем пункт Routing-BGP, открываем вкладку Peers, нажимаем кнопку добавить.

Заполняем поля как показано на рисунке

Name – название провайдера
Instance – интерфейс BGP созданный на первом шаге, если у нас подключение к нескольким провайдерам, то соответственно здесь выбираем нужный нам интерфейс.
Remote AS – Автономная система партнера.
In Filter, Out Filter — фильтры созданные на втором шаге соответственно
Жмем ОК. Если все сделано правильно то в колонке state должен появиться статус established? Установлено.
Для подключения более одного провайдера, нужно проделать все три шага для каждого
- Создать интерфейс
- Создать фильтры
- Создать Peer.
Обучающий курс по настройке MikroTik
Нужно разобраться с MikroTik, но не определились с чего начать? В курсе «Настройка оборудования MikroTik» все по порядку. Подойдет и для начала работы с этим оборудованием, и для того, чтобы систематизировать знания. Это видеокурс из 162 уроков и 45 лабораторных работ, построен на официальной программе MTCNA. Проходить можно, когда удобно и пересматривать по необходимости – материалы курса выдаются бессрочно. Также есть 30 дней на личные консультации с автором. На пробу выдают 25 уроков бесплатно, заказать их можно на странице курса.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Теория:Протоколы:BGP
BGP (Border Gateway Protocol, протокол граничного шлюза) — основной протокол динамической маршрутизации в Интернете.
Протокол BGP предназначен для обмена информацией о достижимости подсетей между автономными системами (АС), то есть группами маршрутизаторов под единым техническим управлением, использующими протокол внутридоменной маршрутизации для определения маршрутов внутри себя и протокол междоменной маршрутизации для определения маршрутов доставки пакетов в другие АС. Передаваемая информация включает в себя список АС, к которым имеется доступ через данную систему. Выбор наилучших маршрутов осуществляет исходя из правил, принятых в сети.
BGP поддерживает бесклассовую адресацию и использует суммирование маршрутов для уменьшения таблиц маршрутизации. С 1994 года действует четвёртая версия протокола, все предыдущие версии являются устаревшими.
BGP, наряду с DNS, является одним из главных механизмов, обеспечивающих функционирование Интернета.
BGP является протоколом прикладного уровня и функционирует поверх протокола транспортного уровня TCP (порт 179). После установки соединения передаётся информация обо всех маршрутах, предназначенных для экспорта. В дальнейшем передаётся только информация об изменениях в таблицах маршрутизации. При закрытии соединения удаляются все маршруты, информация о которых передана противоположной стороной.
Содержание
Формат сообщения
Сообщение BGP начинается с заголовка, после которого, в зависимости от типа сообщения, могут следовать данные. Максимальная длина сообщения — 4096 октетов, минимальная — 19 октетов. Заголовок сообщения содержит следующие поля:
- Маркер (16 октетов) — используется для совместимости, должен быть заполнен единицами;
- Длина (2 октета) — длина сообщения в октетах, включая заголовок;
- Тип (1 октет):
- 1 — Открытие;
- 2 — Обновление информации;
- 3 — Оповещение;
- 4 — Сохранение соединения.
Открытие
Первое сообщение после установки соединения должно быть «Открытие». Если сообщение успешно обработано, в ответ будет послано «Сохранение соединения». В дополнение к заголовку BGP сообщение «Открытие» содержит следующие поля:
- Версия (1 октет) — версия протокола, текущее значение 4;
- Моя система (2 октета) — номер автономной системы;
- Интервал времени (2 октета) — максимальный интервал времени в секундах между получением сообщений «Обновление информации» или «Сохранение соединения»;
- Идентификатор отправителя (4 октета) — устанавливается равным IP-адресу;
- Длина дополнительных параметров (1 октет);
- Дополнительные параметры:
- Тип параметра (1 октет);
- Длина параметра (1 октет);
- Значение параметра.
Обновление информации
Сообщение «Обновление информации» предназначено для передачи информации о маршрутах между АС. Сообщение может указывать новые маршруты и удалять неработающие. Структура сообщения:
- Длина удаляемых маршрутов (2 октета);
- Удаляемые маршруты:
- Длина (1 октет) — длина в битах префикса IP-адреса;
- Префикс IP-адреса, дополненный минимальным количеством бит до полного октета;
- Тип атрибута:
- Флаг атрибута;
- Код атрибута;
- Длина (1 октет) — длина в битах префикса IP-адреса (нулевая длина — соответствие всем IP-адресам);
- Префикс IP-адреса, дополненный минимальным количеством бит до полного октета.
Все атрибуты пути соответствуют всем записям в поле «Информация о достижимости».
Сохранение соединения
Сообщение сохранения соединения должно посылаться не реже чем раз в одну третью часть максимального интервала времени между сообщениями, но не чаще чем один раз в секунду. Если интервал времени установлен равным нулю, то сообщение не должно периодически рассылаться. Сообщение не использует дополнительных полей.
Оповещение
Оповещение посылается в случае обнаружения ошибки, при этом соединение закрывается. Сообщение содержит следующие поля:
- Код ошибки (1 октет);
- Субкод (1 октет);
- Данные.
Процесс выбора
Процесс выбора запускается после обновления информации и служит для отбора маршрутов, предназначенных для использования локально и передачи другим маршрутизаторам, использующим BGP. Процесс использует атрибуты полученных маршрутов для получения степени предпочтения маршрута или информации о том, что маршрут является неподходящим для занесения в базу маршрутов и должен быть исключён из процесса отбора. Процесс делится на три фазы: