adblock check

Делаем собственный 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.

Krokodil707 Krokodil707
>_<。
19 комментариев по лайкам по дате
Оставьте комментарий...
Оставьте комментарий...
KARPILOS 2 года
Гораздо лучше потратить немного времени и настроить собственный VPN-сервер, чем платить сторонним сервисам. А плата за аренду сервера в 3 евро в месяц, это разве не «платить сторонним сервисам»?)

В чем выгода по сравнению с платными vpn, где настройка ограничивается кнопкой вкл/выкл, на выбор предоставляется множество серверов в разных странах и всё это в пределах 3-5 тыс рублей в год?
mjkalinin 1 год
купил раз платный, да сразу на год, весь год промучался. Всегда низкая скорость при моем домашнем в 100 мегабит. С собственным VPN все ок, а вопрос настройки тоже решаем — есть готовые opensource решения с установкой в пару кликов и «кнопкой вкл/выкл».
Пример: vc.ru/services/390426-svoy-vpn-v-dva-prostyh-shaga-instrukciya
cartacortada 2 года
Многие vpn-сервисы тоже блокируются в Росси, да и не только. Шансы, что заблокируют созданный лично вами близки к нулю. Есть ограничения на количество подключённых клиентов, для своего внп таких ограничений нет. Опять же, свой впн можно довольно тонко настраивать, чтобы не включать-выключать его каждый раз, когда нужно зайти на госуслуги или заплатить картой.
Из минусов — нельзя выбрать страну, в которой находится впн-сервер, но сценариев, когда это действительно нужно, не так уж и много.
atlantisspb2015 9 месяцев
При установке среды Go на сервер, выскакивает ошибка что файлы не найдены, не подскажите в чем может быть проблема, всё делаю по инструкции?
Может быть сделаете еще методичку на прошлую инструкцию на AWS Amazon?
Сейчас можно обойти ограничение прикрутив виртуальную карту Турецких банков
OlduBil и Iyzico. С номером для смс при регистрации по-сложнее (виртуальные симки и службы одноразовых смс не рекомендую использовать, можно нарваться на доп проверку и тогда вас направят на звонок от поддержки, проще найти симку из стран СНГ или за границей у знакомых или кто на отдыхе)
Немного поменялся интерфейс панели AWS тоже актуально, а то неделями сижу и с разных ресурсов копаю инфу и пытаюсь настроить. Ваш туториал был самый простой и рабочий. Спасибо!
Ivan2022 1 год
Делал VPN на DigitalOcean. Скорость минимальная. Годится только для серфинга.
pavelk1676 1 год
После ввода " wg genkey | tee server_privatekey | wg pubkey > server_publickey " ничего не происходит. Что делать?
Serzh2022 1 год
Предпочёл без особо тяжелоёмких заморочек скачать VPN себе на смартфон и сейчас пользуюсь им в России с заграничного сервера в иностранном государстве.
persone19 1 год
А вы не могли бы мне сделать этот VPN за деньги под ключ?
persone 2 года
Вы не могли бы мне за деньги все это настроить?
azat92r 2 года
Здравствуйте! а скажите пожалуйста как проверить сервер на работоспособность (дело в том что у нас в стране много блокируют сервер таких как использованных качестве vpn сервере)? я вроде сделал по инструкцию и подключается к серверу но трафик не идет вообще в чем может быть причина server Debian виртуализация KVM?
dimitryrashitov 2 года
Дайте ПОЖАЛУЙСТА, ссылку на предыдущую инструкцию с Amazon. Спасибо
Astramak 2 года
Mi A1
ссылка прежняя, контент поменялся и его не вернуть
kuks68 2 года
После первого абзаца про любого неопытного пользователя..., дальше не стал читать, не потому, что не способен, просто нет необходимости и, возможно, есть более простые решения.
satoshiaraki98 2 года
Ого, у Amazon так много трафика даётся на Free Tier? Там же раньше буквально копейки в месяц давались, вроде даже меньше 10 ГБ, меньше чем у Google Cloud.
cartacortada 2 года
Было бы здорово, если бы вы дополнили инструкцию фильтрами в настройке vpn- клиента, чтобы через vpn шёл только тот трафик, который в этом нуждается, а например всю зону.ru оставлял как есть. Тогда не приходилось бы включать-выключать vpn, каждый раз когда нужно что-то оплатить, заказать такси, припарковаться и прочее
tzdeadbeef 2 года
Тухляк а не инструкция. Покупаем сервер, параллельно качаем Outline VPN. Когда сервер готов подключаемся к нему, копи-пейст команды из скачанного Outline VPN, копи-пейст результата обратно в Outline VPN, ждём 5 минут и параллельно ставим на телефон ту же программу из Google Play или App Store. Когда готово в программе на пк создаём ключ в один клик, отправляем на телефон — и все работает.
elidfam 1 год
А можно ли там настроить Triple VPN?
Оставьте комментарий...
Оставьте комментарий...