Разрешение удаленного адреса из локальной сети не работает.

Вопрос или проблема

У меня есть локальная сеть с сервером Proxmox, работающим на WireGuard (192.168.3.233) в контейнере Debian. В этой сети у меня есть ПК с Windows (192.168.3.167), к которому я хотел бы подключиться через RDP с моего удаленного ПК (192.168.3.251, интерфейс WireGuard). Когда ПК находятся в одной локальной сети, я могу отправлять ping-запросы от одного к другому. Однако, как только я подключаю удаленный ПК через WireGuard, другие хосты не могут разрешить адрес (192.168.3.251).

Вот моя конфигурация WireGuard на Proxmox:

[Interface]

Address = 192.168.3.250/24

SaveConfig = true

PostUp = iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT
PostUp = iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT
PostUp = iptables -A INPUT -i wg0 -p icmp -j ACCEPT
PostUp = iptables -A INPUT -i wg0 -p tcp --dport 3389 -j ACCEPT
PostUp = iptables -A INPUT -s 192.168.3.167 -p icmp --icmp-type echo-request -j ACCEPT
PostUp = iptables -A INPUT -s 192.168.3.167 -p tcp --dport 3389 -j ACCEP
PostUp = iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -j ACCEPT
PostUp = iptables -A INPUT -i eth0 -p tcp --dport 3389 -j ACCEPT

PostDown = iptables -D FORWARD -i wg0 -o eth0 -j ACCEPT
PostDown = iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT
PostDown = iptables -D INPUT -i wg0 -p icmp -j ACCEPT
PostDown = iptables -D INPUT -i wg0 -p tcp --dport 3389 -j ACCEPT
PostDown = iptables -D INPUT -s 192.168.3.167 -p icmp --icmp-type echo-request -j ACCEPT
PostDown = iptables -D INPUT -s 192.168.3.167 -p tcp --dport 3389 -j ACCEPT
PostDown = iptables -D INPUT -i eth0 -p icmp --icmp-type echo-request -j ACCEPT
PostDown = iptables -D INPUT -i eth0 -p tcp --dport 3389 -j ACCEPT

ListenPort = 51820
PrivateKey =

[Peer]

PublicKey =
AllowedIPs = 192.168.3.251/32

Вот моя удаленная конфигурация:

[Interface]

PrivateKey =
Address = 192.168.3.251/32
MTU = 1420
DNS = 1.1.1.1

[Peer]

PublicKey =

AllowedIPs = 192.168.3.167/32
Endpoint = x.duckdns.org:51820
PersistentKeepalive = 21

Вот tcpdump на Proxmox:

19:09:16.635180 IP (tos 0x0, ttl 128, id 41345, offset 0, flags [none], proto ICMP (1), length 60)
192.168.3.251 > 192.168.3.167: ICMP echo request, id 1, seq 29, length 40
19:09:16.635438 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.3.251 tell 192.168.3.233, length 28

Есть идеи, почему удаленный адрес не разрешается? Буду очень признателен за помощь, я и ChatGPT уже некоторое время пытаемся разобраться.

Я пробовал много различных конфигураций iptables, разные хосты и т. д. Но похоже, что ничего не работает. Я не нахожу людей, которые пробовали бы точно то же самое, чтобы следовать их руководствам.

Ответ или решение

Решение проблемы с доступом к удаленному адресу из локальной сети при использовании WireGuard

Ваша ситуация описывает проблему с доступом к компьютеру в локальной сети (192.168.3.167) с удаленного ПК (192.168.3.251), когда последний подключен через WireGuard. Из вашего описания видно, что ICMP-запросы (ping) не проходят от удаленного ПК, что указывает на возможные проблемы в конфигурации маршрутизации или в правилах iptables. Рассмотрим решение этой проблемы подробнее.

Анализ конфигурации WireGuard

Конфигурация Proxmox

Ваша конфигурация WireGuard на Proxmox выглядит следующим образом:

  1. [Interface] секция настроена правильно с заданным IP-адресом для интерфейса WireGuard.
  2. PostUp и PostDown правила имеют смысл; однако, есть некоторые недоработки, которые требуют внимания:
    • Проблема заключается в том, что вы добавляете правила для ICMP и TCP только для локального IP 192.168.3.167. Это может привести к проблемам с маршрутизацией пакетов от удаленного ПК к указанному IP.
    • Также настройки AllowedIPs для пира (Peer) на удаленной конфигурации допускают только IP 192.168.3.167, что может блокировать трафик.

Конфигурация удаленного ПК

Параметры удаленного клиента также требуют корректировки:

  1. AllowedIPs = 192.168.3.167/32: это значит, что удаленный клиент сможет обмениваться данными только с 192.168.3.167. Попробуйте изменить это на AllowedIPs = 192.168.3.0/24, чтобы разрешить доступ к другим IP в вашей локальной сети.

Рекомендации для настройки iptables

Рекомендуется внести следующие изменения в конфигурацию iptables на Proxmox для улучшения маршрутизации:

PostUp = iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT
PostUp = iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT
PostUp = iptables -A INPUT -i wg0 -p icmp -j ACCEPT
PostUp = iptables -A INPUT -i wg0 -p tcp --dport 3389 -j ACCEPT
PostUp = iptables -A INPUT -s 192.168.3.0/24 -p icmp -j ACCEPT
PostUp = iptables -A INPUT -s 192.168.3.0/24 -p tcp --dport 3389 -j ACCEPT

И не забудьте удалить все специфические правила для 192.168.3.167, чтобы не создавать задержек в маршрутизации пакетов.

Проверка маршрутизации и сетевых соединений

  1. Тестирование сети:

    • Убедитесь, что ваш удаленный ПК может пинговать другие устройства в локальной сети (например, Proxmox 192.168.3.233 или любой другой IP).
    • Используйте команду traceroute для изучения маршрута пакетов от удаленного ПК до компьютера Windows.
  2. Логи и диагностика:

    • Проверьте логи WireGuard для получения дополнительной информации о подключении и попытках установить соединение.
    • Выполните tcpdump на интерфейсе WireGuard, чтобы следить за входящими и исходящими соединениями.

Заключение

Ваша проблема с доступом к удаленному компьютеру из локальной сети при использовании WireGuard может быть устранена путем настройки правил маршрутизации и iptables. Внесение изменений в конфигурации WireGuard и корректировка параметров AllowedIPs помогут обеспечить корректный обмен данными между удаленным ПК и локальной сетью. Не забывайте про регулярную проверку сетевых подключений и анализ логов для более глубокого понимания текущих проблем.

Если у вас возникнут дополнительные вопросы или потребуется дальнейшая поддержка, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...