我有以下设置:
主机 Windows:
IPv4 Address. . . . . . . . . . . : 192.168.0.103
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.1
VirtualBox 中的客户机 Ubuntu:
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:01:85:e3 brd ff:ff:ff:ff:ff:ff
inet 192.168.33.3/24 brd 192.168.33.255 scope global dynamic enp0s3
valid_lft 359sec preferred_lft 359sec
inet6 fe80::a00:27ff:fe01:85e3/64 scope link
valid_lft forever preferred_lft foreve
VirtualBox 仅主机以太网适配器:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::1454:89c9:eb7c:9d6d%37
IPv4 Address. . . . . . . . . . . : 192.168.33.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
VirtualBox DHCP:
Server 192.168.33.2
Mask 255.255.255.0
Lower addr 192.168.33.3
Upper addr 192.168.33.254
我可以轻松地ping
从主机 Windows 切换到客户机:
ping 192.168.33.3
Pinging 192.168.33.3 with 32 bytes of data:
Reply from 192.168.33.3: bytes=32 time<1ms TTL=64
Reply from 192.168.33.3: bytes=32 time<1ms TTL=64
Reply from 192.168.33.3: bytes=32 time<1ms TTL=64
否则它对我来说不起作用。也就是说,我无法从客户机 Ubuntu ping 到主机 Windows:
ping 192.168.0.103
ping: connect: Network is unreachable
PS 我甚至尝试修改客户机的地址为 192.168.0.3 以匹配主机的网络,而实际结果是一样的:
我无法从客户机 Ubuntu ping 到主机 Windows 机器192.168.0.103
。
但是,客户机(Ubuntu)可以 ping VirtualBox 仅主机以太网适配器:
ping 192.168.33.1
PING 192.168.33.1 (192.168.33.1) 56(84) bytes of data.
64 bytes from 192.168.33.1: icmp_seq=1 ttl=128 time=0.378 ms
64 bytes from 192.168.33.1: icmp_seq=2 ttl=128 time=0.430 ms
VirtualBox 有以下表:
https://www.virtualbox.org/manual/ch06.html
Host-only:
VM→Host +
VM←Host +
VM1↔VM2 +
VM→Net/LAN -
VM←Net/LAN -
这是正常的 VirtualBox 行为吗?(我看到有人在这种模式下可以从客户机 ping 到主机)。
我遗漏了什么?
答案1
我有相同的设置 - 一个 Windows 主机,上面有一个 Ubuntu VM。同样的问题。我可以从主机 ping 客户机,但反过来不行。我在 VM 设置中使用了桥接适配器,并且我完全删除了 VirtualBox 创建的仅主机适配器...
问题原来出在 Windows Defender 防火墙上!作为一种散弹枪式方法,我直接将其完全禁用,然后进行测试... 瞧!
理想情况下,人们会希望添加防火墙规则来为特定的 IP 范围、端口、协议打开针孔...首先尝试使用散弹枪来查看是否存在相同的基本问题。
答案2
您的主机 PC 有多个网络接口和多个 IP 地址。很难确定,但根据您提供的信息,IP 很192.168.0.103
可能是您的标准网络接口。VirtualBox 创建了第二个网络接口,称为“VirtualBox 仅主机以太网适配器”,并为该适配器指定了 IP 192.168.33.1
。
由于您可以192.168.33.1
从来宾虚拟机 ping 通,因此您可以从来宾 ping 通主机,但您只能 ping 与虚拟机共享的接口/IP。您的 PC 不会将网络流量从主机专用接口路由到您的真实网络接口。
至于使用 Wireshark 捕获流量,Wireshark只能使用物理接口主机专用接口是VirtualBox 创建的软件界面所以您可能无法从中捕获信息。
答案3
这对于 Virtual Box 中的仅主机模式来说是正常的。
VirtualBox 主机专用适配器还可以用作 DHCP 服务器,为 VirtualBox 虚拟机分配 IP 地址。主机(以及其他虚拟机,如果有)然后可以使用 ssh 或 sftp 使用这些 IP 地址连接到虚拟机(前提是虚拟机上运行着 ssh 服务器)。
这确实意味着使用主机专用的虚拟机无法访问外部世界,但具体来说,主机应该能够使用 ssh 登录到虚拟机(运行 ssh 服务器)并使用 sftp 在主机和虚拟机之间传输文件。
如果您希望互连,请考虑使用桥接或 NAT 模式。这样可行。