在Linux系统中,禁用网卡是常见的网络管理操作,通常用于故障排查、安全隔离、节能降耗等场景,不同Linux发行版和网卡管理工具下,禁用网卡的方法略有差异,本文将详细介绍多种常用方法,涵盖临时禁用和永久禁用的操作步骤,并分析各方法的适用场景及注意事项。
使用ifconfig
命令禁用网卡
ifconfig
是传统的Linux网络配置工具,虽在新版系统中逐渐被ip
命令替代,但在部分传统发行版(如CentOS 6、Debian 7等)中仍广泛使用。
临时禁用
通过ifconfig
命令将网卡状态设置为down
,即可立即禁用网卡,效果即时生效,重启网络服务或系统后失效。
操作步骤:
- 查看当前网卡名称:执行
ifconfig -a
或ip a
,获取目标网卡名(如eth0
、ens33
等)。 - 执行禁用命令:
sudo ifconfig <网卡名> down
示例:禁用
eth0
网卡sudo ifconfig eth0 down
永久禁用
需修改网卡的配置文件,使禁用设置在系统重启后依然生效。
-
Debian/Ubuntu系统:编辑
/etc/network/interfaces
文件,在目标网卡配置段添加up ifconfig <网卡名> down
或直接注释掉原配置,设置iface <网卡名> inet manual
(手动模式,不自动启用)。
示例(禁用eth0
):sudo nano /etc/network/interfaces
在文件中修改或添加:
auto eth0 iface eth0 inet manual up ifconfig eth0 down
保存后执行
sudo /etc/init.d/networking restart
重启网络服务。 -
CentOS/RHEL 6系统:编辑
/etc/sysconfig/network-scripts/ifcfg-<网卡名>
文件,设置ONBOOT=no
(开机不启用该网卡)。
示例:sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=no
保存后执行
sudo service network restart
重启网络服务。
使用ip
命令禁用网卡
ip
是iproute2
工具包中的命令,是现代Linux系统(如Ubuntu 18+、CentOS 7+)推荐的网络管理工具,功能比ifconfig
更强大。
临时禁用
通过ip link set
命令修改网卡状态,操作简单且即时生效。
操作步骤:
- 查看网卡名:
ip a
- 执行禁用命令:
sudo ip link set <网卡名> down
示例:禁用
ens33
sudo ip link set ens33 down
永久禁用
需结合systemd网络配置或发行版特定的网络配置文件。
-
systemd-networkd管理网络(如Arch Linux、CoreOS):
禁用对应网卡的.network
配置文件(如/etc/systemd/network/ens33.network
),或修改文件内容设置[Link]
段的RequiredForOnline=no
(非必需在线),然后重启systemd-networkd服务。
示例(禁用配置文件):sudo mv /etc/systemd/network/ens33.network /etc/systemd/network/ens33.network.bak sudo systemctl restart systemd-networkd
-
CentOS/RHEL 7+系统:若使用NetworkManager,可通过
nmcli
修改(见下文);若使用传统网络服务,修改/etc/sysconfig/network-scripts/ifcfg-<网卡名>
,设置ONBOOT=no
,然后执行sudo systemctl restart network
。
使用nmcli
命令禁用网卡
nmcli
是NetworkManager的命令行工具,适用于采用NetworkManager管理网络的发行版(如Ubuntu、Fedora、RHEL 7+等),支持动态管理网卡连接。
临时禁用
通过断开连接或设置网卡为“未管理”状态实现禁用。
操作步骤:
-
查看网卡及连接名:
nmcli connection show
-
方法1:断开连接(推荐)
sudo nmcli connection down "<连接名>"
示例:断开
eth0
连接sudo nmcli connection down "eth0"
-
方法2:设置网卡为未管理(需重启NetworkManager)
sudo nmcli device set <网卡名> managed no sudo systemctl restart NetworkManager
永久禁用
通过修改连接配置,禁用自动连接或删除连接。
-
禁用自动连接:保留连接配置但阻止开机自动启用。
sudo nmcli connection modify "<连接名>" connection.autoconnect no
示例:禁用
eth0
的自动连接sudo nmcli connection modify "eth0" connection.autoconnect no
-
删除连接:彻底移除连接配置(需重新添加才能使用)。
sudo nmcli connection delete "<连接名>"
示例:删除
eth0
连接sudo nmcli connection delete "eth0"
修改网络配置文件永久禁用(发行版特定)
不同发行版的网络配置文件结构不同,直接修改文件可实现永久禁用。
Ubuntu/Debian(Netplan)
Ubuntu 18+及后续版本使用Netplan配置网络,配置文件位于/etc/netplan/
目录下(如01-network-manager-all.yaml
)。
操作步骤:
- 编辑配置文件:
sudo nano /etc/netplan/01-network-manager-all.yaml
- 在目标网卡配置中添加
disabled: true
或删除该网卡配置。
示例:network: version: 2 ethernets: eth0: dhcp4: no disabled: true # 禁用网卡
- 应用配置:
sudo netplan apply
CentOS/RHEL 8+(NetworkManager)
若使用NetworkManager,可通过修改ifcfg
文件并设置NM_CONTROLLED=no
(禁止NetworkManager管理),再重启服务。
示例:
sudo nano /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33 ONBOOT=no NM_CONTROLLED=no
保存后执行sudo systemctl restart NetworkManager
。
不同方法对比及注意事项
方法对比
方法 | 临时禁用 | 永久禁用 | 适用场景 | 优点 | 缺点 |
---|---|---|---|---|---|
ifconfig | 支持 | 支持 | 传统系统,简单操作 | 命令简单,直观 | 新系统默认未安装,功能有限 |
ip | 支持 | 支持 | 现代Linux,推荐 | 功能强大,官方推荐 | 需熟悉ip命令语法 |
nmcli | 支持 | 支持 | NetworkManager管理系统 | 图形化工具支持,管理灵活 | 依赖NetworkManager,学习成本 |
配置文件 | 不支持 | 支持 | 需长期禁用,无服务干预 | 开机即生效,稳定 | 需熟悉配置文件结构,易出错 |
注意事项
- 确认网卡名:操作前务必通过
ip a
或ifconfig -a
确认网卡名称,避免误禁用其他网卡(如管理网卡的SSH连接)。 - 权限问题:所有命令均需root权限或
sudo
执行,普通用户无法直接修改网络配置。 - 发行版差异:不同发行版的网络管理工具(如NetworkManager、systemd-networkd、传统网络服务)不同,需选择对应方法。
- 测试环境:生产环境操作前建议在测试机验证,避免因误操作导致网络中断。
相关问答FAQs
问题1:Linux禁用网卡后如何重新启用?
解答:根据禁用方法选择对应启用命令:
- 临时禁用(ifconfig/ip):执行
sudo ifconfig <网卡名> up
或sudo ip link set <网卡名> up
。 - nmcli临时断开:执行
sudo nmcli connection up "<连接名>"
。 - 永久禁用(配置文件):恢复配置文件设置(如
ONBOOT=yes
、autoconnect: yes
、删除disabled: true
),然后重启网络服务(sudo systemctl restart network
或sudo netplan apply
)。
示例:CentOS中恢复ONBOOT=yes
后,执行sudo systemctl restart network
;Ubuntu中Netplan配置删除disabled: true
后,执行sudo netplan apply
。
问题2:为什么使用nmcli禁用网卡后重启系统,网卡又自动启用了?
解答:可能是未正确设置NetworkManager的连接属性。nmcli connection down
是临时断开连接,但连接配置中的autoconnect
默认为yes
,系统重启后NetworkManager会自动尝试连接,需执行sudo nmcli connection modify "<连接名>" connection.autoconnect no
,禁用自动连接,然后重启系统即可,验证命令:nmcli connection show "<连接名>" | grep autoconnect
,应显示autoconnect: no
。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/21406.html