跳至正文
CDelivery

网络常见问题

排查 IPv6、客户端地址、DNS、路由与证书问题。

以下 IPv6 检查适用于运行 Pingress 的 Linux 服务器。

为什么 Pingress 记录的是网关地址?

只有 IPv4 的 docker_gwbridge 可能转换 IPv6 连接,导致原始客户端地址丢失,即使宿主机支持 IPv6。前置 CDN 或其他代理也会改变直接连接方:Pingress 记录该连接方的地址,并用它填写 X-Real-IP 和 X-Forwarded-For。

安装器会自动开启 IPv6 吗?

首次安装或加入时,脚本会检测宿主 IPv6,并尝试准备双栈网桥。遇到选择提示时,选 1 继续使用 IPv4,选 2 退出并解决问题;默认退出,没有交互终端时也是如此。

--no-ipv6 跳过网桥准备,不会关闭已有双栈网桥的 IPv6。macOS 的网络由 Docker 运行环境管理。

如何检查是否正常?

在运行 Pingress 的服务器上执行:

ip -6 address show scope global
ip -6 route show default
docker network inspect docker_gwbridge --format '{{.EnableIPv6}}'

最后一条应输出 true,它只确认配置,不代表连通性正常。需要公网访问时,域名的 AAAA 记录应指向可通过 IPv6 访问 Pingress 的地址。

从另一台支持 IPv6 的机器测试两种协议,将示例域名替换为实际域名:

curl -4 --noproxy '*' -I https://app.example.com
curl -6 --noproxy '*' -I https://app.example.com

核对 Pingress 的 client_ip,或应用收到的转发请求头,是否为发起连接的客户端地址。应用自身连接的对端是 Pingress,不是原始客户端。

安装后如何再启用 IPv6?

先让宿主机具备可用 IPv6。网桥已经输出 true 时,检查连通性和 DNS 即可。尚未入群的服务器,执行安装命令或服务器列表提供的加入命令,不添加 --no-ipv6。

重跑已有安装不会升级网桥。 已运行且网桥只有 IPv4 的服务器需要安排维护:

  1. 备份本地数据,记录节点 ID、角色、完整节点标签、网桥配置,以及绑定该节点的应用、Pingress 或 Insight。
  2. 停止或迁移其任务。管理节点退出前,须保持多数管理节点健康,并让 CDelivery 控制台在其他节点正常运行,再将待维护节点降级。唯一管理节点不能直接退出,应先完成安全接管或制定备份恢复方案。具体操作参见 Docker 节点维护说明。
  3. 节点退出且网桥没有容器引用后,从正常运行的控制台获取原角色的新加入命令,不添加 --no-ipv6;脚本会在加入前准备默认网桥。自定义网桥需保留原子网和选项,另行准备双栈网桥。邀请有效期为 30 分钟,CDelivery 重启或迁移后也会失效。
  4. 重新加入会生成新的节点 ID。恢复完整标签(包括卷说明),修复服务对旧 ID 的绑定。本地卷应用和使用本地存储的 Insight 不能简单地在界面更换节点,需要管理员维护部署约束。数据仍在原宿主机上。
  5. 恢复服务,按需调整 DNS,重新验证上述 IPv4、IPv6 访问与客户端地址。

也可以新增一台支持 IPv6 的服务器加入,将 Pingress 部署过去,再将 DNS 指向它。

IPv6 路由或防火墙异常怎么办?

开启转发后,accept_ra=1 的接口可能停止接收路由通告(RA),导致默认路由消失。通过接口所属的网络管理器持久配置 RA:ifupdown 使用 accept_ra 2,ifupdown-ng 使用 ipv6-accept-ra 2。网络管理器自行处理 RA 的接口,不要盲目覆盖其 accept_ra=0。重启接口或宿主机后再次检查路由。

保持 Docker 的 IPv6 防火墙管理开启(ip6tables 不能为 false),并在宿主防火墙和云安全组中放行 Pingress 的 HTTP/HTTPS 端口。网桥输出 true 并不能证明这些规则或外部访问正常。

其他访问问题

DNS 或路由问题先按域名与路由逐段检查;证书缺失、过期或签发失败见自动证书与续期。使用访问日志判断请求是否到达入口、是否匹配应用以及上游是否成功响应。

输入关键词搜索…

↑↓ 移动↵ 选择Esc 关闭