VPN-сервер на Raspberry Pi: WireGuard, маршрутизация и безопасный удалённый доступ
Raspberry Pi удобно использовать как компактный VPN-шлюз для удалённого доступа к домашней или лабораторной сети. Для нового развёртывания WireGuard обычно проще старых схем с PPTP и легче в сопровождении.
Что понадобится
- Raspberry Pi с актуальной ОС и стабильным сетевым подключением;
- постоянный локальный IP;
- доступ к настройкам роутера;
- внешняя достижимость: публичный IP или другой способ входящего соединения.
Ключи WireGuard
У каждого peer есть собственная пара ключей. Закрытые ключи не передавайте и не храните в публичном репозитории. На сервере для клиента нужен только его public key и разрешённые адреса.
IP forwarding и маршрутизация
Если через VPN нужен доступ не только к Raspberry Pi, но и к другим устройствам LAN, сервер должен пересылать IP-пакеты. Далее настройте маршрут обратно к VPN-подсети на роутере либо NAT на Raspberry Pi — в зависимости от архитектуры сети.
Firewall
Откройте снаружи только UDP-порт WireGuard и разрешите необходимый транзит между VPN и LAN. Не отключайте firewall целиком ради диагностики.
Проброс порта на роутере
Если Raspberry Pi находится за домашним роутером с публичным адресом, перенаправьте выбранный UDP-порт на локальный адрес VPN-сервера. При CGNAT обычный port forwarding не поможет — потребуется внешний сервер, туннель или услуга публичного адреса.
Что указывать в AllowedIPs
Для доступа только к домашней сети укажите VPN-подсеть и нужные LAN-сети. Для полного туннеля добавляется маршрут всего IPv4/IPv6-трафика, но тогда сервер должен корректно маршрутизировать его в интернет.
Проверка
- есть handshake между peers;
- доступен VPN-адрес сервера;
- при необходимости доступны устройства LAN;
- DNS работает через ожидаемый сервер;
- после перезагрузки интерфейс WireGuard поднимается автоматически.