fscarmen

fscarmen

【科学新思路】👏反向回源之 Gost + Cloudflare Tunnel

相关资源#

项目地址:https://www.github.com/fscarmen/cfd_return

视频教程:https://youtu.be/X032LZkVZSs

Cloudflared 应用下载:https://github.com/cloudflare/cloudflared/releases

Cloudflare Tunnel Json 获取网:http://fscarmen.cloudflare.now.cc

gost v3 应用下载:https://github.com/go-gost/gost/releases

cfd 优选工具下载:https://github.com/fscarmen/cfd_return/tree/main/cfd

背景及方案简介#

在搭建网络服务的过程中,我们常常会用到 CDN(内容分发网络)来加速用户访问。传统的 CDN 服务,如通常是 “正向” 的,即用户访问 CDN 节点,CDN 节点再转发请求到远程的 VPS(虚拟专用服务器)。然而,这种方式需要 VPS 具有公网 IP,且可能会受到网络延迟和带宽限制的影响。

今天,我们要介绍的是一个基于 Cloudflare Tunnel 的 “反向回源” 工具,它能够让你的本地服务通过内网穿透的方式接入 Cloudflare 的 CDN 网络,实现全球加速访问。这个工具支持多种操作系统,包括 CentOS、Debian、Ubuntu、Alpine 和 OpenWRT,安装和使用都非常方便。

image

什么是 Cloudflare Tunnel?#

Cloudflare Tunnel 是 Cloudflare 提供的一种安全、可靠的内网穿透服务。它允许你将本地服务暴露给互联网,而无需开放任何公网端口或配置复杂的防火墙规则。通过 Cloudflare Tunnel,你的本地服务可以接入 Cloudflare 的全球网络,享受低延迟、高带宽的访问体验。

什么是 Gost?#

Gost (GO Simple Tunnel) v3 是用 GO 语言实现的安全隧道,支持多种网络协议和代理方式。它的设计目标是提供一个简单、灵活且高效的网络代理解决方案。Gost 可以用于构建各种网络拓扑结构,如正向代理、反向代理、隧道代理等。
项目地址:https://github.com/go-gost/gost
项目文档:https://gost.run/

反向回源的优势#

  • 突破公网入口限制:传统 CDN 需要 VPS 具有公网 IP,而本工具借助 Cloudflare Tunnel,实现了内网穿透,无需公网 IP 即可接入 CDN。
  • 自动优选 cloudflared 接入 IP: 使用热心网友 cf 中转 ip 群群主提供的玩具 cfd,从多个候选的 endpoint(包括 region1.v2.argotunnel.com、region2.v2.argotunnel.com、us-region1.v2.argotunnel.com、us-region2.v2.argotunnel.com 等)中,这些 endpoint 可能包含多个 IPv4 和 IPv6 地址,工具选出延迟最小的接入 IP。
  • 应用场景广泛:除了传统的 VPS 外,你还可以在各种容器、游戏平台甚至家庭网络中部署本工具,实现服务的全球加速访问。
  • 无需额外优选:由于 Cloudflare 的线路质量通常很好,因此使用本工具时无需进行额外的网络优选,即可享受稳定的访问速度。
  • 轻量运行:本工具近乎 0 依赖,不需要处理复杂的证书和配置问题,安装和使用都非常简单。

实现原理举例#

通过 json 或者 token 的方式,创建了 Cloudflare Tunnel (各自的创建方式看后文),比如隧道名为 gost.argo.com,回源到本地的端口是 20000

本地 OpenWRT 运行#

gost -D -L "relay+ws://:10000?path=/3b451552-e776-45c5-9b98-bde3ab99bf75&bind=true"

cloudflared tunnel --logfile /tmp/cloudflared.log --edge-ip-version auto --config /etc/cfd_return_server/tunnel.yml run

cfd -file /etc/cfd_return_server/ip

注意:上述三条命令在执行时均会占用前台终端,导致终端被阻塞无法执行其他操作。因此,如果你打算手动执行,建议利用 screen 或类似的终端复用工具。这样,你可以为每个进程分配一个独立的 screen 会话,使得这些进程能够在后台持续运行,同时你仍然可以自由地访问并控制它们,而不会影响到其他终端会话的使用。

命令解析
gost:

  • -D:这个标志启用调试模式,提供详细的日志以便排除故障。

  • -L "relay+ws://:10000?path=/3b451552-e776-45c5-9b98-bde3ab99bf75&bind=true":这指定了本地监听的地址和端口,使用 WebSocket 协议。path 参数用于指定 WebSocket 路径,Relay 服务并开启了 BIND 功能,采用 UDP-over-TCP 方式。

cloudflared:

  • --logfile /tmp/cloudflared.log:这个选项指定了保存输出日志的文件路径。

  • --edge-ip-version auto:这个选项自动选择连接的 IP 版本(IPv4 或 IPv6)。

  • --config /etc/cfd_return_server/tunnel.yml:这指定了隧道的配置文件路径。

  • run:这个命令启动隧道。

cfd:

  • -file:IP 地址文件名

远程 VPS 运行#

gost -D -L socks5://[::1]:20000

gost -D -L rtcp://:30000/[::1]:20000 -F "relay+ws://gost.argo.com:80?path=/3b451552-e776-45c5-9b98-bde3ab99bf7&host=gost.argo.com"

命令解析
gost:

  • -D:这个标志启用调试模式,提供详细的日志以便排除故障。

  • -L socks5://[::1]:20000:这指定了本地监听的地址和端口,使用 SOCKS5 协议。[::1] 是回环地址,20000 是端口号。

  • -L relay+rtcp://:30000/[::1]:20000:这指定了本地监听的地址和端口,使用 RTCP 协议。30000 是本地端口(如家里或者公司使用的软路由),[::1]:20000 是远程地址和端口 (VPS 端)。

  • -F "ws://gost.argo.com:80?path=/3b451552-e776-45c5-9b98-bde3ab99bf7&host=gost.argo.com":这指定了转发地址,使用 WebSocket 协议。path 和 host 参数用于指定 WebSocket 路径和主机。

项目一键脚本部署#

交互式安装#

服务端和客户端均使用

bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/cfd_return/main/cfd_return.sh)

快捷参数安装#

安装服务端

bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/cfd_return/main/cfd_return.sh) \
  -s \                      # 安装服务端
  -p server-origin-port \   # 指定本地服务的端口
  -d your-domain.com \      # 指定 Cloudflare Tunnel 的域名
  -w your-ws-path \         # 指定 WebSocket 路径(用于与 Cloudflare Tunnel 通信)
  -t 4 \                    # 只优选 IPv4 endpoint
  -a 'your-cloudflare-auth' # 指定 Cloudflare Json 或者 Token 认证信息,注意需要有单引号

客户端安装

bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/cfd_return/main/cfd_return.sh) \
  -c \                    # 安装服务端
  -r remote-socks5-port \ # 指定映射到服务端的 SOCKS5 端口
  -d your-domain.com \    # 指定 Cloudflare Tunnel 的域名
  -w your-ws-path         # 指定 WebSocket 路径(用于与 Cloudflare Tunnel 通信)

卸载方法

bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/cfd_return/main/cfd_return.sh) -u

更多参数请参照项目 README.md: https://www.github.com/fscarmen/cfd_return

Cloudflare Tunnel Json 的获取#

用户可以通过 Cloudflare Json 生成网轻松获取: https://fscarmen.cloudflare.now.cc

image

Cloudflare Tunnel Token 的获取#

image
image
image
image
image

部署运行截图#

服务端: Json 方式#

  • 部署在软路由
    image

服务端: Token 方式#

  • 部署在软路由
    image

客户端(VPS)#

  • 部署在 VPS
    image

应用设置#

  • image

参考内容#

Gost v3 转发链: https://gost.run/tutorials/port-forwarding/#_5

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。