2010-10-18 2 views
0

Со ссылкой на C++ iptables redirection forming separate packets, перед нами стоит очень своеобразная проблема. Я пытаюсь перенаправить весь входящий трафик на UDP порт 5060 к порту 56790, и весь исходящий трафик от 5060 к порту 56789. Я использовал эти Iptables правила:C++ странные разъемы RAW и 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 стороне i.e.SENDING, и я не вижу каких-либо пакетов на 56790, в то время как Wireshark показывает, что многие пакеты доставляются в порт 5060.

Почему это произошло? Есть идеи? Считаете ли вы, что это проблема с правилами iptables или что-то делать с сырыми сокетами?

+0

Я пробовал это на TWO ubuntu 10.04 машины сейчас .. То же самое происходит. PREROUTING REDIRECT просто не работает. Что происходит не так? !! :( – SkypeMeSM

+0

Я думаю, что вы должны использовать таблицу «mangle», если вы используете действие «-j REDIRECT». –

+0

В любом случае конфигурация iptables является темой для serverfault, голосование для перемещения. –

ответ

0

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