test adv
,

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Гораздо лучше потратить немного времени и настроить собственный VPN-сервер, чем платить сторонним сервисам

VPN не только позволяет обходить региональные ограничения, но и обеспечивает безопасное использование интернета в общественных местах и постоянный доступ к локальной сети. Бесплатные VPN-сервисы ненадёжны, платные слишком уж завышают ценник и тоже могут блокировать пользователей или быть недоступны. Остаётся лишь настроить личный сервер, который выйдет и дешевле, и безопаснее. Это не так сложно, как кажется на первый взгляд.

Что для этого потребуется: 4 этапа

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

  1. Нужен удалённый компьютер, на который будет устанавливаться специальное ПО. Проще всего арендовать его в одном из крупных и надёжных сервисов — далее в статье я расскажу о таких.
  2. Надо подключиться к серверу по SSH-протоколу с помощью программы Termius и установить на него WireGuard — софт для настройки VPN-соединения.
  3. После установки VPN надо его правильно сконфигурировать.
  4. После настройки WireGuard останется лишь инсталлировать приложение на клиентское устройство и присоединиться к настроенному серверу.

Этап №1. Аренда сервера (выбираем с оплатой криптовалютой)

Поднимать VPN будем на удалённом сервере. Существует огромное количество сервисов, предоставляющих VPS (Virtual Private Server) по адекватным ценам. Ниже представлены популярные поставщики услуг:

  • AWS: первые 12 месяцев бесплатно, затем 10 долларов в месяц, 15 ТБ трафика;
  • Hetzner: 3 евро в месяц, 20 ТБ трафика, требуется подтверждение личности по документу;
  • Vultr: 3,5 доллара в месяц (только при выборе VPS в США), 500 ГБ трафика;
  • Pulseheberg: 4 евро в месяц;
  • DigitalOcean: 5 долларов в месяц, 1 ТБ трафика.

К сожалению, сейчас их невозможно оплатить российскими картами, поэтому в этой статье я буду использовать и рекомендовать сервис СrownСloud. Его прелесть в том, что оплатить сервер можно с помощью криптовалюты (только BTC), которая доступна к использованию даже пользователям из России.

Самый дешёвый сервер можно арендовать за 2,5 доллара в месяц, правда, оплатить придётся на весь год — 30 долларов в сумме. За эту сумму вы получите 512 ГБ трафика ежемесячно. Оплата помесячно доступна для более дорогих решений — от 4 долларов в месяц за 1 ТБ трафика. Можно купить этот план для проверки, а затем сменить на более дешёвый, заплатив сразу за весь год.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Для тех, кто уже знает, как настраивать WireGuard, я советую взять KVM-сервер, ибо установка на нём будет проще и быстрее. В этом же материале я покажу на примере OpenVZ VPS.

На главной странице выбираем раздел Classic OpenVZ Plans.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Выбираем подходящий план — достаточно и самого дешёвого, но, как я сказал ранее, его придётся оплатить сразу на год. Поэтому для примера я выбрал вариант за 4 доллара в месяц. Переходим к оплате, кликнув на расположение сервера справа — США или Германия.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

На этом этапе выберите операционную систему Ubuntu 20.04 x86_64 и перейдите к оплате, нажав кнопку Continue и затем Checkout.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Далее придется заполнить регистрационную форму — можете ввести туда абсолютно любые данные. Главное, чтобы они выглядели достоверно. Только укажите свою почту, к которой имеете доступ, а также запомните пароль. В самом низу выберите способ оплаты Bit-pay (Bitcoin) и поставьте флаг около условий обслуживания. Нажмите Complete Order и перейдите к окну оплаты.

Откроется окно сервиса BitPay. Если потребуется регистрация в этом сервисе — сделайте это, она занимает несколько минут и не требует ввода личных данных. Далее выберите подходящий кошелёк, на котором хранятся ваши цифровые активы. Я рекомендую использовать Electrum Wallet. Показывать пример буду также на нём, предполагая, что вы уже создали его и храните на нём средства.

Когда появится сумма, необходимая к оплате, нажмите «Пополнить кошелёк». Откроется приложение кошелька и сразу после этого — окно транзакции с заполненными данными.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Обязательно зайдите в «Инструменты» > «Настройки» и временно отключите пункт «Использовать возможность замены комиссии» или RBF (Replace-by-fee). Затем в поле «Комиссия» введите число, которое было указано на сайте (черная плашка внизу с надписью Required Fee Rate на изображении выше). Нажмите «Отправка», чтобы отправить транзакцию сразу. Возможно, потребуется ввести пароль от вашего кошелька. 

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Как только транзакция попадёт в сеть, сервис BitPay сообщит об успешной оплате. Вернитесь на CrownCloud.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

На открывшейся странице выберите вкладку Services > My services. Откроется список приобретённых серверов. Сразу после оплаты вы увидите статус Pending — это из-за того, что транзакция попала в сеть, но еще не подтвердилась. После получения первого подтверждения VPS станет активным. Этот процесс занимает не более 20 минут.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Как только удалённая машина станет активна, кликните на неё — вы увидите её IP-адрес, по которому будете подключаться к ней в следующем пункте.

Нажмите на вкладку Hello, <ваш юзернейм>, выберите Email History. Найдите сообщение с темой CrownCloud — New VPS Information и откройте его. Там вы увидите пароль от root-пользователя сервера и данные для панели управления VPS. Запомните их.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Сразу же перейдите в панель управления. Введите пароль и логин, которые получили выше, и выберите Manage под нужным сервером. Нажмите на панель Settings и кликните на кнопку Re-enable TUN/TAP. Подождите 2-3 минуты и переходите к следующему шагу настройки.

Этап №2. Настройка сервера и подключение

Для настройки VPS надо подключиться к нему по SSH-протоколу. Рекомендую использовать для этого программу Termius. Она удобная, простая в использовании и кроссплатформенная.

Скачав её с официального сайта и установив, запускаем и нажимаем кнопку New host. В поле Address вводим IP-адрес выданного сервера — скопировали его ранее. В строке Username пишем root, в поле пароля вводим то, что сохранили ранее из электронного письма внутри сервиса CrownCloud. Сохраняем всё кнопкой Save. Теперь можно подключиться к серверу, дважды кликнув на созданный хост.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Этап №2. Настройка сервера и подключение. 5

Прежде чем выполнять какие-либо действия, я обновляю список доступных к установке пакетов и сами пакеты. Для этого выполняем команду, написав её и нажав Enter:

apt update && apt upgrade -y

Переходим к установке и настройке самого VPN-сервиса.

Этап №3. Установка VPN

На сегодняшний день существует несколько разных протоколов VPN:

  • PPTP — старый протокол, быстрый, но небезопасный, поэтому подойдёт только для просмотра контента, недоступного в некоторых регионах;
  • L2TP/IPSec — безопасен, прост в настройке, но скорость не самая высокая и может блокироваться файрволом;
  • SSTP — проприетарный протокол от Microsoft, который не поддерживается в GNU/Linux нативно;
  • IKEv2 — весьма быстр, стабилен и безопасен, но поддерживается не на всех устройствах;
  • SoftEther — свежий протокол, не поддерживается нативно в системах, но обеспечивает качественное шифрование с высокой скоростью;
  • OpenVPN — быстрый и очень безопасный, но непростой в конфигурации и требует установки специальных приложений;
  • WireGuard — активно развивающийся протокол, внедрена поддержка в ядро Linux, высокопроизводительный и надёжный, прост в развёртывании, хотя и требует установки дополнительных клиентских программ.

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

Для KVM-серверов достаточно установить его командой sudo apt install wireguard -y. Но так как я рассматриваю OpenVZ-решение, то инструкция по установке будет другая. Настройка подключения (четвёртый пункт) будет одинакова для всех вариантов.

Установим некоторые инструменты WireGuard:

apt install wireguard-tools --no-install-recommends

Так как мы используем OpenVZ-сервер, придётся использовать версию WireGuard, написанную на языке Go и не интегрированную в ядро ОС. Это не отразится на опыте использования, но придётся проделать чуть больше действий и скомпилировать утилиту самостоятельно.

Для начала установим среду для выполнения языка Go. По очереди выполните следующие команды:

cd /tmp
wget golang.google.cn/dl/go1.18.linux-amd64.tar.gz
tar zvxf go1.18.linux-amd64.tar.gz
sudo mv go /opt/go1.18
sudo ln -s /opt/go1.18/bin/go /usr/local/bin/go

Загрузим и скомпилируем wireguard-go. Последняя версия, которая без проблем запустилась у меня — 0.0.20201118. Последовательно введите команды:

cd /usr/local/src
wget git.zx2c4.com/wireguard-go/snapshot/wireguard-go-0.0.20201118.tar.xz
tar xvf wireguard-go-0.0.20201118.tar.xz
cd wireguard-go-0.0.20201118 

Скомпилируем и «установим»:

make
sudo cp wireguard-go /usr/local/bin

Проверьте, установилось ли всё успешно, командой wireguard-go --version. Если появится сообщение с версией, можно переходить к следующему этапу.

Откройте файл в редакторе текста:

vi /lib/systemd/system/wg-quick@.service

Нажмите клавишу i — внизу должна появиться надпись INSERT. Найдите строчку:

Environment=WG_ENDPOINT_RESOLUTION_RETRIES=infinity

Под этой строчкой вставьте другую сочетанием клавиш Ctrl+Shift+V:

Environment=WG_I_PREFER_BUGGY_USERSPACE_TO_POLISHED_KMOD=1 

Нажмите клавишу Esc, введите :wq и нажмите Enter.

Если вы незнакомы с vi или просто предпочитаете более простой редактор текста, установите nano — он пригодится далее:

apt install nano

Этап №4. Конфигурация VPN

Сгенерируем пару ключей для сервера. server_privatekey — это название файла с приватным ключом сервера, server_publickey — файл с публичным ключом сервера:

wg genkey | tee server_privatekey | wg pubkey > server_publickey

Для каждого клиентского устройства также создадим пару ключей. Это можно сделать и позже, но тогда придётся возвращаться к файлу конфигурации и редактировать его. 1 устройство — 1 выполнение команды ниже и, соответственно, 1 пара ключей. Не забывайте для каждого девайса менять названия файлов в команде. Во всех командах я выделил жирным то, что можно заменить. Например, для второго клиента могут быть client2_privatekey и client2_publickey. Опять же, название можно дать любое, главное, чтобы оно не повторялось и позволяло различить тип ключа и девайс. Я сгенерирую только для одного смартфона:

wg genkey | tee client_privatekey | wg pubkey > client_publickey

Выполним следующую команду для того, чтобы вывести сразу все сгенерированные ключи для сервера и клиента. Если у вас несколько клиентских устройств, то добавьте в конец команды названия всех созданных для них файлов и только потом выполните её. Например, если у вас 3 клиента, напишите cat server_privatekey server_publickey client1_privatekey client1_publickey client2_privatekey client2_publickey client3_privatekey client3_publickey.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Этап №3. Конфигурация VPN. 1

Сохраним полученное содержимое в отдельный текстовый файл allKeys.txt на основном компьютере. Каждые две строки — это пара ключей. Первый — приватный, второй — публичный. Соответственно, первая пара — это ключи сервера, другие пары ключей принадлежат клиентам:

cat server_privatekey server_publickey client_privatekey client_publickey

Создадим конфигурационный файл:

nano /etc/wireguard/wg0.conf

Вставим в него следующее содержимое, заменив <PRIV_SERV> строкой из сохранённого текстового файла allKeys.txt со всеми ключами (самая первая строчка), а <PUB_CLIENT> — строкой оттуда же, но для клиентского устройства (второй ключ в паре).

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Этап №3. Конфигурация VPN. 2

Для каждого клиентского устройства надо добавить раздел Peer по подобному принципу, указав IP-адрес, отличающийся четвёртым числом от ранее введённых (например, для второго клиента я введу AllowedIPs = 10.0.0.3/32, для третьего — AllowedIPs = 10.0.0.4/32 и так далее), и добавив его публичный ключ:

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <PRIV_SERV>
PreUp = iptables --table nat --append POSTROUTING --jump MASQUERADE --out-interface venet0
PreDown = iptables --table nat --delete POSTROUTING --jump MASQUERADE --out-interface venet0
[Peer]
PublicKey = <PUB_CLIENT>
AllowedIPs = 10.0.0.2/32
[Peer]
PublicKey = <PUB_CLIENT2>
AllowedIPs = 10.0.0.3/32

Сохраним файл комбинацией клавиш Ctrl+X, нажмем Y и подтвердим клавишей Enter. Запустим сервис и сразу добавим его в автозапуск, чтобы VPN автоматически стартовал после перезагрузки сервера:

systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0

Готово, можно подключаться с клиентского устройства.

Подключение к VPN

Подключение настроенного VPN требует установки специального приложения WireGuard на клиентское устройство. Оно доступно на все популярные десктопные и мобильные девайсы.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Подключение к VPN. 1

Android/iOS

Если нужно подключить смартфон, то наиболее удобным вариантом будет создание файла конфигурации прямо на VPS с последующей генерацией и сканированием QR-кода. Для этого введём через всё тот же Termius команду:

sudo apt install qrencode -y

Создадим файл конфигурации. Каждому новому устройству — новый файл конфигурации с уникальным именем (к примеру, client2.conf):

sudo nano client.conf

Вставим в файл содержимое, заменив <PRIV_CLIENT> на приватный ключ клиента (client_privatekey), сгенерированный ранее и сохранённый в отдельный файл allKeys.txt на основной машине. Вместо <PUB_SERV> подставим публичный ключ сервера (server_publickey) из того же файла. В Endpoint заменим <IP> на IP-адрес сервера (использовали его для подключения через Termius, нашли на шаге 11). В строке DNS можно указать желаемые DNS-сервера. Я выбрал DNS от Google.

[Interface]
Address = 10.0.0.2/32
PrivateKey = <PRIV_CLIENT>
DNS = 8.8.8.8, 8.8.4.4
[Peer]
PublicKey = <PUB_SERV>
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = <IP>:51820

Сохраним файл комбинацией клавиш Ctrl+X, нажмем Y и подтвердим клавишей Enter. Сгенерируем QR-код: 

qrencode -t ansiutf8 < client.conf

QR-код отсканируем в мобильном приложении, дадим имя туннелю и подключим VPN. Если всё прошло успешно, на любом сайте для проверки IP (например, ipleak.net) будет отображаться адрес удалённого сервера.

Windows/macOS

Что касается компьютеров на Windows и macOS, файл конфигурации с расширением .conf лучше создать в любом текстовом редакторе на самом клиенте. Его содержимое будет аналогично тому, что предлагается выше для мобильных устройств. Только пункт с созданием QR-кода можно пропустить. Созданный файл импортируем в приложении WireGuard кнопкой Add Tunnel и активируем.

GNU/Linux

На компьютере с операционной системой GNU/Linux установим WireGuard таким же образом, каким установили его на сервер:

sudo apt install wireguard -y

Не забываем настроить пересылку трафика:

sudo sed -i 's/\#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf

И сразу же обновим конфигурацию:

sudo sysctl -p

На машине с Ubuntu 20.04 LTS мне пришлось установить дополнительный пакет, так как без него возникала ошибка:

sudo apt install openresolv

Создадим всё тот же файл конфигурации:

sudo nano /etc/wireguard/wg0.conf

Только в этот раз вставим в него содержимое, которое я указал чуть выше для мобильных устройств. Сохраним файл комбинацией клавиш Ctrl+X, нажмем Y и подтвердим клавишей Enter. Активируем VPN:

sudo wg-quick up wg0

Отключить VPN так же просто:

sudo wg-quick down wg0
Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Подключение к VPN. 7

Для экономии времени я советую создать псевдонимы (aliases). Они позволят вместо таких комплексных команд вводить простые: wgon для подключения к VPN и wgoff для отключения. Откроем файл, который определяет конфигурацию терминала при запуске:

nano ~/.bashrc

Добавим в самый конец несколько строк:

# Aliases for WireGuard
alias wgon='sudo wg-quick up wg0'
alias wgoff='sudo wg-quick down wg0'

Сохраним файл комбинацией клавиш Ctrl+X, нажмем Y и подтвердим клавишей Enter.

Последнее изменение:
 
KARPILOS
KARPILOS, 23 марта 2022, 10:58   (...)
Гораздо лучше потратить немного времени и настроить собственный VPN-сервер, чем платить сторонним сервисам. А плата за аренду сервера в 3 евро в месяц, это разве не «платить сторонним сервисам»?)

В чем выгода по сравнению с платными vpn, где настройка ограничивается кнопкой вкл/выкл, на выбор предоставляется множество серверов в разных странах и всё это в пределах 3-5 тыс рублей в год?
Ответить
cartacortada
cartacortada, 23 марта 2022, 21:34   (...)
Многие vpn-сервисы тоже блокируются в Росси, да и не только. Шансы, что заблокируют созданный лично вами близки к нулю. Есть ограничения на количество подключённых клиентов, для своего внп таких ограничений нет. Опять же, свой впн можно довольно тонко настраивать, чтобы не включать-выключать его каждый раз, когда нужно зайти на госуслуги или заплатить картой.
Из минусов — нельзя выбрать страну, в которой находится впн-сервер, но сценариев, когда это действительно нужно, не так уж и много.
Ответить
mjkalinin
mjkalinin, 20 июня 2022, 07:59   (...)
купил раз платный, да сразу на год, весь год промучался. Всегда низкая скорость при моем домашнем в 100 мегабит. С собственным VPN все ок, а вопрос настройки тоже решаем — есть готовые opensource решения с установкой в пару кликов и «кнопкой вкл/выкл».
Пример: vc.ru/services/390426-svoy-vpn-v-dva-prostyh-shaga-instrukciya
Ответить
tzdeadbeef
tzdeadbeef, 23 марта 2022, 11:09   (...)
Тухляк а не инструкция. Покупаем сервер, параллельно качаем Outline VPN. Когда сервер готов подключаемся к нему, копи-пейст команды из скачанного Outline VPN, копи-пейст результата обратно в Outline VPN, ждём 5 минут и параллельно ставим на телефон ту же программу из Google Play или App Store. Когда готово в программе на пк создаём ключ в один клик, отправляем на телефон — и все работает.
Ответить
cartacortada
cartacortada, 23 марта 2022, 21:27   (...)
Было бы здорово, если бы вы дополнили инструкцию фильтрами в настройке vpn- клиента, чтобы через vpn шёл только тот трафик, который в этом нуждается, а например всю зону.ru оставлял как есть. Тогда не приходилось бы включать-выключать vpn, каждый раз когда нужно что-то оплатить, заказать такси, припарковаться и прочее
Ответить
satoshiaraki98
satoshiaraki98, 24 марта 2022, 01:01   (...)
Ого, у Amazon так много трафика даётся на Free Tier? Там же раньше буквально копейки в месяц давались, вроде даже меньше 10 ГБ, меньше чем у Google Cloud.
Ответить
kuks68
kuks68, 27 марта 2022, 00:58   (...)
После первого абзаца про любого неопытного пользователя..., дальше не стал читать, не потому, что не способен, просто нет необходимости и, возможно, есть более простые решения.
Ответить
dimitryrashitov
dimitryrashitov, 27 марта 2022, 17:23   (...)
Дайте ПОЖАЛУЙСТА, ссылку на предыдущую инструкцию с Amazon. Спасибо
Ответить
Astramak
Astramak, 27 марта 2022, 19:22   (...)
ссылка прежняя, контент поменялся и его не вернуть
Ответить
dimitryrashitov
dimitryrashitov, 27 марта 2022, 23:23   (...)
Жаль,… (((
Ответить
azat92r
azat92r, 1 апреля 2022, 10:21   (...)
Здравствуйте! а скажите пожалуйста как проверить сервер на работоспособность (дело в том что у нас в стране много блокируют сервер таких как использованных качестве vpn сервере)? я вроде сделал по инструкцию и подключается к серверу но трафик не идет вообще в чем может быть причина server Debian виртуализация KVM?
Ответить
persone
persone, 17 апреля 2022, 20:30   (...)
Вы не могли бы мне за деньги все это настроить?
Ответить
persone19
persone19, 11 мая 2022, 20:48   (...)
А вы не могли бы мне сделать этот VPN за деньги под ключ?
Ответить
Serzh2022
Serzh2022, 13 мая 2022, 16:59   (...)
Предпочёл без особо тяжелоёмких заморочек скачать VPN себе на смартфон и сейчас пользуюсь им в России с заграничного сервера в иностранном государстве.
Ответить
pavelk1676
pavelk1676, 14 июня 2022, 19:51   (...)
После ввода " wg genkey | tee server_privatekey | wg pubkey > server_publickey " ничего не происходит. Что делать?
Ответить
Ivan2022
Ivan2022, 8 июля 2022, 20:02   (...)
Делал VPN на DigitalOcean. Скорость минимальная. Годится только для серфинга.
Ответить
dimitryrashitov
dimitryrashitov, 25 сентября 2022, 14:42   (...)
Может быть сделаете еще методичку на прошлую инструкцию на AWS Amazon?
Сейчас можно обойти ограничение прикрутив виртуальную карту Турецких банков
OlduBil и Iyzico. С номером для смс при регистрации по-сложнее (виртуальные симки и службы одноразовых смс не рекомендую использовать, можно нарваться на доп проверку и тогда вас направят на звонок от поддержки, проще найти симку из стран СНГ или за границей у знакомых или кто на отдыхе)
Немного поменялся интерфейс панели AWS тоже актуально, а то неделями сижу и с разных ресурсов копаю инфу и пытаюсь настроить. Ваш туториал был самый простой и рабочий. Спасибо!
Ответить

Добавить комментарий
Если нужно ответить кому-то конкретно,
лучше нажать на «Ответить» под его комментарием