使用cloudflare tunnel免费内网穿透,实现网站的外网访问和远程桌面

2023-11-15

前言

Cloudflare Tunnel是Cloudflare Zero Trust中的一个产品,它能够帮助用户将位于内网中的服务暴露到公网上,从而使得外部用户可以通过互联网访问这些服务。相比较于frp、ngrok等内网穿透工具,使用Cloudflare Tunnel可以获得更好的安全性和性能。

在使用前,需要先注册一个Cloudflare账号,然后开通Cloudflare Zero Trust服务,选择免费套餐就可以了。此外,还需要注册一个自定义域名,然后将其添加到Cloudflare的DNS服务中。腾讯云、阿里云、华为云等云服务商都提供了域名注册服务,选一个便宜的就可以了。

安装

安装Cloudflared, 这是Cloudflare Tunnel的命令行工具,可以在Linux、MacOS、Windows上运行,选择对应的版本下载即可。

MacOS

在macOS上,可以使用Homebrew安装:


brew install cloudflared

Linux

在Linux上,可以直接下载二进制文件,并给以可执行权限,比如安装amd64版本:


curl -L 'https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64' -o ./cloudflared

chmod +x ./cloudflared

Windows

下载Windows版本的二进制文件,比如’cloudflared-windows-amd64.exe’,然后复制到自己定义的目录里,名字改为’cloudflared.exe’。

登录

后面的操作以Linux为例,如果是Windows,需要打开PowerShell进行操作,并将’cloudflared’替换为’cloudflared.exe’。

输入命令进行登录:


cloudflared tunnel login

输入命令后,会给出一个URL,打开浏览器访问这个URL,选择需要授权的网站。

创建Tunnel

创建一个Tunnel,名称可以自定义,比如’web’:

cloudflared tunnel create <tunnel-name>
# 例如
cloudflared tunnel create web

创建成功后,会返回一个Tunnel ID,类似于’f7b0c0e0-0c0e-0c0e-0c0e-0c0e0c0e0c0e’。

配置DNS记录

使用如下命令配置DNS,其中的<tunnel-name>是创建Tunnel时指定的名称,<domain>是自定义的域名,比如web.example.com:

cloudflared tunnel route dns <tunnel-name> <domain>
# 例如
cloudflared tunnel route dns web web.example.com

如果还有其他域名需要配置,可以继续执行上面的命令。配置完成后可以前往Cloudflare控制台查看到CNAME记录。

编写配置文件

Linux的配置文件路径为~/.cloudflared/config.yml,Windows的配置文件路径为%USERPROFILE%\.cloudflared\config.yml,如果文件不存在,可以手动创建。

配置文件内容如下,注意根据注释修改配置:


# Tunnel UUID,就是同目录下的json文件的文件名

tunnel: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

# 鉴权文件路径,注意根据自己的路径修改,下面的例子是Linux的路径

credentials-file: /home/xxx/.cloudflared/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json

protocol: h2mux

  

# 服务配置

ingress:

  # hostname是刚才添加DNS记录时指定的域名

  - hostname: web.example.com

    # service是需要暴露的服务,比如这里反代了5244端口

    service: http://127.0.0.1:5244

  - hostname: web2.example.com

    # 这里的示例是windows 远程桌面服务

    service: rdp://localhost:3389

  # 最后记得添加一个默认404

  - sevice: http_status:404

更多配置方式可以参考帮助文档

配置完成后,验证一下配置文件是否正确:

cloudflared tunnel ingress validate

测试运行

输入如下命令启动Tunnel:

cloudflared tunnel --config ~/.cloudflared/config.yml run <tunnel-uuid>
# 例如
cloudflared tunnel --config ~/.cloudflared/config.yml run xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

访问刚才配置的域名,如果能正常访问,说明配置成功。或者前往Cloudflare Zero Trust的控制台查看Tunnel的状态。

远程桌面配置

如果是需要在windows上使用远程桌面,在控制端上同样下载windows可执行文件,然后在文件目录打开cmd,输入如下命令即可,注意hostname填刚才设置了rdp service对应的域名。

cloudflared.exe access rdp --hostname web2.example.com --url localhost:3000

再打开windows远程桌面连接,计算机处填入localhost:3000,设置好用户名和密码后点击连接即可。
image.png|300

配置开机自启动

目前我们所有的命令执行都需要手动操作,这显然是不放便的,因此需要配置开机自启动。

Linux

执行如下命令:

cloudflared service install
systemctl start cloudflared

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

Windows

以管理员身份打开cmd,然后进入存放cloudflared.exe的目录,执行如下命令:

cloudflared.exe service install

按下windows徽标键+R,输入regedit,打开注册表,进入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,找到Cloudflared,将ImagePath的值修改为C:\Cloudflared\bin\cloudflared.exe --config=C:\Users\%USERNAME%\.cloudflared\config.yml tunnel run,注意修改路径为自己的可执行文件路径和配置文件路径。

再按下windows徽标键+R,输入services.msc,找到Cloudflared agent服务,右键重新启动即可。

MacOS

macOS上注册服务请参考Run as a service on macOS · Cloudflare Zero Trust docs

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用cloudflare tunnel免费内网穿透,实现网站的外网访问和远程桌面 的相关文章

随机推荐

  • QDialog、QWidget、QMainWindow的区别

    QDialog QWidget QMainWindow的区别 dialog有exec函数 如果是dialog窗口 后边的窗口是不可选的 widget和dialog都有show函数 如果通过这个函数显示这两种类型的窗口 则两个窗口都是可选的
  • 国际带宽市场的发展趋势和前景

    随着全球互联网的不断普及和云计算 人工智能等新技术的迅猛发展 国际带宽市场在不断扩大 成为了全球信息通信领域的重要组成部分 本文将就国际带宽市场的发展趋势和前景进行探讨 一 市场概况 国际带宽是指一个国家或地区连接国际互联网所拥有的带宽资源
  • VMware Workstation Pro 16.2.4安装教程

    VMware Workstation Pro 16 2 4 安装教程 文章目录 VMware Workstation Pro 16 2 4 安装教程 下载最新版VMware 双击打开 自定义安装位置 把 去掉 点击下一步 等待安装 点击许可
  • 主从服务器 共用文件,Docker+keepalived+nginx实现主从热备的方法示例

    前言 为解决单点故障 我们需要配置主从热备方案 服务器数量有限 故使用Docker模拟安装配置 本次配置默认已经安装了Docker 配置环境 centos7 64位 docker版本 Docker version 17 12 1 ce bu
  • Apache Storm之集群安装

    1 环境 storm 1 2 1 Java 7 storm 1 x对java 7 和 java 8均进行了测试 Pytho 2 6 6 Python 3 x理论上也可以 但是并不作为storm的测试 以上是storm的环境 如果不匹配的ja
  • python-异常处理汇总

    1 需求 当程序遇到问题时 不让程序结束 而越过错误继续向下执行 格式 try 语句t except 错误码 语句1 except 错误码 语句2 except 错误码 语句3 except 错误码 语句n else 语句e 注意 else
  • 数字IC秋招面试专题(二)verilog的signed和unsigned

    数字IC秋招面试专题 二 verilog的signed和unsigned 前言 一 右值按signed还是unsigned 二 signed的自动扩位 三 系统函数 signed 和 unsigned 总结 声明 未经作者允许 禁止转载 推
  • ​【UI界面】Foobar2000 FlatLite 整合版

    Foobar2000 是一款本地音乐播放器 这里我就不再做介绍了 不懂的请自行了解 此 Foobar2000 FlatLite 主题包为整合版本 下载既可用 主题界面是模块化的 JS 面板 每个面板都是独立的 面板里的图标也是由 JS 脚本
  • JAVA字符串的两种定义方式的区别

    关于JAVA中两种字符串定义方式的区别 第一次写 就当复习总结一下 希望能帮到需要的人吧 我们知道在JAVA中 对于字符串的实例化方式有两种 直接赋值 String str Hello World 构造方法实例化 String str ne
  • 编写dylib_如何使用第三方的dylib

    展开全部 所谓dylib 就是bsd风格的动态库 基本可以认为等价于e5a48de588b63231313335323631343130323136353331333339663331windows的dll和linux的so mac基于bs
  • car

    本篇介绍如何检验回归结果是否符合模型假设 以及样本中是否存在异常点 本篇使用的主要工具包是car 包名是Companion to Applied Regression的缩写 该包提供了许多用于模型检验的函数 初始模型如下 library c
  • HTML快速参考指南

    目录 HTML 基础文档 文本元素 逻辑样式 物理样式 链接 锚 图像元素 无序列表 有序列表 定义列表 表格 框架 表单 实体 其他元素 HTML 基础文档 Visible text goes here 文本元素 p This is a
  • windows下编写shell脚本完美解决换行问题$'\r': command not found

    前面已经写过另外一边关于解决编写shell脚本换行的问题 即在Linux下执行命令 sed i s r g 文件名称 比如 sed i s r g host1 sh 今天是另外一种方式解决 使用ultraEdit软件编写shell脚本 新建
  • 【mysql】出现 slow sql 问题及建议

    文章目录 1 SQL 执行什么情况下会变慢 2 影响 SQL 语句执行效率的主要因素有哪些 3 慢 SQL 是如何拖垮数据库的 4 最佳实践建议 1 SQL 执行什么情况下会变慢 数据量增加 数据库中的数据量可能会逐渐增加 导致查询变慢 查
  • Python 常用写法

    时间 1 now import datetime now datetime now nowStr now strftime now Y m d H M S list 1 分割最后一个 arr str rsplit 1 2 数组 加索引 en
  • 学习C++项目——select模型,poll模型和epoll模型

    学习计算机网络编程 一 思路和学习方法 本文学习于 C语言技术网 www freecplus net 在 b 站学习于 C 语言技术网 并加以自己的一些理解和复现 如有侵权会删除 接下来应该是网络编程部分最难也是最常用的部分 同时在这一章我
  • 系统分析与设计——UML图总结

    一 前言 期末考试之前 我复习系统分析与设计的时候对UML图做了一些知识汇总 现在放到博客上 如果有不对或不恰当的地方 欢迎各位指正 本文仅仅起记录作用 可随意转载 荣幸之至 截图来自网络或是老师的PPT 二 概述 系统模型的三个主要部分
  • flutter 键盘挡住输入框问题

    bool isShowKeyboard false double keyboardSize 260 软键盘高度 类添加with WidgetsBindingObserver 生命周期监听器 class SendRedEveDialogSta
  • 浏览器上实现CNN可视化——清楚看到每一层卷积后的图

    目录 本文作用 CNN神经网络可视化工具1 解释器学习笔记 CNN神经网络可视化工具2 本文作用 学习卷积神经网络时 我们只知道输入一张图片后 通过一顿操作 便可以提取图片中的特征 我们对于其内部的操作 只有理论了解 并没有做到眼见为实 这
  • 使用cloudflare tunnel免费内网穿透,实现网站的外网访问和远程桌面

    前言 Cloudflare Tunnel是Cloudflare Zero Trust中的一个产品 它能够帮助用户将位于内网中的服务暴露到公网上 从而使得外部用户可以通过互联网访问这些服务 相比较于frp ngrok等内网穿透工具 使用Clo