|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (21)
просмотр истории страницыh1. Что даёт |
{toc} |
|
Позволяет настроить анонсирование IP адресов подсетями. |
|
Появление крупных префиксов в реестре не будет приводить к зависаниям маршрутизаторов. |
h1. Перед тем как начать |
|
Для включения нужно: |
Проверьте, что хук работает: |
|
Заменить хук приведённым ниже примером, с поддержкой подсетей. |
{code} tail -f /var/log/reductor/reductor.log {code} |
|
Если есть ошибки соединения с сервером или другие проблемы - сперва решите их. |
|
Включить опцию menu \-> "Настройки алгоритма фильтрации" \-> "Синхронизировать IP-адреса подсетями" |
h1. Хук для Quagga (BGP) |
|
Очистить конфиги quagga от маршрутов и перезаполнить их: |
Проверить что используется quagga: {code} ps aux | grep bgpd {code} |
|
Хук позволяет настроить анонсирование IP адресов подсетями, появление крупных префиксов в реестре не будет приводить к зависаниям маршрутизаторов. Для включения нужно: Бэкапим старый хук: Для Carbon Reductor 7: |
{code} |
/etc/init.d/crond stop killall events.sh grep -v '^ip prefix-list' /etc/quagga/bgpd.conf > /etc/quagga/bgpd.conf.no_ip cat /etc/quagga/bgpd.conf.no_ip > /etc/quagga/bgpd.conf egrep -v '^(ip prefix-list|ip route)' /etc/quagga/zebra.conf > /etc/quagga/zebra.conf.no_ip cat /etc/quagga/zebra.conf.no_ip > /etc/quagga/zebra.conf /etc/init.d/zebra restart /etc/init.d/bgpd restart /etc/init.d/crond start /usr/local/Reductor/bin/events.sh |
cp -a /usr/local/Reductor/userinfo/hooks/events.sh /root/events.sh.$(date +%s) |
{code} |
h2. Хук events.sh |
Для Carbon Reductor 8: {code} cp -a /app/reductor/cfg/userinfo/hooks/events.sh /root/events.sh.$(date +%s) {code} Заменить хук приведённым ниже примером, с поддержкой подсетей. |
{code} #!/bin/bash |
# этот хук поддерживает отправку только подсетями # предполагается, что синхронизируемый список содержит # только подсети уже с маской и в ответ мы получаем # именно IP адреса с маской |
commit() { echo "wr m" | vtysh |
... |
} {code} |
Включить опцию menu \-> "Настройки алгоритма фильтрации" \-> "Синхронизировать IP-адреса подсетями" Очистить конфиги quagga от маршрутов и перезаполнить их: {code} /etc/init.d/crond stop killall events.sh grep -v '^ip prefix-list' /etc/quagga/bgpd.conf > /etc/quagga/bgpd.conf.no_ip cat /etc/quagga/bgpd.conf.no_ip > /etc/quagga/bgpd.conf egrep -v '^(ip prefix-list|ip route)' /etc/quagga/zebra.conf > /etc/quagga/zebra.conf.no_ip cat /etc/quagga/zebra.conf.no_ip > /etc/quagga/zebra.conf /etc/init.d/zebra restart /etc/init.d/bgpd restart /etc/init.d/crond start /usr/local/Reductor/bin/events.sh {code} Если используется другой способ синхронизации (ssh, telnet, web api), лучше сперва вручную очистить маршруты перед синхронизацией. Удаление ≈40-60 тысяч маршрутов по одному может занять много времени. h1. Хук для Mikrotik Очистка address-list: {code} echo '/ip firewal address-list remove [find list~"reductor_ip_block_list"]' | /usr/bin/ssh -T admin@10.0.0.1 {code} Сам хук {code} #!/bin/bash SSH="/usr/bin/ssh -T admin@10.0.0.1" # отсекаем лишнее из вывода /print __only_ip() { egrep -o "$ip_or_ipmask_regex" | sed -E "s|^$ip_regex$|&/32|g" } # Отправляем на оборудование команду на блокирование ip адреса ip_block_full_add() { local ip="$1" echo "/ip firewall address-list add list=reductor_ip_block_list address=$ip comment=${ip}_reductor_ip_block" | $SSH } # Отправляем на оборудование команду на снятие блокировки ip адреса ip_block_full_del() { local ip="$1" echo "/ip firewall address-list remove [find comment=${ip}_reductor_ip_block]" | $SSH } mikrotik_firewall_prepare() { echo "/ip firewall filter add chain=reductor_forward comment=reductor_ip_block dst-address-list=reductor_ip_block_list action=drop" | $SSH echo "/ip firewall filter add chain=forward action=jump jump-target=reductor_forward place-before=0" | $SSH } # Получаем список заблокированных IP ip_block_full_get() { # mikrotik_firewall_prepare echo "/ip firewall address-list print where list=reductor_ip_block_list" | $SSH | __only_ip } {code} h1. Хук для Linux-роутеров Предполагаем, что ipset hash type = hash:net. В случае с hash:ip надо пересоздавать ipset, рестартить iptables итд. Чтобы пересоздать ipset нужно удалить все правила в iptables, которые его используют. Быстрая очистка ipset: {code} ipset flush rkn {code} Хук: {code} #!/bin/bash SSH="/usr/bin/ssh -T root@10.0.0.1 bash" SET_RKN=rkn # отсекаем лишнее из вывода ipset __only_ip() { grep add | egrep -o "$ip_or_ipmask_regex" | sed -E "s|^$ip_regex$|&/32|g" } # отправить на оборудование команду на блокирование ip адреса ip_block_full_add() { local ip="$1" echo "/sbin/ipset add $SET_RKN $ip" | $SSH } # отправить на оборудование команду на снятие блокировки ip адреса ip_block_full_del() { local ip="$1" echo "/sbin/ipset del $SET_RKN $ip" | $SSH } # получить список заблокированных ip адресов ip_block_full_get() { echo "/sbin/ipset save $SET_RKN" | $SSH | __only_ip } {code} |