... {toc} h2. Зачем это настраивать? Начиная с версии 8.01.03 доступна возможность в контейнере bgp_blackhole настроить OSPF для получения маршрутов до абонентов.
|
Это нужно для того, чтобы путь пакетов с редиректами до получателей был короче и не происходило ситуации, в которой реальный пакет из интернета придёт быстрее.
|
Обычно такая настройка полезна в случае, если в сети провайдера оператора связи используется несколько маршрутизаторов занимающихся подключением пользователей по VPN. Маршрутизаторы доступны Carbon Reductor напрямую, но без OSPF он будет слать отправлять пакеты с редиректами в маршрут по умолчанию, в результате увеличивается число промежуточных узлов.
|
h2. Примечания
|
На текущий момент получение маршрутов по OSPF не тестировалось с одновременным использованием основного предназначения bgp_blackhole - анонсирование заблокированных целиком по IP адресу ресурсов, побочные эффекты могут быть неожиданными/неприятными.
|
До 2020 года мы писали о том, что OSPF + BGP Blackhole + опция "отдельная таблица маршрутизации" несовместимы. Схема работы изменялась, чтобы обеспечить надёжную работу при большом числе IP адресов для анонсирования в Blackhole, побочным эффектом оказалось, что теперь все эти опции работают корректно.
|
|
Поэтому при настройке необходимо явно *отключить интеграцию BGP*, включив при этом сам контейнер BGP Blackhole.
|
Однако в текущей схеме проблемы могут возникнуть при одновременном использовании асинхронной маршрутизации и OSPF.
|
h2. Как настроить
|
...
|
Для начала помимо самого редуктора, требуется(ются) роутер(ы), с которыми будут созданы OSPF-"соседства".
|
В случае с Linux, потребуется установка и настройка Quagga (или её альтернатива).
|
|
... Запускаем команду menu, выбираем *BGP Blackhole*: !Screenshot_20180730_154845.png|border=1! Заходим в настройки BGP Blackhole. Выключим анонсирование маршрутов ("*Включить интеграцию по BGP*"), включенное по умолчанию для обратной совместимости и включим контейнер ("*Включить BGP Blackhole*"). !Screenshot_20180730_155052.png|border=1! Дальше идём в настройки OSPF: !Screenshot_20180730_155204.png|border=1!
|
|
И настраиваем его (описание опций под картинкой):
|
И выполняем настройку
|
|
|
!Screenshot_20180730_155258.png|border=1!
|
... Все эти параметры используются для генерации конфига ospfd. Шаблон по умолчанию выглядит следующим образом: {code} hostname {{hostname - подхватывается из переменной окружения $HOSTNAME}} password {{ospfd_password - Пароль ospfd}} enable password {{ospfd_password - Пароль ospfd}} log file /var/log/quagga/ospfd.log service password-encryption no banner motd {% for interface in ospfd_interfaces - Интерфейсы ospfd %}interface {{interface}} {% endfor %} {% if ospfd_auth_key - Ключ аутентификации%} ip ospf authentication ip ospf authentication-key {{ospfd_auth_key - Ключ аутентификации}} {% endif %} router ospf ospf router-id {{ospfd_router_id - Router ID (reductor)}} {% if ospfd_end_user_networks - Сети абонентов (через пробел) %} redistribute kernel route-map end_user_routes redistribute connected route-map end_user_routes {% endif %} passive-interface default {% for interface in ospfd_interfaces - Интерфейсы ospfd %} no passive-interface {{ interface }} {% endfor %} network {{ospfd_router_network - Сеть маршрутизаторов}} area {{ospfd_area - Зона }} {% for neighbor in neighbors - Соседи (через пробел) %} neighbor {{neighbor}} {% endfor %} access-list localhost permit 127.0.0.1/32 access-list localhost deny any {% if ospfd_end_user_networks - Сети абонентов (через пробел) %} {% for seq, network in ospfd_end_user_networks - Сети абонентов (через пробел) %}! ip prefix-list end_users seq {{seq}} permit {{network}} {% endfor %}! ip prefix-list end_users seq {{ospfd_end_user_networks_count + 1}} deny any route-map end_user_routes permit 10 match ip address prefix-list end_users {% endif %} line vty access-class localhost {code} h3. Подробнее об опциях *Обязательные*: Раздел BGP: * *Включить BGP-Blackhole* в BGP Раздел OSPF:
|
* *Включить интеграцию по OSPF*
|
*
|
* *Router ID* \- обычно, это IP-адрес сетевого интерфейса, на котором поднимается OSPF-сессия с другими маршрутизаторами (например 10.0.1.5)
|
* *Интерфейсы ospfd* \- список сетевых интерфейсов, подключенных к OSPF-соседям (например eth1 eth2) * *Сеть маршрутизаторов* \- IP адрес сети, в которой находятся OSPF-соседи (например 10.0.1.0/24).
|
... * *Зона* (area в терминологии OSPF) - должна совпадать между всеми OSPF-соседями (например 0.0.0.2) *Необязательные* (тоже в разделе OSPF)*:* * *Ключ аутентификации* \- пароль, по которому будут проверяться подключенные OSPF-соседи. Нужно для целей обеспечения безопасности, чтобы потенциальный злоумышленник не мог отправлять некорректные маршруты на ваше оборудование (например Aa1234). * *Сети абонентов* \- будут приниматься только маршруты до адресов, находящихся в подсетях, перечисленных в этой опции (например 10.0.2.0/24 10.0.3.0/24). * *Соседи* \- если требуется, чтобы редуктор настраивал соседство только с явно указанными маршрутизаторами, можно ограничить его этим списком их IP адресов. Может потребоваться для безопасности, подстраховки от собственных ошибок или уменьшения нагрузки (например 10.0.1.2 10.0.1.3). * *Шаблон конфига ospfd* \- если есть настройки на сети, которые не соотносятся с нашими стандартными, то шаблон можно скопировать, отредактировать и указать путь до него в этой опции. Используется шаблонизатор jinja2. Лучше предварительно проконсультироваться с технической поддержкой, возможно будет правильнее добавить необходимые Вам опции в продукт. (например /cfg/ospfd.conf.j2) После выполнения всех условий, требуется "*Сохранить и применить настройки*". Проверить работу можно из CLI quagga: {code} chroot /app/bgp_blackhole vtysh show ip ospf neighbor {code} Этого достаточно для минимально рабочего сценария. Пример вывода в случае правильно настроенного OSPF: {code} reductor# sh ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL 10.0.0.2 1 2-Way/DROther 34.019s 10.0.0.2 eth3:10.0.0.3 0 0 0 {code} h2. Кастомизация конфига Если хочется добавить нестандартные опции, вы можете скопировать стандартный шаблон: {code} cp -a /app/bgp_blackhole/usr/local/share/ospfd.conf.j2 /app/bgp_blackhole/cfg/ospfd.conf.j2 {code} Исправьте его под свои нужды в удобном вам текстовом редакторе и укажите в меню в поле "Шаблон конфига ospfd": {code} /cfg/ospfd.conf.j2 {code} Конфиг генерируется с помощью jinja2. Как запустить генерацию всех конфигов: {code} chroot /app/bgp_blackhole/ /genconfig {code} Вообще заниматься этим всем стоит только в случае, если техническая поддержка в ответ на предложение исправить/дополнить стандартный шаблон сообщила, что это не будет добавлено в продукт никогда. Мы заинтересованы в том, чтобы из коробки продукт был удобен всем, так что приветствуем добавление действительно полезных опций.
|