virtualbox vm 无法从外部访问

时间:2021-01-07 08:53:19

标签: linux networking virtualbox bridge

我在ubuntu 18.04安装了vbox,并通过添加参数使用桥接网络:

--bridgeadapter2 eno1 --nicpromisc2 allow-all

一切正常,vm可以ping到外面,host可以ping通vm,但是外面不能ping通vm: (同一子网外可以ping通vm,例如:10.124.214.x可以ping通vm)

# 10.124.214.116 is vm, 10.124.214.4 is host, 10.124.12.103 is outside IP
# From host to vm
traceroute 10.124.214.116
traceroute to 10.124.214.116 (10.124.214.116), 30 hops max, 60 byte packets
 1  10.124.214.116 (10.124.214.116)  0.232 ms  0.197 ms  0.191 ms
# From vm to outside
ping 10.124.12.103
PING 10.124.12.103 (10.124.12.103) 56(84) bytes of data.
64 bytes from 10.124.12.103: icmp_seq=1 ttl=63 time=1.38 ms

棘手的是vbox接口不像普通的linux tun/tap接口,我可以在VM中看到接口,但是我不能从主机操作,主机上没有网桥。

是否有任何 API 可以解决 vbox 问题?

2 个答案:

答案 0 :(得分:0)

干杯码农

你说的对桥牌。这里的问题是您的 VM 当前位于由虚拟机创建的 NAT 之后(请参阅您提到的不同子网)

您可以在这里做的是在主机上创建新的桥接器(好的说明HERE

使用此设置,您必须稍微更改网络设置:

    id     treatment   period  treatment_nextp    result       
    1      0           0       1                  5
    1      1           1       1                  7
    1      1           2       NA                 3
    2      0           3       0                  6
    2      0           4       NA                 2
    3      0           4       0                  4
    3      0           5       1                  9
    3      1           6       1                  5
    3      1           7       NA                 7

然后您可以将您的 VM 分配给 VM Host +-----------------------------------------------------------------+ | -> VM A (10.124.214.5/24) | Outside network (10.124.214.0/24) -> | eno1 (no IP) -> br0 (10.124.214.4/24) -> VM B (10.124.214.6/24) | | -> VM C (10.124.214.7/24) | +-----------------------------------------------------------------+ 。取决于您的外部网络设置,您可能需要为 VM 设置静态 IP

答案 1 :(得分:0)

最后,我找到了根本原因: 我的 VM 中有两个接口: 第一个是NAT,第二个是网桥。默认情况下,vbox 将 NAT 接口设置为默认路由,当我发送数据包时,它使用 NAT 接口。但是HOST和VM在同一个子网,连接HOST时使用桥接接口。当我需要从外部访问这个桥接接口时,我需要通过ip route命令添加另一个默认路由条目:

sudo ip route add default via 10.124.214.116
相关问题