全球主机交流论坛

标题: OpenWRT安装内网穿透 Cloudflare Tunnel 教程 [打印本页]

作者: ajeef    时间: 2023-4-2 17:10
标题: OpenWRT安装内网穿透 Cloudflare Tunnel 教程
本帖最后由 ajeef 于 2023-4-7 16:28 编辑

该内网穿透项目优点:和国内花生壳这种一年只有几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,输入下面下载命令,回车。

  1. VERSION="2023.3.1"

  2. curl -O -L \
  3.   https://github.com/cloudflare/cloudflared/releases/download/${VERSION}/cloudflared-linux-arm \
  4. && chmod +x cloudflared-linux-arm \
  5. && mv cloudflared-linux-arm /usr/bin/cloudflared
复制代码

#注意VERSION=””里面的数字,即是教程001:官方打开后,右侧Latest最新版本的版本号,复制过来就行了,以后有新版本就只要改这里就行,架构的话我是X86的openwrt,所以直接用这条命令,如果你是ARM或者其它架构的,把${VERSION}/后面的改掉即可,例如ARM64就是cloudflared-linux-arm64#

006:依次输入下面2条命令,回车。
  1. touch /etc/init.d/cloudflared
  2. chmod +x /etc/init.d/cloudflared
复制代码

在openwrt重启引导目录里创建一个名为cloudflared的文件
给刚才创建的这个文件赋予一个可执行权限,类似Windows鼠标右键以管理员身份运行

007:输入nano /etc/init.d/cloudflared    将下列代码修改一处就是令牌这里,然后粘贴,CTRL+O CTRL+X 保存。


  1. #!/bin/sh /etc/rc.common

  2. USE_PROCD=1
  3. START=95
  4. STOP=01

  5. cfd_init="/etc/init.d/cloudflared"
  6. cfd_token="这里改成教程004:你复制好的token"

  7. boot()
  8. {
  9.     ubus -t 30 wait_for network.interface network.loopback 2>/dev/null
  10.     rc_procd start_service
  11. }

  12. start_service() {
  13.     if [ $("${cfd_init}" enabled; printf "%u" ${?}) -eq 0 ]
  14.     then
  15.         procd_open_instance
  16.         procd_set_param command /usr/bin/cloudflared --no-autoupdate tunnel run --token ${cfd_token}
  17.         procd_set_param stdout 1
  18.         procd_set_param stderr 1
  19.         procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
  20.         procd_close_instance
  21.     fi
  22. }

  23. stop_service() {
  24.     pidof cloudflared && kill -SIGINT `pidof cloudflared`
  25. }
复制代码


008:输入下面2个命令,回车。

  1. /etc/init.d/cloudflared enable
  2. /etc/init.d/cloudflared start
复制代码

#设置这个文件,开机启动#
#现在运行这个文件#


009:输入下面2个命令,回车,一个是查看进程,一个是查看进程日志。
  1. ps | grep cloudflared
  2. 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即可。

教程完毕

作者: [MJJ]    时间: 2023-4-2 17:17
技术贴 顶下 让更多的人看到
作者: airbus    时间: 2023-4-2 17:18
感谢分享,看起来可能有点乱
作者: SensiRibbed    时间: 2023-4-2 17:34
技术贴 顶下 让更多的人看到
作者: kagurazakashira    时间: 2023-4-2 17:43
02可以省略
https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/tunnel-guide/local/
作者: 宋喆    时间: 2023-4-2 17:53
mk,如果安装后有可视化操作就更好了,包括监测运行状态日志等
作者: yueke    时间: 2023-4-2 21:37
技术贴顶一下
作者: sqliuchang    时间: 2023-4-2 22:13
github上搜openwrt cloudflare tunnel,有现成的源码,release比较老了,下载下来之后解压替换二进制文件重新打包,安装以后修改一下init脚本里面的参数就行了
作者: 包子打的    时间: 2023-4-2 22:15
技术贴 顶下 让更多的人看到

作者: wgedu    时间: 2023-4-2 22:36
谢谢了!!!
作者: yanzhiling2002    时间: 2023-4-3 00:52
有一点没搞明白

穿透成功之后,之组建了一个本地和cf Tunnel 的“ 局域网 ”吗,然后在cf的后台配置一下就能从cf访问到本地?
作者: ajeef    时间: 2023-4-3 01:07
yanzhiling2002 发表于 2023-4-3 00:52
有一点没搞明白

穿透成功之后,之组建了一个本地和cf Tunnel 的“ 局域网 ”吗,然后在cf的后台配置一下就 ...

直接用,你刚取的二级域名+端口号(如果有端口号的话)访问,全世界任何一台可以上网的电脑都行。
作者: MikuP    时间: 2023-4-3 01:15
试过,群晖操作没问题,但是远程下载文件失败,不知道能不能穿透电脑rdp远程
作者: ajeef    时间: 2023-4-3 15:37
MikuP 发表于 2023-4-3 01:15
试过,群晖操作没问题,但是远程下载文件失败,不知道能不能穿透电脑rdp远程 ...

支持,类型这里选:rdp  即可,地址填你局域网内的IP。
作者: shuang76    时间: 2023-4-3 15:39
战略马克  确实是技术贴了
作者: 6789    时间: 2023-4-3 15:43
单个文件上限100M.
作者: xhcj666    时间: 2023-4-3 15:44
马克
作者: bbsbbs    时间: 2023-4-3 15:49
我还是安静的使用zerotier吧

作者: HDFSKYCAT    时间: 2023-4-3 15:50
虽然有公网IP了,但是这种技术贴还是要收藏一下,感谢分享!!
作者: ieason    时间: 2023-4-3 16:36

技术贴 顶下
作者: 志明    时间: 2023-4-3 16:47
非常感谢,mark以下
作者: 天生要强    时间: 2023-4-3 16:49
支持一下技术贴
作者: lisa2016    时间: 2023-4-3 16:52
ajeef 发表于 2023-4-3 01:07
直接用,你刚取的二级域名+端口号(如果有端口号的话)访问,全世界任何一台可以上网的电脑都行。 ...

插入 几张图片很难么大神是图床挂了还是存储不够~
作者: renny    时间: 2023-4-3 17:06
技术贴 顶下 让更多的人看到

作者: poctopus    时间: 2023-4-3 17:25
技术贴收藏一下。
作者: 黑皮    时间: 2023-4-4 15:50
好像韩风做了这期
作者: Evvj    时间: 2023-4-4 16:43
plex居然可以原始质量播放,就是加载速度有点慢

作者: 你是人    时间: 2023-4-4 16:46
支持技术贴
作者: Kevil    时间: 2023-4-4 16:48
支持技术贴
作者: qwer121    时间: 2023-4-4 17:24
kagurazakashira 发表于 2023-4-2 17:43
02可以省略
https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-set ...

002可以省略吗?不需要支付方式吗?
作者: fule    时间: 2023-4-4 17:44
  1. Tue Apr  4 17:41:10 2023 daemon.err cloudflared[17431]: 2023-04-04T09:41:10Z ERR Failed to create new quic connection error="failed to dial to edge with quic: timeout: no recent network activity" connIndex=0 ip=xxx.XXX..XX
复制代码

请问下这种是什么原因
作者: hcyme    时间: 2023-4-4 17:47
感谢大捞分享
作者: Jack4488    时间: 2023-4-4 21:12
一直用WireGuard+CF.试试看你的方案,看看区别,感谢。
作者: kagurazakashira    时间: 2023-4-4 23:33
qwer121 发表于 2023-4-4 17:24
002可以省略吗?不需要支付方式吗?

不需要啊

照着那个官方文档来就行
账户只要求验证邮箱
作者: aiastia    时间: 2023-4-5 10:17
cloudflare tunnel openwrt tcp 类型怎么配置啊
作者: Dick    时间: 2023-4-5 10:33
mark
作者: 肉蛋葱鸡    时间: 2023-4-5 10:36
技术贴 必须顶下
作者: luckin    时间: 2023-4-7 09:39
很棒,厉害了老铁
作者: 奔跑的路由器    时间: 2023-4-7 09:59
做一个合格的MJJ,原创技术贴必须顶一下。
作者: lost1984    时间: 2023-4-7 13:23
马克
作者: 随意、    时间: 2023-4-7 13:50
技术贴 顶下 让更多的人看到

作者: ajeef    时间: 2023-4-7 14:45
aiastia 发表于 2023-4-5 10:17
cloudflare tunnel openwrt tcp 类型怎么配置啊

web cloudflare里隧道里,有type:http,https,rdp,这里有一个tcp,选 tcp 即可。
作者: aiastia    时间: 2023-4-7 17:00
ajeef 发表于 2023-4-7 14:45
web cloudflare里隧道里,有type:http,https,rdp,这里有一个tcp,选 tcp 即可。

我知道 选了tcp 然后手机开 warp? 然后用什么链接?域名还是什么。我用ip 连不上
作者: sync    时间: 2023-4-7 18:00
大佬,有armbian教程吗?
/etc/init.d/cloudflared 运行之后 没反应,不启动。
armbian 没有/etc/rc.common文件。

作者: NoctuG    时间: 2023-4-7 18:03
技术贴帮顶
作者: avv    时间: 2023-4-7 18:07
收藏一下技术贴
作者: sync    时间: 2023-4-7 18:15
本帖最后由 sync 于 2023-4-7 18:56 编辑
sync 发表于 2023-4-7 18:00
大佬,有armbian教程吗?
/etc/init.d/cloudflared 运行之后 没反应,不启动。
armbian 没有/etc/rc.common ...


可以了,armbian 添加了systemd
创建cloudflared.service文件
  1. vim /lib/systemd/system/cloudflared.service
复制代码

内容如下
  1. [Unit]
  2. Description=cloudflared tunnels service
  3. After=network.target
  4. StartLimitBurst=5
  5. StartLimitIntervalSec=10

  6. [Service]
  7. Type=simple
  8. Restart=always
  9. RestartSec=2
  10. User=root
  11. ExecStart=/usr/bin/cloudflared --no-autoupdate tunnel run --token yourtoken

  12. [Install]
  13. WantedBy=multi-user.target
复制代码


删除上面创建的/etc/init.d/cloudflared文件,如果有的话
Enable
  1. # systemctl enable cloudflared

  2. Created symlink /etc/systemd/system/multi-user.target.wants/cloudflared.service → /lib/systemd/system/cloudflared.service.
复制代码


启动
  1. systemctl start cloudflared
复制代码

作者: honey    时间: 2023-4-7 18:28
技术贴 顶起来
作者: ajeef    时间: 2023-4-7 22:33
aiastia 发表于 2023-4-7 17:00
我知道 选了tcp 然后手机开 warp? 然后用什么链接?域名还是什么。我用ip 连不上 ...

CF里CM指向自己的域名,开启云朵,默认不就在CF的网络里了么,用域名访问,就好了。
作者: 一身惆怅    时间: 2023-4-7 23:37
了解有一段时间了,优缺点都很明显,其实不是很好用
作者: lanyecao    时间: 2023-4-8 00:33
daemon.info procd: Instance cloudflared::instance1 s in a crash loop 6 crashes, 0 seconds since last crash

这个是什么意思呢
作者: 乌溜溜的黑眼猪    时间: 2023-4-8 00:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: Amanda    时间: 2023-4-8 02:16
早就用Cloudflare Tunnel打洞了,可以直接抛弃workers反代了
作者: aiastia    时间: 2023-4-8 04:43
ajeef 发表于 2023-4-7 22:33
CF里CM指向自己的域名,开启云朵,默认不就在CF的网络里了么,用域名访问,就好了。 ...

应该是不行的。。。你试一下
作者: ilovingstop520    时间: 2023-4-8 09:04
Mark, 确实技术贴
作者: flyisnow    时间: 2023-4-8 10:27
直接docker安装就可以了,然后配置转发,可以访问外部地址的


作者: info    时间: 2023-4-8 18:52
技术贴 支持!
作者: u78    时间: 2023-4-8 19:25
用得着这么麻烦,简直是误人子弟




欢迎光临 全球主机交流论坛 (https://443502.xyz/) Powered by Discuz! X3.4