Samba与其他Windows/Linux系统进行通讯需要打开哪些端口?

时间:2020-01-09 10:44:12  来源:igfitidea点击:

Samba需要打开哪些端口才能与其他Windows/Linux系统通信?
如何配置Linux防火墙,所以如何SMB/CIFS网络协议的确切端口TCP和UDP端口号。
能否提供端口列表以及示例iptables规则?
您可以从名为/etc/services的文件获取端口列表。
为了便于使用,这里需要打开端口以与Windows和Linux桌面系统进行双向samba通信。

  • netbios-ns 137/tcp#NETBIOS名称服务
  • netbios-dgm 138/tcp#NETBIOS数据报服务
  • netbios-ssn 139/tcp#NETBIOS会话服务
  • microsoft-ds 445/tcp#(如果使用的是Active Directory)

其他端口:

  • LDAP的端口389(TCP)(活动目录模式)
  • 2000年及以后,端口445(TCP)NetBIOS已移至445(CIFS)
  • SWAT服务的端口901(TCP)(与客户端通信无关)

查找SMB/CIFS网络协议所需的TCP/UDP端口的命令

执行以下命令:

$ grep -i NETBIOS /etc/services

输出示例:

netbios-ns	137/tcp				# NETBIOS Name Service
netbios-ns	137/udp
netbios-dgm	138/tcp				# NETBIOS Datagram Service
netbios-dgm	138/udp
netbios-ssn	139/tcp				# NETBIOS session service
netbios-ssn	139/udp

适用于CentOS/RHEL 5.x和更早版本的iptables规则示例

在代表网络上应作为Samba服务器客户端运行的机器的192.168.1.0/24子网之间打开Samba通信。
在RHEL/CentOS服务器下编辑/etc/sysconfig/iptables。
在RH-Firewall-1-INPUT链的最后LOG和ROP行之前,添加以下行:

-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT

随时根据您的设置更改规则。
保存并关闭文件。
重新启动防火墙服务,执行:

# /sbin/services iptables restart

仅适用于CentOS/RHEL 6.x的示例iptables规则

-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

保存并关闭文件。
执行以下命令以重新启动防火墙:

# service iptables restart

仅适用于CentOS/RHEL 7.x的示例iptables规则

您需要使用以下命令:

# firewall-cmd --permanent --zone=public --add-service=samba
# firewall-cmd --reload

或者

# firewall-cmd --permanent --add-port=137/tcp
# firewall-cmd --permanent --add-port=138/tcp
# firewall-cmd --permanent --add-port=139/tcp
# firewall-cmd --permanent --add-port=445/tcp