ValdikSS / blockcheck

Russian ISP blocking type checker NOTE: NOT WORKING CURRENTLY. ВНИМАНИЕ: НЕ РАБОТАЕТ НА ТЕКУЩИЙ МОМЕНТ
MIT License
1.37k stars 144 forks source link

Поддержка IPv6 #43

Closed PbIXTOP closed 7 years ago

PbIXTOP commented 8 years ago

Есть ли возможность добавить проверку на работу заблокированных сайтов через IPv6?

ValdikSS commented 8 years ago

Не уверен, что это необходимо, т.к. в реестр пока добавляют только IPv4-адреса. Почему вы выдвинули такое предложение? У вас провайдер блокирует URL из реестра по IPv6?

PbIXTOP commented 8 years ago

Как раз через IPv6 сайты открываются проверял, причем используется способ 6to4. Примеры из списка например открылись если имели IPv6

ValdikSS commented 8 years ago

6to4 — туннелирование с использованием сторонних серверов, а не IPv6, выданный провайдером. Через него и не должны блокироваться сайты.

PbIXTOP commented 8 years ago

6to4 это не совсем туннелирование, это инкапсуляция такую можно можно использовать и при желании в ipv4 Кстати как вариант обхода блокировок в домашней сети можно использовать только ipv6 и при необходимости использовать NAT для ipv4.

ValdikSS commented 8 years ago

Инкапсуляция - вкладывание одной сущности в другую, в случае 6to4, IPv6-пакета внутрь IPv4, а передачу таких данных называют туннелем. Но не суть.Вы сможете получить доступ на меньшинство заблокированных сайтов, т.к. меньшая часть сайтов имеет IPv6-адреса. Более того, по умолчанию 6to4-адреса (неважно, входящие или исходящие) имеют приоритет ниже, чем IPv4.

DPI, которые используют провайдеры России, ‎инспектируют трафик максимум внутри HTTP-прокси. Остальные виды туннелей они не проверяют.

IRainman commented 7 years ago

+1 тест по IPv6 нужен и чем скорее тем лучше! Например, популярные трекеры NNM и Рутрекер доступны по IPv6 тоже и со временем внедрение IPv6 будет только расти. Так что ждём с нетерпением!

ValdikSS commented 7 years ago

Сделать проверку по IPv6 не составляет труда, проблема в том, что в реестре нет IPv6-адресов, и, теоретически, чисто гипотетически, провайдеры не должны блокировать IPv6-трафик. Займусь этим в ближайшее время.

ValdikSS commented 7 years ago

@PbIXTOP @IRainman вы используете IPv6-резолвер? У вас Windows? Blockcheck показывает IP-адреса на этапе проверки DNS? Помню, что сталкивался с проблемой, когда адреса не показывались, но сейчас не могу воспроизвести.

IRainman commented 7 years ago

У меня полный dualstack на Windows т. е. и IPv4 и IPv6. Утилита даже не пытается проверять ничего по IPv6 и показывает только мой IPv4 ну и дальше соответственно тоже.

BlockCheck v0.0.8.5 IP: 188........., провайдер: National cable Networks/ OnLime

[O] Тестируем DNS [O] Получаем эталонные DNS с сервера Эталонные адреса: ['104.20.74.106', '104.20.75.106', '104.24.10.70', '104.24.11.70', '212.47.251.61', '5.178.68.100'] Адреса через системный DNS: ['104.20.74.106', '104.20.75.106', '104.24.10.70', '104.24.11.70', '212.47.251.61', '5.178.68.100'] Адреса через Google DNS: ['104.20.74.106', '104.20.75.106', '104.24.10.70', '104.24.11.70', '212.47.251.61', '5.178.68.100'] Адреса через DNS AntiZapret: ['195.123.209.38', '195.123.209.38', '195.123.209.38', '195.123.209.38'] [✓] DNS-записи не подменяются [✓] DNS не перенаправляется

Ethernet adapter Onlime:

DNS-суффикс подключения . . . . . : Описание. . . . . . . . . . . . . : Intel(R) 82574L Gigabit Network Connection #3 Физический адрес. . . . . . . . . : ....................... DHCP включен. . . . . . . . . . . : Да Автонастройка включена. . . . . . : Да IPv6-адрес. . . . . . . . . . . . : 2a02:2168:...........(Основной) Аренда получена. . . . . . . . . . : 14 января 2017 г. 14:01:41 Срок аренды истекает. . . . . . . . . . : 23 января 2017 г. 16:40:04 Локальный IPv6-адрес канала . . . : fe80::.......(Основной) IPv4-адрес. . . . . . . . . . . . : .......................(Основной) Маска подсети . . . . . . . . . . : 255.255.255.0 Аренда получена. . . . . . . . . . : 14 января 2017 г. 14:01:40 Срок аренды истекает. . . . . . . . . . : 23 января 2017 г. 17:02:16 Основной шлюз. . . . . . . . . : fe80::...... 188.255..... DHCP-сервер. . . . . . . . . . . : 178.140..... IAID DHCPv6 . . . . . . . . . . . : .................... DUID клиента DHCPv6 . . . . . . . : ...............

DNS-серверы. . . . . . . . . . . : 2001:4860:4860::8844 2001:4860:4860::8888 2a02:2168:208:1::1 2a02:2168:208:2::1 2a02:6b8::feed:ff 2a02:6b8:0:1::feed:ff 192.168.1.1 8.8.4.4 8.8.8.8 77.37.251.33 77.37.255.30 77.88.8.8 77.88.8.1 NetBios через TCP/IP. . . . . . . . : Отключен

IRainman commented 7 years ago

P.S. думаю для начала целесообразно показывать с каким адресом была попытка установить связь при проверке ;) ибо сейчас вообще создаётся полное ощущение что утилита в IPv6 не может и ничего о нём не знает.

P.P.S. для Рутрекера вот такой ответ от локального сервера. Может в этом тонкость, что локальный DNS сервер по IPv6 не работает?

nslookup rutracker.org ╤хЁтхЁ: S2k Address: 192.168.1.1

Не заслуживающий доверия ответ: ╚ь : rutracker.org Addresses: 2a02:4680:22::214 195.82.146.214

Однако http://ipv6-test.com/ говорит что всё хорошо.

IPv4 connectivity IPv4 Supported
Address 188.............
Hostname broadband-188-.........moscow.rt.ru
ISP Ncnet [Russian Federation]

IPv6 connectivity IPv6 Supported
Address 2a02:2168:........
Type Native IPv6
SLAAC No
ICMP Filtered
Hostname None
ISP Ncnet [Russian Federation]

Browser Default IPv6
Fallback to IPv4 in 1 second

DNS DNS4 + IP6 Reachable
DNS6 + IP4 Reachable
DNS6 + IP6 Reachable

How can you improve your score ?

  1. Reconfigure your firewall Your router or firewall is filtering ICMPv6 messages sent to your computer. An IPv6 host that cannot receive ICMP messages may encounter problems like some web pages loading partially or not at all.

  2. Get a reverse DNS record There is no reverse DNS record to associate your IPv6 address with a host name. Reverse DNS records are required by some Internet protocols and are usually managed at the ISP level.

Не знаю правда что тест ругается на ICMP ибо из интернета ко мне всё ходит и в интернет от меня тоже

tracert ya.ru

Трассировка маршрута к ya.ru [2a02:6b8::3] с максимальным числом прыжков 30:

1 1 ms 1 ms 1 ms 2a02:2168:210:1003::1:1 2 2 ms 2 ms 2 ms mtk.105-m10-cr01.msk.ip6.ncnet.ru [2a02:2168:0:1001::2] 3 2 ms 3 ms 3 ms m10-cr01.msk-mtk.105.ip6.ncnet.ru [2a02:2168:0:1001::1] 4 2 ms 2 ms 2 ms yandex-m9-sr01-gi3-2.msk.ip6.ncnet.ru [2a02:2168:0:100a::2] 5 3 ms 3 ms 3 ms std-p2-lo0.yndx.net [::ffff:87.250.234.2] 6 3 ms 3 ms 3 ms iva-b-c2.yndx.net [2a02:6b8:0:1600::c] 7 3 ms 3 ms 3 ms www.yandex.ru [2a02:6b8::3]

Трассировка завершена.

лезть на VPS для пинга себя из сети сейчас ленно )

ValdikSS commented 7 years ago

Добавил проверку AAAA-записей через IPv6 DNS-резолверы в commit 917fba5. На очереди — полноценные тесты HTTP и HTTPS через IPv6.

ValdikSS commented 7 years ago

Попробуйте https://github.com/ValdikSS/blockcheck/tree/experiment

IRainman commented 7 years ago

Прошу прощения, сейчас мне сильно не до того, а когда станет до того не знаю, кроме того для теста надо шлюз перенастроить, чтобы было голое подключение от провайдера, а я не из дома теперь работаю, т. е. есть риск сломать и придётся ехать домой и чинить :) В целом: скрипт с первого взгляда непонятно как засунуть в архив для винды если вообще можно? В общем я видимо в пролёте с тестированием, по крайней мере до вечера пт., а скорее всего, минимум, до сб.

ValdikSS commented 7 years ago

Собрал rc1 для Windows: https://github.com/ValdikSS/blockcheck/releases/tag/0.0.8.6-rc1

IRainman commented 7 years ago

Вроде работает, но не до конца понятно что с тестами. Ну т.е. не пишет по какому протоколу проводились тесты :) В целом уже очень хорошо, хотя бы видно что утилита получает IPv6 DNS. На счёт обработки IPv6 в логе тишина, но про DPI для IPv4 скрипт написал. У меня на шлюзе нужные мне адреса направленны в тоннели так что общий лог проверки может быть не сильно корректен и на это внимания можно не обращать, к тому же Kerio Control там не может полностью в IPv6 и потому рутрекер хоть и перенаправлен по доменному имени в тоннель, но... в общем в логе этот глюк из-за Kerio виден :) . Перенастраивать сейчас лень, да и не из дома это делать небезопасно. Из пожеланий: было бы хорошо видеть к какому IP обращался тест при проверке ссылки, ну или, например, версию протокола в скобках указать ибо не понятно что именно тестировалось :)

BlockCheck v0.0.8.6
Проверка работоспособности IPv6: IPv6 доступен!
IP: 188.255.xxx.xxx, IPv6: 2a02:2168:xxxx::xxxx, провайдер: National cable Networks/ OnLime

[O] Тестируем IPv4 DNS
    Через системный DNS:    ['104.20.74.106', '104.20.75.106', '104.24.10.70', '104.24.11.70', '104.31.4.186', '104.31.5.186', '212.47.251.61']
    Через Google DNS:   ['104.20.74.106', '104.20.75.106', '104.24.10.70', '104.24.11.70', '104.31.4.186', '104.31.5.186', '212.47.251.61']
    Не удалось подключиться к Google API
    Несуществующий DNS не вернул адресов (это не ошибка)
[✓] DNS-записи не подменяются
[✓] DNS не перенаправляется

[O] Тестируем IPv6 DNS
    Через системный DNS:    ['2400:cb00:2048:1::6814:4a6a', '2400:cb00:2048:1::6814:4b6a', '2400:cb00:2048:1::6818:a46', '2400:cb00:2048:1::6818:b46', '2400:cb00:2048:1::681f:4ba', '2400:cb00:2048:1::681f:5ba']
    Через Google DNS:   ['2400:cb00:2048:1::6814:4a6a', '2400:cb00:2048:1::6814:4b6a', '2400:cb00:2048:1::6818:a46', '2400:cb00:2048:1::6818:b46', '2400:cb00:2048:1::681f:4ba', '2400:cb00:2048:1::681f:5ba']
    Не удалось подключиться к Google API
    Несуществующий DNS не вернул адресов (это не ошибка)
[✓] DNS-записи не подменяются
[✓] DNS не перенаправляется

[O] Тестируем HTTP
    Открываем http://rule34.xxx/
[✓] Сайт открывается
    Открываем http://rutracker.org/forum/index.php
[!] Сайт открывается только по IPv4
[☠] Получен неожиданный ответ, скорее всего, страница-заглушка провайдера. Пробуем через прокси.
[✓] Сайт открывается через прокси
    Открываем http://gelbooru.com/
[✓] Сайт открывается
    Открываем http://rule34.xxx/index.php?page=post&s=view&id=879177
[☠] Получен неожиданный ответ, скорее всего, страница-заглушка провайдера. Пробуем через прокси.
[✓] Сайт открывается через прокси
    Открываем http://gelbooru.com/index.php?page=post&s=view&id=1989610
[☠] Получен неожиданный ответ, скорее всего, страница-заглушка провайдера. Пробуем через прокси.
[✓] Сайт открывается через прокси

[O] Тестируем HTTPS
    Открываем https://lolibooru.moe/
[☠] Сайт не открывается
[☠] isup.me не поддерживает HTTPS, считаем, что сайт работает, а проблемы только у нас
    Открываем https://e621.net/
[☠] Сайт не открывается
[☠] isup.me не поддерживает HTTPS, считаем, что сайт работает, а проблемы только у нас
    Открываем https://rutracker.org/forum/index.php
[✓] Сайт открывается

[O] Тестируем обход DPI
    Пробуем способ «перенос строки в заголовках в UNIX-стиле» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «необычный порядок заголовков» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «перенос строки перед GET» на rutracker.org
[☠] Сайт не открывается
    Пробуем способ «дополнительный пробел после GET» на rutracker.org
[☠] Сайт не открывается
    Пробуем способ «точка в конце домена» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «заголовок host вместо Host» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «фрагментирование заголовка» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «табуляция в конце домена» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «перенос строки в заголовках в UNIX-стиле» на gelbooru.com
[✓] Сайт открывается
    Пробуем способ «необычный порядок заголовков» на gelbooru.com
[!] Сайт не открывается, обнаружен пассивный DPI!
    Пробуем способ «перенос строки перед GET» на gelbooru.com
[☠] Сайт не открывается
    Пробуем способ «дополнительный пробел после GET» на gelbooru.com
[☠] Сайт не открывается
    Пробуем способ «точка в конце домена» на gelbooru.com
[!] Сайт не открывается, обнаружен пассивный DPI!
    Пробуем способ «заголовок host вместо Host» на gelbooru.com
[✓] Сайт открывается
    Пробуем способ «фрагментирование заголовка» на gelbooru.com
[!] Сайт не открывается, обнаружен пассивный DPI!
    Пробуем способ «табуляция в конце домена» на gelbooru.com
[✓] Сайт открывается

[!] Результат:
[⚠] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.
[⚠] У вашего провайдера "полный" DPI для IPv4. Он отслеживает ссылки даже внутри прокси, поэтому вам следует использовать любое шифрованное соединение, например, VPN или Tor.
ValdikSS commented 7 years ago

Ну т.е. не пишет по какому протоколу проводились тесты :)

Если IPv6 доступен, то HTTP-сайты загружаются и по IPv4, и по IPv6. Если сайт недоступен по какому-то одному протоколу, то выводится сообщение, по какому протоколу его удалось открыть, как это у вас с rutracker:

Открываем http://rutracker.org/forum/index.php [!] Сайт открывается только по IPv4

Мне больше интересно, почему у вас Google API не работает. https://dns.google.com/query?name=example&type=A&dnssec=true открывается?

IRainman commented 7 years ago

Благодарю, теперь понятно.

Мне больше интересно, почему у вас Google API не работает. https://dns.google.com/query?name=example&type=A&dnssec=true открывается?

Мне тоже интересно, но ссылка прекрасно открывается.

ValdikSS commented 7 years ago

Запустите, пожалуйста, v0.0.8.6-rc2 с ключом --debug, и пришлите полный вывод.

IRainman commented 7 years ago

Воть:

BlockCheck v0.0.8.6
Проверка работоспособности IPv6: IPv6 доступен!
IP: 188.255.xxx.xxx, IPv6: 2a02:2168:xxxx::1, провайдер: National cable Networks/ OnLime

[O] Тестируем IPv4 DNS
    Через системный DNS:    ['104.20.74.106', '104.20.75.106', '104.24.10.70', '104.24.11.70', '104.31.4.186', '104.31.5.186', '212.47.251.61']
    Через Google DNS:   ['104.20.74.106', '104.20.75.106', '104.24.10.70', '104.24.11.70', '104.31.4.186', '104.31.5.186', '212.47.251.61']
_get_url: socket exceptionSSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)')
Google API: (0, '')
Google API вернул 
_get_url: socket exceptionSSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)')
Google API: (0, '')
Google API вернул 
_get_url: socket exceptionSSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)')
Google API: (0, '')
Google API вернул 
_get_url: socket exceptionSSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)')
Google API: (0, '')
Google API вернул 
    Не удалось подключиться к Google API
    Несуществующий DNS не вернул адресов (это не ошибка)
[✓] DNS-записи не подменяются
[✓] DNS не перенаправляется

[O] Тестируем IPv6 DNS
    Через системный DNS:    ['2400:cb00:2048:1::6814:4a6a', '2400:cb00:2048:1::6814:4b6a', '2400:cb00:2048:1::6818:a46', '2400:cb00:2048:1::6818:b46', '2400:cb00:2048:1::681f:4ba', '2400:cb00:2048:1::681f:5ba']
    Через Google DNS:   ['2400:cb00:2048:1::6814:4a6a', '2400:cb00:2048:1::6814:4b6a', '2400:cb00:2048:1::6818:a46', '2400:cb00:2048:1::6818:b46', '2400:cb00:2048:1::681f:4ba', '2400:cb00:2048:1::681f:5ba']
_get_url: socket exceptionSSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)')
Google API: (0, '')
Google API вернул 
_get_url: socket exceptionSSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)')
Google API: (0, '')
Google API вернул 
_get_url: socket exceptionSSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)')
Google API: (0, '')
Google API вернул 
_get_url: socket exceptionSSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)')
Google API: (0, '')
Google API вернул 
    Не удалось подключиться к Google API
    Несуществующий DNS не вернул адресов (это не ошибка)
[✓] DNS-записи не подменяются
[✓] DNS не перенаправляется

[O] Тестируем HTTP
    Открываем http://rule34.xxx/index.php?page=post&s=view&id=879177
_get_url: late socket exceptionURLError(timeout('timed out',),)
[!] Сайт открывается только по IPv6
[☠] Получен неожиданный ответ, скорее всего, страница-заглушка провайдера. Пробуем через прокси.
[✓] Сайт открывается через прокси
    Открываем http://rule34.xxx/
[✓] Сайт открывается
    Открываем http://gelbooru.com/index.php?page=post&s=view&id=1989610
[!] Сайт открывается только по IPv6
[☠] Получен неожиданный ответ, скорее всего, страница-заглушка провайдера. Пробуем через прокси.
[✓] Сайт открывается через прокси
    Открываем http://gelbooru.com/
[✓] Сайт открывается
    Открываем http://rutracker.org/forum/index.php
_get_url: late socket exceptionURLError(timeout('timed out',),)
[!] Сайт открывается только по IPv4
[☠] Получен неожиданный ответ, скорее всего, страница-заглушка провайдера. Пробуем через прокси.
[✓] Сайт открывается через прокси

[O] Тестируем HTTPS
    Открываем https://e621.net/
_get_url: socket exceptionConnectionResetError(10054, 'Удаленный хост принудительно разорвал существующее подключение', None, 10054, None)
[☠] Сайт не открывается
[☠] isup.me не поддерживает HTTPS, считаем, что сайт работает, а проблемы только у нас
    Открываем https://rutracker.org/forum/index.php
[✓] Сайт открывается
    Открываем https://lolibooru.moe/
_get_url: socket exceptionConnectionResetError(10054, 'Удаленный хост принудительно разорвал существующее подключение', None, 10054, None)
[☠] Сайт не открывается
[☠] isup.me не поддерживает HTTPS, считаем, что сайт работает, а проблемы только у нас

[O] Тестируем обход DPI
    Пробуем способ «дополнительный пробел после GET» на rutracker.org
[☠] Сайт не открывается
    Пробуем способ «фрагментирование заголовка» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «перенос строки перед GET» на rutracker.org
[☠] Сайт не открывается
    Пробуем способ «необычный порядок заголовков» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «табуляция в конце домена» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «перенос строки в заголовках в UNIX-стиле» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «точка в конце домена» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «заголовок host вместо Host» на rutracker.org
[✓] Сайт открывается
    Пробуем способ «дополнительный пробел после GET» на gelbooru.com
[☠] Сайт не открывается
    Пробуем способ «фрагментирование заголовка» на gelbooru.com
[!] Сайт не открывается, обнаружен пассивный DPI!
    Пробуем способ «перенос строки перед GET» на gelbooru.com
[☠] Сайт не открывается
    Пробуем способ «необычный порядок заголовков» на gelbooru.com
[!] Сайт не открывается, обнаружен пассивный DPI!
    Пробуем способ «табуляция в конце домена» на gelbooru.com
[✓] Сайт открывается
    Пробуем способ «перенос строки в заголовках в UNIX-стиле» на gelbooru.com
[✓] Сайт открывается
    Пробуем способ «точка в конце домена» на gelbooru.com
[!] Сайт не открывается, обнаружен пассивный DPI!
    Пробуем способ «заголовок host вместо Host» на gelbooru.com
[✓] Сайт открывается

[!] Результат:
[⚠] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.
[⚠] У вашего провайдера "полный" DPI. Он отслеживает ссылки даже внутри прокси, поэтому вам следует использовать любое шифрованное соединение, например, VPN или Tor.
ValdikSS commented 7 years ago

Хмм, а в Internet Explorer открывается https://dns.google.com/ ?

IRainman commented 7 years ago

Сам браузер отключён в компонентах. Включать лень ибо на сервере это морока лишняя....

ValdikSS commented 7 years ago

А, у вас серверная версия. Может, в этом проблема.

IRainman commented 7 years ago

Может быть, не знаю. Может какой плагин для Firefox есть для подключения фрейма ишака? :)

ValdikSS commented 7 years ago

А в хроме открывается?

IRainman commented 7 years ago

Проверил, в IE открывается.

ValdikSS commented 7 years ago

Реализовано в Blockcheck v0.0.9. Откройте тикет заново, если остались какие-либо проблемы.