OpenWRT安装内网穿透 Cloudflare Tunnel 教程

讨论 未结 34 43
ajeef
ajeef 会员 2023年4月2日 16:54 发表
<i class="pstatus"> 本帖最后由 ajeef 于 2023-4-2 17:11 编辑 </i><br> <br> <strong><font color="Blue">该内网穿透项目优点:和国内花生壳这种一年只有几M就要4位数的比起来CF不亏是业界钱多多<br> <br> 它不需要你购买VPS;有免费项且个人足够使用;带宽很高;可以跨电信,联通,移动各家ISP运营商;不必在客户端上安装软件(智能家电,机顶盒等都不需要安装客户端,有局域网IP就直接可以穿透);无需北岸(CF是海外的么);支持HTTP3/QUIC(UDP协议);不限服务数量。<br> <br> 该内网穿透项目缺点:夜间高峰期时期延迟不稳,抖动也高(和我们日常开CF盾一样的速度,延迟大概150左右);国内暂不支持HTTP3/QUIC;暂不支持UDP(支持也没用,国内三大运营商都是QOS UDP的);当然还有就是需要将一个域名托管在Cloudflare。<br> <br> 我在hostloc发布过了用API申请注册Scaleway教程中这两台欧洲的IPV6 VPS,廉价好用且流量无限,这可以很好的与Cloudflare Tunnel隧道结合,两者都是流量无限,而且可以跑满带宽。这就可以给我们在公网环境下,大流量传输服务到家中的NAS或者其它服务带来了可能,是相对折中低价的解决方案。<br> <br> <font color="Red">000:</font>前提:你要有一个域名,并且已经将DNS解析地址改到了CloudFlare<br> <br> <font color="Red">001:</font>这是官方CloudFlared二进制可执行文件放在Github上的网址:[https://github.com/cloudflare/cloudflared](https://github.com/cloudflare/cloudflared)&nbsp; &nbsp;(但没有openwrt,直接安装的ipk包,不过这里安装的好处是,安全,毕竟是官方的么,更新也是直接同步官方,不用等第三方编译出来,毕竟这么隐私的应用还是用官方的安全,对吧。)<br> <br> <font color="Red">002:</font>首先用你自己的账号登入CloudFlare.com官网,登入后,在首页左侧菜单找到Zero Trust点击进入后<br> <br> 如果是第一次打开,可能会让你选择付费项目,选免费就够了,然后会让你绑定信用卡或者Paypal<br> <br> 放心是0元,我用的是Paypal<br> <br> <font color="Red">003:</font>上一步操作好后,会跳转到下一个菜单Zero Trust overview,在这里找到Access菜单边上的<br> <br> 下拉箭头,找到Tunnels,进入后选择Create a tunnel创建一个隧道,Tunnel name(Required)这里<br> <br> 任意填写一个好记的隧道名,例如:小明的办公室,xiaomingoffice,我的家,myhome,然后<br> <br> 点击Save tunnel<br> <br> <font color="Red">004:</font>接着就跳转到下一个菜单,官方给出了Windows,Linux两大家族系,Mac,和Docker的32位和64位部署安装包,这里我是安装在openwrt上的,所以都不用,但是下面自动生成的握手令牌码,我们要复制一下,让在记事本上,一会要用到,就是类似下面的这串:<br> <br> cloudflared.exe service install eyJhIjoiMjg1ZDYxZWU2Mjg3MDDFIUYDSFHDSKJFHSDJKHFKSDFJJSDFLKJDSKLFJDSL;KJFLKDSJFA;SLDJFIjoiYjViNmVkNGEtMzdmOC00ODI1LTk0YzgtF;IDSLUFL;J;lfiL;TJGLFKJD;KLFU;ADSILJ;JZaTAwTkdRM0xXRTJOalF0TUdVMVl6VmhNVFF6WYDDjkyJ9<br> <br> (忽略cloudflared.exe service install 这个安装命令,只需要复制下面的令牌从ey到J9结束。)<br> <br> <font color="Red">005:</font>任意SSH工具,连接你的openwrt,输入下面下载命令,回车。<br> <br> VERSION="2023.3.1"<br> <br> curl -O -L \<br> [https://github.com/cloudflare/cloudflared/releases/download/${VERSION}/cloudflared-linux-amd64](https://github.com/cloudflare/cloudflared/releases/download/$%7BVERSION%7D/cloudflared-linux-amd64) \<br> &amp;&amp; chmod +x cloudflared-linux-amd64 \<br> &amp;&amp; mv cloudflared-linux-amd64 /usr/bin/cloudflared<br> <br> (注意VERSION=””里面的数字,即是教程001:官方打开后,右侧Latest最新版本的版本号,复制过来就行了,以后有新版本就只要改这里就行,架构的话我是X86的openwrt,所以直接用这条命令,如果你是ARM或者其它架构的,把${VERSION}/后面的改掉即可,例如ARM64就是cloudflared-linux-arm64)<br> <br> <font color="Red">006:</font>依次输入下面2条命令,回车。<br> <br> touch /etc/init.d/cloudflared&nbsp; &nbsp;&nbsp; &nbsp; (在openwrt重启引导目录里创建一个名为cloudflared的文件)<br> chmod +x /etc/init.d/cloudflared&nbsp; &nbsp;(给刚才创建的这个文件赋予一个可执行权限,类似Windows鼠标右键以管理员身份运行)<br> <br> <font color="Red">007:</font>输入nano /etc/init.d/cloudflared&nbsp; &nbsp; 将下列代码修改一处就是令牌这里,然后粘贴,CTRL+O CTRL+X 保存。<br> <br> <br> <br> #!/bin/sh /etc/rc.common<br> <br> USE_PROCD=1<br> START=95<br> STOP=01<br> <br> cfd_init="/etc/init.d/cloudflared"<br> cfd_token="这里改成你004:步骤复制好的令牌"<br> <br> boot()<br> {<br> ubus -t 30 wait_for network.interface network.loopback 2&gt;/dev/null<br> rc_procd start_service<br> }<br> <br> start_service() {<br> if [ $("${cfd_init}" enabled; printf "%u" ${?}) -eq 0 ]<br> then<br> procd_open_instance<br> procd_set_param command /usr/bin/cloudflared --no-autoupdate tunnel run --token ${cfd_token}<br> procd_set_param stdout 1<br> procd_set_param stderr 1<br> procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}<br> procd_close_instance<br> fi<br> }<br> <br> stop_service() {<br> pidof cloudflared &amp;&amp; kill -SIGINT `pidof cloudflared`<br> }<br> <br> <font color="Red">008:</font>输入下面2个命令,回车。<br> <br> /etc/init.d/cloudflared enable&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;(设置这个文件,开机启动)<br> /etc/init.d/cloudflared start&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;(现在运行这个文件)<br> <br> <font color="Red">009:</font>输入下面2个命令,回车,一个是查看进程,一个是查看进程日志。<br> <br> ps | grep cloudflared&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;(查询是否有这个名字的进程)<br> logread | grep cloudflared&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;(查看这个名字的进程日志)<br> <br> <font color="Red">010:</font>这个时候回到CloudFlare我们Access-Tunnels的菜单下,刷新一下,应该就能看到<br> <br> 一个隧道链接的提示,隧道名是我们自己取的,在Status状态栏下显示绿色HEALTHY就代表隧道已经穿透,可以用了,如果是INACTIVE就说明隧道连接失败,可以等等,或者看看上面的步骤是否有错,如果已经HEALTHY健康状态了,就点边上的3个点,选择Congfigure,进入后选上面Public Hostname菜单,点击+Add a public hostname,进入后在Subdomain里取你的二级域名名字,<br> <br> 如果直接用根域名就输入@,Domain(Required)菜单里选择你托管在CF的域名,Path一般不填写<br> <br> 除非像宝塔这种默认安全设置这里有扩展路径例如:https://bt.cn:8888/format/,那么你就需要在Path里填写/format,下面的Service-Type这里就随便了,看你自己要穿透的协议,如果是穿透局域网里的openwrt自身,例如:http://192.168.1.1,那么这里选http就行了,后面的URL就填写192.168.1.1<br> <br> 以此类推,再举个例子黑群晖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即可。<br> <br> <font color="Purple">教程完毕</font>!</font></strong>
收藏(0)  分享
相关标签: 主机交流
注意:本文归作者所有,未经作者允许,不得转载
34个回复
  • [MJJ]
    2023年4月2日 16:54
    技术贴 顶下 让更多的人看到
    0 0
  • airbus
    2023年4月2日 16:54
    感谢分享,看起来可能有点乱
    0 0
  • kagurazakashira
    2023年4月2日 16:54
    02可以省略 https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/tunnel-guide/local/
    0 0
  • 宋喆
    2023年4月2日 16:54
    mk,如果安装后有可视化操作就更好了,包括监测运行状态日志等
    0 0
  • sqliuchang
    2023年4月2日 16:54
    github上搜openwrt cloudflare tunnel,有现成的源码,release比较老了,下载下来之后解压替换二进制文件重新打包,安装以后修改一下init脚本里面的参数就行了
    0 0
  • ajeef
    2023年4月2日 17:06
    yanzhiling2002 发表于 2023-4-3 00:52 有一点没搞明白 穿透成功之后,之组建了一个本地和cf Tunnel 的“ 局域网 ”吗,然后在cf的后台配置一下就 ... 直接用,你刚取的二级域名+端口号(如果有端口号的话)访问,全世界任何一台可以上网的电脑都行。
    0 0
  • MikuP
    2023年4月2日 17:20
    试过,群晖操作没问题,但是远程下载文件失败,不知道能不能穿透电脑rdp远程
    0 0
  • ajeef
    2023年4月3日 07:42
    MikuP 发表于 2023-4-3 01:15 试过,群晖操作没问题,但是远程下载文件失败,不知道能不能穿透电脑rdp远程 ... 支持,类型这里选:rdp 即可,地址填你局域网内的IP。
    0 0
  • 6789
    2023年4月3日 08:01
    单个文件上限100M.
    0 0
  • bbsbbs
    2023年4月3日 08:01
    我还是安静的使用zerotier吧
    0 0
  • HDFSKYCAT
    2023年4月3日 08:01
    虽然有公网IP了,但是这种技术贴还是要收藏一下,感谢分享!!
    0 0
  • lisa2016
    2023年4月3日 08:59
    ajeef 发表于 2023-4-3 01:07 直接用,你刚取的二级域名+端口号(如果有端口号的话)访问,全世界任何一台可以上网的电脑都行。 ... 插入 几张图片很难么大神是图床挂了还是存储不够~
    0 0
  • renny
    2023年4月3日 09:16
    技术贴 顶下 让更多的人看到
    0 0
  • Evvj
    2023年4月4日 08:48
    plex居然可以原始质量播放,就是加载速度有点慢
    0 0
  • qwer121
    2023年4月4日 09:32
    kagurazakashira 发表于 2023-4-2 17:43 02可以省略 https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-set ... 002可以省略吗?不需要支付方式吗?
    0 0
  • Jack4488
    2023年4月4日 15:41
    一直用WireGuard+CF.试试看你的方案,看看区别,感谢。
    0 0
  • kagurazakashira
    2023年4月4日 15:41
    qwer121 发表于 2023-4-4 17:24 002可以省略吗?不需要支付方式吗? 不需要啊 照着那个官方文档来就行 账户只要求验证邮箱
    0 0
  • aiastia
    2023年4月5日 02:26
    cloudflare tunnel openwrt tcp 类型怎么配置啊
    0 0