Linux 客户机上的 VirtualBox 和 Samba 4(仅限 NAT 和主机)

Linux 客户机上的 VirtualBox 和 Samba 4(仅限 NAT 和主机)

先生们,

我确实需要您的帮助来使用“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

相关内容