Надоела уже порядком эта заглушка =).
Последовательность действий такая:
1. Настраиваем OpenVpn подключение к какому нибудь буржуйскуму серверу.
2. Получаем список заблокированных ресурсов.
3. Парсим его, извлекая нужные нам IP.
4. ipset+iptables+iproute2.
Первый пункт описывать тут не стану. С этим нет проблем. Остальное решается с помощью вот такого скрипта
#!/bin/bash
file=/etc/openvpn/rkz.list
tmp=/tmp/black_ip.tmp
gw=tun3
IPSET_TB=rkz
MARK_ID_DEC=4
MARK_ID_HEX=`printf 0x'%x\n' $MARK_ID_DEC`
if [ -n "`ip rule | grep "lookup $MARK_ID_DEC"`" ]; then
ip rule del from all fwmark $MARK_ID_HEX lookup $MARK_ID_DEC
fi
if [ -n "`ip route show table $MARK_ID_DEC`" ]; then
ip route del default dev $gw table $MARK_ID_DEC
fi
while [ -n "`iptables-save -t mangle | grep $MARK_ID_HEX | grep PREROUTING `" ]; do iptables -t mangle -D PREROUTING -m set --match-set rkz dst -j MARK --set-xmark $MARK_ID_HEX; done
while [ -n "`iptables-save -t mangle | grep $MARK_ID_HEX | grep OUTPUT`" ]; do iptables -t mangle -D OUTPUT -m set --match-set rkz dst -j MARK --set-xmark $MARK_ID_HEX; done
if [ -n "`ipset -L rkz 2> /dev/null`" ]; then ipset -X rkz; fi
wget -q https://www.assembla.com/code/z-i/git/nodes/master/dump.csv?_format=raw -O $tmp
grep -oE '\b[0-9]{1,3}(\.[0-9]{1,3}){3}\b' $tmp |sort -u > $file
ipset -N rkz iphash hashsize 999999 maxelem 999999
while read line
do
ipset -A rkz $line
done < $file
iptables -t mangle -A PREROUTING -m set --match-set rkz dst -j MARK --set-xmark $MARK_ID_HEX
iptables -t mangle -A OUTPUT -m set --match-set rkz dst -j MARK --set-xmark $MARK_ID_HEX
ip rule add from all fwmark $MARK_ID_HEX lookup $MARK_ID_DEC
ip route add default dev $gw table $MARK_ID_DEC
Итак. Список получаем с https://www.assembla.com/code/z-i/git/nodes/master/dump.csv?_format=raw. Парсим его, вытаскивая IP. И прописываем маршруты.
Не забывает правильно настроить SNAT в POSTROUTING.
UPD. В конфиг OpenVpn добавим
script-security 2
up /путь/к_скрипту
и предыдущий скрипт будет запускаться сам, как только появится подключение к OpenVpn.