Мы живём в эпоху тотальных ограничений и запретов, когда каждый день нам норовят что-то еще отключить.
В связи с этим я хочу поделиться простейшим способом поднять свой собственный, ни от кого не зависящий 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, оплатить что-то за рубежом стало проблемой.
Вот небольшой список хостеров, у которых есть сервера в других странах и они принимают оплату из РФ:
Если вы решите работать с 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
Она автоматически всё настроит, вообще думать не придётся.
Чудесная утилита делает всё сама, нужно только запустить ./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 вы можете быть полностью уверены, до тех пор, пока хостер оказывает вам услуги. А если вдруг и перестанет - то просто надёте нового и повторите настройку.
Всем свободного интернета!
Привет, Василий вопрос может показаться банальным, но никак не пойму, как его использовать например из консоли modx в то время, когда Guzzle и Curl, что-то барахлят?
Вопрос не такой уж и банальный, на самом деле.
VPN - это туннель на другой сервер, и на компьютере он выглядит как новый сетевой интерфейс. При его включении все запросы заворчиваются на эту сетевую карту, и весь софт его использует, даже не зная, что он работает через VPN.
Соответственно, чтобы его поднять, тебе нужны права root и на чужом хостинге этого сделать не получится.
Если же ты хочешь использовать свой сервер для разрешения проблемных запросов, то тебе нужен не VPN, а Proxy, к которому можно будет подключиться из Guzzle. В своё время я использовал Squid 3, возможно сейчас есть решения лучше и проще.
Зарегистрировался чтобы выразить благодарность за доступное и подробное описание процесса. Была возможность взять linode, но остановился на vdsina, получилось и больше по трафику и дешевле по цене. Не понравился родной клиент под вин, использую tunsafe. Спасибо, и удачи в вашей работе )
На здоровье!
Да, но почему одна учетная запись может использоваться одновременно на двух устройствах? wg создает файл конфигурации в котором находятся ключи и IP за NAT, он статический. Когда клиент 1 подключен, и второй в этот момент тоже подключается у первого не разрывается сессия, а по логам wg видно что обновляется время handshake. Как поправить?
Честно говоря, никогда так не пробовал делать - всем клиентам подключаю свои отдельные ключи.
Если оба клиента выходят с 1 IP, с одним ключём, то с точки зрения сервера это 1 клиент, наверное, и есть. Как он их должен различать?
Думаю, нужно просто настроить на 2х клиентах разные ключи, количество же не ограничено.
я потестил: сессии конфликтуют, пакеты теряются, так наверное и задумывалось. Видимо нужно делать проверку на подключение, но пока не пойму для какого именно демона) спасибо
Не за что!
Простите за некропостинг, но я настраивала по вашей методике и к вам же с вопросом. Как можно удалить не нужного клиента? )
Думаю, удалить его конфиг и перезапустить сервис Wireguard.
вы не сможете подсказать комманды для удаления конфига?
Они же в файликах хранятся, в
/etc/wireguard/wgclient_*
- нужно только найти тот, что вам нужен.Или по имени (если указывали при создании), или по содержанию ключей в
conf
файле.т.е. удалить все что внутри conf файла и перезапустить спасибо буду пробовать )
Не внутри файла, а сам
conf
файл.И другие 2 одноименных файла, которые с qr кодом, вам тоже вряд ли нужны будут - их тоже лучше удалить.
я поэтому и спрашиваю команду, т.к. не знаю как удалять файлы и где они лежат ( может вам будет не трудно написать порядок действий как для пятилетки?
Клиент - это номер вашего клиента, я его не знаю, его нужно как-то найти.
Звездочка на конце означает, что нужно удалить все файлы этого клиента.
огромное спасибо! )
Вечер добрый, подскажи пожалуйста, мне не помогут эти команды если у меня все peer хранятся в файле wg0.conf ?
Думаю, что не помогут