目 录CONTENT

文章目录

利用 Cloudflare 代理家宽 IPv6 实现双栈访问详解

Administrator
2025-04-22 / 0 评论 / 0 点赞 / 12 阅读 / 0 字

本教程将详细介绍如何利用 Cloudflare 提供的强大功能,实现通过家庭宽带的 IPv6 网络进行双栈访问。双栈访问意味着你可以同时使用 IPv4 和 IPv6 两种网络协议访问你的家庭服务,这在某些网络环境下非常有用,例如,当你的设备或网络提供商对 IPv6 的支持不够完善时。

第一步:准备工作

在开始之前,我们需要做一些准备工作,以确保后续步骤能够顺利进行。

  1. 安装并配置 DDNS-Go (或 Lucky):

  • DDNS(动态域名解析)服务是实现从外部网络访问家庭网络的关键。由于家庭宽带的 IP 地址通常是动态分配的,这意味着 IP 地址会经常变化。DDNS 服务可以将一个固定的域名指向你动态变化的 IP 地址,从而允许你通过域名而不是 IP 地址来访问你的家庭服务。

ddns-golucky 都是流行的 DDNS 客户端,它们可以自动将你的域名更新到最新的 IP 地址。你可以选择其中任何一个。

  • 推荐使用 Lucky: 在这里,特别推荐使用 Lucky。

  • 配置泛域名和域名解析:

    • 建议同时配置泛域名解析和域名解析。

    • 泛域名解析允许你使用任何子域名访问你的服务,而特定域名解析则将特定的子域名映射到特定的服务。

    • 虽然只进行一次解析可能也可以工作,但作者并没有进行充分的测试,因此推荐同时配置两种解析方式以确保稳定性。

  • 升级 Lucky (如果需要):

    • 如果你使用的是飞牛提供的 Lucky,请务必将其升级到最新版本。旧版本的 Lucky 可能存在兼容性问题,导致配置失败。

  1. Cloudflare 设置:

  • 登录你的 Cloudflare 账户,并找到你想要使用的域名。

启用 Cloudflare 代理:

  • 找到与你的域名关联的 "小云朵" 图标,并确保它是开启状态(橙色)。

  • 这个 "小云朵" 图标表示 Cloudflare 的代理服务是否启用。

  • 启用代理后,Cloudflare 将会缓存你的网站内容并提供其他安全和性能优化功能。

  • 重要: 启用 Cloudflare 代理是允许 IPv4 网络访问你的 IPv6 网络的关键步骤。

  • 故障排除: 如果你在完成设置后仍然无法通过 IPv4 网络访问你的 IPv6 服务,请等待约 5 分钟,然后检查你的 Cloudflare 配置文件是否存在任何错误。

第二步:安装 Cloudflared

Cloudflared 是 Cloudflare 提供的一个隧道工具,它可以安全地将你的本地服务暴露到公共互联网,而无需打开防火墙端口。

  1. 下载 Cloudflared:

  • 访问 Cloudflare 的 GitHub 仓库:https://github.com/cloudflare/cloudflared/releases/tag/2025.4.0

  • 在下载页面,你会找到针对不同操作系统和架构的 Cloudflared 版本。

  • 选择与你的服务器操作系统和架构相匹配的版本进行下载。

  • 示例: 如果你的服务器是 x86_x64 架构的 Linux 系统,你应该下载 cloudflared-linux-amd64.deb 文件。

  1. 安装 Cloudflared:

  • 下载完成后,使用适当的包管理器安装 Cloudflared。

  • Debian/Ubuntu 系统: 如果你下载的是 .deb 文件,可以使用以下命令进行安装:

    • sudo dpkg -i cloudflared-linux-amd64.deb

    • 请注意,你需要将 cloudflared-linux-amd64.deb 替换为你实际下载的文件名。

第三步:配置 Cloudflared 隧道

现在,我们需要配置 Cloudflared 隧道,使其能够将你的本地服务转发到 Cloudflare。

  1. 登录 Cloudflare 授权:

  • 在你的服务器上,运行 cloudflared login 命令。

  • 这个命令会在终端输出一个 URL 链接。

  • 复制这个链接,并在你的浏览器中打开它。

  • 你将被重定向到 Cloudflare 的登录页面。

  • 使用你的 Cloudflare 账户登录,并选择你之前在 Lucky 中配置的域名(例如,xiao89.site)。

  • 点击 "Authorize" (授权)按钮,允许 Cloudflared 为你的域名创建隧道。

  • 授权成功后,你将看到一个页面显示 "Successfully authenticated" 或类似的成功消息。

  1. 创建隧道:

  • 回到你的服务器终端,运行以下命令来创建一个新的 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 连接到你的隧道。

  1. 设置隧道路由:

  • 现在,我们需要告诉 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)

    • ... (你可以根据需要添加更多路由)

  1. 创建 Cloudflared 配置文件:

  • 为了方便管理和自动化,我们需要创建一个 Cloudflared 配置文件。

  • 创建目录: 首先,使用以下命令创建一个用于存放配置文件的目录:

    • sudo mkdir -p /etc/cloudflared

  • 创建文件: 然后,使用以下命令创建一个名为 config.yml 的文件:

    • sudo touch /etc/cloudflared/config.yml

  • 编辑文件: 现在,使用你喜欢的文本编辑器(例如,nanovim)打开 /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"。

    • 重要: 请务必根据你的实际情况修改 tunnelcredentials-filehostnameservice 的值。

第四步:启动 Cloudflared 隧道

配置完成后,我们需要启动 Cloudflared 隧道,使其开始工作。

  1. 运行隧道:

  • 使用以下命令启动 Cloudflared 隧道:

    • cloudflared tunnel run my-tunnel

    • my-tunnel 是你在创建隧道时指定的名称。

  • Cloudflared 将会读取你的配置文件,并建立与 Cloudflare 的连接。

  • 如果一切配置正确,你将会在终端看到一些日志信息,表明隧道已经成功启动。

  1. 访问你的服务:

  • 现在,你可以使用你配置的子域名来访问你的本地服务了。

  • 示例: 如果你配置了 home.xiao89.site,你可以在浏览器中输入 http://home.xiao89.site 来访问运行在 http://192.168.2.2:5666 的服务。

  • Cloudflare 自动 SSL 证书:

    • 重要: Cloudflare 会自动为你的子域名配置 SSL 证书,这意味着你可以通过 HTTPS 安全地访问你的服务,而无需手动配置证书。

第五步:设置开机自启动

为了确保服务器重启后 Cloudflared 隧道能够自动启动,我们需要将其设置为开机自启动服务。

  1. 设置开机启动:

  • 使用以下命令将 Cloudflared 设置为系统服务并启用开机自启动:

    • sudo cloudflared service install

  1. 检查服务状态:

  • 使用以下命令检查 Cloudflared 服务的状态:

    • sudo systemctl status cloudflared

  • 如果一切正常,你将会看到包含 Active: active (running) 的输出,这表示 Cloudflared 服务正在运行。

重要提示:

  • 本地服务避免 HTTPS:

  • 强烈建议: 不要在你的本地服务上启用 HTTPS 访问。

  • 根据作者的测试,这可能会导致 Cloudflared 代理失败。

  • 由于 Cloudflare 已经提供了 SSL 证书,因此没有必要在本地服务上再配置 HTTPS。

希望这个更详细的版本能够帮助你更好地理解和完成配置。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区