Быстрый личный 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_имяклиента.conf и вставляем у себя на компе. А потом указываем программе

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

systemctl restart wg-quick@wghub

wg show

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

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

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

Заключение

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

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

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

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

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

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

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

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

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

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

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

born2slippishnaa istntome
19.03.2022 04:43

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

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

На здоровье!

maxi
06.06.2022 22:52

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

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

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

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

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

maxi
07.06.2022 15:21

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

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

Не за что!

born2slippishnaa istntome
22.11.2022 01:35

Простите за некропостинг, но я настраивала по вашей методике и к вам же с вопросом. Как можно удалить не нужного клиента? )

bezumkinВасилий Наумкин
22.11.2022 02:44

Думаю, удалить его конфиг и перезапустить сервис Wireguard.

born2slippishnaa istntome
22.11.2022 13:29

вы не сможете подсказать комманды для удаления конфига?

bezumkinВасилий Наумкин
22.11.2022 13:34

Они же в файликах хранятся, в /etc/wireguard/wgclient_* - нужно только найти тот, что вам нужен.

Или по имени (если указывали при создании), или по содержанию ключей в conf файле.

born2slippishnaa istntome
22.11.2022 13:41

т.е. удалить все что внутри conf файла и перезапустить спасибо буду пробовать )

bezumkinВасилий Наумкин
22.11.2022 13:47

Не внутри файла, а сам conf файл.

И другие 2 одноименных файла, которые с qr кодом, вам тоже вряд ли нужны будут - их тоже лучше удалить.

born2slippishnaa istntome
22.11.2022 13:51

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

bezumkinВасилий Наумкин
22.11.2022 14:05
cd /etc/wireguard
rm ./wgclient_клиент*
systemctl restart wg-quick@wghub

Клиент - это номер вашего клиента, я его не знаю, его нужно как-то найти.

Звездочка на конце означает, что нужно удалить все файлы этого клиента.

born2slippishnaa istntome
22.11.2022 14:06

огромное спасибо! )

born2slip
pishnaa istntome
22.11.2022 14:06
огромное спасибо! )
inetlover
Александр Наумов
14.11.2022 10:19
посмотри документацию. Спасибо, что-то она мне не нагуглилась. Это просто функции объединения для о...
bezumkin
Василий Наумкин
10.11.2022 05:46
Спасибо за поздравления!
inetlover
Александр Наумов
09.11.2022 17:08
Посмотрел в ДевТулсе свойство overscroll-behavior: none; присутствует, проверил в Chrome и Chromium ...
bezumkin
Василий Наумкин
03.11.2022 20:57
Поискать в исходниках ссылки на её адрес и поменять - скорее всего только nuxt.config.js. А зачем эт...
ni.kolokol@mail.ru
Николай Каленников
03.11.2022 19:43
Спасибо. Попробую тоже с нуля переставить
inetlover
Александр Наумов
03.11.2022 19:24
Спасибо!!! Все заработало!
bezumkin
Василий Наумкин
28.10.2022 05:23
В тексте есть подсказка // Контроллер требует новое разрешение protected $scope = 'ord...
bezumkin
Василий Наумкин
27.10.2022 13:25
Понял, спасибо!
inetlover
Александр Наумов
23.10.2022 13:33
Понял, спасибо!