====== Установка WireGuard на Debian 12 ======
Установка пакета WireGuard
apt-get install wireguard
===== Генерация ключей =====
Ключи для сервера и клиента генерируются одинаково
>**wg genkey** - для приватного ключа
>**wg pubkey** - для публичного ключа
Пример генерации приватного ключа в файл **privatekey** \\
(Можно использовать любое другое имя для удобства)
wg genkey > privatekey
Пример генерации публичного ключа в файл **publickey** \\
(Можно использовать любое другое имя для удобства)
wg pubkey < privatekey > publickey
Пример генерации ключей одной командой
wg genkey | tee privatekey | wg pubkey > publickey
Просмотреть ключи можно командами \\
(Приватный ключ должен быть засекречен!)
cat privatekey
cat publickey
===== Конфигурация для сервера =====
Необходимо сгенерировать ключи для сервера и клиента \\
При последующем добавлении новых клиентов, нужна перезагрузка WireGuard
Файл конфигурации для сервера
nano /etc/wireguard/wg0.conf
Минимальная настройка **wg0.conf** \\
(Можно использовать любое другое имя для удобства)
[Interface]
PrivateKey =
Address = 192.168.0.1/24
ListenPort = 51820
[Peer]
PublicKey =
AllowedIPs = 192.168.0.2/32
>**[Interface]** - настройка интерфейса
>**PrivateKey** - приватный ключ сервера
>**Address** - IP сервера и подсеть **24**
>**ListenPort** - порт для подключения, по умолчанию **51820**
>**PostUp** - команды выполняются при запуске интерфейса
>**PostDown** - команды выполняются при остановке интерфейса
>**[Peer]** - настройка для клиента
>**PublicKey** - публичный ключ клиента
>**AllowedIPs** - IP клиента и подсеть **32**
Запустить интерфейс (должен совпадать с именем конфига)
systemctl status wg-quick@wg0.service
Автозапуск интерфейса
systemctl enable wg-quick@wg0.service
Применение новых настроек без потери текущих соединений
systemctl reload wg-quick@wg0.service
===== Разрешить трафик через шлюз на сервере (форвардинг) =====
Раскомментировать или добавить параметр в **/etc/sysctl.conf**
net.ipv4.ip_forward=1
Применить параметр
sysctl -p
===== Конфигурация для клиента =====
Минимальная настройка для клиента
[Interface]
Address = 192.168.0.2/32
PrivateKey =
DNS = 1.1.1.1
[Peer]
PublicKey =
Endpoint = :51820
AllowedIPs = 0.0.0.0/0, ::/0
>**[Interface]** - настройка интерфейса
>**Address** - IP клиента и подсеть **32**
>**PrivateKey** - приватный ключ клиента
>**DNS** - DNS сервер
>**[Peer]** - настройка сервера
>**PublicKey** - публичный ключ сервера
>**Endpoint** - IP сервера и порт для подключения
>**AllowedIPs** - IP адреса и подсети для перенаправления трафика на сервер (IPv4, IPv6)
>**PersistentKeepalive** - интервал отправки пакетов для поддержания соединения в секундах, по умолчанию 0, достаточно поставить 25
0.0.0.0/0 - весь трафик для IPv4 \\
::/0 - весь трафик для IPv6
===== QR-код конфигурации =====
Установить пакет
apt-get install qrencode
Сгенерировать qr-код из пользовательского конфига
qrencode -t ansiutf8 < user.conf
===== Примеры =====
==== Кейс. Виртуальная сеть сервер-клиент ====
Настроим WireGuard между двумя устройствами
**Генерируем ключи для сервера**
wg genkey | tee server_privatekey | wg pubkey > server_publickey
cat server_privatekey && cat server_publickey
>**server_privatekey:** eAFJBo4Iv6EhCFrJ2UnaKUL6m5l+eBQXFiyvrgKbeGM=
>**server_publickey:** g2TdH54TB3yVFqMkRsYr7IsgHQIiFQQ4C5pwIIe+wkE=
**Генерируем ключи для клиента**
wg genkey | tee user_privatekey | wg pubkey > user_publickey
cat user_privatekey && cat user_publickey
>**user_privatekey:** sJTjndiIZ0uGrwFSlnRJ8QIy5Ty2fqTjYf1u/g0p/FU=
>**user_publickey:** MNX7jtoxAAgyp38DjxSX2xX6C9z2Ozmp5VFJC0uXWEA=
**Конфиг для сервера**
nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = eAFJBo4Iv6EhCFrJ2UnaKUL6m5l+eBQXFiyvrgKbeGM=
Address = 192.168.100.1/24
ListenPort = 51820
[Peer]
PublicKey = MNX7jtoxAAgyp38DjxSX2xX6C9z2Ozmp5VFJC0uXWEA=
AllowedIPs = 192.168.100.2/32
>Address = 192.168.100.1/24 - виртуальный IP сервера
>AllowedIPs = 192.168.100.2/32 - IP клиента
Запускаем интерфейс
systemctl status wg-quick@wg0.service
Автозапуск интерфейса
systemctl enable wg-quick@wg0.service
**Конфиг для клиента**
>**user.conf**
[Interface]
Address = 192.168.100.2/32
PrivateKey = sJTjndiIZ0uGrwFSlnRJ8QIy5Ty2fqTjYf1u/g0p/FU=
[Peer]
PublicKey = g2TdH54TB3yVFqMkRsYr7IsgHQIiFQQ4C5pwIIe+wkE=
AllowedIPs = 192.168.100.0/24
Endpoint = 192.168.0.6:51820
>Address = 192.168.100.2/32 - виртуальный IP клиента
>AllowedIPs = 192.168.100.0/24 - разрешенная подсеть
>Endpoint = 192.168.0.6:51820 - IP сервера для подключения
Добавить конфиг в клиент и подключиться
Если пинг проходит в обе стороны, значит настройка прошла успешно
**Добавляем еще одного клиента**
Генерируем ключи
wg genkey | tee user2_privatekey | wg pubkey > user2_publickey
cat user2_privatekey && cat user2_publickey
>**user2_privatekey:** oNXwVJklzsMIwOcIB9xjvEqtGMzimXa9dr7qQ8kUfXE=
>**user2_publickey:** HyVRp907OMf7D2piTy6dpabHSMSSQ9Eel/N8PPi91xQ=
Отредактируем конфиг сервера
[Interface]
PrivateKey = eAFJBo4Iv6EhCFrJ2UnaKUL6m5l+eBQXFiyvrgKbeGM=
Address = 192.168.100.1/24
ListenPort = 51820
[Peer]
PublicKey = MNX7jtoxAAgyp38DjxSX2xX6C9z2Ozmp5VFJC0uXWEA=
AllowedIPs = 192.168.100.2/32
[Peer]
PublicKey = HyVRp907OMf7D2piTy6dpabHSMSSQ9Eel/N8PPi91xQ=
AllowedIPs = 192.168.100.3/32
Новый конфиг для клиента
[Interface]
Address = 192.168.100.3/32
PrivateKey = oNXwVJklzsMIwOcIB9xjvEqtGMzimXa9dr7qQ8kUfXE=
[Peer]
PublicKey = g2TdH54TB3yVFqMkRsYr7IsgHQIiFQQ4C5pwIIe+wkE=
AllowedIPs = 192.168.100.0/24
Endpoint = 192.168.0.6:51820
Применяем новый конфиг
systemctl reload wg-quick@wg0.service
Клиенты не смогут друг друга увидеть. \\
Чтоб видели, нужно включить форвардинг