您当前的位置:首页 > 电脑百科 > 安全防护 > 网络安全

Cloudflare Tunnel 内网穿透

时间:2023-05-22 14:21:25  来源:今日头条  作者:区块软件开发

使用Cloudflare Tunnel实现内网穿透,把服务器架在家里

Cloudflare Tunnel是Cloudflare零信任网络的一个产品,用于打通企业、员工、设备之间的边界,从而摒弃掉VPN之类的过时技术(其实也不是过时,只不过是相对来说安全性、可控性较差)

通过Cloudflare Tunnel,可以实现云与设备之间打通一条加密通道,这样Cloudflare的CDN就可以很方便的通过这条加密通道访问到部署在内网的服务,包括Web、SSH等。同时,还不用考虑电信、移动等ISP不提供固定IP地址、不能开放端口,甚至解决备案的问题。

而且,还免费。

所以,整套内网穿透的方案大致如下

 

前置条件

  • 首先,你要有一个Cloudflare的账号,并且添加了所需要使用的域名,同时,开通Cloudflare Zero TRust
  • 本地内网有一台linux服务器。centos、Ubuntu、Debian都无所谓,树莓派也没问题。Web网站正常跑,内网能正常访问。

安装Cloudflared

Cloudflared是Cloudflare Tunnel的一个本地cli客户端,可以实现管理功能和守护程序。

macOS可以用homebrew安装

brew install cloudflared

Linux直接下载编译好的二进制包安装

curl -L 'https://Github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64' -o /usr/bin/cloudflared
chmod +x /usr/bin/cloudflared

登陆Cloudflared

使用前,我们需要先登录

cloudflared tunnel login

输入命令后,终端会给出一个登陆地址,我们拷贝到浏览器里面打开,选择需要授权的网站。

[root@Web-Server-1]# cloudflared tunnel login
A browser window should have opened at the following URL:

https://dash.cloudflare.com/argotunnel?callback=https%3A%2F%2Flogin.cloudflareaccess.org%JLKY87tdfsakh-jlfsakjuo8sFFJ%3D

If the browser fAIled to open, please visit the URL above directly in your browser.
You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
/root/.cloudflared/cert.pem

注意:授权一次只能选择一个网站。如果存在多个不同域名的网站,请授权完成后不要关闭网页,点击第二个、第三个要授权的域名,进行多次授权。

创建隧道

授权完以后,我们需要创建隧道。一般建议一台服务器创建一个隧道。

cloudflared tunnel create <隧道名字>
# 比如
cloudflared tunnel create webserver-1

创建完以后,会输出隧道的一个UUID,记录下来

[root@Web-Server-1]# cloudflared tunnel create webserver-1
Tunnel credentials written to /root/.cloudflared/12345-123-123-123-12345.json. cloudflared chose this file based on where your origin certificate was found. Keep this file secret. To revoke these credentials, delete the tunnel.

Created tunnel webserver-1 with id 12345-123-123-123-12345

域名指向

接着,我们需要把域名指向到对应的隧道

注意:下面的命令只会对第一个授权的顶级域名生效,比如abc.com和*.abc.com。如果有多个域名,比如123.com、456.com,需要手工添加CNAME记录。

cloudflared tunnel route DNS <隧道名字> <域名>
# 比如一级域名(和Web界面不一样,不需要输入@)
cloudflared tunnel route dns webserver-1 abc.com
# 又比如二级域名
cloudflared tunnel route dns webserver-1 www.abc.com

这时候,Cloudflare会自动添加一条CNAME记录到对应的域名。

对于多个其他域名,我们需要登录Cloudflare的Web控制台,对应添加CNAME记录,记录值是

<隧道UUID>.cfargotunnel.com
比如
12345-123-123-123-12345.cfargotunnel.com

 

按照上面的说明和图片,我们一条条记录加好。

配置Cloudflared

接着,我们开始配置Cloudflared,先编辑一个配置文件

vim ~/.cloudflared/config.yml

输入下面的内容(根据自己要求编辑)

tunnel: <隧道UUID>
credentials-file: /root/.cloudflared/<隧道UUID>.json
protocol: h2mux
ingress:
  # 第一个网站,连接到本地的80端口
  - hostname: <域名1.com>
    service: http://localhost:80
  # 第二个网站,https协议,连接到本地的443端口,禁用证书校验(用于自签名SSL证书)
  - hostname: <域名2.com>
    service: https://127.0.0.1:443
    originRequest:
      noTLSVerify: true
      originServerName: <域名2.com>
  # 第三个网站,8012端口,泛域名
  - hostname: <*.域名3.com>
    service: http://localhost:8012
  # 第四个,反代MySQL sock服务
  - hostname: <mysql.域名4.com>
    service: unix:/tmp/mysql.sock
  # 第五个,反代SSH服务
  - hostname: <ssh.域名5.com>
    service: ssh://localhost:22
  - service: http_status:404

更多支持的服务和配置方式,参考帮助文档:Supported protocols

配置完以后,我们测试下配置文件有没有问题

cloudflared tunnel ingress validate

还可以再测试下规则是否命中

cloudflared tunnel ingress rule https://<域名1.com>

测试运行

如果没问题,OK,一切妥当,我们开始测试

cloudflared --loglevel debug --transport-loglevel warn --config ~/.cloudflared/config.yml tunnel run <隧道UUID>

终端会输出一大堆log,但没有红色报错,那就没问题。

我们登陆Cloudflare Zero Trust的Web控制台,左边选择Access-Tunnels,可以看到隧道已经跑起来了,状态是Active。

 

然后,我们在浏览器里面输入域名,正常情况下,你可以看到网站已经可以正常访问了。

创建系统服务

按下Ctrl+z,先停掉刚才启动的服务。为了让服务能每次系统启动的时候都跟着启动,我们需要把Cloudflared注册成系统服务。不然系统一重启,就歇菜了。

cloudflared service install
systemctl start cloudflared
systemctl status cloudflared

跑完这三条命令,应该就可以看到服务有正常输出,并且Web控制台也可以看到状态是Active。

● cloudflared.service - cloudflared
     Loaded: loaded (/etc/systemd/system/cloudflared.service; enabled; vendor preset: disabled)
     Active: active (running) since Fri 2022-12-09 17:22:43 CST; 9s ago
   Main PID: 37812 (cloudflared)
      Tasks: 18 (limit: 407348)
     Memory: 23.5M
        CPU: 71ms
     CGroup: /system.slice/cloudflared.service
             └─37812 /usr/local/bin/cloudflared --no-autoupdate --config /etc/cloudflared/config.yml tunnel run

Dec 09 17:22:42 Web-Server-1 cloudflared[37812]: 2022-12-09T09:22:42Z INF Generated Connector ID: 12345-123-123-123-12345
Dec 09 17:22:42 Web-Server-1 cloudflared[37812]: 2022-12-09T09:22:42Z INF Initial protocol h2mux
Dec 09 17:22:42 Web-Server-1 cloudflared[37812]: 2022-12-09T09:22:42Z INF ICMP proxy will use 127.0.0.1 as source for IPv4
Dec 09 17:22:42 Web-Server-1 cloudflared[37812]: 2022-12-09T09:22:42Z INF ICMP proxy will use ::: in zone eno1 as source for IPv6
Dec 09 17:22:42 Web-Server-1 cloudflared[37812]: 2022-12-09T09:22:42Z INF Starting metrics server on 127.0.0.1:12345/metrics
Dec 09 17:22:43 Web-Server-1 cloudflared[37812]: 2022-12-09T09:22:43Z INF Connection 12345-123-123-123-12345 registered connIndex=0 ip=<nil> location=SJC
Dec 09 17:22:43 Web-Server-1 systemd[1]: Started cloudflared.
Dec 09 17:22:44 Web-Server-1 cloudflared[37812]: 2022-12-09T09:22:44Z INF Connection 12345-123-123-123-12345 registered connIndex=1 ip=<nil> location=HKG
Dec 09 17:22:46 Web-Server-1 cloudflared[37812]: 2022-12-09T09:22:46Z INF Connection 12345-123-123-123-12345 registered connIndex=3 ip=<nil> location=HKG
Dec 09 17:22:46 Web-Server-1 cloudflared[37812]: 2022-12-09T09:22:46Z INF Connection 12345-123-123-123-12345 registered connIndex=2 ip=<nil> location=SJC

注意:创建系统服务后,配置文件会被拷贝到
/etc/cloudflared/config.yml,后续修改配置必须修改新文件

总结

如果有多台服务器,那么可以在不同的服务器安装多个Cloudflared,配置多个Tunnel。

 

ref https://blog.upx8.com/3570



Tags:内网穿透   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
玩转内网穿透:如何从公网访问局域网的服务?
最近,我帮一位朋友配置了下从公网访问家里 Web 应用。 背景这位朋友自己基于 Django 写了一个 Web 应用,部署在自己电脑的虚拟机上。但是想让其他同事访问时,却犯了难,应该该怎...【详细内容】
2023-12-21  Search: 内网穿透  点击:(97)  评论:(0)  加入收藏
八个优秀开源内网穿透工具
内网穿透(NAT穿透)是一种将本地网络服务暴露给互联网的一种技术。这种技术可以很好地解决许多局域网内的资源共享。采用路由的方式将一台计算机变成一个“路由器”,将公共的网...【详细内容】
2023-11-29  Search: 内网穿透  点击:(213)  评论:(0)  加入收藏
ngrok-内网穿透神器,开发人员必备
概述ngrok是一款开源的网络服务,能够为在本地运行的网络应用提供公开的、基于互联网的URL。这使得网络开发人员可以将自己正在开发的网页或者API暴露到互联网上,方便进行演示...【详细内容】
2023-10-07  Search: 内网穿透  点击:(102)  评论:(0)  加入收藏
如何理解内网穿透?都有哪些实现方式?
一、内网穿透:是指在企业内部或家庭网络中实现远程访问,从而使得用户通过公共的网络(例如互联网)可以访问并控制位于内网中的设备。二、内网穿透技术的核心思想是:利用某种技术...【详细内容】
2023-07-14  Search: 内网穿透  点击:(192)  评论:(0)  加入收藏
Cloudflare Tunnel 内网穿透
使用Cloudflare Tunnel实现内网穿透,把服务器架在家里Cloudflare Tunnel是Cloudflare零信任网络的一个产品,用于打通企业、员工、设备之间的边界,从而摒弃掉VPN之类的过时技术(...【详细内容】
2023-05-22  Search: 内网穿透  点击:(321)  评论:(0)  加入收藏
如何使用利用nat123实现内网穿透
首先,我们要明白何为内网穿透,内网穿透即即在计算机在局域网内的时候,外网与内网的计算机的节点进行连接时所需要的连接通信,简单滴说,我们访问百度,实际上是访问了百度的公网地址...【详细内容】
2023-02-08  Search: 内网穿透  点击:(300)  评论:(0)  加入收藏
免费实现内网穿透,端口映射远程桌面,无需公网ip实现内网穿透
很多时间,我们自己家里电脑运行的程序或者公司电脑 开发的程序需要外网访问。而现在一般很难有公网ip,解决办法也有很多,例如免费的frp(需要公网ip做中转,免费的花生壳(有限制 )金...【详细内容】
2022-11-03  Search: 内网穿透  点击:(494)  评论:(0)  加入收藏
生产力环境下的简单高效开源的内网穿透工具——FRP的搭建教程
与zerotier、tailscale等基于点对点的内网穿透的商业软件不同,FRP是在github上的一个开源项目,是服务器&mdash;客户端运行模式,可提供闭环的虚拟局域网环境。项目地址:HTTPS://g...【详细内容】
2022-09-30  Search: 内网穿透  点击:(1603)  评论:(0)  加入收藏
没有公网IP,cpolar实现内网穿透
在做网站、微信开发时,有时候会需要本地调试,但现在运营商基本不会分配给到独立的公网IP了,都是内网IP,就只能通过内网穿透来实现。这里推荐一款简单好用的内网穿透工具&mdash;&...【详细内容】
2022-09-23  Search: 内网穿透  点击:(558)  评论:(0)  加入收藏
花生壳内网穿透:无需专线公网IP,安全高效远程数据采集
随着信息技术发展和工业自动化水平的提高,各种现代化监测设备及数据采集器被广泛应用于水文水利、气象环保、工业控制等领域,用于户外、工业现场进行数据采集、存储和传输。...【详细内容】
2022-08-19  Search: 内网穿透  点击:(482)  评论:(0)  加入收藏
▌简易百科推荐
2023年最需要注意的九大安全威胁
2023年又是全球网络安全威胁形势持续严峻,在叠加了地缘政治、经济竞争的因素后,具有政府/组织背景的APT组织屡屡在网络功空间之中兴风作浪,而各种新兴技术的应用也催生了大量的...【详细内容】
2023-12-21    FreeBuf.COM  Tags:安全威胁   点击:(98)  评论:(0)  加入收藏
IP地址攻击与防范措施:维护网络安全的关键
IP地址是互联网通信的基本组成部分,然而,它也成为网络攻击的目标。本文将深入探讨IP地址可能面临的攻击方式,以及如何采取有效的防范措施来维护网络的安全。第一部分:IP地址攻击...【详细内容】
2023-12-19  IP数据云    Tags:IP地址   点击:(133)  评论:(0)  加入收藏
CSRF攻击:一种不可忽视的网络威胁
随着网络技术的飞速发展,网络安全问题日益凸显。其中,CSRF(Cross-siteRequestForgery,跨站请求伪造)攻击成为了一种常见的网络威胁,给企业和个人带来了严重的安全隐患。本文将详细...【详细内容】
2023-12-19  小青爱生活    Tags:CSRF攻击   点击:(122)  评论:(0)  加入收藏
2024年影响安全领域的五大技术趋势
即使对于我们这些在科技行业工作了几十年的人来说,过去12个月的变化速度也是惊人的。我们再次确信,技术创新不仅带来了巨大的机遇,也带来了比我们以前面临的更复杂的挑战,而且没...【详细内容】
2023-12-11    千家网  Tags:安全领域   点击:(146)  评论:(0)  加入收藏
网络安全工程师都要了解的勒索威胁新趋势
Zscaler 安全威胁实验室发布《2023 年全球勒索软件报告》中预测了未来将出现的7个勒索威胁新趋势。一、公共服务设施成为勒索软件攻击的目标增加。市政服务部门、执法部门、...【详细内容】
2023-11-16  网盾网络安全培训中心    Tags:网络安全   点击:(210)  评论:(0)  加入收藏
威胁情报趋势
威胁情报是指对各种威胁的收集、分析和推测,以便提前预防和应对威胁。随着技术的不断发展,威胁情报的趋势也在不断变化。本文将对当前的威胁情报趋势进行深入解析,并展望未来可...【详细内容】
2023-11-08  信安天途    Tags:威胁情报   点击:(209)  评论:(0)  加入收藏
如何防范生成式AI的钓鱼邮件攻击
今年ChatGPT火爆全网,近年来AI人工智能取得了长足的进步,给各行各业带来了革命性的变化。然而,与任何技术一样,总是有人试图利用它来达到恶意目的。如今,黑客正在使用一种名为Wor...【详细内容】
2023-10-26  区块软件开发  今日头条  Tags:钓鱼邮件   点击:(231)  评论:(0)  加入收藏
杭州亚运会大火背后,是网安和黑产的疯狂对抗
10月8日晚,第十九届亚运会在杭州圆满落幕,中国代表团以201枚金牌的佳绩耀居榜首,成为历届亚运会以来金牌数量首次突破200枚的国家。根据亚运会主新闻发言人毛根洪10月7日在杭州...【详细内容】
2023-10-12  互盟数据中心    Tags:网安   点击:(344)  评论:(0)  加入收藏
Web 安全之 HSTS 详解和使用
HSTS(HTTP Strict Transport Security) 是一种网络安全机制,可用于防范网络攻击,例如中间人攻击和 CSRF(Cross-Site Request Forgery)等攻击。本文将详细介绍 HSTS 的工作原理、应...【详细内容】
2023-09-27  路多辛  今日头条  Tags:HSTS   点击:(249)  评论:(0)  加入收藏
如何使用Noir从源代码检测攻击面
关于NoirNoir是一款功能强大的代码安全检测工具,在该工具的帮助下,广大研究人员能够轻松从源代码层面检测目标应用程序的潜在攻击面。功能介绍1、从源代码自动识别编程语言和...【详细内容】
2023-09-27    FreeBuf.COM  Tags:Noir   点击:(373)  评论:(0)  加入收藏
站内最新
站内热门
站内头条