我目前正在与 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
好的,192.168.17.* 是我的本地子网,连接到 eth1。这些规则有什么问题吗? samba 是否需要更多端口?
它绝对是防火墙,因为添加
-A INPUT -i eth1 -s 192.168.17.0/24 -j ACCEPT
在上面可以让 samba 工作。
编辑:我正在尝试从 Windows 7 计算机进行连接。
答案1
“源端口”是指远程计算机将数据包发送到您的服务器的端口。客户端到服务器的数据包很少从它们到达的同一远程端口发送。这是由于大多数操作系统中的限制规定普通用户无法打开低于特定限制的端口(在 Linux 中是低于 1024 的任何端口)。
因此,定向到您计算机的数据包的源端口很可能来自远程主机上的随机高编号端口。从本质上讲,端口号并不重要,也可以不指定。
上面的规则预期数据包来自偏僻的端口 137-139,如果不捕获则不会捕获它们。删除它--sport 137:139
,它应该接受从远程计算机的随机高端口到您的端口 137-139 的流量。