在VirtualBox里,把虚拟机网络模式改成“桥接网卡”,再手动设置与主机同网段的静态IP,IP就会固定不变,主机和虚拟机也能互相ping通。
很多人在用VirtualBox时都会遇到一个烦心事:虚拟机IP昨天还是10.0.2.15,今天重启就变成了10.0.2.16,想从主机SSH连过去还得先去虚拟机里看一眼,这背后其实是默认NAT模式在捣乱,要解决“virtualbox虚拟机ip怎么设置才能固定”这个问题,你得先弄明白VirtualBox给虚拟机提供了哪几种网络身份,以及它们各自适合什么场景。
VirtualBox虚拟机IP为什么总变?先搞清默认NAT模式的问题
刚装完虚拟机,你几乎不会去动网络设置,所以VirtualBox默认给了你“网络地址转换(NAT)”模式,在这个模式下,虚拟机通过VirtualBox内置的DHCP服务获取IP,地址通常落在10.0.2.x网段,虚拟机借主机上网倒是容易,但有两个短板:
- IP不固定:DHCP分配的地址有租期,虚拟机重启后,VirtualBox的DHCP很可能重新分配一个IP,就算你暂时记住了当前IP,下次一重启又变了。
- 主机访问不了虚拟机:NAT相当于在主机和虚拟机之间挡了一道墙,主机ping虚拟机的10.0.2.x根本不通,也不能直接访问虚拟机里的web服务或数据库。
行业共识认为,NAT只是适用于“虚拟机临时上网,不关心外面能不能访问它”的场景,一旦你要在虚拟机里部署服务、搭建集群或做开发调试,就必须换一种更“透明”的网络模式。
virtualbox虚拟机ip怎么设置才能固定?桥接模式配静态IP是最稳方案
要让虚拟机像局域网里的一台真机一样,跟主机在同一个网段,最推荐的方案是桥接网卡 + 手动静态IP,虚拟机桥接到主机的物理网卡,直接使用主机所在的局域网,路由器会把它当成普通设备对待,这样一来,IP自然可控,主机访问虚拟机也没有了NAT的阻隔。
第一步:把网络模式从NAT改成桥接网卡
首先关闭虚拟机,在VirtualBox主界面选中它,点击“设置”,进入“网络”选项卡,把“连接方式”从“网络地址转换(NAT)”改成“桥接网卡”,在“名称”下拉菜单里,必须选对主机真实使用的物理网卡:
- 有线网络选类似“Realtek PCIe GbE Family Controller”的选项
- 无线网络选类似“Intel(R) Wi-Fi 6 AX201”的选项
选错网卡,虚拟机可能直接失去网络,如果你用的是Wi-Fi,部分网络环境下桥接模式会不稳定,这时可以考虑后续的“仅主机网络”方案。
第二步:在虚拟机内部手动指定静态IP
改完网卡模式后启动虚拟机,登录系统,Linux和Windows配置方式不一样,分开说。
Linux系统(以Ubuntu 22.04为例):
编辑/etc/netplan/01-network-manager-all.yaml,配置如下:
network:
version: 2
renderer: NetworkManager
ethernets:
enp0s3:
dhcp4: no
addresses:
- 192.168.1.88/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 192.168.1.1
- 8.8.8.8
注意把168.1.88换成和主机同网段的空闲地址,网关168.1.1要和主机的网关一致,执行sudo netplan apply后生效。
Windows虚拟机:
打开“控制面板-网络和共享中心-更改适配器设置”,右键“以太网”属性,双击“Internet协议版本4(TCP/IPv4)”,选“使用下面的IP地址”,按如下填写:
- IP地址:192.168.1.88
- 子网掩码:255.255.255.0
- 默认网关:192.168.1.1
- 首选DNS:192.168.1.1
保存后,用ipconfig验证。
还有一个小技巧:如果你使用的是CentOS/RHEL系统,可以直接用nmtui图形化配置工具,选择“Edit a connection”,把IPv4配置从“Automatic”改成“Manual”,填入IP、网关和DNS,比编配置文件更省事。
第三步:验证固定IP和互通
在虚拟机里执行ip addr或ipconfig,确认IP已是手动设置的静态值,然后从主机终端ping虚拟机IP,比如ping 192.168.1.88,通了说明主机到虚拟机方向没问题,再在虚拟机里ping主机IP,验证反向也通。
至此,“virtualbox虚拟机ip怎么设置才能固定”的操作闭环就完成了,只要桥接网卡不变,这个静态IP会一直保持。
VirtualBox虚拟机与主机互通设置:除了桥接,还有哪些方式?
桥接模式最直观,但不是万能的,比如你出差住在酒店,酒店网络需要网页认证,桥接模式可能拿不到IP;又或者公司局域网对MAC地址有严格绑定,你插进一台虚拟机会被网管盯上,这时候不妨看看另外两种方案。
仅主机网络方案
“仅主机网络”是VirtualBox自己维护的一个虚拟局域网,只有主机和连接了这块虚拟网卡的虚拟机在里面,操作路径:
- 在“设置-网络-连接方式”选“仅主机网络”
- 名称选“VirtualBox Host-Only Ethernet Adapter”
默认情况下,主机上会多出一张192.168.56.1的虚拟网卡,虚拟机需要手动设置成192.168.56.x网段,比如192.168.56.88,这种方式下的特点很清晰:
- 主机和虚拟机一定能互通
- 虚拟机不能上外网,因为没有路由出口
- 隔离性强,适合做本地测试和数据交换
如果你需要虚拟机既能上网,又能跟主机互通,可以在主机上设置Internet连接共享(ICS),把主机的物理网卡共享给VirtualBox Host-Only网卡,这样虚拟机通过主机的NAT也能访问互联网,但配置门槛高一些。
端口转发方案:适合临时访问
也有人问“VirtualBox虚拟机与主机互通设置有没有更轻量的办法”,有,端口转发”保持NAT模式不变,只在VirtualBox网络设置里添加一条转发规则,比如主机监听127.0.0.1:2222,转发到虚拟机的22端口,之后你直接在主机执行ssh -p 2222 user@127.0.0.1就能连进虚拟机。
这种方法适合偶尔远程访问,但它解决不了IP固定问题,虚拟机内部IP依然是由DHCP分配的动态地址,如果你要长期部署服务,还是得回头用桥接或仅主机模式。
顺便用一张表总结三种常见模式:
| 网络模式 | 虚拟机IP | 主机访问虚拟机 | 虚拟机上网 | 适合场景 |
|---|---|---|---|---|
| NAT | 动态,一般不固定 | 默认不通 | 可以 | 临时上网 |
| 桥接网卡 | 手动可固定 | 默认通 | 可以 | 局域网服务、开发调试 |
| 仅主机网络 | 手动可固定 | 默认通 | 不行 | 本地隔离测试 |
固定IP后仍然不通?排查这几个常见问题
按上面设完静态IP,还是ping不通,九成是下面几个坑里掉了进去。
防火墙拦截了ICMP请求。 虚拟机里默认防火墙往往丢弃外部ping,但允许虚拟机主动ping外面,Linux下执行sudo ufw allow from 主机IP,或者临时用sudo iptables -I INPUT -p icmp --icmp-type echo-request -j ACCEPT,Windows则在防火墙高级设置里启用“文件和打印机共享(回显请求 – ICMPv4-In)”规则。
网卡名称不对。 在Ubuntu里常见的是enp0s3、ens33,克隆出来的虚拟机可能变成enp0s8,先执行ip link
查看真实网卡名,再修改netplan配置,配置文件名也要确认,别改错了文件导致不生效。
桥接网卡选错。 主机有两张网卡时,很容易把“桥接网卡”名称选成虚拟机专用的虚拟网卡,名称必须选主机物理网卡,而不是VirtualBox自己创建的Host-Only网卡。
IP冲突。 手动填的IP如果被局域网内其他设备占用,虚拟机会断断续续或完全不通,换一个不太容易冲突的地址,比如主机是192.168.1.10,就选192.168.1.88。
网关或DNS不对。 网关一定要和主机路由器的LAN口地址一致,有些路由器默认是192.168.0.1,你填成192.168.1.1就会让虚拟机能ping通局域网却出不了外网。
还有一个较隐蔽的问题:如果你在Windows主机上同时装了VMware或Hyper-V,它们会创建一堆“虚拟交换机”网卡,在VirtualBox桥接列表里也会有这些名字,选错了同样不通,建议在物理网卡旁留意名称中带“VirtualBox”字样的选项。
VirtualBox虚拟机IP固定与互通常见问题解答
虚拟机重启后IP又变回去了,怎么回事?
先检查连接方式是否仍然是“桥接网卡”,再确认虚拟机内配置的静态IP是否真的生效,常见原因有两个:一是netplan配置文件语法错误,导致netplan apply没成功;二是系统存在NetworkManager接管,把静态配置覆盖了,执行sudo netplan apply后重启,如果IP又变回动态,就说明配置文件没被正确解析,重新检查缩进和网卡名。
桥接模式下虚拟机可以上网,但主机就是ping不通虚拟机,怎么改?
绝大多数情况是虚拟机防火墙把入站ICMP给丢了,但出站流量不受影响,Linux虚拟机执行sudo iptables -I INPUT -p icmp --icmp-type echo-request -j ACCEPT,Windows虚拟机在防火墙入站规则中启用“回显请求”即可。
VirtualBox桥接模式IP和主机同一网段,虚拟机却无法访问外网?
先ping网关地址,比如ping 192.168.1.1,能通说明局域网没问题,问题多半出在DNS上,手动设置静态IP时,虽然填了DNS,但如果路由器本身不能解析,可以改成公共DNS如5.5.5或8.8.8,如果网关都ping不通,检查桥接网卡是否选对了,以及路由器是否禁止陌生设备接入。
一句话收尾:桥接模式加静态IP是VirtualBox固定IP和主机互通最务实的做法,按步骤设置好就能一劳永逸;其他方案可以在特定场景下作为备选。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/736367.html





