VirtualBox:MacOS 主机无法连接到客户机,但客户机可以连接到主机

VirtualBox:MacOS 主机无法连接到客户机,但客户机可以连接到主机

我的设置:

  • MacOS 主机(High Sierra 10.13.3)
  • Linux 客户机(Ubuntu 16.04)
  • 虚拟盒 5.2.12
  • NAT 网络

我需要从主人到客人以及从客人到网络进行交谈。

客户机的 IP 地址为 10.0.2.15,网关为 10.0.2.2。我可以从客户机 ping 主机,没有任何问题。但是,我无法从主机 ping 客户机:

PING 10.0.2.15 (10.0.2.15): 56 个数据字节 icmp_seq 请求超时 0 icmp_seq 请求超时 1 icmp_seq 请求超时 2 ...

10.0.2.2 地址似乎已分配给我的主机:我在主机上运行一个 httpd 服务器 - 如果我从客户机在浏览器中导航到 10.0.2.2,我就可以获得主机的站点。

查看网络配置,我没有看到 virtualbox 添加的任何接口:

host$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
    inet 127.0.0.1 netmask 0xff000000 
    inet6 ::1 prefixlen 128 
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
OHC4: flags=0<> mtu 0
EHC36: flags=0<> mtu 0
EHC38: flags=0<> mtu 0
OHC6: flags=0<> mtu 0
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether xxxxx 
    inet6 fe80::1c34:9a51:ed93:3a5b%en1 prefixlen 64 secured scopeid 0x9 
    inet 10.37.37.37 netmask 0xffffff00 broadcast 10.37.37.255
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
    ether xxxxx
    media: autoselect
    status: inactive
fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078
    lladdr xxxxx
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect <full-duplex>
    status: inactive
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=b<RXCSUM,TXCSUM,VLAN_HWTAGGING>
    ether xxxxx
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect (none)
    status: inactive
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
    inet6 fe80::9a23:8dd9:bf4e:f69d%utun0 prefixlen 64 scopeid 0x8 
    nd6 options=201<PERFORMNUD,DAD>

我没有看到任何从主机连接到客户机的路线:

host$ netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.37.37.1         UGSc           77       10     en1
10.37.37/24        link#9             UCS             3        0     en1
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              3   458010     lo0
169.254            link#9             UCS             0        0     en1
255.255.255.255/32 link#9             UCS             0        0     en1

Internet6:
Destination                             Gateway                         Flags         Netif Expire
default                                 fe80::%utun0                    UGcI          utun0
::1                                     ::1                             UHL             lo0
fe80::%lo0/64                           fe80::1%lo0                     UcI             lo0
fe80::1%lo0                             link#1                          UHLI            lo0
fe80::%utun0/64                         fe80::9a23:8dd9:bf4e:f69d%utun0 UcI           utun0
fe80::9a23:8dd9:bf4e:f69d%utun0         link#8                          UHLI            lo0
fe80::%en1/64                           link#9                          UCI             en1
fe80::1c34:9a51:ed93:3a5b%en1           f0:b4:79:1f:81:f0               UHLI            lo0
ff01::%lo0/32                           ::1                             UmCI            lo0
ff01::%utun0/32                         fe80::9a23:8dd9:bf4e:f69d%utun0 UmCI          utun0
ff01::%en1/32                           link#9                          UmCI            en1
ff02::%lo0/32                           ::1                             UmCI            lo0
ff02::%utun0/32                         fe80::9a23:8dd9:bf4e:f69d%utun0 UmCI          utun0
ff02::%en1/32                           link#9                          UmCI            en1

主人不能和客人对话,这是可以理解的。问题是我该如何让它做到这一点?

答案1

我最终还是搞明白了。诀窍是创建一个仅主机网络,然后在客户机中添加两个网络接口 - 一个用于仅主机网络,另一个使用 NAT。现在 NAT 接口允许客户机访问互联网,仅主机接口允许主机和客户机之间进行双向通信。

答案2

我尝试NAT Network使用Internal NetworkVirtualBox 的 DHCP 服务器和静态 IP,但是我无法满足我的以下要求。

  • 所需子网内的 VirtualBox 网络
  • 使用 VirtualBox 自己的内部 DHCP 服务器
  • 在这个网络中,一些虚拟机使用静态 IP,其他虚拟机使用 DHCP
  • 主机应该能够通过 SSH 或任何客户端访问访客
  • 最重要的是,避免使用桥接网络,避免在本地网络上暴露 VirtualBox 网络

Host-only Network是救命恩人,并感谢@aleks-g 的回答。

这是我快速记录的逐步 HOST 设置。

# VBoxManage hostonlynet add --name=<NET_NAME> --netmask=255.255.255.0 --lower-ip=192.168.200.1 --upper-ip=192.168.200.254 --enable

就这样,继续创建虚拟机。在启动虚拟机之前,将网络适配器类型从 更改为NATHost-only@screenshot

在此处输入图片描述

如果您的虚拟机需要从 HOST 访问互联网,您可以设置网络类型NATAdapter 2@screenshot

在此处输入图片描述

接下来,我企图根据虚拟机名称或 MAC 地址创建 dhcpserver 并分配静态 IP

# VBoxManage dhcpserver add --netname <NET_NAME> --server-ip 192.168.0.1 --netmask 255.255.255.0 --lowerip 192.168.0.1 --upperip 192.168.0.254 --enable
# VBoxManage dhcpserver modify --netname <NET_NAME> --mac-address=<MAC_HERE> --fixed-address=192.168.0.101
# VBoxManage dhcpserver modify --netname <NET_NAME> --vm=<VM_NAME> --fixed-address=192.168.0.102
# VBoxManage list dhcpservers

使用最后一条list命令,DHCP 服务器出现了,并且配置正确,但虚拟机没有使用此 DHCP 服务器,并且文档没有多大帮助。我猜想 Host-only 网络有自己的秘密DHCP 系统,我用 删除了它VBoxManage dhcpserver remove --network=<NET_NAME>,并且必须在每个虚拟机上手动分配静态 IP,例如在 Centos / Fedora 上vi|nano /etc/sysconfig/network-scripts/ifcfg-<DEVICE_NAME>并添加

BOOTPROTO="none"
IPADDR="192.168.200.101"
PREFIX="24"
GATEWAY="192.168.200.254"
ONBOOT="yes"

相关内容