ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CentOS虚拟机固定IP配置指南:从VMware网络模式到实操详解

CentOS虚拟机固定IP配置指南:从VMware网络模式到实操详解 1. 为什么要给CentOS虚拟机配置固定IP1.1 动态IP带来的那些坑先说个场景你装了台CentOS虚拟机平时用DHCP自动分配IP一切正常。某天重启一下机器SSH连不上了一看IP地址变了。你之前部署的Nginx、MySQL、Redis所有配置里写的都是旧IP全部作废。更郁闷的是当你同时跑好几台虚拟机的时候IP一变整个测试环境全部乱套。我在实际使用中碰到过更崩溃的场景某次在虚拟机上搭了一套内网的代码仓库第二天上班发现连不上了排查了半天才发现是虚拟机的IP从192.168.88.128漂到了192.168.88.145。仓库配置里所有指向旧IP的镜像源、依赖包地址全部失效光修复环境就折腾了一上午。从那以后凡是装虚拟机第一件事就是固定IP。再一个很实际的问题DHCP分配的IP有租期CentOS默认的DHCP租期到了之后会续租但续租不一定能拿到和原来一样的地址。尤其是在公司网络、宿舍路由器这类设备多的环境里IP地址池紧张很容易就被别人抢走了。虚拟机一多IP冲突、抢租、地址漂移都是家常便饭。1.2 固定IP适合哪些场景固定IP不是万能的但它能解决绝大多数开发测试场景里的痛点。本机通过SSH/Xshell/MobaXterm远程连接虚拟机IP不变才能把连接配置保存下来长期使用。虚拟机内部署了Web服务、数据库、消息队列等中间件客户端配置里需要一个稳定的服务地址。用克隆方式批量创建虚拟机做集群实验比如K8s、Hadoop每一台都需要预先分配好独立的静态IP。局域网内其他设备要访问这台虚拟机提供的服务固定IP是前提。一句话总结只要这台虚拟机不是一次性用完就扔的建议直接固定IP。即使是临时测试机固定IP也可以帮你省去每次启动后查IP的麻烦毕竟ip addr敲来敲去也挺烦的。2. VMware网络模式选择是最关键的一步2.1 三种网络模式的区别配置固定IP之前必须先搞清楚VMware的三种网络模式。这一步选错了后面配置文件写得再对也白搭。VMware虚拟机的网络模式有三种桥接模式、NAT模式、仅主机模式。网络模式虚拟机与宿主机关系虚拟机能否访问外网外部设备能否访问虚拟机常见用途桥接模式虚拟机像局域网里的一台独立主机能能需要虚拟机被局域网其他设备直接访问的场景NAT模式虚拟机共享宿主机IP上网能不能直接访问最常见的模式适合本机开发测试仅主机模式虚拟机只能和宿主机通信不能不能隔离环境、安全测试重点说NAT模式。这是大多数人装虚拟机时默认用的模式VMware会自动创建VMnet8虚拟网卡宿主机通过这块网卡和虚拟机通信。虚拟机对外网的请求由宿主机做NAT转发外部设备摸不到虚拟机但虚拟机访问宿主机、宿主机访问虚拟机都没问题。桥接模式则是把虚拟机的网卡直接桥接到物理网卡上虚拟机相当于和宿主机在同一网段里的另一台设备直接占用局域网的一个IP地址。外部设备能直接访问虚拟机但这也意味着你的局域网里多了一台设备IP规划必须提前做好。2.2 不同模式下的IP规划思路选NAT模式的话IP地址段要关注VMnet8的网段。打开VMware的编辑-虚拟网络编辑器选中VMnet8可以看到子网IP通常类似192.168.88.0不同版本可能不同子网掩码是255.255.255.0。你的固定IP必须和这个网段一致否则虚拟机访问不了外网。NAT模式下网关地址通常是X.X.X.2。这个值在虚拟网络编辑器的NAT设置里能看到每个版本的VMware可能不一样。我见过有人机械地照搬别人的配置网关写成了192.168.88.2结果自己VMware的网关是192.168.88.2那也是运气好。但如果你用的是新版本VMware建议每次都进去看一眼。桥接模式就更简单了固定IP直接规划到宿主机所在局域网网段就行。比如你家的路由器网段是192.168.1.0/24宿主机IP是192.168.1.5那虚拟机可以设为192.168.1.88网关指向192.168.1.1。前提是确保这个IP没有被其他设备占用。有个很隐蔽的坑NAT模式的VMnet8网段不要和局域网真实网段冲突。比如你家路由器是192.168.88.0/24而你VMware的VMnet8恰好也是192.168.88.0/24就会出现路由冲突虚拟机网络要么时断时续要么完全不通。遇到这种情况直接在虚拟网络编辑器里把子网IP改成别的网段比如192.168.99.0/24重新配置一下就行。3. 配置前的环境准备3.1 虚拟机网络适配器设置正式开始之前先确认虚拟机的网卡模式。右键虚拟机-设置-网络适配器确保选了NAT模式或者你规划好的桥接模式。这里最常见的错误是装虚拟机的时候选了仅主机模式后面死活上不了外网还以为是自己IP配错了。还有一个小细节移除不必要的网卡。有些人在虚拟机里手动添加了好几块网卡每块网卡对应不同的网络模式CentOS系统起来后路由表和默认网关会混乱配置固定IP的时候往往无从下手。我现在的习惯是一台虚拟机只保留一块网卡用什么模式就选什么模式简单干净。生产环境里我见过更复杂的做法有人用NAT模式网卡跑业务流量再用仅主机模式网卡做管理通道。这种设计有它的道理但对于绝大多数学习、测试场景来说一块NAT网卡就足够了多块网卡只会增加排查难度。3.2 查看CentOS环境与网卡信息打开CentOS虚拟机登录系统之后先做三件事第一确认系统版本。不同版本的CentOS网络配置方式有差异。cat /etc/redhat-release第二查看网卡名称和IP信息。ip addr第三确认当前网络是否正常、默认路由是什么。ip route最常见的网卡名是ens33、ens160、eth0。新版本CentOS用的是规范命名如ens33老版本CentOS 6及以下用的是eth0。这个网卡名后面配置的时候要用到建议记下来。CentOS 7和CentOS 8/9的网络管理方式差别很大。CentOS 7默认用NetworkManager管理网络配置文件在/etc/sysconfig/network-scripts/目录下以ifcfg-开头命名。CentOS 8/9还引入了nmcli命令配置文件也兼容但推荐用nmcli操作。下面会分版本说明。3.3 备份原有网络配置操作之前备份是个好习惯这是无数次踩坑之后总结出来的教训。在修改配置文件之前先把原始文件复制一份cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak备份文件不参与系统启动只是留个后路。如果配置改坏了可以直接复制回来恢复不用重新装系统。4. 一步步配置固定IP4.1 CentOS 7固定IP配置过程CentOS 7是最常见的选择相关热搜词里也出现了centos 7.9下载“centos 7 innovus安装”等说明这个版本在开发者和EDA领域里确实用得多。配置分四步走。第一步明确你的IP规划假设VMware VMnet8网段是192.168.88.0/24网关是192.168.88.2。我规划这台虚拟机使用192.168.88.100这个地址。DNS可以用公共DNS也可以用网关注册的DNS国内环境推荐用223.5.5.5、119.29.29.29这类公共DNS解析速度快、不容易被污染。注意IP地址不要和VMnet8 DHCP分配的地址范围重叠。VMware默认的DHCP地址池通常是192.168.88.128到192.168.88.254具体看虚拟网络编辑器里的设置所以192.168.88.100这个地址即使DHCP再活跃也抢不到用起来很安全。第二步编辑网卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33修改成下面的样子TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOnone DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_AUTOCONFyes IPV6_DEFROUTEyes IPV6_FAILURE_FATALno IPV6_ADDR_GEN_MODEstable-privacy NAMEens33 UUIDxxxx-xxxx-xxxx-xxxx DEVICEens33 ONBOOTyes IPADDR192.168.88.100 PREFIX24 GATEWAY192.168.88.2 DNS1223.5.5.5 DNS2192.168.88.2这里有几个点要特别说明BOOTPROTO改成none或static都可以none在某些版本上更稳定不会触发多余的DHCP行为。ONBOOT必须为yes否则每次重启系统这个网卡不会自动激活。PREFIX24等价于NETMASK255.255.255.0两者写一个就行。UUID是安装系统时生成的唯一标识不用动它保留原来的值。GATEWAY必须和VMware NAT网段里的网关一致这是外网能不能通的关键。第三步重启网络服务CentOS 7的习惯是用systemctl重启网络但要注意这里有个版本差异。systemctl restart network如果这个命令报错可以试试systemctl restart NetworkManager还有另一种情况服务器上装了NetworkManager也启用了network服务两个管理方式互相打架。我一般建议统一用NetworkManager管理也就是重启NetworkManager。配置固定IP的话可以确保NetworkManager不会在后台把配置改回去nmcli networking off nmcli networking on第四步验证配置ip addr show ens33 ping -c 3 192.168.88.2 ping -c 3 223.5.5.5第一行确认IP是否是192.168.88.100第二行确认网关通不通第三行确认外网通不通。三个都正常就说明配置成功了。4.2 CentOS 8/9的差异CentOS 8停止维护之后很多人开始用CentOS 8 Stream或者转向其他发行版。相关热搜词里就有centos 8 stream下载“centos 8更换yum源”。如果你用的是CentOS 8/9固定IP配置思路不变但有两个新变化。第一个变化是NetworkManager的优先级更高了。虽然/etc/sysconfig/network-scripts/目录下还能看到ifcfg文件但官方已经不推荐手动编辑了更建议用nmcli命令操作。查看当前连接nmcli connection show修改连接为静态IPnmcli connection modify ens33 ipv4.addresses 192.168.88.100/24 nmcli connection modify ens33 ipv4.gateway 192.168.88.2 nmcli connection modify ens33 ipv4.dns 223.5.5.5 119.29.29.29 nmcli connection modify ens33 ipv4.method manual应用配置nmcli connection up ens33第二个变化是ifcfg文件里的参数兼容性。CentOS 8以后对某些参数比如IPV6INIT的处理方式略有调整但如果你之前已经通过nmcli配置好了再回看文件会发现nmcli自动把对应字段写进了ifcfg。所以现在的建议是CentOS 8/9直接用nmcli别手动改文件省的被NetworkManager回写覆盖。不过有一种情况例外如果你用的是纯命令行最小化安装的CentOS 8并且故意禁用了NetworkManager那手动改ifcfg文件依然有效。但这种情况较少见这里不展开说。5. 配置后的系统级确认5.1 重启系统验证仅仅systemctl restart network成功还不够我强烈建议做一次完整的重启验证reboot重启完成后重新登录再次执行ip addr确认IP还是192.168.88.100。这一步能验证ONBOOTyes是否真的生效。如果重启后IP又变回了DHCP多半是配置文件里BOOTPROTO没改干净或者存在多个网卡配置文件互相干扰。这里分享一个排查思路如果你发现重启后网卡拿到的还是DHCP地址可以去查一下NetworkManager的连接状态nmcli device status看是不是有个connection还在尝试用DHCP连接这块网卡如果有nmcli修改连接为manual即可。5.2 外部访问验证本机验证通过了还不够从宿主机侧再验证一下更稳妥。在宿主机Windows打开终端ping 192.168.88.100 ssh root192.168.88.100如果你使用的是Xshell、MobaXterm这类工具提前把SSH会话配置好固定保存。以后不管虚拟机重启多少次这个会话永远有效不会再因为IP漂移反复改配置。提示如果虚拟机开启了防火墙外部ping和SSH可能会被拦。CentOS系统默认开了firewalld建议在固定IP配置完成后同时放行SSH端口以免后续连不上systemctl status firewalld firewall-cmd --permanent --add-servicessh firewall-cmd --reload如果是自己在虚拟机上测试很多人会直接把firewalld关掉这也是图省事但生产环境别学。安全底线还是要有的。6. 常见问题与排查技巧实录6.1 高频问题的直接解答问题现象根本原因解决方案配完固定IP后外网不通网关写错或DNS配置错误重点检查GATEWAY是否与VMware NAT设置一致DNS改成公共DNS后再试重启后IP又变回自动获取ONBOOTyes未设置或BOOTPROTO没改确认配置文件里两处关键参数虚拟机网卡名称不是ens33系统版本不同网卡命名规则不同用ip addr自己确认实际网卡名别照抄教程里的ens33宿主机能ping通但其他局域网设备访问不了NAT模式下外网设备确实访问不了虚拟机换桥接模式或配置端口转发配置时提示Device does not seem to be present配置文件里的DEVICE名和实际网卡名不一致打开ip addr核对真实网卡名修改配置文件中的DEVICE固定IP设置成功后DNS解析时好时坏DNS1和DNS2填写了不可达的地址改成223.5.5.5、119.29.29.29这类公共DNS6.2 我踩过的一个典型坑有一次给一台CentOS 7.9配固定IP配置一切正常网关也能ping通但外网就是不通。排查了半天最后发现是宿主机开启了多个虚拟网络适配器VMnet8被改到了VMnet19而系统默认还是走VMnet8。这种情况在VMware里创建多个虚拟网络之后很常见。解决方法是进入虚拟网络编辑器确认当前虚拟机用的是哪个VMnet再在NAT设置里把网关地址记准。有时候你以为你配的X.X.X.2是对的其实VMware的实际网关是X.X.X.1。记住我们前面说过的NAT模式网关一般是X.X.X.2但每个环境都不一样打开设置看得一目了然。6.3 快速定位网络问题的检查顺序如果固定IP配完发现网络不通按下面顺序检查基本能解决90%的问题先检查本机网络ip addr看IP、掩码、网卡状态。再检查网关ping 192.168.88.2不通就说明VMware网络配置或网卡模式有问题。检查DNScat /etc/resolv.conf确认DNS配置再用ping 223.5.5.5测试纯外网链路。最后检查路由ip route确认默认路由指向了正确的网关。这个顺序其实就是网络排查的经典思路从底层往上查一层层排除。不要一上来就去看防火墙、改DNS那只会把自己绕晕。7. 清理环境与进一步延伸7.1 删除和克隆时的IP处理配置好一台虚拟机之后很多人会用它做模板来克隆。克隆出来的CentOS虚拟机网卡UUID和原始机器一样IP也相同会导致两台机器IP冲突。这是相关热搜词里克隆故障类问题的高发点。克隆之后一定要修改新虚拟机的IP并且删除ifcfg文件里的UUID行让系统下次启动时重新生成UUID。还要记得修改CentOS的hostname避免和模板机重名给后续管理带来混乱。7.2 固定IP与DHCP保留的替代方案如果你用的是桥接模式还可以在路由器上配置DHCP保留DHCP Reservation把某个IP永久绑定给虚拟机的MAC地址。这样虚拟机依然用DHCP自动获取但每次拿到的都是同一个IP。好处是不用进虚拟机改任何配置文件坏处是每台新虚拟机都要去路由器上绑定一次管理起来比较繁琐。我个人更推荐直接在虚拟机里配置静态IP因为这种方法不依赖外部设备换一台宿主机、换一个网络环境只要IP规划和网段匹配还能继续用。而DHCP保留方案一旦换了个路由器就得重新绑定。我在实际使用中发现配置固定IP这件事看似简单但涉及的细节非常散。网卡命名、VMware网络模式、网关地址、DNS设置、防火墙策略每一样都可能成为断网的元凶。但只要按上面说的思路走一遍多数问题都能当场解决。这中间最重要的是先明确自己的网络拓扑再动手改配置不要一上来就复制网上的配置命令。最后再分享一个小技巧改完网络配置后别急着重启机器先执行一下nmcli connection up ens33CentOS 8/9或systemctl restart networkCentOS 7确认网络功能正常后再重启。这样即使配置有问题你也还在一个可以随时改回来的状态里不会因为重启后连不上虚拟机而抓狂。记住退路永远是给自己的从容。
返回列表