在Linux系统运维与网络管理中,关闭网卡是一项基础但至关重要的操作,无论是为了进行网络故障排查、系统安全加固,还是为了更改网络配置,掌握正确的方法都是必不可少的。关闭Linux网卡的核心上文归纳在于区分“临时关闭”与“永久关闭”两种场景:临时关闭主要用于即时维护或调试,重启后失效;而永久关闭则通过修改配置文件实现,旨在确保系统重启后网卡状态依然保持禁用,根据系统发行版及网络管理工具的不同,操作指令也分为传统的ifconfig/ip命令法与现代化的NetworkManager/Netplan配置法。

临时关闭网卡(即时生效)
临时关闭网卡是运维中最常用的操作,主要用于在不重启服务器的情况下断开网络连接,或者在进行网络参数调整前让接口下线,此操作立即生效,但一旦服务器重启,网卡会恢复到默认的启动状态。
使用ip命令(推荐现代方法)
ip命令是Linux内核网络栈的现代管理工具,已逐渐取代老旧的ifconfig,要临时关闭网卡,首先需要确认网卡的名称,可以使用ip addr或ip a命令查看当前活动的网络接口,例如eth0或ens33。
执行关闭操作的命令如下:
sudo ip link set dev eth0 down
执行完毕后,该网卡将立即停止发送和接收数据包,若要重新启用,只需将命令中的down改为up即可。这种方法的优势在于直接与内核交互,响应速度快,且不依赖任何外部服务守护进程。
使用ifconfig命令(传统方法)
尽管ifconfig已被标记为过时,但在许多老旧的Linux发行版或习惯性操作中,它依然被广泛使用,其操作逻辑与ip命令类似:
sudo ifconfig eth0 down
需要注意的是,如果系统中未安装net-tools包,将无法使用此命令,在现代 CentOS 8、Debian 10 及以上版本中,默认可能不包含此工具,因此优先掌握ip命令更具前瞻性。
验证网卡状态
无论使用哪种方法,关闭后都应进行验证,再次输入ip link show命令,被关闭的网卡状态标志中应显示DOWN,且LOWER_UP标志消失,使用ping命令测试连通性应当失败,确认网络已断开。
永久关闭网卡(持久化配置)
永久关闭网卡意味着即便系统重启,该网卡也不会自动激活,这通常用于多网卡服务器中闲置接口的管理,或者在高安全需求下彻底禁用某些物理端口,实现这一目标的核心在于修改网络配置文件或管理服务的设置。
基于RedHat/CentOS/Fedora系统
在这些基于RPM的发行版中,网络配置文件通常存放在/etc/sysconfig/network-scripts/目录下,文件名通常为ifcfg-<网卡名称>,例如ifcfg-ens33。
要永久禁用网卡,需要编辑该文件:

sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
找到ONBOOT这一行,将其参数修改为no:
ONBOOT=no
如果该文件中不存在此行,则需手动添加。保存并退出编辑器后,重启网络服务或重启服务器即可生效,在CentOS 7及以前版本,可以使用systemctl restart network;在CentOS 8/RHEL 8中,建议使用nmcli connection reload followed by nmcli connection down <name>。
基于Debian/Ubuntu系统
在Debian和Ubuntu系统中,配置方式取决于系统版本和网络管理工具。
对于使用传统/etc/network/interfaces的版本(如Ubuntu 18.04及以前):
编辑配置文件:
sudo vi /etc/network/interfaces
找到目标网卡的配置段,将其设置为manual或直接注释掉:
iface eth0 inet manual
或者在该行前加注释符。
对于使用Netplan的现代版本(如Ubuntu 18.04 LTS及以后、Ubuntu 20.04/22.04):
配置文件位于/etc/netplan/目录下,通常为.yaml结尾的文件,编辑该文件,将对应网卡的配置删除或设置为不可用,更优雅的方式是使用renderer: NetworkManager并通过NM管理,或者直接在配置中忽略该接口,修改后需执行:
sudo netplan apply
使用NetworkManager工具(通用现代方案)
大多数现代Linux发行版都默认运行NetworkManager服务,使用nmcli命令行工具是管理网卡状态最统一、最便捷的方式,无论底层是RedHat还是Debian系。
要禁用网卡并防止其自动启动,可以使用以下命令:
sudo nmcli device disconnect eth0
上述命令仅是临时断开,要实现“永久关闭”(即开机不自动连接),需要修改连接配置:

sudo nmcli connection modify "Wired connection 1" connection.autoconnect no
这里的“Wired connection 1”需要替换为nmcli connection show查看到的实际连接名称,此方法不仅修改了配置文件,还直接通知了NetworkManager守护进程,无需手动编辑复杂的配置文件,极大地降低了人为语法错误的风险。
常见问题与专业解决方案
在实际操作中,运维人员可能会遇到无法关闭网卡或配置不生效的情况,以下提供基于E-E-A-T原则的专业见解与解决方案。
网卡状态显示“Device is busy”
当尝试关闭网卡时,系统有时会提示设备忙碌,这通常是因为有进程正在占用该网络接口,或者系统中有其他网络配置服务(如network-scripts与NetworkManager)发生了冲突。
解决方案:首先检查是否有进程正在大量占用网络带宽,但这通常不阻止关闭接口,更常见的原因是NetworkManager接管了接口,建议先停止NetworkManager服务(sudo systemctl stop NetworkManager),使用传统命令操作,然后再根据需求决定是否重启该服务,或者,直接使用nmcli命令进行操作,因为它能正确处理服务内部的锁状态。
远程操作导致连接中断(生产环境大忌)
这是最需要强调的安全警示:如果你通过SSH远程连接到服务器,并且关闭了当前正在使用的网卡,你将立即失去与服务器的连接,且无法通过该网络路径恢复,这在生产环境中可能导致严重的宕机事故。
专业建议:
- 确认当前接口:使用
ip route命令确认默认路由通过哪个网卡流出,切勿关闭该网卡。 - 使用计划任务:如果必须修改当前连接网卡的配置,建议编写一个脚本,利用
at或cron在5-10分钟后执行网络恢复操作,如果配置修改后无法连接,系统会自动恢复;如果连接正常,手动取消计划任务即可。 - 使用带外管理:通过IPMI、iDRAC或KVM over IP等管理口进行操作,即使业务网络中断也能继续控制服务器。
虚拟化环境中的多网卡管理
在虚拟机环境中,经常存在多张网卡(如公网网卡和私网网卡),有时为了安全,只需关闭公网网卡,保留内部管理网口。最佳实践是在系统安装时就明确网卡的角色,通过udev规则或BIOS顺序固定网卡名称(如eth0为内网,eth1为外网),并在配置文件中明确设置ONBOOT=no针对外网接口,避免因PCI设备顺序变化导致网卡名称漂移,从而误关闭了管理接口。
相关问答
Q1:如何查看Linux系统中所有网卡的详细状态信息?
A:要查看系统中所有网卡的详细状态(包括已启用和已禁用的),推荐使用ip link show命令,该命令会列出所有网络接口,并显示其状态(UP/DOWN)、MTU值以及MAC地址等信息,如果需要更详细的IP层信息,可以使用ip addr show,对于习惯使用旧工具的用户,ifconfig -a也可以显示所有接口,但ip命令提供了更完整和现代的输出格式。
Q2:修改了网卡配置文件后,如何确保配置立即生效而不重启服务器?
A:这取决于你使用的网络管理方式,如果是基于RedHat/CentOS系统且使用传统脚本,可以执行sudo systemctl restart network或sudo nmcli connection reload && sudo nmcli connection up <interface-name>,如果是Debian/Ubuntu系统且使用/etc/network/interfaces,可以执行sudo systemctl restart networking,如果是使用Netplan的系统,则必须执行sudo netplan apply。注意,在执行这些命令前,请务必确保你有其他途径访问服务器,以防配置错误导致网络中断。
互动
你在管理Linux服务器网络时,是否遇到过因为误操作关闭网卡而被“踢”出服务器的尴尬经历?欢迎在评论区分享你的故事或你在网络配置中遇到的疑难杂症,我们一起探讨解决方案。















