centos ip修改
昨天半夜,修改一台测试服务器突然连不上。修改ping不通,修改ssh直接超时。修改机房的修改人说电源灯亮着,系统也没崩——那就是修改IP丢了。CentOS 7,修改静态配置,修改改完没生效。修改这种事不罕见,修改尤其当你用的修改是NetworkManager那套图形工具,改完忘了重启服务,修改或者配置文件写错一个字母。修改
直接说结论:CentOS里改IP,修改最可靠的修改方式是编辑网卡配置文件,然后重启网络服务。别依赖ifconfig临时改,重启就没了。也别用nmtui那个伪图形界面,它生成的配置有时候会和你手写的冲突。
先找到网卡名字。ip addr 看一眼,通常叫ens33、eth0、enp3s0这类。记下来。然后进 /etc/sysconfig/network-scripts/ 目录,找 ifcfg-ens33 这样的文件。用vim打开,你会看到类似这样的内容:
TYPE=Ethernet BOOTPROTO=static NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 关键就三行:BOOTPROTO必须是static,ONBOOT必须是yes,IPADDR写你要的地址。如果你之前用的是DHCP,那BOOTPROTO=dhcp,你改成static之后必须把IPADDR补上,不然网卡起不来。有个坑是,有些老教程让你加HWADDR或者UUID,实际上别加,加了反而容易出问题——系统会自动识别网卡,你硬绑定MAC地址,换了网卡就废了。
改完保存,然后 systemctl restart network。注意,CentOS 8以后这个命令被废弃了,得用 nmcli 或者 systemctl restart NetworkManager。但如果你还在用CentOS 7,那 network 服务还是好使的。重启完,ip addr 看看地址对不对,ping一下网关,通了就完事。
还有一种情况,你改的是远程服务器的IP,那就得小心了。改之前先确认新IP在同一个网段,网关能通,不然你保存配置的瞬间,ssh就断了,而且再也连不回来——除非你有带外管理(iDRAC之类),不然只能跑机房。我吃过这个亏,有次改测试机,忘了改网关,结果整个网段都ping不通,最后只能让同事去机房插显示器。
如果你用NetworkManager管理网络,那还有个更简单的办法:nmcli con mod ens33 ipv4.addresses 192.168.1.100/24,然后 nmcli con up ens33。这命令的好处是即时生效,不用重启服务。但前提是你系统里NetworkManager在跑,而且网卡没被network服务接管。有时候两个服务同时存在会打架,表现为你改了配置文件,重启network没用,因为NetworkManager又给覆盖回去了。这种情况,先 systemctl stop NetworkManager,再改配置文件,最后启动network。
最后说个偏方。如果你实在搞不清哪个配置生效,直接 ip addr flush dev ens33 清空所有地址,然后 ip addr add 192.168.1.100/24 dev ens33 手动加,再 ip route add default via 192.168.1.1。这能让你立刻上网,但重启就没了。临时救急可以,长期用必须写配置文件。
改IP这事,本质上就是操作系统和网络栈之间的博弈。你写对了,它听你的;写错了,它沉默。别指望它报错提示你,它只会让你连不上,然后你自己排查。多备份原文件,改完测试一下,就这几步,别整花活。