Iptables обход блокировки дом ру

Обновлено: 07.07.2024

Объезжаем блокировки Роскомнадзора на роутере. Роскомнадзор, Обход блокировок, Zyxel, Openvpn, Длиннопост, Гифка

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

Этот способ подойдет счастливым обладателям интернет-центров Zyxel у которых в домашней сети много клиентов, чтоб не настраивать каждый отдельно. А так же тем, у кого есть устройства, умеющие воспроизводить медиаконтент, а обходить блокировки - нет. Например как у меня :

Объезжаем блокировки Роскомнадзора на роутере. Роскомнадзор, Обход блокировок, Zyxel, Openvpn, Длиннопост, Гифка

Дисклеймер. Я не несу ответственность за "окирпичивание" роутера, сброс настроек и т.д. В моем конкретном случае данный способ работает.

Работоспособность проверена на Keenetic Ultra, но в теории должно работать и на других моделях:

Keenetic 4G III

Keenetic 4G III B

Keenetic Extra II

Keenetic Giga II

Keenetic Giga III

Keenetic Lite II

Keenetic Lite III

Keenetic Lite III B

Keenetic Omni II

Keenetic Start II

Keenetic Ultra II

Для начала убедимся, что версия прошивки роутера не ниже "2.10.A.1.0-0".

После установки прошивки заходим в веб-конфигуратор -> переходим в раздел "Система" -> "Обновление" -> кликаем "Показать компоненты" и в разделе "Networking" ставим галку напротив "Клиент OpenVPN".

Объезжаем блокировки Роскомнадзора на роутере. Роскомнадзор, Обход блокировок, Zyxel, Openvpn, Длиннопост, Гифка

Листаем в самый низ и кликаем "Установить". Роутер - перезагружается.

Объезжаем блокировки Роскомнадзора на роутере. Роскомнадзор, Обход блокировок, Zyxel, Openvpn, Длиннопост, Гифка

Далее выбираем одну из конфигураций этого сервера, например с использованием доменного имени DDNS и TCP 995.

Объезжаем блокировки Роскомнадзора на роутере. Роскомнадзор, Обход блокировок, Zyxel, Openvpn, Длиннопост, Гифка

При этом на компьютер скачается файл конфигурации с расширением .ovpn. Откройте его в текстовом редакторе Блокнот (Notepad) и скопируйте все содержимое в буфер обмена (Ctrl A, Ctrl C). После чего в веб-конфигураторе Keenetic зайдите в раздел Интернет и на вкладке PPPoE/VPN добавьте соединение. В его настройках поставьте галочку Включить, добавьте Описание (например, vpngate), выберите Тип (протокол) — OpenVPN, а в поле Конфигурация OpenVPN вставьте скопированную конфигурацию из буфера обмена (Ctrl V) и нажмите Применить.

Объезжаем блокировки Роскомнадзора на роутере. Роскомнадзор, Обход блокировок, Zyxel, Openvpn, Длиннопост, Гифка

На этом настройка окончена.

Проверьте, что соединение установлено в разделе Интернет на вкладке Подключения.

Объезжаем блокировки Роскомнадзора на роутере. Роскомнадзор, Обход блокировок, Zyxel, Openvpn, Длиннопост, Гифка

Лично я подбирал конфигурации openvpn опытным путем, замеряя отклик и пропускную способность соединения.

Если вы все сделали как я написал, но блокировки не пропали, возможно стоит отключить DNS сервера провайдера через командную строку.

Для начала включаем telnet-клиент:

Объезжаем блокировки Роскомнадзора на роутере. Роскомнадзор, Обход блокировок, Zyxel, Openvpn, Длиннопост, Гифка

Объезжаем блокировки Роскомнадзора на роутере. Роскомнадзор, Обход блокировок, Zyxel, Openvpn, Длиннопост, Гифка

Объезжаем блокировки Роскомнадзора на роутере. Роскомнадзор, Обход блокировок, Zyxel, Openvpn, Длиннопост, Гифка

Теперь жмем Пуск – Выполнить…

В открывшемся окне набираем cmd и нажимаем OK. Для подключения к интерфейсу командной строки (CLI — Command Line Interface) интернет-центра введите команду telnet 192.168.1.1 и нажимаем Enter. (192.168.1.1 - адрес роутера по умолчанию, если вы его меняли, значит у вас он будет другой)

Объезжаем блокировки Роскомнадзора на роутере. Роскомнадзор, Обход блокировок, Zyxel, Openvpn, Длиннопост, Гифка

Набираем последовательно команды:

(config)> interface ISP no ip dhcp client name-servers

system configuration save

Не забудте назначить вручную в настройках ISP подключения адреса DNS серверов Google: 8.8.8.8 и 8.8.4.4

Перезагрузите роутер и проверьте, что блокировки пропали.

Если захотите вернуть настройки назад, наберите:

(config)> interface ISP ip dhcp client name-servers

system configuration save

В конце должно получиться примерно вот так:

Объезжаем блокировки Роскомнадзора на роутере. Роскомнадзор, Обход блокировок, Zyxel, Openvpn, Длиннопост, Гифка

Если какие-то моменты остались не понятны, постараюсь ответить в комментариях.

Всем свободного контента и хороших выходных!

Объезжаем блокировки Роскомнадзора на роутере. Роскомнадзор, Обход блокировок, Zyxel, Openvpn, Длиннопост, Гифка

Я думаю, стоит добавить, что в таком случаи весь трафик пойдет через VPN. Если требуется использовать только для доступа к конкретным ресурсам, то во вкладке Подключение, выставляем приоритет для VPN ниже, чем основное подключение. А потом во вкладке Прочее, создаем маршрут: указываем ip адрес сайта и выбираем использовать VPN подключение.

Я бы не особо доверял свои данные какому-то левому VPN-серваку.

Сам для себя держу прозрачный прокси с тором, который запакован в Docker.

Увы, без такого сейчас никак.

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

на Zuxel Keenetic Giga поставил DNS на DHCP сервер: 8.8.8.8 + 8.8.4.4 + 1.1.1.1

Собственно и всё.

VPN не понадобился.

На моём провайдере работает

в 2021 есть что-то нормально работающее? осознал что на опере отключили впн. и загрустил. не думал что меня коснется

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

А еще проще установить а-ля Frigate для браузера

у вас то же заиграла в голове мелодия it's my life с диким русским акцентом?)

как все сложно. скачай TOR, включи в нем ява-скрипты и наслаждайся.

Пидорская радуга детектед.

такое себе решение. будет работать только до критической массы. потом начнут блокировать VPN да и все.

ну и парочку прилюдных порок

Рекомендую выкинуть zyxel и поставить openwrt на то что есть, в том числе может и на zyxel.

Метод кривой, надо ОБЯЗАТЕЛЬНО доработать - в VPN заворачивать ТОЛЬКО ЗАБЛОКИРОВАННЫЕ, а то что есть - детсад и в морг.


Начало кампании РКН против VPN

Начало кампании РКН против VPN Google Chrome, Firefox, Роскомнадзор, Роскомсвобода, Обход блокировок, Блокировка RuTracker, Блокировка, Блокировка Пикабу, VPN, Блокировка telegram, Свобода слова, Добби свободен, Opera, Длиннопост

Думаю ни для кого не секрет, что в последнее время РКН все больше закручивает гайки. Пробует разные подходы, начиная от реального замедления определенных ресурсов или же ограничиваясь угрозами замедлить их (привет Twitter и YouTube). Конечно, абсолютное фиаско и унижение, полученное после неудачной попытки блокировать Telegram не прошло бесследно. РКН обиду не забыл, а поэтому методы становятся немного более избирательными, чтобы не рушить чудовищное количество важной инфраструктуры, действуя подобно пушке, стреляющей по воробьям (да, это отсылка про рухнувший Сбербанк и прочее при попытке заблокировать Telegram). Хотя и до сих пор каждую неделю звучат призывы огородить богомерзкие и внезапно ставшими неугодными углы интернета от неустоявшейся психики граждан.

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

Можно подумать так: "Ну что ж, значит возьму те, что с конца списка и буду пользоваться ими". Ну например Hola Free VPN Proxy — он есть в списке. Или хотя бы тот же АнтиЗапрет, что угодно, это все вопрос времени. Да, кроме того что придут и за ними, есть еще один нюанс. В конце концов, все эти решения, придумывались в качестве относительно простого обхода блокировок. Раньше, до определенного момента времени, было достаточно любого прокси, как например самый популярный NL (Голландия) прокси или DE (Германия). Сейчас ситуация еще сильнее ухудшилась. Теперь да же зайдя на некоторые заблокированные сайты, то они не откроется из NL и DE. На rezka.ag многие фильмы не откроются да же через UA (Украина).

Т.е. в данный момент не только нужно найти подходящий прокси сервер через который открывается большинство сайтов, но и для части сайтов держать дополнительные сервера. Думаю не нужно говорить что постоянное переключение между этими проксями и сопровождение этих правил, что-откуда надо открывать, не доставляет особого удовольствия. Хоть даже сейчас существуют бесплатные варианты типа той же Hola, но кто-нибудь пытался смотреть через них какое-нибудь потоковое видео? Нужно признать бесплатные варианты, подходят только для того чтобы почитать статеечки или посмотреть картинки. Но интернет давно уже не текст с картинками, это ролики по 150 а то и 1500 mb, YouTube шагает по планете. Обычные варианты такое уже не вывозят.

Все мы хотим пользоваться интернетом так, как этого заслуживаем в 2021 году, а не так как это существует в анально огороженном Китае. Список VPN-сервисов, которые заблокируют на территории России разослали ещё 18 марта среди сотрудников Сбера, а в публичном доступе письмо всплыло 15 апреля. Информация об этом появилась на форуме ntc.party , где сидят разработчики анти-цензурного софта.

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

Для Google Chrome и Mozilla Firefox релиз уже есть.

Вот главные условия и приципы:

- База всегда максимально полная — обновление происходит ежедневно. Это очень важно.

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

- В век страха быть чипированным и получить Covid-19 от вышек 5G клянусь не собирать данных пользователей, не хранить никаких логов на серверах и не передавать ничего третьим лицам. (А нафиг оно мне надо, место у меня тоже ограничено).

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

Могу заверить, что изначально все создается так, чтобы не допустить остановки сервиса.

Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Выявляем и блокируем пакеты пассивного DPI

Wireshark

Поддельные пакеты, формируемые DPI, легко обнаружить анализатором трафика, например, Wireshark.
Пробуем зайти на заблокированный сайт:

image

Рассмотрим пакет от DPI подробнее:

Активный DPI

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

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

OWS — опциональный один или несколько символов пробела или табуляции, SP — одинарный символ пробела, HTAB — табуляция, CRLF — перенос строки и возврат каретки (\r\n).

Это значит, что запрос ниже полностью соответствует стандарту, его должны принять многие веб-серверы, придерживающиеся стандарта:

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

Clients SHOULD be tolerant in parsing the Status-Line and servers tolerant when parsing the Request-Line. In particular, they SHOULD accept any amount of SP or HT characters between fields, even though only a single SP is required.

Этой рекомендации придерживаются далеко не все веб-серверы. Из-за двух пробелов между методом и путем ломаются некоторые сайты.

Спускаемся на уровень TCP

Пакет 1:
Пакет 2:

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

Программа для обхода DPI

Эффективное проксирование для обхода блокировок по IP

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

ReQrypt

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

Заключение и TL;DR

GoodbyeDPI — программа под Windows, позволяющая обходить пассивные и активные DPI. Просто скачайте и запустите ее, и заблокированные сайты станут снова доступны.
Для Linux есть аналогичная программа — zapret.

Используйте кроссплатформенную программу ReQrypt, если ваш провайдер блокирует сайты по IP-адресу.

Определить тип блокировки сайтов можно программой Blockcheck. Если в тестах DPI вы видите, что сайты открываются, или видите строку «обнаружен пассивный DPI», то GoodbyeDPI вам поможет. Если нет, используйте ReQrypt.

очень даже ребята заморочились и tumblr и порнолаб прикрыли, даже через проксик не работает
но интересно, что рутрекер и порнхаб не закрыли ))
Скорее всего, если подниму опенвпн - доступ опять появится,
но сейчас мне стало интереснее, другое, что они применяют, чтоб мне, через мой немецкий прокси в хецнере не были доступны эти сайты?
и можно ли как то подкрутить настройки proxy(squid) чтобы восстановить доступ?
п.с. поднимать openvpn ленива.



dns over tls настрой.


возьми pritunl. он легко поднимается. это конструктор на базе openvpn


опенвпн тоже несложно. парой команд.


спасибо, уже ковыряю.


надо попробовать днс гугля прописать


Dark_SavanT верно советует. У дом.сру скорее всего перехват есть. Можешь включить dnssec и офигеть, как проверки будут фейлиться.


так какое самое прямое решение?
пока на ум приходит навернуть свой днс-сервер на впс на нестандартном порту,
и потом на роутере настроить форвардинг/триггеринг портов с нестандартного на 53

аа, пров походу свой днс юзает. надо попробовать днс гугля прописать

А в чём проблема для прова подменить ответ от DNS гугля? dns over tls используй


Странно, что остались еще те провайдеры которые блокирует доступ по днс.

пока на ум приходит навернуть свой днс-сервер на впс на нестандартном порту,
и потом на роутере настроить форвардинг/триггеринг портов с нестандартного на 53

Не поможет, dns трафик не шифруется, Пров его подменит на свой.
Надо через зашифрованный канал пускать, и 53 порт блокировать.


Поднять dns на vps и прописать, чтобы роутер его раздавал по dhcp. Или чтобы форвардил все зарпосы на него, в зависимости от реализации dns там.

Странно, что остались еще те провайдеры которые блокирует доступ по днс.

В 99,9% это сработает, в чём проблема?

Поднять dns на vps и прописать, чтобы роутер его раздавал по dhcp. Или чтобы форвардил все зарпосы на него

Сам пробовал, перед тем, как такую чушь писать?


В штрафах от ркн.


Поднять dns на vps и прописать, чтобы роутер его раздавал по dhcp.

а в этом случае почему провайдер не может перехватывать?

Но штраф приходит, если из сети провайдера на запрещённые ресурсы можно зайти, а раз подмена dns работает, то и штрафа провайдеру не будет.

Resistance Dog Good Boy

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

Так как большая часть моего трафика всё-таки ходит к незаблокированной части интернета, то логично пускать через VPN лишь тот трафик, который в этом нуждается. Ну нет ведь смысла гонять через VPN просмотр видео на YouTube или какую-нибудь игру? В итоге получится просто более медленный доступ, а профита никакого.

Стоит отметить, что если вам нужен обход блокировок только на одном устройстве, там вам намного проще будет настроить VPN именно на нём. У многих провайдеров VPN есть программы-клиенты, которые в несколько кликов по красивым кнопкам настроят вам всё, что нужно — просто погуглите, сравните цены и условия. Ещё можете посмотреть в сторону таких бесплатных проектов, как АнтиЗапрет.

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

Роутер и прошивка

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

Мой нынешний роутер — это Xiaomi Mi WiFi Router 3G. Выбрал его, потому что в нём достаточно мощи, чтобы на нём хорошо работала OpenWRT. Да и вообще, Mir3G — это, похоже, один из самых популярных девайсов в тусовке людей, которые занимаются дрессировкой роутеров, так что в сети по нему уже есть много мануалов и обсуждений на форумах. Если захотите купить такой же, то будьте аккуратны с конкретной моделью — их две под одним названием, а хорошая только та, у которой есть порт USB3. Такой роутер должно быть несложно купить на Авито или других досках объявлений.

У меня на данный момент установлена почти последняя версия прошивки:

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

Блокировки

Грубо говоря, существует два типа блокировок:

Нам нужно победить оба. Разберёмся с каждым из них по порядку.

Шаг 1. Шифрованный DNS

DNS (Domain Name System) — это распределенная система (нет, это не сеть магазинов), состоящая из множества серверов по всему миру, которая позволяет вашему компьютеру преобразовать человекочитаемое имя сайта в машиночитаемый IP-адрес, например, из github.com получить 140.82.121.3 . Этот процесс называется "разрешением" или "резолвингом" доменного имени.

Блокировка по доменным именам зачастую реализуется провайдером следующим образом: ваш роутер по умолчанию использует DNS-сервер, который контролируется провайдером и для заблокированных доменных имён возвращает специальный адрес сайта-заглушки. Именно это происходит, когда вы видите в браузере "доступ к ресурсу ограничен в соответствии со 149-ФЗ".

Доступ ограничен

Кажется, что решение очевидно — просто не пользоваться DNS-сервером провайдера, а использовать, например, Google DNS, IP-адреса которого уже стоит знать наизусть как считалку — 8.8.8.8, 8.8.4.4 . Раньше это действительно работало, но сегодня провайдеры уже не дадут вам так просто себя обмануть.

Поскольку DNS — это очень старый протокол, в котором никак не было предусмотрено шифрование от слова "вообще", у провайдеров есть возможность перехватывать ваши запросы и подменять ответы, вставляя свой сайт-заглушку, даже если запрос шёл, например, к Google DNS. Именно этим они и занимаются. По сути, провайдер проводит против вас атаку DNS hijacking.

Вот как это работает, если всё хорошо. В таком сценарии можно даже не заметить этого "человека посередине" в лице вашего провайдера:

DNS-запрос к незаблокированному домену

А вот так это работает, когда всё плохо. Провайдер наверняка даже не отправляет запрос к DNS-серверу, которому он предназначался, а просто сразу же возвращает ответ, подставляя адрес своей заглушки:

DNS-запрос к заблокированному домену

Но по-настоящему эффективное решение есть. Если провайдер не сможет увидеть, к какому домену происходит обращение, то не сможет и подменить ответ. А ещё лучше, если он вообще не будет знать, что происходит резолвинг имени. Этого можно достичь шифрованием.

Обновим список пакетов. Эту команду нужно выполнять после каждой перезагрузки роутера перед установкой пакетов:

Чтобы плагин для LuCI заработал, нужно сделать выполнить вот такую команду:

Готово! Теперь на компьютере, подключенном к роутеру, можно проверить как это работает:

Обратите внимание, что адреса возвращаются разные: до настройки DoH — неправильный, это результат подмены адресов провайдером, а после — правильный. Можно считать это маленькой победой!

OpenWRT LuCI DoH settings

Сам по себе обход блокировок по DNS вряд ли даст ожидаемый эффект, потому что, как правило, в довесок к доменному имени, ресурс блокируется еще и по IP-адресам — видимо, для надежности. Это следующий тип блокировок, которые нужно победить.

Стоит упомянуть про побочные эффекты от такой настройки — могут стать недоступными различные внутренние ресурсы провайдера. Например, когда у меня кончается интернет и я забываю его оплатить, провайдер просто не может меня переадресовать на страницу, куда он обычно направляет своих забывчивых абонентов. Для меня выглядит это всё так, будто интернет просто пропал, без каких-либо объяснений. Я даже первый раз из-за этого чуть не поругался с поддержкой, а оказалось, что это я сам дурак. Что ж, просто приходится платить заранее.

Если нравится статья, то подпишитесь на уведомления о новых постах в блоге, чтобы ничего не пропустить! А ещё читайте другие мои посты!

Шаг 2. Настройка VPN WireGuard

Для того, чтобы обходить блокировки по IP-адресам, придётся настроить VPN — другого способа нет. VPN "спрячёт" от провайдера ваши IP-пакеты так, что он не будет знать куда именно они направляются и что в себе содержат. В качестве протокола предлагаю использовать WireGuard — легковесный VPN-протокол, который к тому же довольно легко настраивать.

Всё описанное дальше вдохновлено и по сути является пересказом вот этой замечательной статьи на Хабре с некоторыми (минимальными) дополнениями от меня.

VPN — это клиент-серверный протокол. Наш роутер будет клиентом, но также нам обязательно нужен сервер. Можно либо поднять свой VPN-сервер самостоятельно (смотрите инструкцию в статье по ссылке выше, это не сложно), либо оформить подписку на какой-нибудь готовый VPN-сервис. Я пробовал оба варианта, но поддерживать свой VPN-сервер оказалось достаточно трудозатратно, и это тоже, как ни странно, стоит денег. Сложнее всего найти хостинг для своего VPN с незаруиненной репутацией. Проблема, с которой я столкнулся, заключалась в том, что все дешевые хостинги уже имеют плохую репутацию (спасибо вам, господа спамеры), и некоторые ресурсы, типа Пикабу (который тоже, как выяснилось, немножко заблокирован), сразу же заранее отвечают ошибкой 403. Намного проще купить готовый VPN, и пусть лучше кто-то другой за меня беспокоится о том, чтобы мне были доступны все нужные мне сайты.

В последнее время появляется очень много VPN-сервисов, которые работают по протоколу WireGuard — это нынче горячая тема. Недавно поддержка WireGuard была добавлена в основной состав ядра Linux. Погуглите, выбор сервисов действительно есть. Сейчас я пользуюсь RedShieldVPN, и меня пока что всё устраивает.

Бонус для читателей: при регистрации по этой ссылке вам подарят месяц бесплатного VPN.

Дальше буду описывать процесс для RedShieldVPN, но, думаю, для других подобных сервисов процесс должен быть похожим.

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

Вот примерно такой файл конфигурации скачался (ключи я заменил):

Переключимся на роутер и установим там нужную зависимость:

Дальше нужно настроить сеть. Это происходит в файле /etc/config/network . Открываем его при помощи vi (если не умеете пользоваться этим редактором, то лучше предварительно почитайте что-нибудь для подготовки психики) и дописываем в конец две секции вот такого содержания:

Приватный и публичный ключи замените соответствующими значениями из конфига. Поле list addresses заполняется IPv4-адресом из строчки Address в конфиге, а IPv6 адрес мы просто игнорируем — позже станет понятно почему. Поле Endpoint из конфига WireGuard распадается, соответственно, в поля endpoint_host и endpoint_port в конфиге OpenWRT. Остальные поля статичные.

Перезапустим сеть на роутере:

Если команда wg show выводит что-то подобное, то всё идёт хорошо.

Шаг 3. Скрипт для сбора списков заблокированных адресов

Это возможно благодаря крутейшему сервису antifilter.download, который обрабатывает выгрузки Роскомнадзора и отдает их в виде списков IP-адресов в машиночитаемых форматах. Мы настроим периодическую выгрузку списков заблокированных адресов с antifilter.download, чтобы всегда иметь актуальную информацию о блокировках. По моему опыту обновлять этот список раз в сутки (например, ночью) вполне достаточно.

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

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

Создадим файл /etc/init.d/hirkn со скриптом следующего содержания:

Этот скрипт скачивает два списка заблокированных адресов — один в виде сетей (иногда РКН блокирует адреса целыми подсетями), другой — обобщенный список отдельных заблокированных адресов. За счёт обобщения в небольшие подсети он содержит не миллионы строк, а всего лишь что-то около 15 тысяч. Нам нужны оба списка, они не пересекаются между собой. Файлы сохраняются в каталог /tmp , который в OpenWRT хранится в оперативной памяти — это должно работать быстро. В конце скрипт перезапускает файлволл. Настройка файлволла будет происходит позже.

Добавим этому скрипту права на выполнение:

Добавим скрипт в "автозапуск", чтобы он выполнялся при включении роутера после всех остальных скриптов:

Через cron запланируем выполнение этого скрипта раз в сутки:

В открывшемся редакторе нужно добавить на новой строке:

На crontab.guru можно посмотреть объяснение этой строчки.

Включим cron , потому что по умолчанию в OpenWRT он выключен:

Убедимся, что скрипт работает.

Если файлы со списками заблокированных адресов появились, то всё ок:

Шаг 4. Дальнейшая настройка

Теперь осталось настроить роутер так, чтобы он правильно маршрутизировал пакеты через VPN-туннель.

Создадим таблицу маршрутизации для VPN, добавив в файл /etc/iproute2/rt_tables строчку следующего вида:

Добавим дефолтный маршрут для VPN через туннельный интерфейс:

Чтобы сделать это изменение постоянным, чтобы оно переживало перезагрузки роутера, создадим файл /etc/hotplug.d/iface/30-rknroute с вот таким содержимым:

В файл /etc/config/network , который мы уже редактировали в процессе настройки WireGuard, добавим правило, которое будет перенаправлять маркированные пакеты в таблицу маршрутизации VPN:

Теперь приступим к настройке файрволла. Это самая важная часть логики, которая просматривает списки заблокированных адресов, и маркирует пакеты. В файл /etc/config/firewall допишем несколько абзацев:

Первый из них настраивает зону для VPN — из неё разрешён лишь выход пакетов и включён маскарадинг.

Второй абзац разрешает переход из зоны lan , где по умолчанию находятся все устройства, подключенные к роутеру, в зону для VPN.

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

Пятый и шестой абзацы отвечают за маркировку пакетов: "если пакет направляется на заблокированный адрес, то добавим ему пометку 0x1 ".

И запустим наш скрипт:

После этого трафик к заблокированным сайтам должен побежать через VPN. Если нет, то попробуйте перезагрузить роутер.

Шаг 5. Отключаем IPv6

Этот шаг мой самый нелюбимый, потому что я за всё новое и против всего старого. По моему глубокому убеждению IPv4 уже давно должен умереть и быть вытеснен шестой версией протокола. К сожалению, дела у IPv6 пока идут не так гладко, как хотелось бы (сейчас он занимает всего около 30% процентов трафика).

Проблема в том, что antifilter.download выдаёт только заблокированные IPv4 адреса. Это значит, что наш обход блокировок не будет работать по IPv6. Если разрешить вашему роутеру работать по IPv6, то многие ваши устройства предпочтут открывать сайты по IPv6 либо напарываясь на страницы с блокировками от провайдеров, либо просто получая ошибки подключения по таймауту.

Отключаем IPv6 (команды взяты отсюда):

После этого может потребоваться ещё одна перезагрузка роутера, чтобы он перестал раздавать вновь подключенным устройствам IPv6-адреса.

Вот как-то так можно при помощи несложных (ладно, сложных) манипуляций настроить свой роутер на точечный обход блокировок. Все незаблокированные сайты работают как обычно, а заблокированные — через VPN. С такой конфигурацией можно полностью забыть про мелкие пакости от Роскомнадзора и начать, наконец, жить :)

Читайте также: