- Почему именно WireGuard и чем он отличается
- Боль пользователей, когда “локалка обрубается”
- Базовая схема что куда настраивать
- Подготовка Ubuntu 22.04 под WireGuard
- Ключи сервера и пиров
- Настройка wg0.conf сервера
- Добавление клиентов в конфиг сервера
- Клиент на Windows и настройка приложения WireGuard
- Как должен выглядеть peer1.conf
- Ключевая часть: как исключить приложения или локальную сеть через AllowedIPs
- Как “разрешить всё кроме локальной сети” без минусов
- Редактирование AllowedIPs в клиентском конфиге Windows
- Правильная таблица типовых сценариев
- Если после подключения WireGuard обрывает локальную сеть
- Синтаксис исключения подсетей в AllowedIPs
- Что если WireGuard блокируется и нужен запасной план
- Альтернативные клиенты WireGuard и почему их рассматривают
- Небольшой “шпаргалка” по правкам
- Итог
Если после подключения 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) Save → Activate
Как понять что вы сделали правильно
Когда 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 возвращает доступ к локальной сети и делает поведение предсказуемым.