habrahabr

Обход блокировки запрещенного сайта вебмастером без настроек и ПО на стороне клиента

  • среда, 11 марта 2015 г. в 02:12:36
http://habrahabr.ru/post/252611/

Увидел я как-то IPv6 Teredo пиров в µTorrent под Windows, которые качали куски с довольно приличной скоростью, и тут меня осенило…

Что такое Teredo?

Teredo — технология туннелирования IPv6 через IPv4 UDP-пакеты. Она задумывалась как переходная технология, которая работает за NAT, и, в общем, более-менее выполняет возложенные на нее обязанности. Teredo позволяет получить доступ в IPv6-интернет через публичные Teredo-серверы. Интересно то, что в Windows 7, 8 и 8.1 Teredo настроен и включен по умолчанию, прямо из коробки, и использует сервер Teredo от Microsoft (teredo.ipv6.microsoft.com).

Зачем это нам?

Веб-сайты, определенные ссылки которых по тем или иным причинам оказались в реестре запрещенных сайтов, могут организовать доступ с использованием Teredo, что позволит вернуть доступ к сайту примерно 80-85% пользователям современных версий Windows без дополнительных настроек и ПО! Доступ через Teredo позволяет обойти все протестированные DPI-решения, применяемые провайдерами. Роскомнадзор не только не может внести такие страницы в реестр, но и не может получить к ним доступ (вероятно, Teredo у них не работает):
Скрытый текст
Здравствуйте
Благодарим Вас за активную гражданскую позицию, однако сообщаем, что Ваша заявка была отклонена по следующим возможным причинам:
— на момент проведения проверки экспертами, указанный в Вашем обращении адрес http://[2001:0:9d38:6ab8:30c4:d940:9469:f43e]/ был не доступен;
— указанный в Вашем обращение адрес http://[2001:0:9d38:6ab8:30c4:d940:9469:f43e]/ указан неверно, либо идет перенаправление на другой адрес;
— указанный в Вашем обращение адрес http://[2001:0:9d38:6ab8:30c4:d940:9469:f43e]/ требует обязательной регистрации/авторизации.
С уважением,
ФЕДЕРАЛЬНАЯ СЛУЖБА ПО НАДЗОРУ В СФЕРЕ СВЯЗИ, ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И МАССОВЫХ КОММУНИКАЦИЙ.
К тому же, у Роскомнадзора нет полномочий блокировать страницы, которые перенаправляют на другие страницы, и кнопка «Актуальный Навальный» тому подтверждение.

Особенности сервера Teredo от Microsoft

Для доступа в «обычный» IPv6, в Teredo используются Relay-серверы, которые имеют полный IPv6-доступ и работают как прокси-серверы. В свою очередь, relay-серверы Teredo от Microsoft не позволяют получить доступ в «обычный» IPv6 или к другим Teredo-серверам, разрешая только связность Teredo-клиентов, настроенных на сервер Microsoft, и образуя такую большую закрытую сеть из Windows-компьютеров.

Особенности реализации DNS в Windows

Если в ОС Windows имеется только Teredo IPv6-адрес, резолвер DNS не будет даже пытаться получать AAAA-запись у доменов. Таким образом, просто так зайти на сайт по доменному имени, даже если у него есть только AAAA-запись и нет A-записи, не получится. Это можно отключить специальным параметром в реестре, но это неинтересно, т.к. требует действий на стороне клиента.

Что делать?

Выход простой и не очень элегантный — использовать домен с доступом по IPv4, который сделает HTTP-перенаправление на Teredo IPv6-адрес. Можно делать как обычное перенаправление кодом 307 или 301, так и через javascript, предварительно проверяя доступность Teredo-адреса или комбинируя с другими решениями обхода блокировки.

Как настроить?

Чтобы разместить веб-сайт в Teredo под Linux, вам необходимо использовать Teredo-клиент miredo, и обязательно настроить его на использование сервера teredo.ipv6.microsoft.com. Также, чтобы у вас как можно реже менялся Teredo-адрес, рекомендую задать статический исходящий порт в конфигурационном файле miredo (/etc/miredo/miredo.conf или /etc/miredo.conf, зависит от дистрибутива), т.е. установить параметр BindPort.
Убедитесь, что ваш веб-сервер слушает IPv6-адреса. Для nginx, это параметр listen.
Мой конфиг выглядит примерно так:
Скрытый текст
server {
        server_name 5yo.panty.shot.valdikss.org.ru;
        location / {
                return 307 http://[2001:0:9d38:90d7:899:d93f:9469:f43e]/;
        }
}

server {
        listen [2001:0:9d38:90d7:899:d93f:9469:f43e]:80;
        server_name [2001:0:9d38:90d7:899:d93f:9469:f43e];

        root /usr/share/nginx/html/pantyshot/;
        index index.html index.htm;

        location / {
                try_files $uri $uri/ =404;
        }
}

Я сделал тестовую страницу, на которой вы можете послушать замечательный трек Panty Shot от Mindless Self Indulgence. Думаю, можно считать его незаконным, учитывая кучу отмененных концертов бездуховных групп.
5yo.panty.shot.valdikss.org.ru/
Страница должна открываться только в том случае, если у вы используете Windows 7, 8 или 8.1 и не имеете других IPv6-подключений (нативное, 6to4, 6in4).

Заключение

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