LINUX.ORG.RU
ФорумAdmin

OpenWRT NAT POSTROUTING

 , ,


0

1

Добрый день. Есть сервис, который висит на 54 порту. Хочу, чтобы с него выходил трафик и исходный порт был 53.

через nft

nft add table ip nat

nft create chain ip nat postrouting ‘{ type nat hook postrouting priority srcnat; }’

nft add rule ip nat postrouting ip udp sport 54 counter

Аналогично и с iptables-legacy

Для начала хочу просто посмотреть, ходят ли пакеты или нет. В итоге никакие пакеты не ходят. Но если запускать tcpdump port 54, то сниффер видит все пакеты, которые уходят с порта 54. Но почему я не вижу их в postrouting nft или iptables? В цепочке OUTPUT вижу, но там нельзя сделать SNAT. Как их заставить проставлять мой порт? ip forward = 1. Благодарю за ответы)



Последнее исправление: WeSTMan (всего исправлений: 2)

SNAT делается в цепочке postrouting

nft add table ip my_postrouting
nft create chain ip my_postrouting my_snat { type nat hook postrouting priority srcnat \;}
nft add rule ip my_postrouting my_snat udp sport 54 snat to <my_ip>:53
Marakoza
()
Ответ на: комментарий от WeSTMan

Так, кажется нужен не snat а mangling raw

nft add table raw
nft create chain raw output { type filter hook output priority -300 \;}
nft add rule raw output udp sport 54 udp sport set 53
Marakoza
()
Ответ на: комментарий от Marakoza

Ого, это работает. А можете объяснить, почему SNAT не заработал? Спасибо большое!

И как я понял, то приоритет можно поставить просто 0, так как нигде src port не изменяется

WeSTMan
() автор топика
Последнее исправление: WeSTMan (всего исправлений: 2)
Ответ на: комментарий от WeSTMan

Не смогу внятно объяснить, приведу ссылку, откуда я сам почерпнул эту инфу. man nft

Marakoza
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.