C ++ странные RAW сокеты и проблема с iptables - PullRequest
0 голосов
/ 18 октября 2010

Что касается перенаправления 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 или что-то связанное с необработанными сокетами?

1 Ответ

0 голосов
/ 28 декабря 2010

необработанные сокеты получают копию исходного пакета до изменения (входящего). На исходящем все наоборот.

...