h5. Необходимо создать сам хук:
\\
{code}
[root@rReductor]# touch /usr/local/Reductor/userinfo/hooks/events.sh
[root@rReductor]# chmod a+x /usr/local/Reductor/userinfo/hooks/events.sh
{code}
\\
h5. Наполнить его следующим содержимым:
\\
{code}
#!/bin/bash
IPSET=xge_reductor_ip_block
SSH="ssh -T root@10.0.0.1"
# отправить на оборудование команду на блокирование ip адреса
ip_block_full_add() {
local ip="$1"
echo ipset add $IPSET $ip | $SSH
}
# отправить на оборудование команду на снятие блокировки ip адреса
ip_block_full_del() {
local ip="$1"
echo ipset del $IPSET $ip | $SSH
}
# получить список уже заблокированных IP адресов, нужно для вычисления дельты
ip_block_full_get() {
echo ipset save $IPSET | $SSH | egrep -o "$ip_regex"
}
{code}
\\
h5. Чтобы всё заработало нужно:
\\
1. Указать правильный IP адрес XGE в переменной $SSH
2. Выполнить один раз руками ssh-copy-id root@$IP-адрес-xge
3. Проверить вручную команду TIMEOUT=0 /usr/local/Reductor/bin/events.sh
\\
h5. На самом XGE необходимо создать/дополнить [хук|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=50660094] таким содержимым:
\\
{code}
#!/bin/bash
if [ "$1" = '/etc/init.d/firewall' -a "$2" = 'start' ]; then
MAC="<mac-адрес>" # MAC-адрес с которого прилетают редиректы от Редуктора, обычно совпадает с сетёвкой редуктора
NIC="eth1" # сетевая карта роутера, на которую прилетают редиректы с редуктора
iptables -t raw -F
iptables -t raw -N reductor_replies &>/dev/null || true
# Не создаём контраки с сорс-портами 53, 80, 443.
iptables -t raw -A reductor_replies -p tcp --sport 80 -j NOTRACK
iptables -t raw -A reductor_replies -p tcp --sport 443 -j NOTRACK
iptables -t raw -A reductor_replies -p udp --sport 53 -j NOTRACK
iptables -t raw -A PREROUTING -i "$NIC" -m mac --mac-source "$MAC" -j reductor_replies
# не натим обращение на заглушку (при условии, что заглушка прямо на Редукторе с серой сеткой и клиенты идёт на неё с серой сети)
iptables -I xge_post -t nat -d <ip адрес заглушки> -j ACCEPT
fi
{code}
\\
{code}
[root@rReductor]# touch /usr/local/Reductor/userinfo/hooks/events.sh
[root@rReductor]# chmod a+x /usr/local/Reductor/userinfo/hooks/events.sh
{code}
\\
h5. Наполнить его следующим содержимым:
\\
{code}
#!/bin/bash
IPSET=xge_reductor_ip_block
SSH="ssh -T root@10.0.0.1"
# отправить на оборудование команду на блокирование ip адреса
ip_block_full_add() {
local ip="$1"
echo ipset add $IPSET $ip | $SSH
}
# отправить на оборудование команду на снятие блокировки ip адреса
ip_block_full_del() {
local ip="$1"
echo ipset del $IPSET $ip | $SSH
}
# получить список уже заблокированных IP адресов, нужно для вычисления дельты
ip_block_full_get() {
echo ipset save $IPSET | $SSH | egrep -o "$ip_regex"
}
{code}
\\
h5. Чтобы всё заработало нужно:
\\
1. Указать правильный IP адрес XGE в переменной $SSH
2. Выполнить один раз руками ssh-copy-id root@$IP-адрес-xge
3. Проверить вручную команду TIMEOUT=0 /usr/local/Reductor/bin/events.sh
\\
h5. На самом XGE необходимо создать/дополнить [хук|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=50660094] таким содержимым:
\\
{code}
#!/bin/bash
if [ "$1" = '/etc/init.d/firewall' -a "$2" = 'start' ]; then
MAC="<mac-адрес>" # MAC-адрес с которого прилетают редиректы от Редуктора, обычно совпадает с сетёвкой редуктора
NIC="eth1" # сетевая карта роутера, на которую прилетают редиректы с редуктора
iptables -t raw -F
iptables -t raw -N reductor_replies &>/dev/null || true
# Не создаём контраки с сорс-портами 53, 80, 443.
iptables -t raw -A reductor_replies -p tcp --sport 80 -j NOTRACK
iptables -t raw -A reductor_replies -p tcp --sport 443 -j NOTRACK
iptables -t raw -A reductor_replies -p udp --sport 53 -j NOTRACK
iptables -t raw -A PREROUTING -i "$NIC" -m mac --mac-source "$MAC" -j reductor_replies
# не натим обращение на заглушку (при условии, что заглушка прямо на Редукторе с серой сеткой и клиенты идёт на неё с серой сети)
iptables -I xge_post -t nat -d <ip адрес заглушки> -j ACCEPT
fi
{code}