虚拟机手动设置固定IP出现冲突,多数情况下是因为没有避开宿主机所在局域网的DHCP动态分配范围,或者网络模式选错了,只要按照宿主机网段规划IP、确认网关和DNS,再在虚拟机网卡配置文件中写入对应参数,就能稳定使用固定IP不再打架。
手动设置固定IP前,先摸清宿主机网络环境
手动分配IP之前,先花五分钟把宿主机所在的网络环境摸透,这一步走错,后面的配置全白费。
确认宿主机网段、网关和子网掩码
Windows宿主机打开命令提示符,输入ipconfig,把IPv4地址、子网掩码和默认网关记下来,Linux宿主机可以用ip addr或者route -n查看,这三个参数是固定IP配置的基准线,虚拟机的IP必须与宿主机处于同一网段,网关指向路由器,子网掩码保持一致。
举个例子,宿主机IP是192.168.31.100,网关是192.168.31.1,掩码是255.255.255.0,那么虚拟机手动设置的IP就应该是192.168.31.x的形式,x取值范围在2到254之间,同时避开口令。
判断DHCP地址池范围
这是最容易被忽略的一步,路由器默认开启了DHCP服务,它会在一个规定范围内自动分配IP,手动设置的固定IP如果落在这个范围内,就可能和后续连上来的手机、电脑或者另一台虚拟机撞车。
登录路由器管理后台,找到DHCP服务器选项,查看地址池的起始和结束地址,比如地址池是192.168.31.100到192.168.31.199,那手动设置的IP就选在这个区间之外,比如192.168.31.50或者192.168.31.200之后,但注意别和网关、其他静态绑定设备重复。
行业共识认为,把手动分配的IP放在DHCP地址池之外,或者单独固定绑定MAC地址,是避免冲突最稳妥的方式。
搞清楚虚拟机三种网络模式的区别
VMware和VirtualBox都提供几种网络模式,这决定了你的固定IP要往哪个网段里放。
- 桥接模式:虚拟机直接连接到宿主机所在的物理局域网,相当于局域网里多了一台独立设备,IP必须和宿主机同一网段。
- NAT模式:虚拟机处于虚拟私有网络中,与外部通信通过宿主机转发,默认网段和宿主机的物理网段不一样。
- 仅主机模式:虚拟机只能与宿主机通信,无法直接访问外网。
多数情况下,生产环境里的固定IP需求用桥接模式,测试环境用NAT模式,但两种模式在手动设置固定IP时的思路不太一样,下面分别说。
桥接模式下虚拟机固定IP地址怎么设置才不冲突
桥接模式让虚拟机拥有了和宿主机平级的网络地位,手动设置固定IP时,需要特别小心IP的选取,这也是“虚拟机固定IP地址怎么设置”这个问题里最容易出错的部分。
VMware固定IP设置方法:把虚拟网卡切成桥接模式
在VMware Workstation中,选中目标虚拟机,打开编辑虚拟机设置,找到网络适配器,勾选桥接模式,同时勾选复制物理网络连接状态,这个选项保证虚拟机在宿主机网络切换时能获得一致的IP表现。
关闭虚拟机电源再启动,让设置生效。
Linux虚拟机里写入静态IP参数
以CentOS 7/8或者Rocky Linux为例,编辑网卡配置文件:
- 路径:/etc/sysconfig/network-scripts/ifcfg-ens33,具体文件名用ip addr查看
- 关键参数:
- BOOTPROTO=”static”
- ONBOOT=”yes”
- IPADDR=”192.168.31.50″
- NETMASK=”255.255.255.0″
- GATEWAY=”192.168.31.1″
- DNS1=”114.114.114.114″
保存后用systemctl restart network重启网络服务,CentOS 8以上版本没有network服务,改用nmcli c reload或者直接重启虚拟机。
Ubuntu系统则编辑/etc/netplan/下的yaml文件,设置addresses、gateway4和nameservers,执行sudo netplan apply。
如果觉得命令行的方式容易记错,可以用nmtui打开文本图形界面,选择“Edit a connection”,在相应网卡里把IPv4 CONFIGURATION改成Manual,填入IP、掩码、网关和DNS,确认后重启连接,这个操作路径同样适用于Debian系的多数发行版。
Windows虚拟机里手动填IP
进入网络适配器设置,右键“以太网”选“属性”,双击Internet协议版本4(TCP/IPv4),选择“使用下面的IP地址”,填入和宿主机同网段的IP、掩码和网关,DNS填公共DNS或者宿主机网关地址。
注意Windows虚拟机如果之前开启了DHCP,修改完静态IP后需要执行ipconfig /flushdns清掉旧的IP缓存,再确认网络状态。
验证固定IP是否真正生效
配置完成后做三件事:
- 在虚拟机里ping宿主机IP,确认二层链路通。
- ping网关,确认能出局域网。
- 在宿主机上用arp -a查看局域网IP列表,确认没有第二台设备占用刚分配的IP。
如果ping网关通、ping外网不通,多半是DNS或者路由表问题,用traceroute或tracert逐步定位,检查默认路由是否写对。
NAT模式下固定IP怎么设置才能避开虚拟DHCP
NAT模式有一个独立的虚拟网络,VMware默认的NAT网段通常是192.168.x.0,VirtualBox默认是10.0.2.x,在这个模式下,虚拟机的固定IP不能随便填,要跟着虚拟网络的规则来。
查看虚拟网络编辑器里的DHCP地址池
打开VMware的“编辑”菜单,选择虚拟网络编辑器,选中VMnet8,这是NAT模式对应的虚拟网卡,查看子网IP和DHCP设置,子网IP决定了虚拟机IP的前三位,DHCP设置里显示了地址池的起止范围。
手动设置的IP要和子网IP在同一个网段,同时避开地址池的起止区间。
填写虚拟网段的IP参数
NAT模式下配置静态IP的步骤和桥接类似,只是IP地址、网关要换成虚拟网络里的参数,NAT模式的网关通常是虚拟网络中IP末尾为2的地址,比如子网是192.168.88.0,网关就是192.168.88.2。
Linux下编辑ifcfg文件,Windows下在网络适配器属性中手动设定,操作路径与桥接模式一致,只是填入的IP改成了虚拟网段的地址,种“NAT模式固定IP怎么设置”的问题,本质上就是找到正确的虚拟网络参数并写进去。
VirtualBox的NAT网络差异
VirtualBox的NAT模式默认网段为10.0.2.x,网关是10.0.2.2,DNS可以沿用宿主机配置,它也有一个NAT网络模式,可以在全局设定中自定义网段和DHCP范围,手动设置固定IP前先打开“管理”->“网络”查看清楚。
为什么虚拟机能上网但宿主机连不上
NAT模式下虚拟机的IP对外是不可见的,宿主机如果要访问虚拟机,需要设置端口转发,这个属于NAT模式的固有特性,不是IP冲突导致的,别花时间在IP上找问题。
虚拟机里设置固定IP后IP冲突了怎么解决
即使前期规划得很仔细,还是可能在重启路由器、新增设备之后出现IP冲突,别慌,按下面的顺序排查。
看现象确认是不是IP冲突
表现通常是虚拟机突然掉线,或者网络时断时续,用ipconfig /all或者ip addr
查看当前IP,再用arp -a看这个IP对应的MAC地址是否在变化。
如果MAC地址一直在变,说明确实有多台设备在使用同一个IP。
换IP重试并检查静态绑定
临时改一个不同的IP,比如当前是192.168.31.50,改成192.168.31.60,如果网络恢复正常,说明原IP确实被占用,这个操作可以作为“虚拟机IP冲突怎么解决”的最直接手段。
部分网络管理员会在路由器上做MAC和IP的绑定,如果虚拟机网卡的MAC地址被绑定了旧IP,新IP就会和绑定冲突,先取消绑定,或者把虚拟机的MAC地址改成允许绑定的那一个。
重置虚拟网络服务
VMware里,依次执行“编辑”->“虚拟网络编辑器”->“更改设置”,选中当前使用的VMnet,点击还原默认设置,这会把虚拟网络重置,清掉过期的IP租约。
VirtualBox则是在全局设定中删除当前NAT网络并重新创建,之后重新配置虚拟机网卡。
这个“虚拟机固定IP怎么设置不冲突”的问题,最终的落脚点还是回到了网络规划,只要IP段选对、避开DHCP地址池、网关DNS不出错,运行几个月不冲突是常态。
关于虚拟机固定IP设置的常见问题
为什么虚拟机固定IP设置后重启就失效了?
多半是网卡配置没有持久化,Linux下检查ONBOOT是否为yes,Windows下检查是否选择了“使用下面的IP地址”而不是“自动获得”,如果虚拟机克隆自其他镜像,网卡MAC地址可能绑定在旧配置上,需要重新生成MAC并更新配置文件。
虚拟机和宿主机固定IP可以设置成同一个吗?
不可以,同一局域网内不允许两个设备使用相同IP,否则后启动的设备会挤掉先启动的,造成网络中断,手动设置时要保证虚拟机的IP和宿主机错开,同时也要和局域网内其他设备错开,最稳妥的办法是找一个用不上的IP段,比如地址池之外的数值。
桥接模式下虚拟机无法上网,是固定IP设置的问题吗?
不一定,先ping网关,通则说明网络层没问题,检查DNS配置;不通则检查是否有其他设备占用该IP,以及宿主机防火墙是否拦截了虚拟机的网络请求,桥接模式要求虚拟机网卡直接连接物理网络,如果宿主机用的是无线网卡,部分环境下桥接会不稳定,这是无线网络本身的限制,可以尝试切换NAT模式验证是否为网卡兼容性问题。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/624860.html




