История изменений
Исправление r0ck3r, (текущая версия) :
1) Устанавливаем tor, redsocks и nslookup
2) в /etc/tor/torrc прописываем:
SOCKSPort 0.0.0.0:9050
3) Прописываем в /etc/redsocks.conf это:
base {
log_debug = on;
log_info = on;
log = stderr;
daemon = on;
redirector = iptables;
}
redsocks {
local_ip = 0.0.0.0;
local_port = 12345;
ip = 127.0.0.1;
port = 9050;
type = socks5;
}
redudp {
local_ip = 127.0.0.1;
local_port = 10053;
ip = 192.168.10.1;
port = 9050;
dest_ip = 8.8.8.8;
dest_port = 53;
udp_timeout = 30;
udp_timeout_stream = 180;
}
iptables -t nat -X REDSOCKS
iptables -t nat -N REDSOCKS
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.10.1.0/22 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -j LOG -p tcp --syn --log-level info --log-prefix "rs "
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
iptables -t nat -A REDSOCKS -j LOG -p tcp --syn --log-level info --log-prefix "err "
5) Создаем файл /usr/bin/unblocker с таким содержимым:
#!/bin/sh
FILE="/etc/blocked"
ADD_CMD_1="iptables -t nat -I PREROUTING 1 -d _DEST_IP_ -p tcp -s 192.168.1.0/16 -j REDSOCKS"
ADD_CMD_2="iptables -t nat -I OUTPUT 1 -d _DEST_IP_ -p tcp -j REDSOCKS"
CLEAR_CMD="iptables -t nat -F PREROUTING"
LOG="/var/log/ip_list"
get_md5 () {
if [ -f $FILE ]
then
md5sum $FILE | cut -d" " -f1;
else
touch $FILE;
get_md5;
fi
}
update_chains () {
$CLEAR_CMD
if [ -f $FILE ]
then
echo "" > $LOG;
cat $FILE |
while read i;
do
( nslookup "$i" | grep -v "#53" | grep Address | grep "\." | cut -d":" -f2 | cut -d" " -f2);
done |
while read i;
do
CMD_1=`echo $ADD_CMD_1 | sed s/_DEST_IP_/$i/g`;
CMD_2=`echo $ADD_CMD_2 | sed s/_DEST_IP_/$i/g`;
echo $i >> $LOG;
$CMD_1;
$CMD_2;
done;
fi
}
echo "" > $LOG;
MD5_BEFORE=`get_md5`;
update_chains;
while :;
do
sleep 10;
MD5=`get_md5`;
if [ "$MD5_BEFORE" = "$MD5" ]
then
continue;
else
MD5_BEFORE=$MD5;
update_chains;
fi
done
6) делаем /usr/bin/unblocker исполняемым при помощи chmod +x
7) настраиваем автозапуск usr/bin/unblocker через cron или /etc/rc.local
8) В /etc/blocked помещаем список заблокированных ресурсов по одному на строку
9) Убеждаемся, что автозапуск для tor и redsocks включен и перезагружаем роутер
Исходная версия r0ck3r, :
1) Устанавливаем tor, redsocks и nslookup
2) в /etc/tor/torrc прописываем:
SOCKSPort 0.0.0.0:9050
3) Прописываем в /etc/redsocks.conf это:
base {
log_debug = on;
log_info = on;
log = stderr;
daemon = on;
redirector = iptables;
}
redsocks {
local_ip = 0.0.0.0;
local_port = 12345;
ip = 127.0.0.1;
port = 9050;
type = socks5;
}
redudp {
local_ip = 127.0.0.1;
local_port = 10053;
ip = 192.168.10.1;
port = 9050;
dest_ip = 8.8.8.8;
dest_port = 53;
udp_timeout = 30;
udp_timeout_stream = 180;
}
iptables -t nat -X REDSOCKS
iptables -t nat -N REDSOCKS
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.10.1.0/22 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -j LOG -p tcp --syn --log-level info --log-prefix "rs "
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
iptables -t nat -A REDSOCKS -j LOG -p tcp --syn --log-level info --log-prefix "err "
5) Создаем файл /usr/bin/unblocker с таким содержимым:
#!/bin/sh
FILE="/etc/blocked"
ADD_CMD_1="iptables -t nat -I PREROUTING 1 -d _DEST_IP_ -p tcp -s 192.168.1.0/16 -j REDSOCKS"
ADD_CMD_2="iptables -t nat -I OUTPUT 1 -d _DEST_IP_ -p tcp -j REDSOCKS"
CLEAR_CMD="iptables -t nat -F PREROUTING"
LOG="/var/log/ip_list"
get_md5 () {
if [ -f $FILE ]
then
md5sum $FILE | cut -d" " -f1;
else
touch $FILE;
get_md5;
fi
}
update_chains () {
$CLEAR_CMD
if [ -f $FILE ]
then
echo "" > $LOG;
cat $FILE |
while read i;
do
( nslookup "$i" | grep -v "#53" | grep Address | grep "\." | cut -d":" -f2 | cut -d" " -f2);
done |
while read i;
do
CMD_1=`echo $ADD_CMD_1 | sed s/_DEST_IP_/$i/g`;
CMD_2=`echo $ADD_CMD_2 | sed s/_DEST_IP_/$i/g`;
echo $i >> $LOG;
$CMD_1;
$CMD_2;
done;
fi
}
echo "" > $LOG;
MD5_BEFORE=`get_md5`;
update_chains;
while :;
do
sleep 10;
MD5=`get_md5`;
if [ "$MD5_BEFORE" = "$MD5" ]
then
continue;
else
MD5_BEFORE=$MD5;
update_chains;
fi
done
6) делаем /usr/bin/unblocker исполняемым при помощи chmod +x
7) настраиваем автозапуск usr/bin/unblocker через cron или /etc/rc.local
8) В /etc/blocked помещаем список заблокированных ресурсов по одному на строку