本文介绍如何在VPS上搭建Trojan服务器。

搭建前提: 已经拥有固定IP的VPS以及正确解析域名到VPS

Trojan原理简介

Trojan是一个比较新的翻墙软件,在设计时采用了更适应国情的思路。在穿透GFW时,人们认为强加密和随机混淆可能会欺骗GFW的过滤机制。然而,Trojan实现了这个思路的反面:它模仿了互联网上最常见的HTTPS协议,以诱骗GFW认为它就是HTTPS,从而不被识别。

工作原理 ListenListenValidInvalidRedirectto 443

如图所示,Trojan工作在443端口,并且处理来自外界的HTTPS请求,如果是合法的Trojan请求,那么为该请求提供服务,否则将该流量转交给web服务器Nginx,由Nginx为其提供服务。基于这个工作过程可以知道,Trojan的一切表现均与Nginx一致,不会引入额外特征,从而达到无法识别的效果。当然,为了防止恶意探测,我们需要将80端口的流量全部重定向到443端口,并且服务器只暴露80和443端口,这样可以使得服务器与常见的Web服务器表现一致。

一键脚本搭建Trojan服务器

使用Randy’s 堡垒维护的 Trojan 一键安装脚本,需求及特性如下:

  • 系统支持centos7+/debian9+/ubuntu16+
  • 域名需要解析到VPS并生效
  • 需要VPS开放80、443端口
  • 脚本自动续签https证书
  • 自动配置伪装网站,位于/usr/share/nginx/html/目录下,可自行替换其中内容
  • Trojan不能用CDN,不要开启CDN

开始搭建

  1. SSH连接到VPS后台,进入root用户
sudo -i
  1. 安装必须的依赖组件
yum -y install wget    ##ContOS Yum 安装 wget

or

apt-get install wget   ##Debian Ubuntu 安装 wget
  1. 复制以下命令在VPS中执行,选择安装trojan

安装过程中输入解析到VPS的域名并回车(不要带http://,只输入域名,例如tr.laobaitu.xyz),开始安装,然后等待安装完成即可

注意:如果提示SELinux状态问题,请按要求输入Y重启VPS,然后再执行本脚本,否则可能https证书申请出错

ycurl -O https://raw.githubusercontent.com/atrandys/trojan/master/trojan_mult.sh && chmod +x trojan_mult.sh && ./trojan_mult.sh
  1. (可选)安装bbr,原版即可
cd /usr/src && wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

自动生成的Windows客户端

安装完成后,会展示一条下载地址,复制地址,并下载下来即可。

如果你真的忘记下载了,那么进入/usr/share/nginx/html/目录下,找到一个乱码文件夹,进入会看到客户端文件,使用sftp下载下来即可。

该客户端提供的是Socks5代理,可以根据需要进行转发、透明代理等一系列操作。

查看/修改Trojan密码

一键安装脚本会随机生成一个密码,记录在server.conf文件中,打开该文件即可查看或修改密码。

在服务器端打开文件:

cat /usr/src/trojan/server.conf

文件内容大概如下:

{
    "run_type": "server",
    "local_addr": "0.0.0.0",
    "local_port": 443,
    "remote_addr": "127.0.0.1",
    "remote_port": 80,
    "password": [
        "your_password_here"
    ],
    "log_level": 1,
    "ssl": {
        "cert": "/usr/src/trojan-cert/fullchain.cer",
        "key": "/usr/src/trojan-cert/private.key",
        "key_password": "",
        "cipher_tls13":"TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
"prefer_server_cipher": true,
        "alpn": [
            "http/1.1"
        ],
        "reuse_session": true,
        "session_ticket": false,
        "session_timeout": 600,
        "plain_http_response": "",
        "curves": "",
        "dhparam": ""
    },
    "tcp": {
        "no_delay": true,
        "keep_alive": true,
        "fast_open": false,
        "fast_open_qlen": 20
    },
    "mysql": {
        "enabled": false,
        "server_addr": "127.0.0.1",
        "server_port": 3306,
        "database": "trojan",
        "username": "trojan",
        "password": ""
    }
}

如果想修改代码,就编辑该文件,修改your_password_here保存后重启trojan服务:

sudo systemctl restart trojan

同时客户端的密码也要修改,保持一致。

后记

不使用一键脚本也可以手动搭建Trojan服务器,可以自己完全掌握安装的内容。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注