CentOS修改网络配置

2026年01月19日/ 浏览 8

静态IP设置失败,网卡启动不了,我该怎么办?

最近公司让我弄台新的CentOS服务器,说是用来跑个内部小系统。我以前也配过Linux网络,感觉应该没啥问题。结果一上手就给我整不会了。刚装好系统,用`ip addr`一看,网卡叫ens192,这名字倒是第一次见,以前都是ens33或者eth0,不过名字不重要,能联网就行。

问题是,进系统之后发现根本没IP。ping百度都ping不通。我开始以为是虚拟机没连上网,检查了一圈网络设置,桥接、NAT都试了,都不行。后来才知道,原来是配置文件没开自动启动,而且默认是dhcp,但我们的局域网根本没开dhcp服务。

没办法,只能自己设静态IP。我按照以前的经验,去改那个网卡配置文件。路径是`

/etc/sysconfig/network-scripts/ifcfg-ens192`,这路径记得特别熟,毕竟改过好几次。打开之后发现BOOTPROTO那一行写着dhcp,ONBOOT是no。怪不得起不来。

先把ONBOOT改成yes,这样开机才能自动启用网卡。然后把BOOTPROTO从dhcp改成static。接下来就是加IP地址、子网掩码、网关这些。我把规划好的IP写进去:IPADDR=192.168.1.100,NETMASK=255.255.255.0,GATEWAY=192.168.1.1。顺手还加上DNS1=114.114.114.114,用国内的公共DNS,比较快。

改完之后保存退出,执行`systemctl restart network`重启网络服务。心里还挺得意,觉得这下肯定行了。结果提示一堆错误,说什么“RTNETLINK answers: File exists”。我懵了,这啥意思?查了一下,好像是路由冲突或者配置有重复。

我又回去看配置文件,发现里面还有个UUID,也不知道哪来的,看起来像随机生成的。有人说可以删了,但我觉得别乱动。后来发现可能是之前尝试dhcp的时候留下的残留路由。干脆把整个配置文件清掉重写一遍,只保留最关键的几行:DEVICE、BOOTPROTO、ONBOOT、IPADDR、NETMASK、GATEWAY、DNS1。

再重启网络,这次安静地重启完了,没报错。赶紧用`ip addr`看一眼,IP出来了!是192.168.1.100。马上ping一下网关,通了。再ping百度,也通了。总算松口气。

其实整个过程不算复杂,就是几个步骤:先查网卡名,再改配置文件,最后重启服务。但中间出点错就特别头疼。比如BOOTPROTO写成了statci,拼错了,服务直接起不来。还有一次是ONBOOT没改成yes,重启后又没网络,得连控制台进去改。

我也试过临时用`ifconfig`命令改IP,比如`ifconfig ens192 192.168.1.101 netmask 255.255.255.0`,当时立马就能通,但一重启就没。所以还是得改配置文件,这才是长久之计。

后来我还学了个命令,`nmcli`,说是CentOS7之后推荐用这个管理网络。但我试了试,感觉比直接改文件还复杂,还得记一堆子命令。对于我们这种简单需求,直接改ifcfg文件最直观。

有个细节容易忘,就是DNS的配置。光配IP和网关还不够,没DNS的话,域名都解析不了。可以在配置文件里加DNS1,也可以直接改`/etc/resolv.conf`,加nameserver行。两个方法都行,但改配置文件更统一,所有信息都在一块。

还有人说要关NetworkManager服务,用传统的network服务。我这台机器默认是开着NetworkManager的,也没特意去关,直接改ifcfg文件也能生效。可能新版的兼容性好了。

整个过程下来,最大的教训就是改完配置一定要检查拼写。尤其是BOOTPROTO、ONBOOT这种关键字,写错了系统不认。还有就是修改后一定要重启网络服务,不然配置不生效。有时候看着文件改了,但服务没重启,还以为是配置有问题。

现在这台服务器算是配好了,IP固定,能上网,内网其他机器也能访问它。虽然折腾了小半天,但也算复习了一遍Linux网络配置,下次再遇到类似问题,应该能更快搞定。

就这样。

picture loss