现代主流方式:CentOS 7/8/Stream 及更新版本
自CentOS 7起,系统全面采用systemd
作为初始化和服务管理器,网络服务也由功能强大的NetworkManager
统一接管,重启网卡最推荐的方式是通过systemctl
命令管理NetworkManager
服务。
使用 systemctl
重启 NetworkManager
这是最常用且最规范的方法,它并非直接操作网卡设备,而是重启负责管理所有网络连接的后台服务。NetworkManager
会优雅地关闭现有连接,读取最新的配置文件,然后重新建立连接。
sudo systemctl restart NetworkManager
优点:
- 统一管理:与现代系统架构完全契合,是官方推荐的方法。
- 智能可靠:
NetworkManager
能够智能处理各种网络场景,包括有线、无线、VPN等,重启过程稳定。 - 影响面可控:它只会重启由
NetworkManager
管理的网络接口,对于其他非标准配置的接口影响较小。
执行后,如何确认状态?
可以使用以下命令查看服务状态,确保其已成功重启并处于活跃(running)状态:
sudo systemctl status NetworkManager
使用 nmcli
工具操作指定接口
如果仅需要对某一个特定的网卡进行重启操作,而不影响其他网络接口,nmcli
(NetworkManager Command-Line Interface)是最佳选择,它提供了更精细的控制粒度。
使用以下命令查看当前系统中有哪些网络连接:
nmcli connection show
输出结果会列出所有连接的名称(NAME)和UUID,连接名称与网卡设备名类似,例如ens33
或eth0
。
使用down
和up
命令来“关闭”再“启用”指定的连接,从而达到重启的效果:
# 将连接名为 ens33 的网卡先禁用 sudo nmcli connection down ens33 # 再重新启用它 sudo nmcli connection up ens33
这种方法尤其适用于生产环境,当您需要在不中断服务器其他网络接口(如多网卡服务器中的管理口)的情况下,重启业务网卡时,此方法显得尤为安全和精准。
传统经典方式:CentOS 6 及更早版本
在systemd
普及之前,CentOS 6及更早版本使用传统的SysV init脚本来管理系统服务,网络服务的脚本是/etc/init.d/network
。
使用 service
命令重启网络服务
这是CentOS 6时代的标准操作,该命令会执行网络初始化脚本,重新加载所有位于/etc/sysconfig/network-scripts/
目录下的网卡配置文件,并重启所有已配置的网络接口。
sudo service network restart
或者使用其等效的完整路径:
sudo /etc/init.d/network restart
注意:
- 全局影响:此命令会重启所有被系统脚本管理的网络接口,如果服务器有多个网卡,这可能会导致所有网络连接瞬间中断,需谨慎操作。
- 兼容性:在CentOS 7/8等新版本中,虽然为了向后兼容可能仍然保留了
service network restart
这个命令,但其内部实现可能已被重定向到systemctl
,且强烈不推荐在新系统中使用。
底层直接操作:ifdown
/ ifup
命令
这是一种更为“底层”和直接的方法,它绕过了服务管理器,直接对指定的网络接口进行禁用和启用操作,这个命令在几乎所有Linux发行版中都可用。
# 禁用名为 eth0 的网卡 sudo ifdown eth0 # 启用名为 eth0 的网卡 sudo ifup eth0
适用场景与注意事项:
- 快速修复:当某个网卡状态异常,需要快速“拔插”一下时,此方法非常迅速。
- 依赖脚本:
ifup
命令会执行/etc/sysconfig/network-scripts/ifup-eth
等脚本,并读取/etc/sysconfig/network-scripts/ifcfg-<interface_name>
配置文件来获取IP地址等信息,它同样依赖于配置文件的正确性。 - 非持久化:它只影响当前运行状态,不会修改任何服务配置。
- 风险:直接操作底层设备,如果操作不当(例如在远程连接时禁用了自己正在使用的网卡),可能会导致立即失联。
方法对比与选择
为了更直观地理解上述方法的差异,下表对它们进行了小编总结:
方法 | 适用版本 | 作用范围 | 推荐指数 | 备注 |
---|---|---|---|---|
systemctl restart NetworkManager | CentOS 7/8/Stream 及更新 | 重启NetworkManager 服务,影响其管理的所有连接 | 现代、安全、首选,官方推荐 | |
nmcli con down/up <name> | CentOS 7/8/Stream 及更新 | 仅操作指定的网络连接 | 精准控制,适合多网卡环境和生产环境 | |
service network restart | CentOS 6 及更早版本 | 重启所有系统脚本管理的网络接口 | 旧版标准,新版不推荐,全局影响 | |
ifdown/ifup <interface> | 所有Linux发行版 | 仅操作指定的网络接口 | 快速直接,但需谨慎,依赖正确的配置文件 |
如何验证网卡重启是否成功?
无论采用哪种方法,验证操作结果都是至关重要的一步。
查看接口状态与IP地址:
使用ip
命令查看指定网卡的详细信息,确认UP
状态和IP地址是否已按预期配置。ip addr show ens33
在输出中,应看到
<BROADCAST,MULTICAST,UP,LOWER_UP>
等状态标识,以及正确的inet
(IPv4)或inet6
(IPv6)地址。测试网络连通性:
使用ping
命令测试与网关或公共DNS服务器的连通性。# 测试与网关的连通性(替换为你的网关IP) ping -c 4 192.168.1.1 # 测试与外网的连通性 ping -c 4 8.8.8.8
如果能够收到正常的回复(
64 bytes from...
),则表明网络已恢复正常。检查服务日志(可选):
如果怀疑重启过程中出现问题,可以查看NetworkManager
的日志或系统日志。# 查看NetworkManager服务的最新日志 journalctl -u NetworkManager -f
相关问答 (FAQs)
问题1:我重启了网卡,但是它的IP地址没有变,为什么?
解答: 这种情况通常由以下两个原因导致:
- 静态IP配置:您的网卡配置文件(位于
/etc/sysconfig/network-scripts/ifcfg-<interface_name>
)中设置了BOOTPROTO=static
,并手动指定了IPADDR
,在这种情况下,无论网卡如何重启,系统都会始终为其分配这个固定的IP地址,如果需要更改IP,必须修改此配置文件后再重启。 - DHCP租约未到期:如果您使用的是动态IP(
BOOTPROTO=dhcp
),网卡重启时会尝试向DHCP服务器请求续租之前的IP地址,如果租约尚未到期,服务器通常会批准续租,因此IP地址保持不变,这是DHCP协议的正常行为,旨在提供网络稳定性。
问题2:在CentOS 7中执行service network restart
失败,提示Job for network.service failed
,该怎么办?
解答: 这个错误提示意味着网络服务启动失败,最常见的原因是网络配置文件中存在语法错误或逻辑冲突,请按以下步骤排查:
- 检查配置文件:仔细检查
/etc/sysconfig/network-scripts/
目录下对应网卡的配置文件(如ifcfg-ens33
),常见的错误包括:拼写错误(如BOOTPROTO
写成了BOOTPROTO
)、多余的空格、引号不匹配,或者ONBOOT
设置为no
导致开机不自动启用,确保所有参数值都是正确的。 - 查看详细错误日志:使用
journalctl -xe
命令可以查看到系统日志中最近的错误详情,通常会明确指出哪一步操作失败或哪个配置项有问题,这是定位问题的最有效工具。 - 检查设备名称:确认您配置的设备名称(如
DEVICE=ens33
)与系统中实际存在的网卡名称(通过ip addr
或nmcli d
查看)完全一致,设备名称不匹配是常见的低级错误,修正配置文件后,再次尝试重启网卡即可。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复