设置 VirtualBox 虚拟机为静态 ip 以方便主机访问
现在的 Virtualbox 支持无界面启动了,这时我们一般是在主机上直接用 ssh 访问虚拟机。但是如果主机经常使用不同的网络,IP 地址无法固定(比如主机是笔记本,经常往返于办公室和卧室),最终导致虚拟机的 IP 地址也经常变动,那无疑为我们用 ssh 访问虚拟机添加了许多麻烦。本文介绍如何使 Virtualbox 虚拟机的 IP 地址相对于主机固定的方法。
本文的主机为 Windows 11 系统,虚拟机软件为 VirtualBox 7.0,虚拟机系统为 Debian 13。正常情况下应该适用于所以操作系统。
网络连接种类
Virtualbox 网络连接方式有很多种选择,但是我们常用的是这是三个:
- 网络地址转换(NAT);
- 桥接网卡;
- 仅主机(Host-Only)网络。
每种网络连接有着自己的特点,下面列举下主要特点
模式名称 | 特点 |
---|---|
网络地址转换(NAT) | 连接这个网络可以访问外部网络,但是外部网络不可访问虚拟机 |
桥接网卡 | 这个网络完全可以共享主机网络,主机网络发生变化时,也跟随变化,IP 也随之变动 |
仅主机(Host-Only)网络 | 这个网络也可以用来主机访问虚拟机以及虚拟机上 Web 服务,但是虚拟机不可访问外网 |
选择网络连接方式
从上面的介绍来看有多种网络连接可以选择
最简单的就是选择桥接网卡,直接共享主机网络,主机、虚拟机之间访问都没有问题
但是我们家用或者公司使用,都不会固定 IP 的,主机随时变化,那么虚拟机的 IP 也随时变化,很不方便,我们希望虚拟机的 IP 是固定的,方便我们连接和访问服务使用
所以最终的选择是:网络地址转换(NAT) + 仅主机(Host-Only)网络的组合。
操作步骤
新增 仅主机(Host-Only)网络
在 Virtualbox 中依次选择:管理 => 工具 => 网络管理器
点创建,仅主机(Host-Only)网络,在下面的网卡设置中选择手动配置网卡,填上你喜欢的 IP 地址和正确的子网掩码(本文选择的地址是192.168.56.1,子网掩码为255.255.255.0),最后点击应用。DHCP 服务器选择不启用。
然后就会在 Windows 主机的设置 => 网络和 Internet => 高级网络设置这里看到对应的网络:Virtualbox Host-Only Ethernet Adapter。
这样主机(Host-Only)网络的 IP 就配置好了。
配置虚拟机网络
点击安装好的 Debian 虚拟机:设置 => 网络。
网卡1:启用网络连接,连接方式为网络地址转换(NAT)
网卡2 启用网络连接,连接方式为仅主机(Host-Only)
网络这里的网卡顺序也是有意义的,会对应虚拟机对两张网卡识别的顺序。
虚拟机内部设置
启动 Debian
执行
1 | ip address |
会看到类似于如下输出
1 | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 |
可以看到网卡 1 被识别为 enp0s3,并且自动获取了 IP 地址,(这一般是安装系统时自动设置的,如果你没有自动设置,那还需要手动设置)。网卡 2 被识别为 enp0s8,当前没有 IP 地址。
我们需要手动编辑网络配置文件。网络配置文件一般为:/etc/network/interface
。可以用你自己喜欢的编辑器来编辑这个文件。
可以按照下面的示例来编辑网络配置文件,要注意网卡 2(enp0s8)需要设置为 static,并且地址需要设置为上文主机(Host-Only)网络的同一个网段的 IP,且不能于主机(Host-Only)网络的地址相同。比如上文我们将主机(Host-Only)网络的 IP 设置为 192.168.56.1,那么此处我们可以将 address 设置为 192.168.56.2。并且需要注意,不要为网卡 2 设置网关,否则虚拟机将不能联网。
1 | # This file describes the network interfaces available on your system |
修改完毕之后,需要重新启动网路
1 | systemctl restart network |
到这里就可以执行 ip address
查看网卡情况,网卡 2(enp0s8)已经设置成固定 IP 了,同时 ping http://www.baidu.com
也是可以联网的。
至此虚拟机设置完成,我们可以愉快的使用 ssh 管理我们的虚拟机了。