Взаимодействие с MITIGATOR внутри VPN
Взаимодействие с MITIGATOR устроено через Wireguard.
Collector, как и каждый экземпляр MITIGATOR, имеет ключевую пару:
приватный ключ и публичный ключ.
Приватный ключ хранится только на Collector в vpn-private.conf
.
Публичные ключи всех узлов VPN перечислены в vpn-public.conf
,
который должен быть одинаков у всех узлов.
Адрес коллектора в VPN указывается как COLLECTOR_VPN_ADDRESS
в .env
.
За организацию VPN отвечает компонент gateway
.
Он настраивает VPN в соответствии с vpn-private.conf
, vpn-public.conf
,
COLLECTOR_VPN_ADDRESS
.
Если нужно поменять настройки gateway
, кроме *.conf
, нужно полностью
перезапустить Collector (docker-compose down && docker-compose up -d
).
Если меняется только состав узлов VPN,
команда docker-compose exec gateway reconfigure
позволяет обновить конфигурацию VPN без перезапуска коллектора.
Подготовка системы
Модуль ядра
Ubuntu 20.04 LTS включает Wireguard в базовой поставке. Дополнительные действия не нужны.
В Debian 10 требуется установить портированный пакет:
echo deb http://deb.debian.org/debian buster-backports main > /etc/apt/sources.list.d/buster-backports.list
apt update
apt install -y linux-headers-amd64 wireguard-dkms
Проверить поддержку можно командной modprobe wireguard
. Если ничего
не печатается в ответ, модуль доступен. В этом случае достаточно настроить
его автоматическую загрузку. Иначе требуется перезагрузка.
Для добавления wireguard в автоматическую загрузку:
echo wireguard >> /etc/modules-load.d/collector.conf
Инструменты
Установить утилиту wg
:
apt install -y wireguard-tools
Настройка
Все файлы создаются в каталоге /srv/collector
.
Если настраивается не первый узел VPN, файл vpn-public.conf
нужно взять с любого из ранее настроенных узлов.
Создать приватный ключ (пример результата:
yDPg5doavYH7fdD86nt+cOzSBL4znVZcrcrJwjY/Xmw=
):wg genkey
Записать ключ в
vpn-private.conf
:[Interface] ListenPort = 4567 PrivateKey = yDPg5doavYH7fdD86nt+cOzSBL4znVZcrcrJwjY/Xmw=
Указанный порт 4567 должен быть открыт для UDP-трафика.
Получить из приватного ключа публичный (пример результата:
acfzxE6ZsiYE4jIqsBicOt7oT8ZuKhxBvuz0+6JxiEc=
):echo 'yDPg5doavYH7fdD86nt+cOzSBL4znVZcrcrJwjY/Xmw=' | wg pubkey
Добавить в
vpn-public.conf
секцию с публичным ключом и адресами узлов VPN (создать файл, если это первый экземпляр):[Peer] PublicKey = acfzxE6ZsiYE4jIqsBicOt7oT8ZuKhxBvuz0+6JxiEc= AllowedIPs = 10.8.3.1/32 Endpoint = 192.0.2.1:4567
10.8.3.1
— адрес Collector внутри VPN. Должен быть уникальным среди всех узлов VPN. Все адреса должны быть внутри одной сети /24 (по умолчанию).192.0.2.1:4567
— внешний адрес экземпляра и настроенный выше порт. На этот адрес и порт другие экземпляры будут отправлять UDP-пакеты.Скачать
docker-compose.vpn.yml
:wget https://docs.mitigator.ru/collector/v24.10/dist/docker-compose.vpn.yml
Отредактировать в
.env
адрес Collector внутри VPN:COLLECTOR_VPN_ADDRESS=X.X.X.X
Он должен совпадать с настроенным в
vpn-public.conf
.Перезапустить Collector:
docker-compose down && docker-compose up -d
После добавления нового узла в файл
vpn-public.conf
или при измененииvpn-private.conf
нужно внести изменения на всех узлах.На каждом узле VPN нужно обновить конфигурацию без перезапуска:
docker-compose exec gateway reconfigure