Спасибо — сейчас пока не хватает данных, чтобы сказать точно. Ниже — короткий чеклист причин и набор команд для диагностики + примеры правильных правил. Выполни эти проверки и пришли выводы (особенно конфиги OpenVPN сервера/клиента и выводы команд), тогда помогу точечно.
1) Быстрая проверка (на VPS)
- Включён ли IP-форвардинг?
- Команда: sysctl net.ipv4.ip_forward
- Ожидаемо: net.ipv4.ip_forward = 1
- Если 0: sudo sysctl -w net.ipv4.ip_forward=1 и сохранить в /etc/sysctl.conf
- Есть ли NAT / DNAT правило?
- Покажи: sudo iptables -t nat -L -n -v
- Пример для перенаправления порта 1234 -> клиент 10.8.0.6:1234:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1234 -j DNAT --to-destination 10.8.0.6:1234
sudo iptables -A FORWARD -d 10.8.0.6/32 -p tcp --dport 1234 -j ACCEPT
- Разрешено ли FORWARD в фильтрующей таблице?
- Покажи: sudo iptables -L FORWARD -n -v
- Нужно, чтобы не было блокировок, либо явно разрешить трафик к VPN-IP клиента.
2) Проверки трафика (отлов пакетов)
- На VPS:
sudo tcpdump -n -i eth0 port 1234
sudo tcpdump -n -i tun0 host 10.8.0.6 and port 1234
- Посмотри: доходят ли пакеты на eth0 и появляются ли на tun0 после DNAT.
- На клиенте (или целевом ПК):
sudo tcpdump -n -i tun0 port 1234
- Доходит ли пакет вообще до клиента? Если нет — проблема на стороне сервера (DNAT/форвард/маршрут).
3) Локальные проверки сервиса
- На клиенте проверь, что сервис слушает на нужном порту и интерфейсе:
sudo ss -ltnp | grep 1234
- Желательно слушать либо 0.0.0.0, либо конкретно VPN-интерфейс (tun0), либо localhost + проброс на клиенте.
- Проверь соединение с VPS с клиента через VPN:
curl http://10.8.0.1:80 (например тест сервера) или с VPS curl 10.8.0.6:1234
4) Общие частые причины и решения
- Неправильный IP в DNAT: нужно DNAT на VPN-адрес клиента (например 10.8.0.x), а не на его локальный LAN-адрес.
- Нет маршрута/форварда: net.ipv4.ip_forward=1 и iptables FORWARD должно разрешать.
- Фаервол провайдера/VPS (облако) блокирует порт — проверь security group / cloud firewall.
- Если используешь UFW, он может перезаписывать iptables; для UFW нужно добавить правила в /etc/ufw/before.rules и разрешить forwarding.
- Клиентский брандмауэр (iptables/nftables/Windows firewall) может блокировать входящие на сервис.
- OpenVPN topology: если у тебя net30/iroute/ccd, убедись, что используешь правильный VPN-IP клиента (особенно при статических назначениях через CCD).
- Если пытаешься переслать на локальный IP клиента (не VPN IP) без дополнительных маршрутных настроек — не сработает. Либо DNAT на VPN-IP, либо настроить маршрутизацию/iroute.
5) Полезные команды, приклей выводы сюда
- ifconfig / ip addr (на VPS и на клиенте)
- ip route
- iptables -t nat -L -n -v
- iptables -L FORWARD -n -v
- sysctl net.ipv4.ip_forward
- sudo tcpdump -n -i tun0 port <порт> (и на eth0 VPS)
6) Пример минимальной рабочей настройки (VPS)
- OpenVPN server: серверная подсеть 10.8.0.0/24, клиент получает 10.8.0.6
- DNAT:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 10.8.0.6:80
sudo iptables -A FORWARD -d 10.8.0.6/32 -p tcp --dport 80 -j ACCEPT
- Включить форвард:
sudo sysctl -w net.ipv4.ip_forward=1
Если пришлёшь:
- server.conf и client.conf,
- выводы команд из пункта 5,
- вывод tcpdump (если запущал),
я пошагово разберу, где именно «теряются» пакеты и как это исправить.