|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (84)
просмотр истории страницы{color:#ff0000}{*}ЧЕРНОВИК{*}{color} {toc} |
|
В Carbon Reductor 8.00.07 появилась возможность настроить BGP Remote Triggered Blackhole надёжнее и с меньшим числом усилий. |
|
В Carbon Reductor 8.00.07 появилась возможность настроить BGP RTBH надёжнее и с меньшим числом усилий. |
|
Теперь достаточно описать два шаблона конфигов bgpd и zebra и добавить две строчки в файл. |
h2. Настройка на Carbon Reductor |
|
Вся логика по добавлению/удалению IP адресов уже реализована, команды тоже доступны из коробки. |
Всё можно сделать через меню: |
|
h1. Собственно как настроить |
Подключитесь по ssh, затем запустите команду меню: |
|
Все действия происходят внутри контейнера, так что первое: |
{code} |
chroot /app/reductor/ |
menu |
{code} |
h2. Указываем список хуков: |
Выберите BGP Blackhole \-> Настройка BGP Blackhole. |
|
дальше прописываем в файл: |
!1.png|border=1! |
|
{code} /cfg/userinfo/hooks/events.sh.hooks {code} |
*Включить BGP Blackhole* \- опция влияет на запуск самого контейнера BGP Blackhole. Если её выключить - ни один сервис внутри этого контейнера (ни BGP, ни OSPF, ни Zebra) работать не будет. |
|
содержимое: |
*Шаблон конфига Zebra* и *Шаблон конфига bgpd* менять не требуется в 99% случаев. Оставшийся 1% - когда требуется настроить что-то специфичное, что не будет вноситься в продукт никогда. |
|
*Пароль Zebra* и *Пароль bgpd* нужно установить отличные от стандартных и безопасные. *Router ID (reductor)*, как правило, совпадает с IP адресом Carbon Reductor. *Номер локальной AS BGP* \- номер приватной AS, используемой сервером Carbon Reductor. Диапазон возможных значений для приватных AS: 64512 - 65534 включительно. *Список маршрутизаторов* \- это список соседей по BGP имеет формат: |
{code} |
/usr/local/Reductor/bin/events.sh.bgp /usr/local/Reductor/bin/events.sh.zebra |
IP1:AS1 IP2:AS2 |
{code} |
разделитель между записями - пробел. |
|
h2. Затем создаём шаблоны конфигураций zebra и bgpd. |
*Список маршрутизаторов по IPv6* \- список соседей BGP по протоколу IPv6, имеет формат: |
{code} |
mkdir -p /cfg/etc/quagga/ touch /cfg/etc/quagga/zebra.conf.tmplt touch /cfg/etc/quagga/bgpd.conf.tmplt |
IP1 AS1, IP2 AS2 |
{code} |
h2. Настройка zebra |
*Включить интеграцию по BGP* \- опция включена по умолчанию, выключение требуется в случае если вы используете контейнер BGP Blackhole только для получения маршрутов до абонентов по OSPF. |
|
В файл: |
*Делить крупные подсети до префикса* \- эта опция требуется, если вышестоящий провайдер присылает вам маршруты, пересекающиеся с блокируемыми с меньшим префиксом, в результате чего они получают больший приоритет, чем маршруты анонсируемые Carbon Reductor, из-за чего последние не применяются и подсети не блокируются. |
|
{code} /cfg/etc/quagga/zebra.conf.tmplt {code} |
|
Прописываем, указывая свой надёжный пароль и hostname: |
Нажать назад, применить настройки: |
|
{code} hostname reductor password password interface lo ! @@@BLACKHOLE%%% ! ip forwarding ! line vty ! {code} |
!Screen Shot 2017-03-14 at 14.12.30.png|border=1! |
|
h2. Настройка bgpd. |
zebra и bgpd должны перезапуститься без ошибок: |
|
В файл: |
!Screen Shot 2017-03-14 at 14.12.36.png|border=1! |
|
{code} /cfg/etc/quagga/bgpd.conf.tmplt {code} |
|
прописываем: |
h2. Пример настройки соседа Reductor-а по BGP |
|
* свой hostname * надёжный пароль: * router bgp id (на редукторе) * remote as (на роутере) * заменяем 10.0.0.1 на IP вашего шлюза * заменяем 10.0.0.2 на IP Carbon Reductor с которого доступен ваш шлюз * не трогаем @@@BLACKHOLE%%%, туда будут добавляться IP адреса при рестарте контейнера |
{note} Настройка производится именно на маршрутизаторе, не на Reductor-е {note} |
|
Конфигурация роутеров может отличаться. h3. Linux роутер с Quagga. bgpd.conf Здесь: * router bgp 65002 - номер AS маршрутизатора. * bgp router-id 10.0.0.2 - его IP, с которым он доступен Carbon Reductor'у * 10.0.0.1 - IP адрес Carbon Reductor * 192.168.255.255 - это IP-адрес, куда будет направляться запрещённый трафик. |
{code} |
hostname reductor border |
password password log file /var/log/quagga/bgpd.log ! |
router bgp 650012 |
bgp router-id 10.0.0.2 |
redistribute static route-map BLACKHOLE |
neighbor 10.0.0.1 remote-as 650021 |
neighbor 10.0.0.1 description ROUTER |
neighbor 10.0.0.1 ebgp-multihop 8 |
neighbor 10.0.0.1 update-source 10.0.0.2 |
neighbor 10.0.0.1 soft-reconfiguration inbound |
neighbor 10.0.0.1 route-map BLACKHOLE in |
! |
@@@BLACKHOLE%%% |
Это требуется, чтобы запрещённый трафик не шёл на редуктор, а дропался на самом роутере. |
! |
ip as-path access-list 1 deny .* |
ip prefix-list ANY permit any |
! route-map BLACKHOLE permit 10 |
description blackhole |
match ip address prefix-list BLACKHOLE ANY |
set ip next-hop 192.168.255.255 set local-preference 10 |
set community 650012:666 additive |
! line vty ! {code} |
zebra.conf |
|
h2. Настройка роутера |
{code} hostname border interface lo ip address 192.168.255.255/32 ! ip route 192.168.255.255/32 Null0 !Можно заменить Null0 на reject, тогда будет отправляться host unrecheable в ответ ! {code} |
|
Конфигурация роутеров может отличаться. В качестве примера - Linux с Quagga. |
Можно настроить доступ к сессию BGP и без создания интерфейса lo и из route-map убрать "set ip next-hop 192.168.255.255". Тогда запрещённый трафик будет идти на редуктор и дропаться уже там. |
|
bgpd.conf |
В примере есть запись |
{code} |
hostname border password password log file /var/log/quagga/bgpd.log |
set local-preference 10 {code} Она требуется для того, чтобы маршрут от редуктора точно попал в таблицу маршрутизации, потому что у него будут высший приоритет, но в зависимости правил действующих в вашей сети эта настройка может меняться. h3. Cisco 3750 Нужно заменить следующие значения: XXXXX - номер приватной AS Cisco-роутера. x.x.x.x - IP сервера Carbon Reductor. 65001 - номер приватной AS Carbon Reductor, указанный при настройке BGP Blackhole. {code} |
! |
router bgp 65002 bgp router-id 10.0.0.1 redistribute static route-map BLACKHOLE neighbor 10.0.0.2 remote-as 65001 neighbor 10.0.0.2 description ROUTER neighbor 10.0.0.2 ebgp-multihop 8 neighbor 10.0.0.2 update-source 10.0.0.1 neighbor 10.0.0.2 soft-reconfiguration inbound |
interface Null0 no ip unreachables |
! |
ip as-path access-list 1 deny .* |
interface Loopback666 ip address 192.168.255.255 255.255.255.255 |
! |
route-map BLACKHOLE permit 10 description blackhole match ip address prefix-list BLACKHOLE set ip next-hop 192.168.255.255 set local-preference 10 set community 65002:666 additive |
ip community-list standard black-hole permit 65001:666 |
! |
line vty |
router bgp XXXXX neighbor x.x.x.x 0 remote-as 65001 neighbor x.x.x.x description REDUCTOR neighbor x.x.x.x route-map BLACK-HOLE in |
! |
! ip route 192.168.255.255 255.255.255.255 Null0 ! ! route-map BLACK-HOLE permit 10 match community black-hole set ip next-hop 192.168.255.255 set origin igp set community no-export ! |
{code} |
{info} Интеграции с другими роутерами приведены в статье: [https://github.com/carbonsoft/reductor_bgp_rtbh] {info} *Пример настройки соседа Reductor-а по BGP для IPv6:* {code} neighbor fc01::1 remote-as 65001 no neighbor fc01::1 activate address-family ipv6 neighbor fc01::1 activate neighbor fc01::1 ebgp-multihop 8 neighbor fc01::1 soft-reconfiguration inbound neighbor fc01::1 route-map BLACKHOLE_V6 in exit-address-family ipv6 prefix-list ANY_V6 permit any route-map BLACKHOLE_V6 permit 10 match ipv6 address prefix-list ANY_V6 set ipv6 next-hop local fc01::ffff set local-preference 10 set community 65002:666 additive |
zebra.conf |
interface lo ipv6 address fc01::ffff/128 |
{code} |
hostname border |
{code} |
h2. Подводные камни и как их обходить 20.09.2017. Настройка BGP RTBH приводит к появлению Null-маршрутов до запрещённых IP на самом редукторе. Это приводит к тому, что пришедшие в зеркало трафика пакеты, идущие на эти IP адреса не анализируются. В принципе в полностью рабочей схеме это не страшно - пакеты всё равно будут DROP'нуты на стороне бордера. Тем не менее, если что-то пойдёт не так (разорвётся соединение с роутером, не проверили настройки итд) то бордер пакеты отбрасывать не будет, а редуктор не будет их анализировать и в итоге получим пропуск. Сейчас мы ищем решение, которое позволит обойти эту проблему. Временным решением может быть разворачивание отдельного редуктора на виртуальной машине (мы дадим бесплатную лицензию), которая занимается тем, что скачивает и обрабатывает списки, к трафику не имеет никакого отношения, а основное её предназначение - это контейнер BGP Blackhole. Таким образом получаем двойную фильтрацию и повышение надёжности: роутер дропает пакеты, а основной редуктор посылает ресеты на все запрещённые IP адреса (в итоге пользователю не надо будет дожидаться таймаута установки соединения). Можно это развернуть не на виртуальной машине, а не резервном сервере с Carbon Reductor, который также занимается обработкой того же зеркала трафика. 28.03.2018 Найдено решение с запуском quagga версии 1.1.1 c добавлением нескольких таблиц маршрутизации. Благодаря этому не появляется null-маршрутов в основной таблице на редукторе. Схема проверена и работает исправно. |