Настройка OSPF для получения маршрутов до абонентов

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (9)

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

Обычно такая настройка полезна в случае, если в сети провайдера используется несколько маршрутизаторов занимающихся подключением пользователей по VPN. Маршрутизаторы доступны Carbon Reductor напрямую, но без OSPF он шлёт будет слать пакеты с редиректами в свой маршрут по умолчанию, в результате увеличивается число промежуточных узлов.

h2. Примечания
h2. Как настроить

Запускаем команду menu. Выбираем BGP Blackhole.
Для начала помимо самого редуктора, требуется(ются) роутер(ы), с которыми будут созданы OSPF-"соседства".

В случае с Linux, потребуется установка и настройка Quagga (или её альтернатив).


Запускаем команду menu, выбираем BGP Blackhole:

!Снимок экрана 2017-08-17 в 17.14.34.png|border=1!

Заходим в настройки BGP Blackhole.

Выключим анонсирование маршрутов, включенное по умолчанию для обратной совместимости и включим контейнер.
Выключим анонсирование маршрутов ("Включить интеграцию по BGP"), включенное по умолчанию для обратной совместимости и включим контейнер ("Включить BGP Blackhole").

!Снимок экрана 2017-08-17 в 17.14.56.png|border=1!
!Снимок экрана 2017-08-17 в 17.14.44.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}

Вообще заниматься этим всем стоит только в случае если техническая поддержка в ответ на предложение исправить/дополнить стандартный шаблон сообщила что это не будет добавлено в продукт никогда. Мы заинтересованы в том, чтобы из коробки продукт был удобен всем, так что приветствуем добавление действительно полезных опций.