个人爱好

飞牛NAS无公网IPv4,仅有IPv6 → 实现双栈公网域名访问完整教程

odmin · 10月31日 · 2026年 16次已读

你的情况:家里宽带只有公网IPv6,没有公网IPv4。目标是:

  • 用域名访问家里的服务
  • IPv6 环境下直连
  • IPv4 环境下也能访问(这是难点)

核心思路:IPv6 直连 + IPv4 通过中转/隧道/代理回源。下面给出几种可行方案,从易到难。


方案总览

方案原理IPv4访问成本难度
A. Cloudflare 代理(橙云)CF 同时有 v4/v6,回源走 v6✅免费⭐
B. Cloudflare Tunnel内网穿透,无需公网IP✅免费⭐⭐
C. VPS + 反向代理/WireGuard有v4的VPS做入口,回源走v6✅VPS费用⭐⭐⭐
D. 免费隧道(frp/ngrok等)中转✅免费/低⭐⭐
E. 纯 DNS AAAA + 仅v6只有v6能访问❌免费⭐

推荐:方案A(Cloudflare代理),最省事,免费,且能同时解决v4/v6。


前置条件

  1. 家里设备(NAS/软路由/服务器)已获得公网IPv6地址(240e: / 2408: / 2409: 等开头)。
  2. 光猫/路由器已放行IPv6入站(关闭IPv6防火墙或做放行规则)。
  3. 有一个域名,并能修改DNS(推荐托管到Cloudflare)。
  4. 家里IPv6地址会变 → 需要 DDNS 更新AAAA记录。

第一步:确认家里IPv6可被外网访问

  1. 在家里的服务器上查IPv6: # Linux ip -6 addr show scope global # 或 curl -6 ifconfig.co记下形如 240e:xxxx:xxxx::1234 的地址。
  2. 路由器/光猫设置:
    • 关闭“IPv6防火墙”或添加放行规则(允许入站到该设备端口)。
    • 确保是公网IPv6(不是 fe80: 链路本地,也不是 fd00: 唯一本地)。
  3. 用手机4G/5G(走IPv6)测试: http://[240e:xxxx:xxxx::1234]:端口能打开说明v6直连OK。

注意:很多家庭宽带IPv6前缀会变化(PD租约),所以需要DDNS。


第二步:DDNS 更新 AAAA 记录

因为只有IPv6,域名需要一条 AAAA 记录指向家里的IPv6。

方法1:路由器自带DDNS

部分路由器(OpenWrt、爱快、华硕)支持IPv6 DDNS,直接填Cloudflare API即可。

方法2:服务器上用脚本(推荐 ddns-go)

ddsn-go 支持IPv6、Cloudflare、阿里云等。

Docker 部署:

docker run -d --name ddns-go --restart=always --net=host \
  -v /opt/ddns-go:/root jeessy/ddns-go

访问 http://服务器IP:9876,配置:

  • DNS服务商:Cloudflare
  • 域名:home.example.com
  • 记录类型:AAAA
  • 获取IP方式:通过接口获取IPv6 / 网卡获取
  • 填 Cloudflare API Token

保存后,home.example.com 的 AAAA 会随家里IPv6变化自动更新。


第三步:让 IPv4 也能访问 —— 方案A:Cloudflare 代理(推荐)

Cloudflare 的 CDN 节点同时有IPv4和IPv6。当你把域名解析设为“橙色云”(Proxied),并让CF回源到你的IPv6地址时:

  • 访客用IPv4 → 连CF的v4节点 → CF回源走v6到你家 ✅
  • 访客用IPv6 → 连CF的v6节点 → CF回源走v6 ✅

操作步骤

  1. 域名托管到 Cloudflare(改NS)。
  2. 添加 AAAA 记录:
    • 类型:AAAA
    • 名称:home
    • 内容:家里IPv6(DDNS会自动更新)
    • 代理状态:橙色云(Proxied) ← 关键
  3. Cloudflare 回源设置:
    • CF默认回源会优先用记录的地址类型。AAAA记录 → CF通过IPv6回源。✅
    • 确保 SSL/TLS 模式设为 Full 或 Full (Strict)(如果你家里有证书)或 Flexible(家里是HTTP)。
  4. 源站端口:
    • CF代理只支持特定端口(HTTP 80/8080/8880/2052/2082/2086/2095,HTTPS 443/2053/2083/2087/2096/8443)。
    • 所以家里服务要么跑在这些端口,要么用 Cloudflare Origin Rules 改回源端口(免费版支持)。
    • 或者用 Cloudflare Tunnel(见方案B)就没端口限制。
  5. 测试:
    • 用 IPv4 网络访问 https://home.example.com → 应能通。
    • 用 IPv6 访问同样通。

⚠️ 注意:CF 代理会隐藏真实IP,但国内访问CF可能慢/不稳。如果主要在国内用,考虑方案C。


方案B:Cloudflare Tunnel(无需公网IP,最稳)

如果IPv6也不稳定或不想暴露,用 CF Tunnel:

  • 家里跑 cloudflared,主动连CF,建立隧道。
  • CF把 home.example.com 的流量通过隧道送到家里。
  • IPv4/IPv6访客都能访问,且不需要家里有公网IP、不需要开端口。

步骤简述:

# 安装 cloudflared 后
cloudflared tunnel login
cloudflared tunnel create home
cloudflared tunnel route dns home home.example.com
cloudflared tunnel run home

配置文件 config.yml 指定本地服务端口。CF会自动加CNAME(Proxied),v4/v6都通。

优点:最省心,不怕IPv6变动,不怕防火墙。
缺点:依赖CF,国内速度一般。


方案C:有公网IPv4的VPS做入口(国内访问推荐)

如果你有国内VPS(带公网IPv4),可以:

  • 域名 A 记录 → VPS IPv4
  • 域名 AAAA 记录 → 家里 IPv6(可选,v6直连)
  • VPS 上跑 Nginx/HAProxy,把请求反代到家里的IPv6地址

Nginx 配置示例:

server {
    listen 80;
    server_name home.example.com;

    location / {
        proxy_pass http://[240e:xxxx:xxxx::1234]:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
  • IPv4访客 → VPS → 走v6回源家里 ✅
  • VPS需支持IPv6出站(国内VPS一般有)。

更安全的做法:VPS和家里建 WireGuard 隧道,VPS反代到隧道内网IP,避免家里IPv6直接暴露。


方案D:免费/低成本隧道

  • frp:需要一台有公网IPv4的服务器(frps),家里跑frpc。v4/v6访客都走frps。
  • ngrok / localtunnel / cpolar:快速临时用,免费版有限制。
  • Tailscale + Funnel:Tailscale Funnel 可把服务暴露到公网(有v4/v6),免费额度。

DNS 记录最终形态(方案A为例)

类型名称内容代理
AAAAhome家里IPv6(DDNS)🟠 Proxied

只有AAAA+橙云,CF就会同时用v4/v6对外服务。不需要A记录。

如果想让v6直连(不走CF)、v4走CF,可以:

  • AAAA → 家里IPv6,灰色云(DNS only) → v6访客直连
  • 另加一条 AAAA 或 CNAME 橙云给v4?不行,同一名字冲突。
  • 更常见:分域名,如 v6.home.example.com(灰云AAAA直连)和 home.example.com(橙云代理)。

关键排错清单

  1. IPv6防火墙:光猫/路由器默认拦入站,必须放行。
  2. IPv6地址是公网段:240e/2408/2409/2400 等才是公网;fe80、fd00 不是。
  3. DDNS没更新:AAAA 指向旧地址 → 访问失败。查 ddns-go 日志。
  4. CF SSL模式:Flexible 时源站必须是HTTP;Full 时源站要有证书或用CF Origin Cert。
  5. CF端口限制:非标准端口用 Origin Rules 或 Tunnel。
  6. 运营商封80/443:家宽常封,用高位端口 + CF Origin Rules / Tunnel。
  7. 测试方法:dig AAAA home.example.com、curl -4、curl -6 分别验证。

推荐组合(最省事)

域名托管 Cloudflare
  └─ ddns-go 自动更新 AAAA(家里IPv6)
  └─ AAAA 记录设为 Proxied(橙云)
  └─ SSL/TLS = Full,源站用 CF Origin Certificate
  └─ 家里服务跑 8443 端口(CF支持)或直接用 Cloudflare Tunnel

这样:IPv4 和 IPv6 访客都能通过 https://home.example.com 访问,无需公网IPv4,免费。