Выборочный обход блокировок на прошивке padavan
dimonb@gmail.comЗаимствовано у https://habr.com/ru/post/428992/. Творчески переработано.
Зайдите на вкладку Персонализация/Скрипты/Выполнить перед инициализацией маршрутизатора и добавьте в конец скрипта загрузку модулей ipset
### load ipset modules logger -t init_router load ip_set modules modprobe ip_set modprobe ip_set_hash_ip modprobe ip_set_hash_net modprobe ip_set_bitmap_ip modprobe ip_set_list_set modprobe xt_set
После этого перезагрузите маршрутизатор или выполните эти команды в консоли. Для дальнейшей корректной работы нужно чтобы эти модули были загружены в ядро.
Зайдите на вкладку Персонализация/Скрипты/Выполнить после перезапуска правил брандмауэра
И поправьте скрипт на этот:
#!/bin/sh ### Custom user script ### Called after internal iptables reconfig (firewall update) function unblock_list { cat <<'EOF' ### paste unblock list here ###Торрент-трекеры rutracker.org rutor.info rutor.is mega-tor.org kinozal.tv nnm-club.me nnm-club.ws tfile.me tfile-home.org tfile1.cc megatfile.cc megapeer.org megapeer.ru tapochek.net tparser.org tparser.me rustorka.com uniongang.tv fast-torrent.ru bt2.t-ru.org bt.t-ru.org ###Каталоги медиаконтента для программ rezka.ag hdrezka.ag hdrezka.me filmix.co filmix.cc seasonvar.ru ###Книги lib.rus.ec flibusta.is flibs.me flisland.net flibusta.site ###Телеграмg telegram.org tdesktop.com tdesktop.org tdesktop.info tdesktop.net telesco.pe telegram.dog telegram.me t.me telegra.ph web.telegram.org desktop.telegram.org updates.tdesktop.com venus.web.telegram.org flora.web.telegram.org vesta.web.telegram.org pluto.web.telegram.org aurora.web.telegram.org 149.154.160.0/20 91.108.4.0/22 91.108.8.0/22 91.108.12.0/22 91.108.16.0/22 91.108.56.0/22 109.239.140.0/24 67.198.55.0/24 ###Разное 7-zip.org edem.tv 4pna.com 2019.vote protonmail.com api.protonmail.ch ###Проверка Tor check.torproject.org ###Пример разблокировки по IP (убрать # в начале строки) #195.82.146.214 ###Пример разблокировки по CIDR (убрать # в начале строки) #103.21.244.0/22 ###Пример разблокировки по диапазону (убрать # в начале строки) #100.100.100.200-100.100.100.210 ### before this line EOF } ### function to resolve dns names function xdig { nslookup $1 localhost | sed -n -e '/^Name:/,$p' | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' } ### update ipset function update_ipset { logger -t unblock starting update ipset list # wait dns is up and ready until ADDRS=$(xdig google.com) && [ -n "$ADDRS" ] > /dev/null 2>&1; do sleep 5; done # get list of adresses from unblock_list unblock_list | while read line || [ -n "$line" ]; do [ -z "$line" ] && continue [ "${line:0:1}" = "#" ] && continue cidr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}') if [ ! -z "$cidr" ]; then ipset -exist add unblock $cidr continue fi range=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}-[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') if [ ! -z "$range" ]; then ipset -exist add unblock $range continue fi addr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') if [ ! -z "$addr" ]; then ipset -exist add unblock $addr continue fi xdig $line | awk '{system("ipset -exist add unblock "$1)}' done logger -t unblock finished update ipset list } ### update dnsmasq function update_dnsmasq { unblock_list | grep -vE '([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(^#)|(^$)' | awk '{print "ipset=/"$1"/unblock\nserver=/"$1"/127.0.0.1#9053"}' > /etc/storage/dnsmasq/unblock.dnsmasq } ### execute function passed in parameter and exit if [ ! -z $1 ]; then $1 exit fi ## do here all we need after iptables rules restart ## init ipset table ipset -q create unblock hash:net ## redirect all traffic to ipset ips to tor network iptables -t nat -A PREROUTING -i br0 -p tcp -m set --match-set unblock dst -j REDIRECT --to-port 9040 update_dnsmasq restart_dhcpd update_ipset &
Обратите внимание, что при изменении скрипта, и нажатии кнопки Применить, нужно подождать некоторое время пока список доменов разрезолвится в ip-адреса и пропишется в ipset. Занимает это около полминуты.
В системном журнале должна появиться строчка "unblock: finished update ipset list"
Какие-то свои дополнительные команды лучше добавлять в конец скрипта.
Нажимаем Применить.
Дальше идём во вкладку Администрирование/Сервисы. Тыкаем Анонимизирующий делегирующий сервер TOR и нажимаем Применить (нельзя сразу поправить файл конфигурации, почему-то). Далее, нажимаем Пользовательский файл конфигурации "torrc" и заменяем содержимое на:
## See https://www.torproject.org/docs/tor-manual.html, ## for more options you can use in this file. VirtualAddrNetworkIPv4 172.16.0.0/12 AutomapHostsOnResolve 1 SocksPort 127.0.0.1:9050 SocksPort 192.168.1.1:9050 TransPort 192.168.1.1:9040 IsolateClientAddr IsolateClientProtocol IsolateDestAddr IsolateDestPort DNSPort 127.0.0.1:9053 User admin Log notice syslog ExitPolicy reject *:* ExitPolicy reject6 *:* ExcludeExitNodes {RU}, {UA}, {BY}, {KZ}, {MD}, {AZ}, {AM}, {GE}, {LY}, {LT}, {TM}, {UZ}, {EE} StrictNodes 1 ExitRelay 0
Важно! Вместо ip-адреса 192.168.1.1 нужно подставить адрес вашего маршрутизатора (можно посмотреть в настройках роутера LAN/IP-адрес). Вместо строчки User admin нужно написать User пользователем_которым_логинетесь_на_роутер.
И опять нажимаем Применить.
Далее, идем по пути LAN/DHCP-сервер/Пользовательский файл конфигурации "dnsmasq.conf" и добавляем в конец:
conf-file=/etc/storage/dnsmasq/unblock.dnsmasq
Если вы хотите чтобы резолвились домены .onion, то добавьте ещё в этот файл. (Имейте в виду что не все браузеры разрешают переходить по адресам в домене .onion)
server=/onion/127.0.0.1#9053 ipset=/onion/unblock
Ну и вишенкой на торте включаем ежедневное обновление таблицы ipset (на случай, если ip-адрес сервиса изменился). Идем в Администрирование/Сервисы/Сервис Cron (планировщик) включаем. Тыкаем на Задания планировщика (Crontab), вставляем:
00 06 * * * /etc/storage/post_iptables_script.sh update_ipset
Нажимаем Применить.
Дождитесь пока tor стартанёт. Обычно на это уходит несколько минут. Посмотреть можно в журнале событий, там должна появиться надпись: "Bootstrapped 100%"
Зайдите на https://check.torproject.org, вы должны увидеть надпись что ваш браузер использует TOR.
Диагностика проблем
Если в логах вы видите строчку "tor: Start TOR" и больше ничего относящегося к tor-у, то скорее всего проблема с конфигом. Идём в Администрирование/Консоль и выполняем команду:
/usr/sbin/tor --RunAsDaemon 1 --PidFile /var/run/tor.pid --DataDirectory /tmp/tor
Читаем лог. Пытаемся понять что не так.
Если есть замечания, предложения или что-то не получается, пишите мне в тележку https://telegram.me/dimonb или на почту dimonb@gmail.com
Если хотите отблагодарить: на пиво