CloudFlare Tunnel
背景:
家中设备处于内网NAT环境,希望使用CF tunnel构建内网穿透的环境。
有了CF tunnel后,可实现:
-
家中的NAS可以直接SSH
-
AWS的云服务可迁到到NAS
-
NAT主机借助CF tunnel部署服务
步骤:
cloudflare创建tunnels
打开cfdash
路径: Networks -> Tunnels -> 创建一个Tunnerl
参考教程
server端使用dokcer部署server-side daemon
我选择docker部署,建议先在server端运行,观察是否正常。
下面是compose
我修改network_mode为host模式,方便映射宿主机的服务
services:
cloudflare-tunnel:
image: cloudflare/cloudflared
container_name: cloudflare-tunnel
hostname: cloudflare-tunnel
restart: unless-stopped
network_mode: "host"
command: tunnel run
environment:
- "TUNNEL_TOKEN=123"
network_mode: "host"
让容器和宿主机共用一个网络
TUNNEL_TOKEN
修改为tunnel提供的token
docker compose up -d
执行即可
通过SSH访问server
官方教程:(SSH · Cloudflare Zero Trust docs)
公私钥部分忽略
下载客户端
window powershell下载cloudflared
winget install --id Cloudflare.cloudflared
遇到网络问题,可以为powershell通过代理解决
$env:HTTP_PROXY="http://127.0.0.1:9090"
$env:HTTPS_PROXY="http://127.0.0.1:9090"
修改ssh配置
~/.ssh/config 添加域名信息,Host 后修改为自己的内容
Host apple.apple.apple.org
ProxyCommand C:\Program Files (x86)\cloudflared\cloudflared.exe access ssh --hostname %h
测试
ssh <username>@ssh.example.com
访问server端Web服务
由于server端使用dokcer部署server-side daemon,已经让容器和宿主机共用一个网络。我们只需要在Public hostnames
添加新的映射即可。
访问试了一下,速度嘎嘎快。而且http自动转为为https。
NAT主机借助CF tunnel部署服务也是一个原理。这文主要记录我的部署过程,梳理思路,做纪录使用。