跳转至

IPv6 转 IPv4

在前面 软路由 - 开启 IPv6 章节中,已经获取了运营商的 IPv6 地址。很多情况下,虽然拥有运营商动态 IPv6 公网地址,但在实际使用中仍会遇到以下问题:

  • 运营商地址变化:运营商的 IPv6 地址会随时变化
  • 移动网络限制:部分运营商的 4G/5G 网络不支持 IPv6
  • 公共网络环境:咖啡馆、酒店等公共 WiFi 通常只提供 IPv4
  • 老旧设备:一些较老的设备和系统不支持 IPv6 协议
  • 企业网络:很多企业内网尚未部署 IPv6

假设家庭服务器已经配置好了 IPv6 远程穿透 - IPv6 DDNS,域名是 home.example.com,解析到 IPv6 地址。但在外出时会遇到:

  • 使用移动数据访问时无法连接(仅支持 IPv4)
  • 在公司内网中无法访问(企业网络未启用 IPv6)
  • 分享给朋友时,对方可能无法访问

解决方案概览

IPv6 转 IPv4 的核心思路是:在中间部署一个 同时支持 IPv4 和 IPv6 的代理服务器,用户通过 IPv4 访问代理,代理再通过 IPv6 访问你的家庭服务器。

graph LR
    A[IPv4/IPv6 用户]--IPv4/IPv6--> B[代理服务器]
    B--IPv6--> C[家庭服务器]
        style B fill:#ff9999

仔细观察这个结构,会发现这正是目前网上流行的 Cloudflare CDN 方案(代理服务器为 CDN 边缘节点)。然而在国内使用 Cloudflare CDN 访问速度较慢、延迟较高(除非动态更新 Cloudflare 节点)。

基于这个原理,只需将 代理服务器 替换为国内云厂商 CDN 即可解决速度问题,当然需要一定成本。不过仍然存在一个问题:运营商的 IPv6 地址会动态变化,因此需要动态更新 CDN 回源节点。

D-NET 介绍

基于上述问题,陈大剩创建一个开源项目 D-NET 。D-NET 是一款轻量级动态网络管理工具,可将动态公网 IP 转为 IPv4/IPv6 双栈访问,后续还会集成 DDNS、FRP 等功能。

D-NET 准备工作

  • 域名一个(有无备案均可,有备案更好)
  • 云厂商账号一个(阿里云、百度智能云)

D-NET 安装

打开 D-NET Releases 页面,选择合适的架构下载安装包并解压,这里以 macOS ARM 版本为例。

根据自身操作系统选择对应的架构版本。

选择架构

下载完成后解压安装包。

解压缩

在终端中执行 sudo ./dnet -s install 命令完成安装。

安装

D-NET 配置

安装完成后,浏览器访问 http://127.0.0.1:9877 进入 Web 管理页面,首次登录时设置管理员账号密码。

登入 Web 管理页面

云厂商选择说明

由于仅有 阿里云 CDN 全球区域可使用未备案域名,因此:

  • 域名未备案:必须选择阿里云
  • 域名已备案:可自由选择阿里云或百度智能云

准备远程访问的 Web 服务

首先需要确保目标服务能够通过 IPv6 访问。这里以博客为例进行演示:

博客 IPv6 访问测试

适用范围

本方案不仅限于博客,任何支持 IPv6 访问的 Web 服务均可使用,例如:

  • 群晖 NAS(DSM)
  • 宝塔面板
  • Nginx 网站
  • Home Assistant
  • 其他 Web 应用

创建云厂商 AccessKey

根据选择的云厂商,在对应控制台创建 AccessKey,用于 D-NET 访问云厂商 API。

进入 百度智能云控制台 创建 AccessKey。

百度智能云创建 AccessKey

进入 阿里云控制台 创建 AccessKey。

阿里云创建 AccessKey

域名已备案(推荐百度智能云)

如果域名已备案,建议选择百度智能云 CDN。百度智能云 CDN 按流量计费,18 元人民币可购买 100GB 流量资源包,有效期一年,性价比较高。

登录百度智能云 CDN 控制台,创建新的加速域名。

创建加速域名

填写加速域名和基本配置信息。

填写基本配置

这一步需填写真实的源站信息:IPv6 地址、端口。

填写源站信息

根据网站类型设置缓存时间:

  • 动态网站:缓存时间设置为 0(全部回源)
  • 静态网站:缓存时间设置为 30 分钟或更长

缓存设置

配置完成后,复制 CDN 提供的 CNAME 地址。

完成配置

无需手动在 DNS 服务商处添加记录——D-NET DDNS 的 CNAME 模式会自动将域名指向上一步复制的 CDN CNAME 地址,参考 DDNS - CNAME 解析 完成配置。 CNAME 解析

在 D-NET Web 管理页面中,打开 DCDN 开关,填写云厂商 AccessKey 信息。

配置 D-NET DCDN 信息

配置完成后,查看 D-NET 日志确认是否成功同步到云厂商。由于同步时间默认为 5 分钟,最长可能需要等待 5 分钟。

查看 D-NET 日志

完成上述步骤后,通过配置的域名(例如 blog.a22t.com)即可成功访问服务。

成功访问服务

域名未备案(使用阿里云全球加速)

如果域名未备案,只能使用 阿里云 CDN 全球区域进行加速。这种方案的缺点是:访问速度可能较慢,费用相对较高。

配置阿里云 CDN

登录阿里云 CDN 控制台,创建新的加速域名。

创建加速域名

填写加速域名和基本配置信息。

重要

未备案的域名加速区域必须选择 全球(Global)。

填写基本配置

由于阿里云 CDN 不允许使用单独的 IPv6 源站,需要先配置一个备用域名源站。

  • 源站地址:随机填写一个域名(如 www.baidu.com)
  • 优先级:选择 备
  • 权重值:填写 1

配置备用源站

添加真实的 IPv6 源站信息:

  • 源站地址:填写实际的 IPv6 地址
  • 端口:根据实际服务端口填写
  • 权重值:填写 100

配置 IPv6 源站

根据网站类型设置缓存时间:

  • 动态网站:缓存时间设置为 0(全部回源)
  • 静态网站:缓存时间设置为 30 分钟或更长

配置缓存规则

其他可选配置暂时跳过,后续可根据需要调整。

跳过配置

配置完成后,复制 CDN 提供的 CNAME 地址。

获取 CNAME

无需手动在 DNS 服务商处添加记录——D-NET DDNS 的 CNAME 模式会自动将域名指向上一步复制的 CDN CNAME 地址,参考 DDNS - CNAME 解析 完成配置。 CNAME 解析

等待 CDN 配置完成

CDN 配置提交后,需要等待阿里云完成配置,直至状态显示为 已配置。

等待配置完成

配置 D-NET

配置完成后,在 D-NET Web 管理页面中填写相关信息:

  1. 打开 DCDN 开关
  2. 填写云厂商 AccessKey 信息
  3. 配置源站信息

配置 D-NET

重要提示

由于阿里云 CDN 不允许使用单独的 IPv6 源站,这里的源站地址需要填写步骤 3 中配置的备用域名源站(如 www.baidu.com)。

优化 CDN 配置

基础配置完成后,还需要进行以下优化,确保 IPv6 流量正常回源。

进入阿里云 CDN 控制台,选择对应的加速域名(如 blog.2025u.cyou),进入 【管理】 → 【回源配置】 → 【IPv6 回源】**。

必须操作

如果源站是 IPv6,必须启用 IPv6 回源,否则无法正常访问。

启用 IPv6 回源

在同一页面中,进入 【基本配置】 → 【IPv6 开关】,【开启 IPv6 访问支持】。

启用 IPv6 访问

验证访问

完成所有配置后,通过配置的域名(例如 blog.2025u.cyou)访问服务,验证是否能够正常访问。

成功访问服务

同时可以查看 D-NET 日志,确认是否成功同步到云厂商。由于同步间隔默认为 5 分钟,最长可能需要等待 5 分钟才能看到同步记录。

查看 D-NET 日志

总结

通过本文介绍的 IPv6 转 IPv4 方案,可以有效解决 IPv6 兼容性问题,但会存在一定的费用,建议配合 DDNS 使用,在 IPv6 客户端下访问直接访问 IPv6 的网站,而在客户端仅有 IPv4 协议下使用 DCND 方案访问 IPv6 的网站。

方案选择

场景 推荐方案 成本 速度
域名已备案 百度智能云 CDN 低 快
域名未备案 阿里云 CDN 全球加速 中 中
技术能力强 自建 Nginx 代理 + VPS 中 取决于 VPS

最佳实践

  1. 定期检查:定期查看 D-NET 日志,确保同步正常
  2. 备份配置:保存 AccessKey 等重要配置信息
  3. 监控告警:配置服务可用性监控
  4. 合理缓存:根据业务特点设置缓存策略

扩展应用

除了 Web 服务,本方案还可以用于:

  • NAS 远程访问
  • 家庭监控系统
  • 个人博客/网站
  • 开发测试环境

通过合理配置 IPv6 转 IPv4,可以让家庭服务器在各种网络环境下都能稳定访问,充分发挥 IPv6 的优势,同时避免兼容性带来的困扰。


创建日期: 2025年7月22日 最后更新: 2026年3月26日