Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic
Раздел(ы): GNU Linux - CentOS / Debian, Маршрутизаторы аппаратные
Просмотры: 13257
Комментарии: 2
В начале я расскажу как, ну а потом уже зачем использовать 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 в качестве ключа клиента.
Более наглядно покажу на рисунке:
Общее правило: Для организации связи каждое устройство должно иметь свой приватный ключ и публичные ключи устройств с которыми нужно организовать 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:
И настроить его в разделе «Другие подключения»:
Добавьте данные сервера:
и клиента:
Если все сделали правильно, то туннель автоматически заработает и останется лишь настроить маршрутизацию трафика.
Для чего используют VPN
VPN используют для объединения в единую сеть нескольких компьютеров (серверов) через интернет. При этом доступ в эту сеть могут получить только устройства этой сети. То есть задача VPN не только передать информацию между вашими компьютерами, но и защитить ее (информацию) от посторонних глаз.
Таким способом вы можете объединить системы находящиеся в разных городах и даже странах.
Почему WireGuard?
Это «свежий» VPN с открытым исходным кодом. В нем используется самая современная криптография. Он прост в настройке и потребляет мало ресурсов, что особенно важно при его работе на домашнем роутере. Он кроссплатформенный и может работать практически где угодно.
Благодарности
При написании статьи были использованы следующие источники:
когда оперируете понятиями «первое устройтво, второе», а потом в этом же предложении пишите «сервер, клиент», то все становится запутано. и даже картинка не помогает. первое устройство это сервер? второе устройство это клиент? или первое устройство это первый клиент а второе устройство — второй?
# назначить клиенту следующий IP-адрес
AllowedIPs = 172.29.111.2/32
это ипы, на которые через туннель ходить можно, не назначенный.