问题描述
我在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中看到接口,但是我不能从主机操作,主机上没有网桥。
解决方法
干杯码农
你说的对桥牌。这里的问题是您的 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
最后,我找到了根本原因: 我的 VM 中有两个接口: 第一个是NAT,第二个是网桥。默认情况下,vbox 将 NAT 接口设置为默认路由,当我发送数据包时,它使用 NAT 接口。但是HOST和VM在同一个子网,连接HOST时使用桥接接口。当我需要从外部访问这个桥接接口时,我需要通过ip route命令添加另一个默认路由条目:
sudo ip route add default via 10.124.214.116