Это старая версия документа!
Содержание
Установка 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
Разрешить трафик через шлюз на сервере (форвардинг)
Раскомментировать или добавить параметр в /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
Примеры
Кейс. Виртуальная сеть сервер-клиент
Настроим 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
Запускаем интерфейс
systemctl status 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
Добавить конфиг в клиент и подключиться
Если пинг проходит в обе стороны, значит настройка прошла успешно