OpenWRT(R2S) 中运行Cloudflared(Zero Trust)实现内网穿透访问局域网任意设备

前言

通过Cloudflared(Zero Trust) 内网穿透,访问家庭中(内网)erp、nas、web,远程桌面,在或者是想实现手机相册自动同步备份到NAS,随时观看局域网中学习视频、随时下载电脑中的文件。

目前实现的方式

  • 当我们有公网IP的时候可以通过端口映射转发来实现这些需求。
  • 如果有公网IPV4,配合DDNS可以实现域名加端口访问。(缺点:不能使用80、443端口。IP暴露在公网(套CDN解决)、优点速度取决于你带宽的上行(套CDN外)。
  • 没有IPV4有IPV6可以可以实现域名加端口访问。(除了和IPv4一样的优缺点,还有个缺点 访问者必须支持IPV6) 。
  • 第三方内网穿透平台(花生壳、神卓、节点小宝) 优点:有免费服务会有速度和数量限制,缺点:付费价格不划算,大部分为国内节点无法使用80和443端口。
  • vps(云服务器)端口转发,通过安装frp或者nps来实现远程访问。访问速度取决于你服务器带宽。大陆vps(服务器)速度快、价格便宜,域名需备案后使用80和443端口,香港、台湾vps(服务器)没有80和443端口限制价格稍微贵点。国外vps(服务器)首选韩国、日本延迟也非常低。

接下来说下今天的主角 Cloudflare 的 Zero Trust(Cloudflared)。

Zero Trust(Cloudflared)

优点:

  • Cloudflared :无需公网实现远程访问局域网任意设备,没有任何费用。
  • 该内网穿透项目优点:和国内花生壳这种一年只有几M就要4位数的比起来CF不亏是业界钱多多
  • 它不需要你购买VPS;有免费项且个人足够使用;带宽很高;可以跨电信,联通,移动各家ISP运营商;不必在客户端上安装软件(智能家电,机顶盒等都不需要安装客户端,有局域网IP就直接可以穿透);无需北岸(CF是海外的么);支持HTTP3/QUIC(UDP协议);不限服务数量。
  • 支持windows、linux、MAC、docker。方法比较简单。
  • 安装在OpenWRT(软路由)24小时开机、功耗低。

缺点:

  • 夜间高峰期时期延迟不稳,抖动也高(和我们日常开CF盾一样的速度,延迟大概150左右);国内暂不支持HTTP3/QUIC;暂不支持UDP(支持也没用,国内三大运营商都是QOS UDP的);当然还有就是需要将一个域名托管在Cloudflare。
  • 速度慢(可进行IP优选解决,如果点赞和观看人多会在出一期IP优选视频)Cloudflared安装在局域网中任何一台电脑上都可以实现远程访问局域网中同IP端的设备。
  • 官方没有提供OpenWRT软件包,但是在 Github提供了各种架构的二进制文件。

教程正式开始:

一:域名解析到CF

这是前提,你要有一个域名,并且已经将DNS解析地址改到了CloudFlare

二:登入CloudFlare.com官网

首先用你自己的账号登入CloudFlare.com官网,登入后,在首页左侧菜单找到Zero Trust点击进入后,如果是第一次打开,可能会让你选择付费项目,选免费就够了,然后会让你绑定信用卡或者Paypal。放心是0元,我用的是Paypal。

三:创建一个隧道

上一步操作好后,会跳转到下一个菜单Zero Trust,在这里找到Access菜单边上的下拉箭头,找到Tunnels,进入后选择Create a tunnel创建一个隧道,Tunnel name(Required)这里任意填写一个好记的隧道名,例如:小明的办公室,xiaomingoffice,我的家,myhome,然后点击Save tunnel。在 Cloudflare 的控制台就有 Zero Trust 的菜单。

9f5Cea yW4rrr

点进去之后,左侧的菜单里有个 Tunnels 的选项。

uqs20r KNEeLs

接下来创建 Tunnel(Create a tunnel),意思就是建立一条隧道。一般来讲,只要在局域网中的其中一台设备上建立一条 Tunnel 就够了,通过在 Tunnel 中设置各种服务的路由,就可以访问到局域网中的几乎所有服务。

Orcbq9 FgAWf1

名称自己填一个就可以,点击 Save tunnel,接下来设置连接。支持各大平台,按需部署即可。

四:openwrt上安装

接着就跳转到下一个菜单,官方给出了Windows,Linux两大家族系,Mac,和Docker的32位和64位部署安装包,这里我是安装在openwrt上的,所以都不用,但是下面自动生成的握手令牌码,我们要复制一下,让在记事本上,一会要用到,就是类似下面的这串:

cloudflared.exe service install eyJhIjoiMDU0MDk0OTgxNWIyMTg5ZGJmZDc3NDA5YzDFCVcszciLCJ0IjoiZDVlZDZmYmUDVDVADFDG3LWFkNjAtMjM2MTI4YjRhYzYyIiwicyI6Ik5UVXdOekZoWVRBdE9UVTJOQzAwTVRWaExXRTRZemN0TnpJMFlUWXlZMkkyTmpNeSJ9

(忽略cloudflared.exe service install 这个安装命令,只需要复制下面的令牌从ey到J9结束。)

2023 10 13 204630123

五:SSH连接你的openwrt

任意SSH工具,连接你的openwrt,输入下面下载命令,回车。

VERSION="2023.3.1"
curl -O -L \
https://github.com/cloudflare/cloudflared/releases/download/${VERSION}/cloudflared-linux-arm64 \
&& chmod +x cloudflared-linux-arm64 \
&& mv cloudflared-linux-arm64 /usr/bin/cloudflared

VERSION=”” 里面的数字,请打开这个网址:https://github.com/cloudflare/cloudflared ,这是官方CloudFlared二进制可执行文件放在Github上的网址(但没有openwrt直接安装的ipk包),右侧Latest数字为最新版本的版本号,复制过来就行了,以后有新版本就只要改这里就行。

注意

架构的话我是用的R2S,是ARM64的openwrt,所以直接用这条命令,如果你是X86或者其它架构的,把${VERSION}/后面的改掉即可。

例如X86就是cloudflared-linux-arm#。

[error title=”注意”]第3、4、5行里面的都要改掉。[/error]

六:创建cloudflared文件

依次输入下面2条命令,回车。

touch /etc/init.d/cloudflared
chmod +x /etc/init.d/cloudflared

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

七:修改cloudflared内容

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

上面这一步是原作者的教程,我推荐使用SSH工具来操作,这一步具步骤参考视频里面的教程。

2023 10 13 200350617

2023 10 13 200734786

 #!/bin/sh /etc/rc.common
USE_PROCD=1
START=95
STOP=01
cfd_init="/etc/init.d/cloudflared"
cfd_token="这里改成教程004:你复制好的token"
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`
}

八:设置开机启动

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

/etc/init.d/cloudflared enable
/etc/init.d/cloudflared start

#设置这个文件,开机启动#

#现在运行这个文件#

九:设置完成,验证连接

这个时候回到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即可。

十:教程完毕!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇