Приложение Linux отправляет UDP без сокета - PullRequest
0 голосов
/ 26 сентября 2011

товарищи по кодированию. Я отслеживаю исходящий трафик с помощью модуля libnetfilter_queue и правила iptables ipatbles -I OUTPUT 1 -p all -j NFQUEUE --queue-num 11220

Определенное приложение под названием Jitsi (которое работает на Java) демонстрирует такое странное поведение, с которым раньше не сталкивалось: Моя программа мониторинга, которая обрабатывает пакеты NFQUEUE, ясно показывает, что пакеты UDP отправляются, все же, когда я смотрю в: «/ proc / net / udp» и «/ proc / net / udp6» они пусты, более того, «/ proc / net / protocol» имеет столбец «сокеты» для UDP и равен 0. Но UDP-пакеты продолжают отправляться. Затем, через минуту или около того, "/ proc / net / udp" и "/ proc / net / protocol" начинают показывать правильную информацию о пакетах UDP. И снова через некоторое время в них нет информации во время отправки пакетов UDP.

Мой единственный вывод заключается в том, что приложение каким-то образом может отправлять UDP-пакеты без создания сокета и / или возможно создать сокет, а затем удалить его (чтобы ядро ​​решило, что его нет) и по-прежнему использовать неясные данные. способ отправки пакетов наружу.

Может ли кто-нибудь с идеями о таком поведении протянуть руку, пожалуйста?

Ответы [ 2 ]

4 голосов
/ 26 сентября 2011

Две идеи:

Попробуйте запустить приложение через strace и посмотрите на этот вывод.

Вы также можете попробовать запустить его через systemtap с фильтром для операций с сокетами. По этой ссылке:

probe kernel.function("*@net/socket.c").call {
  printf ("%s -> %s\n", thread_indent(1), probefunc())
}
probe kernel.function("*@net/socket.c").return {
  printf ("%s <- %s\n", thread_indent(-1), probefunc())
}
0 голосов
/ 28 сентября 2011

Спасибо, Пол Рубель, за подсказку в правильном направлении.strace показал, что приложение Java использует сокеты IPv6.Я внимательно посмотрел на / proc / net / udp6 и там были такие сокеты.В первый раз я, вероятно, слишком поверхностно смотрел в основном, потому что даже не ожидал найти их там.Впервые я наткнулся на пакеты IPv4 через сокеты IPv6.Но это то, что делает Java.Приветствия.

...