使用Cloudflare Tunnel实现内网穿透全过程

逆流成河 阅读:91 2023-09-08 12:38:09 评论:0
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直接下载编译好的二进制包安装
  1. curl -L 'https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64' -o /usr/bin/cloudflared
  2. chmod +x /usr/bin/cloudflared

登陆Cloudflared

使用前,我们需要先登录
cloudflared tunnel login
输入命令后,终端会给出一个登陆地址,我们拷贝到浏览器里面打开,选择需要授权的网站。
  1. [root@Web-Server-1]# cloudflared tunnel login
  2. A browser window should have opened at the following URL:
  3. https://dash.cloudflare.com/argotunnel?callback=https%3A%2F%2Flogin.cloudflareaccess.org%JLKY87tdfsakh-jlfsakjuo8sFFJ%3D
  4. If the browser failed to open, please visit the URL above directly in your browser.
  5. You have successfully logged in.
  6. If you wish to copy your credentials to a server, they have been saved to:
  7. /root/.cloudflared/cert.pem
注意:授权一次只能选择一个网站。如果存在多个不同域名的网站,请授权完成后不要关闭网页,点击第二个、第三个要授权的域名,进行多次授权。

创建隧道

授权完以后,我们需要创建隧道。一般建议一台服务器创建一个隧道。
  1. cloudflared tunnel create <隧道名字>
  2. # 比如
  3. cloudflared tunnel create webserver-1
创建完以后,会输出隧道的一个UUID,记录下来
  1. [root@Web-Server-1]# cloudflared tunnel create webserver-1
  2. 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.
  3. Created tunnel webserver-1 with id 12345-123-123-123-12345

域名指向

接着,我们需要把域名指向到对应的隧道 注意:下面的命令只会对第一个授权的顶级域名生效,比如abc.com和*.abc.com。如果有多个域名,比如123.com、456.com,需要手工添加CNAME记录。
  1. cloudflared tunnel route dns <隧道名字> <域名>
  2. # 比如一级域名(和Web界面不一样,不需要输入@)
  3. cloudflared tunnel route dns webserver-1 abc.com
  4. # 又比如二级域名
  5. cloudflared tunnel route dns webserver-1 www.abc.com
这时候,Cloudflare会自动添加一条CNAME记录到对应的域名。 对于多个其他域名,我们需要登录Cloudflare的Web控制台,对应添加CNAME记录,记录值是
  1. <隧道UUID>.cfargotunnel.com
  2. 比如
  3. 12345-123-123-123-12345.cfargotunnel.com

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

配置Cloudflared

接着,我们开始配置Cloudflared,先编辑一个配置文件
vim ~/.cloudflared/config.yml
输入下面的内容(根据自己要求编辑)
  1. tunnel: <隧道UUID>
  2. credentials-file: /root/.cloudflared/<隧道UUID>.json
  3. protocol: h2mux
  4. ingress:
  5. # 第一个网站,连接到本地的80端口
  6. - hostname: <域名1.com>
  7. service: http://localhost:80
  8. # 第二个网站,https协议,连接到本地的443端口,禁用证书校验(用于自签名SSL证书)
  9. - hostname: <域名2.com>
  10. service: https://127.0.0.1:443
  11. originRequest:
  12. noTLSVerify: true
  13. originServerName: <域名2.com>
  14. # 第三个网站,8012端口,泛域名
  15. - hostname: <*.域名3.com>
  16. service: http://localhost:8012
  17. # 第四个,反代MySQL sock服务
  18. - hostname: <mysql.域名4.com>
  19. service: unix:/tmp/mysql.sock
  20. # 第五个,反代SSH服务
  21. - hostname: <ssh.域名5.com>
  22. service: ssh://localhost:22
  23. - 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。

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

创建系统服务

按下Ctrl+z,先停掉刚才启动的服务。为了让服务能每次系统启动的时候都跟着启动,我们需要把Cloudflared注册成系统服务。不然系统一重启,就歇菜了。
  1. cloudflared service install
  2. systemctl start cloudflared
  3. systemctl status cloudflared
跑完这三条命令,应该就可以看到服务有正常输出,并且Web控制台也可以看到状态是Active。
  1. ● cloudflared.service - cloudflared
  2. Loaded: loaded (/etc/systemd/system/cloudflared.service; enabled; vendor preset: disabled)
  3. Active: active (running) since Fri 2022-12-09 17:22:43 CST; 9s ago
  4. Main PID: 37812 (cloudflared)
  5. Tasks: 18 (limit: 407348)
  6. Memory: 23.5M
  7. CPU: 71ms
  8. CGroup: /system.slice/cloudflared.service
  9. └─37812 /usr/local/bin/cloudflared --no-autoupdate --config /etc/cloudflared/config.yml tunnel run
  10. Dec 09 17:22:42 Web-Server-1 cloudflared[37812]: 2022-12-09T09:22:42Z INF Generated Connector ID: 12345-123-123-123-12345
  11. Dec 09 17:22:42 Web-Server-1 cloudflared[37812]: 2022-12-09T09:22:42Z INF Initial protocol h2mux
  12. 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
  13. 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
  14. 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
  15. 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
  16. Dec 09 17:22:43 Web-Server-1 systemd[1]: Started cloudflared.
  17. 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
  18. 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
  19. 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。 转载自:码上行旅
声明

本站网络名称: 配主机

本站永久网址: www.peizhuji.com

网站侵权说明: 本站采用 CC BY-NC-SA 4.0 国际许可协议 进行许可,转载或引用本站文章应遵循相同协议。

1. 本站为转载分享站点,不提供任何上传下载服务。

所有内容均来自互联网第三方分享站点所提供的公开引用内容。

不需要任何付费即可公开阅读,部分GG仅为作为服务器维护费用。

2. 本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;

不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3. 本站信息来自网络收集整理,版权争议与本站无关。

您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4. 如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。

我们非常重视版权问题,如有侵权请邮件与我们联系处理。

敬请谅解!我们会在24h内删除有争议的资源。唯一站长邮箱:1103606138@qq.com

发表评论
搜索

            小站宗旨:

不沾诡计,不为利欲熏心。

千种思量,具在体验。

万般思虑,皆为用户。

有所为有所不为,终能拨云见日。

所有资源Win10亲测运行后发布!


资源列表2.jpg

电脑DIY装机大师在线指导

2024年主流游戏设计笔记本型号

站内导航

188元开通百度网盘SVIP年度超级会员

淘宝天猫拼多多优惠券

京东商城优惠券限时领取


排行榜

今日大家都在搜的词: