免费的内网穿透方案cf隧道--Cloudflare Argo Tunnel--Cloudflare Tunnel

zsanjin 发布于 2024-01-16 361 次阅读


强烈建议使用cloudflared的时候用本站原创工具,由于大陆网络特殊性,本工具能让网页、服务确保无人值守不掉线

[本站原创工具]隆重推出ZsanUptime–监控网页状态并更新异常网页的DNS

强烈建议查看配套教程,使用内网穿透与wsl2的Linux子系统共同成为一个高容量高性能的服务器,再也不用租高价低配的服务器啦:

试试 WSL2?它是一款免费、极速的服务器解决方案,再也不用租高价低配的服务器啦!

cf隧道的常见问题–Cloudflare Argo Tunnel–-Cloudflare Tunnel

免费的内网穿透方案cf隧道–Cloudflare Argo Tunnel–Cloudflare Tunnel

 

另外也有免费的公网ip穿透方案,不过有速率和流量限制:https://www.natfrp.com/

 

Cloudflare Argo Tunnel,俗称cf隧道(应该都这么叫),和warp一样,是Cloudflare Zero Trust的产品,初衷是将流量用cloudflare来代理,隐藏真实IP和端口,安全性能相比较于frp、ngrok等内网穿透工具要更好。

 

使用cloudflare tunnel的前提是你已经注册cloudflare账号并且域名在cloudflare上解析,开通Cloudflare Zero Trust服务,选择免费套餐就可以了,免费的额度足够个人用户使用了。点此注册开通Cloudflare Zero Trust,最好有信用卡,没有信用卡也能开通,但本章就非信用卡注册不做进一步指导, Zero Trust👉https://one.dash.cloudflare.com/

 

从github上下载cloudflare tunnel的工具,Linux、MacOS、Windows都有适配,选择自己跟自己设备相应的版本即可,

安装和配置好后,就能享受比传统方法更安全、稳定的网络连接。

https://github.com/cloudflare/cloudflared/releases/latest

Github-Card

 

以Linux-amd64版本为例,配置运行cf隧道,另外windows的cmd,powershell使用的命令基本一致,只有路径和启动命令不一样

1、下载cloudflared

在/home/文件夹下,下载cloudflared并给执行权限,Windows则一般直接下完'cloudflared-windows-amd64.exe',然后复制到自己定义的目录里,名字改为'cloudflared.exe'。即可:

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

chmod +x ./cloudflared

2、登录cloudflare

在当前文件夹下,执行cloudflare账号登录命令:

./cloudflared tunnel login

windows此命令

cloudflared tunnel login

输入命令后,会给出一个URL,打开浏览器访问这个URL,选择用于内网穿透的网站。

3、创建Tunnel隧道

创建一个Tunnel隧道,名称按自己记得住的来,比如'wordpress',windows同样用此命令,不加"./":

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

创建成功后,会返回一个Tunnel ID,类似于'ssd11451-1145-a114-b514-114514114514'。

4、配置DNS记录

使用如下命令配置DNS,其中的 <tunnel-name>是创建Tunnel时指定的名称,<domain>是自定义的域名,比如 www1.zsanjin.com,windows同样用此命令,不加"./":

./cloudflared tunnel route dns <tunnel-name> <domain>
# 例如
./cloudflared tunnel route dns wordpress www1.zsanjin.com

如果还有其他域名需要配置,可以继续执行上面的命令,也可以自己在cloudflare的控制台自行添加dns解析,结果都是一样的。

5、编写配置文件

Linux的配置文件路径默认为/root/.cloudflared/config.yml,如果有多个隧道,可以将config.yml命名为你习惯的格式,比如config-wordpress.yml或者config1.yml 配置文件内容如下,注意根据注释修改配置,这里依然以命名为config.yml,但是把配置文件移动到/home,为例,注意,windows此处的文件在C:\Users\[YourUsername]\.cloudflared\config.yml,配置内容与Linux通用:

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

tunnel: ssd11451-1145-a114-b514-114514114514

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

credentials-file: /home/.cloudflared/ssd11451-1145-a114-b514-114514114514.json

protocol: http2

  

# 服务配置

ingress:

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

  - hostname: www1.zsanjin.com

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

    service: http://127.0.0.1:5000

  - hostname: www2.zsanjin.com

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

    service: rdp://localhost:3389

  # 最后添加一个默认404

  - service: http_status:404

官方文档:cloudflared tunnel官方文档

配置完成后,验证一下配置文件是否正确 ,windows同样用此命令,不加"./":

./cloudflared tunnel ingress validate

6、测试运行

可选设置启用ICMP:由于运行cloudflared的用户的组ID(GID)不在ping_group_range范围内,导致无法正确设置ICMP代理。这可能需要将用户添加到该范围内的组,或修改/proc/sys/net/ipv4/ping_group_range以包括用户已在的组。
因此,ICMP代理功能被禁用。

创建新用户和组(如果还没有):

adduser cloudflared

将用户添加到ping_group_range范围内的组,通过查看文件/proc/sys/net/ipv4/ping_group_range来实现。使用命令:

cat /proc/sys/net/ipv4/ping_group_range

这将显示两个数字,形如X Y,表示当前允许执行 ping 操作的用户组ID范围是从X到Y。

sysctl命令或直接编辑文件的方式来修改ping_group_range的范围。例如,如果你想将范围设置为从1到1000,可以使用:

sudo sysctl -w net.ipv4.ping_group_range="1 1000"

重启后不保留。为了使更改永久,可以将net.ipv4.ping_group_range的命令直接添加到/etc/sysctl.conf或类似的系统配置文件中

 

Linux直接测试:输入如下命令启动Tunnel,注意路径和权限,把cloudflared配置文件设置为可读取,用户组归属cloudflared

./cloudflared tunnel --config /home/.cloudflared/config.yml run <tunnel-uuid>
# 例如
./cloudflared tunnel --config /home/.cloudflared/config.yml run ssd11451-1145-a114-b514-114514114514

Windows则使用:

cloudflared tunnel --config %USERPROFILE%\.cloudflared\config.yml run <tunnel-uuid>
#列如
cloudflared tunnel --config %USERPROFILE%\.cloudflared\config.yml run ssd11451-1145-a114-b514-114514114514

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

7、设置为系统服务,并开机启动

7.1、Linux:服务文件通常位于/etc/systemd/system/目录下。例如,您可以创建一个名为cloudflared-1.service或者名为cf-wp.service的文件方便后期多隧道分开管理,最好做个笔记,知道自己再哪个配置文件里面代理了哪些网页。

nano /etc/systemd/system/cloudflared-1.service

在文件中添加以下内容,注意自己的路径:

[Unit]
Description=Cloudflare-1 Tunnel
After=network.target

[Service]
Type=simple
User=cloudflared
ExecStart=/home/cloudflared tunnel --config /home/.cloudflared/config.yml run ssd11451-1145-a114-b514-114514114514
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

重载systemd的配置以确保系统识别这些变化。这可以通过运行以下命令来完成:

systemctl daemon-reload

保存服务文件后,使用以下命令启动并使服务在开机时自动启动:

systemctl enable cloudflared-1
systemctl start cloudflared-1

为了确保服务已正确启动并运行,可以使用以下命令检查其状态:

systemctl status cloudflared-1

 

7.2、Windows:创建批处理文件,打开记事本或其他文本编辑器。编写启动 cloudflared 的命令,确保替换 <tunnel-uuid> 为您的隧道UUID。例如:

@echo off
cloudflared tunnel --config %USERPROFILE%\.cloudflared\config.yml run <tunnel-uuid>

保存这个文件时,选择“所有文件(.)”作为文件类型,并给文件一个 .bat 扩展名,例如 start_cloudflared-1.bat。

设置开机启动

  1. 使用任务计划程序:
    • 按下Windows键,搜索并打开“任务计划程序”。
    • 在右侧的“操作”栏中,选择“创建基本任务...”。
    • 给任务命名,例如 Start Cloudflared,点击“下一步”。
    • 选择“当我登录时”触发器,再点击“下一步”。
    • 选择“启动程序”,点击“下一步”。
    • 在“程序或脚本”中输入批处理文件的完整路径,例如 C:\path\to\your\start_cloudflared-1.bat。
    • 完成设置并保存任务。
  2. 测试任务:
    • 为了确保一切设置正确,您可以重新启动计算机并检查 cloudflared 是否自动启动。

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

cloudflared.exe access rdp --hostname web2.example.com --url localhost:3000
再打开windows远程桌面连接,计算机处填入 localhost:3000,设置好用户名和密码后点击连接即可。

完成这些步骤后,Cloudflare Tunnel将作为一个服务运行,并且在系统启动时自动启动。这样可以确保您的隧道在服务器重启后仍然保持运行状态,从而提供持续的内网穿透服务。

 

开始享受免费的内网穿透服务👍

 

另外在使用过程中会碰到一些问题,另开贴说明。

感谢请我吃辣条
感谢请我吃泡面
感谢请我喝奶茶