必须分四层同步打通:系统网络、DNS解析、宝塔自身监听、Nginx网站监听。先确认服务器有公网IPv6地址,再配置网卡和DNS,启用宝塔IPv6监听,添加Nginx的[::]:80和[::]:443监听,最后添加域名AAAA记录。

宝塔面板在云服务器上默认只监听 IPv4,不配置就不可能通过 IPv6 访问面板或网站。要真正实现双栈(IPv4 + IPv6),必须分四层同步打通:系统网络、DNS 解析、宝塔自身监听、Nginx 网站监听——缺一不可。
确认云服务器已分配并启用 IPv6 地址
这是所有后续操作的前提。很多用户卡在这一步却以为是宝塔或 Nginx 问题。
- 登录服务器终端,执行
ip -6 addr show,确认输出中存在非fe80::/10(链路本地)和非fd00::/8(ULA)的公网 IPv6 地址,例如2001:db8:abcd:1234::1/64 - 若无有效地址,需去云厂商控制台开通 IPv6,并获取分配的地址、前缀长度(如
/64)和网关(如2001:db8:abcd:1234::1) - 编辑网卡配置文件(如
/etc/sysconfig/network-scripts/ifcfg-eth0),追加三行(注意删除中文注释):IPV6INIT=yesIPV6ADDR=2001:db8:abcd:1234::1/64IPV6_DEFAULTGW=2001:db8:abcd:1234::1 - 编辑
/etc/resolv.conf,添加至少一个 IPv6 DNS:nameserver 240c::6666(下一代互联网国家工程中心推荐)nameserver 2400:3200:baba::1(阿里云) - 重启网络服务:
systemctl restart network(CentOS)或systemctl restart systemd-networkd(Ubuntu/Debian)
安装宝塔后立即启用面板 IPv6 监听
宝塔默认不监听 IPv6,即使系统已就绪,https://[2001:db8::1]:8888 也会连接被拒绝。
- 安装完成后,先用 IPv4 登录面板(如
http://your-ipv4:8888) - 进入【面板设置】→【基础设置】→ 勾选【监听 IPv6】→ 【保存】
- 关键一步:执行命令强制写入 IPv6 标志并重启:
echo '::' > /www/server/panel/data/ipv6.pl && /etc/init.d/bt restart - 验证:用另一台支持 IPv6 的设备访问
https://[你的IPv6地址]:8888,应能打开登录页;若失败,检查防火墙是否放行 TCP 8888 端口的 IPv6 流量(ip6tables或云安全组)
为网站 Nginx 配置 IPv6 listen 指令
面板能用 IPv6 不代表网站能用。Nginx 默认只监听 listen 80;(即 IPv4-only),必须显式添加 IPv6 监听行,否则客户端走 IPv6 访问域名时会超时。
- 在宝塔【网站】列表中点击目标站点右侧【设置】→【配置文件】
- 找到已有
listen 80;行,在其正下方插入:listen [::]:80; - 若启用 HTTPS,找到类似
listen 443 ssl http2;的行,在其正下方插入:listen [::]:443 ssl http2; - 保存后点击【重载配置】(不是“保存”按钮本身)
- 注意:不要写成
listen ::80;或漏掉方括号 ——[::]是 IPv6 通配符的标准写法,写错会导致 Nginx 启动失败
配置 AAAA 记录与 DNS 双栈解析
就算服务器和 Nginx 全部支持 IPv6,如果 DNS 不返回 AAAA 记录,客户端根本不会尝试 IPv6 连接。
- 登录你使用的 DNS 服务商(如 DNSPod、Cloudflare、阿里云 DNS)
- 为域名添加一条
AAAA记录:
主机名填@或www,记录值填你的服务器公网 IPv6 地址(如2001:db8:abcd:1234::1),TTL 可设为 600 - 确保同时保留原有的
A记录(指向 IPv4 地址),构成双栈解析 - 验证解析:在本地终端执行
dig AAAA yourdomain.com或nslookup -q=aaaa yourdomain.com,确认返回了正确的 IPv6 地址 - 注意:DNSPod 等服务商已全面支持双栈 DNS 服务器(如
v6ns1.dnspod.net),但你只需配好记录,无需更换 NS
最容易被忽略的是系统级 IPv6 网络配置和 DNS 设置——这两步一旦遗漏,后面所有操作都只是在调试一个永远无法响应的链路。尤其是 /etc/resolv.conf 在某些系统(如启用了 systemd-resolved 的 Ubuntu)会被自动覆盖,必须用 systemd-resolved 方式配置才持久。


















