2009-05-06 2 views
3

У меня есть правило, настроенное для удаления пакетов udp/tcp с соответствующими строками. однако моя программа, которая захватывает пакет с использованием libpcap, все еще может видеть этот пакет.iptables и libpcap

Почему это /, какими должны быть правила iptable для удаления пакетов, прежде чем он увидит libpcap?

Есть ли вообще, возможно, кроме правил iptables, чтобы удалить этот пакет, прежде чем он увидит libpcap/tcpdump?

ответ

7

Yes, libpcap sees all the packets.. Они захватываются, прежде чем обрабатываться сетевым фильтром.

+0

спасибо, любым другим способом, кроме iptables, отказаться от этих пакетов, прежде чем они достигнут libpcap? – Kazoom

+0

Если это не-lan-пакеты, вы можете удалить их на маршрутизаторе. –

+0

Также программы на основе libpcap обычно позволяют вам предоставлять фильтр в стандартном формате tcpdump. –

-2

Невозможно использовать libpcap для просмотра пакетов до netfilter, netfilter является модулем ядра и обрабатывает все пакеты до того, как они попадают в пользовательский режим, он даже может видеть пакеты до того, как ядро ​​увидит его. Не могли бы вы объяснить дальнейшие объяснения? Возможно, что libpcap также устанавливает привязки на netfilter, которые перезаписывают файл в iptables. Реальная проблема заключается в том, что поиск и то, что крючки устанавливаются на netfilter, далеко не тривиальны и могут выполняться только в режиме ядра. Изучите, как libpcap получает пакеты.

+0

libpcap не использует сетевые крючки для захвата пакетов. libpcap захватывает пакеты перед передачей в стек TCP/IP – codingfreak

0

Вы пытались изменить приоритет используемого вами сетевого фильтра? если вы попытаетесь подключиться с наивысшим приоритетом для входящих пакетов, он получит пакет до кода ядра сокета пакета, который использует libpcap для захвата пакетов.

* Я предполагаю, что вы используете Linux *

EDIT: Libpcap использует различные способы захвата пакетов - в соответствии с ОС. на linux он использует пакетный сокет, который реализован в коде ядра с использованием рамки netfilter.