You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 24.04下iptables规则配置异常问题求助

Ubuntu 24.04下iptables规则配置异常问题求助

你遇到的问题根源其实出在规则里的-i any这个参数上——iptables根本不认识any这个网络接口名称,所以你设置的两条规则实际上完全没有生效,相当于白写了!

咱们来拆解下原因和对应的现象:

  • 当你执行iptables -A INPUT -i any -p tcp --dport 22 -j ACCEPT时,因为any不是系统合法的网络接口名(正常接口一般是ens33eth0这类,你可以用ip link show查看自己的接口),这条规则根本不会匹配任何流入的流量。
  • 同理,第二条iptables -A INPUT -i any -j DROP也因为接口参数无效,不会对任何流量起作用。

这就完美解释了你看到的所有情况:

  1. 为什么telnet 22端口能通?因为Ubuntu默认的INPUT链策略是ACCEPT,所有流量都允许进入,和你加的规则完全无关。
  2. 为什么telnet未监听的8888端口会收到重置?这是正常的TCP行为——当目标端口没有进程在监听时,系统会自动发送RST包回应连接请求,和iptables没有关系。
  3. 为什么用nc -l -p 8888监听后能连接上?还是因为默认策略是ACCEPT,流量直接通过了。

修正方案

很简单,把规则里无效的-i any去掉(如果要匹配所有接口的流量),或者换成你实际的网络接口名称:

匹配所有接口的正确规则:

# 允许所有接口的22端口TCP连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 丢弃所有其他流入的流量
iptables -A INPUT -j DROP

仅针对特定接口(比如ens33)的规则:

iptables -A INPUT -i ens33 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i ens33 -j DROP

另外提醒下:设置完规则后,别忘了保存规则避免重启后丢失。Ubuntu 24.04可以执行iptables-save > /etc/iptables/rules.v4,然后安装iptables-persistent包来实现开机自动加载规则。

备注:内容来源于stack exchange,提问作者Vincent Godin

火山引擎 最新活动