Ubuntu禁用IPv6,网站IPv6访问异常处理

在 Ubuntu 服务器上禁用 IPv6 后,网站出现 IPv6 访问异常,通常是因为系统关闭了 IPv6 协议栈,但 Nginx、DNS 解析或防火墙仍保留 IPv6 监听或解析记录。
本文按零基础用户能直接照做的顺序,讲清禁用 IPv6 的正确方法、异常排查步骤和最终验证方式。

先判断是否真的需要禁用 IPv6

如果服务器所在网络没有稳定的 IPv6 出口,或者应用对 IPv6 支持不完整,关闭 IPv6 可以减少解析超时和连接失败。
反之,如果网站已经通过 AAAA 记录对外提供 IPv6 访问,贸然禁用会导致部分用户访问失败。

执行下面命令确认当前状态:

ip -6 addr show
sysctl net.ipv6.conf.all.disable_ipv6

如果输出中有全局 IPv6 地址,且 disable_ipv6 为 0,说明 IPv6 正在使用。
此时禁用前要先确认 DNS 中是否存在 AAAA 记录,避免解析到 IPv6 地址后无法连接。

在 Ubuntu 上禁用 IPv6 的配置方法

Ubuntu 通过 sysctl 管理内核参数,禁用 IPv6 需要同时关闭默认、所有接口和回环接口的开关。

编辑配置文件:

sudo nano /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 --system

如果使用 Netplan 管理网络,建议同时在 /etc/netplan/ 下对应配置文件中确认没有启用 IPv6 的 dhcp6 或 accept-ra 选项,避免重启后又被拉起来。
修改 Netplan 后执行 sudo netplan apply 使其生效。

注意: 如果服务器通过 IPv6 进行远程 SSH 管理,禁用后当前 IPv6 连接会断开,请提前确认有 IPv4 管理通道。

网站 IPv6 访问异常的常见原因

禁用 IPv6 后网站打不开,多半不是禁用本身出错,而是下面几个环节没有同步调整。

  • Nginx 监听 [::]:80 或 [::]:443:系统禁用 IPv6 后,这些监听会失效,日志中可能出现 socket() [::]:80 failed (97: Address family not supported by protocol)。
  • DNS 仍返回 AAAA 记录:客户端优先使用 IPv6 连接,但服务器已不支持,导致连接超时。
  • 防火墙规则残留 IPv6 条目:ip6tables 或 UFW 中的 IPv6 规则可能拦截或放行异常。
  • 应用配置绑定了 IPv6 地址:如 Node.js、Docker 容器或数据库只监听 IPv6,禁用后服务无法启动。

排查 Nginx 监听状态:

sudo ss -tlnp | grep nginx

如果看到 [:
:]:
80
或 [:
:]:
443
,
需要修改站点配置,
把 listen [:
:]:
80;
和 listen [:
:]:
443 ssl;
注释掉或删除,
只保留 IPv4 监听,
然后执行 sudo nginx -t && sudo systemctl reload nginx。

处理 DNS 解析和客户端访问问题

如果域名解析中存在 AAAA 记录,而服务器已禁用 IPv6,建议在 DNS 服务商处删除或暂停该 AAAA 记录,只保留 A 记录。
修改后等待 DNS 缓存过期,再用下面命令验证:

dig AAAA 你的域名 +short
dig A 你的域名 +short

如果 AAAA 查询返回空,A 查询返回服务器 IPv4 地址,说明解析已正确。
此时用 curl -6 测试会失败,用 curl -4 应能正常返回页面内容。

对于已经访问过网站的用户,本地 DNS 或浏览器可能仍缓存 AAAA 记录,可以建议用户清除 DNS 缓存或稍后重试。

验证禁用效果和网站恢复情况

完成配置后,按下面顺序做一次完整验证。

检查 IPv6 是否已关闭:

cat /proc/sys/net/ipv6/conf/all/disable_ipv6

返回 1 表示已禁用。
再执行 ip -6 addr show,应只看到回环地址或没有全局 IPv6 地址。

检查网站 IPv4 访问:

curl -I -4 http://你的域名
curl -I -4 https://你的域名

返回 200、301 或 302 都说明 IPv4 链路正常。
如果返回 Connection refused,优先检查 Nginx 是否监听在 0.0.0.0:80 和 0.0.0.0:443。

检查服务日志:

sudo tail -n 50 /var/log/nginx/error.log

确认没有 Address family not supported 或 bind() to [::] 相关报错。

几个容易踩坑的细节

禁用 IPv6 不等于网站一定更快或更安全,是否禁用取决于业务实际需求。
如果网站面向的访客网络以 IPv6 为主,保留 IPv6 并修复配置往往是更好的选择。

Docker 环境下,容器可能默认启用 IPv6。
禁用宿主机 IPv6 后,建议检查 /etc/docker/daemon.json 中是否配置了 ipv6 相关选项,必要时移除并重启 Docker 服务。

如果使用 UFW 防火墙,执行 sudo ufw status verbose 查看规则是否包含 IPv6 条目。
禁用 IPv6 后,可以关闭 UFW 的 IPv6 支持:编辑 /etc/default/ufw,将 IPV6=yes 改为 IPV6=no,然后执行 sudo ufw reload。

修改任何配置前,建议先备份原文件,例如 sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak,这样出现异常时可以快速回滚。

禁用 IPv6 后还能恢复吗

可以。
删除 /etc/sysctl.d/99-disable-ipv6.conf 或把其中三个值改回 0,执行 sudo sysctl --system,再恢复 Nginx 的 IPv6 监听和 DNS 的 AAAA 记录即可。

为什么禁用 IPv6 后 HTTPS 证书验证变慢

部分客户端在连接时会先尝试 IPv6,超时后才回退 IPv4。
删除 AAAA 记录并清理本地 DNS 缓存后,这种延迟通常会消失。

只改 sysctl 不重启服务器可以吗

可以,sysctl --system 会立即加载新配置。
但如果 Netplan 或 Docker 配置中仍保留 IPv6 选项,重启后可能再次启用,建议一并检查。

分享到:
上一篇
Linux systemd服务管理
下一篇
RockyLinux开启BBR拥塞控制
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意