Назад | Перейти на главную страницу

Пересылка TCP NAT работает, UDP - нет

Я использую компьютер 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.