LINUX.ORG.RU

История изменений

Исправление 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;                                                 
}  
4) В /etc/firewall.user пишем это:
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;                                                 
}  
4) В /etc/firewall.user пишем это:
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 помещаем список заблокированных ресурсов по одному на строку