Windows 7 间歇性无法打开 samba 共享,错误代码 0x80070043 - 找不到网络名称

Windows 7 间歇性无法打开 samba 共享,错误代码 0x80070043 - 找不到网络名称

我有一个名为 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 对我的网络是有效的。

相关内容