title: Cloudflare Argo Tunnel(cloudflared) 转发私网端口到公网(不限速) author: zaqai date: 2023-12-31 20:18:03.170302 tags:
Cloudflare Argo Tunnel(cloudflared) 转发私网端口到公网(不限速)
Cloudflare真是私人网站管理员的一大利器, 它最为人熟知的功能是CDN和域名托管服务, 但由于Cloudflare是国外的, 如果在国内使用了它的CDN, 可能非但不能达到加速的效果, 反而会减速, 我的博客套上它的CDN之后就慢了很多.
但作为财大气粗的公司(1.1.1.1 这么nb的IP都拿到了), 它的其他功能也都很强大, 重要的是免费的计划对于大部分私人网站都够用了. 像workers, 可以提供类似云函数的功能, 即访问特定网址, 会执行你编写的js代码, 从而实现网站反向代理, 配合它的KV存储, 也可以实现短网址和文本分享的功能.
今天要为大家介绍的是它的隧道功能, 相对于内网穿透, 它的优点是不用公网服务器, 而且速度还相当可观.
准备
-
一个被Cloudflare托管的域名(如果不知道怎么配置, 自行去百度)
-
cloudflared软件包: Releases · cloudflare/cloudflared (github.com)
各种平台, 包括arm(像什么树莓派, 斐讯n1都可以用)
创建隧道
chmod +x ./cloudflared-linux-arm64
mv cloudflared-linux-arm64 /usr/bin/cloudflared
cloudflared tunnel login
# 此时会出现一个链接, 点击在浏览器打开, 选择你的域名
# 完成后会有一个cert.pem文件在~/.cloudflared目录下
cloudflared tunnel create 隧道名
# 隧道名随意, 如zq-tunnel
# 此时会为该隧道生成一个id
cloudflared tunnel route dns 隧道名 前缀.域名
# 隧道名即为上一步所填写, 前缀自定义, 注意不能是已经解析过的前缀, 如tunnel.zaqai.com, 这一步cloudflared会自动为tunnel添加cname
编写配置文件
tunnel: [隧道id]
credentials-file: /root/.cloudflared/[隧道id].json
ingress:
- hostname: tunnel.zaqai.com
service: http://localhost:8080
- service: http_status:404
启动隧道
cloudflared tunnel --config ~/.cloudflared/config.yml run
此时访问https://tunnel.zaqai.com, 即可访问到你私网服务器的8080端口
通过以下命令启动可保持后台运行:
nohup cloudflared tunnel --config ~/.cloudflared/config.yml run > ~/.cloudflared/tunnel.log 2>&1 &
也可以通过cloudflared service install
将cloudflared变为systemctl管理的服务(centos)
速度
当然不是, 因为校园网限速大概在2MB/s
没错啦, 我用我的千兆vps测的下载速度, 是我家的宽带上传速度上限了.
多个端口
如果想要转发多个端口, 可以这样修改配置文件:
tunnel: [隧道id]
credentials-file: /root/.cloudflared/[隧道id].json
ingress:
- hostname: tunnel.zaqai.com
service: http://localhost:8080
- hostname: tunnel2.zaqai.com
service: http://localhost:8081
- service: http_status:404
要注意tunnel1
也必须cname的值和tunnel
相同
其他
也许有人会说, ipv6不香吗? 确实香, 我在家里的时候配好的ipv6服务器, 到学校没几天ipv6就失联了, (还好留了一手, 弄了个zerotier), 现在就靠隧道来用服务器了
也可以转发ssh的22端口, 但我还没有成功
回复