Clash: 可以增加支持trojan吗?

Created on 5 Oct 2019  ·  51Comments  ·  Source: Dreamacro/clash

可以增加支持trojan吗?

Most helpful comment

@caesarjing 加上了

All 51 comments

请给出 trojan 相对于 vmess、ss 的好处以及 trojan 是否有 spec

我自己再测试一段时间先。

请给出 trojan 相对于 vmess、ss 的好处以及 trojan 是否有 spec

trojan确实很不错。他的最大优势就是不怕防火墙的封禁。试图整合trojan,但是失败了。要是clash能原生支持就好了

@jackwonglstc 我没看出来 trojan 相对于 vmess + wss 或者 ss + v2ray-plugin 在 "不怕防火墙的封禁" 的差别在哪

@jackwonglstc 我没看出来 trojan 相对于 vmess + wss 或者 ss + v2ray-plugin 在 "不怕防火墙的封禁" 的差别在哪

Trojan和vmess+wss的区别在于:
Trojan是一个非常正常的HTTPS流,所有的加密代理内容都在https payload中。这就会使探测它非常难,使用重放攻击来探测也很难。(它本质上类似一个加密的网页,密码不对就给别的页面,密码对了就给正确页面)。
vmess+ws+tls的方式中,是正常的TLS流,但对于重放攻击探测则没有办法防止。
所以,在实践中发现,不走CDN,搭建以上两种不同的服务,当使用频繁后,后者是会被探测后阻断的,前者Trojan不会。(客户端在BJ,电/联/移/歌4个ISP均如此)

@adrianzhang 首先你要知道 WebSocket 是基于 HTTP 的,所以两者都是所谓的 “HTTPS” 流。

所以,在实践中发现,不走 CDN,搭建以上两种不同的服务,当使用频繁后,后者是会被探测后阻断的,前者 Trojan 不会。(客户端在 BJ,电/联/移/歌 4 个 ISP 均如此)

有什么详细的对比数据吗

@adrianzhang 首先你要知道 WebSocket 是基于 HTTP 的,所以两者都是所谓的 “HTTPS” 流。

所以,在实践中发现,不走 CDN,搭建以上两种不同的服务,当使用频繁后,后者是会被探测后阻断的,前者 Trojan 不会。(客户端在 BJ,电/联/移/歌 4 个 ISP 均如此)

有什么详细的对比数据吗

前面说的有些问题。纠正一下:
1) Trojan套了一个密码的伪装,直接探测给的是一个页面(在配置中redirct到http,所以是将http端口的页面给到https)。比较v2的直接就给websocket,多了一层防止主动探测的功能。
2) 但是二者对于重放攻击探测都没法隐藏。
3) 详细对比数据暂时没有。在过去几年中的使用情况是,无论是直接v2+ws+tls还是v2+vmess+动态端口,都用不了几个月,尤其是在重要节日,稳定可靠的方式只能是+CDN。Trojan使用不到一年,目前看没有阻断,但不排除未来也会被加入阻断,毕竟对于重放也是没有办法。

请给出 trojan 相对于 vmess、ss 的好处以及 trojan 是否有 spec

其实主要是占内存小,大型机场可以用,而且速度稍微快一点点,至于防墙和加密方面我不太懂

@Riddle233 说道小 ss 也很小,v2ray-plugin 也出了有一段时间了,没太看出 trojan 有什么特别的东西

同请支持trojan

@caesarjing 说出靠得住脚的增加支持的原因

@caesarjing 说出靠得住脚的增加支持的原因

https://github.com/trojan-gfw/trojan GitHub 上现在已经有6.9k星,代码更新频繁。目前SS协议全面被识别,越来越多机场开始放弃支持SS并开始支持Trojan及V2Ray协议。目前市面上尚无对Trojan协议支持较好的GUI软件,从流行度上来讲,引入Trojan在未来可协助引入更多的用户开始使用Clash及Clash周边软件(如各GUI客户端),Clash可成为支持所有主流协议的软件。

@caesarjing 说出靠得住脚的增加支持的原因

https://github.com/trojan-gfw/trojan GitHub 上现在已经有6.9k星,代码更新频繁。目前SS协议全面被识别,越来越多机场开始放弃支持SS并开始支持Trojan及V2Ray协议。目前市面上尚无对Trojan协议支持较好的GUI软件,从流行度上来讲,引入Trojan在未来可协助引入更多的用户开始使用Clash及Clash周边软件(如各GUI客户端),Clash可成为支持所有主流协议的软件。

  1. SS 全面被識別?什麼時候的事情
  2. 我們本來就沒有要「吸引」用戶使用 Clash 的意圖,所以沒有必要為了這個 hype 支持
  3. 我相信作者是希望你提出技術上的理由說服他

@caesarjing 说出靠得住脚的增加支持的原因

https://github.com/trojan-gfw/trojan GitHub 上现在已经有6.9k星,代码更新频繁。目前SS协议全面被识别,越来越多机场开始放弃支持SS并开始支持Trojan及V2Ray协议。目前市面上尚无对Trojan协议支持较好的GUI软件,从流行度上来讲,引入Trojan在未来可协助引入更多的用户开始使用Clash及Clash周边软件(如各GUI客户端),Clash可成为支持所有主流协议的软件。

  1. SS 全面被識別?什麼時候的事情
  2. 我們本來就沒有要「吸引」用戶使用 Clash 的意圖,所以沒有必要為了這個 hype 支持
  3. 我相信作者是希望你提出技術上的理由說服他
  1. 请参考 https://gfw.report/blog/gfw_shadowsocks/
  2. 没错。所以这是一个情愿帖。希望能够增加对Trojan的支持
  3. 这个还是留给专业的人吧。我没能力回答了。

Trojan 在维护, 而v2ray 作者已经一年没出现了, 只剩几个志愿者偶尔修一修bug,已经不可能有新功能了.

tls 1.3 我记得就是不支持的.

ss + v2ray-plugin 伪装成指定域名的流量, 请求的数据只是看起来像伪装域名的正常 http 流量。

trojan 要求服务器的 80 和 443 端口都开启, 而且必须要增加 https,让请求数据都是正常的 http 数据,而不是伪装请求数据。因为它可以处理正常 https 数据和经过 CA 加自定义密码加密的数据。当数据经过 CA 加密和自定义密码加密,trojan 能解密这些数据,就使用配置的代理来处理数据,否则使用默认 web 来处理请求。

ss + v2ray-plugin 和 vmess 相对于 trojan 都没有配置 CA, 直接检测请求数据,通过大量的检测,可以得到一些特征码,可以判断出流量是什么类型。
trojan 的数据是经过 CA 加密和自定义加密,解密数据首先需要 CA 证书,再经过自定义解密。假设使用的不是内网颁发的 CA,解密难度系数大,可能这就是大家认为 trojan 更好的原因。

@deppan 你的理解是错误的,ss + v2ray-plugin 走 tls 和 trojan 一样都是真 tls,不存在所谓的「CA 加密」,你应该去了解一下什么是公有 CA 和私有 CA,以及 TLS 的工作方式,两者都可以使用公有 CA 和私有 CA。至于你说的「就使用配置的代理来处理数据,否则使用默认 web 来处理请求。」我想这个只要稍稍配置一下 nginx 或 caddy 就能解决,毕竟我想不会有人真的把 tls 卸载这层放到 trojan 或者 v2ray-plugin 来做吧?

@Dreamacro 我理解错了, ss + v2ray-plugin 是真 tls

Trojan 在维护, 而v2ray 作者已经一年没出现了, 只剩几个志愿者偶尔修一修bug,已经不可能有新功能了.

tls 1.3 我记得就是不支持的.

首先,可以仔细看下Golang 1.12的Release notes中Core library部分,
第一段即为TLS1.3:

Go 1.12 adds opt-in support for TLS 1.3 in the crypto/tls package as specified by RFC 8446. It can be enabled by adding the value tls13=1 to the GODEBUG environment variable. It will be enabled by default in Go 1.13.

然后可以仔细看看v2ray v.4.18.1的Release notes

Enable TLS1.3 Support

请问这个叫做不支持tls 1.3吗?

同希望支持trojan

反正说要trojan的都是被油管那位腹语大师洗脑来的。
客观说trojan优势,就是配置简单,同样带宽性能消耗低些,反过来就是同性能转换更多带宽。

确实是被油管UP主洗脑的。只能说trojan现在开发比较活跃,要说什么技术类的东西。没啥新花样。。比V2RAY还少一层加密。大墙想找只不过是时间问题。只不过墙那点人懒,毕竟用的人少。

反正说要trojan的都是被油管那位腹语大师洗脑来的。都是ws tls,重复造轮子没多大创新

小内存、性能一般的vps上Trojan有很明显的优势,大家认为同等安全的tls 1.3下,Trojan的开销也要少一点,线路好的情况下能跑到更高速。

trojan相比vmess只是内存占用好一点,” 毕竟我想不会有人真的把 tls 卸载这层放到 trojan 或者 v2ray-plugin 来做吧”,v2Ray不是也支持TCP+TLS吗?

希望支持 trojan,用了一段时间,感觉比 v2ray 要快一些,用联通可能感觉不出来,但鹏博士宽带的感觉还是很明显的

Trojan我覺得除了給機場省事就沒什麼新Feature
實在想用就前置一個代理,Clash走本地socks

On Wed, Mar 4, 2020 at 10:16 PM, 王龙彪 notifications@github.com wrote:

希望支持 trojan,用了一段时间,感觉比 v2ray 要快一些,用联通可能感觉不出来,但鹏博士宽带的感觉还是很明显的


You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Trojan我覺得除了給機場省事就沒什麼新Feature 實在想用就前置一個代理,Clash走本地socks

On Wed, Mar 4, 2020 at 10:16 PM, 王龙彪 @.*> wrote: 希望支持 trojan,用了一段时间,感觉比 v2ray 要快一些,用联通可能感觉不出来,但鹏博士宽带的感觉还是很明显的 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

我现在就是这样用的,clash 走的本地 socks,要是能支持 trojan,就能少开一个程序了,而且安卓上也会更方便。

正在用 Go 实现一个 Trojan,实现好了集成到 Clash 应该会很容易

作者一带路 争论就偏了。这调调,要证明trojan 比 vmess ss 强所以才会考虑添加trojan支持。那vmess 各个协议作者也跑个分吧 只把最强的那个留下。vmess ss 也比较一下 最强者留下好不好。当然 添加不添加一个协议支持 自然是您作者说了算 不喜欢trojan就大大方方的说嘛。

@jfdnet trojan 没有对应的 go 语言实现,需要在 clash 中加入的话我需要把 trojan 用 go 实现一遍。这是一件花费时间精力但对我没任何用处的东西(因为我现在不用)。再者说,如果一出现一个新的协议,便不考虑任何事增加一个新的协议,那么 clash 的体积便可能再也控制不住的越来越大,v2ray 多大你可以下个看看。

如果你真的想要加 trojan 你可以提一个 pull request, 而不是在这阴阳怪气的揶揄我。

作者一带路 争论就偏了。这调调,要证明trojan 比 vmess ss 强所以才会考虑添加trojan支持。那vmess 各个协议作者也跑个分吧 只把最强的那个留下。vmess ss 也比较一下 最强者留下好不好。当然 添加不添加一个协议支持 自然是您作者说了算 不喜欢trojan就大大方方的说嘛。

首先表明我的態度:我不喜歡Trojan,但是我也不否認Trojan確實十分的簡單
關於你所說的性能比較,我認爲有根本上的問題。

  • Vmess和Trojan本身沒什麼可比性,只能將WSS和Trojan對比纔會有可比性

  • WSS本身是雙重加密,和只有一層加密相比性能差不多還不滿意?

  • Trojan更容易被MitM
    Trojan原理上就比WSS快,還說什麼最強者?安全和速度在一定程度上就是矛盾的兩個東西
    最後,如作者所說,如果你很想要Trojan,你可以自己fork一份來開發或提交Pull request

@Mr-Sheep WSS 是 TLS + Websocket,Trojan 可以简单看做是 TLS + 一个代理传输协议 (\r\n 分割的有点类似 HTTP)。WSS 没有双重加密,有的话可能你是指 TLS + vmess。MitM 的话我觉得两者差不多

我是想說TLS + Vmess,之前沒有說清楚
但是如果僞造CA,Vmess還是能夠提供一層保障吧

正在用 Go 实现一个 Trojan,实现好了集成到 Clash 应该会很容易

@saito-mayumi 不知老兄的go版本trojan实现得怎样了

那个trojan的安卓客户端不是已经支持clash 了么,技术上应该已经可行了。https://github.com/trojan-gfw/igniter

@heham @wongsyrone 这个项目也 import 了 clash,如果我这支持了 trojan,他那边能更好实现的话,那我这边可以做 trojan 的支持。

@heham @wongsyrone 这个项目也 import 了 clash,如果我这支持了 trojan,他那边能更好实现的话,那我这边可以做 trojan 的支持。

感谢!知道这个项目还是通过那个才找到的,惭愧!其实作为业余用户来说我是说不上谁好谁坏,但是多一个目前还算流行的协议对用户来说总是好事的,只不过就是要多辛苦想你们这样的开发者了。再次表示感谢。

@Dreamacro 个人认为Clash这边不用增加专门trojan的东西,如果有必要可以增加专门停止所有goroutine的接口,在gomobile中,runtime不会被停止,会运行直到整个App System.exit 了

@wongsyrone 目前 tunnel 里面创建的 goroutine 不能停,但是可以关闭所有 tcp、udp 的代理连接(关闭后相应的 goroutine 也会停),剩下几个队列的 goroutine。

增加 trojan 的难度应该不是很大,估计和 snell 差不多

关闭所有 tcp、udp 的代理连接

这个应该就足够了,那边关闭go-tun2socks之后这边就算有监听,也不会处理了

@wongsyrone DefaultManager 能拿到实例,读取快照 (Snapshot) 里面就有所有的连接了

@Dreamacro 好的,我看看代码

@Dreamacro 感谢考虑增加trojan支持

@caesarjing 我希望加入 xx 协议的时候,考虑的是这个协议本身是否有亮点或者是否有价值,而不是因为哪个 youtuber 做了一个「评测」视频而盲目的请求支持。

@caesarjing 我希望加入 xx 协议的时候,考虑的是这个协议本身是否有亮点或者是否有价值,而不是因为哪个 youtuber 做了一个「评测」视频而盲目的请求支持。

其实我个人只是希望协议多到墙都识别不过来,那就等于没墙了。(如果每多一个协议,墙就需要花个几亿美金增加硬件做识别的话,那我觉得我们应该促进更多新的协议的孵化和诞生,而不是把他扼杀在苗苗里)

@Dreamacro 感谢回复。从技术角度我是小白,我认可您的观点。我是从流行度的角度考虑请求支持,毕竟在GitHub上本身Trojan已经开始有很高的热度,并不是因为油管上有人做了怎样的测评所以就来请求支持了。

@caesarjing 加上了

原来加入trojan之前还有这么一场精彩的讨论。我作为小白免费享受作者的辛苦劳作得来的果实,只能默默说一句谢谢了。

我最近才上手用Clash,真的好香啊。

谢谢作者,clash很好用

我觉得相比其他协议,trojan最大的价值是节约了1到2个握手的rtt. 不知道是否可以通过乐观原则,让http/socks在没有收到服务器确认之前就开始发送数据,以达到相同效果? @Dreamacro

反正说要trojan的都是被油管那位腹语大师洗脑来的。
客观说trojan优势,就是配置简单,同样带宽性能消耗低些,反过来就是同性能转换更多带宽。

哪位腹语大师,没看到有人吹trojan,至少v2搭建麻烦一点,不过视频都是用一键脚本的所以没啥区别。。

Was this page helpful?
0 / 5 - 0 ratings

Related issues

OneHappyForever picture OneHappyForever  ·  3Comments

nobody-65534 picture nobody-65534  ·  3Comments

xdaniel9 picture xdaniel9  ·  3Comments

mchotdograp picture mchotdograp  ·  5Comments

Tsahao picture Tsahao  ·  4Comments