使用smb协议同步远程文件失败
前言:因信创迁移要求,将老服务器服务迁移到信创服务器(麒麟),信创服务器跑定时任务同步文件失败,报错信息如下:
问题分析:
确定什么都没改动,只是换了台服务器部署后台应用,一开始猜测是不是信创服务器445端口没开放,但运维人员告诉我没对这个端口额外做什么(运维误我)。只能往其他方面猜测,以后还是要坚定下自己的猜测。
1.确定网络是通的
ping ip
2.确定服务器445端口是开放的
smb服务默认端口是445
#本地服务器telnet ip 445 是通的
telnet 目标ip 445
3.在信创服务器测试能不能访问445端口
如上图是不通的,但是信创服务器运维告诉我不可能,他们没做啥额外操作。哎,导致我又从其他角度分析:例如SELinux 是否关闭,服务是不是有白名单等,结果分析了一两天,无语了。
后面有人告诉我信创服务器在网络层面拦截了445、139等高危端口。
这下可以确定问题在 网络层:信创服务器到 SMB 服务器的网络中有设备(如中间防火墙、交换机 ACL)拦截了 445 端口的数据包
总结:
以后遇到:0.0.0.0<00>
表示 JCIFS 从本地所有网卡(0.0.0.0)发起连接请求,但无法与目标 SMB 服务器(10.128.3.xxx)建立 TCP 连接,常见原因:
1️⃣信创服务器到 10.128.3.xxx 的 SMB 端口(445/139)被拦截
先排除 “物理网络不通” 的问题,在信创服务器上执行以下命令,测试 10.128.3.xxx 的 SMB 端口:
telnet 10.128.3.xxx 445
或
echo > /dev/tcp/10.128.3.xx/445 2>&1 && echo "successful" || echo "fail"
结果分析:
若输出
Connection refused
(连接被拒绝):
SMB 服务器的 445/139 端口未开放,或 SMB 服务未启动。
→ 解决:联系 SMB 服务器管理员,确认 SMB 服务已启动(如 Windows 开启 “文件和打印机共享”、Linux Samba 服务运行),并在 SMB 服务器的防火墙中放行 445/139 端口(如 Windows 防火墙、Linux iptables)。若输出
Connection timed out
(连接超时):
信创服务器到 SMB 服务器的网络路由不通,或信创服务器本地防火墙拦截了出站请求。
→ 解决:
① 在信创服务器上关闭本地防火墙(临时测试,麒麟系统为例):sudo systemctl stop firewalld # 停止防火墙 # 测试后若恢复,需永久开放 445/139 端口(避免重启失效) sudo firewall-cmd --add-port=445/tcp --permanent sudo firewall-cmd --add-port=139/tcp --permanent sudo firewall-cmd --reload
② 检查信创服务器与 SMB 服务器的路由是否可达(执行
traceroute 10.128.3.xxx
),若中间节点丢包,联系网络管理员排查路由。若输出
succeeded!
(连接成功):
网络和端口正常,问题出在 JCIFS 协议版本或配置。