为什么 iptables 仍然阻止我的 samba?

unR*_*unR 2 networking iptables samba

我目前正在与 iptables 和 samba 作斗争。

我读到 samba 需要在 tcp 和 udp 上打开端口 137-139 和 445。

这是我的 iptables 配置的相关部分

...
# forward valid incoming connections from lan to lan-services chain
-A INPUT -i eth1 -s 192.168.17.0/24 -p udp -m conntrack --ctstate NEW -j LANSERV
-A INPUT -i eth1 -s 192.168.17.0/24 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j LANSERV
...
# samba
-A LANSERV -p tcp -m tcp --sport 137:139 --dport 137:139 -j ACCEPT
-A LANSERV -p udp -m udp --sport 137:139 --dport 137:139 -j ACCEPT
-A LANSERV -p tcp -m tcp --sport 445 --dport 445 -j ACCEPT
-A LANSERV -p udp -m udp --sport 445 --dport 445 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

好的,192.168.17.* 是我连接到 eth1 的本地子网。这些规则有什么问题?samba 需要更多端口吗?

它绝对是防火墙,因为-A INPUT -i eth1 -s 192.168.17.0/24 -j ACCEPT在顶部添加 使 samba 工作。

编辑:我正在尝试从 Windows 7 机器连接。

amp*_*ine 6

“源端口”是指远程机器将数据包发送到您的服务器的端口。很少,如果有的话,从它们到达的同一个远程端口发送客户端到服务器的数据包。这是由于大多数操作系统中的限制规定,普通用户不能打开低于某个限制的端口(在 Linux 中,它是低于 1024 的任何端口)。

因此,被定向到您的机器的数据包的源端口很可能来自远程主机上的一个随机的、高编号的端口。从本质上讲,端口号并不重要,也可以不指定。

上面的规则预期数据包来自远程端口 137-139,如果没有,则不会捕获它们。删除它--sport 137:139,它应该接受从远程机器的随机高端口到您的端口 137-139 的流量。