Вопрос или проблема
У меня есть виртуальная машина (VM), работающая в локальной сети с IP-адресом 192.168.1.99
.
Эта виртуальная машина использует Wireguard в качестве клиента, подключенного к удаленному серверу ProtonVPN (настроил wg через Proton). VPN-соединение работает хорошо.
На этой же виртуальной машине размещены различные сервисы с веб-интерфейсами, доступными на локальных портах. Например, простой веб-сайт на порту 8080
.
Когда я останавливаю сервис wg-quick
на виртуальной машине, то с другого узла в сети (например, с моего ноутбука с IP 192.168.1.15
) я могу без проблем получить доступ к локальному сайту по адресу 192.168.1.99:8080
. Однако, когда я запускаю сервис wg-quick
, я больше не могу получить доступ к порту 8080
на моей виртуальной машине. Это только один пример, но есть много таких портов, к которым мне нужно получить доступ, 8080
, 8888
, 8443
и т.д.
Мой файл wg0.conf
выглядит примерно так:
[Interface]
PrivateKey = ############
Address = 10.2.0.2/32
DNS = 10.2.0.1
[Peer]
PublicKey = ############
AllowedIPs = 0.0.0.0/0
Endpoint = x.x.x.x:51820
Я не настраивал никакие конкретные правила для фаервола или NAT.
Могу ли я обновить мой wg0.conf
так, чтобы разрешить доступ к сервисам/портам на моей виртуальной машине через LAN? В противном случае, какие шаги мне нужно предпринять, чтобы получить доступ к этим сервисам?
Ответ или решение
Для решения проблемы доступа к портам Wireguard-клиента с отдельного узла в локальной сети, необходимо учитывать несколько ключевых аспектов, включая особенности маршрутизации и конфигурацию сети. Рассмотрим эту задачу подробнее.
Теория
Когда вы подключаетесь через VPN, ваш компьютер/устройство начинает передавать весь сетевой трафик через этот туннель, и все запросы от локальных адресов (например, 192.168.1.99) становятся недоступными другим устройствам в вашей локальной сети (например, вашему ноутбуку с IP 192.168.1.15). Это происходит из-за того, что конфигурация Wireguard направляет весь трафик через туннель, игнорируя локальные маршруты.
Строка AllowedIPs = 0.0.0.0/0
в файле конфигурации wg0.conf
указывает на то, что весь трафик направляется через VPN. Это включает как исходящий, так и входящий трафик, что может препятствовать доступу к вашим локальным сервисам с веб-интерфейсом другими устройствами на вашей LAN.
Пример
Рассмотрим следующий пример конфигурации wg0.conf
и как возможно изменить его для достижения поставленной цели:
[Interface]
PrivateKey = ############
Address = 10.2.0.2/32
DNS = 10.2.0.1
[Peer]
PublicKey = ############
AllowedIPs = 0.0.0.0/0
Endpoint = x.x.x.x:51820
Как вы указали, при активации wg-quick
, трафик, включая запросы к вашим локальным сервисам, перестает достигать VM. Это потому, что маршрутизирующий протокол Wireguard передаёт весь трафик в туннель, и, следовательно, как только интерфейс Wireguard включен, запросы от локальных IP (например, 192.168.1.15:8080) становятся недоступными.
Применение
Чтобы обеспечить доступ к вашим сервисам, работающим на VM через Wireguard, вам необходимо будет сделать следующее:
-
Изменение конфигурации Wireguard для маршрутизации локального трафика.
Для этого, измените строку
AllowedIPs
в вашем файле конфигурации. Вместо0.0.0.0/0
укажите адрес локальной подсети, которую необходимо маршрутизировать вне туннеля. Например:AllowedIPs = 0.0.0.0/0, 192.168.1.0/24
Это позволит трафику, направленному к вашей локальной сети (например, 192.168.1.0/24), обходить туннель Wireguard, предоставляя доступ вашим устройствам на LAN к сервисам.
-
Проверка правил брандмауэра:
Убедитесь, что брандмауэр на вашей VM позволяет входящие соединения с вашей локальной сети. Вы можете использовать
iptables
илиufw
для обеспечения того, что соединения от устройств внутри вашей LAN разрешены. Например, в случаеiptables
:sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 8080 -j ACCEPT
-
Возможности для NAT (если необходимо):
В зависимости от настройки ваших маршрутизаторов и маскарадного NAT, возможно, вам придется добавить и другие правила, чтобы корректно маршрутизировать внешний трафик.
Реализовав эти изменения, вы должны иметь возможность доступа к сервисам на вашей VM, даже когда Wireguard активен. Это позволит вашим устройствам в локальной сети оставаться видимыми и достигать VM через стандартные IP-пакеты, не проходящие через VPN-туннель.
Важно учитывать, что изменение конфигурации VPN может повлиять на безопасность вашей сети, поэтому убедитесь, что все подключенные устройства защищены и доступны только доверенным пользователям.