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

Опубликовано: 31 марта 2021 / Обновлено: 4 июня 2021
Раздел(ы): GNU Linux - CentOS / Debian, Маршрутизаторы аппаратные
Просмотры: 11740
Комментарии: 1

В начале я расскажу как, ну а потом уже зачем использовать 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

Обсуждение (комментарии к статье)

  1. когда оперируете понятиями «первое устройтво, второе», а потом в этом же предложении пишите «сервер, клиент», то все становится запутано. и даже картинка не помогает. первое устройство это сервер? второе устройство это клиент? или первое устройство это первый клиент а второе устройство — второй?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных", на условиях и для целей определенных политикой конфиденциальности сайта.
© Юрий Рассадников, 2011 - 2024
uptime узнать
Домен : reg.ru
Хостинг : adman.com
SQL - 6 | 0,164 сек. | 8.37 МБ