我有 Mac OS X 10.10(Yosemite)作为主机,我已经安装了 VirtualBox 并创建了一个带有 Windows 7 64 位的虚拟机。
我在虚拟机上创建了 2 个网络适配器,如下所示。但我无法从 Mac OS X 主机操作系统 ping 通 Windows 7 客户操作系统。如何解决此问题?我可以从客户操作系统 ping 通主机操作系统。
我觉得这个问题的解决方案也能帮助我解决使用 SSH 连接客户操作系统时遇到的问题。我不想使用端口转发。
- 主机专用适配器
- NAT 适配器
命令VBoxManage showvminfo
显示:
VBoxManage showvminfo win7_x64
提供以下信息
NIC 1: MAC: 080027D6197C, Attachment: Host-only Interface
'vboxnet0', Cable connected: on, Trace: off (file: none),
Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0,
Promisc Policy: deny, Bandwidth group: none
NIC 2: MAC: 080027DC16CE, Attachment: NAT, Cable connected: on,
Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps,
Boot priority: 0, Promisc Policy: deny, Bandwidth group: none
NIC 2 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
当我ipconfig
在客户机上运行时,我得到以下输出。
Windows IP Configuration
Ethernet adapter Local Area Connection 2:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::78da:422c:2215:41bb%12
IPv4 Address. . . . . . . . . . . : 192.168.56.101
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . : Home
Link-local IPv6 Address . . . . . : fe80::61b7:c9f4:3f50:c732%10
IPv4 Address. . . . . . . . . . . : 10.0.3.15
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.0.3.2
Tunnel adapter Local Area Connection* 12:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Tunnel adapter isatap.Home:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . : Home
Tunnel adapter isatap.{13342B61-268C-4B2A-92E7-5DA848C7707B}:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
当我尝试 ping 访客 IP 地址(在本例中192.168.56.101
)时,我一直遇到超时。
XYZ-MBP:~ user1$ ping 192.168.56.101
PING 192.168.56.101 (192.168.56.101): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
^C
--- 192.168.56.101 ping statistics ---
5 packets transmitted, 0 packets received, 100.0% packet loss
以下是在我的 Mac(主机)上运行 ifconfig 命令的结果
XYZ-MBP:~ user1$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
nd6 options=1<PERFORMNUD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 24:a0:74:f0:ee:46
inet6 fe80::26a0:74ff:fef0:ee46%en0 prefixlen 64 scopeid 0x4
inet 192.168.0.5 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fd54:669f:e4f2::26a0:74ff:fef0:ee46 prefixlen 64 autoconf
inet6 fd54:669f:e4f2::3024:caa:5279:425d prefixlen 64 autoconf temporary
nd6 options=1<PERFORMNUD>
media: autoselect
status: active
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether 72:00:07:b1:67:90
media: autoselect <full-duplex>
status: inactive
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether 72:00:07:b1:67:91
media: autoselect <full-duplex>
status: inactive
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
ether 06:a0:74:f0:ee:46
media: autoselect
status: inactive
awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1452
ether 26:39:2f:b8:30:3f
inet6 fe80::2439:2fff:feb8:303f%awdl0 prefixlen 64 scopeid 0x8
nd6 options=1<PERFORMNUD>
media: autoselect
status: active
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=63<RXCSUM,TXCSUM,TSO4,TSO6>
ether 26:a0:74:0f:a8:00
Configuration:
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
ipfilter disabled flags 0x2
member: en1 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 5 priority 0 path cost 0
member: en2 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 6 priority 0 path cost 0
nd6 options=1<PERFORMNUD>
media: <unknown type>
status: inactive
vboxnet0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
ether 0a:00:27:00:00:00
inet 192.168.0.10 netmask 0xffffff00 broadcast 192.168.0.255
答案1
连接的两端vboxnet
,IE,您的仅主机适配器属于两个不同的子网,因此它们无法相互通信。
从ipconfig:
Ethernet adapter Local Area Connection 2:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::78da:422c:2215:41bb%12
IPv4 Address. . . . . . . . . . . : 192.168.56.101
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
来自是否配置主机上的命令:
vboxnet0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
ether 0a:00:27:00:00:00
inet 192.168.0.10 netmask 0xffffff00 broadcast 192.168.0.255
其中一个地址为192.168.56.101
,另一个地址为192.168.0.10
。为了让它们能够互相通信,它们应该属于同一个子网192.168.56.0/24
。更糟糕的是,主机vboxnet0
接口的子网与主机的 LAN 相同,只是为了确保最大程度地混淆。VirtualBox 自动将这两个子网设置为不同的,这就是使用 这样一个不寻常的子网的原因192.168.56.0/24
。您不应该改变此方案。
您的路由表可能还包含一些错误,但我们会在到达那里时解决这个问题。
答案2
下面的方法解决了我的问题:
从 Mac OS X 主机 ping Win7 客户机时出现超时,并发现适配器顺序定义很重要。
以下配置有效:
* 适配器 1:仅主机
* 适配器 1:仅主机 | 适配器 2:NAT
* 适配器 1:仅主机 | 适配器 2:桥接
* 适配器 1:仅主机 | 适配器 2:桥接 | 适配器 3:NAT
* 适配器 1:仅主机 | 适配器 2:NAT | 适配器 3:桥接
其中 ping 响应为:
来自 192.168.56.199 的 64 字节:icmp_seq=0 ttl=64 时间=0.327 毫秒
来自 192.168.56.199 的 64 字节:icmp_seq=1 ttl=64 时间=0.277 毫秒
来自 192.168.56.199 的 64 字节:icmp_seq=2 ttl=64 时间=0.314 毫秒
...
以下配置超时:
* 适配器 1:NAT | 适配器 2:仅主机
* 适配器 1:桥接 | 适配器 2:仅主机
* 适配器 1:桥接 | 适配器 2:NAT | 适配器 3:仅主机
其中 ping 响应为:
icmp_seq 请求超时 0
icmp_seq 请求超时 1
icmp_seq 请求超时 2
...
我现在还不确定为什么,但是似乎必须首先指定仅主机适配器。在上述情况发生后,我停止测试排列。
希望这能有所帮助!