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, пакеты сразу начинают проходить. В чем может быть проблема? Спасибо заранее.
  • Вопрос задан
  • 4432 просмотра
Пригласить эксперта
Ответы на вопрос 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.
Как вариант, найдите ПО, которое будет возвращать пакеты ядру.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы