如何用Argo Tunnel实现服务器内网互联并分配固定本地IP
解决Argo Tunnel分配固定私有IP并跨服务器访问的方案
一、先在Cloudflare后台配置私有网络段
登录Cloudflare Zero Trust控制台,进入Networks > Tunnels > Private Networks,点击「Add a private network」,输入一个专属私有IP段(比如10.0.0.0/24),这个段用来给你的后端实例分配固定IP。
二、给后端服务器的隧道绑定固定私有IP
方式1:修改运行命令
把你原来的启动命令改成这样:
/root/cloudflared tunnel --no-autoupdate run --token $TUNNEL_TOKEN --protocol http2 --private-network 10.0.0.1/32 $TUNNEL_NAME
这里10.0.0.1就是给当前后端实例分配的固定私有IP,每个后端实例用不同的IP(比如10.0.0.2、10.0.0.3),/32表示单个IP。
方式2:用配置文件(更稳定)
创建backend-config.yml配置文件:
tunnel: $TUNNEL_NAME credentials-file: /root/.cloudflared/$TUNNEL_TOKEN.json protocol: http2 no-autoupdate: true ingress: - service: http://localhost:8008 # 后端服务的本地监听地址 originRequest: noTLSVerify: true # 后端没配HTTPS的话开启这个 private-network: - 10.0.0.1/32 # 绑定的固定私有IP
然后用配置文件启动:
/root/cloudflared tunnel run --config backend-config.yml
三、前端服务器部署Cloudflared并加入私有网络
前端服务器也得装Cloudflared,并且加入同一个私有网络才能访问后端的固定IP:
- 安装Cloudflared(和后端操作一致)
- 创建
frontend-config.yml:
tunnel: $FRONTEND_TUNNEL_NAME # 前端自己的隧道,要先在Cloudflare后台创建并拿token credentials-file: /root/.cloudflared/$FRONTEND_TUNNEL_TOKEN.json protocol: http2 no-autoupdate: true private-network: - 10.0.0.0/24 # 和之前配置的私有IP段一致
- 启动前端的Cloudflared:
/root/cloudflared tunnel run --config frontend-config.yml
四、前端访问后端固定IP
现在前端的Nginx可以直接用proxy_pass http://10.0.0.1:8008访问后端服务,和访问本地机器完全一样。
可以在前端服务器上用curl http://10.0.0.1:8008验证,能拿到后端响应就说明配置成功。
注意事项
- 所有隧道必须属于同一个Cloudflare账户的同一个Zero Trust组织
- 私有IP段别和你现有网络的IP段冲突
- 后端多端口服务直接用
IP:端口访问就行
内容的提问来源于stack exchange,提问作者Alireza
相关产品推荐
相关产品推荐

