Мне нужно заблокировать некоторые страны с помощью ipset и iptables.
Что я сделал до сих пор (создайте новый набор ipset 'geoblock'):
sudo ipset create geoblock hash:net,port
затем я создал следующий скрипт /usr/sbin/ipsetfirewall.sh
#!/bin/bash
for IP in $(wget -O – http://www.ipdeny.com/ipblocks/data/countries/{cn,iq,af,ir,ae,sg,hk,kw,kg}.zone)
do
# ban everything – block countryX
sudo ipset add geoblock $IP
done
Как объяснено Вот Я также пробовал:
wget -O – http://www.ipdeny.com/ipblocks/data/countries/{cn,iq,af,ir,ae,sg,hk,kw,kg}.zone --header "Referer: www.ipdeny.com"
и я тоже пробовал (так как использую ipv4)
wget -4 http://www.ipdeny.com/ipblocks/data/countries/{cn,iq,af,ir,ae,sg,hk,kw,kg}.zone
При всех моих попытках я получаю ту же ошибку:
/usr/sbin$ sudo sh ipsetfirewall.sh
--2016-04-21 15:40:58-- http://www.ipdeny.com/ipblocks/data/countries/%7Bcn,iq,af,ir,ae,sg,hk,kw,kg%7D.zone
Resolving www.ipdeny.com (www.ipdeny.com)... 192.241.240.22
Connecting to www.ipdeny.com (www.ipdeny.com)|192.241.240.22|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2016-04-21 15:40:59 ERROR 404: Not Found.
В чем проблема?
Используйте этот скрипт:
for country in cn tw in
do
ipset destroy geoblock-$country > /dev/null 2>&1
ipset create geoblock-$country hash:net
for IP in $(wget -O - http://www.ipdeny.com/ipblocks/data/countries/$country.zone)
do
ipset add geoblock-$country $IP
done
done
ipset save > /etc/ipset.rules
Наверное, эффективнее захватывать все зоны
wget http://www.ipdeny.com/ipblocks/data/countries/all-zones.tar.gz
tar -xzf all-zones.tar.gz
В противном случае, по одному
for C in cn iq af ir ae sg hk kw kg ; do
wget -4 http://www.ipdeny.com/ipblocks/data/countries/${C}.zone
done