禁用IPv6必须分层处理:内核加载(GRUB加ipv6.disable=1)、网络栈(sysctl设all/default/lo三层为1)、接口配置(IPV6INIT=no)和服务依赖(如sshd设AddressFamily inet),缺一不可。

sysctl 配置必须覆盖 all/default/lo 三层
只写 net.ipv6.conf.all.disable_ipv6 = 1 是不够的。缺了 default,新创建的接口(比如 docker0、veth*)仍可能自动启用 IPv6;漏掉 lo,回环口仍会保留 inet6 ::1/128,导致 ss -tuln 里持续出现 :::22 或 :::3306 这类监听项。
正确写法是这三行都写进 /etc/sysctl.conf 或独立的 /etc/sysctl.d/99-disable-ipv6.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 后,用 cat /proc/sys/net/ipv6/conf/all/disable_ipv6 验证是否为 1;再运行 ip -6 addr show,输出应为空(不含任何 inet6 行)。
GRUB 参数才是真正卸载 ipv6 模块的关键
仅靠 sysctl 只是“禁用协议栈”,lsmod | grep ipv6 仍能看到模块加载,内核仍在处理 IPv6 报文(如 ICMPv6、NDP),只是不分配地址。真正想让 IPv6 彻底消失,必须在启动时阻止模块加载。
编辑 /etc/default/grub,在 GRUB_CMDLINE_LINUX 行末尾追加 ipv6.disable=1:
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet ipv6.disable=1"
注意:GRUB_CMDLINE_LINUX_DEFAULT 在 CentOS/RHEL 7+ 中不生效,必须改 GRUB_CMDLINE_LINUX。改完后务必运行:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
重启后验证:lsmod | grep ipv6 应无任何输出;ls /proc/sys/net/ 不再有 ipv6 目录 —— 这才是“IPv6 模块未加载”的确切证据。
网卡配置和服务级配置必须同步关闭
即使内核和 sysctl 都关了,NetworkManager 或传统 network 服务仍可能在 DHCP 场景下尝试启用 IPv6,尤其在 RHEL/CentOS 系统中。
-
/etc/sysconfig/network中添加或确认NETWORKING_IPV6=no - 每个网卡配置文件(如
/etc/sysconfig/network-scripts/ifcfg-eth0)中设IPV6INIT=no,并删除或注释掉IPV6ADDR、IPV6_DEFAULTGW等行 - 关键服务如
sshd必须显式限定只用 IPv4:编辑/etc/ssh/sshd_config,确保有AddressFamily inet;否则sshd仍会监听:::22,哪怕系统没 IPv6 地址
改完网卡配置后,重启网络服务:sudo systemctl restart network(RHEL/CentOS)或 sudo systemctl restart systemd-networkd(较新发行版)。
自动化初始化脚本要分阶段执行
把所有操作塞进一个 shell 脚本直接跑,大概率失败 —— 因为 grub2-mkconfig 依赖当前内核路径,sysctl -p 依赖配置已落盘,而服务重启又依赖前序步骤完成。
建议拆成三阶段:
- 阶段一(预装):写入
/etc/sysctl.d/99-disable-ipv6.conf和/etc/default/grub,不立即生效 - 阶段二(首次启动):运行
grub2-mkconfig+sysctl -p+ 修改网卡配置 +systemctl restart sshd network - 阶段三(验证):检查
ip -6 addr show、ss -tuln | grep :22(应只显示*:22)、lsmod | grep ipv6
最容易被忽略的是:SSH 和某些数据库(如 MySQL 的 bind-address)默认监听 ::,不改配置文件,光关内核层毫无意义。真正的“关闭 IPv6”不是让 ifconfig 不显示地址,而是让整个协议栈、模块、服务、监听行为全部对齐 —— 少一层,就可能留下暴露面。


















