Домашнему туннелю WireGuard нужен обратный маршрут из LAN
Рукопожатие — простая часть. Определите разделение работы между роутером и шлюзом, сохраните источник ноутбука неизменным и дайте LAN обратный маршрут.
Доступ домой — это одна частная услуга, а не второй выход в интернет. WireGuard завершается на машине Linux за роутером, роутер сохраняет свою нынешнюю роль, а ноутбук отправляет через туннель только домашний префикс. Какое устройство пересылает, а какое завершает — это решение, из которого следует каждое дальнейшее правило. Ошибётесь в этом разделении — будете отлаживать NAT, который не собирались добавлять.
Определите, кто пересылает и кто завершает
Публичный вход принадлежит роутеру: он принимает пакет UDP и передаёт его хосту Linux. Этот хост владеет слушателем WireGuard и решением о пересылке в LAN. На практике сопоставление отправляет UDP 51820 на 192.168.50.10, а собственный порт приложения остаётся закрытым. Разделение ролей держит межсетевой экран коротким.
Запишите план адресов до создания интерфейса. Роутер 192.168.50.1, шлюз 192.168.50.10, служба 192.168.50.20, туннель 10.77.0.0/24 со шлюзом .1 и ноутбуком .2. Диапазон туннеля не должен пересекаться с сетью, до которой ноутбук уже доходит, иначе назначения становятся неоднозначными. Carrier-grade NAT или вышестоящий роутер могут блокировать входящий доступ, и никакая локальная переадресация порта это не исправит.
Обменяйтесь ключами, затем задайте размер AllowedIPs
Создайте отдельную пару ключей для каждого конца и передавайте только открытые ключи по проверенному каналу. Запись peer на шлюзе разрешает только источник туннеля ноутбука, потому что домашняя LAN находится за шлюзом, а не за ноутбуком. Если поместить LAN в эту запись, описание топологии будет неверным.
[Interface]
Address = 10.77.0.2/32
PrivateKey = LAPTOP_PRIVATE_KEY_BASE64
[Peer]
PublicKey = HOME_PUBLIC_KEY_BASE64
Endpoint = home-vpn.example.com:51820
AllowedIPs = 192.168.50.0/24, 10.77.0.1/32AllowedIPs — это домашний префикс плюс адрес туннеля шлюза, никогда не 0.0.0.0/0, поэтому обычный просмотр сохраняет локальный путь. Держите одного владельца конфигурации и никогда не подключайте тот же интерфейс ко второму менеджеру сети.
Обратный маршрут — та часть, которую люди пропускают
Эта схема сохраняет источник 10.77.0.2 ноутбука, а не маскирует его под шлюз, поэтому домашние устройства должны знать, как ответить. Добавьте статический маршрут на домашнем роутере для 10.77.0.0/24 со следующим переходом 192.168.50.10 и прочитайте, что wg-quick выводит из AllowedIPs в своей справке. Без этого маршрута завершённое рукопожатие сосуществует с ответами приложения, которые никогда не приходят.
Если роутер не может нести этот маршрут, выберите документированную схему возврата. Тихая добавление NAT вместо этого меняет модель источника, которую вы только что записали.
Разрешите одну службу, а не подсеть
Включите пересылку IPv4 на шлюзе и держите три обязанности межсетевого экрана раздельно: пропустите слушателя WireGuard, пересылайте источник ноутбука только на 192.168.50.20 и оставьте остальную домашнюю сеть закрытой для этого peer. Интегрируйте правила в уже используемый менеджер экрана, а не очищайте его. Маршрут для всего домашнего префикса — не разрешение использовать каждое устройство внутри.
Собственная аутентификация приложения и экран хоста — отдельные ворота. Назовите службу, которую разрешает набор правил, чтобы следующий проверяющий мог сверить её с задуманной задачей.
Проверьте снаружи, затем выведите чисто
Поднимите профили через их владельца, подтвердите рукопожатие, затем запустите нужное приложение из одобренной внешней сети и проверьте ответ. Попробуйте домашнюю службу, которая должна остаться запрещённой, ведь разрешающее правило незаметно, пока что-нибудь им не воспользуется. Для HTTPS используйте имя из сертификата и дайте проверке выполниться; ввод сырого адреса и проход через предупреждение ничего не доказывают о пути. PersistentKeepalive необязателен: он помогает peer за NAT после простоя, но это не отсутствующий маршрут и не исправление прав.
Динамический публичный адрес требует обновлений DNS, и ноутбук должен заново разрешить свою конечную точку после изменения; новые записи DNS не перемещают настроенную конечную точку. Выведите ноутбук, удалив его peer из сохранённой и активной конфигурации; удаление только профиля ноутбука не отзывает авторизацию шлюза.