<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://bridgetownrb.com/" version="2.2.2">Bridgetown</generator><link href="https://tupoleon.ru/feed.xml" rel="self" type="application/atom+xml" /><link href="https://tupoleon.ru/" rel="alternate" type="text/html" /><updated>2026-08-27T00:34:20+03:00</updated><id>https://tupoleon.ru/feed.xml</id><title type="html">tupoleon</title><subtitle>Просто еще один блог какого то айтишника</subtitle><entry><title type="html">ТСПУ для самых маленьких</title><link href="https://tupoleon.ru/updates/2026/08/26/tspu-for-the-little-ones/" rel="alternate" type="text/html" title="ТСПУ для самых маленьких" /><published>2026-08-26T23:10:34+03:00</published><updated>2026-08-26T23:10:34+03:00</updated><id>repo://posts.collection/_posts/2026-08-26-TSPU-for-the-little-ones.md</id><content type="html" xml:base="https://tupoleon.ru/updates/2026/08/26/tspu-for-the-little-ones/">&lt;p&gt;Последние годы Роскомнадзор (далее - РКН) все активнее развивает свои ТСПУ для блокировки разнообразного контента в сети. Это вызывает множество негодования и вопросов у обывателей. В этой статье не будет инструкций по настройке VPN или каких-либо других инструкций по обходу блокировок. Я просто постараюсь коротко ответить, почему ваш VPN вдруг перестал работать.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Сразу дисклеймер: в статье очень много технических упрощений и аналогий, чтобы вы могли поделиться ею даже с бабушкой.&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;что-такое-этот-ваш-тспу&quot;&gt;Что такое этот ваш ТСПУ&lt;/h2&gt;

&lt;p&gt;Для начала давайте разберемся, что же такое ТСПУ. Но чтобы говорить о ТСПУ, для начала давайте разберемся с DPI.&lt;/p&gt;

&lt;p&gt;DPI - это технология глубокого анализа пакетов. Грубо говоря, технология, которая позволяет залезать в ваш трафик и смотреть, что же такого вы там делаете в интернете. Когда вы пишете в адресную строку домен запрещенного сайта, вы как бы через интернет посылаете некий конверт, на котором написан адресат. В обычном случае ваш интернет-оператор доставит этот конверт адресату, а тот, в свою очередь, ответит вам новым письмом, в котором и будет лежать ваш контент. Так вот, если блокировка по адресату - это простой фильтр, который легко обходится самым банальным проксированием, то DPI позволяет вскрыть письмо и посмотреть его содержимое.&lt;/p&gt;

&lt;p&gt;Как работает в данной схеме VPN? VPN, если продолжать аналогию с письмами, просто пересылает их дальше. Грубо говоря, на конверте вы пишете не адрес того, что вам действительно нужно, а адрес VPN-сервиса. РКН видит, что адресат не находится в черном списке, и пропускает такое письмо. VPN, когда получает ваше письмо, вскрывает его и видит в нем информацию о том, кому вы действительно хотели его отправить, переупаковывает его в другой конверт и отправляет дальше. Получая ответ от вашего адресата, он также переупаковывает его в другой конверт и присылает вам.&lt;/p&gt;

&lt;p&gt;Вся эта логика реализуется VPN-клиентом - приложением, которое вы устанавливаете на свои устройства. Оно переупаковывает ваши пакеты (письма) таким образом, чтобы адресатом для них являлся VPN-сервер, а в содержимое писем добавляет информацию о том, кому в действительности они адресовались.&lt;/p&gt;

&lt;p&gt;Теперь, когда мы разобрались с VPN, можем немного вернуться назад и разобраться с DPI. С помощью этой технологии РКН вскрывает пакеты, видит в них информацию о том, что они на самом деле адресуются на запрещенные ресурсы, и просто блокирует их.&lt;/p&gt;

&lt;p&gt;А где же в этой схеме ТСПУ? ТСПУ (технические средства противодействия угрозам) - железные коробки с DPI, которые государство поставило в сети всех провайдеров страны. Через них проходит весь ваш трафик. РКН может в реальном времени замедлить или заблокировать что угодно - одной кнопкой, без участия провайдера.&lt;/p&gt;

&lt;h2 id=&quot;немного-о-vpn&quot;&gt;Немного о VPN&lt;/h2&gt;

&lt;p&gt;Существует очень много разных протоколов VPN. Протокол - это, по сути, набор правил для «переупаковки» пакетов и их последующей переадресации. РКН физически не может научить свои DPI определять по содержимому пакетов все возможные VPN. Также очень многие VPN-протоколы невероятно востребованы в корпоративных средах, и заблокировать их означало бы сломать легальный бизнес. Перед DPI стоит задача не только определять VPN как таковой, но и понимать, что он адресуется к нелегальному сервису.&lt;/p&gt;

&lt;p&gt;Часто такие попытки у РКН выливаются в серьезные сбои. Например, 10 марта 2021 года РКН замедлил Twitter через ТСПУ по доменным именам. Операторы ТСПУ вписали регулярное выражение для замедления картинок с домена t.co (сокращалка Twitter), но не поставили якоря границ строки. В итоге ТСПУ замедлил все сайты, где в названии встречалось сочетание t.co. Под раздачу попали microsoft.com, githubusercontent.com, reddit.com, rt.com и championat.com. Параллельно легли сайты Кремля и самого РКН.&lt;/p&gt;

&lt;p&gt;Поэтому борьба РКН с VPN превращается, по сути, в бесконечные кошки-мышки, где первые пытаются постоянно придумать новые правила фильтрации трафика, а вторые лучше притвориться чем-то другим, чтобы под них не попасть.&lt;/p&gt;

&lt;h2 id=&quot;почему-мой-vpn-перестал-работать&quot;&gt;Почему мой VPN перестал работать?&lt;/h2&gt;

&lt;p&gt;Честно говоря, ответов на этот вопрос может быть просто безумное количество. От совершенно банального, где IP-адрес сервера напрямую попадает в черный список, до блокировок DPI по статическим маркерам. Иными словами, DPI умеет статически предполагать использование вами VPN и просто замедлять или полностью обрывать соединение по запрашиваемым адресам. Например, если весь ваш трафик — это UDP-пакеты на один конкретный адрес, это странно — в бан. Именно по этой причине один и тот же VPN может то работать, то не работать в одинаковых условиях использования.&lt;/p&gt;

&lt;p&gt;Важно понимать, что абсолютной панацеи никогда не будет! Даже идеально настроенная непрошибаемая связка Xray VLESS-Reality рано или поздно может быть обнаружена по косвенным признакам. И РКН просто вносит IP-адреса в свои черные списки.&lt;/p&gt;

&lt;p&gt;Обновления правил DPI распространяются по ТСПУ провайдеров далеко не равномерно. Поэтому совершенно запросто может быть такое, что в сети Wi‑Fi (домашнего проводного интернета) ваш VPN работает, а вот в мобильной сети — уже нет. Или наоборот.&lt;/p&gt;

&lt;p&gt;Как именно РКН может собирать информацию о возможном VPN, чтобы впоследствии просто забанить этот IP? Вопрос хороший, и ответов на него тоже много. Например, за него это могут делать почти все отечественные сервисы. Приложение MAX регулярно делает множество сетевых запросов в фоне. Оно стучится, например, даже в Telegram, и если он открывается, это означает, что у вас VPN. Далее последует запрос в сервис определения IP и последующая передача в РКН. Если вы настроили VPN так, что он только в зарубежные ресурсы ходил через прокси, это тоже не поможет. MAX увидит, что зарубежный сервис определения IP возвращает значение, отличное от нашего.&lt;/p&gt;

&lt;p&gt;Таким образом, даже если вы идеально спрятали трафик, РКН рано или поздно, скорее всего, найдет ваш VPN-сервер.&lt;/p&gt;</content><author><name>Кирилл Леонов</name></author></entry><entry><title type="html">Мой опыт дистрохоппинга</title><link href="https://tupoleon.ru/updates/2026/08/18/my-experience-with-dystrohopping/" rel="alternate" type="text/html" title="Мой опыт дистрохоппинга" /><published>2026-08-18T02:30:34+03:00</published><updated>2026-08-18T02:30:34+03:00</updated><id>repo://posts.collection/_posts/2026-08-18-my-experience-with-dystrohopping.md</id><content type="html" xml:base="https://tupoleon.ru/updates/2026/08/18/my-experience-with-dystrohopping/">&lt;p&gt;Мой опыт знакомства с дистрибутивами Linux начался с дистрибутива &lt;a href=&quot;https://www.linuxliteos.com/&quot;&gt;Linux Lite&lt;/a&gt;. Именно этот дистрибутив я впервые установил на свой компьютер. У меня был невероятно старый ноутбук Dell самого начала нулевых. Его хотелось как-то реанимировать и пустить в строй. Ни о какой Windows даже речи быть не могло. Я искал максимально легковесную систему, и Linux Lite идеально подошла.&lt;/p&gt;

&lt;p&gt;Конечно, она не была самой легковесной. Можно было бы выбрать &lt;a href=&quot;https://alpinelinux.org/&quot;&gt;Alpine&lt;/a&gt; или собрать что-то свое на базе &lt;a href=&quot;https://archlinux.org/&quot;&gt;Arch&lt;/a&gt; или &lt;a href=&quot;https://www.gentoo.org/&quot;&gt;Gentoo&lt;/a&gt;, но мне хотелось чего-то максимально простого.&lt;/p&gt;

&lt;p&gt;После того как ноутбук получил вторую жизнь, я неистово загорелся Linux. Мне хотелось пробовать всё и вся. И вот сейчас, по прошествии многих лет, Linux моя основная система для всего.&lt;/p&gt;

&lt;p&gt;Первым дистрибутивом, на котором я провёл довольно много времени, была &lt;a href=&quot;https://elementary.io/&quot;&gt;elementary OS&lt;/a&gt;. Тогда я много лет сидел исключительно на macOS, и, очевидно, мне хотелось чего-то похожего. Не могу сказать, что у elementary OS были какие-то серьёзные недостатки, из-за которых мне пришлось с неё уйти, хотя сейчас, конечно, я бы в неё не вернулся. Она просто мне поднадоела, а мне ужасно хотелось пробовать что-то новое.&lt;/p&gt;

&lt;p&gt;И так шаг за шагом я пробовал всё новые и новые для себя дистрибутивы: от всех хотя бы немного известных, которые так или иначе происходят от &lt;a href=&quot;https://ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt;, до совсем никому не нужных — например, &lt;a href=&quot;https://hannahmontana.sourceforge.net/&quot;&gt;Hannah Montana Linux&lt;/a&gt; и &lt;a href=&quot;http://www.slackware.com/&quot;&gt;Slackware&lt;/a&gt;. Если вы обиделись, что я поставил Slack в один ряд с Hannah Montana, не обижайтесь.&lt;/p&gt;

&lt;h2 id=&quot;первые-выводы&quot;&gt;Первые выводы&lt;/h2&gt;

&lt;p&gt;Через какое-то время бесконечных странствий по просторам Linux дистрибутивов ты понимаешь, что мир Linux на самом деле не такой уж и разнообразный, как о нём слогают легенды. Да, различных дистрибутивов, наверное, тысячи, но реально значимых различий в них нет. Можно выделить, наверное, с десяток дистрибутивов, которые являются корневыми прародителями и имеют между собой какие-то фундаментальные отличия. Все остальные - их копии, отличающиеся только графическим окружением и набором предустановленных пакетов.&lt;/p&gt;

&lt;p&gt;Кстати о графических окружениях. Если вы погуглите, найдёте примерно пару десятков различных. Но реально их всего два: &lt;a href=&quot;https://kde.org/&quot;&gt;KDE&lt;/a&gt; и &lt;a href=&quot;https://www.gnome.org/&quot;&gt;GNOME&lt;/a&gt;. Ничего больше, сопоставимого по качеству, вы не найдёте. Я даже не буду говорить про дизайн, хотя погуглите, как выглядит &lt;a href=&quot;https://www.xfce.org/&quot;&gt;Xfce&lt;/a&gt; или &lt;a href=&quot;http://www.lxde.org/&quot;&gt;LXDE&lt;/a&gt;, я говорю именно про качество и скорость разработки. Реально крупных и современных рабочих окружений всего два! Все остальные безнадёжно устарели даже в рамках своей парадигмы.&lt;/p&gt;

&lt;p&gt;Возьмём, например, Pantheon - который используется в elementary OS. Рабочее окружение, которое задумывалось как реальная альтернатива macOS, сейчас может разве что конкурировать с macOS образца 2014 года. Сейчас даже самый ванильный GNOME больше macOS, чем сам Pantheon.&lt;/p&gt;

&lt;p&gt;И так мы приходим к выводу, что все реальные дистрибутивы, у которых есть поддержка, большое сообщество, хорошая документация, понятный и адекватный цикл разработки, можно посчитать по пальцам одной руки. А графические окружения, которые мы можем с ними использовать, сводятся к двум. Ну максимум к трём, если мы захотим использовать что-то не обычное, например тайловые оконные менеджеры (обожаю &lt;a href=&quot;https://hypr.land/&quot;&gt;Hyprland&lt;/a&gt;) или что-то супер-древнее просто ради фана.&lt;/p&gt;

&lt;p&gt;Для себя я выделил трёх основных мастодонтов. Именно о них дальше и пойдёт речь:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://archlinux.org/&quot;&gt;Arch&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://fedoraproject.org/&quot;&gt;Fedora&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;ubuntu&quot;&gt;Ubuntu&lt;/h2&gt;

&lt;p&gt;Ubuntu - дистрибутив, на котором я провел суммарно меньше всего времени из тех, о которых в дальнейшем пойдет речь. Однако он попал в этот список, потому что является одним из крупнейших и понятных дистрибутивов. Ubuntu полностью разрабатывается и поддерживается компанией &lt;a href=&quot;https://canonical.com/&quot;&gt;Canonical&lt;/a&gt;. Canonical принимает множество спорных решений, которые потом порождают кучу споров на форумах. Но тем не менее дистрибутив остается, невероятно, востребованным.&lt;/p&gt;

&lt;h3 id=&quot;плюсы&quot;&gt;Плюсы&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Простая и очень быстрая установка. Ubuntu всегда славился своей простотой и понятностью. Если вы умеете переустанавливать Windows, то удивитесь, насколько проще поставить Ubuntu. Также все драйверы, которые вам понадобятся для работы, уже скорее всего будут идти из коробки. Передайте привет Windows с ее установкой драйверов для Wi‑Fi адаптера.&lt;/li&gt;
  &lt;li&gt;Не нужны абсолютно никакие знания для использования. Если в голове остался стереотип, что Linux сложный, попробуйте Ubuntu. Если вы будете оценивать его без ложных ожиданий увидеть «вторую Windows» и хотя бы попробуете проникнуться вы сразу заметите, что он куда более простой, чем кажется. И по простоте использования рядовым пользователем он точно не уступает Windows или macOS.&lt;/li&gt;
  &lt;li&gt;У Ubuntu есть (почти) официальные сборки на все популярные среды рабочих окружений. Вы можете попробовать Ubuntu как с KDE, GNOME или Xfce. Все это будет поддерживаться Canonical и иметь абсолютно такую же пакетную базу.&lt;/li&gt;
  &lt;li&gt;Практически все проблемы, с которыми вы в принципе можете столкнуться в Linux, имеют описанное решение для Ubuntu. Это самый популярный дистрибутив, поэтому вы точно не останетесь один на один с какой-либо проблемой.&lt;/li&gt;
  &lt;li&gt;Snap. Честно говоря, Snap можно отнести как к плюсам, так и к минусам. Кто-то скажет, что Snap — это громоздкая, медленная и крайне сомнительная проприетарщина, которая агрессивно навязывается Canonical. И это будет правдой. Однако Snap очень стабильный и удобный. Да, он громоздкий и медленный, но работать с пакетами Snap одно удовольствие. Они предсказуемо себя ведут и с куда меньшей вероятностью сломаются. Snap также поддерживает CLI-пакеты. Например, вы можете поставить себе Docker snap-пакетом и работать с ним через CLI. Также Snap Store имеет огромную библиотеку программ.&lt;/li&gt;
  &lt;li&gt;Deb-пакеты есть почти везде. Если программа, которую вы хотите установить, имеет сборку под Linux, скорее всего там будет deb-пакет, который вы сможете установить.&lt;/li&gt;
  &lt;li&gt;Ваш рабочий сервер скорее всего будет на Ubuntu. Точную статистику я вам не скажу, но мне кажется, что процентов 90% серверов, с которыми я работал, были на Ubuntu.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;минусы&quot;&gt;Минусы&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Если вы занимаетесь разработкой, то штатные репозитории вам покажутся бедными. Это странно звучит в адрес Ubuntu, но у него реально довольно бедные репозитории. Для кучи софта под разработку вам придется подключать какие-то сторонние репозитории.&lt;/li&gt;
  &lt;li&gt;Очень неудобный пакетный менеджер. Apt морально устарел. Он ужасно медленный и работать с ним сплошная головная боль.&lt;/li&gt;
  &lt;li&gt;btrfs не идет как файловая система по умолчанию.&lt;/li&gt;
  &lt;li&gt;Абсолютно беспонтовый.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;fedora&quot;&gt;Fedora&lt;/h2&gt;

&lt;p&gt;Fedora - дистрибутив, на котором я провёл суммарно больше всего времени. В сообществе этот дистрибутив принято называть испытательным полигоном, так как на нём испытывают все новые технологии. В связи с этим люди часто боятся этого дистрибутива, ожидая от него нестабильности. Однако весь мой опыт взаимодействия с Fedora говорит об обратном. Из всех дистрибутивов, которые мне довелось использовать, Fedora показалась мне самой стабильной.&lt;/p&gt;

&lt;h3 id=&quot;плюсы-1&quot;&gt;Плюсы&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Ванильный GNOME. Если вам нравится GNOME, вы пришли по адресу. Тут будет самый ванильный и самый современный GNOME.&lt;/li&gt;
  &lt;li&gt;Fedora всегда на острие технологий. Тут будет всё самое свежее. Если завтра выйдет новый графический сервер, послезавтра он будет в Fedora. Не факт, что он там останется, но сообщество его попробует.&lt;/li&gt;
  &lt;li&gt;Просто невероятная стабильность. Если вы сами не сломаете себе дистрибутив, он будет работать как швейцарские часы.&lt;/li&gt;
  &lt;li&gt;Отличный пакетный менеджер DNF. Да, он медленный, но он чертовски удобен.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;минусы-1&quot;&gt;Минусы&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Бедные репозитории из коробки. Да, ещё беднее, чем в Ubuntu. Тут вам придётся на каждый чих искать репозиторий.&lt;/li&gt;
  &lt;li&gt;Иногда бывают трудности с драйверами.&lt;/li&gt;
  &lt;li&gt;Для использования нужно немного знаний.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;arch&quot;&gt;Arch&lt;/h2&gt;

&lt;p&gt;Arch - пожалуй, самый интересный дистрибутив. Arch - это конструктор, на базе которого вы можете собрать что угодно. По большому счёту, Arch это загрузчик, набор репозиториев, базовый комплект юниксовых утилит и пакетный менеджер. Дальше вы собираете себе систему как вашей душе угодно. Самостоятельно! Вы сами выбираете и устанавливаете всё.&lt;/p&gt;

&lt;h3 id=&quot;плюсы-2&quot;&gt;Плюсы&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Очень богатые репозитории. Из всех Linux-дистрибутивов, которые я использовал, у Arch самые богатые репозитории. Любые инструменты или софт для разработки ставятся одной командой без боли, и почти всегда всё есть. Отдельно можно упомянуть AUR. Это дополнительный репозиторий, который каждый может чем-то дополнить. Вследствие чего там есть, наверное, буквально всё. Хотя из минусов - каждый может залить туда что угодно.&lt;/li&gt;
  &lt;li&gt;Пакетный менеджер Pacman, наверное, самый лучший из всех пакетных менеджеров. Он и удобен, и очень быстр.&lt;/li&gt;
  &lt;li&gt;Только на Arch можно без бубнов ставить тайловые оконники. Тут стоит отметить, что есть ещё много дистрибутивов, на которые можно ставить тайловые оконники даже проще, но они не попали в мой список по другим причинам, которые, скорее всего, ранее уже были описаны.&lt;/li&gt;
  &lt;li&gt;Гибкость в конфигурации и настройке. Как уже говорилось выше, на базе Arch вы можете собрать что угодно - систему, в которой абсолютно каждый пакет будет подобран вами, где будет всё только самое необходимое и абсолютно ничего лишнего.&lt;/li&gt;
  &lt;li&gt;Шикарная документация к дистрибутиву. Arch обладает одной из самых качественных и богатых документаций.&lt;/li&gt;
  &lt;li&gt;Очень богатое и дружелюбное сообщество. Если вы впервые ставите Arch и у вас не получается разметить диск, вы всегда можете обратиться в сообщество, и вам помогут.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;минусы-2&quot;&gt;Минусы&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Очевидный минус рождается из плюса: если всё можно настроить, тебе всё придётся настроить. Arch довольно сложен в установке. Даже опытному пользователю придётся потратить вечер на установку и настройку.&lt;/li&gt;
  &lt;li&gt;Приходится часто решать проблемы.&lt;/li&gt;
  &lt;li&gt;Очень тяжело с драйверами для всяких дополнительных устройств. Но, к счастью, есть сообщество, которое может поделиться каким-либо решением. А ещё вы всегда можете написать драйвер сами. Вы же, btw, I use Arch.&lt;/li&gt;
  &lt;li&gt;Обновления не всегда стабильны.&lt;/li&gt;
  &lt;li&gt;Для комфортного использования нужны довольно серьёзные знания.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;главный-вывод&quot;&gt;Главный вывод&lt;/h2&gt;

&lt;p&gt;Обычно в подобных выводах всё начинается с того, что Ubuntu рекомендуется новичкам. Я же хочу пойти от обратного:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Если вы ищете суперстабильный дистрибутив и у вас есть желание поразбираться с репозиториями и драйверами, это Fedora.&lt;/li&gt;
  &lt;li&gt;Если вы ищете платформу-конструктор, на базе которой хотите собрать систему максимально под свои нужды, где не будет абсолютно ничего лишнего, это Arch.&lt;/li&gt;
  &lt;li&gt;Во всех остальных случаях просто выбирайте Ubuntu.&lt;/li&gt;
&lt;/ul&gt;</content><author><name>Кирилл Леонов</name></author></entry><entry><title type="html">Зачем я сделал REST API для WireGuard?</title><link href="https://tupoleon.ru/updates/2026/08/15/wg-rest-api-why-and-how/" rel="alternate" type="text/html" title="Зачем я сделал REST API для WireGuard?" /><published>2026-08-15T23:36:34+03:00</published><updated>2026-08-15T23:36:34+03:00</updated><id>repo://posts.collection/_posts/2026-08-15-wg-rest-api-why-and-how.md</id><content type="html" xml:base="https://tupoleon.ru/updates/2026/08/15/wg-rest-api-why-and-how/">&lt;p&gt;Несколько лет назад у меня возникла весьма серьезная потребность в VPN. Честно говоря, до того времени VPN у меня ассоциировался исключительно с какими-то корпоративными сетями и трекерами, доступ к которым нельзя было получить из России. Как же хорошо, что все меняется!&lt;/p&gt;

&lt;p&gt;Мне посчастливилось начать свое погружение в сети с WireGuard. WireGuard напоминает какое-то криптографическое произведение искусства — с учетом того, на сколько он миниатюрен и эффективен. Поначалу я вручную разворачивал WireGuard на сервере и затем, используя максимально неинтуитивный wg-tools, генерировал для каждого клиента конфиги. В какой-то момент, когда число друзей, нуждавшихся в ключике, перевалило за 50, это превратилось в ужасающе утомительную рутину. Даже несмотря на то, что я использовал скрипт, который одной командой выдавал готовый QR-код — нужно было только отправить его другу.&lt;/p&gt;

&lt;p&gt;В какой-то момент я наткнулся на проект &lt;a href=&quot;https://github.com/wg-easy/wg-easy&quot;&gt;wg-easy&lt;/a&gt;. Это было просто глотком воздуха. Приложение разворачивалось одной командой и сразу же под капотом имело все необходимое. А через удобный веб-интерфейс было чертовски приятно управлять конфигурациями клиентов. Больше не было необходимости заходить на сервер. Честно говоря, если вам нужен просто VPN для себя и близких и вы не хотите особо заморачиваться, я думаю, это до сих пор один из самых удачных вариантов. Хоть WireGuard и не создан для мимикрии трафика, и довольно легко может отслеживаться, в 98% случаев он до сих пор эффективно работает. Во всяком случае, на дату публикации этой статьи, РКН не видит особого смысла в активной борьбе с ним. Они намного больше заняты «влесом», у которого изначально был целый вагон удобных API, — в следствие чего его стали использовать повсеместно все VPN-провайдеры.&lt;/p&gt;

&lt;p&gt;Однако, как это всегда и бывает, заходить на сайт, чтобы создать ключик другу, тоже в какой-то момент стало надоедливой рутиной. Я захотел это автоматизировать. Идеальным вариантом стал бот, которому каждый из моих друзей мог написать и получить ключик. Я стал искать API и, к моему удивлению, не нашёл того, что мне нужно. Я хотел что-то максимально простое — в духе старого доброго &lt;a href=&quot;https://github.com/wg-easy/wg-easy&quot;&gt;wg-easy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Все проекты, на которые я натыкался, были либо:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;слишком сложны в конфигурации. Я хотел, чтобы всё разворачивалось одной командой на любом хосте;&lt;/li&gt;
  &lt;li&gt;слишком сложны по части API. Я хотел максимально прозрачный, нативный и понятный REST;&lt;/li&gt;
  &lt;li&gt;без какого-либо тестового покрытия;&lt;/li&gt;
  &lt;li&gt;Go имплементация самого WireGuard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Возможно, я просто не нашёл проект, который удовлетворял всем требованиям, или же мне захотелось переизобрести велосипед — как это всегда и бывает 😂.&lt;/p&gt;

&lt;p&gt;И так, вдохновившись уже несколько раз ранее упомянутым проектом, я начал пилить свою апишку. Первая, скажем, MVP-версия, которую уже кто-то мог бы полноценно использовать, появилась где-то через неделю.&lt;/p&gt;

&lt;h2 id=&quot;как-ее-использовать&quot;&gt;Как ее использовать?&lt;/h2&gt;

&lt;p&gt;Для начала, если вам это действительно нужно и вы уже дочитали до сюда, я бы попросил вас поставить звездочку проекту. Сделать это можно перейдя в &lt;a href=&quot;https://github.com/leonovk/wg-rest-api&quot;&gt;репозиторий&lt;/a&gt; проекта.&lt;/p&gt;

&lt;p&gt;И так, вы решили, что хотите автоматизировать процесс генерации ключей для ваших юзеров. Первое что вам нужно убедиться, что у вас установлен docker.&lt;/p&gt;

&lt;wll-code class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;curl &lt;span class=&quot;nt&quot;&gt;-sSL&lt;/span&gt; https://get.docker.com | sh
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;usermod &lt;span class=&quot;nt&quot;&gt;-aG&lt;/span&gt; docker &lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;whoami&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;exit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/wll-code&gt;

&lt;p&gt;Далее вы просто запускаете контейнер на основе уже готового образа. Вам не надо ничего даже собирать.&lt;/p&gt;

&lt;wll-code class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;docker run &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;WG_HOST&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&amp;lt;🚨YOUR_SERVER_IP&amp;gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;AUTH_TOKEN&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&amp;lt;🚨YOUR_ADMIN_API_TOKEN&amp;gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;ENVIRONMENT&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;production &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;-v&lt;/span&gt; ~/.wg-rest:/etc/wireguard &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt; 51820:51820/udp &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt; 3000:3000 &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--cap-add&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;NET_ADMIN &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--restart&lt;/span&gt; unless-stopped &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
leonovk/wg-rest-api
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/wll-code&gt;

&lt;p&gt;Очевидно, но все же вместо &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;🚨YOUR_SERVER_IP&amp;gt;&lt;/code&gt; вы подставляете IP адрес вашего сервера. Да вам обязательно нужен выделенный Ipv4.&lt;/p&gt;

&lt;p&gt;Вместо &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;🚨YOUR_ADMIN_API_TOKEN&amp;gt;&lt;/code&gt; любую строку которая будет использоваться для авторизации ваших запросов. Поэтому постарайтесь выбрать что нибудь посложнее. Авторизацию на основе генерации хеша тоже можно использовать. Об этом есть инструкция уже в самом репозитории.&lt;/p&gt;

&lt;p&gt;Конфигурационные переменные окружения тоже можно задавать. Их полный перечень есть &lt;a href=&quot;https://github.com/leonovk/wg-rest-api/wiki/Settings-you-can-set&quot;&gt;тут&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;В принципе это все. Да больше ничего не надо. Внутри запущенного контейнера уже будет сервер WireGuard и REST API которая позволит вам взаимодействовать с ним.&lt;/p&gt;

&lt;p&gt;Что бы убедиться, что все ок сделайте запрос:&lt;/p&gt;
&lt;wll-code class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;curl http://YOUR_SERVER_IP:3000/healthz
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/wll-code&gt;

&lt;p&gt;Запущенный контейнер будет иметь промапленный том на папку .wg-rest вашего хоста. Содержимое этой папки позволит вам сделать бекап. Полную документацию по эндпоинтам вы найдете в репозитории.&lt;/p&gt;</content><author><name>Кирилл Леонов</name></author></entry></feed>