关联主题::
同级:: 2025-09-01_星期一
下一级::
背景
本地网络只有公网IPV6,通过DDNS直连速度是最快的,确定是无法使用公网ipv4访问;
可以使用cf Tunnel,cf双栈等技术实现域名访问nas走ipv4,但是肯定没有直连ipv6的速度快。所以也就有了A域名直连ipv6,B域名走ipv4访问家庭服务的方案。
只需要记住一个C域名地址就好了,访问C域名地址,会根据你的网络情况,自动选择使用ipv6 or ipv4
我的想法是,使用Cloudflare Worker来实现,根据客户端的 IP类型(IPv4 或 IPv6)来做跳转或代理。
cf Worker也可以绑定自定义域名,并实现优选ip快速访问。Cloudflare给pages和Worker优选域名
具体操作👇🏻
完全可以通过 Cloudflare Worker 来实现你想的“同一入口访问,自动选择 IPv6直连或 IPv4代理”。原理就是 Worker 根据客户端的 IP类型(IPv4 或 IPv6)来做跳转或代理。
1️⃣ 域名结构
nas.example.com
→ 入口域名(绑定 Worker)nas-ipv6.example.com
→ AAAA 记录直连 NAS IPv6(DNS only)nas-ipv4.example.com
→ A 记录 + Cloudflare Proxy(IPv4访问 NAS)
2️⃣ Worker 逻辑
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
// 获取客户端 IP
const clientIP = request.headers.get('CF-Connecting-IP')
// 简单判断 IPv6
const isIPv6 = clientIP && clientIP.includes(':')
const targetUrl = isIPv6
? 'https://nas-ipv6.example.com' // IPv6直连
: 'https://nas-ipv4.example.com' // IPv4通过CF代理
// 返回 302 跳转
return Response.redirect(targetUrl, 302)
}
工作原理:
- 用户访问
nas.example.com
- Worker 检测请求的 客户端 IP 类型
- 根据 IP 类型跳转到不同子域名
- IPv6 → 直连 NAS
- IPv4 → Cloudflare Proxy
3️⃣ 优点
- 同一入口访问,用户不用记不同子域名
- IPv6直连 + IPv4访问 都能支持
- 可以后续加缓存、重写路径、HTTPS 强制等规则
4️⃣ 注意事项
-
Worker 的跳转会产生一次 HTTP 302,如果想更平滑,可以写 反向代理 Worker,把内容直接返回,而不是跳转
-
IPv6直连子域名必须是 DNS only AAAA
-
IPv4子域名必须开启 Cloudflare Proxy
-
唯一缺点就是,无法仅适用一个域名搞定。