CentOS 查看 SMB 端口的专业方法与解析
SMB(Server Message Block) 协议是 Windows 网络文件和打印机共享的核心,也是 Linux(如 CentOS)通过 Samba 实现与 Windows 系统互操作的关键,无论是进行故障排查、安全加固还是网络规划,准确掌握 Samba 服务使用的端口状态都至关重要,本文将详细介绍在 CentOS 系统上查看 SMB 服务端口的多种有效方法。
使用 netstat 命令(传统可靠)
netstat 是网络工具中的“常青树”,能清晰展示系统上的网络连接、路由表和接口统计信息。

安装 net-tools(如未安装): 较新的 CentOS 可能默认未安装
netstat,安装命令:sudo yum install net-tools -y
查看 Samba 监听端口: 运行以下命令,筛选出与
smbd(Samba 主服务进程)相关的监听状态:sudo netstat -tulpn | grep smbd
解读输出: 典型输出可能如下:
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 1234/smbd tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 1234/smbd tcp6 0 0 :::445 :::* LISTEN 1234/smbd tcp6 0 0 :::139 :::* LISTEN 1234/smbd0.0.0:445和0.0.0:139:表示 IPv4 上的 Samba 正在监听所有网络接口的 445 和 139 端口。:::445和:::139:表示 IPv6 上的 Samba 同样在监听 445 和 139 端口。LISTEN:状态表示端口正在等待传入连接。1234/smbd:进程 ID (PID) 和进程名称,明确显示是smbd服务在使用这些端口。
使用 ss 命令(现代高效)
ss(Socket Statistics)是 netstat 的现代替代品,功能更强大,速度更快,尤其在处理大量连接时优势明显。
查看 Samba 监听端口: 执行命令:
sudo ss -tulpn | grep smbd
解读输出: 输出格式与
netstat高度相似:
tcp LISTEN 0 128 0.0.0.0:445 0.0.0.0:* users:(("smbd",pid=1234,fd=...)) tcp LISTEN 0 128 0.0.0.0:139 0.0.0.0:* users:(("smbd",pid=1234,fd=...)) tcp LISTEN 0 128 [::]:445 [::]:* users:(("smbd",pid=1234,fd=...)) tcp LISTEN 0 128 [::]:139 [::]:* users:(("smbd",pid=1234,fd=...))信息解读与
netstat完全一致,清晰显示 Samba 监听的 IPv4 和 IPv6 的 139、445 端口。
使用 nmap 扫描本地端口(外部视角验证)
nmap 是强大的网络扫描工具,从外部视角扫描本机,可以验证端口在网络上实际是否可访问。
安装 nmap:
sudo yum install nmap -y
扫描本地主机常用 SMB 端口:
sudo nmap -sT -p 139,445 localhost
解读输出: 成功扫描结果通常显示:
Starting Nmap ... Nmap scan report for localhost (127.0.0.1) Host is up (0.000010s latency). PORT STATE SERVICE 139/tcp open netbios-ssn 445/tcp open microsoft-ds Nmap done: 1 IP address (1 host up) scanned in 0.05 secondsopen:状态表示端口处于开放且可访问状态。netbios-ssn:通常对应端口 139。microsoft-ds:通常对应端口 445。
重要提示: 在生产服务器上使用
nmap扫描外部 IP 地址务必谨慎,可能触发安全告警或违反策略,扫描localhost或内部管理接口最安全。
检查防火墙规则(端口访问控制关键)
即使 Samba 在监听端口,防火墙也可能阻止外部访问,CentOS 默认使用 firewalld。
查看当前防火墙开放的服务和端口:
sudo firewall-cmd --list-all
查找关键信息: 在输出结果中,重点关注
services:和ports:部分:services: cockpit dhcpv6-client ssh samba-client ... ports: 445/tcp 139/tcp ...services:中包含samba或samba-client(注意:samba-client通常指访问其他 SMB 服务所需的规则,而非提供服务的规则,提供 Samba 服务通常需要明确放行samba服务或端口 139/445),或者ports:中明确列出了139/tcp和445/tcp,表示防火墙允许传入连接访问这些端口。- 如果未找到相关条目,即使 Samba 在监听,外部请求也会被防火墙拦截。
(可选)永久开放 Samba 服务端口: 如需允许访问,执行:
sudo firewall-cmd --permanent --add-service=samba # 添加samba服务规则 sudo firewall-cmd --reload # 重新加载防火墙配置
或者直接添加端口:
sudo firewall-cmd --permanent --add-port=139/tcp sudo firewall-cmd --permanent --add-port=445/tcp sudo firewall-cmd --reload
再次运行
sudo firewall-cmd --list-all确认规则已生效。
理解 SMB 端口:139 与 445
- 端口 139 (netbios-ssn): 这是传统的 SMB over NetBIOS 端口,工作在 TCP 层之上,在现代网络中,尤其是纯 TCP/IP 环境(无 NetBIOS),其重要性已降低,但为兼容旧系统通常仍会启用。
- 端口 445 (microsoft-ds): 这是现代 SMB 通信的标准端口,直接在 TCP 上运行(无需 NetBIOS),它是当前 Samba 和 Windows 文件共享的首选和最高效的端口,绝大多数新部署应确保 445 端口畅通。
关键注意事项
sudo权限: 查看进程绑定的端口信息通常需要管理员权限,务必在命令前加sudo。- Samba 服务状态: 确保 Samba 服务 (
smb) 正在运行:sudo systemctl status smb,服务未运行,端口自然不会监听。 - 配置文件 (
smb.conf): 虽然标准端口是 139 和 445,管理员可在/etc/samba/smb.conf的[global]部分通过smb ports参数自定义端口,检查配置确认是否有非标准设置。 - 防火墙是双刃剑: 开放 SMB 端口(尤其 445)会显著增加攻击面,务必结合强密码策略、最小权限原则、网络隔离(如 VLAN)、及时更新补丁等安全措施,仅在可信网络环境或通过 VPN 开放。
nmap扫描的适用性:nmap扫描localhost结果可靠;扫描服务器公网 IP 的结果受服务器自身防火墙和上游网络设备(如云防火墙、企业出口防火墙)规则影响,结果可能不同。
熟练掌握 netstat 或 ss 查看监听端口、结合 firewall-cmd 检查防火墙策略,是管理 CentOS Samba 服务的核心网络诊断技能,理解 139 和 445 端口的区别与作用,有助于精准定位问题并制定合理的安全策略,作为系统管理员,在确保服务可用的同时,必须始终将端口暴露带来的安全风险放在首位进行考量,平衡便利性与安全性是长久运维的关键,定期审计端口开放情况和访问日志,是维护健康网络环境不可或缺的习惯。
每次修改防火墙规则或 Samba 配置后,建议使用
ss或netstat快速验证端口监听状态,并通过内网另一台机器尝试连接(如smbclient命令或 Windows 资源管理器),进行端到端的功能测试,这是确认配置生效最直接的方式。

