我有一台机器用作 HTPC,运行 Fedora 23。直到最近,一切都工作正常,浏览和连接网络上的其他 PC(我混合使用 Linux 和 Windows 机器)。现在,由于某种原因,我无法再从这台 PC 浏览我的 samba 共享。直接连接(通过名称或IP)工作正常;按名称 ping 效果很好。我没有做任何改变;事实上,我离开了一个星期,一切都关闭了,这个问题似乎在我回来后就出现了。
我已经尝试了很多事情——以各种排列多次——但都无济于事:
- 重新启动一切,包括我的路由器
- 重新启动 smb.service 和 nmb.service
- 暂时禁用firewalld
- 暂时将 SELinux 设置为宽容
- 将这些行添加到 smb.conf:
- 1)名称解析顺序 = 广播主机 lmshosts 获胜
- 2)DNS 代理= 否
- 3)映射到访客 = 坏用户
- 使用 s 测试终端中的连接mbclient -d2 -L 计算机名 -U 用户名——这有效!
另外,我在 /var/log/samba 的日志中没有看到任何错误。因此,经过几个小时的思考后,我感到非常困惑。在这一点上,这并不是我需要解决的问题,因为直接连接是可行的,但我想更好地理解这一点并学习一些东西。
smbtree
以下是无法工作的 HTPC(我们称之为“WOMBAT”)的输出,以及两台可以工作的机器(运行 openSUSE 和 Linux Mint)的输出。
# smbtree output from "WOMBAT":
# browsing smb shares from this machine does not work...
# however, connecting directly works, e.g., to smb://dog/shared
# Pinging any of the other machines by name also works.
HOME
\\WOMBAT Samba Server Version 4.3.11
\\WOMBAT\IPC$ IPC Service (Samba Server Version 4.3.11)
\\WOMBAT\homes Home Directories
\\ OpenRG File Server
# smbtree output from working machine, "DOG":
HOME
\\WOMBAT Samba Server Version 4.3.11
\\ROUTERUSB_FILESH OpenRG File Server
\\DOG dog server (Samba, Linux Mint)
\\DOG\IPC$ IPC Service (dog server (Samba, Linux Mint))
\\DOG\Shared2 Media2 on dog
\\DOG\Shared Media on dog
\\DOG\print$ Printer Drivers
\\CAT Cat
\\CAT\Video (F)
\\CAT\C$ Default share
\\CAT\Shared-Cat-F
\\CAT\H$ Default share
\\CAT\ADMIN$ Remote Admin
\\CAT\F$ Default share
\\CAT\Shared-Cat2
\\CAT\Shared-Personal
\\CAT\G$ Default share
\\CAT\Shared-Video
\\CAT\C
\\CAT\Shared-Cat-C
\\CAT\print$ Printer Drivers
\\CAT\SharedDocs
\\CAT\IPC$ Remote IPC
\\CAT\Other (G)
\\CHIPMUNK Samba 4.2.4-18.1-3668-SUSE-SLE_12-x86_64
\\CHIPMUNK\IPC$ IPC Service (Samba 4.2.4-18.1-3668-SUSE-SLE_12-x86_64)
\\CHIPMUNK\share Shared files
\\CHIPMUNK\print$ Printer Drivers
\\CHIPMUNK\groups All groups
\\CHIPMUNK\users All users
\\CHIPMUNK\profiles Network Profiles Service
\\PIG
# smbtree output from working machine, "CHIPMUNK":
HOME
\\WOMBAT Samba Server Version 4.3.11
\\ROUTERUSB_FILESH OpenRG File Server
\\DOG dog server (Samba, Linux Mint)
\\DOG\IPC$ IPC Service (dog server (Samba, Linux Mint))
\\DOG\Shared2 Media2 on dog
\\DOG\Shared Media on dog
\\DOG\print$ Printer Drivers
\\CAT Cat
\\CAT\Video (F)
\\CAT\C$ Default share
\\CAT\Shared-Cat-F
\\CAT\H$ Default share
\\CAT\ADMIN$ Remote Admin
\\CAT\F$ Default share
\\CAT\Shared-Cat2
\\CAT\Shared-Personal
\\CAT\G$ Default share
\\CAT\Shared-Video
\\CAT\C
\\CAT\Shared-Cat-C
\\CAT\print$ Printer Drivers
\\CAT\SharedDocs
\\CAT\IPC$ Remote IPC
\\CAT\Other (G)
\\CHIPMUNK Samba 4.2.4-18.1-3668-SUSE-SLE_12-x86_64
\\CHIPMUNK\IPC$ IPC Service (Samba 4.2.4-18.1-3668-SUSE-SLE_12-x86_64)
\\CHIPMUNK\share Shared files
\\CHIPMUNK\print$ Printer Drivers
\\CHIPMUNK\groups All groups
\\CHIPMUNK\users All users
\\CHIPMUNK\profiles Network Profiles Service
\\PIG
我得到的唯一线索是,当systemctl status nmb -l
从有问题的盒子(下面的输出)运行时,我的子网看起来不正确。但我对此不确定——也许这很好——而且我不知道如何确认它的正确性。
● nmb.service - Samba NMB Daemon
Loaded: loaded (/usr/lib/systemd/system/nmb.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2016-08-10 23:32:26 EDT; 2h 20min ago
Main PID: 17468 (nmbd)
Status: "nmbd: ready to serve connections..."
CGroup: /system.slice/nmb.service
└─17468 /usr/sbin/nmbd
Aug 10 23:32:26 wombat.home systemd[1]: nmb.service: Supervising process 17468 which is not our child. We'll most likely not notice when it exits.
Aug 10 23:32:26 wombat.home systemd[1]: Started Samba NMB Daemon.
Aug 10 23:32:26 wombat.home nmbd[17468]: [2016/08/10 23:32:26.084522, 0] ../lib/util/become_daemon.c:124(daemon_ready)
Aug 10 23:32:26 wombat.home nmbd[17468]: STATUS=daemon 'nmbd' finished starting up and ready to serve connections
Aug 10 23:32:49 wombat.home nmbd[17468]: [2016/08/10 23:32:49.120302, 0] ../source3/nmbd/nmbd_become_lmb.c:397(become_local_master_stage2)
Aug 10 23:32:49 wombat.home nmbd[17468]: *****
Aug 10 23:32:49 wombat.home nmbd[17468]:
Aug 10 23:32:49 wombat.home nmbd[17468]: Samba name server WOMBAT is now a local master browser for workgroup HOME on subnet 192.168.124.1
Aug 10 23:32:49 wombat.home nmbd[17468]:
Aug 10 23:32:49 wombat.home nmbd[17468]: *****
我的下一步是尝试 NFS(尽管这是回避问题),然后擦除机器并重新开始。但即使这解决了问题,我也什么也没学到。
答案1
问题是虚拟网络接口 ( virbr0
)。 Samba 将此作为首选接口,该接口指向无效的广播地址。我猜想,因为它认为自己是唯一在那里运行的 samba 服务器,所以它将自己设置为“本地主浏览器”。
请参阅 的输出摘录smbtree -d3
,并记下第三个条目,其中包含错误的“bcast”“192.168.124.255”:
Processing section "[global]"
added interface wlp0s20u6 ip=192.168.1.14 bcast=192.168.1.255 netmask=255.255.255.0
added interface enp3s0 ip=192.168.1.15 bcast=192.168.1.255 netmask=255.255.255.0
added interface virbr0 ip=192.168.124.1 bcast=192.168.124.255 netmask=255.255.255.0
禁用libvitrdservice( systemctl disable libvirtd
) 去掉了那个接口,这似乎已经解决了问题;现在 smbtree 显示网络上的其他共享。
在禁用此接口之前,当我检查 nmb.service 的状态时,我看到一条类似“Samba 名称服务器 WOMBAT 现在是子网 192.168.124.255 上工作组 HOME 的本地主浏览器”的消息。这个不正确的子网导致我进入了不正确的接口;我在运行时看到了它的地址ifconfig
。
结语:我不确定这个界面是怎么来的。如果我没理解错的话,这是一个虚拟NAT接口。我这台电脑上没有安装Virtualbox、VMWare等;我不确定还有什么可能启用它。如果有人关心,请在评论中阐明一些内容。