本教程将详细介绍如何利用 Cloudflare 提供的强大功能,实现通过家庭宽带的 IPv6 网络进行双栈访问。双栈访问意味着你可以同时使用 IPv4 和 IPv6 两种网络协议访问你的家庭服务,这在某些网络环境下非常有用,例如,当你的设备或网络提供商对 IPv6 的支持不够完善时。
第一步:准备工作
在开始之前,我们需要做一些准备工作,以确保后续步骤能够顺利进行。
安装并配置 DDNS-Go (或 Lucky):
DDNS(动态域名解析)服务是实现从外部网络访问家庭网络的关键。由于家庭宽带的 IP 地址通常是动态分配的,这意味着 IP 地址会经常变化。DDNS 服务可以将一个固定的域名指向你动态变化的 IP 地址,从而允许你通过域名而不是 IP 地址来访问你的家庭服务。
ddns-go
和 lucky
都是流行的 DDNS 客户端,它们可以自动将你的域名更新到最新的 IP 地址。你可以选择其中任何一个。
推荐使用 Lucky: 在这里,特别推荐使用 Lucky。
配置泛域名和域名解析:
建议同时配置泛域名解析和域名解析。
泛域名解析允许你使用任何子域名访问你的服务,而特定域名解析则将特定的子域名映射到特定的服务。
虽然只进行一次解析可能也可以工作,但作者并没有进行充分的测试,因此推荐同时配置两种解析方式以确保稳定性。
升级 Lucky (如果需要):
如果你使用的是飞牛提供的 Lucky,请务必将其升级到最新版本。旧版本的 Lucky 可能存在兼容性问题,导致配置失败。
Cloudflare 设置:
登录你的 Cloudflare 账户,并找到你想要使用的域名。
启用 Cloudflare 代理:
找到与你的域名关联的 "小云朵" 图标,并确保它是开启状态(橙色)。
这个 "小云朵" 图标表示 Cloudflare 的代理服务是否启用。
启用代理后,Cloudflare 将会缓存你的网站内容并提供其他安全和性能优化功能。
重要: 启用 Cloudflare 代理是允许 IPv4 网络访问你的 IPv6 网络的关键步骤。
故障排除: 如果你在完成设置后仍然无法通过 IPv4 网络访问你的 IPv6 服务,请等待约 5 分钟,然后检查你的 Cloudflare 配置文件是否存在任何错误。
第二步:安装 Cloudflared
Cloudflared
是 Cloudflare 提供的一个隧道工具,它可以安全地将你的本地服务暴露到公共互联网,而无需打开防火墙端口。
下载 Cloudflared:
访问 Cloudflare 的 GitHub 仓库:https://github.com/cloudflare/cloudflared/releases/tag/2025.4.0
在下载页面,你会找到针对不同操作系统和架构的 Cloudflared 版本。
选择与你的服务器操作系统和架构相匹配的版本进行下载。
示例: 如果你的服务器是 x86_x64 架构的 Linux 系统,你应该下载
cloudflared-linux-amd64.deb
文件。
安装 Cloudflared:
下载完成后,使用适当的包管理器安装 Cloudflared。
Debian/Ubuntu 系统: 如果你下载的是
.deb
文件,可以使用以下命令进行安装:sudo dpkg -i cloudflared-linux-amd64.deb
请注意,你需要将
cloudflared-linux-amd64.deb
替换为你实际下载的文件名。
第三步:配置 Cloudflared 隧道
现在,我们需要配置 Cloudflared 隧道,使其能够将你的本地服务转发到 Cloudflare。
登录 Cloudflare 授权:
在你的服务器上,运行
cloudflared login
命令。这个命令会在终端输出一个 URL 链接。
复制这个链接,并在你的浏览器中打开它。
你将被重定向到 Cloudflare 的登录页面。
使用你的 Cloudflare 账户登录,并选择你之前在 Lucky 中配置的域名(例如,
xiao89.site
)。点击 "Authorize" (授权)按钮,允许 Cloudflared 为你的域名创建隧道。
授权成功后,你将看到一个页面显示 "Successfully authenticated" 或类似的成功消息。
创建隧道:
回到你的服务器终端,运行以下命令来创建一个新的 Cloudflared 隧道:
cloudflared tunnel create my-tunnel
my-tunnel
是你为这个隧道指定的名称,你可以根据自己的喜好修改它。
这个命令会输出一个 Tunnel ID (隧道 ID),这是一个唯一的标识符,用于识别你的隧道。
重要: 请务必妥善保存这个 Tunnel ID,因为在后续的配置中会用到它。
同时,Cloudflared 会在 /root/.cloudflared/
目录下生成一个以 Tunnel ID 命名的 JSON 文件(例如,/root/.cloudflared/eaa133ff-c41d-41b3-86bc-4639c16af6b8.json
)。
重要: 这个 JSON 文件包含了隧道的凭据,也需要妥善保存,因为它允许 Cloudflared 连接到你的隧道。
设置隧道路由:
现在,我们需要告诉 Cloudflare 如何将流量路由到你的本地服务。
使用
cloudflared tunnel route dns <隧道名称> <子域名>
命令来设置路由。示例: 假设你的本地服务运行在
http://localhost:5000
,并且你希望使用home.xiao89.site
这个子域名来访问它,你可以运行以下命令:cloudflared tunnel route dns my-tunnel home.xiao89.site
这条命令告诉 Cloudflare,所有发送到
home.xiao89.site
的流量都应该通过my-tunnel
这个隧道转发到你的本地服务。
使用子域名的重要性:
必须为每个本地服务分配一个唯一的子域名。
这是因为 Cloudflare 需要根据子域名来确定将流量转发到哪个服务。
代理多个网站:
如果你需要在同一个服务器上代理多个网站或服务,你可以为每个网站添加一条
cloudflared tunnel route dns
命令,并使用不同的子域名。示例:
cloudflared tunnel route dns my-tunnel nas.xiao89.site
(用于 NAS 设备)cloudflared tunnel route dns my-tunnel dify.xiao89.site
(用于 Dify 应用)cloudflared tunnel route dns my-tunnel qb.xiao89.site
(用于 qBittorrent)...
(你可以根据需要添加更多路由)
创建 Cloudflared 配置文件:
为了方便管理和自动化,我们需要创建一个 Cloudflared 配置文件。
创建目录: 首先,使用以下命令创建一个用于存放配置文件的目录:
sudo mkdir -p /etc/cloudflared
创建文件: 然后,使用以下命令创建一个名为
config.yml
的文件:sudo touch /etc/cloudflared/config.yml
编辑文件: 现在,使用你喜欢的文本编辑器(例如,
nano
或vim
)打开/etc/cloudflared/config.yml
文件,并将以下内容粘贴到文件中:```YAML tunnel: my-tunnel # 替换为你的隧道名称 credentials-file: /root/.cloudflared/eaa133ff-c41d-41b3-86bc-4639c16af6b8.json # 替换为你的凭据文件路径 ingress:
hostname: home.xiao89.site # 替换为你的第一个子域名 service: http://192.168.2.2:5666 # 替换为你的本地 IP 地址和端口 (第一个服务)
hostname: nas.xiao89.site # 替换为你的第二个子域名 service: http://192.168.2.3:8080 # 替换为你的本地 IP 地址和端口 (第二个服务)
service: http_status:404 # 默认规则,处理所有未匹配的请求,返回 404 错误 ```
tunnel
: 指定要使用的隧道的名称。credentials-file
: 指定包含隧道凭据的 JSON 文件的路径。ingress
: 定义了如何将流量路由到你的本地服务。hostname
: 指定用于访问服务的子域名。service
: 指定本地服务的协议、IP 地址和端口。http_status: 404
: 这是一个特殊的service
配置,用于处理所有没有匹配到前面规则的请求。它会返回一个 HTTP 404 错误,表示 "Not Found"。重要: 请务必根据你的实际情况修改
tunnel
、credentials-file
、hostname
和service
的值。
第四步:启动 Cloudflared 隧道
配置完成后,我们需要启动 Cloudflared 隧道,使其开始工作。
运行隧道:
使用以下命令启动 Cloudflared 隧道:
cloudflared tunnel run my-tunnel
my-tunnel
是你在创建隧道时指定的名称。
Cloudflared 将会读取你的配置文件,并建立与 Cloudflare 的连接。
如果一切配置正确,你将会在终端看到一些日志信息,表明隧道已经成功启动。
访问你的服务:
现在,你可以使用你配置的子域名来访问你的本地服务了。
示例: 如果你配置了
home.xiao89.site
,你可以在浏览器中输入http://home.xiao89.site
来访问运行在http://192.168.2.2:5666
的服务。Cloudflare 自动 SSL 证书:
重要: Cloudflare 会自动为你的子域名配置 SSL 证书,这意味着你可以通过 HTTPS 安全地访问你的服务,而无需手动配置证书。
第五步:设置开机自启动
为了确保服务器重启后 Cloudflared 隧道能够自动启动,我们需要将其设置为开机自启动服务。
设置开机启动:
使用以下命令将 Cloudflared 设置为系统服务并启用开机自启动:
sudo cloudflared service install
检查服务状态:
使用以下命令检查 Cloudflared 服务的状态:
sudo systemctl status cloudflared
如果一切正常,你将会看到包含
Active: active (running)
的输出,这表示 Cloudflared 服务正在运行。
重要提示:
本地服务避免 HTTPS:
强烈建议: 不要在你的本地服务上启用 HTTPS 访问。
根据作者的测试,这可能会导致 Cloudflared 代理失败。
由于 Cloudflare 已经提供了 SSL 证书,因此没有必要在本地服务上再配置 HTTPS。
希望这个更详细的版本能够帮助你更好地理解和完成配置。
评论区