使用cloudflare tunnel免费内网穿透
使用cloudflare tunnel免费内网穿透
1.介绍
Cloudflare Tunnel是Cloudflare Zero Trust中的一个产品,它能够帮助用户将位于内网中的服务暴露到公网上,从而使得外部用户可以通过互联网访问这些服务。相比较于frp、ngrok等内网穿透工具,使用Cloudflare Tunnel可以获得更好的安全性和性能。
在使用前,需要先注册一个Cloudflare账号,然后开通Cloudflare Zero Trust服务,选择免费套餐就可以了。此外,还需要注册一个自定义域名,然后将其添加到Cloudflare的DNS服务中。腾讯云、阿里云、华为云等云服务商都提供了域名注册服务,选一个便宜的就可以了。
2.安装
安装Cloudflared, 这是Cloudflare Tunnel的命令行工具,可以在Linux、MacOS、Windows上运行,选择对应的版本下载即可。
Linux
在Linux上,可以直接下载二进制文件,并给以可执行权限,比如安装amd64版本:
1 | curl -L 'https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64' -o ./cloudflared |
Windows
下载Windows版本的二进制文件,比如
cloudflared-windows-amd64.exe
,然后复制到自己定义的目录里,名字改为cloudflared.exe
。
3.登录
以Linux为例,如果是Windows,需要打开PowerShell进行操作,并将’cloudflared’替换为cloudflared.exe。
输入命令进行登录:
1 | cloudflared tunnel login |
输入命令后,会给出一个URL,打开浏览器访问这个URL,选择需要授权的网站。
4.创建Tunnel
创建一个Tunnel,名称可以自定义,比如
web
:
1 | cloudflared tunnel create <tunnel-name> |
创建成功后,会返回一个Tunnel ID,类似于
f7b0c0e0-0c0e-0c0e-0c0e-0c0e0c0e0c0e
。
5.配置DNS记录
使用如下命令配置DNS,其中的
<tunnel-name>
是创建Tunnel时指定的名称,<domain>
是自定义的域名,比如web.example.com
:
1 | cloudflared tunnel route dns <tunnel-name> <domain> |
如果还有其他域名需要配置,可以继续执行上面的命令。配置完成后可以前往Cloudflare控制台查看到CNAME记录。
6.编写配置文件
Linux的配置文件路径为
~/.cloudflared/config.yml
,Windows的配置文件路径为%USERPROFILE%\.cloudflared\config.yml
,如果文件不存在,可以手动创建。配置文件内容如下,注意根据注释修改配置:
1 | # Tunnel UUID,就是同目录下的json文件的文件名 |
配置完成后,验证一下配置文件是否正确:
1 | cloudflared tunnel ingress validate |
7.测试运行
输入如下命令启动Tunnel:
1 | cloudflared tunnel --config ~/.cloudflared/config.yml run <tunnel-uuid> |
访问刚才配置的域名,如果能正常访问,说明配置成功。或者前往Cloudflare Zero Trust的控制台查看Tunnel的状态。
8.配置开机自启动
目前我们所有的命令执行都需要手动操作,这显然是不放便的,因此需要配置开机自启动。
Linux
执行如下命令:
1 | cloudflared service install |
注意:创建系统服务后,配置文件会被拷贝到/etc/cloudflared/config.yml,后续修改配置必须修改新文件
Windows
以管理员身份打开cmd,然后进入存放cloudflared.exe的目录,执行如下命令:
1 | 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
服务,右键重新启动即可。
9.配置多个tunnel
如果是运行多个
tunnel ID
,可以分开创建config.yml
1
2
3
4
5
6
7
8 cd /home/xxx/.cloudflared/
mkdir test1
cd test1
touch config.yml
cd /home/xxx/.cloudflared/
mkdir test2
cd test2
touch config.yml这样启动时候分别指向配置文件即可
1
2 cloudflared tunnel --config ~/.cloudflared/test1/config.yml run <tunnel-uuid>
cloudflared tunnel --config ~/.cloudflared/test2/config.yml run <tunnel-uuid>
10.一个tunnel
配置多个地址
如果只有一个
tunnel
,可以指定一个配置文件,在配置文件中指定多个地址。
1
2
3
4
5
6
7
8
9
10 tunnel: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
credentials-file: /home/xxx/.cloudflared/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json
protocol: h2mux
ingress:
- hostname: web.example.com
service: http://127.0.0.1:5244
- hostname: web2.example.com
service: http://127.0.0.1:6000
- service: http_status:404