Это старая версия документа!
Содержание
Установка 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 = <server_private_key> Address = 192.168.0.1/24 ListenPort = 51820 [Peer] PublicKey = <client_public_key> 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 = <client_private_key> DNS = 1.1.1.1 [Peer] PublicKey = <server_public_key> Endpoint = <server_ip>: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 restart wg-quick@wg0.service
Клиенты не смогут друг друга увидеть