该内网穿透项目优点:和国内花生壳这种一年只有几 M 就要 4 位数的比起来 CF 不亏是业界钱多多
它不需要你购买 VPS;有免费项且个人足够使用;带宽很高;可以跨电信,联通,移动各家 ISP 运营商;不必在客户端上安装软件(智能家电,机顶盒等都不需要安装客户端,有局域网 IP 就直接可以穿透);无需北岸(CF 是海外的么);支持 HTTP3/QUIC(UDP 协议);不限服务数量。
该内网穿透项目缺点:夜间高峰期时期延迟不稳,抖动也高(和我们日常开 CF 盾一样的速度,延迟大概 150 左右);国内暂不支持 HTTP3/QUIC;暂不支持 UDP(支持也没用,国内三大运营商都是 QOS UDP 的);当然还有就是需要将一个域名托管在 Cloudflare。
我在 hostloc 发布过了用 API 申请注册 Scaleway 教程中这两台欧洲的 IPV6 VPS, 廉价好用且流量无限,这可以很好的与 Cloudflare Tunnel 隧道结合,两者都是流量无限,而且可以跑满带宽。这就可以给我们在公网环境下,大流量传输服务到家中的 NAS 或者其它服务带来了可能,是相对折中低价的解决方案。
000: 前提: 你要有一个域名,并且已经将 DNS 解析地址改到了 CloudFlare
001: 这是官方 CloudFlared 二进制可执行文件放在 Github 上的网址:https://github.com/cloudflare/cloudflared(但没有 openwrt,直接安装的 ipk 包,不过这里安装的好处是,安全,毕竟是官方的么,更新也是直接同步官方,不用等第三方编译出来,毕竟这么隐私的应用还是用官方的安全,对吧。)
002: 首先用你自己的账号登入 CloudFlare.com 官网,登入后,在首页左侧菜单找到 Zero Trust 点击进入后
如果是第一次打开,可能会让你选择付费项目,选免费就够了,然后会让你绑定信用卡或者 Paypal
放心是 0 元,我用的是 Paypal
003: 上一步操作好后,会跳转到下一个菜单 Zero Trust overview,在这里找到 Access 菜单边上的
下拉箭头,找到 Tunnels, 进入后选择 Create a tunnel 创建一个隧道,Tunnel name(Required) 这里
任意填写一个好记的隧道名,例如:小明的办公室,xiaomingoffice,我的家,myhome,然后
点击 Save tunnel
004: 接着就跳转到下一个菜单,官方给出了 Windows,Linux 两大家族系,Mac, 和 Docker 的 32 位和 64 位部署安装包,这里我是安装在 openwrt 上的,所以都不用,但是下面自动生成的握手令牌码,我们要复制一下,让在记事本上,一会要用到,就是类似下面的这串:
cloudflared.exe service install eyJhIjoiMjg1ZDYxZWU2Mjg3MDDFIUYDSFHDSKJFHSDJKHFKSDFJJSDFLKJDSKLFJDSL;KJFLKDSJFA;SLDJFIjoiYjViNmVkNGEtMzdmOC00ODI1LTk0YzgtF;IDSLUFL;J;lfiL;TJGLFKJD;KLFU;ADSILJ;JZaTAwTkdRM0xXRTJOalF0TUdVMVl6VmhNVFF6WYDDjkyJ9
(忽略 cloudflared.exe service install 这个安装命令,只需要复制下面的令牌从 ey 到 J9 结束。)
005: 任意 SSH 工具,连接你的 openwrt,输入下面下载命令, 回车。
(注意 VERSION=””里面的数字,即是教程 001:官方打开后,右侧 Latest 最新版本的版本号,复制过来就行了,以后有新版本就只要改这里就行,架构的话我是 X86 的 openwrt,所以直接用这条命令,如果你是 ARM 或者其它架构的,把 ${VERSION}/ 后面的改掉即可,例如 ARM64 就是 cloudflared-linux-arm64)
006: 依次输入下面 2 条命令,回车。
touch /etc/init.d/cloudflared ##(在 openwrt 重启引导目录里创建一个名为 cloudflared 的文件)chmod +x /etc/init.d/cloudflared ##(给刚才创建的这个文件赋予一个可执行权限,类似 Windows 鼠标右键以管理员身份运行)
007: 输入
nano /etc/init.d/cloudflared
将下列代码修改一处就是令牌这里,然后粘贴,CTRL+O CTRL+X 保存。
#!/bin/sh /etc/rc.common USE_PROCD=1 START=95 STOP=01 cfd_init="/etc/init.d/cloudflared" cfd_token=" 这里改成你 004:步骤复制好的令牌 " boot() {ubus -t 30 wait_for network.interface network.loopback 2>/dev/null rc_procd start_service } start_service() {if [ $("${cfd_init}" enabled; printf "%u" ${?}) -eq 0 ] then procd_open_instance procd_set_param command /usr/bin/cloudflared --no-autoupdate tunnel run --token ${cfd_token} procd_set_param stdout 1 procd_set_param stderr 1 procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5} procd_close_instance fi } stop_service() {pidof cloudflared && kill -SIGINT pidof cloudflared}
008: 输入下面 2 个命令,回车。
/etc/init.d/cloudflared enable ##(设置这个文件,开机启动)/etc/init.d/cloudflared start ##(现在运行这个文件)
009: 输入下面 2 个命令,回车,一个是查看进程,一个是查看进程日志。
ps | grep cloudflared ##(查询是否有这个名字的进程)logread | grep cloudflared ##(查看这个名字的进程日志)
010: 这个时候回到 CloudFlare 我们 Access-Tunnels 的菜单下,刷新一下,应该就能看到
一个隧道链接的提示,隧道名是我们自己取的,在 Status 状态栏下显示绿色 HEALTHY 就代表隧道已经穿透,可以用了,如果是 INACTIVE 就说明隧道连接失败,可以等等,或者看看上面的步骤是否有错,如果已经 HEALTHY 健康状态了,就点边上的 3 个点,选择 Congfigure,进入后选上面 Public Hostname 菜单,点击 +Add a public hostname,进入后在 Subdomain 里取你的二级域名名字,
如果直接用根域名就输入 @,Domain(Required) 菜单里选择你托管在 CF 的域名,Path 一般不填写
除非像宝塔这种默认安全设置这里有扩展路径例如:https://bt.cn:8888/format/,那么你就需要在 Path 里填写 /format,下面的 Service-Type 这里就随便了,看你自己要穿透的协议,如果是穿透局域网里的 openwrt 自身,例如:http://192.168.1.1,那么这里选 http 就行了,后面的 URL 就填写 192.168.1.1
以此类推,再举个例子黑群晖 https://192.168.1.5:5000 , 那么 Type 就改成 https, 后面 URL 就填写 192.168.1.5:5000 即可。局 Windows11 电脑,局域网 IP 是 192.168.1.10 装了 VNC 远程桌面,VNC 默认端口 5900, 那么应用类软件只要不是 UDP,那这种 TCP 的就在 Type 里选 TCP,URL 里填写 192.168.1.10:5900 即可。
教程完毕!