trojan+nginx共用443端口
in Linux

Views

当远端服务器的443与80端口已经运行着Http Server后, 如何复用端口以允许trojan同样监听443呢?

配置需求

  • Web Server

  • 两套SSL证书签名

基本原理

trojan的基本原理大概如下图, 但好像不完全正确:


图片来源: Trojan 工作原理浅析

实际上在我们的实现中, 是利用SSL SNI(Server Name Indication)技术在nginx上实现分流转发…

Nginx开放80与443端口, 接收外来请求, 通过stream设置为: 当请求443端口且SSL SNI选择某个特定子域名后, 则转发给后台的trojan服务端口, 而其余情况下则默认发往Web服务端口.

而在trojan的配置中, remote addr则设置为专门为trojan启用的另一个Nginx Web服务端口, 该端口不需要SSL认证, 认证的证书和密钥存放在trojan配置文件中, trojan会为我们进行认证.

具体配置如下: 但你不知道



后记

没几天就G了, 效果甚至不如v2ray + ws + tls的组合…….一个猜测是因为子域名用了比较简单的字符串, 另一个原因是传统的trojan报文头已经能被检测(大概率)

暂时不主力用自建了, 只能当备用感觉, 而且感觉不够一劳永逸…..


修改记录:
  • 2022-12-12 15:41:18更新了trojan的使用结果
  • 2022-12-08 20:28:04trojan+nginx共用443端口