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
相关产品推荐
相关产品推荐

