Многие платные VPN-приложения очень требовательны к ресурсам, а бесплатные приложения не обеспечивают достойную пропускную способность канала. В этой статье мы покажем как быстро, а главное — с минимальными затратами, создать и настроить собственный VPN-сервер с расположением в Таллине.
Заказ виртуального сервера
Для нашего VPN-сервера подойдет виртуальный сервер на базе Open source под управлением Ubuntu 20.04 в минимальной конфигурации (1 CPU, 1GB RAM, 10GB SSD) расположенный в Таллине.
После создания сервера зайдите на него любым удобным для вас способом и обновите репозитории пакетного менеджера 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.
Закажите сервер на базе Open source
Виртулаьный сервер на базе Open source подойдет не только для создания VPN-сервера, но и под другие задачи: веб-хостинг, создание FTP-хранилища или центра мониторинга и т.д. Создать VPS с нужной конфигурацией вы можете в Панели 1cloud за несколько минут.
Теперь с помощью любого текстового редактора создайте конфигурационный файл для WireGuard с расширением .conf в директории /etc/wireguard/. Например, wg0.conf.
Почти в любом современном дистрибутиве 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
Настройка клиентской части начинается с создания пары ключей для подключения клиента к 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 через Windows-клиент. Скачать клиент можно для любой ОС: Windows, macOS, Android, iOS. После установки клиента выберите созданный ранее клиентский конфиг и нажмите кнопку «подключить».
Если конфигурация настроена верно, вы увидите зелёный индикатор возле названия конфигурационного файла и статус Подключен.
Как убедиться в том, что VPN работает?
Перед подключением к VPN посетите сайт: https://ifconfig.me/. Это бесплатный и простой сервис, отражающий ваш текущий IP-адрес. До подключения к WireGuard серверу IP-адрес будет одним, а после подключения он изменится на IP-адрес, выданный вашему виртуальному серверу в Таллине:
Если IP-адреса совпали — значит VPN работает исправно. Теперь вы можете создавать сколько угодно клиентских конфигов для подключения к вашему VPN серверу для разных устройств.
Краткое резюме
WireGuard VPN — это бесплатный, легковесный и легко настраиваемый VPN-сервер. Всё, что нужно для его работы — это виртуальный сервер в минимальной конфигурации с Линуксом на борту.
Создаётся WireGuard VPN сервер в несколько простых шагов:
- Приобретается виртуальный сервер. В нашем случае — это VPS на базе Open source под управлением Ubuntu 20.04 в минимальной конфигурации.
- Устанавливается WireGuard сервер и создаются конфигурационные файлы. Краткая инструкция здесь.
- Тестируется VPN-соединение с помощью бесплатного сервиса ifconfig.me
На этом всё! Теперь у вас есть простой, надёжный и функциональный VPN, к которому можно подключать любое количество устройств, при этом единственная статья расходов — это аренда VPS, по очень скромной цене для клиентов 1cloud.