纯IPv6服务器安装宝塔后必须手动启用IPv6监听,否则面板仅绑定0.0.0.0无法响应IPv6请求;需立即执行echo '::' > /www/server/panel/data/ipv6.pl并重启面板,且访问时必须用https://[IPv6地址]:8888格式。

纯IPv6服务器上装宝塔,不手动干预 IPv6 监听配置,面板根本打不开。 宝塔安装脚本默认只准备 IPv4 环境,即使系统有全局 IPv6 地址、DNS 也配好了,/www/server/panel/data/ipv6.pl 文件不存在或为空,面板服务仍只绑定 0.0.0.0,IPv6 请求直接被丢弃。
确认服务器已获得可用 IPv6 地址并能联网
这是所有后续操作的前提,跳过这步,后面全白忙。
- 运行
ip -6 addr show,确认输出中包含scope global的地址(如2001:db8::123/64),排除fe80::/10(链路本地)和fd00::/8(ULA)这类不可路由地址 - 执行
ping6 -c 4 2400:3200:baba::1测试 IPv6 DNS 连通性(阿里云公共 IPv6 DNS) - 检查
/etc/resolv.conf,确保只含 IPv6 nameserver,例如:nameserver 2400:3200:baba::1;若混有 IPv4 DNS,可能引发解析超时或降级失败 - 若无响应,需先配置网卡 IPv6 参数(如编辑
/etc/sysconfig/network-scripts/ifcfg-eth0,添加IPV6INIT=yes、IPV6ADDR=你的地址/64、IPV6_DEFAULTGW=网关),再重启网络
安装后立即写入 ipv6.pl 并重启面板
宝塔安装过程本身不判断网络类型,ipv6.pl 文件不会自动生成。必须在 bash install.sh 执行完毕、面板首次启动前完成注入。
- 安装命令(以官方 6.0 版本为例):
wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh - 安装完成后立刻执行:
echo '::' > /www/server/panel/data/ipv6.pl(写入双冒号表示监听所有 IPv6 地址) - 不要用
echo True > ...,旧文档中该写法在新版面板里已失效,仅::或空文件才被识别 - 执行
/etc/init.d/bt restart,否则变更不生效;可随后用netstat -tlnp | grep ':8888'验证是否出现:::8888
手动修改 config.py 强制绑定 ::(当 ipv6.pl 失效时)
某些定制系统或低版本宝塔中,ipv6.pl 文件存在但未被读取,此时需直接改代码逻辑。
- 编辑
/www/server/panel/class/config.py - 查找
bind_addr = '0.0.0.0'这一行(通常在class WebServer内部) - 将其改为:
bind_addr = '::';注意是字符串'::',不是'[::]',后者会导致启动失败 - 保存后再次执行
/etc/init.d/bt restart;如果报错,检查引号是否为英文、等号前后是否有空格 - 该修改比
ipv6.pl更底层,但升级面板时会被覆盖,需重新操作
用正确格式访问面板,别漏掉方括号
浏览器对 IPv6 URL 解析严格,不加括号会被当成域名或解析错误,导致连接被重定向到 127.0.0.1 或直接失败。
- 获取你的全局 IPv6 地址(如
2001:db8:abcd:ef00:1234:5678:9abc:def0) - 在浏览器输入:
https://[2001:db8:abcd:ef00:1234:5678:9abc:def0]:8888—— 方括号[ ]是必需的,不能省略 - 首次访问提示证书错误属正常,因自签名证书未绑定具体 IPv6 地址;点击“高级”→“继续前往”即可,后续可申请 Let's Encrypt 泛域名证书解决
- 若页面空白或加载超时,先用
curl -I -6 https://[::1]:8888在本机测试,排除客户端网络问题
最常被忽略的是:以为装完就能用,没做 ipv6.pl 注入;以及访问时漏掉方括号,反复刷新却始终连不上。这两步不落实,整个 IPv6 部署就卡在第一步。











