命令行更换IP后不生效?检查这两个地方

2025.7.18 杂七杂八 1651
33BLOG智能摘要
文章讲述服务器运维中通过命令行修改IP地址后不生效的两个常见原因及解决方法。第一个问题是NetworkManager服务会定期将网络配置恢复原状,解决方法是通过systemctl停止并禁用该服务,或直接修改/etc/sysconfig/network-scripts/ifcfg-eth0文件。第二个问题是DNS缓存未更新导致域名解析失败,不同系统清理缓存的方法不同:CentOS/RHEL需重启network服务,Ubuntu使用systemd-resolve命令,Windows使用ipconfig命令,同时需检查/etc/resolv.conf中的DNS设置。作者建议使用nmcli命令修改IP更稳妥,并强调修改后应依次测试网关连接、外网IP连通性和域名解析。最后推荐使用组合命令快速查看网络配置,避免盲目重启。
— 此摘要由33BLOG基于AI分析文章内容生成,仅供参考。

命令行改IP后死活不生效?老司机教你排查这两个关键点

命令行更换IP后不生效?检查这两个地方

大家好,我是33blog的技术小编。今天想和大家分享一个我最近在服务器运维中遇到的坑——明明用命令行改了IP地址,结果死活不生效。这个问题折腾了我大半天,最后发现是两处细节没注意。相信很多运维新手都会遇到类似情况,所以特地写出来帮大家避坑。

第一坑:NetworkManager在偷偷捣乱

那天我正用老方法给CentOS服务器改IP:

ifconfig eth0 192.168.1.100 netmask 255.255.255.0
route add default gw 192.168.1.1

执行完ifconfig查看确实生效了,但诡异的是ping外网就是不通。后来才发现,这台服务器装了NetworkManager服务,它会定期把配置”纠正”回原来的状态。解决方法很简单:

systemctl stop NetworkManager
systemctl disable NetworkManager

或者在/etc/sysconfig/network-scripts/里直接修改ifcfg-eth0文件,这样NetworkManager也会认。

第二坑:DNS缓存还在作祟

解决了第一个问题后,我发现虽然能ping通IP,但域名解析还是有问题。这是因为——

系统DNS缓存没更新! 不同系统清理方法不同:

  • CentOS/RHEL: systemctl restart network
  • Ubuntu: systemd-resolve --flush-caches
  • Windows: ipconfig /flushdns

另外别忘了检查/etc/resolv.conf里的DNS服务器地址是否也更新了。

我的血泪经验

经过这次折腾,我总结出两个经验:

  1. 现在主流Linux发行版基本都用NetworkManager了,直接用nmcli命令改IP更稳妥
  2. 改完IP后一定要做完整测试:先ping网关,再ping外网IP,最后测域名解析

最后分享个实用命令,一键查看所有网络配置:

ip a && ip route && cat /etc/resolv.conf

遇到网络问题别急着重启,按这个顺序排查能省不少时间。大家有什么网络配置的踩坑经历,欢迎在评论区分享~

评论

  • 原来NetworkManager还会偷偷改回去,难怪之前总是不生效,学到了!