You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04环境下iptables NAT规则针对445端口不生效的问题求助

Ubuntu 20.04环境下iptables NAT规则针对445端口不生效的问题求助

大家好,我碰到一个挺奇怪的问题,想请各位帮忙排查下:

我当前用的是Ubuntu 20.04系统,同一局域网里的192.168.10.162是一台Ubuntu 18.04服务器,上面运行着SMB服务。

我给当前机器添加了两条iptables NAT规则,想把本机445端口的流量转发到192.168.10.162的445端口:

sudo iptables -t nat -A POSTROUTING -d 192.168.10.162 -j MASQUERADE
sudo iptables -t nat -A PREROUTING -p tcp --dport 445 -j DNAT --to-destination 192.168.10.162:445

执行sudo iptables -t nat -L -v查看,规则已经成功加载,两条规则都显示在对应的链里,而且我也已经开启了IP转发:

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

但问题来了:

  • 我在Ubuntu 20.04上也装了SMB服务,用Win10电脑访问它的共享目录,不管是浏览、删除文件还是上传文件,这两条NAT规则的pkts和bytes始终是0,完全没有流量记录。
  • 后来我把192.168.10.162的SMB共享挂载到Ubuntu 20.04本地,再访问本机的SMB共享,PREROUTING规则还是没任何流量记录,但POSTROUTING规则有了一些记录(比如ping 192.168.10.162或者挂载操作会触发这条规则计数)。

补充测试(Update)

我换了个端口做转发测试,把本机8080端口的TCP流量转发到192.168.10.162的80端口(上面跑着web服务),规则配置类似。然后用Win10访问http://[Ubuntu20.04的IP]:8080,成功跳转到了目标web服务,而且iptables的PREROUTING和POSTROUTING规则都有对应的流量记录,完全正常。

另外我用tcptrack工具确认过,Win10确实把数据包发到了Ubuntu 20.04的445端口,但PREROUTING规则就是捕获不到这些流量。

有没有大佬能帮我分析下这是怎么回事?

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 08:29:11