Интеграция с роутер на Linux. Использование ipset

Skip to end of metadata
Go to start of metadata
Вы просматриваете старую версию данной страницы. Смотрите текущую версию. Сравнить с текущим  |   просмотр истории страницы

Нужно выполнить следующие шаги:

Необходимо создать сам хук:

touch /app/reductor/cfg/userinfo/hooks/events.sh
chmod a+x /app/reductor/cfg/userinfo/hooks/events.sh

Наполнить его следующим содержимым:

#!/bin/bash

  1. Данный скрипт является хуком, а не утилитой.
  2. Не смущайтесь, что здесь ничего не вызывается напрямую.
  3. Не смущайтесь, что здесь есть неопределённые переменные.
  4. Вся логика по сравнению списков IP адресов в основном скрипте.
  5. Её не надо трогать. От вас нужно только описать 3.5 функции:
  6. - SSH - способ передачи команды с stdin на оборудование
  7. - ip_block_full_add/del/get.
  8. Не нужно что-то изобретать, всё готово, нужно только описать эту прослойку!

SSH="/usr/bin/ssh -T carbon@<ip вашего роутера> bash"

  1. отсекаем лишнее из вывода ipset
    __only_ip() {
    egrep -o "$ip_or_ipmask_regex" | sed -E "s|^$ip_regex$|&/32|g"
    }
  1. отправить на оборудование команду на блокирование ip адреса
    ip_block_full_add() {
    local ip="$1"
    echo "/sbin/ipset add reductorblock $ip" | $SSH
    }
  1. отправить на оборудование команду на снятие блокировки ip адреса
    ip_block_full_del() {
    local ip="$1"
    echo "/sbin/ipset del reductorblock $ip" | $SSH
    }
  1. получить список заблокированных ip адресов
    ip_block_full_get() {
    echo "/sbin/ipset save reductorblock" | $SSH | __only_ip
    }

Чтобы всё заработало нужно:

1. Создать нужный ipset с hash типом net на роутере
2. Указать правильные IP адрес роутера и логин в переменной $SSH
3. Выполнить один раз руками ssh-copy-id root@$ip_роутера
4. Проверить вручную команду TIMEOUT=0 chroot /app/reductor /usr/local/Reductor/bin/events.sh

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.