对于许多家庭服务器(HomeLab)玩家来说,在拥有动态公网 IPv6 的前提下,利用 DDNS 和自定义端口对外提供 Web 服务并非难事。然而,在实际使用中,我们往往面临两个棘手的“最后一公里”问题:
在探索解决方案的过程中,我曾尝试过多种方案。最常见的是使用 端口映射(如 fatedier/frp)。这确实解决了连通性问题,但为了维持服务,需要租赁一台公网 VPS 进行流量中转。这不仅带来了带宽瓶颈和额外成本,且中转服务器本身也可能成为攻击跳板。
基于“低成本、高安全、易维护”的原则,我最终锁定了 腾讯云 EdgeOne 方案。
EdgeOne 是腾讯云推出的一站式边缘安全加速平台。简单来说,可以将其视为一个“同时也支持安全防护的 CDN”。与直接暴露 IP 或使用 FRP 相比,EdgeOne 完美契合了家庭宽带建站的需求。
以下是主流方案的对比:
| 特性 | FRP 内网穿透 | Cloudflare CDN | 腾讯云 EdgeOne |
|---|---|---|---|
| 访问连通性 | 取决于 VPS 带宽 | 大陆地区访问不稳定 | 国内节点优化,低延迟 |
| IPv4/v6 双栈 | 需 VPS 支持 | 支持 | 完美支持(IPv4 入/IPv6 回) |
| 源站安全性 | 较差 (端口暴露) | 好 (隐藏 IP) | 极高 (隐藏 IP + IPSet 白名单) |
| 配置复杂度 | 高 (需维护 VPS) | 中 | 低 (域名回源 + PVE统一防护) |
| 成本 | VPS 租赁费 | 免费版功能受限 | 个人版价格亲民/有免费额度 |
EdgeOne 的核心优势在于:
整个请求的流转过程非常清晰。我们不再需要复杂的脚本来监测 IP 变动,而是利用标准的 DDNS 工具维护一条“源站域名”解析记录,EdgeOne 负责从这个域名获取最新的 IPv6 地址进行回源。
Error parsing Mermaid diagram!
Parse error on line 10:
... LXC[LXC/VM (Web服务)]
-----------------------^
Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'PS'这里以 Proxmox VE 8.x(宿主机或 LXC 容器中运行 Docker)环境为例,演示如何搭建这套系统。
假设你在 PVE 中运行了一个 LXC 容器(或 VM),里面部署了你的 Web 服务(例如 Halo 博客、Nextcloud 等)。
为了应对家庭宽带 IPv6 地址的动态变化,我们不再手写脚本,而是使用成熟的开源工具 ddns-go。
ddns-go。ddns-go 后台配置腾讯云 DNSPod(或其他服务商)。origin.yoursite.com)。origin.yoursite.com 始终解析到你 Web 服务当前的 IPv6 地址(AAAA 记录)。登录 腾讯云 EdgeOne 控制台,新建或选择已有站点。
blog.yoursite.com)。origin.yoursite.com)。IPv6 或 协议跟随。60023)。这是 PVE 环境下的高光时刻。大多数人习惯在 OpenWrt 或硬路由上做防火墙,其实直接在 PVE 层做防护更加精细,且不受路由设备更换影响。
在 EdgeOne 控制台侧边栏找到 “源站防护” 或 “安全防护” 模块,开启功能并复制 EdgeOne 回源节点 IP 列表。
edgeone-ips。
(示意图)
Yes(启用)。IN (入站)ACCEPT (允许)Web 相关或者留空。TCP+edgeone-ips。60023。Any 来源访问 60023 的规则。效果:现在,只有来自 EdgeOne 节点列表的流量能通过防火墙进入你的容器。即便有人扫描到了你的公网 IPv6 地址,只要他不是通过 EdgeOne 来的,都会被 PVE 直接丢弃。
方案经过调整,在 PVE 环境下实施显得更加专业和规整。
通过这套组合拳,我们用极低的成本(不仅是金钱成本,还有维护精力的成本),在家庭数据中心构建了一套媲美企业级防护的公网服务架构。