当尝试从本地 Samba 服务器访问 samba 共享时smblcient -L //localhost
,我在延迟后收到错误消息
协议协商失败:NT_STATUS_IO_TIMEOUT
系统地找到问题根源的调试步骤是什么?
背景:
为了我自己的培训目的,我在 CentOS 7 虚拟机上的 samba 服务器上设置了一个简单的共享文件夹。
我将以下行添加到 smb.conf 文件并创建目录、selinux 配置和防火墙规则。
[sambashare]
comment = sambashare
path = /sambashare
public = yes
writable = yes
write list = +users
答案1
解决方案:
您尚未为服务器名称配置 DNS 名称解析,必须在 /etc/hosts 中手动或在 DNS 服务器中设置服务器名称。
调试过程:
如果是NT_STATUS_IO_TIMEOUT尝试使用网络流量分析器,例如 tcpdump。 (例如 tcpdump -i >网络接口<)
如果出现以下几行:
07:57:54.726390 IP 10.0.2.9.39939 > 10.0.2.1.domain: 20986+ A? server.example.local. (38)
07:57:54.726648 IP 10.0.2.9.39939 > 10.0.2.1.domain: 44015+ AAAA? server.example.local. (38)
07:57:54.727069 IP 10.0.2.9.48743 > 10.0.2.1.domain: 34381+ PTR? 1.2.0.10.in-addr.arpa. (39)
07:57:54.732388 IP 10.0.2.1.domain > 10.0.2.9.39939: 20986 NXDomain* 0/0/0 (38)
07:57:54.733400 IP 10.0.2.1.domain > 10.0.2.9.48743: 34381 NXDomain* 0/0/0 (39)
07:57:54.733642 IP 10.0.2.9.53191 > 10.0.2.1.domain: 24458+ PTR? 9.2.0.10.in-addr.arpa. (39)
这意味着 smbclient 无法解析服务器名称 server.example.local,这是一个 DNS 解析问题。
答案2
对于 Fedora Rawhide 33 上的我来说,我需要在“/etc/samba/smb.conf”中使用以下内容之一:
client min protocol = CORE
或者
client min protocol = NT1
并在“/etc/hosts”中定义主机:
<ip_address> REMOTE_DEVICE
答案3
我添加了以下行/etc/samba/smb.conf
并且它有效:
guest ok = yes
在我的共享参数部分。
然后我重新启动了服务,它工作得很好