Dns обход блокировки сайтов

Dns обход блокировки сайтов

Изначально предполагалось, что Интернет – это глобальная сеть, которая соединяет весь мир. Однако, в действительности многие веб-ресурсы могут быть заблокированы в отдельных регионах согласно законодательным инициативам. Как поступить, если вам все же необходимо получить доступ к заблокированному сайту? Мы собрали несколько надежных и действенных способов для обхода блокировки запрещенных ресурсов.

1. Веб-браузер Opera

Браузер Opera предлагает функцию встроенного VPN с неограниченным трафиком. Подключение VPN работает только в браузере, но соединение всегда стабильно и демонстрирует высокую скорость. VPN в Opera можно использовать абсолютно бесплатно и без каких-либо ограничений.

По умолчанию VPN-сервис в Opera отключен. Для того, чтобы активировать службу, проделайте следующие шаги:

  • Откройте страницу настроек – скопируйте opera://settings/ и вставьте в адресной строке браузера, нажав Ввод (Enter)
  • Перейдите в раздел Дополнительно Безопасность в левом навигационном меню
  • Прокрутите до секции VPN
  • Переведите в активное положение переключатель Включить VPN

Opera поддерживает различные локации в Европе, Америке и Азии. Вы можете использовать опцию "Оптимальное местоположение" для выбора оптимального по быстродействию сервера.

2. Сторонние расширения для браузеров

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

Browsec VPN – расширение для браузеров Chrome, Firefox, Opera, которое зашифровывает ваш интернет трафик, скрывает ваш IP-адрес и позволяет разблокировать запрещенные сайты.

Hotspot Shield Free VPN Proxy – расширение для браузеров Chrome и Firefox, которое позволяет организовать доступ к заблокированным сайтам и получить дополнительный уровень безопасности и конфиденциальности в сети.

ZenMate VPN – расширение для браузеров Firefox, Google Chrome и Opera – простой способ обеспечить безопасный веб-серфинг. Расширение шифрует трафик браузера, защищает Wi-Fi соединение, снимает региональные ограничения и обеспечивает защиту частной жизни в Интернете.

Yandex Access – позволяет разблокировать доступ к сайтам Яндекса, Вконтакте и Одноклассники без потери скорости Интернета. Поддерживает Google Chrome, Яндекс.Браузер и другие Chromium-браузеры.

Экономия трафика (Data Saver) – расширение для веб-браузера Google Chrome, которое сокращает трафик, получаемый при загрузке страниц, с помощью серверов Google.

3. VPN-сервисы

Сервисы VPN позволяют создавать защищенный зашифрованный канал связи и подменять свое виртуальное местоположение. Таким способом вы можете получить доступ к запрещенному сайту, просто выбрав сервер в той стране, в которой доступ к ресурсу разрешен. Существуют бесплатные и платные VPN-сервисы. Обычно бесплатные сервисы имеют ограничения по скорости подключения или по объему трафика.

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

Windscribe VPN (30 ГБ в месяц бесплатно) – VPN-клиент для Windows, MacOS, Android и iOS, который обеспечивает анонимность и безопасность в Интернете. Позволяет обходить региональных ограничений при посещении заблокированных сайтов.

Seed4.Me VPN и Proxy – получите Premium-подписку сервиса Seed4.Me VPN и Proxy на 1 год бесплатно с неограниченным трафиком. Сервис поддерживает установку на Windows, Mac OS, Android, iPhone и iPad и предлагает сервера в более чем 20 странах.

SoftEther VPN – надежное VPN решение, использующее стойкое шифрование AES 256-bit и RSA 4096-bit, оптимальная альтернатива для OpenVPN и Microsoft VPN. При использовании VPN Gate в качестве серверов могут выступать пользователи (волонтеры) по всему миру.

OkayFreedom VPN – простой в ипользовании VPN-сервис, позволяющий защищенно, анонимно и без ограничений посещать веб-сайты в Интернете. Предлагает быстрые сервера в России, Европе, Азии и США.

F-Secure Freedome VPN – VPN-клиент для Windows, macOS, Android, iPhone и iPad, который использует шифрование соединения для защиты Wi-Fi подключения, блокирует вредоносные мобильные приложения и веб-сайты, а также обеспечивает анонимность в Интернете.

4. Tor Browser

Еще один надежный способ для обхода блокировки – использование веб-браузера Tor Browser на основе Mozilla Firefox. Браузер Tor представляет собой клиентское приложение для одноименной анонимной сети. Для обеспечения конфиденциальности пользователей используется многоуровневое шифрование и маршрутизация вашего сетевого трафика по распределенной сети.

Данная технология предотвращает возможность внешнему наблюдателю вашего интернет-соединения узнать какие веб-сайты вы посещаете, предотвращает возможность сайтам узнать ваше физическое местоположение, а также позволяет получить доступ к заблокированным веб-ресурсам.

Основной недостаток использования Tor – низкая скорость подключения. Однако, вы расплачиваетесь на анонимность и конфиденциальность персональных данных. Браузер можно использовать абсолютно бесплатно и без ограничений.

5. DNS-сервисы

Некоторые блокировки могут осуществляться за счет изменения настроек DNS. В этом случае для обхода блокировки достаточно изменить DNS-сервер на компьютере или на роутере. При попытке посетит заблокированный сайт, сторонний DNS-сервер перенаправит ваш трафик через туннель. Удаленный сервер посчитает, что вы получаете доступ из соответствующей страны, и сайт заработает.

Читайте также:  Amd radeon r5 graphics сколько видеопамяти

При настройке DNS на роутере, сайты будут разблокированы на всех устройствах в домашней сети. При этом вам не нужно постоянно менять настройки DNS. Соединение будет стабильно для всего вашего трафика.

Google Public DNS – бесплатный глобальный сервис системы доменных имен (DNS), используемый в качестве альтернативы DNS вашего интернет-провайдера. Преимущества: повышенная скорость, надежность и безопасность интернет-соединения.

Cloudflare DNS – cлужба "1.1.1.1" ориентирована на скорость и защиту конфиденциальности, обеспечивая быстрый и безопасный веб-серфинг в Интернете.

AdGuard DNS – предлагает простой способ фильтровать рекламу через систему доменных имён – DNS. Решение блокирует рекламу, счетчики, фишинговые сайты, взрослые сайты и предлагает безопасный поиск.

6. Собственный VPN сервис

Используя следующие сервисы и инструкции, вы можете создавать и запускать собственный VPN или прокси сервер.

Outline VPN – сервис, который позволяет любому пользователю создавать и запускать собственный VPN сервер и предоставлять другим пользователям доступ к данному серверу.

3proxy на FreeBSD – готовый скрипт настройки и пошаговая инструкция по аренде и быстрой настройке виртуального сервера для прокси.

Имеем:
1) Интернет-соединение, поднимаемое по l2tp у провайдера "Beeline";
2) Соединение поднимается поверх сперва получаемого DHCP (без доступа к внешней сети). Если что-то даст, то точкой является tp.internet.beeline.ru
3) DNS-сервера получаются автоматически. Если просто заменить их на публичные от Гугла или подобные, то, естественно, l2tp устанавливаться не будет;
4) Если прописать их, как альтернативные ему, то при заходе на заблокированные ресурсы, все равно перекидывает в чёрную дыру билайна -> blackhole.beeline.ru
5) Соединение поднимается на Asus RT-N56U первой ревизии с кастомной прошивкой от Padawan (консоль линуксовская в наличии, как и возможность поставить немного пакетов из opt). Wi-Fi раздаётся не им, а воткнутым в режиме моста Apple AirPort Extreme AC (последнее обусловлено наличием AC, а первое — неумением второго играть в VPN-клиент).
Задача: изобрести способ обхода блокировки (в основном, Rutracker) на уровне роутера.
На отдельных устройствах настраивать неудобно, а на яблоках мобильных так и проблематично.

Заранее огромное "мерси" за помощь.

  • Вопрос задан более трёх лет назад
  • 18644 просмотра

Использование альтернативных DNS серверов в данном случае не поможет, т.к. у Билайна стоит DPI, который вместо ответа сайта выдает вашему браузеры редирект на BlackHole, при попытке зайти на один из сайтов занесенных в реестр. Выходов может быть несколько, во-первых — это использование соответствующего расширения для браузера, реализующего Proxy или VPN, например, ZenMate для Google Chrome. Или вот, из последних новостей так сказать — Opera встроила в браузер бесплатный VPN. Во-вторых — это использование VPN. Выбираем любой бесплатный / платный VPN-сервис, либо поднимаем свой, где-нибудь в Европе, затем настраиваем в роутере соединение с этим VPN и настраиваем маршрутизацию. Если речь идет именно о Rutracker’е, то прописываем маршрут на 195.82.146.214 через VPN.

Еще проще, чтобы избавить себя от подобных ограничений в будущем — меняем Asus RT-N56U на любой Mikrotik RouterBoard, например, hAP Lite, который стоит порядка 1600 руб. Настраиваем в нем тот же VPN и "контент-фильтр". Т.е. анализируем все пакеты приходящие с 80-го порта, если в них обнаружен паттерн Location: http://http://blackhole.beeline.ru/ , то заносим этот IP в специальный Address List. Ну и одно правило для хостов входящих в этот Address List чтобы они роутились через VPN. Таким образом открывая любой недоступный ресурс в первый раз мы сначала увидим blackhole, но открывая его во второй раз — траффик уже пойдет через VPN. Таким образом прописывать отдельно каждый ресурс к которому мы хотим получить доступ не нужно, достаточно будет всего двух правил на маршрутизаторе.

Ну как? Решили проблему?
4pda.ru/forum/index.php?showtopic=686221&view=find. тут приведены ссылки на обход через тор с воткнутой в usb флешкой (но лично у меня не завелось данное решение)

Вариант номер джва. Пожалуй сейчас буду пробовать.

Тоже l2tp, но не билайн. Да и Падаванская прошивка на xiaomi mi mini, но это не суть

Тема довольно изъезжена, знаю. К примеру, есть отличная статья, но там рассматривается только IP-часть блоклиста. Мы же добавим еще и домены.

В связи с тем, что суды и РКН блокируют всё направо и налево, а провайдеры усиленно пытаются не попасть под штрафы, выписанные "Ревизорро" — сопутствующие потери от блокировок довольно велики. Да и среди "правомерно" заблокированных сайтов много полезных (привет, rutracker)

Я живу вне юрисдикции РКН, но на родине остались родители, родственники и друзья. Так что было решено придумать легкий для далеких от ИТ личностей способ обхода блокировок, желательно вовсе без их участия.

Читайте также:  Canon lbp6030w настройка wifi

В этой заметке я не буду расписывать базовые сетевые вещи по шагам, а опишу общие принципы как можно реализовать эту схему. Так что знания как работает сеть вообще и в Linux в частности — must have.

Для начала освежим в памяти что же блокируется.

В выгружаемом XML от РКН несколько типов блокировок:

Мы их сведем для простоты к двум: IP и домен, а из блокировок по URL будем просто вытаскивать домен (точнее за нас это уже сделали).

Хорошие люди из Роскомсвободы реализовали прекрасный API, через который можно получать то, что нам нужно:

Для этого нам нужен какой-нибудь маленький зарубежный VPS, желательно с безлимитным траффиком — таких много по 3-5 баксов. Брать нужно в ближнем зарубежье чтобы пинг был не сильно большой, но опять-таки учитывать, что интернет и география не всегда совпадают. А так как никакого SLA за 5 баксов нет — лучше взять 2+ штуки у разных провайдеров для отказоустойчивости.

Далее нам необходимо настроить зашифрованный туннель от клиентского роутера до VPS. Я использую Wireguard как самый быстрый и простой в настройке т.к. клиентские роутеры у меня тоже на базе Linux (APU2 или что-то на OpenWRT). В случае каких-нибудь Mikrotik/Cisco можно использовать доступные на них протоколы вроде OpenVPN и GRE-over-IPSEC.

Можно, конечно, завернуть вообще весь интернет-траффик через зарубеж. Но, скорее всего, от этого сильно пострадает скорость работы с локальным контентом. Плюс требования к полосе пропускания на VPS будут сильно выше.

Поэтому нам нужно будет каким-то образом выделять траффик к заблокированным сайтам и выборочно его направлять в туннель. Даже если туда попадёт какая-то часть "лишнего" траффика, это всё равно гораздо лучше, чем гонять всё через тоннель.

Для управления траффиком мы будем использовать протокол BGP и анонсировать маршруты до необходимых сетей с нашего VPS на клиентов. В качестве BGP-демона возьмём BIRD, как один из наиболее функциональных и удобных.

С блокировками по IP всё понятно: просто анонсируем все заблокированные IP с VPS. Проблема в том, что подсетей в списке, который отдает API, около 600 тысяч, и подавляющее большинство из них — это хосты /32. Такое количество маршрутов может смутить слабые клиентские роутеры.

Поэтому было решено при обработке списка суммировать до сети /24 если в ней 2 и более хоста. Таким образом количество маршрутов сократилось до

100 тысяч. Скрипт для этого будет дальше.

Домены

Тут сложнее и способов есть несколько. Например, можно поставить прозрачный Squid на каждом клиентском роутере и делать там перехват HTTP и подглядывание в TLS-хендшейк с целью получения запрашиваемого URL в первом случае и домена из SNI во втором.

Но из-за всяких новомодных TLS1.3+eSNI анализ HTTPS с каждым днем становится всё менее реальным. Да и инфраструктура со стороны клиента усложняется — придется использовать как минимум OpenWRT.

Поэтому я решил пойти по пути перехвата ответов на DNS-запросы. Тут тоже над головой начинает витать всякий DNS-over-TLS/HTTPS, но эту часть мы можем (пока что) контролировать на клиенте — либо отключить, либо использовать свой сервер для DoT/DoH.

Как перехватывать DNS?

Тут тоже может быть несколько подходов.

  • Перехват DNS-траффика через PCAP или NFLOG
    Оба эти способа перехвата реализованы в утилите sidmat. Но она давно не поддерживается и функционал очень примитивен, так что к ней нужно всё равно нужно писать обвязку.
  • Анализ логов DNS-сервера
    К сожалению, известные мне рекурсоры не умеют логгировать ответы, а только запросы. В принципе это логично, так как в отличии от запросов ответы имеют сложную структуру и писать их в текстовой форме трудновато.
  • DNSTap
    К счастью, многие из них уже поддерживает DNSTap для этих целей.

Что такое DNSTap?

Это клиент-серверный протокол, основанный на Protocol Buffers и Frame Streams для передачи с DNS-сервера на некий коллектор структурированных DNS-запросов и ответов. По сути DNS-сервер передает метаданные запросов и ответов (тип сообщения,IP клиента/сервера и так далее) плюс полные DNS-сообщения в том (бинарном) виде в котором он работает с ними по сети.

Важно понимать, что в парадигме DNSTap DNS-сервер выступает в роли клиента, а коллектор — в роли сервера. То есть DNS-сервер подключается к коллектору, а не наоборот.

На сегодняшний день DNSTap поддерживается во всех популярных DNS-серверах. Но, например, BIND во многих дистрибутивах (вроде Ubuntu LTS) часто собран почему-то без его поддержки. Так что не будем заморачиваться пересборкой, а возьмём более легкий и быстрый рекурсор — Unbound.

Чем ловить DNSTap?

Есть некоторое количество CLI-утилит для работы с потоком DNSTap-событий, но для решения нашей задачи они подходят плохо. Поэтому я решил изобрести свой велосипед, который будет делать всё что необходимо: dnstap-bgp

  • При запуске загружает из текстового файла список доменов, инвертирует их (habr.com -> com.habr), исключает битые строки, дубликаты и поддомены (т.е. если в списке есть habr.com и www.habr.com — будет загружен только первый) и строит префиксное дерево для быстрого поиска по этому списку
  • Выступая в роли DNSTap-сервера ждет подключения от DNS-сервера. В принципе он поддерживает как UNIX- так и TCP-сокеты, но известные мне DNS-сервера умеют только в UNIX-сокеты
  • Поступающие DNSTap-пакеты десериализуются сначала в структуру Protobuf, а затем само бинарное DNS-сообщение, находящееся в одном из Protobuf-полей, парсится до уровня записей DNS RR
  • Проверяется есть ли запрашиваемый хост (или его родительский домен) в загруженном списке, если нет — ответ игнорируется
  • Из ответа выбираются только A/AAAA/CNAME RR и из них вытаскиваются соответствующие IPv4/IPv6 адреса
  • IP-адреса кешируются с настраиваемым TTL и анонсируются во все сконфигурированные BGP-пиры
  • При получении ответа, указывающего на уже закешированный IP — его TTL обновляется
  • После истечения TTL запись удаляется из кеша и из BGP-анонсов
Читайте также:  1С объект таблица значений

  • Перечитывание списка доменов по SIGHUP
  • Синхронизация кеша с другими экземплярами dnstap-bgp через HTTP/JSON
  • Дублирование кеша на диске (в базе BoltDB) для восстановление его содержимого после перезапуска
  • Поддержка переключения в иной network namespace (зачем это нужно будет описано ниже)
  • Поддержка IPv6

  • IDN домены пока не поддерживаются
  • Мало настроек BGP

Я собрал RPM и DEB пакеты для удобной установки. Должны работать на всех относительно свежих OS с systemd, т.к. зависимостей у них никаких нет.

Итак, приступим к сборке всех компонентов воедино. В результате у нас должна получиться примерно такая сетевая топология:

Логика работы, думаю, понятна из диаграммы:

  • У клиента настроен наш сервер в качестве DNS, причем DNS запросы тоже должны ходить по VPN. Это нужно для того чтобы провайдер не мог использовать перехват DNS для блокировки.
  • Клиент при открытии сайта посылает DNS-запрос вида "а какие IP у xxx.org"
  • Unbound резолвит xxx.org (или берет из кеша) и отправляет ответ клиенту "у xxx.org такие-то IP", параллельно дублируя его через DNSTap
  • dnstap-bgp анонсирует эти адреса в BIRD по BGP в том случае если домен есть в списке заблокированных
  • BIRD анонсирует маршрут до этих IP с next-hop self клиентскому роутеру
  • Последующие пакеты от клиента к этим IP идут уже через туннель

На сервере для маршрутов к заблокированным сайтам у меня внутри BIRD используется отдельная таблица и с ОС она никак не пересекается.

В этой схеме есть недостаток: первый SYN пакет от клиента, скорее всего, успеет уйти через отечественного провайдера т.к. маршрут анонсируется не мгновенно. И тут возможны варианты в зависимости от того как провайдер делает блокировку. Если он просто дропает траффик, то проблем нет. А если он редиректит его на какой-то DPI, то (теоретически) возможны спецэффекты.

Также возможны чудеса с несоблюдением клиентами DNS TTL, что может привести к тому что клиент будет юзать какие-то устаревшие записи из своего протухшего кеша вместо того чтобы спросить Unbound.

На практике у меня ни первое ни второе не вызывало проблем, but your mileage may vary.

Настройка сервера

Для удобства раскатывания я написал роль для Ansible. Она может настраивать как сервера, так и клиенты на базе Linux (рассчитано на deb-based дистрибутивы). Все настройки достаточно очевидны и задаются в inventory.yml. Эта роль вырезана из моего большого плейбука, поэтому может содержать ошибки — pull requests welcome 🙂

Пройдёмся по основным компонентам.

При запуске двух BGP-демонов на одном хосте возникает фундаментальная проблема: BIRD никак не хочет поднимать BGP-пиринг с локалхостом (или с любым локальным интерфейсом). От слова совсем. Гугление и чтение mailing-lists не помогло, там утверждают что это by design. Возможно есть какой-то способ, но я его не нашёл.

Можно попробовать другой BGP-демон, но мне нравится BIRD и он используется везде у меня, не хочется плодить сущности.

Поэтому я спрятал dnstap-bgp внутрь network namespace, которое связано с корневым через veth интерфейс: это как труба, концы которой торчат в разных namespace. На каждый из этих концов мы вешаем приватные p2p IP-адреса, которые за пределы хоста не выходят, поэтому могут быть любыми. Это тот же механизм который используется для доступа к процессам внутри любимого всеми Docker и других контейнеров.

Для этого был написан скрипт и в dnstap-bgp был добавлен уже описанный выше функционал перетаскивания себя за волосы в другой namespace. Из-за этого его необходимо запускать под root либо выдать бинарнику CAP_SYS_ADMIN через команду setcap.

Ссылка на основную публикацию
Adblock detector