У меня есть рабочая локальная сеть (192.168.0.0/24) с множеством компьютеров с Windows 10 и Linux, к которым мне нужен доступ откуда угодно. Поскольку он находится за NAT ISP и недоступен извне, мне пришлось организовать глобально доступный удаленный сервер (my_server.my_domain.com) на Arch Linux k: 5.4 с Wireguard VPN (10.11.12.0/24) на борту. Вот картинка:
Каждое личное устройство, которое я использую в качестве клиентов VNC или SSH для доступа к рабочим машинам, подключается к VPN индивидуально, и у меня также есть одна машина с Windows 10 Home Edition на работе с настроенным подключением Wireguard. На диаграмме это показано пунктирными линиями. Все сетевые соединения между VPN-клиентами в подсети VPN работают как шарм: я могу легко подключиться с личного хоста (10.11.12.21) к упомянутому рабочему хосту (10.11.12.11).
Проблема в том, чтобы получить доступ к другим машинам в рабочей LAN с удаленных хостов. Я настроил переадресацию IP через regedit на рабочем хосте, подключенном к Wireguard (назовем его «шлюз WG») и статическому маршруту (10.11.12.0/24 через 192.168.0.11) на рабочем LAN / WAN маршрутизаторе. Пинг удаленного устройства с рабочего хоста, не подключенного напрямую к Wireshark (рабочий хост №2), в порядке (потеря пакетов отсутствует). Тем не менее, я не могу подключиться, скажем, к 192.168.0.12/24 с удаленного личного устройства. Tracerouting показывает, что пакеты теряются после шлюза WG. Я предполагаю, что проблема заключается в работе брандмауэров хостов Win10 (хотя я установил явное настраиваемое правило брандмауэра Защитника Windows «Разрешить весь трафик из и в подсеть 10.11.12.0/24»). При попытке подключиться к VNC 192.168.0.12:5900 истекло время ожидания, и анализ трафика Wireshark на шлюзе WG показывает, что возвращаются сообщения ICMP «192.168.0.12 -> 10.11.12.21 Назначение недоступно (порт недоступен)», хотя я могу использовать VNC для 5900 на эту машину из локальной сети легко. Я не могу настроить сетевой принтер на удаленном персональном устройстве, хотя подключение к веб-интерфейсу принтера через его порт 80 из браузера удаленного персонального устройства волшебным образом работает!
Пожалуйста, помогите все это настроить правильно.
Незначительная проблема №2: клиент Wireguard для Windows не добавляет дополнительные маршруты в соответствии со второй и последующими сетями AllowedIPs своей конфигурации (AllowedIPs = 10.11.12.0/24,192.168.0.0/24) в таблицу маршрутизации устройства, в то время как Linux делает. Мне все время приходится настраивать это вручную через Powershell на личных устройствах с Windows, и это совсем не удобно. Это ошибка или просто недостаток функции?
Конфиги Wireguard:
Сервер:
[Interface]
Address = 10.11.12.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 60000
PrivateKey = [KEY]
## Personal Host 1
[Peer]
PublicKey = [KEY]
AllowedIPs = 10.11.12.21/32
## WG gateway at work
[Peer]
PublicKey = [KEY]
AllowedIPs = 10.11.12.11/32
AllowedIPs = 192.168.0.0/24
Персональный хост 1 (Win 10):
[Interface]
Address = 10.11.12.21/24
PrivateKey = [KEY]
[Peer]
PublicKey = [KEY]
AllowedIPs = 10.11.12.0/24,192.168.0.0/24
Endpoint = my_server.my_domain.com:60000
PersistentKeepAlive = 20
Шлюз WG в работе (Win 10):
[Interface]
Address = 10.11.12.11/24
PrivateKey = [KEY]
[Peer]
PublicKey = [KEY]
AllowedIPs = 10.11.12.0/24
Endpoint = my_server.my_domain.com:60000
PersistentKeepAlive = 20
Соответствующий срез системной таблицы маршрутизации шлюза WG (печать маршрута):
0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.11 25
10.11.12.0 255.255.255.0 On-link 10.11.12.11 261
10.11.12.11 255.255.255.255 On-link 10.11.12.11 261
10.11.12.255 255.255.255.255 On-link 10.11.12.11 261
192.168.0.0 255.255.255.0 On-link 192.168.0.11 281
192.168.0.11 255.255.255.255 On-link 192.168.0.11 281
192.168.0.255 255.255.255.255 On-link 192.168.0.11 281