ihciah / shadow-tls

A proxy to expose real tls handshake to the firewall
https://www.ihcblog.com/a-better-tls-obfs-proxy/
MIT License
2.32k stars 265 forks source link

能支持多SNI多代理后端吗? #77

Open ArchGuyWu opened 1 year ago

ArchGuyWu commented 1 year ago

通过不同的SNI把流量送去不同代理后端进行处理,比如这样可以使在同一端口下,有AES硬件加速和无AES硬件加速的设备在使用shadowsocks代理后端时同时获得最佳性能

ayanami-desu commented 1 year ago

请看wiki,应该是支持的

ArchGuyWu commented 1 year ago

@ayanami-desu 多SNI是支持的,但不支持多后端

ihciah commented 1 year ago

支持按SNI分流到多个被代理服务器。

ArchGuy @.***>於 2023年3月3日 週五,下午7:05寫道:

@ayanami-desu https://github.com/ayanami-desu 多SNI是支持的,但不支持多后端

— Reply to this email directly, view it on GitHub https://github.com/ihciah/shadow-tls/issues/77#issuecomment-1453360765, or unsubscribe https://github.com/notifications/unsubscribe-auth/AANA34JRTYFFCVUTFHDHTADW2HGAHANCNFSM6AAAAAAVNP7T74 . You are receiving this because you are subscribed to this thread.Message ID: @.***>

ArchGuyWu commented 1 year ago

好的,那该怎么填写呢?

ihciah commented 1 year ago

大概这种格式: cloudflare.com:1.1.1.1:443;captive.apple.com;cloud.tencent.com

host 留空则直接使用原域名;port 留空则默认 443。最后一个配置会同时被视作 fallback。 如果不想预定义 mapping 并接受滥用风险,可使用新版本新增的 wirdcard-sni 功能,具体使用方式和风险请 --help

ArchGuyWu commented 1 year ago

大概这种格式: cloudflare.com:1.1.1.1:443;captive.apple.com;cloud.tencent.com

host 留空则直接使用原域名;port 留空则默认 443。最后一个配置会同时被视作 fallback。 如果不想预定义 mapping 并接受滥用风险,可使用新版本新增的 wirdcard-sni 功能,具体使用方式和风险请 --help

但我是想分流到不同ss代理

liqsliu commented 1 year ago

不行的话,可以在前面套个nginx

ihciah commented 1 year ago

目前不支持分流到多个ss。非要弄的话可以级联的方式部署多个shadowtls,不过会有点影响性能。 (部署nginx对ss分流无效)

love4taylor commented 1 year ago

shadow-tls => nginx 真实 IP 如何处理呢,套 CF 的倒是能通过 http 头拿,直接解析的站就没什么好办法了

ihciah commented 1 year ago

shadow-tls => nginx 真实 IP 如何处理呢,套 CF 的倒是能通过 http 头拿,直接解析的站就没什么好办法了

确实。。我能想到的有两个办法:

  1. IP_TRANSPARENT: 连接本地 ss 时 bind 请求方的 ip
  2. 走 Proxy Protocol 传递连接元信息

这两个方案我没做详细的调研,实施起来应该都有一定局限性:第一个方案仅限 linux 且如果对于 ss 部署在非本地的情况还需要额外处理路由规则;第二个方案仅对支持 Proxy Protocol 的特定后端生效。

如果只是为了事后追查,简单起见也可以翻 log 去 match 一下2333