我已经删除了 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 的命令添加了回应,并确认这些名称确实有效)
在此之后,我发现史蒂文的解决方案对我来说非常有效。
希望这对某人有帮助。