У меня есть цепочка со многими правилами, такими как:
> :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
когда я пытаюсь удалить эту цепочку с:
iptables -X XXXX
но получил ошибку вроде (пробовал iptables -F XXXXX раньше):
iptables: слишком много ссылок.
Есть ли простой способ удалить цепочку по одной команде?
iptables-save | grep -v i_XXXXX_i | iptables-restore
Ответы:
Вы не можете удалять цепочки, когда на них ссылаются правила с -j CHAINTODELETE. Выясните, что ссылается на вашу цепочку (ссылку), и удалите это. Кроме того, промой, а затем убей.
источник
Это потенциально не по теме, но это то, что я сделал после того, как нашел этот пост! Для некоторых случаев использования может быть полезна опция iptables -D. Так как это позволяет вам очистить ссылающиеся правила, добавленные программно с -A (если вы точно знаете, как вы их добавили).
Например
можно поменять местами с
источник
Вам нужно два шага, но это делается в одной команде.
Создайте файл и поместите его в него.
Сохраните файл как "clear-all-rules". Теперь выполните эту команду:
Теперь вы можете очистить его в любое время с помощью одной команды.
источник
Вот альтернативный план. Он включает в себя три команды, а не одну, но, если повезет, он должен работать.
Дамп вашего
iptables
набора правил в файл:Удалите ВСЕ случаи использования (и ссылки на) оскорбительной цепочки:
Затем перезагрузите набор правил:
источник
Что-то в этом духе соберет их все в одну строку, никоим образом не снимая iptables.
источник
В файле iptables man есть опция
-S
С помощью
iptables -S | grep <CHAINNAMEHERE>
. Например:Затем вы можете увидеть, какие правила блокируют удаление цепочки из таблицы. Просмотрите каждое правило (кроме
iptables -N <CHAINNAMEHERE>
и удалите правило, используя-D
опциюНапример
iptables -D FORWARD -i eth0 -j TRAFFICLOG
. После того, как вы удалили каждое правило для вашей цепи очистит цепочку с-F
опциейiptables -F <CHAINNAMEHERE>
.Затем удалите свою цепочку с
-X
опцией,iptables -X <CHAINNAMEHERE>
Iptables - сложный набор инструментов, поэтому необходим идеальный учебник. Вы можете попробовать один на www.iptables.info
источник
Это будет выплевывать цепи и удалять их
источник
Я обнаружил, что вы можете удалить правила и цепочку, отредактировав файл правил в /etc/iptables/rules.v4. Если вы удалите ненужную цепочку в этом файле и затем перезагрузите iptables, вы больше не увидите цепочку при выполнении iptables -L.
источник