Перейти к основному содержимому

Outline — VPN на своем сервере за 5 минут

·649 слов·4 минут
гайды софт
Юрий Семеньков
Автор
Юрий Семеньков
DevOps, tech, geek, mentor
Оглавление

Про различные VPN в последнее время было сказано очень многое.

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

Другие люди, в основном IT-шники, арендуют у хостера маленькую виртуальную машину, устанавливают на ней VPN-сервер и подключаются к нему.

За несколько лет я настроил множество VPN-туннелей и не только для личных целей.

На своей виртуалке я поднимал:

🔹 L2TP+IPSec — шифрование IPsec-ом вообще считается золотым стандартом при построении site-to-site туннелей. Его могут заблокировать.

🔹 PPTP — несложная настройка, но слабое шифрование. Устройства Apple уже давно не поддерживают этот протокол. Его могут заблокировать.

🔹 OpenVPN — есть способы и вручную установить, но придется чуть-чуть попотеть. Можно и автоматически. Блокировка сложнее, потому что он может работать на любом порту, а так же может работать как по TCP, так и по UDP.

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

При недавнем переезде с одной VPS-ки (virtual private server) на другую я решил попробовать что-нибудь другое вместо OpenVPN. He’s a 10, but:

  • для добавления новых ключей нужны ручные действия
  • на iOS (а может быть и на Android) подключение прерывается при уходе устройства в режим сна, и не всегда поднимается обратно

Но сабж не про OpenVPN, он про Outline.

Настройка сервера
#

Во-первых в интернете уже много раз было сказано про него. Особенно акцентировалось внимание на простоту и быстроту настройки. А-ля «пять минут и готово». Ну, в целом так и есть. Давай быстро пробегусь по настройке:

☝️ Из очевидных, но важных условий — у тебя есть работающий VPS 🙈

1️⃣ Идем на оф. сайт, и скачиваем Outline Manager. Он нужен для управления Outline-сервером(-ами).

2️⃣ Нажимаем «+», выбираем «Настройте где угодно», и следуем инструкции. А именно запускаем в bash скрипт для установки сервера. Внутри скрипта будет проверка наличия Docker-а и его установка.

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

3️⃣ В выводе мы получим текст с apiUrl и certSha256, который нужно ввести в Outline Manager

{
"apiUrl": "https://13.0.0.121:38848/P2qsdq......oaXH6tA",
"certSha256": "certSha256:C3690622.............31607FBCDCA78B581"
}

🤔 Я потерял токен сервера, как найти?
#

Одна из первых проблем, что возникла — я не сохранил данные для добавления сервера в Outline Manager.

На нашем сервере делаем cat /opt/outline/access.txt

certSha256:C3690622.............31607FBCDCA78B581
apiUrl:https://13.0.0.121:38848/P2qsdq......oaXH6tA

Превращаем это в строку конфигурации:

{
"apiUrl": "https://13.0.0.121:38848/P2qsdq......oaXH6tA",
"certSha256": "certSha256:C3690622.............31607FBCDCA78B581"
}

Настройка клиента
#

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

По ссылке предложат скачать клиент для нужной тебе платформы.

Плюсы
#

Основные плюсы для меня:

  • Простота установки и управления — в жизни прихожу к мнению, что нужно максимально упрощать всё
  • Не выключается на спящем iPhone — единственный клиент, который продолжает работать даже в режиме сна, но не жрет батарейку
  • Сложность блокировки — особенность протокола Shadowsocks, который работает через UDP, без установки tcp-рукопожатий.
  • Маленькие системные требования — машинки с 512MB оперативной памяти вполне достаточно для сервера на 20-30 человек.

Минусы, но технические
#

  • Outline поднимает инстанс с Prometheus внутри контейнера, но биндит его на localhost, в связи с чем помониторить снаружи не получится — поменять listen-адрес, или выключить prometheus нельзя(без костылей).

В конечном итоге пользуюсь Outline-ом уже больше трех месяцев — полет хороший. Мой рекомендасьон. 👌

update:

В чате помогли найти описание API для Outline Server. Ссылка: https://github.com/Jigsaw-Code/outline-server/blob/master/src/shadowbox/server/api.yml

update2:

Нашел статью в которой показано, как обращаться к API Outline VPN из Python:
Ссылка: https://habr.com/ru/articles/820437/.


🔥 А еще рекомендасьон — подписаться на мой [ Телеграм-канал]( https://t.me/etogeek), чтобы не пропускать интересные посты, новости и мои мысли.

Related

Перенос git репозитория
·135 слов·1 минута
софт гайды
Как посмотреть внешний IP в Linux
·126 слов·1 минута
гайды
caffeinate — macbook, не спи
·210 слов·1 минута
гайды