WireGuard VPN — бесплатный и простой VPN

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

Заказ виртуального сервера

Для нашего VPN-сервера подойдет виртуальный сервер на базе Open source под управлением Ubuntu 20.04 в минимальной конфигурации (1 CPU, 1GB RAM, 10GB SSD) расположенный в Таллине.

VPS/VDS Open source

После создания сервера зайдите на него любым удобным для вас способом и обновите репозитории пакетного менеджера apt командой: sudo apt update && apt upgrade -y. Когда у нас есть виртуальный сервер с обновленными пакетами, мы можем приступать к установке и настройке VPN.

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

Установим WireGuard VPN сервер: apt install -y wireguard. Сгенерируем публичный и приватный ключ для WireGuard сервера:

wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

Команды wg genkey и wg pubkey генерируют ключи, а команда tee выводит на экран ключ и сохраняет его в файл. После выполнения указанных команд в директории /etc/wireguard/ появятся 2 файла: privatekey и publickey.

Теперь с помощью любого текстового редактора создайте конфигурационный файл для WireGuard с расширением .conf в директории /etc/wireguard/. Например, wg0.conf.

Статья по VIM

Почти в любом современном дистрибутиве Linux есть два текстовых редактора: Nano и VIM. Нам нравится VIM. Это мощный и функциональный текстовый редактор, правда, со своими особенностями, которые могут отпугнуть. В нашей базе знаний есть подробная статья, которая поможет вам разобраться в особенностях работы в VIM.

 

Вот как должен выглядеть конфиг внутри:

[Interface]
PrivateKey = <приватный ключ из файла private>
Address = 10.0.0.1/24 # адрес VPN-сервера в частной сети
ListenPort = 51830 #порт, который будет слушать VPN-сервер
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # набор команд, которые будут выполнены при запуске сервиса
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE #набор команд, которые будут выполнены при выключении сервиса

Настроим Ip-forwarding для прокидывания трафика в Интернет:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

Проверим, что настройки применились командой: sysctl -p. Вывод команды должен быть следующим:

Настроим systemd для автоматического запуска WireGuard при запуске сервера:

systemctl enable wg-quick@wg0.service

Ответ команды будет таким:

Created symlink /etc/systemd/system/multi-user.target.wants/wg-quick@wg0.service → /lib/systemd/system/wg-quick@.service.

Запустим WireGuard и проверим его статус:

systemctl start wg-quick@wg0.service
systemctl status wg-quick@wg0.service

Команда systemctl status wg-quick@wg0.service должна вернуть отчет следующего вида:

Статус сервиса должен быть: active

Когда WireGuard server поднят и работает исправно, мы переходим к созданию клиентского конфигурационного файла для подключения.

Создание клиентского конфига WireGuard

Создание клиентского конфига WireGuard

Настройка клиентской части начинается с создания пары ключей для подключения клиента к VPN-серверу на сервере:

wg genkey | tee /etc/wireguard/katkov_privatekey | wg pubkey | tee /etc/wireguard/katkov_publickey

В директории /etc/wireguard у нас 5 файлов:

.
├── katkov_privatekey
├── katkov_publickey
├── privatekey
├── publickey
└── wg0.conf

Добавим нового клиента в конфигурационный файл wg0.conf:

[Peer]
PublicKey = <публичный ключ клиента (katkov_publickey)>
AllowedIPs = 10.0.0.2/32 # IP-адрес клиента в приватной сети

Перезапустим WireGuard сервер для применения настроек и проверим его статус:

systemctl restart wg-quick@wg0
systemctl status wg-quick@wg0

Статус сервиса должен быть — active.

Создадим на подключаемом устройстве конфигурационный файл для клиентской части сервиса. Внутри он выглядит так:

[Interface]
PrivateKey = <приватный ключ клиента (katkov_privatekay)>
Address = 10.0.0.2/32
DNS = 8.8.8.8
[Peer]
PublicKey = <публичный ключ сервера (publickey)>
Endpoint = <IP-адрес сервера>:51830
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20

У нас создан конфигурационный файл для подключения к WireGuard серверу.

Подключение к WireGuard серверу

Подключение к WireGuard серверу

WireGuard имеет клиенты почти для всех десктопных и мобильных ОС. Подключимся к созданному нами серверу WireGuard через Windows-клиент. Скачать клиент можно для любой ОС: Windows, macOS, Android, iOS. После установки клиента выберите созданный ранее клиентский конфиг и нажмите кнопку «подключить».

Подключение к WireGuard серверу

Если конфигурация настроена верно, вы увидите зелёный индикатор возле названия конфигурационного файла и статус Подключен.

 

Как убедиться в том, что VPN работает?

Перед подключением к VPN посетите сайт: https://ifconfig.me/. Это бесплатный и простой сервис, отражающий ваш текущий IP-адрес. До подключения к WireGuard серверу IP-адрес будет одним, а после подключения он изменится на IP-адрес, выданный вашему виртуальному серверу в Таллине:

Как убедиться в том, что VPN работает?

Если IP-адреса совпали — значит VPN работает исправно. Теперь вы можете создавать сколько угодно клиентских конфигов для подключения к вашему VPN серверу для разных устройств.

Краткое резюме

WireGuard VPN — это бесплатный, легковесный и легко настраиваемый VPN-сервер. Всё, что нужно для его работы — это виртуальный сервер в минимальной конфигурации с Линуксом на борту.

Создаётся WireGuard VPN сервер в несколько простых шагов:

  • Приобретается виртуальный сервер. В нашем случае — это VPS на базе Open source под управлением Ubuntu 20.04 в минимальной конфигурации.
  • Устанавливается WireGuard сервер и создаются конфигурационные файлы. Краткая инструкция здесь.
  • Тестируется VPN-соединение с помощью бесплатного сервиса ifconfig.me

На этом всё! Теперь у вас есть простой, надёжный и функциональный VPN, к которому можно подключать любое количество устройств, при этом единственная статья расходов — это аренда VPS, по очень скромной цене для клиентов 1cloud.