如何调试NT_STATUS_IO_TIMEOUT?

如何调试NT_STATUS_IO_TIMEOUT?

当尝试从本地 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

在我的共享参数部分。

然后我重新启动了服务,它工作得很好

相关内容