ubuntu免费内网穿透 Cloudflare Tunnel教程
优劣比较
优点
不需要自建服务器;免费;带宽很高;可以跨运营商;不必在客户端上安装软件;无需备案;支持HTTP3/QUIC;不限服务数量。缺点
延迟高抖动高(免费版的Cloudflare隧道服务器都在国外);国内暂不支持HTTP3/QUIC;暂不支持UDP;安装 cloudflared
这里介绍两种安装 cloudflared 的方式,分别对应不同场景,deb
包的方式安装。
通过软件源安装
以 Ubuntu 20.04 LTS 为例。 国内通过这一方式安装速度较慢,故不再推荐该方式。
1 2 3 4 5 6 7 |
# 添加源,<RELEASE>内填写版本代号(见下表) echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/ <RELEASE> main' | sudo tee /etc/apt/sources.list.d/cloudflare-main.list # 添加GPG Key sudo curl https://pkg.cloudflare.com/cloudflare-main.gpg -o /usr/share/keyrings/cloudflare-main.gpg # 安装 apt update&&apt install cloudflared |
代号 | 版本 |
---|---|
Focal | 20.04 |
Xenial | 16.04 |
Wily | 15.10 |
Vivid | 15.04 |
Utopic | 14.10 |
Trusty | 14.04 |
Precise | 12.04 |
通过软件包/二进制文件安装
打开 Release 页面并选择对应架构和操作系统的deb、rpm包或二进制文件下载即可。 手动更新:这一方式无法自动更新 Cloudflared 服务。现在通过deb
包安装的cloudflared
也能通过apt
服务更新了(会自动添加Key和source到系统中)。
cloudflared update
。
配置内网穿透
登录到 Cloudflare Tunnel
1
|
cloudflared tunnel login
|
~/cloudflared/cert.pem
中。
创建隧道
1
|
cloudflared tunnel create <Tunnel-NAME>
|
<Tunnel-NAME>
即为隧道名称,随便起就可以。
创建配置文件
配置文件的保存位置一般是~/.cloudflared/config.yml
,也可以自定义随便在哪都可以。
示例配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
tunnel: 6ff42ae2-765d-4adf-8112-31c55c1551ef credentials-file: /root/.cloudflared/6ff42ae2-765d-4adf-8112-31c55c1551ef.json protocol: http2 originRequest: connectTimeout: 30s noTLSVerify: false ingress: - hostname: gitlab.widgetcorp.tech service: http://localhost:80 - hostname: gitlab-ssh.widgetcorp.tech service: ssh://localhost:22 - service: http_status:404 |
ingress
字段可以创建多个服务,支持的服务类型如下表,新建其他服务前需要到 Cloudflare 控制台对其他子域名进行解析。
服务名称 | 描述 | service 示例值 |
---|---|---|
HTTP/S | 常规网页服务 | https://localhost:8000 |
TCP | TCP 连接 | tcp://localhost:25565 |
SSH | SSH 连接 | ssh://localhost:22 |
RDP | 远程桌面(RDP) | rdp://localhost |
上表转自 Cloudflare 官方文档,仅节选常用协议,若需要完整版请至 Ingress rules 页面查看。
将隧道解析到域名上
1
|
cloudflared tunnel route dns <Tunnel-NAME> <SUBDOMAIN>
|
<Tunnel-NAME>
填写刚才创建的隧道,<SUBDOMAIN>
填写你想用于内网穿透的子域名(该子域名无需提前创建),执行后会自动将隧道解析到该子域名上。
举例:在刚才的配置文件中配置了两个服务,就需要运行两次:
1 2 |
cloudflared tunnel route dns <Tunnel-NAME> gitlab.widgetcorp.tech cloudflared tunnel route dns <Tunnel-NAME> gitlab-ssh.widgetcorp.tech |
手动解析其他子域名
打开 Cloudflare 控制台 ,点击左侧网站
,点击对应的域名,左侧DNS
,找到刚才设置的子域名,将之前自动设置的子域名的解析内容复制到新子域名上就可以。
试运行
1 2 |
cloudflared --config <config-File> tunnel run <Tunnel-NAME> # 例:cloudflared --config /root/.cloudflared/config.yml tunnel run mytun |
注册为系统服务(自动安装)
1
|
cloudflared service install
|
注册为系统服务(Systemd)
在/etc/systemd/system
下创建cloudflared.service
文件:
1 2 3 4 5 6 7 8 9 10 11 12 |
[Unit] Description=Cloudflare Tunnel After=network.target [Service] ExecStart=cloudflared --config <config-File> tunnel run <Tunnel-NAME> Restart=always RestartSec=5 StartLimitInterval=0 [Install] WantedBy=multi-user.target |
systemctl enable cloudflared
加入开机启动,systemctl start cloudflared
启动服务。
查询日志:journalctl -a -u cloudflared
。
部分服务(ingress)配置示例
VNC
这里以RealVNC Server为例。
1 2 |
- hostname: vnc.example.com service: tcp://localhost:5900 |
本站网络名称: 配主机
本站永久网址: www.peizhuji.com
网站侵权说明: 本站采用 CC BY-NC-SA 4.0 国际许可协议 进行许可,转载或引用本站文章应遵循相同协议。
1. 本站为转载分享站点,不提供任何上传下载服务。
所有内容均来自互联网第三方分享站点所提供的公开引用内容。
不需要任何付费即可公开阅读,部分GG仅为作为服务器维护费用。
2. 本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
3. 本站信息来自网络收集整理,版权争议与本站无关。
您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
4. 如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。
我们非常重视版权问题,如有侵权请邮件与我们联系处理。
敬请谅解!我们会在24h内删除有争议的资源。唯一站长邮箱:1103606138@qq.com