CIFS/SMB 操作所需的 TCP/IP 端口

Jon*_*han 49 windows firewall server-message-block cifs

如果我想在两台防火墙计算机之间允许 Windows 网络驱动器,我需要打开端口 137-139,还是端口 445 就足够了?我必须提交一个表单并获得批准才能打开防火墙端口,而且我不想要求比我需要的更多的开放端口。这里所有的机器都是 Windows XP 或更高版本。

注意:当我说“Windows 网络驱动器”时,我不完全确定我指的是 SMB 还是 CIFS,而且我也不完全清楚这两种协议之间的区别。

Tim*_*Tim 67

端口 137-139 用于 NetBios/名称解析。没有它,您将不得不通过与 NetBIOS 名称相对的 IP 地址来访问机器。\\192.168.1.100\share_name反对的例子\\my_file_server\share_name

因此,如果您只能使用 IP 地址,则端口 445 就足够了。

  • @Hrqls 从理论上讲,是的,**但是** AFAIK 向全世界开放您的 SMB 是一个非常糟糕的主意。 (11认同)
  • 只要您有可用于客户端的正常 DNS 就足够了。 (6认同)

小智 7

此配置对我有用:137/UDP、138/UDP、139/TCP 和 445/TCP。来源和其他信息位于:http : //www.icir.org/gregor/tools/ms-smb-protocols.html

所以这些是我的 Samba 服务器的 iptables 规则:

# The router doesn't need SMB access.
-A INPUT -s 192.168.1.1 -p udp --dport 137 -j REJECT
-A INPUT -s 192.168.1.1 -p udp --dport 138 -j REJECT
-A INPUT -s 192.168.1.1 -p tcp --dport 139 -j REJECT
-A INPUT -s 192.168.1.1 -p tcp --dport 445 -j REJECT

# Actual Samba ports
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 137 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 138 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

  • 鉴于 OP 询问了 Windows 计算机,并且他们对 iptables 的理解水平完全未知,这比作为完全不同的系统配置文件更好地写出来。 (5认同)
  • 简单的英语,UDP 137 和 138,TCP 139 和 445 (2认同)