Дробление крупных подсетей на мелкие

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

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

просмотр истории страницы
h2. Как дробить на CR7 (ЧЕРНОВИК)

{color:#808000}{*}ФАЙЛ НИЖЕ ЯВЛЯЕТСЯ ПРОТОТИПОМ И ЧЕРНОВИКОМ, В ПРОДАКШНЕ РАБОТАТЬ НЕ БУДЕТ{*}{color}
{color:#808000}{*}ЭТО ПРОТОТИПОМ И ЧЕРНОВИК, В ПРОДАКШНЕ РАБОТАТЬ НЕ БУДЕТ{*}{color}

{color:#000000}Требуются бэкпорты из CR8.{color}

{color:#000000}Список недостающих частей:{color}

* {color:#000000}утилита для разбивки списка сетей до определённого префикса{color}
* {color:#000000}утилита для разбивки конкретной сети до определённого префикса{color}
* {color:#000000}исправления в пакет carbon_ip_tools{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
#!/bin/bash {code}

declare -A app
app['bgpd_split_to_prefix']='16'
В events.sh в начале добавить

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 "При синхронизации списков 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
}
{code}
. /usr/local/Reductor/userinfo/hooks/events.sh.split
{code}