Когда дома уже есть Proxmox, Grafana, AdGuard, внутренние панели и SSH, очень быстро приходит мысль: хватит держать админку наружу, пора заходить через VPN. В моём случае для этого подошёл самый прямой вариант — WireGuard прямо на роутере Keenetic Giant.
Такой подход удобен по двум причинам:
- VPN поднимается на входной точке сети, а не на одном из серверов
- после подключения клиент сразу видит домашние сегменты так, будто он дома
Что использовалось
Реальная база такая:
- роутер:
Keenetic Giant (KN-2610) - версия:
KeeneticOS 5.00.C.8.0-1 - VPN-сеть:
10.66.66.0/24 - адрес роутера внутри туннеля:
10.66.66.1 - порт WireGuard:
51820
Сейчас интерфейс на роутере выглядит так:
interface Wireguard0
description WG-Server
security-level private
ip address 10.66.66.1 255.255.255.0
ip mtu 1324
wireguard listen-port 51820
Почему WireGuard лучше поднимать на роутере
До этого я рассматривал три варианта:
- на
Keenetic - на
Proxmox - на внешнем сервере
В итоге роутер победил, потому что:
- он и так является точкой входа в домашнюю сеть
- не нужно отдельно думать, как добраться до
192.168.1.0/24,10.22.2.0/24и10.22.3.0/24 - если подключился к VPN, ты уже внутри нужной топологии
Для удалённого администрирования с телефона и планшета это самый логичный вариант.
Какие сети я пускаю через туннель
У меня через WireGuard нужны такие сегменты:
192.168.1.0/24— основная домашняя сеть10.22.2.0/24— серверный сегмент10.22.3.0/24— DMZ10.66.66.0/24— сама VPN-сеть
На стороне роутера это отражено и в маршрутах, и в allowed-ips пира:
wireguard peer
allow-ips 10.66.66.2 255.255.255.255
allow-ips 192.168.1.0 255.255.255.0
allow-ips 10.22.2.0 255.255.255.0
allow-ips 10.22.3.0 255.255.255.0
И отдельными маршрутами:
ip route 192.168.1.0 255.255.255.0 Wireguard0 auto
ip route 10.22.2.0 255.255.255.0 Wireguard0 auto
ip route 10.22.3.0 255.255.255.0 Wireguard0 auto
Важный момент про private-сегменты
На Keenetic очень легко споткнуться о внутреннюю логику security-level private.
У меня сейчас включено:
isolate-private
Это значит, что просто поднять WireGuard мало. Если домашняя сеть, серверный сегмент и VPN-подсеть помечены как private, доступ между ними нужно осознанно разрешать правилами межсетевого экрана.
То есть реальная схема такая:
- поднимаем
WireGuard - выдаём клиенту адрес, например
10.66.66.2/32 - добавляем маршруты
- отдельно настраиваем firewall rules между
Wireguard0и нужными сегментами
Именно на этом месте чаще всего кажется, что VPN «не работает», хотя на самом деле не хватает правил между сегментами.
Как понять, что туннель жив
Самая полезная проверка на Keenetic:
show interface Wireguard0
Если всё хорошо, там видно:
link: upconnected: yesstate: upstatus: up- у пира
online: yes - растут
rxbytes/txbytes - есть
last-handshake
У меня в рабочем состоянии это выглядит именно так.
Что проверять после первого подключения
После первого успешного рукопожатия я проверяю не «вообще интернет», а конкретные вещи:
- пингуется ли
10.66.66.1 - пингуется ли
192.168.1.16(Proxmox) - открывается ли нужная внутренняя админка
- работают ли внутренние DNS-имена
Так быстрее понять, где проблема:
- в самом туннеле
- в маршрутах
- в DNS
- или уже в firewall rules между сегментами
Практический итог
Если нужен удалённый доступ в домашнюю серверную инфраструктуру, WireGuard на Keenetic — отличный вариант:
- быстрый
- простой
- хорошо подходит для планшета и телефона
- не требует городить отдельный VPN-сервер в
Proxmox
Но есть один важный нюанс: если у тебя сеть уже разделена на несколько private-сегментов, обязательно планируй правила между ними. Иначе туннель будет «поднят», а доступ до серверов всё равно не появится.
Источники
- WireGuard VPN на Keenetic: https://help.keenetic.com/hc/ru/articles/360010592379-WireGuard-VPN
- Доступ в Интернет через WireGuard-туннель: https://help.keenetic.com/hc/ru/articles/360010551419
Добавить комментарий