如何从 iptables 中删除所有 ufw 链?

如何从 iptables 中删除所有 ufw 链?

我已经删除了 ufw,我想删除它留下的所有链。我该如何轻松做到这一点?

答案1

@flickerfly 的答案对我的情况不起作用。我运行以下命令来摆脱所有 ufw 角色和链

for i in `iptables -L INPUT --line-numbers |grep '[0-9].*ufw' | cut -f 1 -d ' ' | sort -r `; do iptables -D INPUT $i ; done
for i in `iptables -L FORWARD --line-numbers |grep '[0-9].*ufw' | cut -f 1 -d ' ' | sort -r `; do iptables -D FORWARD $i ; done
for i in `iptables -L OUTPUT --line-numbers |grep '[0-9].*ufw' | cut -f 1 -d ' ' | sort -r `; do iptables -D OUTPUT $i ; done
for i in `iptables -L | grep 'Chain .*ufw' | cut -d ' ' -f 2`; do iptables -X $i ; done

答案2

笔记:这已经过时了。请先查看其他答案以了解现代解决方案。

以 root 身份运行的这两个命令行将快速找到所有名称,并通过 for 循环运行它们,iptables -F以刷新对链的引用,然后iptables -X删除它们。

for ufw in `iptables -L |grep ufw|awk '{ print $2 }'`; do iptables -F $ufw; done
for ufw in `iptables -L |grep ufw|awk '{ print $2 }'`; do iptables -X $ufw; done

答案3

我是 iptables 新手,所以请耐心等待。

我知道这是一个老话题,但它帮助我走上了正确的道路。

TL;DR 这两个选项都没有提出@wjdp或者@大卫·波西对我有用,我最终在 serverfault 上找到了这条评论(希望我可以交叉分享)删除 IP 链及其所有引用由用户 Steven Monday 撰写:

Try this: iptables-save | grep -v i_XXXXX_i | iptables-restore – Steven Monday Apr 2 '12 at 19:01

将“i_XXXXX_i”替换为“ufw-”即可。

不用说,希望我首先备份了我的 iptables:

 iptables-save > ~/iptables-old

我的故事比较长:

@wjdp:我认为您的程序可能无法正常工作的第一个原因是“iptables -L”的部分输出为 $1 而不是 $2,例如:

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ufw-before-logging-forward  all  --  anywhere             anywhere            
ufw-before-forward  all  --  anywhere             anywhere          

这将引发一个错误:

iptables: No chain/target/match by that name.

我用了:

for ufw in `iptables -L | grep -oE "(^| )ufw[^ ]*( |$)" | awk '{ print $1}'`; do iptables -F $ufw; done
for ufw in `iptables -L | grep -oE "(^| )ufw[^ ]*( |$)" | awk '{ print $1}'`; do iptables -X $ufw; done

然而,经调查,我发现我只是创建了重复项,因为该规则在政策(显示为 $1)和规则本身($2)中被重新提及。

对命令进行简单的修改以获得干净的输出如下:

for ufw in `iptables -L | grep -E  ^Chain.*ufw | awk '{ print $2 }'`; do iptables -F $ufw; done
for ufw in `iptables -L | grep -E  ^Chain.*ufw | awk '{ print $2 }'`; do iptables -X $ufw; done

然而,当我运行 -X 时(运行 -F 之后),我收到以下错误:

iptables v1.8.2 (nf_tables):  CHAIN_USER_DEL failed (Device or resource busy): chain ufw-before-logging-input
iptables v1.8.2 (nf_tables):  CHAIN_USER_DEL failed (Device or resource busy): chain ufw-before-logging-output

然后我尝试@david-boho 的“-D”选项并出现以下错误:

iptables: Bad rule (does a matching rule exist in that chain?).

(我对 David 的命令添加了回应,并确认这些名称确实有效)

在此之后,我发现史蒂文的解决方案对我来说非常有效。

希望这对某人有帮助。

相关内容