centos7重启网卡命令
CentOS 7里网卡重启这事,重启坑过不少人。命令你敲`service network restart`,重启系统直接甩你一脸“Job for network.service failed”。命令别慌,重启这不是命令你手残,是重启CentOS 7默认用NetworkManager管网络,老一套的命令service命令早就被半废了。
最稳的重启办法,分情况来。命令如果只是重启改个IP或者DNS,用`nmcli`最省事——这玩意儿是命令NetworkManager的亲儿子。比如`nmcli connection reload`重读配置,重启再`nmcli connection down ens33 && nmcli connection up ens33`把网卡摁下去再拉起来。命令注意网卡名别写错,重启`ip addr`看一眼,ens33、eth0还是enp0s3,各机器不一样。
但有些人就是习惯老命令,非要用`systemctl restart network`。这命令在CentOS 7上能不能用?能用,但前提是你没动过NetworkManager的配置,而且网卡没被它接管。我见过不少虚拟机模板,装系统时NetworkManager开着,但网卡配置文件里又写了`NM_CONTROLLED=no`,这时候systemctl restart network反而能成。乱得很,得看你手上这台机器的实际状态。
还有个野路子,直接`ifdown ens33 && ifup ens33`。这命令本质上是调/etc/sysconfig/network-scripts/里的脚本,不经过NetworkManager。好处是快,坏处是如果你用了NetworkManager的connection配置(比如DHCP或者bonding),它可能读不到,结果就是网卡起来了但没IP。我踩过这坑,改完bonding配置用ifup重启,结果两个物理口都起来了,bond0却光着屁股没地址。
再说个冷门的:`ip link set ens33 down && ip link set ens33 up`。这纯属物理层操作,不碰IP配置。适合你手贱把IP丢了,想快速让网卡重新跑一遍DHCP——但前提是你得确保dhclient还在跑,否则up了也没用。我一般不用这个,除非前面几个命令都失灵了,拿来应急。
最后说个判断技巧。你重启前先跑`nmcli device status`,看网卡状态是“connected”还是“unmanaged”。如果是unmanaged,说明NetworkManager压根不管它,你直接systemctl restart network就行。如果是connected,老老实实用nmcli。别跟系统较劲,它怎么设计你就怎么用,省得半夜改配置改到怀疑人生。
对了,改完网卡配置记得`ping -c 3 网关`试一下,别光看网卡状态是up就觉得万事大吉。我遇到过网卡起来但路由表没刷新,结果外网不通,折腾半小时才发现是忘了加`ip route add default via`。这年头,命令记不住不要紧,关键是知道去哪查——`man nmcli`和`/etc/sysconfig/network-scripts/ifcfg-*`文件,比百度靠谱多了。
