Если после подключения WireGuard в Windows «ломается» доступ к локальной сети или вы хотите, чтобы в VPN уходили только нужные адреса, вам поможет правильная настройка AllowedIPs. В этой статье разберём, как сделать это без боли: от базовой схемы до точных правок конфигов и диагностики.


Почему именно WireGuard и чем он отличается

WireGuard ценят за компактность и прозрачность кода, а значит проще разобраться, настроить и обслуживать. По ощущениям пользователей это часто означает меньше “магии” и более предсказуемое поведение.

В сравнении с OpenVPN и IPSec у WireGuard обычно выигрывают:
- простая конфигурация
- быстродействие
- удобство для развертывания на VPS и дома
- стабильность при регулярных подключениях клиентов

Но есть практический момент: если в вашей сети протокол VPN блокируется, иногда WireGuard может не пройти по политике провайдера. Тогда рассматривают альтернативы вроде L2TP или IKEv2/IPSec.


Боль пользователей, когда “локалка обрубается”

Представьте ситуацию: вы подняли сервер на Ubuntu 22.04, подключили клиент на Windows, включили туннель — и вдруг:
- принтер в локальной сети перестал открываться
- NAS не пингуется
- 127.0.0.1 перестал работать как обычно
- часть приложений «как будто ушла в VPN», хотя должна остаться в локальной сети

Обычно причина одна: в конфиге клиента AllowedIPs задано слишком широко (например, 0.0.0.0/0), и трафик идёт через туннель целиком. А исключения в WireGuard делаются не “запрещающими” правилами, а через список только разрешённых диапазонов.


Базовая схема что куда настраивать

Ниже простая “карта”:

flowchart LR
  U[Клиент Windows] -->|UDP на порт| WG[WireGuard сервер]
  WG --> LAN[Локальная сеть]
  U -->|Только AllowedIPs| WG

Роль ключевых файлов

Компонент Где хранится Что важно
Конфиг сервера /etc/wireguard/wg0.conf PrivateKey, Address, ListenPort, PostUp/PostDown
Конфиг клиента файл peerX.conf PrivateKey, Address, [Peer], AllowedIPs, Endpoint, PersistentKeepalive

Подготовка Ubuntu 22.04 под WireGuard

Минимальный набор действий на сервере:

1) Обновить пакеты:

sudo apt update

2) Установить нужные утилиты (для примера часто используют iptables):

sudo apt install iptables

3) Включить IPv4 forwarding (пересылку):
- отредактировать /etc/sysctl.conf
- раскомментировать строку net.ipv4.ip_forward=1
- применить:

sudo sysctl -p

4) Установить сам WireGuard:

sudo apt install wireguard

Ключи сервера и пиров

На сервере создаются ключи:

cd /etc/wireguard
wg genkey | tee privatekey | wg pubkey | tee publickey

Дальше генерируют ключи для каждого пира (клиента):

wg genkey | tee peer1_privatekey | wg pubkey | tee peer1_publickey
wg genkey | tee peer2_privatekey | wg pubkey | tee peer2_publickey

Настройка wg0.conf сервера

Пример каркаса (вы заполняете свои ключи):

[Interface]
PrivateKey = <SERVER_PRIVATE_KEY>
Address = 10.10.10.1
ListenPort = 51820

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Важно про проверку сервиса

Включить автозапуск:

sudo systemctl enable wg-quick@wg0.service

Запустить:

sudo systemctl start wg-quick@wg0.service

Статус:

sudo systemctl status wg-quick@wg0.service

А “живой” мониторинг:

sudo watch wg show

Добавление клиентов в конфиг сервера

В wg0.conf в секции [Peer] добавляют клиентов.

[Peer]
PublicKey = <PEER1_PUBLIC_KEY>
AllowedIPs = 10.10.10.2/32

[Peer]
PublicKey = <PEER2_PUBLIC_KEY>
AllowedIPs = 10.10.10.3/32

Где логика такая:
- каждому подписчику/пиру выдаётся уникальный ipадрес в VPN-сети
- AllowedIPs на сервере показывает, какие адреса “принадлежат” этому пиру


Клиент на Windows и настройка приложения WireGuard

На Windows в официальном приложении обычно шаги такие:
1) Add Tunnel
2) Add empty tunnel...
3) вставить конфиг peer1.conf
4) нажать Save
5) нажать Activate


Как должен выглядеть peer1.conf

Пример:

[Interface]
PrivateKey = <PEER1_PRIVATE_KEY>
Address = 10.10.10.2/32
DNS = 8.8.8.8

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_IP_ADDRESS>:51820
AllowedIPs = 10.10.10.0/24
PersistentKeepalive = 20

Ключевая часть: как исключить приложения или локальную сеть через AllowedIPs

Фраза поиска “wireguard windows как исключить приложения” обычно означает на практике:
сделать split-tunneling — чтобы не весь трафик уходил в туннель.

Важный принцип WireGuard

В AllowedIPs вы не “выключаете” подсеть знаком минуса или !.
Вы должны указать только разрешённые диапазоны.

Конкретно это видно из типовых решений в сообществе:
- пытались писать !192.168.0.0/16 — не работает
- корректный путь — рассчитать диапазоны так, чтобы “в разрешённых” оставалось всё нужное, а локальная сеть туда не входила


Как “разрешить всё кроме локальной сети” без минусов

Метод 1: разрешать большие куски интернета

В форуме часто используется трюк для исключений через разбиение:

  • если вы хотите исключить приватные подсети, делается конструкция, которая разрешает почти весь IPv4, но не включает нужные сети

Для отключения блокирования нетуннелированного трафика на стороне клиента иногда добавляют:

AllowedIPs = 0.0.0.0/1, 128.0.0.0/1

Если нужна работа с IPv6 (в конфиге обычно тоже есть ::/1 и т.п.), добавляют:

AllowedIPs = 0.0.0.0/1, 128.0.0.0/1, ::/1, 8000::/1

Это используется, чтобы клиент не “ломал” маршрутизацию там, где VPN не должен быть везде.

Метод 2: расчёт точных разрешённых подсетей через калькулятор

Если вы хотите исключить, например:
- 127.0.0.1/32
- 192.168.0.0/16

то самый безопасный способ — калькулятор для WireGuard split tunneling, который отдаёт уже готовые диапазоны для AllowedIPs (без !).


Редактирование AllowedIPs в клиентском конфиге Windows

В интерфейсе WireGuard на Windows:
1) выберите туннель
2) нажмите Редактировать
3) найдите строку AllowedIPs
4) замените её на рассчитанную строку
5) SaveActivate

Как понять что вы сделали правильно

Когда AllowedIPs настроен верно:
- доступ к локальной сети сохраняется
- трафик, который вы “попросили” через VPN, реально идёт
- меньше “случайных” обрывов из-за маршрутов


Правильная таблица типовых сценариев

Что вы хотите Что ставить в AllowedIPs на клиенте Результат
Туннель только для VPN-сети 10.10.10.0/24 Только адреса VPN через WireGuard
Туннель на весь IPv4 0.0.0.0/0 Часто ломает локалку, если исключения не сделаны
“Не ломать ничего” и разрешить без полного захвата 0.0.0.0/1, 128.0.0.0/1 Обычно работает как основа для исключений
С учётом IPv6 0.0.0.0/1, 128.0.0.0/1, ::/1, 8000::/1 Split-tunneling шире и для IPv6

Если после подключения WireGuard обрывает локальную сеть

Действуйте по шагам диагностики.

Шаг 1. Проверьте состояние интерфейса WireGuard

На сервере:

sudo systemctl status wg-quick@wg0.service
sudo wg show

Если на сервере нет активных handshakes — проблема может быть не в маршрутизации.

Шаг 2. Проверьте, что именно уходит через туннель

На клиенте смотрят:
- что в AllowedIPs слишком “широко”
- нет ли ситуации, когда включили 0.0.0.0/0 и не предусмотрели локальную сеть

Шаг 3. Проверьте маршруты после подключения

Идея простая:
- если локальные адреса попали в разрешённые AllowedIPs, они будут уходить в туннель
- значит, нужно пересчитать диапазоны так, чтобы локальная сеть не входила в разрешённые


Синтаксис исключения подсетей в AllowedIPs

Коротко: “исключать” в AllowedIPs через ! в большинстве случаев не работает в официальном синтаксисе. Вместо этого:
- указывают разрешённые подсети
- чтобы “получилось исключение”, разрешённые подсети подбирают так, чтобы нужная сеть не включалась

То есть ваша цель — получить набор подсетей, который эквивалентен:

разрешить всё, что нужно, кроме локальной сети


Что если WireGuard блокируется и нужен запасной план

Когда WireGuard не работает из-за ограничений (например, UDP проходит, но трафик не течёт), используют альтернативные протоколы VPN, например:
- L2TP
- IKEv2/IPSec

На практике это помогает, если проблема не в настройке, а в политике сети.


Альтернативные клиенты WireGuard и почему их рассматривают

Иногда пользователи пробуют не только официальный клиент. Например, упоминаются альтернативы вроде wiresock. Они могут:
- упрощать интерфейс
- давать больше возможностей по управлению маршрутизацией

Но важны риски:
- другой клиент может вести себя иначе с маршрутами
- нужно аккуратно проверять, что он корректно применяет изменения в AllowedIPs


Небольшой “шпаргалка” по правкам

Вот мини-алгоритм, который обычно спасает:

1) Убедитесь, что туннель на Windows поднялся и есть обмен на сервере (wg show).
2) Откройте peerX.conf (в редакторе туннеля).
3) Если локальная сеть пропала, не пытайтесь писать !192.168... — лучше пересчитать.
4) Используйте конструкцию разбиения 0.0.0.0/1, 128.0.0.0/1 как основу, а дальше добавляйте/исключайте через рассчитанные диапазоны.
5) Если нужен IPv6, добавьте соответствующие ::/1 и 8000::/1.
6) Сохраните и нажмите Activate заново.


Итог

В WireGuard на Windows “исключить приложения” почти всегда означает настроить, какие IP уходят в VPN, а какие остаются локально. Делается это через AllowedIPs и корректные разрешённые подсети. Самая частая ошибка — попытка “запрещать” через !, когда синтаксис ожидает именно список разрешений. Правильный split-tunneling возвращает доступ к локальной сети и делает поведение предсказуемым.