Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

В начале я расскажу как, ну а потом уже зачем использовать WireGuard для построения VPN туннелей. В этой статье я подробно опишу как «связать» между собой внешний сервер с операционной системой Debian и домашний маршрутизатор серии Keenetic.

Как установить WireGuard на Debian или Ubuntu

В репозиториях Debian 10 и Ubuntu 20.04 уже есть пакет WireGuard, поэтому для его установки вам достаточно выполнить одну команду:

# apt install wireguard

или

$ sudo apt install wireguard

в зависимости от ваших привилегий в операционной системе.

 

Как создать публичный и приватный ключи WireGuard

После того как демон (сервис) WireGuard установлен для организации VPN тоннеля необходимо для каждого устройства создать два ключа: приватный и публичный. В минимальной конфигурации из 2-х участников всего нам понадобятся 4 ключа.

Ключи можно создать на любом устройстве как индивидуально только для него, так и для всех устройств сразу. Команда создания ключей одна, при каждом запуске она создает новый уникальный ключ (пару ключей).

Публичный ключ создается на основе приватного.

Ключ — это просто строка (набор символов), которую мы будем указывать в файлах конфигурации VPN WireGuard. Сгенерированные строки мы запишем в файлы с уникальными названиями, чтобы потом их (строки с набором символов) оттуда взять. Сами файлы ключей напрямую нигде не использутся.

 

Создадим приватный и публичный ключи на сервере с операционной системой Debian

Для удобства сделаем отдельную директорию для хранения файлов ключей:

cd ~

mkdir wireguard

cd wireguard

А затем создадим ключи для сервера и сохраним их.

wg genkey | tee unit1-private.key | wg pubkey > unit1-public.key

Аналогичным способом создадим приватный и публичный ключи клиента.

Команда создания приватного и публичного ключей для клиента ничем не отличается от указанной выше для сервера, изменим лишь имена файлов в которые сохраним сгенерированные кючи:

wg genkey | tee unit2-private.key | wg pubkey > unit2-public.key

Если к серверу планируется несколько подключений, то подобным способом можно создать ключи для остальных участников:

wg genkey | tee unit3-private.key | wg pubkey > unit3-public.key

wg genkey | tee unit4-private.key | wg pubkey > unit4-public.key

Сгенерированные таким способом ключи клиента являются «серверными» для самого клиента. Важно понимать это при настройке устройств. Логичнее именовать файлы с ключами не используя привилегии клиент-сервер, а как в моем примере, unit1, unit2 и т.п. (unit — блок, узел).

 

Файл конфигурации сервера WireGuard

Создайте любым удобным для вас способом файл конфигурации сервера /etc/wireguard/wg0.conf со следующим содержимым. Я, как правило, использую для этого редактор файлового менеджера Midnight Commander.

[Interface]

# IP-адрес сервера в виртуальной сети

Address = 172.29.111.1/24

# порт, на котором ожидать подключения

ListenPort = 64999

# приватный ключ сервера

PrivateKey = SNN6DRlhGKuG/12345Vn1jAhvIhcMDVwvMUjDRPUU=



[Peer]

# публичный ключ клиента

PublicKey = 8obhd57GKCXPR5M8W1Q2D67890hw6hskAmQkIYZQ4=

# назначить клиенту следующий IP-адрес

AllowedIPs = 172.29.111.2/32

Разделов [Peer] в файле конфигурации WireGuard может быть несколько.

Обратите внимание, что при построении VPN тоннеля WireGuard в файле конфигурации первого устройства мы указали приватный ключ сервера (unit1-private) и публичный ключ клиента (unit2-public).

При конфигурации второго устройства VPN WireGuard мы должны использовать unit2-private в качестве ключа сервера, а unit1-public в качестве ключа клиента.

Более наглядно покажу на рисунке:

 

Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

 

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

 

Файл конфигурации клиента WireGuard

Если сервер с операционной системой Debian выступает в роли клиента туннеля WireGuard, то его файл конфигурации будет отличаться от приведенного выше тем, что в нем указывается IP адрес сервера.

[Interface]

PrivateKey = Uni2-Private-key

Address = 172.29.111.2/24




[Peer]

PublicKey = Unit1-Public-key

#Адрес сервера и его порт

Endpoint = SERVER_IP_ADDRESS:64999

AllowedIPs = 0.0.0.0/0

Настройка маршрутизатора серии Keenetic в качестве клиента будет описана чуть ниже.

 

Запуск WireGuard на Debian и Ubuntu

В случае systemd используйте следующую команду для запуска сервиса WireGuard:

$ sudo systemctl start wg-quick@wg0

Для автозапуска WireGuard при включении сервера выполните следующий код в консоли:

$ sudo systemctl enable wg-quick@wg0

Как установить WireGuard на маршрутизаторе Keenetic

В роутерах торговой марки Keenetic необходимо установить компонент операционной системы Wireguard VPN:

 

Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

 

И настроить его в разделе «Другие подключения»:

 

Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

 

Добавьте данные сервера:

 

Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

 

и клиента:

 

Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

 

Если все сделали правильно, то туннель автоматически заработает и останется лишь настроить маршрутизацию трафика.

 

Для чего используют VPN

VPN используют для объединения в единую сеть нескольких компьютеров (серверов) через интернет. При этом доступ в эту сеть могут получить только устройства этой сети. То есть задача VPN не только передать информацию между вашими компьютерами, но и защитить ее (информацию) от посторонних глаз.

Таким способом вы можете объединить системы находящиеся в разных городах и даже странах.

 

Обход блокировок Рунета

Одним из частных случаев использования VPN является обход блокировок доступа к тем или иным сайтам.

Не всегда заблокированные сайты «плохие». Вот реальный пример блокировки доступа к сайту М.Видео. Вот уже несколько дней вся подсеть моего провайдера заблокирована и посетить этот интернет магазин невозможно.

 

Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

 

А во время «ковровых бомбардировок» РКН (Роскомнадзор) проблем бывает еще больше, достаточно вспомнить попытки заблокировать мессенджер Телегам в России. Тогда пострадало много невинных ресурсов, один из них — сайт архиватора 7-zip.org, доступ к которому можно было получить только через зарубежные VPN.

Почему WireGuard?

Это «свежий» VPN с открытым исходным кодом. В нем используется самая современная криптография. Он прост в настройке и потребляет мало ресурсов, что особенно важно при его работе на домашнем роутере. Он кроссплатформенный и может работать практически где угодно.

 

Благодарности

При написании статьи были использованы следующие источники:

  1. https://tokmakov.msk.ru/blog/item/535
  2. https://routerus.com/how-to-set-up-wireguard-vpn-on-ubuntu-20-04/
  3. https://losst.ru/ustanovka-wireguard-v-ubuntu