Сети

WireGuard на Debian 11: выбрать клиент и настроить VPN

Пошаговое руководство: как выбрать client.conf, проверить public key, настроить WireGuard на Debian 11, включить форвардинг и NAT, получить полноценный VPN.

Проблемы с настройкой WireGuard на сервере Debian 11: несколько клиентских конфигураций, как выбрать правильную и настроить VPN?

Установил WireGuard на сервер Debian 11 с помощью скрипта. В директории /etc/Wireguard/client/ обнаружил 4 папки: clientgTy, clientSnB, clientUeT, clientusM. В каждой из них одинаковый набор файлов: client.conf, privatekey, publickey.

Вопросы:

  • Какой клиентский конфиг выбрать и стоит ли ему доверять?
  • Как правильно настроить WireGuard как VPN для подключения?
  • Заработает ли это как полноценный VPN?

Я новичок в WireGuard и хочу просто получить работающий VPN.

На Debian 11 WireGuard (wireguard debian 11) вполне можно настроить как полноценный VPN: нужно выбрать один клиентский профиль (client.conf), сверить его public key с конфигурацией сервера и включить IP forwarding + NAT. Если скрипт создал четыре папки — это четыре отдельных клиентских профиля; используйте тот, чей public key совпадает с [Peer] в /etc/wireguard/wg0.conf (или с выводом wg), либо сгенерируйте новый ключ и добавьте его на сервер. Ниже — пошаговая инструкция по выбору клиента, правильной настройке wireguard debian, проверке работы и отладке.


Содержание


WireGuard на Debian 11: выбор клиентской конфигурации и доверие (wireguard клиент)

Коротко: каждая папка — это отдельный клиент (отдельный приватный ключ + публичный ключ + конфиг). Выберите тот конфиг, который вы действительно хотите использовать на конкретном устройстве. А доверять файлу можно после простой проверки совпадения публичного ключа с серверной конфигурацией и корректности адреса в секции Address/AllowedIPs.

Пошагово — как определить, какой client.conf у вас подходящий:

  1. Посмотрите, где лежат файлы (учтите чувствительность к регистру):
bash
ls -la /etc/wireguard /etc/Wireguard
ls -la /etc/wireguard/client # или /etc/Wireguard/client
  1. Просмотрите серверную конфигурацию и список peers:
bash
sudo cat /etc/wireguard/wg0.conf
sudo wg show wg0

В конфиге сервера ищите секции [Peer] с PublicKey и AllowedIPs — там явно указано, каким VPN‑адресам соответствует каждый peer.

  1. Получите public key из клиентской папки и сравните:
bash
sudo wg pubkey < /etc/wireguard/client/clientgTy/privatekey
# или
cat /etc/wireguard/client/clientgTy/publickey

Сравните результат с PublicKey в /etc/wireguard/wg0.conf или с выводом sudo wg show wg0. Совпадение означает, что этот client.conf уже добавлен на сервер и предназначен для какого‑то устройства.

  1. Если совпадений нет — что это значит и что делать?
  • Возможно, скрипт сгенерировал клиентские конфиги, но не добавил peer в серверный wg0.conf. В этом случае выберите один клиент (или сгенерируйте новый ключ) и добавьте public key в сервер.
  • Генерация нового ключа (на клиенте) — быстро:
bash
wg genkey | tee ~/client_private.key | wg pubkey > ~/client_public.key

Далее добавьте полученный public key в /etc/wireguard/wg0.conf (или через wg set) и укажите уникальный AllowedIPs (например, 10.66.66.2/32).

  1. Примечания по безопасности:
  • Не выкладывайте privatekey публично. Держите файлы privatekey с правами 600.
bash
sudo chmod 600 /etc/wireguard/client/*/privatekey
sudo chown root:root /etc/wireguard/client/*/privatekey
  • Если вы не уверены в происхождении конфигов — безопаснее сгенерировать новый ключ и импортировать только публичный ключ на сервер.

(Примеры генерации/структуры клиентских конфигов и multi‑client подхода — см. практическое руководство по установке на Debian: https://vankevich.ru/blog/ustanovka-wireguard-na-debian-11-bullseye/ и https://dondub.com/2022/05/zapusk-wireguard-na-debian-11-i-ubuntu-server-22-04/.)


Правильная настройка WireGuard как VPN на Debian 11

Чтобы VPN работал «полноценно» (весь трафик клиента шел через сервер), сервер должен:

  • слушать UDP‑порт (обычно 51820),
  • иметь включённый ip_forward,
  • делать NAT (маскарад) внешнего трафика,
  • иметь в peers правильные AllowedIPs.

Пример минимальной серверной конфигурации /etc/wireguard/wg0.conf:

ini
[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>

# Подмените eth0 на ваш внешний интерфейс (см. ниже)
PostUp = sysctl -w net.ipv4.ip_forward=1; iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Пример секции peer для клиента
[Peer]
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = 10.66.66.2/32

Нюансы и команды:

  • Как узнать внешний интерфейс (замените в PostUp/PostDown):
bash
ip route get 1.1.1.1 | awk '{print $5; exit}'
  • Включить форвардинг постоянно:
bash
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
  • Открыть порт в firewall (UFW пример):
bash
sudo ufw allow 51820/udp

Или если используете iptables/nftables — настройте соответствующие правила.

  • Поднять/включить интерфейс:
bash
sudo systemctl enable --now wg-quick@wg0
sudo wg show wg0

Полезные руководства и образцы конфигураций смотрите в официальной инструкции и сообществах: https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-debian-11 и https://wiki.debian.org/WireGuard.


Конфигурация клиента: как использовать один из client.conf

Если выбрали папку clientX с client.conf — перенесите этот файл на устройство и импортируйте:

  • На Linux:
bash
sudo cp client.conf /etc/wireguard/wg0.conf
sudo wg-quick up wg0

Или:

bash
sudo wg-quick up /path/to/client.conf
  • На Android/iOS: установите приложение WireGuard и импортируйте client.conf через файл или QR. Чтобы сгенерировать QR на сервере:
bash
sudo apt install qrencode
qrencode -t ansiutf8 < /etc/wireguard/client/clientgTy/client.conf
# или в файл: qrencode -o client.png < client.conf

Пример client.conf (full‑tunnel):

ini
[Interface]
PrivateKey = <CLIENT_PRIVATE_KEY>
Address = 10.66.66.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = your.server.ip:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
  • AllowedIPs = 0.0.0.0/0 — перенаправляет весь трафик через сервер (full tunnel).
  • PersistentKeepalive = 25 — полезно для мобильных устройств за NAT, чтобы поддерживать связь.

Не копируйте один и тот же client.conf на несколько устройств — это приведёт к конфликтам маршрутизации и «перетиранию» endpoint в сервере; для каждого устройства делайте отдельный клиент.


Заработает ли это как полноценный VPN?

Да — при корректной настройке server[Interface] (ip_forward + NAT) и client AllowedIPs=0.0.0.0/0 вы получите полноценный VPN: весь интернет‑трафик клиента пойдёт через сервер и будет выходить с его публичного IP. Проверьте это так:

  1. На клиенте поднимите туннель:
bash
sudo wg-quick up /path/to/client.conf
  1. Проверьте пинги и внешний IP:
bash
ping -c 3 10.66.66.1 # пинг внутр. интерфейса сервера
curl -sS https://ifconfig.me # должен отдать IP сервера

Ограничения и подводные камни:

  • Если ваш сервер стоит за CG‑NAT или порт UDP блокируется провайдером, endpoint может быть недоступен. Тогда смените порт (например, 51820 → 443 UDP) или используйте обёртку (stunnel/SSH) — но это уже отдельная тема.
  • Провайдеры облаков (AWS, GCP, DigitalOcean) также имеют security groups / firewall — откройте UDP‑порт.

Дополнительные примеры и варианты (split‑tunnel, IPv6) — смотрите в статьях по настройке и примерах: https://secureflow.ru/guides/wireguard-linux-setup-alt-centos-ubuntu-debian.


Устранение проблем и частые ошибки

Что проверять, если VPN не работает:

  • Нет handshakes:
  • Запустите на сервере:
bash
sudo wg show wg0
sudo ss -u -l -n | grep 51820
sudo journalctl -u wg-quick@wg0 -e
  • На клиенте: sudo wg show — смотрите поле “latest handshake”. Если 0 — нет подключения.

  • Порт закрыт/фильтруется:

  • Проверьте firewall на сервере (sudo ufw status, sudo iptables -L -n -v, sudo nft list ruleset) и сетевые правила облака.

  • Нет интернета через туннель:

  • Проверьте sysctl: sysctl net.ipv4.ip_forward должно быть net.ipv4.ip_forward = 1.

  • Проверьте NAT: sudo iptables -t nat -L -n -v и правильность интерфейса в MASQUERADE.

  • Убедитесь, что в сервере AllowedIPs для peer указана только VPN‑адрес клиента (например, 10.66.66.2/32), а в клиенте — 0.0.0.0/0 для full tunnel.

  • DNS не работает:

  • Укажите DNS = 1.1.1.1 или другой валидный в client.conf.

  • Клиенты не видят друг друга:

  • Проверьте AllowedIPs на сервере: клиенты видят друг друга только если на сервере разрешены соответствующие адреса и нет дополнительных правил фаервола.

  • Удаление/отзыв клиента:

  • Можно временно удалить peer без рестарта:

bash
sudo wg set wg0 peer <CLIENT_PUBLIC_KEY> remove
  • Для постоянного удаления — удалите секцию [Peer] из /etc/wireguard/wg0.conf и перезапустите интерфейс:
bash
sudo systemctl restart wg-quick@wg0

Дополнительные диагностические приёмы описаны в гайде Debian и практических статьях по WireGuard: https://wiki.debian.org/WireGuard.


Безопасность и обслуживание

  • Приватные ключи — под root, права 600.
bash
sudo chmod 600 /etc/wireguard/* /etc/wireguard/client/*/privatekey
sudo chown -R root:root /etc/wireguard
  • Удаляйте ненужные client.conf и удаляйте peers на сервере, если устройство потеряно.
  • Ротация ключей: при компрометации — сгенерировать новый ключ на клиенте и заменить public key на сервере.
  • Обновляйте пакеты: sudo apt update && sudo apt upgrade — WireGuard сам по себе безопасен, но ОС нужна в актуальном состоянии.

Чек‑лист: быстрые команды и шаги

  1. Найти client папки:
bash
ls -la /etc/wireguard/client
  1. Сравнить public keys:
bash
sudo wg pubkey < /etc/wireguard/client/clientgTy/privatekey
sudo grep -n "PublicKey" /etc/wireguard/wg0.conf
  1. Если нужно — добавить peer:
bash
# временно в runtime
sudo wg set wg0 peer <CLIENT_PUBLIC_KEY> allowed-ips 10.66.66.2/32
# и добавить в /etc/wireguard/wg0.conf для сохранения
  1. Включить форвардинг:
bash
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
  1. Настроить NAT (пример в PostUp/PostDown в wg0.conf) и открыть порт UDP 51820.
  2. На клиенте: wg-quick up client.conf и тест: curl https://ifconfig.me.
  3. Отладка: sudo wg show, sudo ss -u -l -n | grep 51820, sudo journalctl -u wg-quick@wg0 -e.

Источники


Заключение

Если коротко: выберите один client.conf, сопоставив public key с сервером (или сгенерируйте новый ключ), затем убедитесь, что на сервере включён ip_forward и настроен NAT (MASQUERADE), а в клиенте стоит AllowedIPs=0.0.0.0/0 для полного VPN. После этих шагов wireguard debian 11 будет работать как полноценный VPN; если что-то не пингуется — пройдите чек‑лист в разделе отладки и сверяйтесь с примерами из ссылок выше. Удачи — напишите, если хотите, проверю выводы wg и помогу интерпретировать их.

Авторы
Проверено модерацией
Модерация