求助:解决iptables报错“未知选项--icmp-type”的问题
求助:解决iptables报错“未知选项--icmp-type”的问题
嗨,我来帮你搞定这个问题!
你遇到的报错是因为当前使用的iptables是基于nf_tables的版本(v1.8.7标注了nf_tables),它是nftables的兼容层工具,和传统的iptables(iptables-legacy)语法有差异,--icmp-type这个选项在这个模式下不被支持。给你两个可行的解决方案:
方案一:切换回传统iptables执行命令
直接用iptables-legacy替代iptables运行你的规则:
sudo iptables-legacy -A OUTPUT -p icmp --icmp-type echo-request -j DROP
如果想永久把默认的iptables工具切换成传统版本,可以执行:
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
方案二:直接使用nftables语法(更推荐)
nf_tables是Linux防火墙的下一代框架,官方更推荐直接用它的原生语法。你可以这样添加阻止ICMP回显请求的规则:
# 先创建filter表和output链(如果还没有的话) sudo nft add table inet filter sudo nft add chain inet filter output { type filter hook output priority 0 \; } # 添加阻止echo-request的规则 sudo nft add rule inet filter output icmp type echo-request drop
验证规则是否生效
执行完规则后,你可以用ping 127.0.0.1测试,如果无法收到回包,说明规则生效了。也可以通过以下命令查看规则:
- 用传统iptables的话:
sudo iptables-legacy -L OUTPUT -v - 用nftables的话:
sudo nft list ruleset
备注:内容来源于stack exchange,提问作者Muhammad Robi Rahman
相关产品推荐
相关产品推荐

