====== Блокировка списка доменов+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