Задать вопрос
ttas
@ttas

Почему не работает NFQUEUE?

Уважаемые профессионалы! Есть VPS. Задача: ловить все TCP-пакеты от определенного пользователя и записывать их в файл. Казалось бы, ничего сложного - из iptables через NFQUEUE, далее ловить на dumpcap. Но на виртуальной машине не работает. Какие могут быть соображения? Помогите, пожалуйста.

Ниже привожу упрощенный тест по попытке соединения с 80 портом.
# iptables -A OUTPUT -m tcp -p tcp --dport=80 -j NFQUEUE --queue-num=2
# dumpcap -i nfqueue:2 &
[1] 20424
# Capturing on nfqueue:2
File: /tmp/wireshark_nfqueue-2_20140512211225_1QWcTP

# telnet google.com 80
Trying 74.125.136.138...
telnet: connect to address 74.125.136.138: Connection timed out
Trying 74.125.136.113...
^C
# fg
dumpcap -i nfqueue:2
Packets captured: 0
Packets received/dropped on interface nfqueue:2: 0/0 (0.0%)
# iptables -D OUTPUT -m tcp -p tcp --dport=80 -j NFQUEUE --queue-num=2
# telnet google.com 80
Trying 74.125.136.113...
Connected to google.com.
Escape character is '^]'.
^]

telnet> Connection closed.
# uname -r
2.6.32-042stab085.17
# dumpcap -v
Dumpcap 1.8.10 (SVN Rev Unknown from unknown)

Copyright 1998-2013 Gerald Combs <gerald@wireshark.org> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with GLib 2.26.1, with libpcap, with libz 1.2.3, without POSIX
capabilities.

Running on Linux 2.6.32-042stab085.17, with locale en_US.UTF-8, with libpcap
version 1.4.0, with libz 1.2.3.

Built using gcc 4.4.7 20120313 (Red Hat 4.4.7-4).

See www.wireshark.org for more information.
# iptables
iptables v1.4.7: no command specified
Try `iptables -h' or 'iptables --help' for more information.
Как видно, как только убираю правило, связанное с NFQUEUE, пакеты сразу начинают проходить. В чем может быть проблема? Спасибо заранее.
  • Вопрос задан
  • 4533 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Albibek
@Albibek
Вопросы есть? А если найду?
NFQUEUE
This target passes the packet to userspace using the nfnetlink_queue handler. ... Userspace must then drop or reinject the packet into the kernel.

При использовании NFQUEUE пакеты "выкидываются" из обработки ядром.
Сначала пролублируйте пакеты при помощи -j TEE на другой адрес или порт, и там уже ловите через NFQUEUE.
Как вариант, найдите ПО, которое будет возвращать пакеты ядру.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы