用了多年的 ssh -D 作为 OpenWRT 的后端,今日才发现 OpenSSH 实现的 -D 参数的 SOCKS 协议只支持 TCP CONNECT 命令,不支持 UDP;所以我的软路由一直不支持代理 UDP。

另外,由于目前的构架偏复杂:

  1. 需要运行 http2tcp
    1. 提供 TCP over HTTPS
  2. 需要运行 SSH
    1. 提供本地的 SOCKS5 端口绑定;
    2. 提供 TCP Multiplexing。

导致部署偏复杂,运维成本较高。所以拟重写部分组件:

  • 重写当前的 http2tcp 实现,以支持作为 package 供外部使用
  • 实现一个同时支持 TCP & UDP 转发的 SOCKS 协议端
    • 找到的开源版本不太好用,重写
    • 发现我根本不需要处理 SOCKS 请求细节,直接转发给服务器即可
  • 支持 Multiplexing 以将 SOCKS5 协议通过 http2tcp 转发
桃子的碎碎念 桃子 编辑