
После начала Специальной Военной Операции многие западные компании объявили о прекращении своей деятельности в России и Белоруссии и некоторые из них стали блокировать пользователям с российскими и белорусскими IP-адресами доступ на свои ресурсы в сети Интернет. Яркими примерами таких блокировок являются сайты: intel.com, dell.com, chatgpt.com, community.cisco.com, mongodb.com, tenable.com, wiki.zimbra.com, releases.hashicorp.com, registry.terraform.io, vagrantcloud.com, solarwinds.com и множество других.
Такие блокировки мешают IT-специалистам из России и Белоруссии получать доступ к актуальной информации и программному обеспечению необходимому для обучения и работы. Препятствуют получению актуальных релизов программных продуктов и критических обновлений безопасности, что в условиях участившихся хакерских атак стало особенно важным.
Также, в качестве упражнений для ума, можно поизучать вопросы о допустимости дискриминации по национальному признаку и принципе сетевой нейтральности.
В этой статье будет рассказано о том, как сконфигурировать роутеры марки Keenetic (возможно и других марок, поддерживающих установку пакетов из репозитория Entware) для развертывания на них программного пакета обеспечивающего расширенное управление маршрутизацией. Будет приведена инструкция как установить на роутер Telegram-бота для быстрого и удобного управления маршрутизацией трафика.
В это статье НЕ БУДЕТ инструкций о том откуда взять работающий VPN и НЕ БУДЕТ инструкций о том как обходить блокировки Роскомнадзора. Обсуждать это в комментариях к статье тоже НЕ НУЖНО.
Моя статья посвящена изучению современных инструментов и технологий и объясняет то как получить доступ к легальным сайтам, доступ к которым изнутри страны не ограничен и которые самостоятельно закрыли доступ для пользователей из России и Белоруссии.
Отдельно хочу заметить, что я регулярно вычитываю законы которые затрагивают мои права, свободы и законные интересы и не собираюсь давать Роскомнадзору правовых оснований для скрытия этой статьи из публичного доступа. Конечно, я не могу исключать попыток Роскомнадзора скрыть мою статью путём расширенного толкования действующих законов, либо превышения должностных полномочий и выходом за пределы правового поля. Однако надеюсь что и в этом случае у меня хватит знаний и опыта для юридической защиты моей публикации.
Продолжая чтение настоящей статьи вы полностью соглашаетесь с тем что всеми полученными знаниями, технологиями и программными продуктами следует распоряжаться добросовестно и разумно, не планируете нарушать действующее законодательство и собираетесь получать доступ только к ресурсам, использование которых не запрещено в стране вашего пребывания.
Если вы не согласны хоть с чем-то из вышеописанного - вам следует немедленно прекратить чтение настоящей статьи.
Оглавление
1) Перечень необходимых программно-аппаратных средств
2) Использование VPN, законодательство России, Роскомнадзор и КоАП
2.1) О публикациях про обход блокировок
2.3) О неправомерных блокировках
2.4) Об обжаловании действий Роскомнадзора
2.5) Краткий итог нормативно-правовой части
3) Предварительная настройка роутера
3.1) Установка и удаление компонентов KeeneticOS
3.3) Подготовка USB-накопителя
4) Установка системы расширенного управления маршрутизацией
5) Установка Telegram-бота для управления маршрутизацией
5.1) Регистрация бота в Telegram
5.2) Установка Telegram-бота на роутер
1) Перечень необходимых программно-аппаратных средств
Для реализации функционала указанного в заголовке статьи вам понадобятся:
-
Роутер фирмы Keenetic поддерживающий установку пакетов из репозитория Entware. Для проверки совместимости моделей и чтения инструкций по установке OPKG Entware можно воспользоваться следующими ссылками:
Примечание: Модели Keenetic 4G (KN-1210/1211/1213) и Extra (KN-1714) оснащены USB-разъемом для работы исключительно с совместимыми USB-модемами 3G/4G. Подключение USB-накопителей в этих моделях не поддерживается. По-крайней мере именно так пишет производитель.
На старших моделях роутеров Keenetic, в принципе, можно обойтись и без внешнего USB-накопителя и установить все необходимые пакеты на встроенную память. Я же использую модель, в которой есть полноценные USB-порты и, произвожу установку пакетов на внешний USB-накопитель, т.к. объема встроенного хранилища на моей модели явно недостаточно. Например у меня, при чистой установке последних версий всех необходимых пакетов на USB-накопителе занято порядка 360 MB, что заметно больше объема внутреннего хранилища. Кроме того внешний USB-накопитель позволяет создать SWAP-раздел, который будет использоваться роутером, в случае нехватки оперативной памяти. По моим наблюдениям, при повседневной эксплуатации роутер его практически не использует, но, например, при установке пакета pyTelegramBotAPI 4.28 ему потребовался пакет AIOHTTP, который, на момент написания статьи, собирается из исходников. И при сборке этого пакета, роутер весьма активно использовал SWAP-раздел, что подтвердило его необходимость.
-
Если вы решите устанавливать OPKG Entware на внешний накопитель, то вам, естественно, понадобится какой-нибудь USB-накопитель. Не принципиально будет ли это USB Flash, USB HDD или USB SSD, лишь бы ваш роутер мог с ним работать. Если выберете USB Flash, то советую выбирать накопитель размером от 1Gb из которых 256 MB отдать под SWAP-раздел, а остальное место выделить под OPKG Entware. Если же вы решите использовать USB HDD или USB SSD, то под SWAP-раздел также выделите 256 MB, под OPKG Entware выделите от 1 GB, а остальное место можно будет использовать, например, под хранилище файлов.
Примечание: Если под рукой есть только USB Flash накопитель на 512 мегабайт, и вам не терпится начать установку - то для минимальной установки хватит и его, т.к. бот прекрасно работает и с pyTelegramBotAPI 4.27, который занимает гораздо меньше места и не требует сборки AIOHTTP. Но я всё-же рекомендую использовать накопители большего размера, так как при таком маленьком объёме накопителя, скорее всего, будет недоступно обновление pyTelegramBotAPI до последней версии, по причине нехватки свободного места.
Аккаунт в Telegram. Необходимо иметь действующий пользовательский аккаунт в Telegram, при помощи которого вы зарегистрируете своего Telegram-бота и с которого будете посылать Telegram-боту команды для управления маршрутами. Если у вас еще нет аккаунта в Telegram, то сейчас самое время его создать.
Надежный и стабильный VPN, который обеспечит вам доступ к легальным сайтам. Про действующее законодательство, затрагивающее использование VPN-сервисов будет написано далее и я рекомендую ознакомиться с этой частью текста. Откуда в наше время берётся подходящий VPN я рассказывать не буду. Считайте что у меня амнезия.
2) Использование VPN, законодательство России, Роскомнадзор, ЦМУ ССОП и КоАП
По причине того что Роскомнадзор, за последние годы, ставит рекорды в области применения внесудебных блокировок, что, по-моей оценке, привело к крайне выраженному дисбалансу публичных правоотношений - я считаю необходимым привести положения нормативных актов, регулирующих вопросы рассматриваемые в настоящей статье. Надеюсь что приведенные положения помогут вам в понимании и защите своих прав, свобод и законных интересов.
Основные нормативные акты применимые к настоящей статье:
статья 29 Конституции Российской Федерации, гарантирующая свободу доступа к информации;
Федеральный закон от 27.07.2006 N 149-ФЗ "Об информации, информационных технологиях и о защите информации", в котором изложены правовые нормы, регулирующие доступ к информации, в том числе в сети "Интернет";
глава 13 КоАП РФ, предусматривающая административную ответственность, наступающую за нарушение ряда положений Федерального закона от 27.07.2006 N 149-ФЗ "Об информации, информационных технологиях и о защите информации";
часть 18 статьи 14.3 КоАП РФ, согласно поправкам к которой с 1-го сентября будет введена административная ответственность за рекламу VPN-сервисов, позволяющих получать доступ к ресурсам заблокированным на территории России и за поиск заведомо экстремистских материалов.
При желании или необходимости - вы можете прочитать указанные нормативные акты целиком. Я же приведу извлечения из указанных нормативных актов, имеющих отношение к настоящей статье и дам к ним свои комментарии.
2.1) О публикациях про обход блокировок
Список ресурсов заблокированных на территории Российской Федерации, согласно статье 15.1 Федерального закона от 27.07.2006 N 149-ФЗ "Об информации, информационных технологиях и о защите информации" называется:
Единый реестр доменных имен, указателей страниц сайтов в сети "Интернет" и сетевых адресов, позволяющих идентифицировать сайты в сети "Интернет", содержащие информацию, распространение которой в Российской Федерации запрещено.
Статья 15.1 описывает то, каким образом ведётся указанный реестр, кто его наполняет и что является основанием для включения того или иного ресурса в указанный список. Применимым к настоящей публикации будет подпункт М пункта 1 части 5 указанной статьи, а именно:
Основаниями для включения в реестр сведений, указанных в части 2 настоящей статьи, являются решения уполномоченных Правительством Российской Федерации федеральных органов исполнительной власти, принятые в соответствии с их компетенцией в порядке, установленном Правительством Российской Федерации, в отношении распространяемых посредством сети "Интернет" информации о способах, методах обеспечения доступа к информационным ресурсам и (или) информационно-телекоммуникационным сетям, доступ к которым ограничен на территории Российской Федерации;
Краткий итог: нельзя публиковать информацию о том, как получать доступ к ресурсам заблокированным на территории Российской Федерации. За это Роскомнадзор может потребовать у владельцев интернет-ресурса удалить вашу статью, либо заблокировать весь интернет-ресурс целиком, если ваша публикация не будет удалена.
2.2) Об использовании VPN
VPN (и другие сервисы), при помощи которых можно получать доступ к Интернет-ресурсам заблокированным на территории Российской Федерации, согласно статье 15.8 Федерального закона от 27.07.2006 N 149-ФЗ "Об информации, информационных технологиях и о защите информации" называются:
информационно-телекоммуникационные сети и информационные ресурсы, посредством которых обеспечивается доступ к информационным ресурсам и информационно-телекоммуникационным сетям, доступ к которым ограничен на территории Российской Федерации
Статья 15.8 крайне тавтологично описывает то что на территории Российской Федерации запрещено работать компаниям, предоставляющим VPN-сервисы, при помощи которых можно обходить запреты установленные органами исполнительной власти. Описывает то, как именно Роскомнадзор, при помощи различных силовых ведомств должен разыскивать владельцев таковых сервисов, как будет пытаться их заставить соблюдать запреты установленные Роскомнадзором и как эти сервисы будут блокировать, если они отказываются выполнять требования Роскомнадзора.
Примечание: когда я вычитывал Федеральный закон от 27.07.2006 N 149-ФЗ "Об информации, информационных технологиях и о защите информации", то неоднократно задавался двумя вопросами. Первый вопрос был: "Этот закон что, студент-первокурсник за зачёт писал?", а второй: "Авторам что, как Маяковскому, за количество строк платили?". Потому что количество повторов одних и тех-же формулировок, едва ли не в каждом абзаце, превосходит все мыслимые пределы. Так сказать, в тексте критическая концентрация Ctrl+C и Ctrl+V.
Однако те, кто до конца прочитает статью 15.8, узнают что согласно части 17:
Положения настоящей статьи не распространяются на операторов государственных информационных систем, государственные органы и органы местного самоуправления, а также на случаи использования программно-аппаратных средств доступа к информационным ресурсам, информационно-телекоммуникационным сетям, доступ к которым ограничен, при условии, что круг пользователей таких программно-аппаратных средств их владельцами заранее определен и использование таких программно-аппаратных средств осуществляется в технологических целях обеспечения деятельности лица, осуществляющего их использование.
Говоря по рабоче-крестьянски - если к вашему VPN-у, пусть даже и позволяющему обходить блокировки Роскомнадзора, не имеет доступ кто попало (круг пользователей заранее определён) и VPN вам нужен для дела - например, вы через этот VPN, обновления прошивок для устройств Cisco качаете, разбираетесь как конфигурировать Zimbra, смотрите биржевую аналитику или платежи в иностранном банке проводите) - то такой VPN использовать можно и у Роскомнадзора нет правовых оснований для его блокировки. При этом лицо может быть любым - физическим, юридическим, да хоть лицом без гражданства. Главное чтобы использование осуществлялось в "технологических целях обеспечения деятельности".
2.3) О неправомерных блокировках
Органы исполнительной власти Российской Федерации, имеющие полномочия для блокировки ресурсов в сети Интернет, к большому сожалению, иногда совершают действия, обоснованность и разумность, а иногда и законность которых вызывают серьезные сомнения. Например, многие помнят как Роскомнадзор безуспешно блокировал Telegram, сломав при этом работу огромного количества сервисов. Но так как я пишу про день сегодняшний, то я приведу список легальных ресурсов, с открытием которых с территории России прямо сейчас возникают проблемы.
С использованием некторых провайдеров мобильного интернета:
С использованием мобильного интернета и наземных каналов связи:
И эти списки далеко не полные. Это лишь то немногое, с чем за последние недели столкнулся лично я.
Общим признаком для приведенных сайтов является то, что браузер уходит в бесконечное ожидание, чаще всего отображая пустую страницу.
Изучив общедоступную информацию я пришёл к выводу что Роскомнадзор, оказался бессилен перед современным протоколом HTTPS, использующим для шифрования TLS ECH (Encrypted Client Hello) и решил просто блокировать сайты использующие иностранные сети распространения данных (CDN), на которых включен TLS ECH, не взирая на их легальность. Вашему браузеру позволяют загрузить только 10-14 пакетов (примерно 16 килобайт), а затем блокируют соединение.
Подтверждения этому:
При этом заявление ЦМУ ССОП «Главного радиочастотного центра», входящего в структуру Роскомнадзора, о том что TLS ECH это средство обхода ограничений доступа к запрещенной в России информации, не выдерживает абсолютно никакой критики, зато очень многое говорит о людях принимающих подобные решения.
Во что превратится интернет в России, после того как Роскомнадзор успешно потратит почти 60 миллиардов рублей в период с 2025 по 2030 годах на обновление оборудования для блокировки - мне откровенно страшно представить.
Примечание: в приведённых статьях чаще всего упоминается CloudFlare, но мои исследования показали что блокировкам также подвергаются вполне легальные ресурсы использующие CDN-ы компаний Akamai, Amazon, RETN и других. Например, мне достоверно известно, что еще совсем недавно с мобильного интернета не открывались такие сайты как https://un.org/, https://kinoafisha.info/ и https://mcdonalds.com/.
Официальный сайт ООН, недоступный с любого мобильного оператора по всей стране - это было очень сильно. На меня это оказало неизгладимое впечатление. Сейчас он уже работает - видимо, внесли в "белый список". А вот сайт Президента Киргизии, на момент написания статьи - с некоторых мобильных операторов России недоступен, как и форум Веломании.
В связи с вышеописанным я считаю необходимым привести действующие положения статьи 8 Федерального закона от 27.07.2006 N 149-ФЗ "Об информации, информационных технологиях и о защите информации".
Согласно частям 2 и 3 указанной статьи:
Гражданин (физическое лицо) имеет право на получение от государственных органов, органов местного самоуправления, их должностных лиц в порядке, установленном законодательством Российской Федерации, информации, непосредственно затрагивающей его права и свободы.
Организация имеет право на получение от государственных органов, органов местного самоуправления информации, непосредственно касающейся прав и обязанностей этой организации, а также информации, необходимой в связи с взаимодействием с указанными органами при осуществлении этой организацией своей уставной деятельности.
Согласно пункту 3 части 4:
Не может быть ограничен доступ к информации о деятельности государственных органов и органов местного самоуправления, а также об использовании бюджетных средств (за исключением сведений, составляющих государственную или служебную тайну).
Согласно части 5:
Государственные органы и органы местного самоуправления обязаны обеспечивать доступ, в том числе с использованием информационно-телекоммуникационных сетей, в том числе сети "Интернет", к информации о своей деятельности на русском языке и государственном языке соответствующей республики в составе Российской Федерации в соответствии с федеральными законами, законами субъектов Российской Федерации и нормативными правовыми актами органов местного самоуправления. Лицо, желающее получить доступ к такой информации, не обязано обосновывать необходимость ее получения.
Соответственно, если вы, вдруг, обнаружили что с вашего мобильного устройства перестал открываться сайт ООН, форум Веломании или сайт Президента Киргизии и вы видите белую страницу с бесконечным ожиданием - то вы имеет право подать в Роскомнадзор обращение, с просьбой разъяснить, а на каком же основании была нарушена работа этих сайтов. Также, мне кажется очень интересным задать вопросы, а какие именно подсети CloudFlare, Akamai, Amazon и RETN у нас теперь заблокированы и на каком основании? А если такую информацию вам, почему-то не дают, то, полагаю, можно её получить в судебном порядке.
При этом, пытаться получать информацию о блокировках самостоятельно, при помощи ресурса https://eais.rkn.gov.ru/, может быть совершенно неэффективно. Т.к. во-первых в Интернете существует 4,3 миллиарда адресов IPv4 и 371,1 миллиона доменных имён. И самостоятельно проверить все возможные сайты на блокировки просто невозможно. Во-вторых, у меня есть очень серьезные сомнения в том, что Роскомнадзор отдаёт через эту форму информацию о целых подсетях CloudFlare, Akamai, Amazon и RETN, чья работа может оказаться нарушенной из-за того что Роскомнадзор, блокирует ресурсы использующие алгоритм TLS ECH.
2.4) Об обжаловании действий Роскомнадзора
Согласно части 6, статьи 8 Федерального закона от 27.07.2006 N 149-ФЗ "Об информации, информационных технологиях и о защите информации":
Решения и действия (бездействие) государственных органов и органов местного самоуправления, общественных объединений, должностных лиц, нарушающие право на доступ к информации, могут быть обжалованы в вышестоящий орган или вышестоящему должностному лицу либо в суд.
Кроме того, согласно части 2 статьи 13.18 КоАП РФ:
Воспрепятствование работе сайтов в сети "Интернет", в том числе официальных сайтов органов государственной власти или органов местного самоуправления, за исключением случаев ограничения доступа к сайтам в сети "Интернет" на основании решения суда или решения уполномоченного федерального органа исполнительной власти, либо совершение действий, направленных на заведомо незаконное ограничение доступа к таким сайтам, - влечет наложение административного штрафа на граждан в размере от пятисот до одной тысячи рублей; на должностных лиц - от одной тысячи до двух тысяч рублей; на юридических лиц - от десяти тысяч до двадцати тысяч рублей.
Следовательно, обычные граждане, у которых перестали открываться легальные сайты, имеют право обжаловать действия Роскомнадзора, как нарушающие их законное право на доступ к информации.
Кроме того КоАП РФ предусматривает административную ответственность за заведомо незаконное препятствие работе сайтов в сети "Интернет". По указанной статье можно попробовать привлекать к административной ответственности сотрудников Роскомнадзора принимавших решение о незаконной блокировке и/или "замедлению" сайтов и исполнителей, выполнявших незаконное решение.
Помимо этого, согласно части 6, статьи 15.1 Федерального закона от 27.07.2006 N 149-ФЗ "Об информации, информационных технологиях и о защите информации":
Решение о включении в реестр доменных имен, указателей страниц сайтов в сети "Интернет" и сетевых адресов, позволяющих идентифицировать сайты в сети "Интернет", содержащие информацию, распространение которой в Российской Федерации запрещено, может быть обжаловано владельцем сайта в сети "Интернет", провайдером хостинга, оператором связи, оказывающим услуги по предоставлению доступа к информационно-телекоммуникационной сети "Интернет", в суд в течение трех месяцев со дня принятия такого решения.
Следовательно, если Роскомнадзор заблокировал ваш сайт или VPN - и вы считаете таковую блокировку не законной и/или не обоснованной, то у вас есть право оспорить это действие, в том числе в судебном порядке.
Понятно что вышеописанная защита ваших прав, скорее всего окажется далеко не такой простой, как хотелось бы. Однако я считаю, что если ничего не делать - то ничего и не получится. Советую внимательно читать действующие законы, хорошо их понимать и не боятся отстаивать свои права.
2.5) Краткий итог нормативно-правовой части
Нельзя публиковать информацию о способах получения доступа к ресурсам заблокированным на территории России;
Нельзя рекламировать VPN-ы и другие сервисы, позволяющие получать доступ к ресурсам заблокированным на территории России;
Можно использовать VPN-ы. В том числе можно использовать VPN-ы (и другие сервисы), позволяющие обходить блокировки, если к вашему VPN-у имеет доступ ограниченный круг пользователей и этот VPN вам нужен для дела;
Можно запрашивать у органов власти информацию об их деятельности затрагивающей ваши права и свободы. Особенно если вы подозреваете что органы власти ограничивают ваши права и свободы не законно и/или не обоснованно;
Можно оспаривать отказы органов власти предоставить вам информацию об их деятельности, в том числе в судебном порядке;
Можно оспаривать блокировку вашей публикации, сайта и VPN-а, в том числе в судебном порядке.
3) Предварительная настройка роутера
Настало время понажимать немного кнопок. Я предполагаю что вы уже немного знакомы с веб-интерфейсом вашего роутера Keenetic и потому не буду рассказывать как осуществляется его базовая настройка. Будем считать что ваш роутер уже распакован и включён, обновлён до самой свежей прошивки, подключение к провайдеру выполнено, Wi-Fi раздаётся и, в целом, подключение домашних устройств к Интернету стабильно работает. Потому сосредоточимся только на тех настройках, которые имеют непосредственное отношение к этой статье.
3.1) Установка и удаление компонентов KeeneticOS
Итак, открываем веб-браузер, вводим IP-адрес вашего роутера, входим в систему с учётной записью admin и открываем меню "Управление" -> "Параметры системы" -> "Изменить набор компонентов".
В разделе "Сетевые функции" должен быть установлен протокол, который необходим для работы с вашим VPN-сервисом. У меня это будет протокол Wiregard. И, желательно, чтобы был удалён протокол IPv6. В предлагаемой мной системе он не используется. Надеюсь что и вам он не нужен.
В разделе "Утилиты и сервисы" должен быть установлен "Прокси-сервер DNS-over-HTTPS".
В разделе "USB-накопители" должен быть установлен компонент "Файловая система Ext". Галочка "Общий доступ к файлам и принтерам по протоколу SMB" не обязательна, но я оставляю, т.к. роутер у меня еще выполняет роль файлового хранилища, плюс через доступ к файлам и принтерам можно обращаться к файлам на Ext4 накопителе.
В разделе "Пакеты OPKG" должен быть установлен компонент "Поддержка открытых пакетов".
Опционально, в меню "Интернет-фильтры" можно снять галочку "Фильтрация контента и блокировка рекламы при помощи облачных сервисов". Что-то мне подсказывает, что читающие эту статью вряд-ли захотят использовать такие сервисы. Но это на ваше усмотрение.
Также я не использую SSH-сервер установленный непосредственно на роутер (находится в меню "Базовые компоненты"), т.к. необходимые конфигурационные команды можно выполнять через web-интерфейс роутера. Если вы используете этот компонент, то помните что после установки OPKG Entware у вас будет два SSH-сервера. Тот что запущен непосредственно на роутере будет работать на порту 22, а тот что запущен в среде OPKG Entware будет использовать порт 222.
Сохраняем изменения, соглашаемся с тем что некоторые компоненты будут установлены, а некоторые - удалены и ждём, когда роутер выполнит необходимые задачи и будет перезагружен.
3.2) Настройка DNS-over-HTTPS
После перезагрузки, вновь заходим в меню роутера, открываем меню "Сетевые правила" -> "Интернет фильтры" -> "Настройка DNS". Я считаю то что Интернет-провайдеру совершенно не обязательно видеть мои DNS-запросы и потому предпочитаю использовать безопасную и современную технологию DNS-over-HTTPS. Если вы разделяете мою точку зрения, то нажимайте кнопку "Добавить сервер", выбирайте тип "DNS-over-HTTPS", в поле "URL сервера DNS" вводите адрес DoH-сервера, например: https://1.1.1.1/dns-query , а в самой нижней строке, выберите тот сетевой интерфейс, через который осуществляется выход в сеть Интернет. Сохраните изменения. Поздравляю! Теперь вы используете DoH предоставляемый компанией CloudFlare. Нажмите кнопку "Добавить сервер" еще раз и добавьте адрес еще одного DoH сервера, например https://1.0.0.1/dns-query или https://8.8.8.8/dns-query или https://8.8.4.4/dns-query . Можете выбрать любой из предложенных. Первый это тоже сервер CloudFlare, два других - сервера Google. В итоге должно получиться что-то похожее:
Примечание: Если, вдруг, приведённые мною сервера окажутся заблокированы, то в этой статье, есть ссылки на обширные списки публичных серверов с поддержкой DoT/DoH.
После того как вы настроили роутер на использование DoH-серверов - все DNS-запросы будут направляться на эти сервера. DNS-серверы автоматически полученные от вашего интернет-провайдера или прописанные вручную - использоваться не будут.
Лично я вообще поставил в настройках подключения к Интернету галочку "Игнорировать DNSv4 интернет-провайдера" ("Интернет" -> "Кабель Ethernet" -> "Аутентификация у провайдера" -> "Дополнительные настройки") и удалил провайдерские DNS-серверы в меню настройки DNS, но, повторюсь - это не обязательно. Простого добавление DoH-серверов вполне достаточно. Убедившись что всё работает - переходим в следующему этапу.
3.3) Подготовка USB-накопителя
Теперь необходимо подготовить USB-накопитель для установки OPKG Entware. Напоминаю что нам необходимо создать на нём SWAP-раздел размером 256 MB и Ext4 раздел, размер которого рекомендуется сделать около 1 GB или больше. Достаточно подробные инструкции о подготовке накопителя есть на сайте Keenetic. Здесь я приведу только один способ, подходящий для подготовки накопителя под Windows.
Скачиваем Paragon Partition Manager Community Edition и производим его установку. В процессе установки будет выведено предупреждение об установке драйвера без цифровой подписи - соглашаемся. После установки подключаем USB-накопитель (у меня, для примера, это будешь USB Flash объемом 4 GB) и запускаем Paragon Partition Manager. Находим в списке дисковых устройств USB-накопитель.
Если на накопителе уже есть разделы - то вам надо либо их полностью удалить, либо изменить их размер, чтобы появилось свободное место для создания требующихся разделов. Я удалю с накопителя единственный NTFS-раздел (меню "Delete Partition"), поместив задание на удаление в очередь (кнопка "Place in queue").
На освободившемся месте сперва создам SWAP-раздел размером 256 MB (меню "Create Partiton" -> "Show advanced options".
А затем на оставшемся свободном месте создам Ext4 раздел с меткой OPKG, размером 3,48 GB.
После того как все задания помещены в очередь - нажимаем кнопку "Apply" и ждём когда изменения будет применены. В результате должно получиться что-то подобное:
Если всё прошло успешно, то закрываем программу Paragon Partition Manager, извлекаем накопитель и подключаем его к USB-порту роутера Keenetic.
Примечание: если, вдруг, роутер будет жаловаться на ошибки Ext4 раздела, то можно проверить его при помощи Paragon Partition Manager (меню "Check File System"). Либо, если совсем ничего не помогает - скачать бесплатное издание AOMEI Partition Assistant и отформатировать раздел уже им.
3.4) Установка OPKG Entware
После того как вы закончили подготовку USB-накопителя и подключили его к роутеру, необходимо открыть интерфейс роутера и перейти в меню "Управление"->"Приложения". В разделе "Диски и принтеры" должен отображаться ваш накопитель.

Нажмите на раздел, на который предполагается устанавливать OPKG Entware и в появившемся меню выберите значок "Создать папку в выделенной папке". Создайте каталог с именем install в корне раздела.
Теперь вам необходимо определиться какой именно пакет необходимо устанавливать на вашу модель роутера. Для этого откройте страницу "Установка системы пакетов репозитория Entware на USB-накопитель", найдите там наименование модели и скачайте архив подходящий для вашей модели. В моём случае это будет архив mipsel.
Теперь необходимо вернуться в интерфейс роутера, снова выбрать раздел для установки OPKG, в нём перейти в каталог install и нажав кнопку "Загрузить файлы в выбранную папку", загрузить только что скачанный архив в каталог роутера.
Теперь нужно перейти в меню "Управление"->"OPKG", выбрать раздел Ext4 куда только что был загружен архив и нажать кнопку "Сохранить".

После этого перейдите в меню "Управление"->"Диагностика"->"Системный журнал" и нажмите кнопку "Показать журнал". Должны отображаться строки установки и конфигурирования пакетов. Необходимо дождаться приблизительно таких строк:
installer: Можно открыть SSH-сессию для соединения с устройством (логин - root, пароль - keenetic, порт - 22).
installer: Установка системы пакетов "Entware" завершена! Не забудьте сменить пароль и номер порта!
Примечание: Не забывайте, если у вас на роутере был установлен компонент SSH-сервер, то он продолжит работать на 22 порту, а SSH-сервер системы OPKG Entware будет запущен на порту 222. Если же SSH-сервера на роутере не было, то SSH-сервер системы OPKG Entware стартует на порту 22.
Теперь необходимо на компьютере открыть командную строку (cmd) или powershell и выполнить команду ssh root@192.168.1.1 (у вас может быть другой IP-адрес роутера и не забывайте про порт), подтвердить что вам знаком ключ устройства к которому вы подключаетесь, ввести пароль keenetic , после чего вас должно пустить в консоль управления.
Рекомендую сразу ввести команду passwd и поменять пароль на более сложный. Для обновления пакетов выполните команду opkg update && opkg upgrade (первая часть обновит кэш пакетов, а вторая обновит их до последней версии), после чего рекомендую установить Midnight Commander (команда opkg install mc). После установки его можно будет вызывать выполнив команду mc. На данном этапе он нам не нужен, потому нажмите F10 чтобы завершить его работу.
На этом предварительная настройка роутера завершена.
4) Установка системы расширенного управления маршрутизацией
Для расширения штатных возможностей маршрутизации, мы будем использовать пакет Bird4Static. Я не буду расписывать весь функционал данного пакета, т.к. он выходит за рамки настоящей статьи и, лично мне, вполне достаточно того набора функций, который описывается в настоящей статье. При желании, вы можете изучить функциональность данного пакета самостоятельно.
Итак, подключитесь к среде Entware по ssh (если вы уже успели отключиться) и выполните следующие команды:
opkg install git git-http
cd /opt/root
git clone https://github.com/DennoN-RUS/Bird4Static.git
mkdir -p Bird4Static/lists
touch Bird4Static/lists/antifilter.list Bird4Static/lists/user-vpn.list
echo -e '#<CloudFlare>#\n1.1.1.1\n1.0.0.1\n#</CloudFlare>#\n#\n#<Google>\n8.8.8.8\n8.8.4.4\n#</Google>' > Bird4Static/lists/user-isp.list
chmod +x Bird4Static/*.sh
Bird4Static/install.sh
Приведённые команды установят необходимые пакеты, скопируют на ваш роутер необходимые файлы из репозитория, создадут необходимые списки имён и адресов. В список адресов, которые принудительно направляются через интерфейс подключенный к вашему Интернет-провайдеру, будут добавлены адреса DNS-серверов CloudFlare и Google, а сценарий установки будет сделан исполняемым. После этого будет запущена установка пакета Bird4Static.
На вопрос: "Begin install? y/n" отвечаем y и ждём пока скрипт выполнит установку необходимых компонентов.
На вопрос: "Do you want to use double vpn configuration? 1 - no (default) 2 - yes" - если вы хотите использовать конфигурацию с одним VPN-подключеним, то введите 1, либо просто нажмите Enter, иначе введите 2.
На вопрос: "cp: overwrite '/opt/root/Bird4Static/lists/user-isp.list'?" отвечаем n.
На вопрос: "cp: overwrite '/opt/root/Bird4Static/lists/user-vpn.list'?" отвечаем n.
Когда возникнет вопрос: "Select mode: 1 - Download file from antifilter service (default), 2 - Use BGP, 3 - Use Only user files" следует выбрать цифру 3. Т.к. мы собираемся использовать только списки, имена и адреса в которые внесём самостоятельно.
Далее скрипт выведет список сетевых интерфейсов, из которых попросит выбрать тот интерфейс, который подключён к интернет-провайдеру (ISP). Будьте внимательны при выборе. Если сомневаетесь, то можно открыть веб-интерфейс роутера, перейти в меню "Интернет" и внимательно посмотреть, через какой именно интерфейс у вас осуществляется подключение к Интернету и какой на этом интерфейсе сетевой адрес. У меня это будет интерфейс ppp0. Вводим название вашего интерфейса и нажимаем Enter.
Сразу же после этого скрипт попросит ввести название интерфейса VPN-подключения. Снова внимательно смотрим на ранее выведенный список и, при необходимости, смотрим в веб-интерфейс роутера, в меню "Интернет"->"Другие подключения". По адресу интерфейса находим его в консоли. У меня это будет интерфейс nwg0.
Далее скрипт произведёт необходимое конфигурирование и запуск служб, после чего задаст вопрос "Do you want install IPset4Static addon? y/n" на который следует ответить n.
На этом установка пакета Bird4Static выполнена. На этом этапе вы уже можете управлять маршрутизацией, при помощи прямого редактирования файлов. Можно делать это следующим образом - запустите Midnight Commander (команда mc), перейдёте в каталог Bird4Static/lists/ и откройте на редактирование файл user-vpn.list (клавиша F4). Затем внесёте в него имя или адрес легального сайта, который не пускает к себе пользователей из России, например wiki.zimbra.com. После чего нажмёте F2, чтобы сохранить изменения и F10 чтобы выйти из текстового редактора. Затем вернитесь в каталог Bird4Static и перейдите в каталог scrypts, в котором выполните скрипт ./add-bird4_routes.sh. После чего можно открыть веб-браузер на компьютере подключённом к вашему роутеру и проверить исчезло ли предупреждение что сайт недоступен пользователям из России. Если всё сделано верно - то этот сайт будет открываться через ваш VPN и это сообщение должно пропасть.
Примечания:
В список user-isp.list следует вносить имена и адреса тех сайтов, которые должны открываться только через интерфейс провайдера, даже если они случайно попадут в список user-vpn.list, определяющий какие имена и адреса следует направить в VPN. При установке Bird4Static мы сразу же внесли в список user-isp.list адреса DNS-серверов, которые настроили ранее;
Скрипт add-bird4_routes.sh после правок списков выполнять не обязательно. Обновление маршрутов производится автоматически по расписанию. Выполнение скрипта просто позволяет не ждать несколько минут до автоматического обновления маршрутов;
Bird работает только с "Политикой по умолчанию". Устройства во всех других политиках будут маршрутизироваться именно так, как настроено в этих политиках, игнорируя маршруты, которые принес Bird. Проверить наличие политик вы можете через веб-интерфейс роутера, в меню "Интернет" -> "Приоритеты подключений";
Более опытные пользователи могут обойтись и без Midnight Commander-а, например выполняя команды в консоли и пользуясь редакторами vi или nano. Но, я полагаю, что им не требуются мои объяснения как это делать.
5) Установка Telegram-бота для управления маршрутизацией
Наконец-то мы продрались через юридические дебри, подготовительные работы, установку необходимых компонентов и добрались до ключевой части публикации, а именно до установки на роутер Telegram-бота. Напоминаю что у вас должен быть действующий аккаунт в Telegram.
5.1) Регистрация бота в Telegram
Открываем Telegram и ищем официального бота @BotFather, отправляем ему команду /start и выбираем команду /newbot. Вам будет предложено придумать название для вашего бота, которое будет отображаться в заголовке чата с ним. Можно считать что вам нужно выбрать название канала.
Затем вам будет предложено придумать имя пользователя для вашего бота. Это то имя, которое отображается в телеграме как @TetrisBot и на которое можно дать ссылку формата t.me/tetrisbot.
Имя должно состоять из букв латинского алфавита, подчёркиваний и цифр и быть длиной от 5 до 32 символов. Также обязательно должно заканчиваться на «bot», например: «NewTelegramBot» или «newtelegram_bot». Многие имена уже заняты, будьте готовы к тому что не сразу найдете свободное.
После того как вы выполнили эти действия, BotFather выведет вам достаточно большое сообщение, формата:
Use this token to access the HTTP API:
1231231234:AAAAAbbbCCCdddEEEFFFGGgHHHhhh
Keep your token secure and store it safely, it can be used by anyone to control your bot.
Из этого сообщения нам чуть позже понадобится токен, который надо будет ввести в ваш экземпляр бота. Если, вдруг, вы забудете этот токен, то его всегда можно получить повторно, обративщись к @BotFather командой /mybots.
Помимо токена, вам понадобится указать в настройках бота пользователей, которые имеют право отправляють ему команды. Можно указывать либо имена пользователей, либо их ID. Имя пользователя (если оно указано) можно увидеть открыв профиль в Telegram, а вот ID пользователя узнать чуть сложнее. Для этого надо обратится либо к специальному боту в Telegram, например к @my_id_bot, либо чуть позже уже к вашему Telegram-боту, который отобразит ваш ID при обращении к нему. Этот ID надо будет вписать в конфигурационный файл, о чём разговор будет чуть позднее.
5.2) Установка Telegram-бота на роутер
Telegram-бот, который мы будем использовать, называется TeleBot4Static. Для установки подключаемся по ssh к среде Entware на вашем роутере и выполняем следующие команды:
opkg install git git-http
cd /opt/root/
git clone https://github.com/WesternHysteria/TeleBot4Static.git
chmod +x TeleBot4Static/*.sh TeleBot4Static/*.py
TeleBot4Static/install.sh
На вопрос "Continue installation? y/n" отвечаем y.
Скрипт выведет текст "Enter Telegram-bot token:" - скопируйте строку с токеном из канала @BotFather (текст из буфера обмена вставляется в консоль при помощи нажатия правой кнопки мыши) и нажмите Enter.
Далее будет вопрос: "Do you want to add user IDs to the configuration file? y/n" - если вам уже известны ID пользователя/пользователей которым собираетесь предоставить доступ к Telegram-боту, то введите y, после чего у вас будут запрошены сами ID. Вводить ID следует по одному, нажимая Enter после каждого ID. Для завершения ввода, нажмите Enter в пустой строке. В конце будет выведена строка, в которой будут перечислены ID тех пользователей, которые будут добавлены в конфигурационный файл.
Внимание! Не путайте ID-пользователей с именами пользователей! Имя пользователя может состоять из цифр, букв и нижнего подчёркивания и его можно менять. А ID-пользователя, это просто неизменный номер, который присваивается учётной записи при регистрации.
Следующим будет вопрос: "Do you want to add usernames to the configuration file? y/n" - если вы хотите предоставить доступ по имени пользователя, то введите y, после чего вводите имена пользователей по одному за раз, без символа @. Для завершения ввода, нажмите Enter в пустой строке. В конце также будет выведена строка, в которой будут перечислены имена тех пользователей, которые будут добавлены в конфигурационный файл.
После добавления пользователей инсталляционный скрипт создаст конфигурационный файл TeleBot4Static/telebot4static_config.py, содержащий токен, списки пользователей, параметры сбора логов (по-умолчанию отключено) и пути к необходимым файлам пакета Bird4Static. Также будет создан исполняемый файл службы /opt/etc/init.d/S99telebot4static, для того чтобы после перезагрузки роутера Telegram-бот запускался автоматически. Созданная служба сразу же будет запущена. На этом этапе Telegram-бота уже будет работать.
Примечание: Если вам неизвестен ID, но вы хотите добавить в конфигурацию именно его, то вы можете пропустить добавление пользователей и после запуска Telegram-бота зайти в ранее зарегистрированный канал, написать команду /start , после чего Telegram-бот вам напишет сообщение, содержащее ID.
Узнав необходимый ID вы можете либо выполнить команду TeleBot4Static/install.sh повторно и пройти шаги конфигурирования заново. Существующая конфигурация при этом будет перезаписана.
Более опытные пользователи могут открыть для редактирования файл файл TeleBot4Static/telebot4static_config.py (через mc или при помощи редакторов vi или nano) и внести необходимые изменения в конфигурацию вручную. Редактировать нужно значения переменных userIDs = [""] и usernames = [""]. Ряды значений заключеный в квадратные скобки, каждое значение указывается в двойных кавычках, разделителем выступает запятая. После внесения изменений в конфигурацию следует выполнить команду /opt/etc/init.d/S99telebot4static restart для того чтобы перезапустить бота с новыми параметрами.
После того как будут созданы конфигурационный файл и файл службы - скрипт выведет вопрос "Do you want to update all packages? y/n WARNING!!! This can take a very long time!". Если вы выберете y - то будет произведено обновление всех пакетов установленных через OPKG, а затем начнётся подготовка к установке последней версии pyTelegramBotAPI.
Дело в том, что для экономии времени при первоначальной установке мы использовали пакет pyTelegramBotAPI версии 4.27, который быстро устанавливался и у которого было не очень много зависимостей. Но вот версия 4.28 уже требует пакета AIOHTTP, который, к сожалению, собирается из исходных кодов, для чего требуется установить через OPKG пакета gcc и python3-dev и который дополнительно устанавливает через pip достаточно большой набор пакетов. Все существующие пакеты pip также будут обновлены до последних версий.
На топовых моделях Keenetic обновление проходит достаточно быстро, а вот на устройствах среднего ценового диапазона может занимать длительное время (по моим замерам до двух часов) и роутер при этом будет достаточно задумчивым. Так что если решитесь обновиться до последних версий пакетов - будьте к этому готовы и помните, что нельзя закрывать консоль до завершения всех операций! Если не хотите долго ждать - то по окончанию первоначальной установки введите n и обновите пакеты в более удобное время, вручную выполнив скрипт TeleBot4Static/update.sh.
Примечание: после того как скрипт TeleBot4Static/update.sh будет успешно выполнен первый раз, его можно иногда использовать для обновления всех пакетов установленных через OPKG и через pip. Либо просто иногда выполнять в консоли следующие команды:
opkg update && opkg upgrade
PIPOUTDATED=$(pip list --outdated | sed 1,2d | awk '{print $1}' | tr '\n' ' ')
if [[ ! -z $PIPOUTDATED ]]; then pip install --upgrade $(echo $PIPOUTDATED); fi
/opt/etc/init.d/S99telebot4static restart
5.3) Первичное ознакомление с Telegram-ботом
Наконец-то Telegram-бот установлен и работает! Настало время для краткого ознакомления. Открываем ваш Telegram-клиент, находим в нём ранее зарегистрированный канал и отправляем в него команду /start после которой бот выведет вам приветственное сообщение и создаст кнопки для управления.
Управлять ботом можно как при помощи кнопок меню, так и при помощи команд. Для отображения возможных команд нажмите кнопку "Команды".
Введите команды /editisp и затем команду /list (можно просто щёлкнуть мышкой на соответствующие ссылки в отобращаемом меню). Бот переключится на список имён и адресов принудительно открываемых через интерфейс Интернет-провайдера и отобразит список, который был сформирован еще при установке пакета Bird4Static. Строки начинающиеся с # или ; являются комментариями, а вот IP-адреса указанные в списке будут всегда открываться через интерфейс подключённый к провайдеру.
Примечание: Если вы на этапе 3.2 решили использовать другие DNS-серверы, отличные от Google и CloudFlare, то рекомендую внести их в этот список.
Для переключения на список сайтов открываемых через VPN введём команду /editvpn. Для начала добавления в список введём команду /add. Бот предложит вводить сайты по одному в каждой строке. Вводить можно как отдельными сообщениями, так и одним сообщением (в Windows для переноса строк в сообщении можно использовать сочетание клавиш Ctrl+Enter). Для пробы введем адреса dell.com и www.dell.com после чего введём команду /apply. Бот выдаст сообщение о том что изменения применены.
Теперь можно попробовать открыть сайт https://dell.com/ с устройства из вашей внутренней сети. Если всё сделано правильно - то сайт откроется, хотя раньше он либо не открывался совсем (выдавая бесконечное ожидание и белую страницу), либо выдавал сообщение что доступ для вашей подсети запрещён.
На этом первичное ознакомление с ботом завершено. Более подробно его возможности описаны во встроенной справке. Нажмите кнопку "Помощь" или введите команду /help для того чтобы ознакомиться со всеми его возможностями.
6. Вместо эпилога
Маршрутизация трафика на роутерах Keenetic - достаточно большая и сложная тема, в ходе которой может потребоваться исследовать диапазоны IP-адресов и подсети, а также изучить что такое AS (автономные системы) и как их разбирать на подсети.
Надеюсь, что вы сможете самостоятельно разобраться с функционалом Telegram-бота и вам понравится использовать предлагаемое решение, т.к. он позволяет управлять маршрутами даже не имея сетевого доступа к вашему роутеру. Но, если вам не понравится предлагаемое решение - то вы всегда можете выполнить скрипт TeleBot4Static/uninstall.sh и отвечая на вопросы произвести полное удаление Telegram-бота.
Знайте действующие правовые нормы, не подвергайте себя ненужным рискам и не стесняйтесь защищать свои права, свободы и законные интересы (по-крайней мере те, которые у нас еще остались).
И, пожалуйста, не забывайте что согласно части 4.1 статьи 10.1 Федерального закона от 27.07.2006 N 149-ФЗ "Об информации, информационных технологиях и о защите информации":
Организатор распространения информации в сети "Интернет" обязан при использовании для приема, передачи, доставки и (или) обработки электронных сообщений пользователей сети "Интернет" дополнительного кодирования электронных сообщений и (или) при предоставлении пользователям сети "Интернет" возможности дополнительного кодирования электронных сообщений представлять в федеральный орган исполнительной власти в области обеспечения безопасности информацию, необходимую для декодирования принимаемых, передаваемых, доставляемых и (или) обрабатываемых электронных сообщений.
Спасибо за внимание!

Комментарии (2)
YSmirnoff
21.08.2025 13:13Отличная статья, спасибо. Сохраню её не только в закладки, но и локально в документ word
vazhab
Ну и зашуганные вы там... Не найдут к чему придраться в статье - найдут другой способ повлиять на вас.