Existe uma maneira de descobrir qual regra do iptables foi responsável por descartar um pacote?

31

Eu tenho um sistema que veio com um firewall já instalado. O firewall consiste em mais de 1000 regras de tabelas de ip. Uma dessas regras é o descarte de pacotes que não quero que sejam descartados. (Eu sei disso porque iptables-savesegui iptables -Fe o aplicativo começou a funcionar.) Existem muitas regras para classificar manualmente. Posso fazer algo para me mostrar qual regra está descartando os pacotes?

Shawn J. Goff
fonte
1
O fedorahosted.org/dropwatch também pode ser útil no futuro.
Shawn J. Goff
Para ver a atualização contadores em tempo real uso <br/> <code> relógio iptables -L -v -n </ code>
Chris Gibb

Respostas:

19

Você pode adicionar uma regra TRACE no início da cadeia para registrar todas as regras que o pacote atravessa.

Eu consideraria usar iptables -L -v -n | lesspara permitir que você pesquise as regras. Eu pareceria porto; endereço; e regras de interface que se aplicam. Dado que você possui muitas regras, provavelmente está executando um firewall praticamente fechado e não possui uma regra de permissão para o tráfego.

Como o firewall é construído? Pode ser mais fácil observar as regras do construtor do que as regras construídas.

BillThor
fonte
Depois de fazer essa pergunta, descobri que as regras são da APF e pude consertar isso. Eu amo o alvo TRACE, no entanto. Isso teria sido muito eficaz.
Shawn J. Goff
2
Um exemplo de uso do destino TRACE está aqui: serverfault.com/questions/122157/debugger-for-iptables/… .
slm
14

Execute iptables -L -v -npara ver os contadores de pacotes e bytes para todas as tabelas e regras.

ninjalj
fonte
Isso é bom, espero algo melhor, pois existem 1000 regras e milhares de pacotes descartados.
Shawn J. Goff
Use sortpara classificar regras por contador de pacotes.
Njalj
13

Como iptables -L -v -npossui contadores, você pode fazer o seguinte.

iptables -L -v -n > Sample1
#Cause the packet that you suspect is being dropped by iptables
iptables -L -v -n > Sample2
diff Sample1 Sample2

Dessa forma, você verá apenas as regras que foram incrementadas.

Kyle Brandt
fonte
9

Na minha empresa que usamos watch -n 2 -d iptables -nvL, mostra alterações entre solicitações

Marcelo Salazar
fonte
5
watch -n1 -d "iptables -vnxL | grep -v -e pkts -e Chain | sort -nk1 | tac | column -t"

Lembre-se de que isso mostrará apenas itens para o filtro da tabela .

Adicione -t nat(ou qualquer tabela que você use além do filtro) à sua chamada do iptables, para verificar as regras lá.

sjas
fonte