Tengo una cadena adjunta con muchas reglas como:
> :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
cuando trato de eliminar esta cadena con:
iptables -X XXXX
pero recibí un error como (intenté iptables -F XXXXX antes):
iptables: demasiados enlaces.
¿Hay una manera fácil de eliminar la cadena con un comando?
linux
iptables
linux-networking
timido
fuente
fuente
iptables-save | grep -v i_XXXXX_i | iptables-restore
Respuestas:
No puede eliminar cadenas cuando las reglas con '-j CHAINTODELETE' hacen referencia a ellas. Averigüe qué hace referencia a su cadena (el enlace) y elimínelo. Además, enjuague y luego mate.
fuente
Esto es potencialmente fuera de tema, ¡pero es lo que hice después de encontrar esta publicación! Para algunos casos de uso, la opción iptables -D puede ser útil. Dado que le permite borrar las reglas de referencia agregadas mediante programación con -A (si sabe con precisión cómo las agregó).
P.ej
se puede revertir con
fuente
Necesita dos pasos, pero esto lo hace en un solo comando.
Cree un archivo y colóquelo en él.
Guarde el archivo como "borrar todas las reglas". Ahora, haz este comando:
Ahora puede borrarlo en cualquier momento con solo un comando.
fuente
Aquí hay un plan alternativo. Implica tres comandos, no uno, pero con suerte, debería funcionar.
Volcar su
iptables
conjunto de reglas a un archivo:Elimine TODOS los usos de (y referencias a) la cadena infractora:
Luego vuelva a cargar el conjunto de reglas:
fuente
Algo en este sentido los pondrá a todos en una sola línea sin quitar iptables de ninguna manera.
fuente
En el archivo man de iptables hay una opción
-S
Mediante el uso
iptables -S | grep <CHAINNAMEHERE>
. Por ejemplo:entonces puede ver qué reglas bloquean la eliminación de la cadena de la tabla. Revise cada regla (excepto la
iptables -N <CHAINNAMEHERE>
y elimine la regla usando la-D
opciónPor ejemplo
iptables -D FORWARD -i eth0 -j TRAFFICLOG
. Después de haber eliminado cada regla para su ras cadena de la cadena con la-F
opcióniptables -F <CHAINNAMEHERE>
.Luego elimine su cadena con la
-X
opción,iptables -X <CHAINNAMEHERE>
Iptables es un conjunto de herramientas complicado, por lo que se necesita un tutorial ideal. Puedes probar uno en www.iptables.info
fuente
Esto escupirá cadenas y las eliminará
fuente
He descubierto que puede eliminar las reglas y la cadena editando el archivo de reglas en /etc/iptables/rules.v4. Si elimina la cadena no deseada en este archivo y luego vuelve a cargar iptables, ya no debería ver la cadena al hacer una iptables -L.
fuente