基于 Cloudflare Tunnel 实现内网穿透
Cloudflare Tunnel 可以像 frp 一样实现内网穿透,特别适用于想公网访问宽带网络或者无固定IP的私有网络。frp 需要一台具有公网IP的服务器作为Server端来转发流量,Cloudflare Tunnel则无需你自己购买这样的服务器,利用免费的 Cloudflare Edge Server 即可实现内网穿透,对于个人开发者或者轻度使用非常友好。
服务端配置(被公开的服务器)
- Setup
Cloudflared1
2
3
4
5# Mac 版本
brew install cloudflare/cloudflare/cloudflared
# 其他版本
# https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/tunnel-guide/local/#set-up-a-tunnel-locally-cli-setup - Login
1
2
3# 登录cloudflare,成功后会生成 ~/.cloudflared/cert.pem
# cloudflare需要配置自己的域名并创建一个应用(主要用于后续做DNS映射)
cloudflared tunnel login - Create a tunnel
1
2# 创建tunnel,请记住tunnel的uuid,记不住可以使用 cloudflared tunnel list
cloudflared tunnel create vpc - Create configuration file
1
2
3
4
5
6
7
8
9
10# ~/.cloudflared/config.yml
# 以下配置文件做了两个服务的映射,一个ssh,一个http站点
ingress:
- hostname: ssh.bomee.xyz
service: ssh://localhost:22
- hostname: html.bomee.xyz
service: http://localhost:8080
- service: http_status:404
tunnel: 1c025733-a2ec-4ec5-8d3a-9c9d6775e49b # 上面创建的tunnel id
credentials-file: ~/.cloudflared/1c025733-a2ec-4ec5-8d3a-9c9d6775e49b.json # 登录后的认证文件 - Create DNS route
1
2cloudflared tunnel route dns 1c025733-a2ec-4ec5-8d3a-9c9d6775e49b ssh
cloudflared tunnel route dns 1c025733-a2ec-4ec5-8d3a-9c9d6775e49b html - Run
1
cloudflared tunnel run
客户端配置(访问的主机仅ssh需要)
1 | # 编辑ssh配置 vim ~/.ssh/config |