====== Блокировка списка доменов+ip ====== [[billing:howto|Вернуться на уровень выше]] Как работает: создаем список domains.list, куда вносим все домены, которые нужно заблокировать. Также есть файл ip.list, в который можно добавить уже известные IP. Скрипт по указанным днс находит все ip и добавляет в ipset. Правилом в iptables список блокируется. === Установка === Поставить dig Для Centos: yum install -y bind-utils ==== Скрипт загрузки IP доменов в Ipset ==== #!/bin/bash #͑Client DNS DNS1=8.8.8.8 DNS2=8.8.4.4 DIG=`which dig` IPSET=`which ipset` IPSETNAME="paysystems" HOME_DIR=$(cd $(dirname $0)&& pwd) SRCDATA=`cat $HOME_DIR/domains.list` IPLIST="$HOME_DIR/ip.list" RESULT="$HOME_DIR/paysys.txt" $DIG +short $SRCDATA @$DNS1 |grep '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}' > $RESULT $DIG +short $SRCDATA @$DNS2 |grep '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}' >> $RESULT cat $IPLIST >> $RESULT $IPSET -N $IPSETNAME iphash -exist for i in `cat $RESULT`; do $IPSET add $IPSETNAME $i -exist 2>/dev/null; done DNS1 и DNS2 - указываем клиентские DNS-сервера (это важно!) domains.list - файл с доменами ip.list - файл с IP (тут можно добавлять IP к общему списку) Пример правила для iptables: ipset -N blacklist iphash -exist iptables -A FORWARD -m set --match-set blacklist src -j REJECT --reject-with icmp-proto-unreach Добавить в крон: 00 6 * * * root /var/mikbill/scripts/blacklist/blacklist.sh > /dev/null