先生们,
我确实需要您的帮助来使用“Virtual Box”配置“Samba 4”。
情况如下:
在我工作的某些网络中,Samba 4 可以工作,但在其他网络中则不行。虚拟盒中的客户机配置了一个用于 Samba 4 的“仅主机”网络和用于互联网的其他“NAT”。只有在我禁用“NAT”网络并仅保留“仅主机”时,Samba 才能在所有网络上工作。也就是说,显然 NAT 网络(应仅将其用作代理来与外部网络隔离)在某些情况下会受到某种负面影响。
那么...这个价值百万的问题来了:
是什么原因造成的?
相信我,我尝试了一切办法,但似乎没有任何办法可以解决这个问题。
注意 I:我无法使用 Bridge 的访客网络!注意 II:显然这只发生在 Samba 4 上,因为 Samba 3 可以在任何网络上工作!
这是一个很难解决的情况,我已“陷入”其中近三周了。
有人也遇到这个问题吗?
我请求你帮忙!谢谢!
更新:
如果我要冒险回答这个问题,我会说问题可能出在网关上。好吧,看来 Samba 4 从“仅主机”接口接收请求,但尝试通过“NAT”接口应答(因为只有一个网关,“NAT”网关)。我尝试通过在文件“/etc/samba/smb.conf”中的“[global]”部分输入以下内容来解决这个问题...
interfaces = enp0s3 lo
bind interfaces only = yes
... 确实有效(仅接受来自“仅主机”接口的请求)。但这并不能解决问题。
加:
“ifconfig”命令的输出:
enp0s3 Link encap:Ethernet HWaddr 08:00:27:AB:52:E3
inet addr:192.168.56.100 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:feab:52e3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:602 errors:0 dropped:0 overruns:0 frame:0
TX packets:849 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:81307 (79.4 Kb) TX bytes:127690 (124.6 Kb)
enp0s8 Link encap:Ethernet HWaddr 08:00:27:09:CC:37
inet addr:10.0.3.15 Bcast:10.0.3.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe09:cc37/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5889 errors:0 dropped:0 overruns:0 frame:0
TX packets:4340 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6668637 (6.3 Mb) TX bytes:432330 (422.1 Kb)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:519 errors:0 dropped:0 overruns:0 frame:0
TX packets:519 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:39728 (38.7 Kb) TX bytes:39728 (38.7 Kb)
“/etc/samba/smb.conf”
# smb.conf is the main Samba configuration file. You find a full commented
# version at /usr/share/doc/packages/samba/examples/smb.conf.SUSE if the
# samba-doc package is installed.
[global]
workgroup = WORKGROUP
passdb backend = tdbsam
printing = cups
printcap name = cups
printcap cache time = 750
cups options = raw
map to guest = Bad User
include = /etc/samba/dhcp.conf
logon path = \\%L\profiles\.msprofile
logon home = \\%L\%U\.9xprofile
logon drive = P:
usershare allow guests = Yes
add machine script = /usr/sbin/useradd -c Machine -d /var/lib/nobody -s /bin/false %m$
domain logons = Yes
domain master = Yes
local master = Yes
os level = 65
preferred master = Yes
security = user
usershare max shares = 100
wins server =
wins support = No
interfaces = enp0s3 lo
bind interfaces only = yes
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[profiles]
comment = Network Profiles Service
path = %H
read only = No
store dos attributes = Yes
create mask = 0600
directory mask = 0700
[users]
comment = All users
path = /home
read only = No
inherit acls = Yes
veto files = /aquota.user/groups/shares/
[groups]
comment = All groups
path = /home/groups
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @ntadmin root
force group = ntadmin
create mask = 0664
directory mask = 0775
[SES_DF]
comment = SES_DF
inherit acls = Yes
path = /home/brlight/DEV_GUESTS/SES_DF
read only = No
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
write list = root
“NAT”接口处于活动状态时“route”命令的输出:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.0.3.2 0.0.0.0 UG 0 0 0 enp0s8
10.0.3.0 * 255.255.255.0 U 1 0 0 enp0s8
192.168.56.0 * 255.255.255.0 U 1 0 0 enp0s3
!!!重要:如果我禁用主机网络,Samba 4 仍可工作,并且我得到与上面相同的输出!!!
当“NAT”接口未激活(Virtual Box 上的电缆已拔出)时“route”命令的输出(Samba 4 正常运行!):
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.56.0 * 255.255.255.0 U 1 0 0 enp0s3
注意:没有网关...
在这种情况下,我提出两个假设的解决方案:
- 让 Samba 4 在任何情况下(请求和响应)都只看到“enp0s3”接口;
- 尝试在 VirtualBox 中设置某些设置,以阻止外部网络对“NAT”产生负面影响。因为虚拟机在某些网络上工作,但在其他网络上不工作;
注意:我为客户机使用的发行版是 OpenSUSE 13.1,为主机使用的发行版是 Linux Mint 16 KDE。
加:
我尝试更改“NAT”的范围,因为主机网络处于类似的范围(192.168.1.x)。我使用范围“169.254.0.x”作为“NAT”网络,但问题仍然存在。
如您所见,这是一个难题,很难诊断,我需要您的全力帮助!
答案1
我遇到了类似的情况,我能够通过在所有 Windows 机器上除主机专用适配器之外的所有接口上禁用 TCP 上的 NetBIOS 来使其正常工作。
VirtualBox 虚拟机:
- 主机:Windows 10 Pro
- 访客 1:Debian Buster(Samba 版本 4.5.12)
- 嘉宾 2:Windows 7 Pro
联网:
- 仅主机网络:
- 主人和两位客人
- DHCP 网络 169.254.0.0/16
- NAT 接口:
- 两位嘉宾
- 还与连接到 NAT 网络的访客合作
主机和 Windows 客户机配置
- 在所有接口上禁用 TCP/IP 上的 NetBIOS除了仅主机接口
- 转到每个网络适配器的属性,然后转到 IPv4 属性 → 高级 → WINS → NetBIOS 设置
- 我没有用 IPv6 适配器测试过这一点
至于为什么我不得不这么做,我不知道。Windows 主机和客户机在解析任何主机名时从未遇到任何问题。只有 Linux 机器有问题,而且它偶尔也能正常工作。
我在两个虚拟机上运行了 tcpdump/Wireshark,我可以看到 NetBIOS 广播和响应来回传输,并且 nmblookup 在 Linux 主机上运行良好,但我无法从 Linux ping 或挂载网络共享。
我也不知道为什么我不需要将 NetBIOS 限制为 Linux 机器上的仅主机适配器。
答案2
可能是因为即使我们在客户操作系统上设置了接口,VirtualBox NAT 系统也会检查所有传入和传出连接?由于 VirtualBox NAT 在主机上运行,因此问题很可能不是来自客户操作系统。
答案3
当我想限制 Virtualbox 客户机对主机上的 Samba 的访问时,我也遇到了类似的问题。某些 IP 范围是允许的,其他则不允许。当我从客户机中选择 NAT 接口时,即使我限制 Samba 以允许仅主机网络的 IP 地址范围,我仍然可以访问主机的 Samba 共享。
使用 Wireshark 调试问题后:Virtualbox NAT 在访问 Internet 之前会检查内部主机网络上的路由。Virtualbox 还会用它检查的主机专用网络伪装您的内部 IP 地址。此 IP 地址不是您从“ip addr”命令获取的 IP 地址。
在我的 Samba 配置中:我希望我的共享可从主机专用接口获得,而不是从 NAT 获得。
为了让 Samba 禁止来自 NAT 的访问,我需要排除主机 IP。在 Wireshark 中,这显示为源地址和目标地址相同。两者都是 IP 范围内的主机 IP 地址(通常为 xxx1)。
因此我的 Samba 配置最终变成:
hosts allow = 192.168.56. 192.168.57. EXCEPT 192.168.56.1 192.168.57.1
hosts deny = ALL