O Wireshark usa libpcap para buscar dados da NIC antes que ela seja manipulada pelo sistema operacional. Veja o tutorial da libpcap para uma introdução à libpcap.
Eu recentemente instalei meu disco rígido em um novo computador e depois de algum tempo notei que as regras do iptables estavam perdendo respostas do DNS por algum motivo, eles foram configurados para permitir coisas no eth0, mas o eth8 é usado neste computador e tudo estava sendo descartado (não apenas DNS queires). De qualquer forma, eu estava usando o Wireshark simultaneamente para ver se os servidores DNS estavam respondendo às consultas e descobrindo que eles estavam. Mas eu acabei de perceber que o iptables estava derrubando os pacotes. Como o Wireshark pode ver os pacotes se eles estão sendo descartados?
Script usado para gerar o conjunto de regras:
# Flush all rules
iptables -F
iptables -X
# Allow unlimited traffic on loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow incomming traffic from estabilished and related connections
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Policy: Allow outgoing, deny incoming and forwarding
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
O Wireshark usa libpcap para buscar dados da NIC antes que ela seja manipulada pelo sistema operacional. Veja o tutorial da libpcap para uma introdução à libpcap.