|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (29)
просмотр истории страницыВ текущей ситуации на 18 апреля 2018: |
Большое число сетей приводят к медленной синхронизации. *Подсказка*: крупные изменения списков применяются долго из-за удаления старых адресов, если перед синхронизацией полностью очистить список на маршрутизаторе - всё будет проходить значительно быстрее. |
|| До какого \\ префикса режем || Сколько сетей \\ |
... |
| /32 | ≈17280000 | |
h2. Как дробить на CR7 (ЧЕРНОВИК) |
|
{color:#808000}{*}ФАЙЛ НИЖЕ ЯВЛЯЕТСЯ ПРОТОТИПОМ И ЧЕРНОВИКОМ, В ПРОДАКШНЕ РАБОТАТЬ НЕ БУДЕТ{*}{color} |
{color:#808000}{*}ЭТО ПРОТОТИП И ЧЕРНОВИК, В ПРОДАКШНЕ РАБОТАТЬ НЕ БУДЕТ{*}{color} |
|
{color:#000000}Требуются бэкпорты из CR8.{color} |
{code} wget "https://download5.carbonsoft.ru/reductor/bgp_split_hotfix.tar.gz" -O /root/bgp_split_hotfix.tar.gz cd / tar xfz /root/bgp_split_hotfix.tar.gz {code} |
|
{color:#000000}Список недостающих частей:{color} |
В файл |
|
* {color:#000000}утилита для разбивки списка сетей до определённого префикса{color} * {color:#000000}утилита для разбивки конкретной сети до определённого префикса{color} * {color:#000000}исправления в пакет carbon_ip_tools{color} |
{code} /usr/local/Reductor/userinfo/hooks/events.sh {code} в начале добавить |
{code} |
. /usr/local/Reductor/userinfo/hooks/events.sh.split |
#!/bin/bash {code} |
|
declare -A app app['bgpd_split_to_prefix']='16' |
В файле events.sh.split в начале укажите префикс, до которого хотите дробить сети. |
|
IP_BLOCK_FULL_LIST="$LISTDIR/load/ip_subnet_block.load" {code} |
app['bgpd_split_to_prefix']='20' {code} |
|
check_lists() { # $IP_BLOCK_FULL_LIST должен быть инициализирован в хуке [ -s "$IP_BLOCK_FULL_LIST" ] && return 0 log "Пустой список $IP_BLOCK_FULL_LIST, ждём 2 секунды" sleep 2 [ -s "$IP_BLOCK_FULL_LIST" ] && return 0 log "При синхронизации списков IP с маршрутизатором $IP_BLOCK_FULL_LIST оказался пустым" return 1 } |
и запустите |
|
__main() { log "tick begin" local DATA_DIR=/var/lib/reductor/ local FILE=$DATA_DIR/ip_block_full local NEW=$FILE.new local OLD=$FILE.old mkdir -p $DATA_DIR/ check_lists || return 0 |
prepare {code} |
maskify < "$IP_BLOCK_FULL_LIST" \ | ${HOOKDIR}/split-subnet-list.sh - "${app['bgpd_split_to_prefix']}" > "$NEW" ip_block_full_get | sort -u | maskify > $OLD mikrotik_retry "$OLD" log "На сервере содержится $(wc -l < "$OLD") записей" log "Для полной блокировки имеется $(wc -l < "$NEW") записей" files_to_events "$OLD" "$NEW" | process_events log "tick end" return 0 |
} /usr/local/Reductor/bin/events.sh |
{code} |
|
# отправить на оборудование команду на блокирование ip адреса ip_block_full_add() { echo "$1" >> /tmp/ip_block } |
h3. Чтобы откатиться |
|
# отправить на оборудование команду на снятие блокировки ip адреса ip_block_full_del() { grep -v "^$1$" /tmp/ip_block > /tmp/ip_block.$$ mv /tmp/ip_block.$$ /tmp/ip_block } |
просто убрать строчку с подключением events.sh.split из events.sh и запустить: |
|
# получить список уже заблокированных IP адресов, нужно для вычисления дельты ip_block_full_get() { cat /tmp/ip_block } |
{code} |
/usr/local/Reductor/bin/events.sh {code} заново. |