有些服务器虽然没有真正分配 IPv6 地址,但系统默认仍会启用 IPv6,可能导致部分程序优先解析或尝试连接 IPv6,出现访问变慢、连接超时等问题。若当前环境明确不需要 IPv6,可以通过 sysctl 配置将其关闭。
一、准备配置文件
在 /etc/sysctl.d/ 下新增一个配置文件,便于后续维护,也避免直接修改系统默认配置。
1 | cd /etc/sysctl.d/ |
写入以下内容:
1 | echo 'net.ipv6.conf.all.disable_ipv6=1' | sudo tee /etc/sysctl.d/disable-ipv6.conf |
其中:
all 表示关闭当前所有网卡的 IPv6。
default 表示后续新创建的网卡默认也关闭 IPv6,例如部分容器、虚拟网卡等场景。
二、应用配置
执行以下命令让配置立即生效:
1 | sudo sysctl -p /etc/sysctl.d/disable-ipv6.conf |
正常会看到类似输出:
1 | net.ipv6.conf.all.disable_ipv6 = 1 |
若提示 sysctl: command not found,说明系统缺少 procps,安装后再执行一次即可。
1 | sudo apt install -y procps |
若已安装,但还是提示没有命令,可能 sysctl 所在目录没有加入到PATH,可以直接执行完整路径
1 | sudo /sbin/sysctl -p /etc/sysctl.d/disable-ipv6.conf |
三、验证
1. 查看内核参数
1 | sysctl net.ipv6.conf.all.disable_ipv6 |
若值都为 1,说明 IPv6 已关闭。
1 | net.ipv6.conf.all.disable_ipv6 = 1 |
2. 查看网卡地址
1 | ip addr |
关闭后,正常情况下网卡中不会再出现 inet6 地址,只保留 IPv4 地址,例如:
1 | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 |
四、恢复 IPv6
若后续需要重新启用 IPv6,将配置值改回 0 并重新加载即可。
1 | echo 'net.ipv6.conf.all.disable_ipv6=0' | sudo tee /etc/sysctl.d/disable-ipv6.conf |
如果仍未恢复,可以重启服务器后再查看。
1 | sudo reboot |
