改虚拟机的网卡地址,是我这些年做虚拟化环境时被问得最多的一件事。很多刚接触 VirtualBox 的朋友在本地搭了一套虚拟机,一开始用的 NAT 或者 DHCP 自动获取 IP,后面需要把虚拟机固定成一个内网地址方便调试,就卡住了——改完起不来、重启失效、IP 冲突、宿主机 ping 不通,各种状况。这篇文章就把 VirtualBox 里修改虚拟主机网卡地址这件事拆开讲清楚,从网络模式原理到实际操作,从 Linux 到 Windows 的做法都会覆盖,适合正在搭测试环境、做本地开发或者刚接手一台“继承了前任遗产”虚拟机的朋友参考。
1. 为什么需要手动改虚拟主机的网卡地址
1.1 最常见的使用场景:DHCP 分配的地址不固定
VirtualBox 默认的 NAT 模式是自带 DHCP 的,虚拟机启动后会自动获取一个 10.0.2.x 网段的地址。这个默认机制对上网没问题,但你要把它当服务器用就有麻烦了:每次启动 IP 都可能变,你本机写的脚本、配置的 SSH 连接、微服务注册地址全都会失效。
我遇到过一个典型情况:同事在本地起了三台 CentOS 虚拟机做集群实验,用 Vagrant 一键拉起,全部走的默认 NAT。第二天再来,发现三台机器的 IP 全部变了,之前配的主机映射表和防火墙规则全乱套。最后只能手动给每台机器配好静态 IP,才彻底解决。
还有一类场景是企业在内网里用 VirtualBox 搭了临时的 Windows 测试域控,DHCP 服务器不在宿主机上,虚拟机拿到的地址随时可能被别的设备抢走。这时候就必须手工把虚拟机的 IP 固定下来,并且要和 VirtualBox 的虚拟网络规划好,不能在同一个网段里互相冲突。
1.2 改 IP 前的必修课:VirtualBox 的几种网络模式
不先搞清楚网络模式就直接改 IP,十有八九要踩坑。VirtualBox 的虚拟机网卡支持好几种模式,咱们改地址之前至少要知道自己用的是哪一种,因为不同模式下,网卡地址的含义和改法完全不同。
- NAT 模式:虚拟机通过宿主机共享 IP 上网,虚拟机里看到的网卡是 10.0.2.x,由 VirtualBox 内置 DHCP 分配。宿主机访问虚拟机不方便,但虚拟机访问外网没问题。
- NAT Network 模式:类似 NAT,但多台虚拟机可以组成一个内部网段,VM 之间互通,也能 NAT 上网。这个模式有独立的 DHCP 服务器,可以配置网段和地址分配范围。
- 桥接模式(Bridged):虚拟机直接桥接到宿主机物理网卡,和宿主机在同一个局域网里,相当于局域网里多了一台设备。这个模式最容易产生 IP 冲突,但也最适合给虚拟机配一个和宿主机同网段的固定地址。
- 内部网络(Internal):只能虚拟机之间互通,虚拟机不能上网。
- 仅主机模式(Host-Only):虚拟机和宿主机之间互通,可以通过宿主机上网,但虚拟机默认无法访问外网。
改网卡地址之前,先打开 VirtualBox 主界面,选中虚拟机,点“设置 -> 网络”,看看当前网卡连接方式是哪一种。不同方式下,你需要改的地址范围和网关都不一样。
比如你用的是 NAT,虚拟机的网关通常是 10.0.2.1,DNS 也是 10.0.2.1 或者宿主机地址。你手动改成 10.0.2.50 是可以的,只要 DHCP 分配的地址池范围有足够的空间。但如果你用桥接模式,虚拟机要跟宿主机在同一个子网里,改 IP 前要查清宿主机实际所在网段,否则配好之后连网关都 ping 不通。
1.3 “改网卡地址”不等于“改虚拟机配置”
还有一个常见的认知误区:很多人以为在 VirtualBox 图形界面里改一下 MAC 地址或者 IP,就算改网卡地址了。实际上,VirtualBox 这个软件层面能配置的是虚拟网卡的类型、连接方式、MAC 地址、接入网线等,而 IP 地址是虚拟机操作系统里网络配置的一部分,VirtualBox 本身不会直接帮你改虚拟机的 IP。
只有 NAT Network 模式可以在 VirtualBox 的全局网络管理里配置 DHCP 地址池,从而影响虚拟机获取到的 IP 段,但这也是一种“间接”方式。真正要固定一台虚拟机的 IP,绝大多数情况下得进虚拟机系统内部,手动改网卡的配置文件。
这个认知先建立起来,后面就顺了。
2. 动手前准备:确认现状与备份配置
2.1 查虚拟机当前 IP、网卡名、网关和 DNS
改地址前,第一步是搞清楚虚拟机现在的网络状态。我一般会先登录虚拟机,依次查看三个信息:网卡名称、当前 IP、路由和 DNS。
Linux 系统里,先执行ip addr看网卡名和现有地址,再用ip route看默认网关。很多系统里网卡名不是老的 eth0,而是 ens33、ens160、enp0s3 这种,因为新版本 Linux(尤其用了 systemd 和可预测命名规则)会把网卡名变掉。如果你的网卡名显示是 enp0s3,后面改配置文件时别想当然写 eth0。
再执行cat /etc/resolv.conf看 DNS。注意有些系统里 resolv.conf 是由 systemd-resolved 管理的,内容显示 127.0.0.53,那不是真实的 DNS 地址,要用resolvectl status看实际生效的 DNS。
Windows 虚拟机更简单,命令行里执行ipconfig /all,把网卡名、IPv4 地址、子网掩码、默认网关、DNS 都记下来。最好再确认一下网卡是否启用了 DHCP,执行ipconfig /renew和ipconfig /release这种操作前要备份好现有配置,免得断网后不知道原配置是什么。
另外建议用表格把这几个关键信息记录下来,尤其是多台虚拟机的时候:
| 项目 | 当前值 | 打算改成什么 |
|---|---|---|
| 虚拟机名称 | VM-Web-01 | 不变 |
| 网卡名称 | enp0s3 | 不变 |
| IPv4 地址 | 10.0.2.15 | 192.168.56.101 |
| 子网掩码 | 255.255.255.0 | 255.255.255.0 |
| 默认网关 | 10.0.2.1 | 192.168.56.1 |
| DNS | 10.0.2.1 | 192.168.56.1 + 114.114.114.114 |
2.2 备份虚拟机配置文件,防止改崩了没法恢复
操作前备份这个习惯在任何系统上都值得养成。VirtualBox 虚拟机有两个层面的配置:一个是虚拟机的 .vbox 描述文件,另一个是虚拟机内部的系统网络配置。
.vbox 文件通常位于用户目录下的 VirtualBox VMs 文件夹里,比如/home/用户名/VirtualBox VMs/虚拟机名/虚拟机名.vbox。我一般会先复制一份成 .vbox.bak,因为后续如果修改网卡类型或者 MAC 地址,这个文件是关键的。在改之前备份,万一改错了,直接删掉新文件,把 .bak 改回来,虚拟机配置就回来了。
虚拟机内部也要备份网络配置文件。以常见的 CentOS/RHEL 系列为例,网卡配置文件在/etc/sysconfig/network-scripts/ifcfg-网卡名,我的习惯是复制一份到同目录,命名成ifcfg-网卡名.bak。Ubuntu 18.04 之后用 netplan,配置在/etc/netplan/*.yaml,同样先复制一份到/root/或者其他安全目录。Debian 系老版本用/etc/network/interfaces。
备份这一步虽然花不了 30 秒,但能让你在改完发现不起作用的时候从容回滚,而不是对着黑屏抓脑袋。
2.3 确认 VirtualBox 网络模式对应的宿主机端网段
这一步容易被忽略,但它决定了你改的 IP 到底能不能通。
如果你用的是“仅主机网络(Host-Only)”,需要先打开 VirtualBox 的“全局工具 -> 网络管理器”,查看 Host-Only 网络的网段默认是多少。VirtualBox 默认的 Host-Only 网段一般是 192.168.56.0/24,宿主机对应的 IP 是 192.168.56.1。你要把虚拟机 IP 改成 192.168.56.x,网段必须在 192.168.56.0/24 内,网关填 192.168.56.1。
如果是 NAT Network,打开“网络管理器”里的 NAT Network 列表,双击或点击属性,能看到网段和后缀。默认的是 10.0.2.0/24,DHCP 服务默认开启。你要给某台虚拟机配静态 IP,建议先把这个网段改成自己习惯的,比如 192.168.100.0/24,避免和宿主机真实局域网冲突。
桥接模式就简单但也更麻烦:虚拟机网卡会直接使用宿主机物理网卡的网络。这时你打开宿主机的命令行执行ipconfig(Windows)或ip addr(Linux),看看自己宿主机的 IP、掩码、网关,虚拟机的静态地址必须跟宿主机在同一个网段,网关通常也填宿主机网关,不能用 VirtualBox 默认的 10.0.2.x。
我见过很多人把虚拟机设为桥接后,地址还在 10.0.2.15,结果怎么都上不了网。原因就是网段和宿主机完全不在一个世界,要先把地址改成和宿主机同网段才行。
3. 核心操作:三种改网卡地址的实用方法
3.1 方法一:在虚拟机内直接修改网络配置(最通用、最推荐)
这是最本质、也最不容易出问题的做法,适用于所有网络模式。本质上,你就是像修改一台物理机一样,把操作系统的 IP 配置改成你想要的静态地址。
Linux(以 CentOS 7/8 为例)
编辑网卡配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3改成类似这样的内容:
TYPE=Ethernet BOOTPROTO=static NAME=enp0s3 DEVICE=enp0s3 ONBOOT=yes IPADDR=192.168.56.101 NETMASK=255.255.255.0 GATEWAY=192.168.56.1 DNS1=192.168.56.1 DNS2=114.114.114.114改完之后执行:
systemctl restart network或者如果你用的 NetworkManager,也可以用:
nmcli connection reload nmcli connection down enp0s3 && nmcli connection up enp0s3Linux(Ubuntu 18.04+ 使用 netplan)
编辑/etc/netplan/01-netcfg.yaml,改成类似:
network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: no addresses: - 192.168.56.101/24 routes: - to: default via: 192.168.56.1 nameservers: addresses: - 192.168.56.1 - 114.114.114.114执行:
sudo netplan apply如果在 VirtualBox 里跑的是图形化界面,也可以打开“设置 -> 网络 -> 有线设置”去改,效果相同。
Windows 虚拟机
在“控制面板 -> 网络和共享中心 -> 更改适配器设置”里,右键网卡 -> 属性 -> Internet 协议版本 4 (TCP/IPv4),选择“使用下面的 IP 地址”,填入地址、子网掩码、网关和 DNS。这里强调的是,VirtualBox 默认用 AMD PCNet 或者 Intel PRO/1000 虚拟网卡,Windows 驱动通常已经装好,改完 IP 之后一般不需要额外装驱动。
方法一的优点在于对网段理解最直观,也最好排查。缺点是每台虚拟机都要手动进去操作一遍,如果有二三十台机器,确实累。
3.2 方法二:在 VirtualBox 中修改 NAT Network 的 DHCP 配置(局域网批量场景)
如果你的虚拟机多台都要在同一个 NAT Network 里,而且希望它们都通过 DHCP 自动获取地址,但又不想用默认的 10.0.2.x 网段,就可以在 VirtualBox 全局网络设置里直接改网段和 DHCP 地址池。
步骤:
- 打开 VirtualBox,点击“管理 -> 工具 -> 网络管理器”(不同版本位置略有不同,也可以在全局偏好里找到“网络”)。
- 选择“NAT 网络”标签页,点击“新建”,创建一个网络,比如叫
mytestnet。 - 在“网络 CIDR”里填写你想要的网段,例如
192.168.100.0/24。 - 勾选“启用 DHCP”,对于“服务器地址”可以填写一个固定地址,例如
192.168.100.1,表示网关/主机端。 - 点击“确定”。然后回到虚拟机的“设置 -> 网络”,把连接方式选为“NAT 网络”,名称选择刚才建好的
mytestnet。 - 启动虚拟机,此时它就是通过 DHCP 动态获取一个 192.168.100.x 网段内的地址。
这种方式适合你不需要精确静态 IP、只要确定网段不冲突的场景。如果你希望某个特定 MAC 的虚拟机获得固定 IP,VirtualBox 的 DHCP 也支持按 MAC 地址绑定(在较新版本中,可以编辑 NAT Network 的属性,添加“DHCP 服务器”下的规则,不过这功能隐藏得比较深,界面略有差异,需要耐心找)。
我不建议在生产环境里用这种方式精确固定地址,因为虚拟机的网络配置逻辑被分散到了宿主机的 VirtualBox 设置和客户机系统两处,维护容易出岔子。但短期测试环境用起来非常快捷。
3.3 方法三:直接修改 .vbox 配置文件变更 MAC 地址(进阶玩法)
有时候改 IP 的目标不止是 IP,还要连虚拟机的 MAC 一起换。比如你要把一台虚拟机克隆出几台来,每一台都需要独立身份,否则它们在同一个局域网里会因为完全相同的 MAC 发生地址冲突。
这时候可以不动客户机系统,直接在 VirtualBox 的配置文件里换 MAC 地址。
方法:
- 关闭虚拟机。
- 打开虚拟机所在的
.vbox文件(用文本编辑器)。 - 查找
<Adapter slot="0" type="...">这样的段落,里面会有<MACAddress ...>字段。 - 把 MAC 地址改成新的值,比如
080027A1B2C3,注意不要有冒号,只保留十六进制字符。 - 保存文件。
- 启动虚拟机,执行
ip link或ipconfig /all确认新的 MAC 生效。
这个操作相当于在硬件层改变了虚拟机的身份,对操作系统来说,就像换了一张网卡。不过要注意,如果你的虚拟机的网卡配置里绑定了旧的 MAC(比如某些软件许可、DHCP 静态绑定),改完 MAC 后可能需要同步修改客户机内部配置。
还要提醒一句:改 .vbox 文件之前务必关闭虚拟机并且备份文件,改坏了可能无法正常启动。如果对 XML 文件不熟悉,更稳妥的方式是在 VirtualBox 图形界面里“设置 -> 网络 -> 高级 -> MAC 地址”点那个绿色圆形箭头随机生成一个新 MAC,再点确定。这不涉及手动编辑 XML,适合不太想碰底层文件的同学。
那么问题来了:只改 MAC 不等于改 IP。换完 MAC 后,如果虚拟机还是 DHCP,它获取的 IP 可能变,也可能因为租约绑定变成原来的。要彻底稳定,还是得配合方法一去客户机里改静态 IP,或者保持 DHCP 但做好 MAC 与 IP 的绑定。
4. 实际操作中遇到的高频问题和排查技巧
4.1 网卡重启后配置失效,怎么查?
很多人改完 IP,执行ip addr看当时是有效的,但重启虚拟机或重启网络服务后又恢复成原来的地址,或者干脆网卡没起来。
这种问题的根源大概率在配置文件写法和系统初始化机制上。
- 在 CentOS 6/7 里常见问题是没有设置
ONBOOT=yes。如果你忘了写这一项,重启后 NetworkManager 不会自动激活这个网卡。 - 在 Ubuntu netplan 里常见问题是
dhcp4: no写错位置,或者 per-network 的 YAML 缩进不对。netplan 对缩进极其敏感,我遇到过有人把addresses那一行缩进多了两个空格,执行netplan apply直接报错。 - 还有一个隐蔽原因:虚拟机里有多个网卡配置文件,系统匹配了错误的文件。你可以执行
ip addr看看活跃网卡是不是 unmanaged 状态。如果 NetworkManager 显示unmanaged,说明 NM 没有接管这块网卡,需要检查/etc/NetworkManager/NetworkManager.conf中的managed=true设置,或者网卡配置文件里是否写了NM_CONTROLLED=no。
排查思路按下面顺序来:
- 执行
ip addr看当前实际 IP。 - 如果和配置不一样,执行
systemctl status network或systemctl status NetworkManager看网络服务状态。 - 查看配置文件有没有语法错误,CentOS 用
nmcli con show,Ubuntu 用sudo netplan generate验证一下。 - 实在不行,直接把网络服务 restart 一遍,再去看日志
/var/log/messages或journalctl -u networking.service。
4.2 改完静态 IP 后,虚拟机无法 ping 通宿主机和网关
这个问题十次里有八次是网段和 VirtualBox 的网络模式不匹配。
比如 Host-Only 模式默认网段是 192.168.56.0/24,你非把虚拟机改成 192.168.1.10,宿主机在 192.168.56.1,两边根本不在一个子网,当然不通。解决办法是用ip addr查看宿主机对应的 vboxnet 接口地址,再把虚拟机改成同一网段。
也有一种情况是防火墙拦住了 ping。检查宿主机和虚拟机的防火墙规则:
# Linux 防火墙临时放行 ICMP,测试用 sudo iptables -I INPUT -p icmp --icmp-type echo-request -j ACCEPT sudo iptables -I OUTPUT -p icmp --icmp-type echo-reply -j ACCEPTWindows 虚拟机需要确认“文件和打印机共享(回显请求 - ICMPv4-In)”规则是否已启用。
还有可能是网卡没有真正桥只连接,或者 Host-Only 网络被禁用。回到 VirtualBox 全局网络管理器,看看对应的 Host-Only 网卡状态是否处于“启用”,虚拟机的“接入网线”勾选是否开着。
4.3 克隆虚拟机后 MAC 和 IP 冲突的问题
克隆是 VirtualBox 里很常用的功能,但克隆出来的机器如果选择“重新初始化网卡的 MAC 地址”,新虚拟机和旧虚拟机一般不会完全一样。不过如果你用了“完整克隆”而没重新生成 MAC,或者用复制文件夹的方式克隆,那两台机器的 MAC 和 IP 会完全一样,同时启动就会导致冲突。
我处理过最典型的一例:同事把一个配置好的 Linux 虚拟机文件夹整个复制了一份,导入 VirtualBox 后直接启动,结果宿主机 ARP 表混乱,两台机器轮流掉线。后来把新虚拟机的 MAC 地址重新生成,再进系统里修改了网卡配置文件里的HWADDR(如果有的话)和 IP,才算恢复正常。
克隆后需要检查的关键点:
- VirtualBox 里的 MAC 地址和网卡配置中的
HWADDR是否一致。 - 客户机系统的 hostname 是否重复。
- 网卡配置文件里的
UUID是否重复,CentOS 里每块网卡配置文件都有一个 UUID,克隆后可能需要删除或更新,否则systemd可能冲突。 - IP 是否在目标网段内与别的机器重复。
4.4 改完 IP 之后 SSH 登录不上了
很多人喜欢改 IP 之前开着 SSH 连虚拟机,改完静态 IP 后断开了,然后发现连不上。这不是真的“故障”,而是 SSH 会话本来就基于旧 IP 建立的,你换了 IP,连接自然断开。
正确姿势是:在本地 SSH 客户端配置好新 IP 的连接,或者用虚拟终端(VirtualBox 的显示窗口)登录进去改,确认网络没问题后再用新 IP 测试 SSH。如果只想简单验证,可以先在 VirtualBox 的虚拟机窗口里ping一下宿主机和网关,通了再出去接 SSH。
4.5 当前网卡 DHCP 租约绑定了旧地址
如果你用的 DHCP 来分配地址,并且 VirtualBox 的 DHCP 服务对某个 MAC 已经分配了固定租约,你改了别的 IP 之后,DHCP 可能会因为租约缓存继续给这个 MAC 派发旧地址。这时候可以重置一下 DHCP 租约:
- 在虚拟机关机时,删除虚拟机的租约文件。VirtualBox 的 DHCP 租约存储在宿主机的
~/.config/VirtualBox目录(Linux)或%USERPROFILE%\.VirtualBox(Windows)下的VirtualBox.xml附近的租约数据库里,具体要看对应版本。 - 更简单的是把虚拟机网络断开重连,或者在虚拟机系统里
dhclient -r释放租约,再dhclient重新获取。
不过既然你要手动改地址,建议直接把虚拟机网络改成静态配置,彻底摆脱 DHCP 的不确定性。
5. 不同操作系统的专项建议与提升效率的小技巧
5.1 Linux 老版本和容器环境的特殊处理
如果你用的是特别老的 Linux 发行版,比如 CentOS 6,网卡配置文件的写法有些差异,BOOTPROTO=static和IPADDR这些还是要写的,但可能还需要在/etc/sysconfig/network里配置GATEWAY。而且 CentOS 6 默认没有 NetworkManager,改完配置要service network restart。
现在很多测试环境都在用容器或 Kubernetes,但宿主机还是离不开 VirtualBox 这样的虚拟化底座。如果你把虚拟机当作 Docker 的宿主机,那么改 IP 的挑战在于 Docker 的网桥不能受到影响。我建议只改物理网卡(对应 VirtualBox 的虚拟网卡)地址,不要尝试去动 docker0 网桥地址,否则容器网络可能会乱。
另外还有一点:如果你在 VirtualBox 里跑的是 macOS 虚拟机(比如某些黑苹果实验),网卡配置方式又不一样,基本上是在“系统偏好设置 -> 网络”里改。但 VirtualBox 对 macOS 客户机支持并不好,而且出于很多原因不推荐,这里就不展开了。
5.2 给多台虚拟机批量修改地址的思路
当你管理多台 VirtualBox 虚拟机,每台都要配置静态 IP,手动一台台进去改真的会疯掉。我常用的思路有两种。
一是利用启动脚本。在宿主机上写一个简单的 for 循环,通过 SSH 进入虚拟机执行命令,把需要改的 IP 通过环境变量传进去。但这需要虚拟机里提前开好 SSH 且密钥能够登录,比较适合你已经有一批基础镜像是做过密钥认证的。
二是用“虚拟机模板 + cloud-init”思路:先制作一个包含 cloud-init 的模板镜像,虚拟机首次启动时读取配置自动设置 IP。虽然 VirtualBox 不像某些云产品自带 cloud-init 支持,但你可以手动把 cloud-init 装进模板,然后通过生成不同user-data的方式在首次启动时写入网络配置。这个方法有一定学习成本,但对超过 20 台机器的环境来说非常省力。
比较简单粗暴的方案是全部改成静态 IP,并且用表格管理每台机器的 IP、MAC、用途。这个表格强烈建议维护起来,不然半年后你看着十几个网段,根本分不清哪台是干什么的。
5.3 改 IP 之前一定留好“后门”
做运维的都知道,网络配置操作最怕把自己锁在外面。尤其是虚拟机,一旦 IP 配错,SSH 连不上,而且你又没开 VirtualBox 的显示窗口,那种感觉非常难受。
我的个人习惯是:无论怎么改 IP,都先保证 VirtualBox 的虚拟机显示窗口可以访问。哪怕是无图形界面的 Linux,也需要确认你可以在那个虚拟终端登录。或者在宿主机上用VBoxManage给虚拟机加一个 Host-Only 网卡作为“带外管理”接口,这张网卡保持一个固定地址,比如 192.168.56.200。主业务网卡随便你怎么改,就算配错,你还能通过 Host-Only 地址登录进去修。
执行命令可以这样加一张网卡:
VBoxManage modifyvm "虚拟机名" --nic2 hostonly --hostonlyadapter2 "VirtualBox Host-Only Ethernet Adapter"这样虚拟机系统里会出现第二块网卡。你在虚拟机内部把这块网卡配置成 192.168.56.x 静态地址,并开启 SSH 监听。之后不管主网卡怎么折腾,都有一条保命的通道。
5.4 遇到解决不了的问题,试试“重置网络栈”
有时候改 IP 后问题很离奇,配置看着没问题,但是网络就是不通。这时候不必急着重装系统,可以试试把虚拟机的网络设置重置一下:
- 关闭虚拟机。
- 在 VirtualBox 设置里,把网卡的“连接方式”改为“未连接”,确定。
- 重新打开设置,把连接方式改回原来的模式。
- 启动虚拟机,用
dhclient或者重新应用静态配置。
这个过程相当于把虚拟网卡重新插拔一次,经常能解决一些 ARP 缓存、网卡驱动状态异常导致的问题。
还可以在宿主机上重启 VirtualBox 的虚拟网络服务。Windows 宿主机可以打开“服务”,找到 VirtualBox 相关的网络服务,重启一下。Linux 宿主机执行:
sudo systemctl restart vboxdrv sudo systemctl restart vboxnetadp sudo systemctl restart vboxnetflt注意 VBox 服务重启会短暂影响所有正在运行的虚拟机网络,最好在维护窗口操作。
6. 我的一些总结性建议
操作了这么多年虚拟化环境,我个人的体会是:改虚拟机网卡地址这件事,技术难度并不高,真正坑人的是对网络拓扑理解不清和操作前没做备份。
如果你只记得一句话,那就是:先看网络模式,再定静态网段,最后进虚拟机里改配置。只要网络模式选得对,网段不冲突,MAC 不重复,绝大多数问题都不会遇到。
给刚开始接触 VirtualBox 的朋友一个可复制的流程:宿主机上先建好 Host-Only 网络,确认网段;虚拟机设置里把网卡接到 Host-Only;开机进系统,用你熟悉的编辑工具把 IP、掩码、网关、DNS 写进配置;重启网络服务;验证连通性;最后用 SSH 访问新地址。这一套流程在任何 Linux 发行版上基本通用。
另外想再强调一次备份和保命通道。每次改 IP 前,花几分钟把 .vbox 文件和客户机网络配置都备份一下,在虚拟机里多留一张 Host-Only 网卡,这些不是浪费时间,而是给未来的自己买保险。踩过几次坑之后,你就会明白,虚拟环境的容错率虽然比物理机高,但“高可用”永远要靠习惯来保障。
最后分享一个小技巧:如果你经常需要搭建不同网段的测试网络,不要每次手动去改 VirtualBox 默认网段,建议创建多个不同的 Host-Only 网络,分别命名为vnet-test-1、vnet-test-2,在虚拟机设置里按需选择。这样隔离清晰,改 IP 时不用动全局配置,也不容易弄脏生产环境。这个方法我一直在用,比单撸一个默认 Host-Only 网络省心太多了。