Eu tenho uma cadeia anexada com muitas regras 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
quando tento excluir esta cadeia com:
iptables -X XXXX
mas obteve erro como (tentei iptables -F XXXXX antes):
iptables: Muitos links.
Existe uma maneira fácil de excluir a cadeia por um comando?
iptables-save | grep -v i_XXXXX_i | iptables-restore
Respostas:
Você não pode excluir cadeias quando regras com '-j CHAINTODELETE' as referenciam. Descubra o que está referenciando sua cadeia (o link) e remova-o. Além disso, lave e mate.
fonte
Isso é potencialmente fora de tópico, mas foi o que fiz depois que encontrei este post! Para alguns casos de uso, a opção iptables -D pode ser útil. Como ele permite limpar as regras de referência adicionadas programaticamente com -A (se você souber exatamente como as adicionou).
Por exemplo
pode ser revertido com
fonte
Você precisa de duas etapas, mas isso ocorre em um comando.
Crie um arquivo e coloque-o nele.
Salve o arquivo como "limpar todas as regras". Agora, execute este comando:
Agora você pode limpá-lo a qualquer momento com apenas um comando.
fonte
Aqui está um plano alternativo. Envolve três comandos, não um, mas com sorte, deve funcionar.
Despeje seu
iptables
conjunto de regras em um arquivo:Remova TODOS os usos (e referências) da cadeia incorreta:
Em seguida, recarregue o conjunto de regras:
fonte
Alguma coisa nesse sentido colocará todos eles em uma única linha sem remover o iptables de forma alguma.
fonte
No arquivo man do iptables, há uma opção
-S
Usando
iptables -S | grep <CHAINNAMEHERE>
. Por exemplo:você pode ver quais regras estão bloqueando a exclusão da cadeia da tabela. Passe por cada regra (exceto a
iptables -N <CHAINNAMEHERE>
e exclua a regra usando a-D
opçãoPor exemplo
iptables -D FORWARD -i eth0 -j TRAFFICLOG
. Depois de excluir cada regra da sua corrente, lave a corrente com a-F
opçãoiptables -F <CHAINNAMEHERE>
,.Em seguida, exclua sua cadeia com a
-X
opçãoiptables -X <CHAINNAMEHERE>
Iptables é um conjunto de ferramentas complicado, portanto é necessário um tutorial ideal. Você pode experimentar um em www.iptables.info
fonte
Isso cuspirá cadeias e as excluirá
fonte
Descobri que você pode remover as regras e a cadeia editando o arquivo de regras em /etc/iptables/rules.v4. Se você excluir a cadeia indesejada deste arquivo e recarregar o iptables, não deverá mais vê-lo ao executar um iptables -L.
fonte