WireGuard VPN на своем сервере: подробная инструкция
VPN или Virtual Private Network — это технология подключения в сеть, при котором происходит шифрование данных. VPN является надежным средством защиты приватности при обмене информацией в интернете. Подключение к VPN происходит поверх обычного соединения. Ниже перечислим некоторые преимущества использования VPN:
- Обеспечение конфиденциальности данных пользователей в сети;
- Безопасное подключение к общественным Wi-Fi-сетям и не только;
- Дополнительный уровень безопасности и защиты данных при использовании облачных сервисов.
WireGuard VPN — это протокол VPN, разработанный с целью обеспечения безопасной и эффективной передачи данных в интернете. Как заявляет разработчик, он чрезвычайно простой, но в то же время быстрый и инновационный. Изначально он был доступен только для ОС семейства Linux, но немногим позже стал кроссплатформенным. Ниже перечислим основные его преимущества:
- Бесплатный и легкий в использовании;
- Использует передовые криптографические алгоритмы и оптимизирован для обеспечения максимальной скорости обмена данными;
- Обеспечивает достойный уровень безопасности за счет использования новейших алгоритмов шифрования и механизмов аутентификации.
В настоящей статье будет представлена подробная пошаговая инструкция по установке WireGuard VPN, включая дальнейшую его настройку со стороны сервера и со стороны пользователей. Все действия будут выполнены на облачном сервере нашей компании, который вы можете заказать по этой ссылке.
В статье, для поднятия сервера WireGuard VPN, была выбрана Ubuntu 22.04. Клиентская версия данного ПО будет установлена на Windows 10.
А если не хочется заниматься ручной настройкой — в Timeweb Cloud вы можете заказать сервер с готовым образом WireGuard. VPN-сервер будет установлен и настроен автоматически, и вам останется только настроить подключение.
Скачивание WireGuard VPN и конфигурация серверной части
Шаг 1. Чтобы поднять свой WireGuard VPN, необходимо в первую очередь выполнить подключение к своему облачному серверу, используя протокол SSH. Команда для подключения представлена ниже:
ssh user_name@Server_IP-address
Если возникнут сложности, вы можете воспользоваться нашей инструкцией, чтобы правильно произвести подключение.
Шаг 2. Как только подключение будет выполнено, переходим к следующему шагу — обновлению существующих пакетов apt
. Для этого в терминале выполним следующую команду:
sudo apt update
После начнется процесс обновления пакетов, который продемонстрирован на картинке ниже.
Шаг 3. Как только все пакеты будут обновлены, начинаем загрузку собственного WireGuard VPN. Вводим в терминал системы команду, представленную ниже:
sudo apt install wireguard
После выполнения команды начнется процесс установки. На все вопросы системы во время скачивания отвечаем утвердительно.
Шаг 4. Как только закончится скачивание всех файлов, переходим в главный каталог устанавливаемого ПО. Он находится по следующему адресу:
cd /etc/wireguard/
Это нужно для того, чтобы дальнейшая настройка сервера, включая создание ключей и редактирование конфига, происходила именно в каталоге установленного VPN-сервиса. Здесь будут храниться все создаваемые ключи сервера и его пользователей, а также главный конфиг, которые мы будем рассматривать немного позже.
Шаг 5. На данном этапе мы приступаем к созданию пары ключей для нашего сервера, которые будут нужны для настройки безопасного соединения. Сделать это возможно способом, представленным ниже:
wg genkey | tee /etc/wireguard/server_privatekey | wg pubkey | tee /etc/wireguard/server_publickey
Опишем ключевые элементы команды:
wg genkey
— отвечает за генерацию закрытого ключа;wg pubkey
— отвечает за генерацию открытого ключа;|
— в первом и третьем случае служит для передачи ключа командеtee
. Второе использование|
необходимо для генерации открытого ключа на основе ранее полученного закрытого;tee
— записывает значения ключей в указанные после команды файлы.
Как итог, мы получим пару ключей, которые потребуются для последующей конфигурации сервера.
Чтобы изучить содержимое файлов с ключами, вводим в строку терминала:
cat server_privatekey
cat server_publickey
Как видно по картинке ниже, пара ключей успешно сгенерирована.
На данном этапе также нужно выполнить копирование приватного ключа. Он понадобится при настройке VPN-сервера WireGuard в следующем шаге.
Шаг 6. От правильной настройки главного конфигурационного файла VPN-сервера зависит успешность его дальнейшей работы. Сюда входят следующие настройки:
- Добавление закрытого ключа сервера;
- Указание IP-адреса сервера;
- Указание порта для прослушивания сервера;
- Набор команд для включения и отключения сервера.
Перед началом редактирования конфига, определим имя своего сетевого интерфейса. В строку терминала напишем:
ip a
В результате будет выведен список интерфейсов, среди которых нужно найти тот, что имеет IP-адрес текущего подключения.
Чтобы создать свой VPN-сервер WireGuard, перейдем к редактированию конфига:
sudo nano wg0.conf
Ниже приведем синтаксис данных в файле, достаточный для запуска:
[Interface]
PrivateKey = <закрытый_ключ>
Address = <IP-адрес_сервера>
ListenPort = <Порт>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <Интерфейс> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <Интерфейс> -j MASQUERADE
Порядок заполненных данных соответствует порядку списка, который мы приводили в начале этого шага.
Шаг 7. Далее произведем настройку IP forwarding:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
Затем сразу проверим внесенные изменения:
sysctl -p
Как видно по картинке выше, все прошло успешно.
Шаг 8. Заключительным шагом данного раздела будет настройка правил запуска.
Автозапуск сервера при включении системы настраивается следующим образом:
systemctl enable wg-quick@wg0.service
Для включения VPN-сервера, вводим в терминал:
systemctl start wg-quick@wg0.service
И наконец, чтобы проверить работу сервера:
systemctl status wg-quick@wg0.service
Как видно по картинке выше, VPN-сервер успешно запущен и функционирует. На этом шаге создание VPN-сервера WireGuard и его настройка окончена.
Настройка клиентской части WireGuard VPN
Шаг 1. Чтобы пользователь мог пользоваться только что созданным собственным VPN-сервером WireGuard, необходимо создать для него ключи. Выполнить это можно также на сервере.
Для этого воспользуемся ранее рассмотренной командой:
wg genkey | tee /etc/WireGuard/user1_privatekey | wg pubkey | tee /etc/WireGuard/user1_publickey
Чтобы в будущем не было путаницы, старайтесь называть файлы с ключами уникальными именами.
Сразу копируем открытый ключ пользователя. Он понадобится нам в следующем этапе.
Теперь в папке wireguard
находится 4 ключа и конфигурационный файл, как показано на рисунке ниже.
Шаг 2. Теперь, когда ключи созданы, переходим к доработке ранее созданного конфига сервера. Для этого открываем наш файл конфигурации:
nano wg0.conf
Нам нужно добавить настройки для соответствующего пользователя. Ниже представлен синтаксис этих настроек:
[Peer]
PublicKey = <Открытый_ключ_клиента>
AllowedIPs = <Разрешенный_IP_адрес_для_клиента>
AllowedIPs выбирается из того же диапазона IP, что был указан для сервера.
На картинке ниже приведен пример итогового файла конфигурации для сервера.
Шаг 3. После внесения всех изменений перезагружаем сервер WireGuard. Это нужно делать каждый раз при внесении корректировок в свой конфиг.
systemctl restart wg-quick@wg0
Шаг 4. Проверяем, что после внесенных изменений сервер успешно работает:
systemctl status wg-quick@wg0
Шаг 5. Переходим к установке необходимого ПО на компьютер клиента. Выполнить загрузку можно с сайта компании-разработчика.
Шаг 6. Теперь необходимо организовать пользовательский конфиг для подключения к VPN-серверу. Для этого на своем устройстве создадим специальный файл с расширением .conf
— его название может быть произвольным, например, vpnwg.conf.
Синтаксис файла представлен ниже:
[Interface]
PrivateKey = <Закрытый_ключ_клента>
Address = <IP-адрес_клиента>
DNS = 8.8.8.8
[Peer]
PublicKey = <Публичный_ключ_сервера>
Endpoint = <IP-адрес_сервера>:<Порт>
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20
Здесь предпоследняя строка отвечает за контроль трафика, проходящего через указанный интерфейс, а последняя — за период проверки соединения.
Строка AllowedIPs = 0.0.0.0/0
означает, что весь трафик будет маршрутизироваться через VPN. Так как мы указали именно такое значение AllowedIPs, то в этом случае указываем DNS = 8.8.8.8
(8.8.8.8 — DNS-сервер Google), чтобы DNS-запросы выполнялись через защищенное VPN-соединение.
Подобные настройки конфига помогут пользователю скрыть свой реальный IP-адрес при работе в интернете. У вас рассмотренные параметры могут отличаться, в зависимости от поставленных целей.
На картинке ниже приведен пример итогового файла конфигурации для клиента.
Шаг 7. Следующим шагом загрузим только что созданный пользовательский конфиг в WireGuard. Для этого нажимаем на кнопку «Импорт туннелей из файла», как показано на рисунке ниже.
Шаг 8. После добавления файла перед вами откроется следующее окно:
Здесь необходимо нажать кнопку «Подключить». После этого в поле «Статус» появится надпись «Подключен», если все было выполнено верно.
Чтобы окончательно проверить работу VPN-сервера — проверьте свой IP после запуска на любом доступном ресурсе. Он должен совпадать с IP-адресом сервера.
Интересные и полезные факты о WireGuard VPN
- WireGuard разработан с акцентом на минималистичность. Он состоит всего из 4000 строк кода, что делает его легким для аудита и понимания. Это уменьшает возможность наличия ошибок и упрощает процесс разработки и обновление ПО.
- Данный VPN является частью ядра Linux с версии 5.6, что обеспечивает прямую интеграцию и высокую совместимость с операционными системами на базе Linux.
- WireGuard полностью совместим с IPv6, следуя современным стандартам. Данный факт означает, что его можно использовать в сетях с IPv6, без необходимости перехода на IPv4.
- Данный VPN не ограничивается только Linux-ядрами. Он также поддерживает ядра других операционных систем, например Windows, macOS или Android.
- К сожалению, главным минусом WireGuard является отсутствие в нем возможности настроить работу с использованием HTTP-прокси, т.к. он работает через UDP-протокол.
- Проведенные тесты показали, что скорость передачи данных в WireGuard быстрее, чем в OpenVPN.
Заключение
В данной статье мы представили подробную инструкцию по установке WireGuard VPN на свой сервер: скачали соответствующее ПО, а затем провели полную настройку как серверной, так и клиентской части. Надеемся, что данная инструкция была полезна и вы с легкостью сможете настроить VPN-сервер для своих потребностей.