Skip to content
返回

部署 Cloudflare Argo Tunnel 实现零成本内网穿透

Published:  at  10:25

众所周知,国内的运营商早在十多年前便封锁了家用宽带的 80、443 等端口,因此使用家宽建站需要改用其他端口。这样一来,用户在访问自建网络服务时就必须带端口号访问,不仅会使 URL 繁琐难看,而且有暴露源站引来攻击的风险。使用 Frp 等传统的内网穿透服务是常用的解决方案,但由于政策原因,国内的内网穿透服务只能绑定备案过的域名,况且长期购买稳定的内网穿透服务会是一笔不小的开支。此时,老牌云服务商 Cloudflare 提供的 Argo Tunnel 内网穿透服务就不失为一个好的选择。

本文部分内容参考了 Hajeekn杰森 两位大佬的文章,在此表达感谢。

优点

缺点

准备

流程

安装Cloudflared

用于运行 Argo Tunnel 服务的 Cloudflared 开源于 Github,可在 Releases 处找到对应平台的二进制文件。

Linux 下使用以下命令来安装 Cloudflared:

curl -LO https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
dpkg -i cloudflared-linux-amd64.deb

登录 Cloudflared

cloudflared tunnel login

执行命令后会显示一个 URL,用浏览器打开,登录 Cloudflare 后选择用于内网穿透的域名。

成功后会自动生成证书,存放于~/cloudflared/cert.pem中。

新建隧道

下方命令里的 为隧道名称,可以随意起。

cloudflared tunnel create <Tunnel-NAME>

成功后会显示隧道的 UUID,同时提示相关凭证已放置于~/.cloudflared/<Tunnel-UUID>.json中。

新建 Tunnel 对应的 DNS 记录

<SUBDOMAIN>填你想用来做内网穿透的域名,可以使用二级域名(example.com)或三级域名(www.example.com) 等。

cloudflared tunnel route dns <Tunnel-NAME> <SUBDOMAIN>

成功后会自动在选定域名下创建指向 Argo Tunnel 内网穿透服务器的 CNAME 记录。

建立配置文件

新建 Cloudflared 配置文件

vim ~/.cloudflared/config.yml

写入以下内容并保存

tunnel: <Tunnel-UUID>
credentials-file: /root/.cloudflared/<Tunnel-UUID>.json
protocol: h2mux
originRequest:
  connectTimeout: 30s
  noTLSVerify: false
ingress:
  - hostname: <SUBDOMAIN>
    service: http://localhost:80
  - service: http_status:404

受限于国内网络环境,无法使用默认的 quic 协议建立隧道,因此需指定协议为 http2h2mux,以及本地服务地址http://localhost:80

配置 Cloudflared 服务

新建 Cloudflared 服务文件

vim /etc/systemd/system/cloudflared.service

写入以下内容并保存

[Unit]
Description=cloudflared
After=network.target

[Service]
TimeoutStartSec=0
Type=notify
ExecStart=/usr/bin/cloudflared --loglevel debug --transport-loglevel warn --config /root/.cloudflared/config.yml tunnel run <Tunnel-NAME>
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

启动 Cloudflared 服务

systemctl enable cloudflared --now

稍等一两分钟后即可通过刚才配置好的域名 https://<SUBDOMAIN> 访问你的服务。

参考资料

  1. Cloudflare 隧道内网穿透搭建记录
  2. Cloudflare 的 Argo Tunnel 使用
  3. Cloudflare Docs
  4. Many services, one cloudflared


上一篇
辞旧迎新——荣耀畅玩 7X(BND-AL10)刷机手记