V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cocoking
V2EX  ›  程序员

Cloudflare Tunnel 是如何做到无开放端口而进行通信的?

  •  
  •   cocoking · 2022-08-06 20:11:31 +08:00 · 5491 次点击
    这是一个创建于 870 天前的主题,其中的信息可能已经有所发展或是发生改变。

    介绍: https://www.cloudflare.com/zh-cn/products/tunnel/

    Cloudflare 的一款免费的隧道软件,介绍中说不需要开放设备的任何一个端口,那如何通讯呢??

    另外,用过的同学也可以分享一下跟 frp 相比效果怎么样?

    14 条回复    2022-08-18 18:41:20 +08:00
    miyuki
        1
    miyuki  
       2022-08-06 20:23:54 +08:00
    一端没公网那就另一端有公网呗
    xmh51
        2
    xmh51  
       2022-08-06 20:26:58 +08:00
    Tunnel 后台程序在您的源 web 服务器和 Cloudflare 最近的数据中心之间创建一条加密隧道——无需打开任何公共入站端口。 这个说的很明白了吧。
    eason1874
        3
    eason1874  
       2022-08-06 20:28:52 +08:00
    frp 内网穿透怎么通讯,它就怎么通讯,原理是一样的, 只是实现不一样

    你的电脑 > (frp > 服务器) = Cloudflare Tunnel > 用户
    Nitroethane
        4
    Nitroethane  
       2022-08-06 20:34:32 +08:00
    文档的意思是不需要向公网开放端口。部署并配置好 cloudflared 后,你的服务器会主动跟 cf 的服务器建立一条加密隧道,然后通过 cf 的网关将你内网的服务暴露到公网。
    frp 跟 cf tunnel 的原理类似,只不过用 frp 的话,你得有一台拥有公网 IP 的服务器。而用 cf 的话就不需要,直接用的是 cf 的服务器。
    这种模式在这两年开始流行主推的零信任中使用的比较多。
    wslzy007
        5
    wslzy007  
       2022-08-06 22:05:23 +08:00
    可以了解一下 SG 的原理:
    内服务器和内客户端通过外网服务器建立加密 P2P 隧道,实现内网服务器和内网客户端间通讯,此时内网服务器和内网客户端都没有任何监听端口。
    github.com/lazy-luo/smarGate
    ZE3kr
        6
    ZE3kr  
       2022-08-06 22:08:10 +08:00 via iPhone   ❤️ 1
    多数情况下防火墙只会禁止流入的流量,但依然允许客户端主动开临时端口与外部建立连接(所以半开放了端口)。无论是你浏览网页还是 Tunnel 都是客户端临时开端口与外部建立 TCP 连接。要是真的不开所有端口那你都没法浏览网页
    ZE3kr
        7
    ZE3kr  
       2022-08-06 22:10:08 +08:00 via iPhone
    此外原文其实说的很明白:“无需打开任何公共入站端口”,并不是你描述里说的“不需要开放设备的任何一个端口”
    butanediol2d
        8
    butanediol2d  
       2022-08-06 23:40:18 +08:00 via iPhone
    Cloudflare Tunnel 好像是基于 wireguard 的?错了的话拍我

    反正我体验下来国内是不咋好用
    ZeroClover
        9
    ZeroClover  
       2022-08-07 00:01:28 +08:00   ❤️ 1
    @butanediol2d 你说的那是 Cloudflare WARP

    Cloudflare Tunnel 是类似 GRE 的
    momocraft
        10
    momocraft  
       2022-08-07 00:14:56 +08:00
    那句話的意思大概是不需要 listen 端口
    ysc3839
        11
    ysc3839  
       2022-08-07 07:49:40 +08:00 via Android
    意思应该是不需要外部主动连入你的设备,只需要你的设备主动连出,这样可以解决防火墙阻止外部连入的问题。
    wwqgtxx
        12
    wwqgtxx  
       2022-08-07 08:11:19 +08:00
    @ZeroClover 根据客户端可选参数,实际上目前能选择的是 http2 和 quic
    totoro625
        13
    totoro625  
       2022-08-07 10:11:37 +08:00
    @butanediol2d #8 你可能需要在前面加个梯子,毕竟是国外的服务器,而且被用烂了
    Lentin
        14
    Lentin  
       2022-08-18 18:41:20 +08:00 via iPhone
    @wwqgtxx 还有 h2mux 似乎是 cf 优化版的 h2
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   987 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:23 · PVG 05:23 · LAX 13:23 · JFK 16:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.