![Windows 7 间歇性无法打开 samba 共享,错误代码 0x80070043 - 找不到网络名称](https://linux22.com/image/1124261/Windows%207%20%E9%97%B4%E6%AD%87%E6%80%A7%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80%20samba%20%E5%85%B1%E4%BA%AB%EF%BC%8C%E9%94%99%E8%AF%AF%E4%BB%A3%E7%A0%81%200x80070043%20-%20%E6%89%BE%E4%B8%8D%E5%88%B0%E7%BD%91%E7%BB%9C%E5%90%8D%E7%A7%B0.png)
我有一个名为 watson 的 Ubuntu 14.04 盒子,其静态 IP 为 192.168.7.101,正在运行:
- 域名系统
- 桑巴
我还有一堆 Windows 7 家庭高级版盒子,它们通过 DHCP 从 dnsmasq 获取 IP 地址。Watson 共享两个目录,无需身份验证(我信任 LAN 上的任何人,并且它们都在 crashplan 上进行了快照)。然而,虽然 Windows 盒子可以正常看到共享,但尝试打开它们通常会失败0x80070043
- 找不到网络名称。重新启动 smbd 和 nmbd 通常可以让问题暂时消失。有时我可以打开一个共享,但不能打开另一个。
多年来,这个系统一直运行良好,但在从 12.04 升级到 14.04 和/或搬家时使用启用了 ipv6 的新路由器和/或 Ubuntu/Microsoft 自 12 月中旬以来推出的任何安全更新后,系统开始出现问题
我尝试过的事情:
- 在所有地方禁用 ipv6
- 在 samba 上启用 WINS 服务器
- 在 SAMBA 中禁用 CUPS 支持
- 在 dnsmasq 中启用各种 netbios DHCP 选项
非常感谢任何建议。照这样下去,我将不得不转向 FreeNAS。
我个人的技术水平是长期的 C++ 程序员(CCNA 水平正在慢慢下降),所以欢迎随时提出技术解决方案。
我的 samba 配置如下:
[global]
server string = %h server (Samba, Ubuntu)
server role = standalone server
map to guest = Bad Password
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
name resolve order = wins, hosts, bcast
load printers = No
printcap name = /dev/null
disable spoolss = Yes
wins support = Yes
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
idmap config * : backend = tdb
printing = bsd
print command = lpr -r -P'%p' %s
lpq command = lpq -P'%p'
lprm command = lprm -P'%p' %j
[music]
path = /raid/music
read only = No
guest ok = Yes
[data]
path = /raid/data
read only = No
guest ok = Yes
My Dnsmasq (stripped of comments) looks like this:
This has all been working fine for years, but started going wrong
no-resolv
no-poll
server=8.8.8.8
server=4.4.4.4
server=192.168.7.1
domain=localdomain
dhcp-range=192.168.7.128,192.168.7.255,12h
dhcp-option=3,192.168.7.1
dhcp-option=19,0 # option ip-forwarding off
dhcp-option=44,192.168.7.101 # set netbios-over-TCP/IP nameserver(s) aka WINS server(s)
dhcp-option=45,192.168.7.101 # netbios datagram distribution server
dhcp-option=46,8 # netbios node type
dhcp-authoritative
An example smbtree output from after JACKIS-PC (ip address 192.168.7.248) was able to open \\watson\data but failed to open \\watson\music follows:
lp_load_ex: refreshing parameters
Initialising global parameters
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
params.c:pm_process() - Processing configuration file "/etc/samba/smb.conf"
Processing section "[global]"
added interface eth0 ip=192.168.7.101 bcast=192.168.7.255 netmask=255.255.255.0
Enter mark's password:
tdb(/var/cache/samba/gencache.tdb): tdb_open_ex: could not open file /var/cache/samba/gencache.tdb: Permission denied
name_resolve_bcast: Attempting broadcast lookup for name WORKGROUP<0x1d>
Got a positive name query response from 192.168.7.101 ( 192.168.7.101 )
Connecting to 192.168.7.101 at port 445
Doing spnego session setup (blob length=74)
got OID=1.3.6.1.4.1.311.2.2.10
got principal=not_defined_in_RFC4178@please_ignore
Got challenge flags:
Got NTLMSSP neg_flags=0x608a8215
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x60088215
WORKGROUP
name_resolve_bcast: Attempting broadcast lookup for name WORKGROUP<0x1d>
Got a positive name query response from 192.168.7.101 ( 192.168.7.101 )
Connecting to 192.168.7.101 at port 445
Doing spnego session setup (blob length=74)
got OID=1.3.6.1.4.1.311.2.2.10
got principal=not_defined_in_RFC4178@please_ignore
Got challenge flags:
Got NTLMSSP neg_flags=0x608a8215
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x60088215
\\WATSON watson server (Samba, Ubuntu)
resolve_hosts: Attempting host lookup for name WATSON<0x20>
Connecting to 192.168.7.101 at port 445
Doing spnego session setup (blob length=74)
got OID=1.3.6.1.4.1.311.2.2.10
got principal=not_defined_in_RFC4178@please_ignore
Got challenge flags:
Got NTLMSSP neg_flags=0x608a8215
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP Sign/Seal - Initialising with flags:imilarly
Got NTLMSSP neg_flags=0x60088215
\\WATSON\IPC$ IPC Service (watson server (Samba, Ubuntu))
\\WATSON\data
\\WATSON\music
\\LANGDALE-PIKE
resolve_hosts: Attempting host lookup for name LANGDALE-PIKE<0x20>
Connecting to 192.168.7.233 at port 445
This has all been working fine for years, but started going wrong
Doing spnego session setup (blob length=320)
got OID=1.3.6.1.4.1.311.2.2.30
got OID=1.3.6.1.4.1.311.2.2.10
got principal=<null>
Got challenge flags:
Got NTLMSSP neg_flags=0x628a8215
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x60088215
SPNEGO login failed: Logon failure
\\JACKIS-PC
resolve_hosts: Attempting host lookup for name JACKIS-PC<0x20>
Connecting to 192.168.7.248 at port 445
Doing spnego session setup (blob length=42)
got OID=1.3.6.1.4.1.311.2.2.30
got OID=1.3.6.1.4.1.311.2.2.10
got principal=<null>
Got challenge flags:
Got NTLMSSP neg_flags=0x628a8215
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x60088215
SPNEGO login failed: Logon failure
答案1
(免责声明 - 我是一个 Linux 新手。我在 Solaris 方面更有经验)
这可能与我过去几天在 Ubuntu 15.04 上配置 Samba 时遇到的问题有关。在我的配置中,我只是尝试在家庭网络上的几个 Ubuntu 桌面和一个 Windows 10 桌面上设置共享。
我遇到的症状是 Nautilus 能够浏览网络,但当我尝试进行身份验证时,它要么失败并重新提示输入密码,要么看似成功,但随后导致 Nautilus 崩溃或挂起。在其他情况下,它会连接,我可以成功地在共享目录中创建文件。
在阅读了其他人关于类似主题的大量帖子后,我在 smbclient 和后端 nmbd 和 smbd 守护进程上设置了调试级别 10,并比较了成功和不成功的连接。
比较突出了两个问题,一旦我解决了这两个问题,我的问题就解决了。
首先,我的主机名解析为多个 IP 地址。这是因为我过去曾通过 WiFi 和以太网将同一台机器连接到路由器。由于每个接口都有不同的 MAC 地址,因此路由器通过 DHCP 为它们分配了不同的 IP 地址,但使用了相同的主机名。
如果您使用类似 nslookup 的工具来解析主机名,就可以观察到这个结果(这里幸运的是,home-file-svr 只有一个地址):
$ nslookup home-file-svr Server: 127.0.1.1 Address: 127.0.1.1#53
Non-authoritative answer: Name: home-file-svr.home Address: 192.168.1.68
我犯了一个错误,在路由器的家庭网络设置(在路由器上)中添加了 -wifi 和 -wired 后缀,从而更改了路由器用于这些系统的主机名,然后发现它根本没有将名称解析为本地系统,而是奇怪地解析为互联网上的名称。因此,总结一下本节,请确保您的主机名解析为单个地址。
第二,也是更难调试的一点是,为什么 smbclient 连接第一次会失败,然后可以连接,然后又会失败。
$ smbclient //home-file-svr/public -U tim Enter tim's password: session setup failed: NT_STATUS_UNSUCCESSFUL smbclient //home-file-svr/public -U tim Enter tim's password: Domain=[WORKGROUP] OS=[Unix] Server=[Samba 4.1.13-Ubuntu] smb: >
此外,这种情况仅当网络上有多个系统运行时才会发生。罪魁祸首原来是 winbind。比较这些跟踪显示,第一次连接尝试尝试为 GID 到 SID 映射创建一个缓存条目,并且负时间较大(使用 Unix 零时间日期 - 1970 年)。第二次尝试没有成功,但成功了。
由于我没有在我的网络上设置 Windows 域,因此从所有 Ubuntu 系统中删除 winbind 对我的网络是有效的。