Linux系统默认会启用IPv6协议栈,支持IPv6地址的分配和网络通信,不过在实际使用场景中,部分用户可能因为网络兼容性、业务需求等原因需要关闭IPv6,这是完全可以实现的。系统提供了临时和永久两种维度的关闭方式,适配不同的使用需求。

临时关闭IPv6的方法
临时关闭IPv6不需要修改系统配置文件,通过sysctl命令修改内核运行参数即可生效,但是重启系统后配置会失效,适合临时测试场景使用。
操作步骤
首先查看当前系统的IPv6开启状态,执行以下命令:
# 查看所有网卡的IPv6状态 ip -6 addr show # 查看IPv6内核参数 sysctl net.ipv6.conf.all.disable_ipv6
如果返回值为0,说明IPv6处于开启状态,执行以下命令临时关闭所有网卡的IPv6:
# 关闭所有网卡的IPv6 sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1 # 针对指定网卡关闭,比如关闭eth0的IPv6 sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=1
关闭后再次执行ip -6 addr show命令,如果看不到IPv6地址,说明临时关闭成功。
永久关闭IPv6的方法
永久关闭IPv6需要修改系统配置文件,让配置在系统重启后依然生效,不同管理方式的系统操作略有区别。
通过sysctl配置文件永久关闭
这种方法适用于大多数Linux发行版,操作步骤如下:
编辑/etc/sysctl.conf文件,在文件末尾添加以下内容:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
保存文件后,执行以下命令让配置生效:
sudo sysctl -p
通过GRUB配置关闭(适用于使用GRUB引导的系统)
部分场景下仅修改sysctl配置可能无法完全关闭IPv6,可以同时修改GRUB引导参数,操作步骤如下:
编辑/etc/default/grub文件,找到GRUB_CMDLINE_LINUX配置项,在引号内添加ipv6.disable=1,修改后示例如下:
GRUB_CMDLINE_LINUX="ipv6.disable=1"
保存文件后,更新GRUB配置:
- 对于使用GRUB2的系统,执行
sudo grub2-mkconfig -o /boot/grub2/grub.cfg - 对于使用GRUB的旧版本系统,执行
sudo update-grub
重启系统后IPv6会被彻底关闭。
通过NetworkManager关闭(适用于使用NetworkManager管理网络的发行版)
如果系统使用NetworkManager管理网络,可以针对每个连接单独关闭IPv6,操作步骤如下:
首先查看当前网络连接名称:
nmcli connection show
假设连接名称为eth0,执行以下命令关闭该连接的IPv6:
sudo nmcli connection modify eth0 ipv6.method ignore # 重新激活连接让配置生效 sudo nmcli connection up eth0
关闭后的验证方法
完成关闭操作后,可以通过以下方式验证IPv6是否成功关闭:
- 执行
ip -6 addr show,如果所有网卡都没有IPv6地址,说明关闭成功 - 执行
cat /proc/sys/net/ipv6/conf/all/disable_ipv6,返回值为1说明IPv6已关闭 - 尝试访问IPv6地址,比如执行
ping6 ipipp.com,如果提示网络不可达,说明IPv6已关闭
注意事项
关闭IPv6前需要确认业务是否依赖IPv6协议,如果业务需要IPv6通信,关闭后会导致功能异常。如果需要重新开启IPv6,只需要将对应的配置参数改回0,或者删除GRUB中的ipv6.disable=1参数,重启系统即可恢复。
LinuxIPv6sysctlgrubnetwork_manager修改时间:2026-06-12 07:24:10