J'ai une chaîne jointe avec de nombreuses règles comme:
> :i_XXXXX_i - [0:0]
> -A INPUT -s 282.202.203.83/32 -j i_XXXXX_i
> -A INPUT -s 222.202.62.253/32 -j i_XXXXX_i
> -A INPUT -s 222.202.60.62/32 -j i_XXXXX_i
> -A INPUT -s 224.93.27.235/32 -j i_XXXXX_i
> -A OUTPUT -d 282.202.203.83/32 -j i_XXXXX_i
> -A OUTPUT -d 222.202.62.253/32 -j i_XXXXX_i
> -A OUTPUT -d 222.202.60.62/32 -j i_XXXXX_i
> -A OUTPUT -d 224.93.27.235/32 -j i_XXXXX_i
lorsque j'essaie de supprimer cette chaîne avec:
iptables -X XXXX
mais j'ai obtenu une erreur comme (essayé iptables -F XXXXX avant):
iptables: Trop de liens.
Existe-t-il un moyen simple de supprimer la chaîne en une seule fois?
linux
iptables
linux-networking
timide
la source
la source
iptables-save | grep -v i_XXXXX_i | iptables-restore
Réponses:
Vous ne pouvez pas supprimer des chaînes lorsque les règles avec '-j CHAINTODELETE' les référencent. Déterminez ce qui fait référence à votre chaîne (le lien) et supprimez-le. Aussi, rincez puis tuez.
la source
C'est potentiellement hors sujet, mais c'est ce que j'ai fait après avoir trouvé ce post! Pour certains cas d'utilisation, l'option iptables -D peut être utile. Puisqu'il vous permet d'effacer les règles de référence ajoutées par programmation avec -A (si vous savez précisément comment vous les avez ajoutées).
Par exemple
peut être inversé avec
la source
Vous avez besoin de deux étapes, mais cela se fait en une seule commande.
Créez un fichier et placez-le dedans.
Enregistrez le fichier sous "clear-all-rules". Maintenant, faites cette commande:
Vous pouvez maintenant l'effacer à tout moment avec une seule commande.
la source
Voici un autre plan. Cela implique trois commandes, pas une, mais avec de la chance, cela devrait fonctionner.
Vider votre
iptables
jeu de règles dans un fichier:Supprimez TOUTES les utilisations (et les références à) la chaîne incriminée:
Rechargez ensuite l'ensemble de règles:
la source
Quelque chose dans ce sens les rassemblera tous sur une seule ligne sans supprimer iptables de quelque façon que ce soit.
la source
Dans le fichier man iptables, il y a une option
-S
En utilisant
iptables -S | grep <CHAINNAMEHERE>
. Pour des exemples:vous pouvez alors voir quelles règles bloquent la suppression de la chaîne de la table. Parcourez chaque règle (sauf la
iptables -N <CHAINNAMEHERE>
et supprimez la règle en utilisant l'-D
optionPar exemple
iptables -D FORWARD -i eth0 -j TRAFFICLOG
. Une fois que vous avez supprimé chaque règle pour votre chaîne affleurant la chaîne avec l'-F
optioniptables -F <CHAINNAMEHERE>
.Supprimez ensuite votre chaîne avec l'
-X
option,iptables -X <CHAINNAMEHERE>
Iptables est un ensemble d'outils compliqué, donc un tutoriel idéal est nécessaire. Vous pouvez en essayer un sur www.iptables.info
la source
Cela crachera les chaînes et les supprimera
la source
J'ai constaté que vous pouvez supprimer les règles et la chaîne en modifiant le fichier de règles dans /etc/iptables/rules.v4. Si vous supprimez la chaîne indésirable dans ce fichier, puis rechargez iptables, vous ne devriez plus voir la chaîne lorsque vous effectuez un iptables -L.
la source