Каждый, кто сталкивался с вопросом обхода блокировок таких сайтов, как Instagram, Facebook, OpenAI и других, к которым закрыт доступ в РФ, знает, что бесплатные VPN не всегда надежны. Платные VPN-сервисы тоже не всегда быстро работают, да и порой стоят не мало.
На мой взгляд, лучшее решение — это свой собственный VPN с возможностью создания неограниченного количества ключей (один ключ — одно устройство) и, как вы догадались, делать такой VPN я сегодня вас научу.
Создавать VPN мы будем через сервис Outline. Я использую его сам. Эта штука очень удобная и легко настраивается даже для новичка. Обо всем подробнее далее.
Для работы нам потребуется:
VPS сервер на Linux
Программа Outline Manager
Программа Outline Client
VPS сервер
Обычно я отдаю предпочтение VPS серверам на Ubuntu. Достаточно самого простого сервера, стоимостью от 400 рублей в месяц.
Outline Manager
Outline Manager нужен для подключения вашего VPS сервера к системе Outline. Через эту программу мы будем генерировать VPN ключи и управлять ими. Этот софт доступен для Linux, Windows и MacOS.
Outline Client
Outline Client нужен для использования VPN ключей. Работает на iOS, Android, Linux, Windows и MacOS. Важно помнить о правиле. Одновременно один ключ можно использовать на одном устройстве!
Теперь к пошаговой инструкции:
Загружаем Outline Manager (с официального сайта)
Запускаем программу
Нажимаем на «Добавить сервер»
![Нажимаем на «Добавить сервер» (шаг 3) Нажимаем на «Добавить сервер» (шаг 3)](https://habrastorage.org/getpro/habr/upload_files/1eb/a21/d3e/1eba21d3e47686f9d818b301d4bae517.jpg)
Выбираем вариант "Настроить где угодно"
![Выбираем вариант "Настроить где угодно" Выбираем вариант "Настроить где угодно"](https://habrastorage.org/getpro/habr/upload_files/733/038/7a8/7330387a8ae8b59064036a335804d893.jpg)
На следующем экране будет эта строка. Добавляем ее в буфер обмен (копируем)
![На следующем экране будет эта строка. Добавляем ее в буфер обмен (копируем) На следующем экране будет эта строка. Добавляем ее в буфер обмен (копируем)](https://habrastorage.org/getpro/habr/upload_files/6fc/cd0/8c7/6fccd08c7b2914267c2dd8f138096b57.jpg)
Авторизация на VPS сервере
После покупки VPS сервера обычно доступен вариант авторизации через SSH. Будем считать, что это ваш случай.
Приступаем к авторизации:
Открываем командную строку
Вводим
ssh usernamen@host (ip адресс сервера)
yes
password
После входа вас поприветствует ваш Linux.
![](https://habrastorage.org/getpro/habr/upload_files/c13/31f/e2b/c1331fe2bcd69426755ae02a98908aa7.jpg)
Далее нам нужно установить утилиту curl.
sudo apt install curl
Утилита curl нужна для корректной отправки запроса в Outline.
Теперь мы готовы к установке Outline. Вставляем скопированную строку из Outline Manager в терминал Ubuntu:
sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)"
Обратите внимание: при установке Outline могут потребоваться дополнительные пакеты. Следуйте инструкциям и вводите Y
для загрузки/установки дополнительных пакетов.
На выходе вы должны получить сообщение «CONGRATULATIONS! Your Outline server is up and running.» и, самое главное, строку, которую нужно скопировать и вставить в Outline Manager.
![Обратите внимание по ходу установки мне пришлось ввести Y Обратите внимание по ходу установки мне пришлось ввести Y](https://habrastorage.org/getpro/habr/upload_files/4ae/253/83c/4ae25383c38bf448cfa7decc11d51f31.jpg)
Копируем эту строку и вставляем в окно Outline Manager (скрин ниже).
![](https://habrastorage.org/getpro/habr/upload_files/efd/af3/152/efdaf315255ce03515d08b2e1337eff5.jpg)
Теперь вас перенаправит на окно управления ключами. Вот некоторые возможности:
Добавить новый ключ
Удалить ключ
Переименовать ключ
Задать ограничение трафика
Переименовать сервер и настроить его
Теперь давайте потестируем наш первый ключ.
Выбираем «Поделиться»
![](https://habrastorage.org/getpro/habr/upload_files/c50/739/f11/c50739f113ab157aa5b25ba031c2e67a.jpg)
2. На следующем экране «Копировать ключ доступа»
![](https://habrastorage.org/getpro/habr/upload_files/1f9/490/cd9/1f9490cd9052ac1f80ebab9dbc01665a.jpg)
Теперь нам остается вставить этот ключ в программу Outline Client. Ниже я буду показывать в Windows версии, но тот же принцип будет распространяться на любую другую платформу.
Открываем Outline Client
Вставляем ключ
Нажимаем «Добавить сервер»
![](https://habrastorage.org/getpro/habr/upload_files/d40/ef3/a62/d40ef3a6299aac3568bb29a21806f95b.jpg)
Нажимаем на "Подключить"
![](https://habrastorage.org/getpro/habr/upload_files/8b8/7af/75f/8b87af75f37bf275c74db8da96a4a4b8.jpg)
Теперь проведем небольшой тест. Вот как меня видят в сети без Outline и с включенным собственным VPN.
![Без VPN Без VPN](https://habrastorage.org/getpro/habr/upload_files/ffc/425/fbe/ffc425fbef490fdb60f39563c5b586a0.jpg)
![С VPN С VPN](https://habrastorage.org/getpro/habr/upload_files/133/c2f/fe0/133c2ffe0ff9a9aab3ceeb137e30bf73.png)
Выводы
То, что я описал выше, доступно каждому. Однако взаимодействовать с Outline можно и программно. Например, существует полезная библиотека Python3, которая позволяет управлять ключами через стандартные запросы.
Это особенно удобно для создания телеграм-бота для продажи ключей (я уже разрабатывал такого, если интересно — пишите в личные сообщения, дам ссылку) или собственного веб-приложения для продажи ключей.
Пожалуйста, дайте обратную связь, если вам интересна тема программного взаимодействия с Outline. И не забудьте оставить отзыв, если информация, изложенная здесь, оказалась для вас полезной.
Всего доброго!
Комментарии (63)
GennPen
08.06.2024 11:18+1Вопросы:
Поддерживает ли IPv6? Если поддерживает, то через NAT или напрямую?
Чем он лучше того же WireGuard кроме как настройки? Я имею в виду, есть ли у него обфускация трафика, которая затруднит определение трафика: ВПН/неВПН.
Есть ли клиент для серверной Ubuntu?
MountainGoat
08.06.2024 11:18Это вроде голый OpenVPN.
GennPen
08.06.2024 11:18+1Погуглил, пишут, что на основе Shadowsocks.
MountainGoat
08.06.2024 11:18Тьфу, извините, с другим таким же попутал, ибо имя им - легион.
GennPen
08.06.2024 11:18Еще больше погуглил. Кратко говоря, Outline мимикрирует под обычный HTTPS трафик.
IPv6 родной клиент вроде как не поддерживает. Но можно подключаться через Shadowsocks клиент, который умеет в IPv6. Получается, подключаться можно и через консольный Shadowsocks клиент с Ubuntu.
Нужно пробовать на практике.
RoundRobin
08.06.2024 11:18Нет, он не мимикрирует под обычный HTTPS трафик. Для наблюдателя он выглядит как шифрованный поток данных. TLS-хэндшейка там вообще нет.
GennPen
08.06.2024 11:18И еще, кто пользуется клиентом для Андроида. У него есть исключения для определенных приложений, как в клиенте WireGuard?
Barnaby
08.06.2024 11:18Нет, но можно использовать обычный клиент для SS, там есть https://play.google.com/store/apps/details?id=com.github.shadowsocks
0mogol0
08.06.2024 11:18+3я не очень понял, а что за Outline? ну т.е.
Ригу брал, Казань брал...OpenVPN знаю, WireGuard, XTLS знаю. Про Outline первый раз слышу. Что у него под капотом? Если уже рассказывали, то может стоило бы дать ссылку на материал в начале, чтобы понять о чём собственно речь.Пока выглядит так, будто есть внешний центр сертификации, через который вы управляете выдачей ключей, и который при желании / наличии злой воли сможет в любую минуту их отозвать или выпустить свои. И всё это, вместо того, чтобы развернуть свой локальный ЦА, для полного контроля над сервером.
Dick_from_mountain
08.06.2024 11:18Использую Outline как Gui клиент под Линуксом для соединения с сервером Shadowsocks. Что он ещё умеет не в курсе, но с вышеупомянутым работает нормально.
ainoneko
08.06.2024 11:18Да, оказывается, год назад они починили (сломанный два года назад) клиент под Линукс (выпустили новый) :)
ZorkinRoman
08.06.2024 11:18+1Насколько такая штука безопасна? (Вопрос от дилетанта экспертам)
На примере openVPN - ты разворачиваешь open source проект самостоятельно, сам сертификаты выпускаешь и т.д. Как бы есть небольшая уверенность в том, что твои данные не утекут.
В случае outline, ты пользуешься тёмной коробочкой от Google. Тут тоже вроде open source, но слишком всё просто без твоего участия настраивается. Смущает))
MountainGoat
08.06.2024 11:18Для вас существуют рецепты для Ansible. Всё само и прямо перед глазами. Только Ansible с винды надо в WSL запускать.
ivantgam
08.06.2024 11:18+1Увы, Shadowsocks сейчас крайне легко блокируется ISP, поэтому подойдёт только для временной замены.
dyadyaSerezha
08.06.2024 11:18Да и цена сервера в 400р примерно равна цене за платный впн.
0mogol0
08.06.2024 11:18у платного впн есть как плюсы: всё настроят за тебя, плюс (по хорошему) сделают несколько серверов в разных локациях, так и минусы: активные игроки привлекают к себе внимание и становятся мишенью для блокировок.
Частный сервер - конечно может попасть под тотальную блокировку "по протоколу", но вероятность, что будут бездоказательно блокировать впн к какому-то серверу не слишком велика, пока не ввели одобрительный порядок создания впн.
yakvenalex Автор
08.06.2024 11:18VPS - это на перспективу скорее. На него можно не только VPN поставить, но и, например, тот же FastApi или бота повесить. Есть свои плюсы и минусы
ris58h
08.06.2024 11:18В 2 раза выше цены за платный VPN.
aspid-crazy
08.06.2024 11:18Я арендую за 1300 в год, так что с ценами всё по разному
ris58h
08.06.2024 11:18Где сейчас "с порога" такая цена?
aspid-crazy
08.06.2024 11:18aeza.net
У них были промо-тарифы в Стокгольме. Брал себе в марте, пару недель назад он еще был активен. Сейчас проверил - активация такого тарифа уже приостановлена. Продление вроде бы по той же цене.
Есть еще weasel.cloud - там получается 240 р. в месяц, при оплате на год вперед.
alexdora
08.06.2024 11:18+2Пока пользуемся SS, намеков на блоки нет даже в то время когда WG отваливался по всей России. Как залочат, будем решать.
Barma2012
08.06.2024 11:18Пока пользуемся SS
А что это, можно подробнее?
Anyuta1166
08.06.2024 11:18У вас ошибка выжившего. SS уже блокируется всеми мобильными операторами РФ. Правда, выборочно - по какой-то причине, не все подпадают под блокировку. Но от этого не легче.
iosuslov
08.06.2024 11:18+1Пользуюсь outline давно, также пользовался purevpn платным. Последний частенько умирает,т.к. попадает в баны какие-то. А аутлайн как работал, так и работает. Скорость медленная, это да. Но как правило достаточно с ним пройти какой-то барьер, а потом отключать и все будет качаться/смотреться/играться без него.
Ну и при выборе хостера учитывайте, что некоторые провайдеры уже в бане у многих приложений. Например, aws - с его виртуалок, например, чатгпт или эпик стор вас не пустят - будут просить выключить впн
pae174
08.06.2024 11:18ssh usernamen@host (ip адресс сервера)
yes
Вот так слепо yes и всё? Live dangerous?
yakvenalex Автор
08.06.2024 11:18В данном контексте yes - это разрешение на сохранение SSH ключа на компьютере. Решил не тратить на это время, так как там понятно будет из контекста (в командной строке будет все написано)
pae174
08.06.2024 11:18Если вы не проверили серверный ключ ssh перед тем, как нажимать этот вот yes, то вы открыли возможность для выполнения MitM атаки, что естественным образом делает всю затею с ssh бесполезной фигнёй. Успешно внедрившийся к вам MitM root может делать с вашей машиной всё, то захочет, в том числе может сделать вам любые блокировки чего угодно, сдампить ваш трафик, подсунуть вам в трафик разные прикольные штуки, да и вообще всё.
yakvenalex Автор
08.06.2024 11:18Любое первое подключение по SSH будет спрашивать об этом. Каким образом пойдет MitM при условии что подключение идет к своему собственному VPS?
MountainGoat
08.06.2024 11:18Как вы предлагаете проверить ключ у только что созданной VPS к которой впервые подключаетесь? Напомню, что если у злоумышленника нет публичного ключа вашего SSH key, то изобразить сервер он не сможет (почему и не стоит этим ключом где попало разбрасываться, и надо иметь разные ключи для ценных машин и одноразовых VPSок)
pae174
08.06.2024 11:18Как вы предлагаете проверить ключ у только что созданной VPS к которой впервые подключаетесь?
Обычно хостер дает возможность зайти на сервер не только через ssh но и через VNC. Заходите через VNC, логинитесь, делаете ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key, получаете слепок. Некоторые хостеры после развертывания виртуалки автоматически делают это за вас и потом пишут полученный слепок в панели управления виртуалкой.
если у злоумышленника нет публичного ключа вашего SSH key, то изобразить сервер он не сможет
Если вы не проверяете ключ своего сервера, то злоумышленнику он и не нужен вообще.
MountainGoat
08.06.2024 11:18А если не предоставляет - то никак. Из вашего получается, что большинство VPSок давно взломаны.
pae174
08.06.2024 11:18Большинство провайдеров VPSок как раз дают юзеру консоль сервера. Я за 15 лет наадминил несколько сотен серверов у разных провайдеров, у меня вообще все 100% позволяли получить слепок так или иначе, и у меня эти слепки потом хранятся наравне с паролями и клиентскими ключами на моей стороне.
Вообще если проводить параллели, то работа по ssh без проверки ключа это все равно что работа с вебсайтом, который защищен самоподписанным сертификатом. Это не очень хорошая идея если вам есть что терять.
NikaLapka
08.06.2024 11:18поздравляю, следующим шагом для вас будет открытие того факта, что а) есть бесплатный протон б) доступ к первому, пока не блокируется с любого российского хостера в) следствием из а) и б) будет что никакие xray, outline,... для этого не нужны
bITb2112
08.06.2024 11:18К сожалению, на данный момент нет ничего лучше, чем WireGuard. Скорость, производительность, простота настройки - на высоком уровне. Да и 400р/месяц звучит дорого для прокладки между устройством и свободным интернетом. Говорю как владелец VPN на WireGuard.
nidalee
08.06.2024 11:18+2К сожалению, на данный момент нет ничего лучше, чем WireGuard.
Он уже блокировался, его можно не заморачиваться поднимать: когда понадобится - не поможет.
Andy_U
08.06.2024 11:18После входа вас поприветствует ваш Linux.
Ага, пользователем root через SSH. Я только что с аналогичной дичью столкнулся. VPS в Нидерландах. Посмотрел на .ssh/authorized_keys. А там куча публичных ключей, видимо, сотрудников тех.поддержки. Причем, е-mail'ы, такие, русскоязычные. Думаю.
DMY
08.06.2024 11:18Действуете по инструкции, и получаете майнер работающий на вашем хостинге, буквально через несколько минут. Так что добавьте пару строчек про запрет подключений извне к докеру, а лучше на запрет всех подключений, кроме ssh (который хорошо бы ещё на нестандартный порт перенести) и самого ВПН сервера.
PS один ключ отлично может использоваться для нескольких одновременных подключений, это вам не WireGuard.
msokolanov
08.06.2024 11:18Здравствуйте!
Спасибо за вашу статью о создании собственного VPN. Информация действительно полезная, и я уверен, что многим читателям она пригодится.
Однако хочу обратить ваше внимание на возможное нарушение закона 149-ФЗ. В статье описывается способ обхода блокировок интернет-ресурсов, доступ к которым ограничен на территории Российской Федерации. Это может быть расценено как нарушение законодательства.
Закон 149-ФЗ, статья 15.1, пункт 5(1), предусматривает включение в реестр запрещённых ресурсов информации о способах обхода блокировок. Публикация такой информации может привести к юридическим последствиям как для автора, так и для платформы, на которой размещена статья.
Рекомендую проконсультироваться с юристом и рассмотреть возможность удаления или изменения статьи, чтобы избежать возможных проблем.
Благодарю за понимание и желаю успехов в вашей деятельности!
GennPen
08.06.2024 11:18+7Роскомнадзор, разлогинься.
Чем эта статья отличается от кучи других инструкций? Ну, даже на том же Дзене море статей на эту тематику.
Публикация такой информации может привести к юридическим последствиям как для автора
А можно вопрос: Каким образом это относится к автору? Его включат в реестр запрещённых ресурсов информации?
BasiC2k
08.06.2024 11:18Outline спокойно детектируется и блокируется. Хотя ещё полгода назад такой проблемы не было.
Pol1mus
Жесть.
https://amnezia.org/ru От сервера требуется только ssh. От клиента смартфон.
MountainGoat
От сервера требуется либо иметь докер в стандартной конфигурации, либо быть одного из нескольких дистрибутивов, для которых в программе есть сценарий, как его поставить.
А вот смартфон совсем не обязателен.
Pol1mus
Докер не требуется, в том смысле что он его сам поставит. Нужен только доступ через ssh. Комп и вот эти все ваши консольные приключения не нужны, достаточно телефона.
Kenya-West
Вы не поняли вопрос.
А если у меня нет телефона, в смысле, смартфона? В таком случае я не смогу воспользоваться Amnezia?
benjik
Поддерживаю. Плюс при использовании протокола amnezia wg скорость быстрее чем у outline
Kil1J0y
А ещё логи outline засрали систему полностью...
Долой outline
edik-petrof
Так это не беда конкретного приложения. Грамотно настроенный logrotate решит проблему нехватки дискового пространства из-за логов не только outline, но и nginx, apache, и множества других приложений, включая даже syslog. Что-то из этого включено в дефолтный конфиг, а что-то придется добавить вручную. А насчет долой - это надо смотреть насколько легко outline блокируется на уровне протокола в сравнении с конкурирующими решениями.
Kil1J0y
А его блочили.. ss в нем вышел не очень. +есть нюанс в плане безопасности, он подвержен mitm(если не подводит память из за работы только по ip)
RoundRobin
Там ss старой уязвимой версии. Но в РФ блокировали не сам SS протокол, а "все непонятное" (кроме протоколов из белого списка).
Dertefter
Ну outline в любом случае ставится проще