跳转至

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 访问你的家庭服务器。

Text Only
[IPv4/IPv6 用户] ----IPv4/IPv6----> [代理服务器] ----IPv6----> [家庭服务器]

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

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

D-NET 介绍

基于上述问题,陈大剩创建一个开源项目 D-NETD-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 服务商处添加 CNAME 记录,类型选择 CNAME,名称填写 blog(或其他子域名),记录值填写上一步复制的 CNAME。

设置 DNS

在 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 服务商处添加 CNAME 记录:

  • 类型:CNAME
  • 名称:子域名(如 blog
  • 记录值:上一步复制的 CNAME 地址

设置 DNS 解析

等待 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日 最后更新: 2025年11月25日