Cloudflare tunnel使用

2022/09/07

layout: post title: 斐讯N1小钢炮配置记录 categories: [斐讯N1, 下载器, 旁路由] description: 斐讯N1小钢炮配置记录 keywords: 斐讯N1, 下载器, 旁路由 tags: 斐讯N1, 下载器, 旁路由 —

本文由 简悦 SimpRead 转码, 原文地址 johnrosen1.com

Cloudflare 隧道内网穿透搭建记录由于国内运营商不让用 80 端口,备案又麻烦,因此我想出了这招。

由于国内运营商不让用 80 端口,备案又麻烦,因此我想出了这招。

优缺点

  1. 免费且不需要服务器
  2. 暂时不支持 UDP 协议

前提条件

  1. 一个托管于 Cloudflare 的域名,相关教程看这里创建 Cloudflare 帐户并添加网站
  2. 一台本地 Linux Web 机器,即内网穿透的对象
  3. 正常网络连接

安装 Cloudflared

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

登录 Cloudflared

cloudflared tunnel login

这时会弹出来一个 URL,用浏览器打开,登录认证,然后选择你想用来做内网穿透的域名即可。

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

新建隧道

名字可以随意起

cloudflared tunnel create <Tunnel-NAME>

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

新建 Tunnel 对应的 DNS 记录

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

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

成功后会创建 CNAME 记录将域名指向隧道。

新建配置文件

nano ~/.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

2022.4.20 更新:经测试,http2h2mux均可正常建立连接,只有quic无法建立连接。

由于国内环境关系,无法使用默认的quic建立隧道,因此需指定http2,http://localhost:80为本地服务的地址。

也可以不加入系统服务如下图指令,核心指令是
/usr/bin/cloudflared --loglevel debug --transport-loglevel warn --config /root/.cloudflared/config.yml tunnel run <Tunnel-NAME>

启动 Cloudflared

修改 systemd 文件

nano /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>,如可正常显示则成功。

cloudflared tunnel list

Debug 指令:systemctl status cloudflared journalctl -a -u cloudflared (-r / -f)

透明代理

由于 Cloudflare 走 V2ray 的 sniffing 或者 fakedns 都会出错,因此需专门写一条 iptables 规则开机启动。

crontab -e

设置规则

@reboot sleep 30s && iptables -t nat -I OUTPUT -p tcp --dport 7844 -j RETURN
@reboot sleep 30s && iptables -t nat -I OUTPUT -p udp --dport 7844 -j RETURN

总结

这玩意不比什么花生壳,frp 香多了,免费又不需要服务器,哈哈哈哈哈哈哈哈哈。

参考资料

  1. Cloudflare Docs
  2. Many services, one cloudflared

Search

    Table of Contents