====== Установка 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 Клиенты не смогут друг друга увидеть. \\ Чтоб видели, нужно включить форвардинг