Я использую компьютер Ubuntu в качестве маршрутизатора. Он имеет локальную сеть, подключенную к eth0
а также подключен к Интернету с другим интерфейсом внутри OpenVPN.
Я настроил переадресацию портов NAT, чтобы получить доступ к нескольким устройствам в присоединенной подсети.
sudo iptables -A FORWARD -o eth0 -i tun0 -j ACCEPT
sudo iptables -A FORWARD -o eth0 -i tun0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -t nat -A PREROUTING -p udp -i tun0 --dport 14550 -j DNAT --to-destination 192.168.1.50:60000
sudo iptables -t nat -A PREROUTING -p tcp -i tun0 --dport 5000 -j DNAT --to-destination 192.168.1.2:5000
Из подсети я могу нормально выйти в Интернет, а с любого другого компьютера я могу подключиться к TCP-серверу, который перенаправляется на порт 5000.
Интерфейс eth0 маршрутизаторов Ubuntu имеет IP 192.168.1.1, а UDP-сервер - IP 192.168.1.50.
Я не могу понять, как заставить работать пересылку UDP. tcpdump
показывает мне, что UDP-сервер внутри подсети активен и может взаимодействовать с компьютером ubuntu, который действует как маршрутизатор.
Просто когда пытаюсь дотянуться до него извне, ничего не получается.
Спасибо
Извините, мы разобрались. У подключенного UDP-сервера возникла проблема при разговоре с разными подсетями. Он просто не отправлял никакого ответа, если подсеть не соответствовала напрямую подключенной. В противном случае конфигурация работала.
Кажется, есть дополнительный "." в конце вашего правила DNAT для UDP в части IP-адреса. Я считаю, что вы могли получить ошибку при попытке добавить правило и, возможно, не заметили этого. Может тебе стоит предоставить iptables свалка нац стол.
Из предоставленной вами информации не совсем ясно, разрешает ли ваша политика FORWARD пересылку или нет. Если нет - у вас нет правил для перенаправления трафика DNATted от tun0 к eth0.