Question

J'ai établi une règle pour abandonner les paquets udp / tcp avec les chaînes correspondantes. Cependant, mon programme qui capture les paquets en utilisant libpcap est toujours capable de voir ce paquet.

Pourquoi ceci /, quelles devraient être les règles iptables pour supprimer les paquets avant qu'ils ne soient vus par libpcap?

Y a-t-il un moyen, peut-être autre que les règles iptables, de supprimer ce paquet avant qu'il ne soit vu par libpcap / tcpdump?

Était-ce utile?

La solution

Oui, libpcap voit tous les paquets . Ils sont capturés avant d'être traités par le netfilter.

Autres conseils

Avez-vous essayé de changer la priorité du hook Netfilter que vous utilisez? si vous essayez de vous accrocher avec la priorité la plus haute pour les paquets entrants, il obtiendra le paquet avant le code du noyau du socket, ce qui correspond à la manière dont libpcap utilise pour capturer les paquets.

* Je suppose que vous utilisez linux *

EDIT: Libpcap utilise différentes méthodes pour capturer les paquets - en fonction du système d'exploitation. sur linux, il utilise le socket de paquet qui est implémenté dans le code du noyau en utilisant le framework netfilter.

Il n’ya aucun moyen pour libpcap de voir les paquets avant netfilter, netfilter est un module du noyau et traite tous les paquets avant qu’ils ne passent en mode utilisateur. Il peut même voir les paquets avant que le noyau ne les voie. Pourriez-vous expliquer plus d'expliquer? Il est possible que libpcap établisse également des points d'ancrage sur netfilter qui écrasent ceux de iptables. Le vrai problème est que regarder et définir les points d'ancrage sur netfilter est loin d'être anodin et ne peut être fait qu'en mode noyau. Étudiez comment libpcap récupère les paquets.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top