
ArchLinux 使用 VirtualBox NAT + Host-Only 双网卡
中文文档 : https://wiki.archlinux.org/title/VirtualBox_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
安装 Virtualbox
1 | yay -S virtualbox |
注意:根据提示选择对应的 virtualbox-host-modules
软件包
加载 VirtualBox 内核模块
1 | sudo modprobe vboxdrv vboxnetadp vboxnetflt |
vboxnetadp
和 vboxnetflt
:这两个模块在使用桥接网络和 host-only 网络功能时,都是需要的。具体来说,vboxnetadp 模块用于在 VirtualBox 全局配置里为主体机创建虚拟网卡;vboxnetflt 模块会在使用了该功能的客体机启动时起作用。
VirtualBox 支持的多种网络
网络地址转换(NAT):
1、虚拟机可以上网。
2、默认情况下,主机无法连接虚拟机。
3、虚拟机与虚拟机不能相互连接,使用此网络模式的虚拟机,VirtualBox 会给每个虚拟机单独创建一个 NAT 设备,虚拟机与虚拟机是无法相互连接的。
桥接网卡:
1、虚拟机可以上网。
2、主机能连接虚拟机,虚拟机也可以连接主机。
3、虚拟机与虚拟机能相互连接。
仅主机(Host-Only)网络:
1、虚拟机不能上网。
2、主机能连接虚拟机,虚拟机也可以连接主机。
3、虚拟机与虚拟机能相互连接。
NAT 网络:
1、虚拟机可以上网。
2、默认情况下,主机无法连接虚拟机。
3、虚拟机与虚拟机能相互连接;
“网络地址转换(NAT)” 与 “NAT 网络” 最大的不同点在于:“NAT 网络” 的虚拟机可以使用同一个全局 NAT 设备,所以虚拟机与虚拟机能相互连接;而使用 “网络地址转换(NAT)” 网络,VirtualBox 给每个虚拟机单独创建一个 NAT 设备,所以虚拟机与虚拟机无法相互连接。
通常可以使用 “桥接网卡” 这种网络,并将网卡配置为静态 IP。主机与虚拟机都在一个网段,实现主机与虚拟机相互连接、虚拟机与虚拟机相互连接,虚拟机也能上网。
但是公司的网络通常不允许将电脑配置为静态 IP,可使用 “NAT 网络”+“仅主机(Host-Only)网络” 双网卡模式解决虚拟机使用静态 IP、上网、相互连接的问题。
“NAT 网络” 的作用是:实现虚拟机上网,实现虚拟机与虚拟机相互连接,并且支持将网卡配置为静态 IP(用于虚拟机之间连接,虚拟机重启后 IP 地址不变)。
“仅主机(Host-Only)网络” 的作用是:实现主机与虚拟机相互连接,也支持将网卡配置为静态 IP,虚拟机重启后 IP 地址不变。
创建仅主机网卡
VirtualBox 6.1.28 对仅主机接口设置的地址施加了额外的控制,如果不是白名单修改则可能会出显以下错误
1 | Callee RC: |
如果是 Linux 用户且则需要添加 IP 白名单
1 | cat <<EOF | sudo tee /etc/vbox/networks.conf |
点击 “管理” —> “主机网络管理器”
修改 网卡 和 DHCP 服务器地址
修改成功后在宿住机即可 ip a
查看网卡信息(必须有 IP 才算成功)
创建 NAT 网络
点击 “管理” —> “全局设定” —> “网络” —> “添加新 NAT 网络” 。这一步是新建一个全局的 NAT 设备,所有的虚拟机都可以使用此 NAT 设备。新 NAT 网络 CIDR 默认是 10.0.2.0/24。
虚拟机配置双网卡
网卡一:NAT 网络
网卡二:仅主机(Host-Only)
修改虚拟机 IP
enp0s3:为 NAT 网络
1 | vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 |
enp0s8:为仅主机网卡
修改为静态 ip
1 | vi /etc/sysconfig/network-scripts/ifcfg-enp0s8 |
重启网卡
1 | systemctl restart network |
- Thanks for your appreciation. / 感谢您的赞赏