OpenWRT 中运行Cloudflared(Zero Trust)实现内网穿透
史海锦
编辑于 2024年03月27日 23:20

如果想访问家庭中(内网)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)。 Cloudflared :无需公网实现远程访问局域网任意设备,没有任何费用。 缺点:速度慢(可进行IP优选解决,如果点赞和观看人多会在出一期IP优选视频) 

Cloudflared安装在局域网中任何一台电脑上都可以实现远程访问局域网中同IP端的设备。 支持windows、linux、MAC、docker。方法比较简单。 简单演示一下。 

OpenWRT(软路由)24小时开机、功耗的的优点。但官方没有提供OpenWRT软件包,但是在 Github提供了各种架构的二进制文件。

VERSION="2022.12.1"

curl -O -L \

https://github.com/cloudflare/cloudflared/releases/download/${VERSION}/cloudflared-linux-amd64 \

&& chmod +x cloudflared-linux-amd64 \

&& mv cloudflared-linux-amd64 /usr/bin/cloudflared

现在,我们将创建一个 init.d 服务,以便在设备启动时启动 Cloudflared。

touch /etc/init.d/cloudflared

chmod +x /etc/init.d/cloudflared

然后将以下内容添加到/etc/init.d/cloudflared:

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

USE_PROCD=1

START=95

STOP=01

cfd_init="/etc/init.d/cloudflared"

cfd_token="<yourtoken>"

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`

}

只要确保用在 Cloudflare 的 web GUI 中创建通道时生成的实际令牌替换“ yourtoken”并保存更改即可。

最后,确保启用了新的 Cloudflred init.d 服务并以下列方式启动:

/etc/init.d/cloudflared enable

/etc/init.d/cloudflared start

如果一切顺利,云状二进制文件应该在你的设备上运行:

ps | grep cloudflared

logread | grep cloudflared

  • 3

  • 41