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

перенаправление портов iptables для активных UDP-соединений

Я пытаюсь настроить переадресацию портов по UDP из port 12345 к port 54321 используя следующее:

iptables -t nat -A PREROUTING -p udp -i eth0 -d 192.168.0.1  --dport 12345 -j DNAT --to 192.168.0.1:54321

iptables -A FORWARD -p udp -i eth0 -d 192.168.0.1 --dport 54321 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Это отлично работает для новых подключений, однако не работает для активных в данный момент подключений.

Чтобы пояснить, что я имею в виду, допустим, что перед добавлением правил есть активное соединение от 192.168.0.2:55555 <---> 192.168.0.1:12345, и я пытаюсь перенаправить все входящие соединения на 192.168.0.1:12345 к 192.168.0.1:54321.

После добавления двух вышеупомянутых правил все остальные пакеты, предназначенные для 192.168.0.1:12345 получены в 192.168.0.1:54321 кроме тех из 192.168.0.2:55555.

Думаю, здесь играет роль состояние соединения. Как я могу решить эту проблему и получить пакеты из 192.168.0.1:55555 суждено port 12345 быть доставленным port 54321?

Разобрался как это сделать!

Вам нужно использовать REDIRECT на NAT! Однако перед этим вы должны удалить запись, соответствующую этому соединению, из conntrack! Что-то вроде следующего

conntrack -D -p udp -d  192.168.0.1 --dport=55555