web-dev-qa-db-fra.com

Existe-t-il un moyen de trouver la règle d'IPtables était responsable de la chute d'un paquet?

J'ai un système qui est venu avec un pare-feu déjà en place. Le pare-feu se compose de plus de 1000 règles d'IPTABLES. Une de ces règles est la chute de paquets que je ne veux pas tomber. (Je le sais parce que j'ai fait iptables-save suivie par iptables -F Et l'application a commencé à travailler.) Il y a beaucoup trop de règles pour trier manuellement. Puis-je faire quelque chose pour me montrer quelle règle tombe les paquets?

35
Shawn J. Goff

Vous pouvez ajouter une règle de trace tôt dans la chaîne pour enregistrer chaque règle que le paquet traverse.

Je envisagerais d'utiliser iptables -L -v -n | less Pour vous permettre de rechercher les règles. Je regarderais le port; adresse; et règles d'interface qui s'appliquent. Étant donné que vous avez autant de règles, vous exécutez probablement un pare-feu surtout fermé et vous manque une règle de permis pour le trafic.

Comment est construit le pare-feu? Il peut être plus facile de consulter les règles du constructeur que les règles construites.

21
BillThor

Depuis iptables -L -v -n a des compteurs que vous pourriez faire ce qui suit.

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

De cette façon, vous ne verrez que les règles incrémentées.

15
Kyle Brandt

Courir iptables -L -v -n Pour voir les compteurs de paquets et d'octets pour chaque table et pour chaque règle.

14
ninjalj

Dans ma compagnie, nous utilisons watch -n 2 -d iptables -nvL, il montre des changements entre les demandes

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

Gardez à l'esprit, cela ne montrera que des trucs pour la table filtre.

Ajouter -t nat (ou quelle que soit la table que vous utilisez en plus de filtrer) à votre appel IPTABLES, pour vérifier les règles là-bas.

5
sjas