Jump to content
b1st

Обход блокировок на роутере!

Recommended Posts

Начиная с версии 2.13.A.3.0-1 в ядре появилась поддержка NFQUEUE и стало возможно использовать наработки от bol-van. Делюсь своим вариантом настройки с нуля.

Устанавливаем компоненты системы (через веб интерфейс) :

  1. Протокол IPv6. Поддержка открытых пакетов. Перезагрузка.
  2. Подключаем entware. Модули ядра подсистемы Netfilter. Перезагрузка.
  3. Пакет расширения Xtables-addons для Netfilter. Перезагрузка.

Далее работаем по ssh:

ssh root@192.168.1.1

Ставим необходимые пакеты:

opkg install ipset curl bind-tools iptables cron nano git-http

Для того чтобы можно было пользоваться crontab -e в /opt/etc/profile добавляем строку (это не обязательно):

export EDITOR='/opt/bin/nano'

В файле /opt/etc/init.d/S10cron вместо ARGS="-s" оставляем просто ARGS="" иначе в логах будет мусор каждую минуту.

Скачиваем сам скрипт;

git clone https://github.com/LukyanovM/zapret.git /opt/zapret

в файл  /opt/zapret/ipset/zapret-hosts-user.txt добавляем те сайты для которых хотим отключить блокировки:

rutracker.org
kinozal.tv

Генерируем список IP для обхода, эту команду нужно выполнять каждый раз когда вы хотите изменить перечень сайтов в /opt/zapret/ipset/zapret-hosts-user.txt:

/opt/zapret/ipset/get_user.sh

Делаем пробный запуск:

/opt/zapret/init.d/keenetic/S99zapret start

Если всё хорошо, то в консоли должно быть примерно так:

iptable_raw.ko is already loaded
xt_string.ko is already loaded
nfqws is installed
tpws is installed
Restoring ipset
Adding iptables rule
Starting anti-zapret: zapret.

На данном этапе за роутером должны заработать рутрекер и кинозал. Если тут всё нормально делаем симлинк на автозапуск:

ln -s /opt/zapret/init.d/keenetic/S99zapret /opt/etc/init.d/S99zapret

У скрипта 3 режима работы

  1. Fragmentation - принудительно выставляется малый размер TCP окна, в результате чего пакеты фрагментируются и не попадают под анализ DPI. Используется NFQUEUE. Самый быстрый режим. Установлен по умолчанию. Работает в IPv4 для HTTP и для HTTPS (не всегда)
  2. Modification - прозрачное HTTP проксирование с модификацией HTTP заголовков. Работает в IPv4 и в IPv6 но только для HTTP
  3. Combined - комбинированный режим. Для HTTP используется проксирование(tpws), для HTTPS - фрагментирование пакетов(nfqws).

Обязательная часть на этом закончена. Дальнейшее касается выгрузки из РКН и может быть пропущено. Для этой цели есть два скрипта: get_reestr.sh и get_antizapret.sh. Первый берет оригинал реестра и парсит его в айпи самостоятельно - нагрузка низкая, но парсить может сутками. Второй берет готовый список айпи с antizapret.prostovpn.org, отрабатывает за полминуты. Я использовал второй вариант:

/opt/zapret/ipset/get_antizapret.sh

Cейчас за роутером должно заработать всё. Осталось только вставить в cron актуализацию выгрузки:

cp /opt/zapret/ipset/get_antizapret.sh /opt/etc/cron.daily/get_antizapret.sh

Правим cron скрипт /opt/etc/cron.daily/get_antizapret.sh:

Строку 

SCRIPT=$(readlink -f $0)

удаляем, а строку

EXEDIR=$(dirname $SCRIPT)

меняем на 

EXEDIR=/opt/zapret/ipset

Теперь роутер сам каждую ночь будет обновлять выгрузку. Чтобы отключить обход блокировок достаточно выполнить команду (действует до перезагрузки) :

/opt/etc/init.d/S99zapret stop

UPD: Если протокол HTTPS так и не заработал можно настроить прозрачное проксирование через тор или пустить заблокированный трафик через штатный openvpn.

Edited by Михаил Лукьянов
Установка через git. Комбинированный режим работы.
  • Thanks 8
  • Upvote 3

Share this post


Link to post
Share on other sites
В 26.09.2018 в 18:18, Nuck-TH сказал:

И как быть с HTTPS? NDM вроде как постоянно перезаписывает таблицу NAT, да и моего понимания работы сетевых интерфесов не хватает, чтобы переписать правила iptables под местные условия :(

С HTTPS вариантов немного - tor, прокси и vpn. С tor всё оказалось просто. Так как не нужно прозрачное проксирование на прикладном уровне (что умеет только squid с peek&slice), то достаточно просто инкапсуляции одного транспортного протокола в другой (TLS в SOCKS5). С этой задачей легко справляется tor+redsocks:

opkg install redsocks tor

Что поменять в дефолтном /opt/etc/tor/torrc:

Log notice syslog
RunAsDaemon 1
DataDirectory /opt/var/lib/tor

Что поменять в дефолтном /opt/etc/redsocks.conf:

в секции base:

log_info = off;
log = "syslog:local7";
daemon = on;
redirector = iptables;

в секции redsocks:

local_ip = 192.168.1.1;
local_port = 8888;
ip = 127.0.0.1;
port = 9050;
type = socks5;

В скрипт S99zapret добавлено правило для перенаправления запрещенного HTTPS трафика в redsocks, скрипт нужно перекачать с гитхаба. Для того чтобы NDM не сбрасывало правило в таблице nat нужно создать следующий файл /opt/etc/ndm/netfilter.d/redsocks.sh:

#!/opt/bin/sh
[ "$type" == "ip6tables" ] && exit 0
[ "$table" != "nat" ] && exit 0   # check the table name
iptables -t nat -I PREROUTING -p tcp --dport 443 -m set --match-set zapret dst -j REDIRECT --to-port 8888
/opt/bin/logger "redsocks redirected https rule created for zapret via netfilter hook"

не забыть конечно:

chmod +x /opt/etc/ndm/netfilter.d/redsocks.sh

Проверяем:

/opt/etc/init.d/S35tor start
/opt/etc/init.d/S23redsocks start
/opt/etc/init.d/S99zapret stop
/opt/etc/init.d/S99zapret start

Что интересно у меня https://2ip.ru/ и https://yandex.ru/internet/ часто показывают выход через tor, а не напрямую. Видимо какой-то не тот диапазон IP попал в реестр:(

Edited by Михаил Лукьянов
  • Thanks 4
  • Upvote 1

Share this post


Link to post
Share on other sites
2 часа назад, Сергей «Solaris» Сидоров сказал:

Мне не повезло, провайдер не пропускает и фрагментированные пакеты вообще. А сработает ли вариант если  пустить и HTTP и HTTPS через tor, дополнив ваш скрипт строкой для  80 порта? типа такого.

Для тех у кого не работает фрагментация в скрипте нужно выбирать ACTION=modification, это правда пока работает только для HTTP трафика. TOR снижает скорость - так бы все уже давно в него завернулись и не вылазили.

  • Thanks 1

Share this post


Link to post
Share on other sites
1 час назад, Dmitry Soloviev сказал:

Добрый день.

Результаты проверки blockcheck с компьютера.

  Показать содержимое

BlockCheck v0.0.9.6
Для получения корректных результатов используйте DNS-сервер провайдера и отключите средства обхода блокировок.

Проверка работоспособности IPv6: IPv6 недоступен.
[O] Тестируем IPv4 DNS
    Через системный DNS:     ['104.20.134.45', '104.20.135.45', '104.24.10.70', '104.24.11.70', '184.173.136.161', '195.8.215.136', '195.82.146.214', '5.178.68.100']
    Через Google DNS:     ['104.20.134.45', '104.20.135.45', '104.24.10.70', '104.24.11.70', '184.173.136.161', '195.8.215.136', '195.82.146.214', '5.178.68.100']
    Через Google API:     ['104.20.134.45', '104.20.135.45', '104.24.10.70', '104.24.11.70', '184.173.136.161', '195.8.215.136', '195.82.146.214', '5.178.68.100']
    Через недоступный DNS:     ['195.82.146.214']
[?] DNS-записи не подменяются
[?] DNS перенаправляется

[O] Тестируем HTTP (по настоящим IP-адресам сайтов)
    Открываем http://pbooru.com/
[?] Сайт открывается
    Открываем http://pbooru.com/index.php?page=post&s=view&id=303026
[?] Получен неожиданный ответ, скорее всего, страница-заглушка провайдера. Пробуем через прокси.
[?] Сайт открывается через прокси
    Открываем http://furry.booru.org/
[?] Сайт открывается
    Открываем http://rutracker.org/forum/index.php
[?] Сайт не открывается, пробуем через прокси
[?] Сайт открывается через прокси
    Открываем http://furry.booru.org/index.php?page=post&s=view&id=111173
[?] Получен неожиданный ответ, скорее всего, страница-заглушка провайдера. Пробуем через прокси.
[?] Сайт открывается через прокси
    Открываем http://a.putinhuylo.com/
[?] Сайт открывается

[O] Тестируем HTTPS
    Открываем https://www.dailymotion.com/
[?] Сайт не открывается
    Открываем https://lolibooru.moe/
[?] Сайт не открывается
    Открываем https://e621.net/
[?] Сайт не открывается
    Открываем https://rutracker.org/forum/index.php
[?] Сайт не открывается

[O] Тестируем обход DPI
    Пробуем способ «табуляция в конце домена» на rutracker.org
[?] Ошибка: timeout('timed out',)
    Пробуем способ «необычный порядок заголовков» на rutracker.org
[?] Ошибка: timeout('timed out',)
    Пробуем способ «фрагментирование заголовка, hoSt и отсутствие пробела одновременно» на rutracker.org
[?] Ошибка: timeout('timed out',)
    Пробуем способ «фрагментирование заголовка» на rutracker.org
[?] Ошибка: timeout('timed out',)
    Пробуем способ «отсутствие пробела между двоеточием и значением заголовка Host» на rutracker.org
[?] Ошибка: timeout('timed out',)
    Пробуем способ «дополнительный пробел после GET» на rutracker.org
[?] Ошибка: timeout('timed out',)
    Пробуем способ «перенос строки перед GET» на rutracker.org
[?] Ошибка: timeout('timed out',)
    Пробуем способ «заголовок hoSt вместо Host» на rutracker.org
[?] Ошибка: timeout('timed out',)
    Пробуем способ «заголовок hOSt вместо Host» на rutracker.org
[?] Ошибка: timeout('timed out',)
    Пробуем способ «значение Host БОЛЬШИМИ БУКВАМИ» на rutracker.org
[?] Ошибка: timeout('timed out',)
    Пробуем способ «точка в конце домена» на rutracker.org
[?] Ошибка: timeout('timed out',)
    Пробуем способ «перенос строки в заголовках в UNIX-стиле» на rutracker.org
[?] Ошибка: timeout('timed out',)
    Пробуем способ «табуляция в конце домена» на pbooru.com
[?] Сайт не открывается
    Пробуем способ «необычный порядок заголовков» на pbooru.com
[?] Сайт не открывается
    Пробуем способ «фрагментирование заголовка, hoSt и отсутствие пробела одновременно» на pbooru.com
[?] Сайт открывается
    Пробуем способ «фрагментирование заголовка» на pbooru.com
[?] Сайт не открывается
    Пробуем способ «отсутствие пробела между двоеточием и значением заголовка Host» на pbooru.com
[?] Сайт открывается
    Пробуем способ «дополнительный пробел после GET» на pbooru.com
[?] Сайт не открывается
    Пробуем способ «перенос строки перед GET» на pbooru.com
[?] Сайт открывается
    Пробуем способ «заголовок hoSt вместо Host» на pbooru.com
[?] Сайт не открывается
    Пробуем способ «заголовок hOSt вместо Host» на pbooru.com
[?] Сайт не открывается
    Пробуем способ «значение Host БОЛЬШИМИ БУКВАМИ» на pbooru.com
[?] Сайт не открывается
    Пробуем способ «точка в конце домена» на pbooru.com
[?] Сайт не открывается
    Пробуем способ «перенос строки в заголовках в UNIX-стиле» на pbooru.com
[?] Сайт не открывается

[!] Результат:
[?] Ваш провайдер перенаправляет сторонние IPv4 DNS-серверы на свой, но не подменяет DNS-записи.
 Это несколько странно и часто встречается в мобильных сетях.
 Если вы хотите использовать сторонний DNS, вам следует использовать шифрованный канал до DNS-серверов, например, через VPN, Tor, HTTPS/Socks прокси или DNSCrypt, но обходу блокировок это не поможет.
[?] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.
[?] У вашего провайдера "обычный" DPI. Вам поможет HTTPS/Socks прокси, VPN или Tor.
 

Правильно ли я понимаю, чтобы заработал обход блокировок по инструкции от @Михаил Лукьянов, требуется изначально разобраться с DNS запросами, например через DNSCrypt?

Нет. Blockcheck тесты обхода DPI проводит по своей базе IP адресов - если нет ни одного метода обхода блокировок то ни goodbyedpi ни antizapret работать не будут (с DNSCrypt или нет - неважно). Для вас только тор и VPN. А что за провайдер?

Edited by Михаил Лукьянов
  • Thanks 1

Share this post


Link to post
Share on other sites
59 минут назад, Михаил Лукьянов сказал:

Нет. Blockcheck тесты обхода DPI проводит по своей базе IP адресов - если нет ни одного метода обхода блокировок то ни goodbyedpi ни antizapret работать не будут (с DNSCrypt или нет - неважно). Для вас только тор и VPN. А что за провайдер?

Провайдер малоизвестный - Мортон Телеком. Но, к сожалению, альтернативы подключения проводного интернета кроме него нет.

Придется значит TOR пробовать.

Share this post


Link to post
Share on other sites

После установки не обходит http трафик, но https работает. Если запустить на своей машине Goodbyedpi то http трафик начинает ходить. Есть способ в вашем варианте начать обходить http блокировку?

Оператор ростелеком.

Share this post


Link to post
Share on other sites
11 час назад, AlexJ сказал:

После установки не обходит http трафик, но https работает. Если запустить на своей машине Goodbyedpi то http трафик начинает ходить. Есть способ в вашем варианте начать обходить http блокировку?

Оператор ростелеком.

Нужен вывод blockcheck. Заглушку в скрипте прописывали?

Share this post


Link to post
Share on other sites

Хотелось бы и для ipv6 использовать данное решение (в моем случае правила для tpws), В описании опций tpws есть упоминание, что может слушать и на ipv4 и на ipv6 адресе. В ip6tables никто не силён?

Share this post


Link to post
Share on other sites
12 часа назад, Albram сказал:

Хотелось бы и для ipv6 использовать данное решение (в моем случае правила для tpws), В описании опций tpws есть упоминание, что может слушать и на ipv4 и на ipv6 адресе. В ip6tables никто не силён?

Концепция NAT в ipv6 считается ущербной, поэтому никто её по умолчанию в ядре не включает:) Конкретно для варианта c tpws и ipv6 существует решение в ip6tables через TPROXY: https://version6.ru/tproxy. Разницу между DNAT, REDIRECT и TPROXY можно глянуть тут: http://gsoc-blog.ecklm.com/iptables-redirect-vs.-dnat-vs.-tproxy/ . Проверить к сожалению не могу - провайдер ipv6 не выдаёт.

P.S. При использовании fwmark для ipv4 нужно было отключать fastnat: 

sysctl -w net.ipv4.netfilter.ip_conntrack_fastnat=0

Для ipv6 скорей всего тоже придётся сделать 

sysctl -w net.ipv6.netfilter.ip_conntrack_fastnat=0

Share this post


Link to post
Share on other sites

Познаний мало, но хотелось бы разобраться с блокировками провайдера. Продел все до момента запуска скрипта, но блокировка не снелась. При заходе на кинозал.тв или рутрекер выходит заглушка провайдера. Прошу помощи!

Вот ответ blockcheck

Spoiler

[!] Результат:
[⚠] Ваш провайдер подменяет DNS-записи и перенаправляет сторонние IPv4 DNS-серверы на свой.
 Вам следует использовать шифрованный канал до DNS-серверов, например, через VPN, Tor, HTTPS/Socks прокси или DNSCrypt.
[⚠] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.
[⚠] У вашего провайдера "обычный" DPI. Вам поможет HTTPS/Socks прокси, VPN или Tor.

Ответ iptables -nvL -t raw

Spoiler

Chain PREROUTING (policy ACCEPT 448 packets, 80249 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 NFQUEUE    tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport sports 80,443 tcp flags:0x12/0x12 match-set zapret src NFQUEUE num 200 bypass
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp spt:80 STRING match  "|0d0a4c6f636174696f6e3a20687474703a2f2f796f752d7368616c6c2d6e6f742d706173732e697337342e7275|" ALGO name bm FROM 40 TO 200
    1    60 NFQUEUE    tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport sports 80,443 tcp flags:0x12/0x12 match-set zapret src NFQUEUE num 200 bypass
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp spt:80 STRING match  "|0d0a4c6f636174696f6e3a20687474703a2f2f626c61636b686f6c652e6265656c696e652e7275|" ALGO name bm FROM 40 TO 200
 


 

Edited by tomeeli

Share this post


Link to post
Share on other sites
20 часов назад, tomeeli сказал:

[⚠] Ваш провайдер подменяет DNS-записи и перенаправляет сторонние IPv4 DNS-серверы на свой.

  1. Простой вариант - использовать DNS серверы с нестандартными портами например AdGuard слушает дополнительно на порту 5353.
  2. Правильный вариант - использовать шифрование DNS https://forum.keenetic.net/topic/4755-защищаем-dns-запросы-с-помощью-dnscrypt-proxy2-бонусом-блокировка-рекламы/ .

P.S. В iptables набор правил продублировался (это не страшно). Роутер после установки скрипта перезагружался?

Share this post


Link to post
Share on other sites
9 minutes ago, Михаил Лукьянов said:

Роутер после установки скрипта перезагружался?

Да. Заглушку поменял на своего провайдера. Имеет ли значение что в конце адреса заглушки через # подставляется блокированный домен?

 Запуск скрипта проходит

Spoiler

iptable_raw.ko is already loaded
xt_string.ko is already loaded
nfqws is installed
tpws is installed
Restoring ipset
Adding iptables rule
Starting anti-zapret: ~ #

 

Edited by tomeeli

Share this post


Link to post
Share on other sites
31 минуту назад, tomeeli сказал:

Имеет ли значение что в конце адреса заглушки через # подставляется блокированный домен?

Нет. В переменной BLACKHOLE только доменное имя должно быть. Судя по счётчикам заглушка не прилетает (это нормально). У вас провайдер DNS перехватывает. Покажите вывод двух команд:

nslookup rutracker.org
nslookup rutracker.org 176.103.130.130:5353

 

Edited by Михаил Лукьянов

Share this post


Link to post
Share on other sites
~ # nslookup rutracker.org
Server:    127.0.0.1
Address 1: 127.0.0.1 localhost

Name:      rutracker.org
Address 1: 78.29.1.40
Address 2: 78.29.1.40

 

~ # nslookup rutracker.org 176.103.130.130:5353
Server:    176.103.130.130
Address 1: 176.103.130.130 176-103-130-130.dns.adguard.com

Name:      rutracker.org
Address 1: 195.82.146.214 rutracker.org
Address 2: 2a03:42e0::214

 

Share this post


Link to post
Share on other sites

В веб интерфейсе кинетика заходите в Интернет-Проводной-Параметры IP и DNS. Нажимаете показать дополнительные параметры IPoE. Для DNS 1 вводите 176.103.130.130:5353, для DNS 2 176.103.130.131:5353. Далее подключаетесь к кинетику по telnet и вводите следующее:

interface ISP no ip dhcp client name-servers
system configuration save

Это самый быстрый способ избавится от перехвата DNS.

Share this post


Link to post
Share on other sites

Сделал. Попутно очистил кеш днс, но все та же заглушка на кинозал.тв и рутрекер.орг, для проверки еще добавлял nnmclub.to он просто не открывается

Share this post


Link to post
Share on other sites

Полный лог

Spoiler

BlockCheck v0.0.9.6
Для получения корректных результатов используйте DNS-сервер провайдера и отключите средства обхода блокировок.

Проверка работоспособности IPv6: IPv6 недоступен.
[O] Тестируем IPv4 DNS
    Через системный DNS:     ['104.20.134.45', '104.20.135.45', '104.24.10.70', '104.24.11.70', '184.173.136.161', '195.8.215.136', '195.82.146.214', '67.202.114.141']
    Через Google DNS:     ['78.29.1.40', '78.29.1.40', '78.29.1.40', '78.29.1.40', '78.29.1.40', '78.29.1.40']
    Через Google API:     ['104.20.134.45', '104.20.135.45', '104.24.10.70', '104.24.11.70', '184.173.136.161', '195.8.215.136', '195.82.146.214', '67.202.114.141']
    Через недоступный DNS:     ['78.29.1.40']
[☠] DNS-записи подменяются
[☠] DNS перенаправляется

[O] Тестируем HTTP (по настоящим IP-адресам сайтов)
    Открываем http://rutracker.org/forum/index.php
[✓] Сайт открывается
    Открываем http://pbooru.com/index.php?page=post&s=view&id=303026
[✓] Сайт открывается
    Открываем http://furry.booru.org/index.php?page=post&s=view&id=111173
[☠] Сайт не открывается, пробуем через прокси
[✓] Сайт открывается через прокси
    Открываем http://a.putinhuylo.com/
[✓] Сайт открывается
    Открываем http://pbooru.com/
[✓] Сайт открывается
    Открываем http://furry.booru.org/
[✓] Сайт открывается

[O] Тестируем HTTPS
    Открываем https://www.dailymotion.com/
[✓] Сайт открывается
    Открываем https://lolibooru.moe/
[✓] Сайт открывается
    Открываем https://rutracker.org/forum/index.php
[✓] Сайт открывается
    Открываем https://e621.net/
[☠] Сайт не открывается

[O] Тестируем обход DPI
    Пробуем способ «дополнительный пробел после GET» на pbooru.com
[✓] Сайт открывается
    Пробуем способ «точка в конце домена» на pbooru.com
[✓] Сайт открывается
    Пробуем способ «заголовок hoSt вместо Host» на pbooru.com
[✓] Сайт открывается
    Пробуем способ «перенос строки перед GET» на pbooru.com
[✓] Сайт открывается
    Пробуем способ «значение Host БОЛЬШИМИ БУКВАМИ» на pbooru.com
[✓] Сайт открывается
    Пробуем способ «перенос строки в заголовках в UNIX-стиле» на pbooru.com
[✓] Сайт открывается
    Пробуем способ «необычный порядок заголовков» на pbooru.com
[✓] Сайт открывается
    Пробуем способ «табуляция в конце домена» на pbooru.com
[☠] Сайт не открывается
    Пробуем способ «заголовок hOSt вместо Host» на pbooru.com
[✓] Сайт открывается
    Пробуем способ «фрагментирование заголовка» на pbooru.com
[✓] Сайт открывается
    Пробуем способ «фрагментирование заголовка, hoSt и отсутствие пробела одновременно» на pbooru.com
[✓] Сайт открывается
    Пробуем способ «отсутствие пробела между двоеточием и значением заголовка Host» на pbooru.com
[✓] Сайт открывается
    Пробуем способ «дополнительный пробел после GET» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «точка в конце домена» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «заголовок hoSt вместо Host» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «перенос строки перед GET» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «значение Host БОЛЬШИМИ БУКВАМИ» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «перенос строки в заголовках в UNIX-стиле» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «необычный порядок заголовков» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «табуляция в конце домена» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «заголовок hOSt вместо Host» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «фрагментирование заголовка» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «фрагментирование заголовка, hoSt и отсутствие пробела одновременно» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «отсутствие пробела между двоеточием и значением заголовка Host» на rutracker.org
[✓] Сайт открывается

[!] Результат:
[⚠] Ваш провайдер подменяет DNS-записи и перенаправляет сторонние IPv4 DNS-серверы на свой.
 Вам следует использовать шифрованный канал до DNS-серверов, например, через VPN, Tor, HTTPS/Socks прокси или DNSCrypt.
[⚠] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.
[⚠] У вашего провайдера "обычный" DPI. Вам поможет HTTPS/Socks прокси, VPN или Tor.
 

 

Share this post


Link to post
Share on other sites
6 минут назад, tomeeli сказал:

[O] Тестируем HTTP (по настоящим IP-адресам сайтов)
    Открываем http://rutracker.org/forum/index.php
[✓] Сайт открывается
...

[O] Тестируем HTTPS
...
    Открываем https://rutracker.org/forum/index.php
[✓] Сайт открывается
 

А blockcheck говорит что всё открывается. Это результаты с включенным S99zapret? Другой браузер если попробовать?

Share this post


Link to post
Share on other sites

Действительно, если ссылка такого вида http://rutracker.org/forum/index.php то открывается

но если http://rutracker.org то заглушка, 

если http://kinozal.tv/browse.php то открывается сайт вот в таком виде

 

Spoiler

2019-03-25_170228.thumb.jpg.1a87360e4c3b34aade3b6414e5d96dab.jpg

если обновить страницу или открыть http://kinozal.tv - заглушка

Share this post


Link to post
Share on other sites

Подскажите пожалуйста как правильно деинсталировать скрипт? Достаточно удалить S99zapret и папку zapret?

Share this post


Link to post
Share on other sites
7 минут назад, tomeeli сказал:

Подскажите пожалуйста как правильно деинсталировать скрипт? Достаточно удалить S99zapret и папку zapret?

Да.

Share this post


Link to post
Share on other sites
2 часа назад, tomeeli сказал:

Действительно, если ссылка такого вида http://rutracker.org/forum/index.php то открывается

но если http://rutracker.org то заглушка, 

если http://kinozal.tv/browse.php то открывается сайт вот в таком виде

 

  Показать содержимое

2019-03-25_170228.thumb.jpg.1a87360e4c3b34aade3b6414e5d96dab.jpg

если обновить страницу или открыть http://kinozal.tv - заглушка

Уже второй раз такое встречается. Нужен дамп трафика. У кого будет возможность скиньте файл dump.pcap полученный в результате такого:

opkg install tcpdump
tcpdump -i eth2.2 host rutracker.org -w dump.pcap

После запуска в консоли нужно зайти на рутрекер. После этого завершить запись по Ctrl+C. Файлик забрать из папки root.

Share this post


Link to post
Share on other sites
1 час назад, tomeeli сказал:

Спасибо конечно. Но это с выключенным обходом блокировок снято. Кроме забавного адреса заглушки тут смотреть нечего. Мне бы из половинчатой ситуации снимок получить - когда blockcheck показывает что открыто и по прямым ссылкам иногда можно пройти, а главная страница не открывается.

Share this post


Link to post
Share on other sites
В 21.03.2019 в 02:33, Михаил Лукьянов сказал:

Концепция NAT в ipv6 считается ущербной, поэтому никто её по умолчанию в ядре не включает:) Конкретно для варианта c tpws и ipv6 существует решение в ip6tables через TPROXY: https://version6.ru/tproxy. Разницу между DNAT, REDIRECT и TPROXY можно глянуть тут: http://gsoc-blog.ecklm.com/iptables-redirect-vs.-dnat-vs.-tproxy/ . Проверить к сожалению не могу - провайдер ipv6 не выдаёт.

P.S. При использовании fwmark для ipv4 нужно было отключать fastnat: 


sysctl -w net.ipv4.netfilter.ip_conntrack_fastnat=0

Для ipv6 скорей всего тоже придётся сделать 


sysctl -w net.ipv6.netfilter.ip_conntrack_fastnat=0

Не хотелось бы ставить squid на роутер, тем более что transparent proxy уже есть в виде tpws (или ссылку на version6.ru вы дали для примера реализации?), осталось только завернуть на него http траффик ipv6.

Пока руки не дошли попробовать, но беглый просмотр выявил отсутствие ключа net.ipv6.netfilter.ip_conntrack_fastnat

~ # sysctl net.ipv4.netfilter.ip_conntrack_fastnat
net.ipv4.netfilter.ip_conntrack_fastnat = 1
~ # sysctl net.ipv6.netfilter.ip_conntrack_fastnat
sysctl: error: 'net.ipv6.netfilter.ip_conntrack_fastnat' is an unknown key

 

Share this post


Link to post
Share on other sites
9 минут назад, Albram сказал:

Пока руки не дошли попробовать, но беглый просмотр выявил отсутствие ключа net.ipv6.netfilter.ip_conntrack_fastnat


~ # sysctl net.ipv4.netfilter.ip_conntrack_fastnat
net.ipv4.netfilter.ip_conntrack_fastnat = 1
~ # sysctl net.ipv6.netfilter.ip_conntrack_fastnat
sysctl: error: 'net.ipv6.netfilter.ip_conntrack_fastnat' is an unknown key

Там же нету NAT , это я сам себя перемудрил. По ссылке пример правила для перенаправления IPv6 трафика в tpws. 

Share this post


Link to post
Share on other sites
13 часа назад, Михаил Лукьянов сказал:

Там же нету NAT , это я сам себя перемудрил. По ссылке пример правила для перенаправления IPv6 трафика в tpws. 

Набросал правил на примерах по вашей ссылке и отсюда, но пока не проверял.

Скрытый текст

 


ip -f inet6 rule add fwmark 1 lookup 100
ip -f inet6 route add local default dev br0 table 100
ip6tables -t mangle -N DIVERT
ip6tables -t mangle -A DIVERT -j MARK --set-mark 1
ip6tables -t mangle -A DIVERT -j ACCEPT
ip6tables  -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
ip6tables  -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 1188

 

Есть сомнения по поводу наличия цели TPROXY и таблицу 100 сначала надо было создать.

 

Update: В итоге работающий черновой вариант для проверки работоспособности метода получился пока такой:

вручную добавил:

ip -6 route add local default dev lo table 64
ip -6 rule add from all fwmark 1 lookup 64

Затем в /opt/etc/ndm/netfilter.d/ добавил файл:

Скрытый текст

 


#!/opt/bin/sh
[ "$type" == "iptables" ] && exit 0
#[ "$table" != "mangle" ] && exit 0
# === Deleting previous settings (if exist) ===========

#ip -6 route flush table 64
#ip -6 rule del from all fwmark 0x6
ip6tables -t mangle -F
ip6tables -t mangle -X DIVERT

# === Setting new configuration =====================

#ip -6 route add local default dev lo table 64
#ip -6 rule add from all fwmark 1 lookup 64

ip6tables -t mangle -N DIVERT
ip6tables -t mangle -A DIVERT -j MARK --set-mark 1
ip6tables -t mangle -A DIVERT -j ACCEPT

ip6tables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
ip6tables -t mangle -A PREROUTING -p tcp -i br0 --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 1188

 

 

В zapret.ipset добавил ipv6 адреса, tpws запускал удалив из опций --bind-addr так он слушает и на ipv4 и на ipv6 порту.

Нужно будет посмотреть на предмет оптимизаций. Ввести проверку на уже существующие правила ip -6 route и ip -6 rule. чтобы не удалять/создавать их по каждому вызову из ndm. Ещё при таком методе весь ipv6 трафик на 80 порт заворачивается в прокси, а это не нужно.

В лог роутера очень часто пишутся события срабатывания этих правил (после того, как написал сюда, я добавил строчку внесения в лог по срабатыванию этого файла). Причём, если оставлять в файле строки очистки цепочки DIVERT и её удаления, то в логе ещё периодически присутствую ошибки от ip6tables об отсутствии цепочки/цели. А если эти строки убрать, то в списке правил создаются одинаковые правила, количество их зависит от частоты вызовов файла и составляет от 1 до 22 (максимальное что видел], и конечно в эти моменты имеем запись в логе, что цепочка уже существует.

Так что, это просто пример, и к полноценному использованию пока не пригоден.

Edited by Albram
  • Thanks 1

Share this post


Link to post
Share on other sites

Буду проверять. Родного IPv6 от провайдера нет, поставил 6to4 по инструкции https://help.keenetic.com/hc/ru/articles/213968529-Настройка-туннельного-подключения-IPv6-6to4 . Получилось забавно - так как трафик идет по IPv4  с типом протокола (IPv6 encapsulation) до ближайшего 4to6-ретранслятора, то надобность в обходе блокировок отпала как класс. Для провайдеров  остаётся только одно решение - блокировать 192.88.99.1 (anycast адрес ретрансляторов). Тут правда другая проблема есть DNS ответы для запросов с 6to4 адресов как и с teredo имеют приоритет ниже чем с IPv4 поэтому такой клиент сначала будет пытаться подключиться по IPv4, а не по IPv6. Для клиентов на линуксе я знаю решение - поправить /etc/gai.conf:

label ::1/128       0
label ::/0          1
#label 2002::/16     2	эту строку нужно оставить закомментированной
label ::/96         3
label ::ffff:0:0/96 4
label fec0::/10     5
label fc00::/7      6
label 2001:0::/32   7

Остальные клиенты (в т.ч. windows) при наличии и IPv4 и IPv6 будут все равно подключаться по IPv4. Но как ещё один простой вариант обхода блокировок вполне сойдёт.

Share this post


Link to post
Share on other sites
В 03.04.2019 в 20:41, Albram сказал:

Набросал правил на примерах по вашей ссылке и отсюда, но пока не проверял.

  Показать содержимое

 



ip -f inet6 rule add fwmark 1 lookup 100
ip -f inet6 route add local default dev br0 table 100
ip6tables -t mangle -N DIVERT
ip6tables -t mangle -A DIVERT -j MARK --set-mark 1
ip6tables -t mangle -A DIVERT -j ACCEPT
ip6tables  -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
ip6tables  -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 1188

 

Есть сомнения по поводу наличия цели TPROXY и таблицу 100 сначала надо было создать.

 

Update: В итоге работающий черновой вариант для проверки работоспособности метода получился пока такой:

вручную добавил:


ip -6 route add local default dev lo table 64
ip -6 rule add from all fwmark 1 lookup 64

Затем в /opt/etc/ndm/netfilter.d/ добавил файл:

  Скрыть содержимое

 



#!/opt/bin/sh
[ "$type" == "iptables" ] && exit 0
#[ "$table" != "mangle" ] && exit 0
# === Deleting previous settings (if exist) ===========

#ip -6 route flush table 64
#ip -6 rule del from all fwmark 0x6
ip6tables -t mangle -F
ip6tables -t mangle -X DIVERT

# === Setting new configuration =====================

#ip -6 route add local default dev lo table 64
#ip -6 rule add from all fwmark 1 lookup 64

ip6tables -t mangle -N DIVERT
ip6tables -t mangle -A DIVERT -j MARK --set-mark 1
ip6tables -t mangle -A DIVERT -j ACCEPT

ip6tables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
ip6tables -t mangle -A PREROUTING -p tcp -i br0 --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 1188

 

 

В zapret.ipset добавил ipv6 адреса, tpws запускал удалив из опций --bind-addr так он слушает и на ipv4 и на ipv6 порту.

Нужно будет посмотреть на предмет оптимизаций. Ввести проверку на уже существующие правила ip -6 route и ip -6 rule. чтобы не удалять/создавать их по каждому вызову из ndm. Ещё при таком методе весь ipv6 трафик на 80 порт заворачивается в прокси, а это не нужно.

В лог роутера очень часто пишутся события срабатывания этих правил (после того, как написал сюда, я добавил строчку внесения в лог по срабатыванию этого файла). Причём, если оставлять в файле строки очистки цепочки DIVERT и её удаления, то в логе ещё периодически присутствую ошибки от ip6tables об отсутствии цепочки/цели. А если эти строки убрать, то в списке правил создаются одинаковые правила, количество их зависит от частоты вызовов файла и составляет от 1 до 22 (максимальное что видел], и конечно в эти моменты имеем запись в логе, что цепочка уже существует.

Так что, это просто пример, и к полноценному использованию пока не пригоден.

Добавил в скрипт поддержку IPv6 для tpws. Единственное что для IPv6 завел отдельный ipset - по нему же и перенаправляю пакеты в прокси. Больше решение ничем от вашего не отличается:

ip -6 route add local default dev lo table 99
ip -6 rule add from all fwmark 0x9 lookup 99
ip6tables -t mangle -I PREROUTING -p tcp --dport 80 -i $SLAVE_ETH -m set --match-set zapret6 dst -j TPROXY --tproxy-mark 0x9/0x9 --on-port $TPPORT --on-ip ::1
ip6tables -t mangle -N DIVERT
ip6tables -t mangle -A DIVERT -j MARK --set-mark 9
ip6tables -t mangle -A DIVERT -j ACCEPT
ip6tables -t mangle -I PREROUTING -p tcp -m socket -j DIVERT

Вместе со скриптом нужно перекачать и файлы участвующие в генерации ipset:

mkdir /opt/zapret/backup
mv /opt/etc/init.d/S99zapret /opt/zapret/backup/S99zapret
mv /opt/zapret/ipset/get_user.sh  /opt/zapret/backup/get_user.sh
mv /opt/zapret/ipset/def.sh  /opt/zapret/backup/def.sh
mv /opt/zapret/ipset/create_ipset.sh   /opt/zapret/backup/create_ipset.sh
curl https://raw.githubusercontent.com/LukyanovM/zapret/master/init.d/keenetic/S99zapret -o /opt/etc/init.d/S99zapret
curl https://raw.githubusercontent.com/LukyanovM/zapret/master/ipset/get_user.sh -o /opt/zapret/ipset/get_user.sh
curl https://raw.githubusercontent.com/LukyanovM/zapret/master/ipset/def.sh -o /opt/zapret/ipset/def.sh
curl https://raw.githubusercontent.com/LukyanovM/zapret/master/ipset/create_ipset.sh -o /opt/zapret/ipset/create_ipset.sh
chmod +x /opt/etc/init.d/S99zapret
chmod +x /opt/zapret/ipset/get_user.sh 
chmod +x /opt/zapret/ipset/def.sh 
chmod +x /opt/zapret/ipset/create_ipset.sh

В скрипте после закачки нужно включать опцию с tpws (modification) повторно! И после этого нужно запустить /opt/zapret/ipset/get_user.sh чтобы сгенерировался ipset для IPv6. Вроде всё - нужно  проверять, а то у меня чистого эксперимента не получается.

P.S. Я только не понял зачем вы свой скрипт в перехватчики ndm положили, тут же только с таблицей mangle работа идёт, а она не перезаписывается вроде.

Edited by Михаил Лукьянов
  • Upvote 1

Share this post


Link to post
Share on other sites
4 часа назад, Михаил Лукьянов сказал:

P.S. Я только не понял зачем вы свой скрипт в перехватчики ndm положили, тут же только с таблицей mangle работа идёт, а она не перезаписывается вроде.

Как оказалось - перезаписывается. Во всяком случае у меня на прошивке 2.15.C.3.0-0 если делать без перехватчика, то новые правила живут от 1 до 5 секунд.

Мне не нравится как работают эти правила в перехватчике. Выше я писал, что либо постоянные ошибки в логе об отсутствии цепочки/цели, в эти моменты и пакеты не будут перенаправляться как надо, либо куча копий одних и те же правил с сообщением в лог об уже существующей цепочке.

Надо будет добавить проверку на уже существующие правила, это хоть и замедлит обработку, но будет смотреться более эстетично:)

Попробую ваш вариант с раздельными ipset, спасибо.

Edited by Albram

Share this post


Link to post
Share on other sites
1 час назад, Albram сказал:

Мне не нравится как работают эти правила в перехватчике. Выше я писал, что либо постоянные ошибки в логе об отсутствии цепочки/цели, в эти моменты и пакеты не будут перенаправляться как надо, либо куча копий одних и те же правил с сообщением в лог об уже существующей цепочке.

  1. Скрипы в ndm.d должны быть идемпотентными, поэтому проверка существования правила должна присутствовать.
  2. Попробуйте в вызовах iptables добавить ключ "-w".
  • Upvote 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...