更改 cloudflared 使用的协议

最近在树莓派上跑了一些服务,用 Cloudflare Tunnel 进行公网访问,但偶尔会出现断连的情况。

虽然我没有在 log 里确认断连的原因,但根据这篇文章的情况,可能是因为 cloudflared 强制使用的 QUIC 协议基于 UDP,而 UDP 有时会受到国内运营商的阻断。因此只需要更改协议即可。

由于我没有使用 dockers 进行部署,所以要更改 cloudflared 的启动命令并不是非常简单,尤其是在官方文档和可执行文件的帮助信息都不太完整的情况下。最终在文档和网上其它讨论的帮助下解决了。

  1. 按照 Tunnel 管理界面的指示,安装服务。

    1
    sudo cloudflared service install <TOKEN VALUE>
  2. 编辑 cloudflared.service

    1
    sudo systemctl edit --full cloudflared.service
  3. 更改运行命令,指定使用 http2

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [Unit]
    Description=cloudflared
    After=network-online.target
    Wants=network-online.target

    [Service]
    TimeoutStartSec=0
    Type=notify
    ExecStart=/usr/bin/cloudflared --no-autoupdate --protocol http2 tunnel run --token <TOKEN VALUE>
    Restart=on-failure
    RestartSec=5s

    [Install]
    WantedBy=multi-user.target
  4. 重启服务。

    1
    sudo systemctl restart cloudflared

更改 cloudflared 使用的协议

https://cekavis.site/cloudflared-protocol/

Author

Cekavis

Posted on

2024-11-20

Updated on

2024-11-21

Licensed under

Comments