Openwrt как редактировать файлы

Обновлено: 03.07.2024

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

Я пытаюсь отредактировать исходный код build_dir. Но хочу, чтобы я перестроил openwrt. Мой код обновлялся с помощью нового кода svn.

Кто-нибудь, как это сделать?

Написание кода и его синхронизация:

1) Клонирование официального репозитория linino от Arduino на вашей машине с помощью git (установите его с помощью sudo apt-get install git):

2) Сделайте свои собственные изменения в соответствующих файлах кода, Makefiles или что-то еще, что вам нужно изменить.

3) Всякий раз, когда вы хотите синхронизировать свою работу с последними изменениями из удаленной основной ветки в репозитории linino, вам нужно сначала извлечь изменения, то есть извлечь их, не объединяя их, а затем во второй раз объединить их, а затем разрешить конфликты если таковые имеются:

Предварительно: если вы создали локальный филиал со своими собственными изменениями, вернитесь в главную ветку, вам нужно проверить мастер: git checkout master a) получение последних изменений:

b) Объединение их с вашими изменениями в локальном репозитории (обычно называемом источником):

Примечание: вы можете сделать это в одной команде:

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

4) Теперь вы готовы разрешать конфликты, если таковые имеются, для того, что вы можете использовать:

Это позволит вам разрешать конфликты с помощью графического инструмента, такого как tkdiff (инструмент слияния с двумя способами), или meld (инструмент слияния трех способов, diff ваши изменения, изменения с удаленного мастера и исходный файл).

Компиляция кода:

5) Откройте терминал в своем каталоге linino buildroot, убедитесь, что вы обновили конфигурацию, если вы добавили новые пакеты, а затем перекомпилируете образ, т.е.

Примечание. В качестве альтернативы вы можете перекомпилировать пакеты по одному. Вместо того, чтобы make простой make сделать:

Предварительный шаг: убедитесь, что вы скомпилировали инструментальную линейку linino, которая позволяет вам скомпилировать пакеты отдельно: cd trunk/make tools/install make toolchain/install make target/compile

Затем скомпилируйте свой пакет:

Или, альтернативно, вы можете быть более конкретным, выбрав любую цель из своего пакета. Makefile скажет, например, установить или скомпилировать или построить цели:

Наконец, перекомпилируйте целевую trunk/bin/yourArchitecture/packages индекса, общую для всех пакетов, которая позволит вам иметь каталог trunk/bin/yourArchitecture/packages каталоге trunk/bin/yourArchitecture/packages который содержит обновленный индекс пакетов, включая только что скомпилированный:

Проверяя, что все в порядке:

Теперь взгляните на trunk/bin/yourArchitecture/packages/Packages , сделайте grep, чтобы убедиться, что он указан в Packages (фактический индексный файл пакета) и обновлен:

Сокращение UCI значит Unified Configuration Interface и направлен на централизованную настройку OpenWrt. Настройка должна быть простой, понятной и документированной.

Многие программы имеют собственный конфигурационный файл, например /etc/network/interfaces или /etc/exports или /etc/dnsmasq.conf /etc/samba/samba.conf и иногда они используют несколько отличающуюся структуру синтаксиса. В OpenWRT вам не нужно мучиться с ними, мы только заменяем файлы настроек UCI!

Вам не нужно перезагружать свою систему для изменения настроек! Перейдите по ссылке command.line.utility:,чтобы знать как это делается. И, пожалуйста, не забывайте, что некоторые демоны уже имеются в системе, но по умолчанию они отключены! К примеру, демон cron отключён по умолчанию, следовательно, редактирование crontab не даст результата. Вам необходимо либо запустить демона при помощи /etc/init.d/cron start или включить его /etc/init.d/cron enable . Вы можете disable (отключить), stop (остановить) и restart (перезапустить) большинство демонов. Возможно документация по notuci.config поможет вам.

Общие принципы

Централизованная конфигурация OpenWrt находится в нескольких файлах, расположенных в каталоге /etc/config/ . Каждый файл относится к части системы, который он настраивает. Вы можете редактировать файлы конфигурации в текстовом редакторе или с помощью утилиты командной строки uci , или через различные интерфейсы программирования (например, Shell, Lua и C).

Конфигурационные Файлы

Синтакс Файлов

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

Ниже приведен пример простого конфигурационного файла:

В строках начинающихся с дескриптора list определены опции с множественными значениями. Все определения list , которые используют одинаковое имя ( collection в нашем примере), будут объединены в один список значений в том порядке, в котором они были в конфигурационном файле. Наличие отступов в строчках с определениями option и list является соглашением для улучшения читаемости конфигурационного файла, но синтаксически не обязательно.

Все приведенные ниже примеры являются синтаксически корректными в uci:

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

option example some value with space (кавычки отсутствуют вокруг значения)

Важно знать, что идентификаторы UCI и имена конфигурационных файлов могут содержать только символы a-z , 0-9 и _ . Значения опций могут содержать любые символы (пока они в кавычках).

Утилита Командной Строки (UCI)

Использование awk и grep для парсинга конфигурационных файлов OpenWrt является избыточным, неумным и неэффективным. Вместо этого используйте утилиту uci для получения того что Вам нужно.

Ниже приведено описание, а также некоторые полезные примеры использования этой мощной утилиты. Запомните, друзья не позволяют друзьям парсить собственные конфигурационные файлы!

Использование

Команда Цель Описание
commit [<config>] Сохраняет изменения данного конфигурационного файла, либо, если он не указан, всех конфигурационных файлов в файловую систему. Все команды “uci set”, “uci add”, “uci rename” и “uci delete” сохраняют результаты во временное хранилище и сохраняются сразу скопом во флэш-память с помощью “uci commit”. Это не нужно делать после редактирования конфигурационного файла в текстовом редакторе, но необходимо для скриптов, GUI и других программ работающих непосредственно с UCI файлами.
batch - Запускает многострочный UCI скрипт, который обычно выполнен в форме here-документа).
export [<config>] Экспорт конфигурации в машино-читаемый формат. Используется внутренне для преобразования конфигурационных файлов в shell-скрипты.
import [<config>] Импорт конфигурационных файлов в синтаксисе UCI.
changes [<config>] Список зарезервированных (пер. но еще не сохраненных) изменений данного конфигурационного файла или, если файл не указан, всех конфигурационных файлов.
add <config> <section-type> Добавить анонимную секцию типа section-type в данную конфигурацию.
add_list <config>.<section>.<option>=<string> Добавить данную строку в существующий список опций.
show [<config>[.<section>[.<option>]]] Отобразить данную опцию, секцию или конфигурацию в компактном виде.
get <config>.<section>[.<option>] Получить значение данной опции или тип данной секции.
set <config>.<section>[.<option>]=<value> Установить значение данной опции, или добавить новую секцию с типом равным указанному значению.
delete <config>[.<section[.<option>]] Удалить данную секцию или опцию.
rename <config>.<section>[.<option>]=<name> Переименовать данную секцию или опцию.
revert <config>[.<section>[.<option>]] Отменить изменения данной опции, секции или конфигурационного файла.

Примеры:

Нет необходимости рестарта всей системы

Все сделано. Перезагрузка не требуется.

Экспорт всей конфигурации

Отобразить в древовидном виде данную конфигурацию



Вся работа UCI сводится к редактированию файлов, расположенных в каталоге /etc/config/. Поэтому все команды uci можно свести к примитивной работе с текстовыми файлами с помощью джентельменского набора awk, cat, grep и редактора vi. Но такой подход является избыточным и мало эффективным по сравнению с предложенным разработчиками функционалом. Посудите сами: для получения детальной информации о параметрах текущего WAN соединении необходимо написать сложный парсер вывода команды ifconfig:


Список команд и опций uci доступен по вызову этой утилиты в консоли без параметров:


После конфигурирования необходимо сделать uci commit для сохранения изменений и перезапустить соответствующий сервис. Список сервисов (с соответствующими файлами папки /etc/config) приведен ниже:

Файл Описание
Основные
/etc/config/dhcp Конфигурация Dnsmasq и установки DHCP
/etc/config/dropbear Опции SSH сервера
/etc/config/firewall NAT, пакетная фильтрация, перенаправление портов, и т.д.
/etc/config/network Конфигурация коммутатора, интерфейсов и маршрутизатора
/etc/config/system Доп. системные настройки
/etc/config/timeserver Список серверов времени для rdate
/etc/config/wireless Настройки беспроводного подключения и сети wifi
IPv6
/etc/config/ahcpd Ad-Hoc Configuration Protocol (AHCP) server and forwarder configuration
/etc/config/aiccu AICCU client configuration
/etc/config/dhcp6c WIDE-DHCPv6 client
/etc/config/dhcp6s WIDE-DHCPv6 server
/etc/config/gw6c GW6c client configuration
/etc/config/radvd Router Advertisement (radvd) configuration
Другое
/etc/config/bbstored Конфигурация сервера резервного копирования BoxBackup
/etc/config/etherwake Wake-on-Lan: etherwake
/etc/config/fstab Точки монтирования и раздел подкачки
/etc/config/hd-idle Another idle-daemon for attached hard drives
/etc/config/httpd Установки веб-серввера (Busybox httpd, устарело)
/etc/config/luci Основные настройки LuCI
/etc/config/luci_statistics Настройка пакета статистики
/etc/config/mini_snmpd Настройки SNMP демона mini_snmpd
/etc/config/minidlna Настройки MiniDLNA
/etc/config/mjpg-streamer Настройки потокового вещания для Linux-UVC совместимых веб-камер
/etc/config/mountd Настройки демона автомонтирования OpenWrt
/etc/config/mroute Конфигурационные файлы для маршрутов мульти-WAN
/etc/config/multiwan Конфигурация простого мульти-WAN
/etc/config/ntpclient Настройки NTP клиента синхронизации времени
/etc/config/p910nd Настройки для без-буферного демона печати p910nd.server
/etc/config/pure-ftpd Конфигурация сервера Pure-FTPd
/etc/config/qos Реализация QoS для upload
/etc/config/racoon Настройки сервиса IPsec racoon
/etc/config/samba Настройки сервера SAMBA для шаринга файлов и принтеров сетей Microsoft
/etc/config/snmpd Настройки SNMP демона SNMPd
/etc/config/sshtunnel Установки пакета sshtunnel
/etc/config/stund Настройки сервера STUN
/etc/config/transmission Настройки BitTorrent
/etc/config/uhttpd Настройки веб-сервера (uHTTPd)
/etc/config/upnpd Настройки UPnP сервера miniupnpd
/etc/config/users База данных пользователей для различных сервисов
/etc/config/ushare Настройки сервера UPnP uShare
/etc/config/vblade vblade userspace AOE target
/etc/config/vnstat vnstat downloader settings
/etc/config/wifitoggle Скрипт для вкл. WiFi кнопкой
/etc/config/wol Wake-on-Lan: wol
/etc/config/wshaper wondershaper qos script settings
/etc/config/znc ZNC bouncer configuration

Изменение системного имени

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. С такой конфигурацией можно полностью забыть про мелкие пакости от Роскомнадзора и начать, наконец, жить :)

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