----------------
近期在使用VirtualBox的时候遇到这样的场景,我们需要让宿主机可以访问虚拟机内部的服务,并且虚拟机可以上网。VirtualBox默认的网络方式是Nat网络地址转换,虚拟机可以直接上网但是宿主机却无法访问虚拟机的服务。
四种网络类型
1、NAT 网络地址转换模式(NAT,Network Address Translation) 2、Bridged Adapter 桥接模式 3、Internal 内部网络模式 4、Host-only Adapter
主机模式VMWare中有三种,其实他跟VMWare 的网络连接方式都是一样概念,只是比VMWare多了Internal方式。要让自己(或别人)理解深刻,方法就是做比较和打比方,比较之间的不同和相同,拿熟知的事物打比方。先来一张图,通过这张图就很容易看出这4种方式的区别:
解决方案
我们可以使用双网卡的配置来完成这个需求。
首先将网卡1设置为仅主机(Host-Only)网络
如果没有这个选项,那么点击管理,然后点击主机网络管理器,点击创建新建一个host-only网络即可
然后启用网卡2,将网卡2设置为网络地址转换NAT
然后启动ubuntu,命令行中输入ip a
查看网卡,由图中我们可以看到已经有两张网卡:enp0s3和enp0s8
我们在/etc/netplan/文件夹下新建一个网卡配置文件netcfg.yaml
cd /etc/netplan/
vim netcfg.yaml
然后写上如下内容:
network:
version: 2
renderer: networkd
ethernets:
enp0s3: //对应网卡名称,这个是host-only网络
addresses:
- 192.168.56.101/24 // 我们给虚拟机分配的内网固定静态ip地址
dhcp4: no
enp0s8: // 这个是nat地址转换网络
addresses: []
dhcp4: true
然后保存,使用以下命令让配置生效:
sudo netplan generate
sudo netplan apply
这个时候配置应该生效了,可以ping一下我们给虚拟机配置的ip看看是否可ping通
如果ping不通,可以尝试重启试一下。
我们在虚拟机内部ping一下百度,验证是否可以上网
虚拟主机内部我安装了宝塔,所以接下来尝试访问宝塔的端口看是否正常
ok,至此已配置完成。