Быстрый личный VPN через Wireguard

Мы живём в эпоху тотальных ограничений и запретов, когда каждый день нам норовят что-то еще отключить.

В связи с этим я хочу поделиться простейшим способом поднять свой собственный, ни от кого не зависящий VPN сервер. Virtual Private Network, то есть виртуальная частная сеть, даёт вам возможность выходить в интернет от имени другого компьютера, обходя таким образом запреты на вашем рабочем месте.

Сегодня мы арендуем и настроим сервер Linode в Германии.

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

Но более важно, что появилось отличное решение для простых смертных, которые не хотят ломать голову - Wireguard.

WireGuard® — это чрезвычайно простая, но быстрая и современная VPN, использующая современную криптографию. Он стремится быть быстрее, проще, компактнее и полезнее, чем IPsec, избегая при этом головной боли. Он намерен быть значительно более производительным, чем OpenVPN. WireGuard разработан как VPN общего назначения для работы как на встроенных интерфейсах, так и на суперкомпьютерах, подходящих для самых разных обстоятельств. Первоначально выпущенный для ядра Linux, теперь он является кроссплатформенным (Windows, macOS, BSD, iOS, Android) и доступен для широкого развертывания. В настоящее время он находится в стадии интенсивной разработки, но уже может считаться самым безопасным, простым в использовании и простейшим VPN-решением в отрасли.

Wireguard поставляется прямо в ядре Linux с версии 5.6 , что говорит о его несомненной крутизне и надёжности.

Создание сервера

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

Внимание, в связи с уходом Visa и Mastercard, оплатить что-то за рубежом стало проблемой.

Вот небольшой список хостеров, у которых есть сервера в других странах и они принимают оплату из РФ:

  • ihor.ru (неудобная админка, но проверял лично - работает)
  • vdsina.ru (не проверял)
  • pq.hosting (не проверял)

Если вы решите работать с Linode, то можно воспользоваться моей реферальной ссылкой для получения $100 на 60 дней - фактически халявный сервер на 2 месяца, нужно только привязать карту. Российская Visa от Сбербанк отлично работает, только что проверил.

Дальше создаём сервер, выбирая Ubuntu 20.04 LTS и нужную страну. Тариф самый минимальный, за $5.

Указываем пароль для root и, желательно, свой SSH ключ, если он у вас есть.

Всё, сервер уже создаётся

Смотрим IP нового сервера и подключаемся к нему через SSH:

ssh root@172.104.154.190

Если вы используете SSH ключ, то и пароль вводить не придётся, только принять ключ сервера.

Установка приложений

Первым делом обновляем зависимости

apt update && apt dist-upgrade -y

Затем ставим всё нужное

apt install wireguard-tools mawk grep iproute2 qrencode mc htop

Работа с Wireguard сама по себе не очень сложная, но мы пойдём совсем простым путём, и скачаем утилиту easy-wg-quick.

cd /etc/wireguard
wget https://raw.githubusercontent.com/burghardt/easy-wg-quick/master/easy-wg-quick
chmod +x ./easy-wg-quick

Она автоматически всё настроит, вообще думать не придётся.

Запуск VPN

Чудесная утилита делает всё сама, нужно только запустить ./easy-wg-quick. При первом запуске скрипт создаст все необходимые конфигурации и первого клиента.

Выглядит это вот так

Как видно, вы получаете сразу QR код для подключения к серверу. Остаётся только скачать Wireguard на ваш телефон или планшет и добавить соединение через этот код.

Теперь создаём и запускаем службу systemd:

systemctl enable wg-quick@wghub
systemctl start wg-quick@wghub

Ну а дальше просто включаем VPN на вашем устройстве, когда нужно, и пользуемся!

Посмотреть текущие подключения можно через wg show:

Новые подключения

Для каждого нового подключения нужна своя конфигурация. И для её создания вам придётся каждый раз заходить на сервер в директорию /etc/wireguard, чтобы запустить easy-wg-quick.

Этим вы создадите нового пользователя с конфигом в wgclient_номер.conf, который затем нужно использовать на клиентском устройстве.

На мобильных удобнее подключаться через QR код, а на компьютерах просто копируем содержимое файла с сервера через cat wgclient_10.conf и вставляем у себя на компе. А потом указываем программе

И, конечно, после создания нового клиента нужно перезапустить сервис:

systemctl restart wg-quick@wghub

wg show

У меня например, заготовлено уже 3 клиента:

Любого из них всегда можно отключить, просто удалив конфиг и перезапустив сервис.

Приложение Wireguard есть для всех платформ, так что проблемы с подключеним быть не должно.

Заключение

Вот мы и создали наш первый VPN! Как вы видели из картинки в начале заметки, никаких проблем со скоростью работы нет - мои 100 мегабит спокойно пролетают через сервер в другой стране.

Стоит отметить, что у Linode есть ограничения по трафику. Для каждого сервера это 1 терабайт в месяц, что довольно много для обычной работы. Качать фильмы через торренты с немецкого сервера я вам всё равно не советую, потому что они за этим следят и могут прислать уведомление о нарушении авторских прав, с последующим отключением.

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

Всем свободного интернета!

← Предыдущая заметка
Ваш провайдер режет скорость? Пора настроить VPN
Комментарии (8)
r2m0x94R2m0x94 (Vasily)
09.03.2022 19:58

Привет, Василий вопрос может показаться банальным, но никак не пойму, как его использовать например из консоли modx в то время, когда Guzzle и Curl, что-то барахлят?

bezumkinВасилий Наумкин
10.03.2022 05:26

Вопрос не такой уж и банальный, на самом деле.

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

Соответственно, чтобы его поднять, тебе нужны права root и на чужом хостинге этого сделать не получится.

Если же ты хочешь использовать свой сервер для разрешения проблемных запросов, то тебе нужен не VPN, а Proxy, к которому можно будет подключиться из Guzzle. В своё время я использовал Squid 3, возможно сейчас есть решения лучше и проще.

born2slippishnaa istntome
19.03.2022 01:43

Зарегистрировался чтобы выразить благодарность за доступное и подробное описание процесса. Была возможность взять linode, но остановился на vdsina, получилось и больше по трафику и дешевле по цене. Не понравился родной клиент под вин, использую tunsafe. Спасибо, и удачи в вашей работе )

bezumkinВасилий Наумкин
19.03.2022 04:27

На здоровье!

maxi
06.06.2022 19:52

Да, но почему одна учетная запись может использоваться одновременно на двух устройствах? wg создает файл конфигурации в котором находятся ключи и IP за NAT, он статический. Когда клиент 1 подключен, и второй в этот момент тоже подключается у первого не разрывается сессия, а по логам wg видно что обновляется время handshake. Как поправить?

bezumkinВасилий Наумкин
07.06.2022 11:33

Честно говоря, никогда так не пробовал делать - всем клиентам подключаю свои отдельные ключи.

Если оба клиента выходят с 1 IP, с одним ключём, то с точки зрения сервера это 1 клиент, наверное, и есть. Как он их должен различать?

Думаю, нужно просто настроить на 2х клиентах разные ключи, количество же не ограничено.

maxi
07.06.2022 12:21

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

bezumkinВасилий Наумкин
07.06.2022 12:49

Не за что!

bezumkin
Василий Наумкин
13.08.2022 11:41
неужели, все глобальное, так просто можно взять и сделать Да, именно так. Мелкие затыки, конечно ж...
bezumkin
Василий Наумкин
13.08.2022 08:18
Killed говорит, что сервер прибивает задачу, скорее всего у провайдера есть какие-то лимиты по нагру...
bezumkin
Василий Наумкин
11.08.2022 15:46
Класс!! Рад, что тебе нравится! нужно добавить @click="showCart = true" в: Спасибо, попра...
bezumkin
Василий Наумкин
09.08.2022 11:27
На здоровье!
inetlover
Александр Наумов
30.07.2022 19:58
Василий, спасибо большое! Первый вариант помог, не было вот этой настройки: php_value[sys_temp_dir].
bezumkin
Василий Наумкин
12.07.2022 20:40
Всё как обычно, в самом начале файла конфига import axios from 'axios'
bezumkin
Василий Наумкин
06.07.2022 14:06
Базовый Vue, базовый ES 6: импорт-экспорт модулей, вот это всё. Если что-то будет непонятно - просто...
bezumkin
Василий Наумкин
06.07.2022 11:19
Спасибо, что читаешь!
bezumkin
Василий Наумкин
05.07.2022 11:40
На здоровье!
inetlover
Александр Наумов
03.07.2022 23:36
Василий, спасибо! Все понятно!