我在 Debian 9 主机上的虚拟机中运行 Tails。为了通过 Tails 访问主机上的共享文件夹,我尝试设置 Samba 交换。
尽管这种方法在 Debian 8 中工作完全正常,在 Debian 9 中不再工作。在尝试连接到 Samba 共享时,我总是收到以下错误:
”无法访问位置。无法从服务器检索共享列表:连接超时。”
在QEMU
-settings 中,我将网络源(虚拟网络接口)指定为名为 的网桥virbr0
,设备型号为virtio
。运行机器时,桥接器被激活,物理网络接口也被激活,并且访客(= Tails)可以毫无问题地接收互联网访问。只有Samba
-share 不起作用。
我的/etc/samba/smb.conf
样子是这样的:
[global]
workgroup = WORKGROUP
netbios name = MYCOMPUTER
name resolve order = bcast
dns proxy = no
log file = /var/log/samba/log./%m
max log size = 50
panic action = /usr/share/samba/panic-action %d
server role = standalone server
map to guest = bad user
usershare allow guests = yes
security = user
server string = %h server (Samba, Ubuntu)
bind interfaces only = yes
interfaces = enp0s25 virbr* lo
[Windows-SMB]
comment = Shared Samba Network Drive for Windows
path = /home/user/Public/Windows-Exchange
public = no
guest ok = no
browseable = yes
writeable = yes
[Tails-SMB]
comment = Shared Samba Network Drive for Tails
path = /home/user/Public/Tails-Exchange
public = no
guest ok = no
browseable = yes
writeable = yes
我尝试了所有可能的解决方案:
- 安装包
gvfs-bin
编辑于/etc/samba/smb.conf
:
- 添加
netbios name = NAME-OF-PC
- 添加
name resolve order = bcast host
然而,它们都不起作用。
我试图缩小错误来源的范围:
testparm
未检测到任何错误,smbtree
正确显示所有共享。如果我从中获取显示的 IP 地址nmblookup <hostname>
并将其插入到 Tails 中,我会再次收到上述错误。
然而,从来宾 ping Samba 共享 IP 工作正常。我只是无法使用 Tails 文件浏览器访问共享。
我还可以看看其他一些想法吗?
命令smbclient -L host
给我带来了“连接到主机失败(错误 NT_STATUS_UNSUCCESSFUL)“。但是,如果我输入,smbclient -L 192.168.178.31
我会成功获得包含股票的表格。
以下是目前情况的一些截图:
通过 CLI 进行配置检查:
user@hostname: ~$ smbtree
WORKGROUP
\\HOSTNAME HOSTNAME server (Samba, Ubuntu)
\\HOSTNAME\IPC$ IPC Service (HOSTNAME server (Samba, Ubuntu))
\\HOSTNAME\Tails-SMB Shared Samba Network Drive for Tails
\\HOSTNAME\Windows-SMB Shared Samba Network Drive for Windows
user@hostname: ~$ nmblookup
192.168.122.1 HOSTNAME<00>
(This seems to be fine)
虚拟机管理器:
侏儒网络管理器:
通过文件浏览器连接到 Samba 共享 IP 时出现 Tails 错误:
Tails(成功?)向 Samba-Server-IP 发送 ping:
因此,两个 IP 似乎都工作正常:192.168.122.1
以及192.168.178.31
(从重新启动 samba 服务器之前的先前尝试)。
更新:Samba-exchange 仍然无法工作。
也许有趣:对这个 Samba 问题非常沮丧,我多次重新安装了 Debian 9 主机,因为我认为无论如何我都犯了一个错误。在此,我想记住以下事实:当我第一次安装 Debian 并想要启动 Virtual Machine Managersdefault
网桥时virbr0
,我收到一个错误,表示未检测到防火墙。因此Virtual Machine Manager
不想启动这座桥。我以前从未收到过这样的警告,因此我删除了default
网桥并重新创建了一个具有相同设置和相同名称的新网桥。然而,手动启动这座新桥很容易,没有任何问题。尽管仍然没有安装防火墙,虚拟机管理器毫无怨言地接受了新桥。我想请记住,这次我让 Samba 交换工作正常了。
然而,我对主机系统进行了整个重新安装,因为其他一些东西不起作用,同时我玩了很多软件包。据此我发现这个错误消息“未检测到防火墙”是由于缺少软件包firewalld
和dnsmasq
.我安装了这些软件包,但 Samba Exchange 再也没有工作过。
不幸的是,我对 Linux 不太感兴趣,无法自己找出错误。也许这只是一个简单的事情,通过防火墙的IP设置或类似的东西......
Samba 的另一个愚蠢行为是,在通过命令重新启动 Samba 服务器后, -/etc/init.d/samba restart
命令smbtree
无法直接运行。有时我必须等待几秒钟,直到不再收到空行并显示树。
此外,该smbtree
命令有时仅显示带有主机名的输出行,但不命名创建的 Samba 共享。此行为似乎受到 中的选项的影响smb.conf
。上层提供的smb.conf
邀请smbtree
命令也可以正确显示其输出中的份额。但是,如果我做一个非常简单的[global]
部分,只有两个基本条目,有时 的输出smbtree
仍然完全为空 - 我不知道为什么。
在我的具有相同设置的 Debian 8 主机上,smbtree
-command 输出确实也只有一行。也许某个地方有错误?通常smbtree
应该显示主机名和桑巴舞也分享。至少Samba交换在这个Debian 8系统上可以工作(这里安装了nofirewalld
和no )。dnsmasq
答案1
您正在使用广播( bcast )来解析名称,但您的计算机位于不同的子网上。
广播名称解析仅适用于同一子网。
/etc/hosts
您必须在尾部主机上添加一个条目,其中包含:
192.168.178.31 hostnameofthesmbserver
你可以用这个命令来做到这一点:
sudo nano /etc/hosts
总是在重新启动时检查此文件,因为我认为 tail 不会保持此更改持久。
答案2
一位同事发现了这个问题:
默认情况下,Samba 被 阻止firewalld
。因此,需要安装软件包firewall-config
来在防火墙中激活 Samba。如果没有 GUI,这可能也是可能的,但使用firewall-config
GUI 需要 10 秒的时间...提到在防火墙中永久激活 Samba,而不仅仅是当前会话。
现在一切正常!