Что касается перенаправления C ++ iptables, формирующего отдельные пакеты , то сейчас я сталкиваюсь с чрезвычайно специфической проблемой.Я пытаюсь перенаправить весь входящий трафик с UDP-порта 5060 на порт 56790 и весь исходящий трафик с 5060 на порт 56789. Я использовал эти правила iptables:
iptables -t nat -I PREROUTING -p udp ! -s localhost --dport 5060 -j REDIRECT --to-port 56790
iptables -t nat -I OUTPUT -p udp ! -s localhost --sport 5060 -j REDIRECT --to-port 56789
Я прослушиваю оба порта, используя RAW SOCKETSпосле установки интерфейса в режим PROMISCUOUS с помощью ioctl.
Я вижу пакеты ТОЛЬКО на стороне 56789, т.е. ОТПРАВЛЯЮЩУЮ, и не вижу пакетов на 56790, в то время как wireshark показывает, что много пакетов доставлено на порт 5060.
Почему это произошло?Есть идеи?Как вы думаете, это проблема правил iptables или что-то связанное с необработанными сокетами?