Вы просматриваете старую версию данной страницы. Смотрите текущую версию.
Сравнить с текущим |
просмотр истории страницы
В текущей ситуации на 18 апреля 2018:
До какого префикса режем |
Сколько сетей получаем |
---|---|
не режем | ≈1800 |
/16 | 2015 |
/17 | 2289 |
/18 | 2837 |
/19 | 3934 |
/20 | 6128 |
/21 | 10518 |
/22 | 19301 |
/23 | 36872 |
/24 | 72014 |
/25 | ≈140000 |
/26 | ≈280000 |
/27 | ≈560000 |
/28 | ≈1080000 |
/29 | ≈2160000 |
/30 | ≈4320000 |
/31 | ≈8640000 |
/32 | ≈17280000 |
Как дробить на CR7 (ЧЕРНОВИК)
ФАЙЛ НИЖЕ ЯВЛЯЕТСЯ ПРОТОТИПОМ И ЧЕРНОВИКОМ, В ПРОДАКШНЕ РАБОТАТЬ НЕ БУДЕТ
Требуются бэкпорты из CR8.
Список недостающих частей:
- утилита для разбивки списка сетей до определённого префикса
- утилита для разбивки конкретной сети до определённого префикса
- исправления в пакет carbon_ip_tools
#!/bin/bash declare -A app app['bgpd_split_to_prefix']='16' IP_BLOCK_FULL_LIST="$LISTDIR/load/ip_subnet_block.load" 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 "Не синхронизируем пустой список, алертим и завершаем работу." 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 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 } # отправить на оборудование команду на блокирование ip адреса ip_block_full_add() { echo "$1" >> /tmp/ip_block } # отправить на оборудование команду на снятие блокировки ip адреса ip_block_full_del() { grep -v "^$1$" /tmp/ip_block > /tmp/ip_block.$$ mv /tmp/ip_block.$$ /tmp/ip_block } # получить список уже заблокированных IP адресов, нужно для вычисления дельты ip_block_full_get() { cat /tmp/ip_block }