Total Pageviews

Friday, 23 November 2018

利用trojan翻墙

登陆Linux vps.(建议在kvm vps操作)
apt-get -y install build-essential cmake libboost-system-dev libboost-program-options-dev libssl-dev default-libmysqlclient-dev

git clone https://github.com/trojan-gfw/trojan
cd trojan
mkdir build
cd build
cmake ..
make
(在当前目录下,会生成可执行文件trojan)
make install
(会生成/usr/local/bin/trojan和/usr/local/etc/trojan/config.json)
或者直接下载https://github.com/trojan-gfw/trojan/releases/download/v1.9.0/trojan-1.9.0-linux-amd64.tar.xz
解压,解压出来的可执行文件即可拿来使用。

root@wh:~/trojan/build# ./trojan -h
Welcome to trojan 1.9.0
usage: ./trojan [-htv] [-l LOG] [-k KEYLOG] [[-c] CONFIG]
options:
  -c [ --config ] CONFIG (=/usr/local/etc/trojan/config.json)
                                        specify config file
  -h [ --help ]                         print help message
  -k [ --keylog ] KEYLOG                specify keylog file location (OpenSSL 
                                        >= 1.1.1)
  -l [ --log ] LOG                      specify log file location
  -t [ --test ]                         test config file
  -v [ --version ]                      print version and build info
(可见默认的配置文件为/usr/local/etc/trojan/config.json)

root@wh:~/trojan/build# nano /usr/local/etc/trojan/config.json
root@wh:~/trojan/build# cat /usr/local/etc/trojan/config.json
{
    "run_type": "server",
    "local_addr": "0.0.0.0",
    "local_port": 2443,
    "remote_addr": "127.0.0.1",
    "remote_port": 80,
    "password": [
        "password1",
        "password2"
    ],
    "log_level": 1,
    "ssl": {
        "cert": "/root/.acme.sh/mydomain.com/mydomain.com.cer",
        "key": "/root/.acme.sh/mydomain.com/mydomain.com.key",
        "key_password": "",
        "cipher": "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256",
        "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": ""
    }
}
root@wh:~/trojan/build#

从配置文件的这2行
"remote_addr": "127.0.0.1",
"remote_port": 80,
可以看出,需要安装一个webserver,apache或nginx均可。还需要替你的域名mydomain.com(mydomain.com当然需要指向服务器的ip)申请证书,比如letsencrypt的免费证书。按此文https://briteming.blogspot.com/2018/10/acmeshletsencryptssl.html,申请你的域名的免费ssl证书。按上面所显示的/usr/local/etc/trojan/config.json文件的内容编辑你的/usr/local/etc/trojan/config.json文件。然后,
root@wh:~/trojan/build# ./trojan -c /usr/local/etc/trojan/config.json

不过命令./trojan -c /usr/local/etc/trojan/config.json是运行在前台的,我们可以利用systemd来把该命令运行为service:
nano /etc/systemd/system/trojan.service
其内容为:
[Unit]
After=network.target 

[Service]
ExecStart=/root/trojan/build/trojan -c /usr/local/etc/trojan/config.json
Restart=always

[Install]
WantedBy=multi-user.target

然后运行:
systemctl start trojan
systemctl enable trojan
服务器端搭建完成。

在本地机器mac上。
mkdir trojan-1.9.0-macos
cd trojan-1.9.0-macos

wget https://github.com/trojan-gfw/trojan/releases/download/v1.9.0/trojan-1.9.0-macos.zip
unzip trojan-1.9.0-macos.zip
(释放出trojan目录)
cd trojan

yudeMacBook-Air:trojan brite$ ls

LICENSE config.json trojan
README.md examples
yudeMacBook-Air:trojan brite$ nano config.json
yudeMacBook-Air:trojan brite$ cat config.json
{
    "run_type": "client",
    "local_addr": "127.0.0.1",
    "local_port": 5080,
    "remote_addr": "mydomain.com",
    "remote_port": 2443,
    "password": [
        "password1"
    ],
    "append_payload": true,
    "log_level": 1,
    "ssl": {
        "verify": true,
        "verify_hostname": true,
        "cert": "mydomain.com.cer",
        "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305-SHA256:ECDHE-RSA-CHACHA20-POLY1305-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:RSA-AES128-GCM-SHA256:RSA-AES256-GCM-SHA384:RSA-AES128-SHA:RSA-AES256-SHA:RSA-3DES-EDE-SHA",
        "sni": "",
        "alpn": [
            "h2",
            "http/1.1"
        ],
        "reuse_session": true,
        "session_ticket": false,
        "curves": ""
    },
    "tcp": {
        "no_delay": true,
        "keep_alive": true,
        "fast_open": false,
        "fast_open_qlen": 20
    }
}
yudeMacBook-Air:trojan brite$

上面的这一行:
"cert": "mydomain.com.cer",里面的mydomain.com.cer就是从服务器上的/root/.acme.sh/mydomain.com/mydomain.com.cer下载下来的。

yudeMacBook-Air:trojan brite$ ls
LICENSE config.json mydomain.com.cer
README.md examples trojan
yudeMacBook-Air:trojan brite$ ./trojan -c config.json
保持这个terminal不要关闭。

然后,设置本地机器的浏览器的socks5代理服务器地址为127.0.0.1 ,端口:5080,浏览器即可翻墙。

https://github.com/trojan-gfw/trojan-manager ,在安装了ibmysqlclient和设置了mysql db后,还可以创建/删除用户账号。

参考:
https://trojan-gfw.github.io/trojan/build
https://trojan-gfw.github.io/trojan/usage
https://trojan-gfw.github.io/trojan/config
https://github.com/trojan-gfw/trojan/releases
https://github.com/trojan-gfw/trojan/wiki/Binary-&-Package-Distributions
https://github.com/trojan-gfw/trojan
https://wiki.archlinux.org/index.php/Trojan

从我第一次发布有关trojan的帖子https://briteming.blogspot.com/2018/01/trojan.html拖了10个月才搞定。
--------------

1. Introduction

Trojan GFW is described as "an unidentifiable mechanism that helps you bypass GFW. It imitates the most common protocol across the wall, HTTPS, to trick GFW into thinking that it is HTTPS."

Trojan documentation is located at:

https://trojan-gfw.github.io/trojan

The Github repository is located at:

https://github.com/trojan-gfw/trojan

In this post, we install Trojan GFW server on an Ubuntu 18.10 server and Trojan GFW client on a Windows 10 PC.

2. Obtain Domain Name

You can use a paid or a free domain name. We will obtain a free domain name from:

https://www.freenom.com

In this post, our example domain name is exdom.cf

3. Obtain VPS

In this post, we use a t2.micro instance from Amazon Web Services (AWS). The operating system is intially Ubuntu Server 18.04 LTS, although we will upgrade it to Ubuntu Server 18.10. The instance has 1 vCPU and 1 GB of memory. It has 8 GB of storage. In the security groups, the open ports are SSH TCP/22 from "My IP" only, and HTTP TCP/80 from "Anywhere" plus HTTPS TCP/443 from "Anywhere". Authentication is by a key pair consisting of a public key that AWS stores and a private key that you store.

After launch, AWS allocates the instance an IPv4 Public IP, for example, 18.19.20.21.

Back at the Freenom website, create a Freedom DNS "A" record pointing from www.exdom.cf to (in this example) 18.19.20.21.

4. Prepare VPS

SSH or PuTTY into the instance www.exdom.cf as the default user. On an AWS instance running Ubuntu 18.04, the default user is named ubuntu.

Update all the packages:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt autoremove

Now upgrade from Ubuntu 18.04 to Ubuntu 18.10. To do this, edit the sources list:

sudo vi /etc/apt/sources.list

Change all instances of bionic to cosmic. Write the sources list to disk, and quit the editor. Then completely update your system from Ubuntu 18.04 to Ubuntu 18.10:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt autoremove
sudo reboot

On AWS, you can use Security Groups to control access to port 22. On other VPS providers, you can use iptables as your firewall. For example, if your Windows 10 PC has a static IP address of 55.55.55.55:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -s 55.55.55.55/32 -j ACCEPT
sudo iptables -P INPUT DROP
sudo apt-get install iptables-persistent

If your VPS provider sent you a password by email, then change the password to something only you know:

sudo passwd ubuntu

Specify BBR congestion control algorithm in the system control configuration file:

sudo vi /etc/sysctl.conf

Add lines at the end:

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

Write the file to disk. Activate these changes:

sudo sysctl -p

5. Install Nginx Web Server

Open firewall ports for HTTP and HTTPS:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo dpkg-reconfigure iptables-persistent

Install Nginx web server:

sudo apt-get install nginx

Edit the default site definition:

sudo vi /etc/nginx/sites-available/default

Insert the real server name:

server_name www.exdom.cf;

Immediately below that, allow only sensible HTTP request codes:

if ($request_method !~ ^(GET|HEAD|POST)$ )
{
        return 405;
}

Add 1 hour of browser caching:

expires 1h;

Write the default site definition file to disk, and quit the editor.

Restart Nginx for these changes:

sudo systemctl restart nginx

6. Add Content to Web Site

You can add any content you like. This is just an example:

wget https://gitlab.com/lwyh/static/raw/master/w3css.tar.gz
tar -xzf w3css.tar.gz
sudo cp -rf w3css/* /var/www/html
sudo rm /var/www/html/index.nginx-debian.html

Allow time for your DNS entries to propagate. Then do an initial test of your website in a browser:

http://www.exdom.cf

7. Obtain SSL Certificate

Visit https://certbot.eff.org for instructions on how to get a free Let’s Encrypt SSL certificate for your distro. Install Certbot, which is the Let’s Encrypt client software:

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot

Press Enter to confirm addition of the personal package archive (ppa). Then continue:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install certbot

Run Certbot for Nginx to obtain your free SSL certficate:

sudo certbot certonly --webroot -w /var/www/html -d www.exdom.cf

Enter your email address
Enter a for agree
Enter y or n to say if you want your email address given to Electronic Frontier Foundation or not

If the verification is successful, you receive messages such as:

Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/www.exdom.cf/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/www.exdom.cf/privkey.pem

Make the certificate and key readable by any user:

sudo chmod +rx /etc/letsencrypt/live
sudo chmod +rx /etc/letsencrypt/archive
sudo chmod +r /etc/letsencrypt/archive/www.exdom.cf/privkey1.pem

Set everything up for SSL certificate renewal:

sudo certbot renew --dry-run

8. Install Trojan GFW

Future versions of Ubuntu include a precompiled package for Trojan GFW. We will manually compile and install the software instead.

Install prerequisite dependencies:

sudo apt -y install build-essential cmake libboost-system-dev libboost-program-options-dev libssl-dev default-libmysqlclient-dev

Clone the source code from Github:

git clone https://github.com/trojan-gfw/trojan.git

Build and install Trojan GFW:

cd trojan
mkdir build
cd build
cmake ..
make
ctest
sudo make install

9. Create Server Configuration File

Edit the server configuration file:

sudo vi /usr/local/etc/trojan/config.json

Modify the sample to use your password and your certificate and key:

{
    "run_type": "server",
    "local_addr": "0.0.0.0",
    "local_port": 443,
    "remote_addr": "127.0.0.1",
    "remote_port": 80,
    "password": [
        "Secret$$$123"
    ],
    "log_level": 1,
    "ssl": {
        "cert": "/etc/letsencrypt/live/www.exdom.cf/fullchain.pem",
        "key": "/etc/letsencrypt/live/www.exdom.cf/privkey.pem",
        "key_password": "",
        "cipher": "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256",
        "prefer_server_cipher": true,
        "alpn": [
            "http/1.1"
        ],
        "reuse_session": true,
        "session_ticket": false,
        "session_timeout": 600,
        "plain_http_response": "",
        "curves": "",
        "dhparam": ""
    },
    "tcp": {
        "prefer_ipv4": false,
        "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": ""
    }
}

Wtite the file to disk, and quit the editor.

10. Start Server

Enable and start Trojan GFW:

sudo systemctl enable trojan
sudo systemctl start trojan

Check that Trojan GFW is active and listening on port 443:

sudo systemctl status trojan
sudo netstat -tulpn

In a non-proxied browser, attempt to visit your website:

http://www.exdom.cf
https://www.exdom.cf

Both HTTP and HTTPS should display a normal website.

11. Download and Configure Windows Client

For the Windows client, visit:

https://github.com/trojan-gfw/trojan/releases

Download the latest client, e.g. trojan-1.12.2-win.zip.

Unzip the zip file.

Edit the config.json file, replacing the defaults with your domain name and password. For example:

{
    "run_type": "client",
    "local_addr": "127.0.0.1",
    "local_port": 1080,
    "remote_addr": "www.exdom.cf",
    "remote_port": 443,
    "password": [
        "Secret$$$123"
    ],
    "log_level": 1,
    "ssl": {
        "verify": true,
        "verify_hostname": true,
        "cert": "",
        "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305-SHA256:ECDHE-RSA-CHACHA20-POLY1305-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:RSA-AES128-GCM-SHA256:RSA-AES256-GCM-SHA384:RSA-AES128-SHA:RSA-AES256-SHA:RSA-3DES-EDE-SHA",
        "sni": "",
        "alpn": [
            "h2",
            "http/1.1"
        ],
        "reuse_session": true,
        "session_ticket": false,
        "curves": ""
    },
    "tcp": {
        "no_delay": true,
        "keep_alive": true,
        "fast_open": false,
        "fast_open_qlen": 20
    }
}

12. Run Windows Client

Open a Windows command prompt.

Change directory to C:\Users\YourUserName\Downloads\trojan-1.12.2-win\trojan.

Start the trojan.exe client application running:

trojan

The client will listen on localhost port 1080. You will see messages such as:

Welcome to trojan 1.12.2
[2019-05-16 04:49:45] [WARN] trojan service (client) started at 127.0.0.1:1080

Leave the Windows command prompt window open. Information messages will appear here in a moment, as you browse the Internet.

Now configure your browser to use the proxy on localhost port 1080.

On Firefox, you can do this under Network Connection Settings. Choose Manual proxy configuration; for SOCKS Host, put 127.0.0.1; for Port, put 1080; select SOCKS v5; check Proxy DNS when using SOCKS v5.

On Chrome, you can do this by installing and configuring SwitchyOmega to send traffic to the SOCKS5 proxy on 127.0.0.1 port 1080. Click Apply Changes, and select Proxy.

To test your Windows client in your browser, visit:

https://www.iplocation.net

When you have finished, stop the client running. In your Windows command prompt window, do Ctrl+c. A message appears, "trojan service stopped."
------------

Trojan一键脚本 centos7 docker版

Trojan的设计类似于v2ray+ws+tls,他更多的是解决了一个伪装问题,不要对高峰拥堵的线路抱有幻想,不提倡暴力发包,不要做”吵闹的邻居”,够用即可。
3、BBR是很好的,配合Trojan一起使用,自行安装。至于Trojan效果如何,和你的线路品质有较大关系,影响因素也挺多,自行体验吧。
4、本教程步骤比较碎,请耐心配置.
关于一键脚本
1、只测试了centos7,请在此系统下尝试安装。docker版,脚本稍作改动应该也可以适配其他系统,但官方有其他版本的安装命令,可以很方便的安装,暂时不管了。
2、脚本刚制作完成,测试了bwh的centos7.
3、Trojan的客户端目前并不算完美,他仅仅开启了并监听了本地端口,需要在软件中设置socks5指向他,例如chrome安装switchomega插件(下面会介绍)。
4、VPS需要是KVM架构,openvz不行,内核版本太低,无法正常安装docker。
5、脚本会给你的站点生成一个伪装网站,就是一个网页,你也可自行生成index.html,替换/usr/src/trojan/index.html即可。
步骤综述
1、申请一个域名,这里我们用免费域名演示。
2、一键脚本安装服务端
3、客户端配置+chrome插件配置
教程开始
1、申请免费域名,freenom.com
看完freenom教程,你应该申请了域名并绑定VPS IP,我这里演示域名为:91hub.ga
2、一键脚本安装服务端
登陆VPS,执行这条命令,直接回车,开始安装。
  1. curl -O https://raw.githubusercontent.com/atrandys/trojan/master/trojan_install.sh && chmod +x trojan_install.sh && ./trojan_install.sh
安装过程中需要输入:
1、你申请的域名:例如91hub.ga
2、密钥密码:随意设置一个5位密码,需要输入4次,此密码
3、验证密码:自行设置,客户端配置文件中的密码需要
如下图:
输入完成,等待安装完成即可,服务端就搭建完成了。
3、客户端配置
这里我们演示Windows客户端,首先下载客户端
客户端下载:Trojan.zip
下载后,解压得到trojan文件夹,打开文件夹,编辑config.json,修改其中的域名和验证密码(安装服务端时设置的验证密码
用ftp连接VPS,下载/usr/src/trojan/private.crt,存放到trojan客户端的文件夹.
然后,运行start.bat,开启Trojan服务,Trojan会监听本地1080端口。
电脑上其他软件如何使用Trojan:
1、如果软件支持配置socks5,直接指向127.0.0.1:1080即可。
2、如果软件不支持配置socks5,可选择sstap/sockscap64/supercap等软件,曲线实现代理。
之后你便可以自由上网,教程到此结束。

常见问题总结:
Trojan客户端无法运行,提示找不到vcruntime140.dll或找不到msvcp140.dll。
原因:缺少运行库,点击下载链接中的两个软件,一个是32位,一个是64位,请全部安装即可。
------------------------


Tro­jan一键脚本,支持 tls1.3,系统支持 cen­tos7+/​de­bian9+/​ubun­tu16+

系统要求及脚本介绍

1、系统支持 cen­tos7+/​de­bian9+/​ubun­tu16+
2、域名需要解析到 VPS 并生效。
3、脚本自动续签 https 证书
4、自动配置伪装网站,位于 /usr/​share/​ng­inx/​html/ 目录下,可自行替换其中内容
5、请不要在任何生产环境使用一键脚本,此条适用于本站所有脚本,专门用来科学上网的 VPS 可以随意使用。
6、tro­jan 不能用 CDN,不要开启 CDN
7、如果你在用谷歌云、阿里云等产品的时候,需要在控制台开放 80、443 端口。

安装

一键脚本
curl -O https://raw.githubusercontent.com/atrandys/trojan/master/trojan_mult.sh && chmod +x trojan_mult.sh && ./trojan_mult.sh
选择 1 安装 Tro­jan
中间会让输入域名
将提前解析到 VPS 的域名输入,不要开启 CDN,输入域名不要带 http:// 或 https://
例如:
baidu.com
XXX.baidu.com
注意:如果提示 SELinux 状态问题,请按要求输入 Y 重启 VPS,然后再执行本脚本,否则可能 https 证书申请出错

下载Windows客户端

安装完成后,会展示一条下载地址,复制地址,并下载下来即可。地址有效期为 1 小时.
如果忘记下载,进入 /usr/share/nginx/html/ 目录下,找到一个乱码文件夹,进入会看到客户端文件。
下载的客户端,解压后,双击 star.bat 开启.
双击 stop.bat 关闭.
已经配置好,不需要单独配置,配合浏览器插件 SwitchyOmega 使用.

其他问题

1、Trojan 客户端打开无法运行,提示缺少 vcruntime140.dll 或找不到 msvcp140.dll
原因缺少运行库,点击下载链接中的两个软件,一个是 32 位,一个是 64 位,请全部安装即可。
2、如果遇到 vcruntime140_1 的错误,下载下面的文件放到 C:\windows\system32 目录下即可.
点击下载 140_1.dll
3、Tro­jan 服务端怎么修改密码
Tro­jan 服务端配置文件路径如下,如需修改内容,修改以下文件即可。
/usr/src/trojan/server.conf
修改完成后,重启 tro­jan 服务端即可,同时客户端的密码也要同步修改。
systemctl restart trojan
4、关于申请证书没有成果的处理
可能的原因 1:
一些原因导致使用 nginx 申请证书时出错,要么防火墙端口没开放,要么 nginx 未正常。建议用最纯净的系统安装。
可能的原因 2:
出现这个问题最可能的原因之一是你的同一个域名多次申请证书,导致 let’s encrypt 官方的限制,同一域名每周最多 5 次申请。

如果你的同一个域名申请了很多此证书,这个处理方法可能有用:更换二级域名,例如原来使用的域名是 www.abc.com 或 abc.com 或 xyz.abc.com,那么现在你添加一个二级域名解析例如 xxx.abc.com,安装时使用这个域名即可。
转自:https://www.atrandys.com/2019/1963.html
https://github.com/atrandys/trojan
----------------------------------------------------------

用trojan-wiz一键安装trojan-gfw

安装前必须打开服务器的80和443端口

安装命令:

wget -N --no-check-certificate https://raw.githubusercontent.com/mark-hans/trojan-wiz/master/ins.sh && chmod +x ins.sh && sudo bash ins.s

支持的系统:
  • ubuntu 16.04+
  • debian 9(理论上应该支持debian 8)
  • centos 7+
from https://github.com/ace2417/trojan-wiz
-------

自建梯子教程 --Trojan

综述

本文简介

本文总结了自己在VPS搭建Trojan-GFW代理过程中遇到的各种坑,以及最后的解决方案,以供大家参考。
本文的宗旨在于,将大量重复性的工作集中到配置过程中,以让使用过程尽量简单。所以本文的配置过程相较于网上的某些教程稍微复杂一点,但是如果严格按照本文配置过程配置的话,那么配置完成之后服务器端就可以几乎不用搭理他了,然后客户端几乎是拿到手就可以使用,特别适合有好几个人一起共享的情况。
本文将按操作顺序介绍部署用于trojan代理服务的VPS服务器的详细过程,按照步骤操作一切正常的话一小时之内即可配置成功。如果配置过程中有什么疑问,欢迎在留言区交流!

Trojan工作原理浅析

Trojan是一个比较新的翻墙软件,在设计时采用了更适应国情的思路。在穿透GFW时,人们认为强加密和随机混淆可能会欺骗GFW的过滤机制。然而,Trojan实现了这个思路的反面:它模仿了互联网上最常见的HTTPS协议,以诱骗GFW认为它就是HTTPS,从而不被识别。 Trojan工作原理 如图所示,Trojan工作在443端口,并且处理来自外界的HTTPS请求,如果是合法的Trojan请求,那么为该请求提供服务,否则将该流量转交给web服务器Nginx,由Nginx为其提供服务。基于这个工作过程可以知道,Trojan的一切表现均与Nginx一致,不会引入额外特征,从而达到无法识别的效果。当然,为了防止恶意探测,我们需要将80端口的流量全部重定向到443端口,并且服务器只暴露80和443端口,这样可以使得服务器与常见的Web服务器表现一致。

前置条件


系统要求:Ubuntu >= 16.04 or Debian >= 9 or CentOS >= 7

域名申请与解析

trojan需要一个域名用来做伪装,所以需要先申请一个域名。如果你只是用来翻墙没有其他作用,那么建议注册一个免费域名即可。本教程使用freenom免费域名和cloudflareDNS为例。

如果自己已经有域名了那么可以不用申请,直接用一个子域名就可以了。如果你的域名不是在cloudflare购买,那么你有两个方案可用。1. 将你的域名转移到cloudflare解析,这个对于已经有域名的来说应该不难,就不多说了;2. 下文与cloudflare相关的部分自行参考这个文档做调整,也很简单,找到你自己的DNS服务商,按照指引操作即可。建议是先严格按照教程操作成功之后再改为自己的域名,否则难免出奇怪的问题。

freenom免费域名申请

我自己在使用Edge注册freenom的时候会失败,使用chrome才可以,你如果也失败了请换一个浏览器试试!
freenom在检测到ip对应的国家和你填写的个人信息不一致就会不允许你注册,所以要么不要挂VPN去申请域名,要么去网上生成虚拟美国人信息。
freenom注册地址在这里https://www.freenom.com,支持简体中文,可以自行切换。在寻找一个免费域名的输入框中输入自己理想的域名点击检查可用性,如图所示。检查到可用的中意的域名之后,点击现在获取即可锁定该域名。 检查域名可用性
现在可以点击完成按钮跳转到DNS配置和申请年限界面。点击Use DNS>>Use Frenom DNS Service。两个IP address框都直接输入0.0.0.0(这个没用,一会儿会改到cloudflareDNS)。Period选择12 Months @ FREE,然后点击Continue,输入并验证你的邮箱和信息即可。注意上面的提示,不要挂VPN,很多人会卡在验证账户的地方,一般都是挂了VPN导致的。
在freenom申请的免费域名是可以无限免费续期的,除非被人花钱抢注,所以自己每隔几个月回来续期一下就可以啦。反正这个域名只是拿来翻墙用,被人抢注了马上换一个成本也不大。如果介意这个的话,建议自己买付费域名,国外域名服务商推荐namecheap不要买国内域名服务商的域名使用期限设置

注册cloudflare

cloudflare注册地址在这里https://www.cloudflare.com,网页右上角有个Sign up就是注册的地方了,接下来就是注册并激活账号了。注册完成之后会让你添加你的网站,输入你刚才申请的网站之后点击Add site。 添加网站
接下来是一个提示页面,直接下一步即可。然后计划选择FREE就好,够用了,然后点击confirm plan。 cf计划
然后cloudflare会导入现有的DNS记录,你也可以自己再添加,也可以在这里修改,现在需要将DNS记录指向自己的服务器。假设你的服务器地址是10.10.10.10,那么如下图所示:将域名A记录指向你的服务器即可,www的A记录删除不用。如果IP地址是IPv6的,那么需要添加的是AAAA记录而不是A记录(客户端也得有IPv6地址才能连接上服务器)。vultr的服务器是IPv4和IPv6地址都有的,可以即添加A记录又添加AAAA记录,客户端会自动选择他将会使用的IP地址版本。添加好记录之后,点击continue。注意:不能使用CDN(On Cloudflare),即DNS记录后面的云需要是灰色的而不是橙色的,否则会导致握手失败无法连接上服务器,参考trojan issue 70 导入dns记录
接下来就是最关键的一步,将你的DNS服务器转移到cloudflare。在这里你可以看到cloudflare让你将ns01.freenom.com和ns02.freenom.com分别改为anna.ns.cloudflare.com和sid.ns.cloudflare.com(每个人的可能不会一样,请按照cloudflare的提示)。
现在登陆freenom,点击域名后面对应的Manage Domain。 freenomMG
然后定位到Management Tools>>Nameservers。将DNS服务器改为Use custom nameservers (enter below),然后在Nameserver 1和Nameserver 2输入cloudflare给的两个dns,如图所示,点击change Nameservers即可。然后回到cloudflare点击Continue。 修改dnsservers
此时cloudflare会检测你的dns服务器是否已经切换到了cloudflare,如果没有检测到已经切换的话,稍作等待即可。最终,DNS配置结果如下图所示,即 DNS配置结果

VPS服务器部署

跳过了上面系统选择与购买部分的要注意啦,本教程目前测试通过操作系统版本是Ubuntu 16.04 or Debian 9 or CentOS 7及以上,更低版本系统无法成功搭建,其他系统尚未测试!
跳过了上面系统选择与购买部分的要注意啦,本教程目前测试通过操作系统版本是Ubuntu 16.04 or Debian 9 or CentOS 7及以上,更低版本系统无法成功搭建,其他系统尚未测试!
跳过了上面系统选择与购买部分的要注意啦,本教程目前测试通过操作系统版本是Ubuntu 16.04 or Debian 9 or CentOS 7及以上,更低版本系统无法成功搭建,其他系统尚未测试!

远程工具安装

本文使用的第三方远程管理工具叫做Xshell。Xshell学生和家庭版是免费的,可以放心试用(觉得好用的话,不差钱的各位也可以注册一下支持软件开发者噢)。安装好Xshell之后即可开始连接服务器进行部署了。不过Xshell没有Mac端,所以Mac可以使用其他ssh客户端,甚至直接用终端都可以,用法大同小异。

连接服务器

启动Xshell,从菜单栏的文件->新建打开新建会话窗口如下图。会话名称随便取一个都可以,主机填写刚才记下来的服务器IP地址或者直接填域名也是可以的。点击确定立即尝试连接服务器,如果能连接上服务器会提示输入用户名和密码。用户名为root,密码可以从vultr服务器详情页拷贝过来。可以记住用户名和密码,这样下次连接就不用再输入那个复杂的密码了(当然密码是可以修改的,但是没必要。系统自动生成的密码强度相当高,可以避免暴力破解。自己设的密码就不好说了,而且还容易忘记)。 新建会话
连接成功之后会出现命令提示符:root@username:~#新建会话
连接上服务器后就可以开始安装Trojan了。对于Xshell连不上服务器的情况,如果是使用域名连接的话,先ping一下域名看看是否DNS解析尚未生效,如果尚未生效,那么需要等一下,在等待的过程中可以先用IP将服务器配置好。如果ping不通IP的话,那么多半是被墙了,那就只能换掉服务器了。(血的教训:先购买新服务器,再去vultr服务器页面Destroy。反过来的话间隔太小,估计又买到原来的ip了。或者直接开个四五台服务器,然后保留ping结果最好的,删除其余的就好了。)

创建用户账户(可选)


为了系统安全,一般不建议直接使用root用户对系统做设置,而vultr默认只有root用户,故可以自己新建一个非root但是有sudo权限的用户继续后面的操作,代码如下所示,注意密码强度不能太低。第一条命令创建用户,第二条命令设置密码,第三条命令将该用户加入sudo组,第四条命令切换到该用户。


























sudo useradd -m -s /bin/bash trojanuser
sudo passwd trojanuser
sudo usermod -G sudo trojanuser
su -l trojanuser

创建服务账户

很多看教程的小伙伴问“为什么非要弄这么多用户,直接root不可以吗?”,这里简单回答一下。既然Trojan是占用443端口,使用https协议,所以必然是要安装证书的。本教程使用acme.sh为Trojan生成证书,并配置了acme.sh的自动更新,包括代码和证书的更新。一方面,既然有配置自动更新就有可能出各种问题,毕竟你对更新之后的代码和证书是否可用一无所知。另一方面,acme.sh和Trojan均为开源软件,不一定值得信赖。基于此,为了降低acme.sh和Trojan对系统的影响和其相互影响,故需要单独为acme.sh和Trojan建立没有sudo权限的用户。如果执意使用具有sudo权限的用户,或者头铁直接使用root,出了问题是要自己承担责任的。
这里我们创建两个用户,分别为trojanacme。其中用户trojan只需要运行trojan服务,无需登录,也无需家目录,故设置为系统用户即可。这里将用户acme也设置为系统用户,但是区别在于acme需要配置acme.sh,故需要家目录。注意到,我并未给用户acme设置密码,所以该用户也不能登录,只能通过其他已经登录的用户切换过去,这样尽可能的保证了系统的安全与任务的独立。因为trojanacme都需要读写证书文件,所以将acmetrojan添加到同一个用户组certusers,待申请到证书后将证书所有权交给用户组certusers并允许组内用户访问即可。


























sudo groupadd certusers
sudo useradd -r -M -G certusers trojan
sudo useradd -r -m -G certusers acme

安装依赖

由于Debian系列系统和CentOS系列系统使用不同的包管理软件,所以安装软件的命令不一样,下面两个小节自己对照自己系统选择命令。
Ubuntu or Debian
更新源


























sudo apt update



























sudo apt upgrade -y
安装acme.sh需要的依赖。


























sudo apt install -y socat cron curl
启动crontab


























sudo systemctl start cron
sudo systemctl enable cron
安装Trojan需要的依赖:










sudo apt install -y libcap2-bin xz-utils nano
安装Nginx:










sudo apt install -y nginx

CentOS
安装acme.sh需要的依赖:











sudo yum install -y socat cronie curl
启动crontab


























sudo systemctl start crond
sudo systemctl enable crond
安装Trojan需要的依赖。


























sudo yum install -y xz nano
安装Nginx。


























sudo yum install -y nginx

创建证书文件夹

第一条命令新建一个文件夹/usr/local/etc/certfiles用于存放证书。第二条命令将证书文件夹所有者改为acme,使得用户acme有权限写入证书。


























sudo mkdir /usr/local/etc/certfiles
sudo chown -R acme:acme /usr/local/etc/certfiles

配置证书

安装acme.sh自动管理CA证书脚本
分别执行如下命令,注意看是否报错。第一条命令切换到用户acme。第二条命令安装acme.sh。第三条命令退出当前用户。第四条命令再次切换到用户acme。注意到这里两次切换用户的操作不能省略,因为安装完acme.sh之后要重新登录当前用户,否则无法识别出acme.sh命令。


























sudo su -l -s /bin/bash acme



























curl  https://get.acme.sh | sh
exit



























sudo su -l -s /bin/bash acme

添加cloudflare Global CA Key
不是使用cloudflare DNS的请查看域名申请与解析部分自己做调整!
需要让acme.sh自动管理你的证书,所以需要添加cloudflare的API。登录cloudflare之后定位到:头像>>My Profile>>API Tokens。可以看到这里有两个API Keys。我们需要的是Global API Key。Origin CA Key是不可以使用的。点击View即可查看,注意查看之后自己保存下来,每天可查看次数是有限制的。
然后在Xshell里面执行如下两条命令,注意执行成功没有提示,所以自己不要输错了。其中引号内的内容改为你自己的。注意,本文中代码需要手动修改的地方都使用<>包裹。


























export CF_Key=""
export CF_Email=""

申请证书
不是使用cloudflare DNS的请查看域名申请与解析部分自己做调整!
执行如下命令(注意域名改为你自己的域名),等待一会儿。


























acme.sh --issue --dns dns_cf -d 
看到下图的提示表示证书申请成功。 证书申请成功提示
申请失败怎么办?证书申请失败的可能性一般有:1. CF_Key或CF_Email填写错误;证书申请次数超限等。此时切忌反复尝试,原因是证书每一个周申请次数是有限制的(20次),如果超限了就需要等一个周或者更换域名了(这个限制是争对每一个子域单独做的限制,所以万一超限了还可以用子域名继续部署)。解决方案是:在上述命令后加--staging参数继续测试。测试通过之后,删除上图所示四个证书文件并取消--staging参数再执行一次。--staging参数申请的证书只作为测试用,客户端是无法认证通过的(提示SSL handshake failed: tlsv1 alert unknown ca),所以使用--staging参数申请到了证书之后要去掉--staging参数重新申请一次。
安装证书
执行如下命令(注意域名改为你自己的域名),第一条命令使用acme.sh将证书安装到certfiles目录,这样acme.sh更新证书的时候会自动将新的证书安装到这里。第二条命令是配置acme.sh自动更新和自动更新证书,这样配置完Trojan之后一般不用管服务器。


























acme.sh --install-cert -d  --key-file /usr/local/etc/certfiles/private.key --fullchain-file /usr/local/etc/certfiles/certificate.crt



























acme.sh  --upgrade  --auto-upgrade

修改权限
最后还要允许组内用户访问证书。可通过如下命令实现。第一条命令将证书文件夹所在用户组改为certusers。第二条命令是赋予证书文件夹组内用户读取权限。运行这两条命令之后用户trojan就有权限读取证书了。第三条命令退出用户acme,因为证书已经安装完成。


























chown -R acme:certusers /usr/local/etc/certfiles
chmod -R 750 /usr/local/etc/certfiles
exit

配置Trojan

安装Trojan
分别执行如下四个命令,注意看是否报错。第一个命令是安装Trojan,安装完成一般会提示版本号注意看是否是最新版本。第二个命令是将Trojan配置文件的所有者修改为用户trojan,由于使用sudo安装的Trojan,该配置文件默认是属于root用户的,而我们需要使用用户trojan运行Trojan,不修改所有者会导致启动Trojan遇到权限问题。第三个命令备份Trojan配置文件,以防万一。第四个命令是使用nano修改配置文件。


























sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"



























sudo chown -R trojan:trojan /usr/local/etc/trojan
sudo cp /usr/local/etc/trojan/config.json /usr/local/etc/trojan/config.json.bak
sudo nano /usr/local/etc/trojan/config.json
第四个命令执行完之后屏幕会显示Trojan的配置文件,定位到passwordcertkey并修改。密码按自己喜好,certkey分别改为/usr/local/etc/certfiles/certificate.crt/usr/local/etc/certfiles/private.key。编辑完成配置文件之后按屏幕下方快捷键提示(^O^X即:Ctrl+OCtrl+X)保存并退出nano。修改之后的config文件如图所示。另外,如果有IPv6地址,将local_addr0.0.0.0改为::才可以使用。 修改config
启动Trojan
修改Trojan启动用户
执行如下命令,打开trojan.service文件,并将用户修改为trojan


























sudo nano /etc/systemd/system/trojan.service
添加用户效果如图所示,注意等号旁边没有空格。 添加trojan用户到trojan.service
然后重新加载配置文件。


























sudo systemctl daemon-reload

赋予Trojan监听443端口能力
执行如下命令,赋予Trojan监听1024以下端口的能力,使得Trojan可以监听到443端口。这是由于我们使用非root用户启动Trojan,但是Linux默认不允许非root用户启动的进程监听1024以下的端口,除非为每一个二进制文件显式声明。


























sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/trojan

使用systemd启动Trojan
Trojan启动、查看状态命令分别如下,第一条是启动Trojan,第二条是查看Trojan运行状态。启动之后再查看一下状态,Trojan显示active (running)即表示正常启动了。如果出现fatal: config.json(n): invalid code sequence错误,那么是你的配置文件第n行有错误,请检查。


























sudo systemctl restart trojan
sudo systemctl status trojan

更新证书
当acme.sh重新安装证书之后,需要通知Trojan重新加载证书。最简单的方案是每三个月登录服务器重启Trojan,但是不够完美,毕竟重启的时候会导致服务中断。其实Trojan有实现reload certificate and private key功能,只需要在证书更新后给Trojan发送SIGUSR1消息即可。Trojan收到SIGUSR1消息后便会自动加载新的证书和密钥文件,这样就不用重启Trojan了。手动给Trojan发送SIGUSR1消息的命令是sudo -u trojan killall -s SIGUSR1 trojan,但是这样也不够完美,也得每三个月登录服务器运行一次该命令。其实我们可以给用户trojan添加定时任务,使其每个月运行一次该命令即可。实现如下。
首先,编辑用户trojan的crontab文件


























sudo -u trojan crontab -e
在文件末尾添加一行如下,该行表示每个月1号的时候运行命令killall -s SIGUSR1 trojan,由于是使用用户trojan运行的,故不需要在前面加sudo -u trojan


























0 0 1 * * killall -s SIGUSR1 trojan
最后查看crontab是否生效。


























sudo -u trojan crontab -l

更新Trojan
如果Trojan版本有更新(可以去这里查看是否有更新),那么使用本教程搭建的服务器端更新Trojan版本只需要三条命令即可,不过要注意的是,第一条命令会提示是否覆盖配置文件,如果没有必要请回答n,否则配置文件将会被覆盖(如果不小心覆盖了就得自己重新编辑了)。第二条命令重新赋予Trojan监听443端口的能力。第三条命令重启Trojan。


























sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"



























sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/trojan
sudo systemctl restart trojan

配置Nginx

写入虚拟主机到Nginx配置文件

由于Nginx配置在Debian系列系统和CentOS系列系统组织方式不同,所以配置文件位置和使用方式有细微区别,为了统一,我将CentOS系列系统的组织结构做细微调整。
在Debian系列系统中,Nginx的虚拟主机配置文件在/etc/nginx/sites-available/文件夹中,如果要开启某一个虚拟主机,则建立一个软连接到/etc/nginx/sites-enabled/文件夹并重启Nginx即可。默认虚拟主机在/etc/nginx/sites-enabled/文件夹,需要关闭掉,否则会冲突。
在CentOS系列系统中,Nginx的虚拟主机配置文件在/etc/nginx/conf.d/文件夹中以.conf后缀保存,写入之后就可以使用。默认虚拟主机集成在Nginx配置文件/etc/nginx/nginx.conf中,需要打开将其中的server块删除,否则会冲突。Debian系列系统中的/etc/nginx/sites-enabled//etc/nginx/sites-available/文件夹结构在CentOS系列系统中是没有的,不过这个策略很不错,可以很方便的开启和关闭虚拟主机,我这里手动调整一下。
CentOS
按上述分析,我们使用下面两条命令在/etc/nginx/中添加两个文件夹。


























sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
执行如下命令使用nano打开Nginx配置文件,删除其中server块,并添加对/etc/nginx/sites-enabled/文件夹的索引。


























sudo nano /etc/nginx/nginx.conf
配置文件修改结果如下图所示。 etc_nginx_nginx_conf
CentOS反向代理需要配置SELinux允许httpd模块可以联网,否则服务器会返回502错误。


























sudo setsebool -P httpd_can_network_connect true

Ubuntu or Debian
使用如下命令关闭Nginx默认虚拟主机。


























sudo rm /etc/nginx/sites-enabled/default

写入配置
1.执行如下命令,使用nano添加虚拟主机。(注意域名改为你自己的域名,这是虚拟主机的文件名,只是用来自己识别的。如果你已经有配置虚拟主机在这个文件中,可以自己使用cp命令备份一下或者换个名字也行,等介绍完基本配置再讲如何与现有服务集成。)


























sudo nano /etc/nginx/sites-available/
基于综述部分讲解的Trojan工作原理,现给定Nginx虚拟主机如下所示。这些虚拟主机可以直接拷贝到上面虚拟主机配置文件中再修改为你自己的,其中要修改的地方包括:
  1. 第4行的server_name的值改为你自己的域名;
  2. 第7行的proxy_pass随便指向一个没有敏感信息的网站都可以,这就是你要反向代理的网站,这里我是用了RFC文档的地址;
  3. 第15行的server_name的值<10 .10.10.10="">改为你自己的IP;
  4. 第17行改为自己的域名,注意别填错了。


























server {
    listen 127.0.0.1:80 default_server;

    server_name ;

    location / {
        proxy_pass https://www.ietf.org;
    }

}

server {
    listen 127.0.0.1:80;

    server_name <10 .10.10.10="">;

    return 301 https://$request_uri;
}

server {
    listen 0.0.0.0:80;
    listen [::]:80;

    server_name _;

    return 301 https://$host$request_uri;
}
解释一下这些虚拟主机的一些细节:第一个server接收来自Trojan的流量,与上面Trojan配置文件对应;第二个server也是接收来自Trojan的流量,但是这个流量尝试使用IP而不是域名访问服务器,所以将其认为是异常流量,并重定向到域名;第三个server接收除127.0.0.1:80外的所有80端口的流量并重定向到443端口,这样便开启了全站https,可有效的防止恶意探测。注意到,第一个和第二个server对应综述部分原理图中的蓝色数据流,第三个server对应综述部分原理图中的红色数据流,综述部分原理图中的绿色数据流不会流到Nginx。
2.使能配置文件注意域名改为你自己的域名


























sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

启动Nginx
Nginx启动命令和Trojan一样,就不过多解释了。


























sudo systemctl restart nginx
sudo systemctl status nginx

与现有Nginx服务集成
如果你本机已经有Nginx服务,那么Nginx配置文件需要做适当修改以和现有服务兼容。
  1. 在原服务与Trojan使用同一个域名且原来是监听443端口的情况下,那么需要将你的ssl配置删除并将监听地址改为第一个server监听的地址127.0.0.1:80,然后直接用修改好的server代替上述配置文件中第一个server即可。这样https加密部分将会由Trojan处理之后转发给Nginx而不是由Nginx处理,原来的服务对于客户端来说就没有变化。
  2. 如果原来的服务与Trojan使用不同的域名,建议是修改Trojan与原来的服务使用同一个域名,如果非要使用不同的域名,请参考第3点。
  3. 如果原来的服务就监听了多个域名,那么请自己琢磨Nginx的sni,参考连接:ngx_stream_ssl_preread_module
  4. 如果原来的服务是监听80端口,想要继续监听80端口那么直接去除第三个server即可,如果要改为监听443端口参考第1点。

配置Trojan和Nginx开机自启

虽然开机自启一般用不着,除非vultr机房停电,但是反正也没什么代价,弄一下吧。


























sudo systemctl enable trojan
sudo systemctl enable nginx

检查服务器是否配置成功

到这里服务器就配置完成了。此时你可以在浏览器里面访问你的网站看是否能够访问,如果你的网站可以访问了,那么就一切正常啦。
另外,基于以上考虑到的可能的恶意探测,可以验证一下以下情况是否正常。
  1. 浏览器中使用ip访问:重定向到https://tdom.ml;
  2. 浏览器中使用https://ip访问:重定向到https://tdom.ml(跳转的时候浏览器可能提示不安全是正常的);
  3. 浏览器中使用tdom.ml访问:重定向到https://tdom.ml

启动bbr(可选,建议)

启动bbr需要Linux内核版本在4.10及以上,如果低于该版本需要自己升级(这不在本教程范围之后)内核版本,保证内核版本不低于4.10。查看系统内核版本命令如下。


























uname -a
bbr是谷歌开发的网络控制算法,可以加快访问速度。执行下面命令查看当前系统是否启用bbr。


























sudo sysctl net.ipv4.tcp_congestion_control
执行完成之后如果提示net.ipv4.tcp_congestion_control = bbr即表示启动了bbr,可以跳过下面启动bbr的步骤。
直接将下面三条命令拷贝粘贴到Xshell里面执行即可启动bbr,检查启动状态同上。


























sudo bash -c 'echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf'
sudo bash -c 'echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf'
sudo sysctl -p

配置防火墙(可选)

只打开22、80和443端口可以有效的阻止外部恶意流量,降低服务器暴露的风险。此步骤非必须,而且自己有其他服务记得其他服务的端口也要处理。
本文以ufw为例配置防火墙,ufw是一个很好用的防火墙配置命令,可以简化操作,减少错误的发生。
Debian or Ubuntu执行如下命令安装ufw


























sudo apt install -y ufw
CentOS执行如下两个命令安装ufw


























sudo yum install -y epel-release
sudo yum install -y ufw
如果服务器无IPv6地址那么需要执行如下命令,将IPV6=yes修改为IPV6=no。


























sudo nano /etc/default/ufw
执行如下命令即可成功配置防火墙。注意,如果ssh端口不是22那么第一行需要调整(将ssh改为端口号)。


























sudo ufw disable
sudo ufw allow ssh
sudo ufw allow https
sudo ufw allow http
sudo ufw enable



























sudo ufw status
sudo ufw status verbose
另外,如果对Trojan不放心,那么可以参考trojan wiki,优化防火墙配置,使得Trojan只能给127.0.0.1:80发送数据和响应外部请求。

Windows或Mac客户端部署

几点说明,目前客户端Trojan不能使用全局代理,所以需要配合其他软件使用,比如proxifier等。推荐使用Trojan+Chrome插件SwitchyOmega实现只能Chrome翻墙的目的。这样Trojan只用监听一个端口,由Chrome插件决定当前流量是否走代理。如果你有别的用途可以单独在某个软件内部使用SOCKS5协议指定代理,地址为Trojan的地址:127.0.0.1:1080。

配置Windows客户端

Windows客户端下载地址Trojan for Windows,打开之后下载最新版本的win.zip压缩包。
下载成功之后解压,修改目录中的config.json配置文件中的local_portremote_addrpassword即可。其中,remote_addr填写自己的域名,local_port开启本地端口,用来接收本地数据,建议修改为不常用端口,否则容易冲突,本文仅使用默认端口1080演示。Trojan不需要安装就可以直接运行,拷贝Trojan文件夹到电脑里面,双击即可运行。如果启动报错,那么说明你的系统里面没有C++运行环境,需要安装VC++运行环境(1.12.3及以前版本安装x86环境,1.13.0及以后版本安装x64环境,或者两个版本都安装也行),然后重新启动Trojan,确认Trojan没有报错即可。如果启动Trojan会一闪而过,那么应该是你配置文件有错误,请仔细检查。可以使用控制台运行Trojan,能看到具体是哪一行有错,具体方法:使用命令提示符在Trojan目录运行trojan命令可以看到具体哪一行错误,如果出现fatal: config.json(n): invalid code sequence错误,那么是你的配置文件第n行有错误,请检查。
如何配置图形界面:Trojan的Windows客户端目前还没有图形界面,如果对黑框有强迫症,可以使用CommandTrayHost将黑框托盘化。这是本人目前采用的方案,相关文件可以在这里下载,下载完成之后解压并将你的配置文件拷贝到Trojan目录即可使用。

配置Mac客户端

Mac客户端下载地址Trojan for Mac,打开之后下载最新版的macos.zip,编辑配置文件同Windows客户端,编辑好配置文件后双击运行start.command即可。如果出现bind: Permission denied错误,需要在终端使用killall trojan命令杀掉现有的Trojan相关的进程。如果出现fatal: config.json(n): invalid code sequence错误,那么是你的配置文件第n行有错误,请检查。

安装Chrome

如果没有安装Chrome需要先安装一下Chrome

确认服务器可达

在Chrome浏览器中访问你自己的网站,确保服务器可达。这一步在每一台Windows的客户端都必须做,否则有可能会连接服务器失败(Trojan日志显示握手失败),这是Windows系统的问题(或者说是bug吧)。

以SOCKS5方式启动Chrome

只需要这一次以SOCKS5启动Chrome,配置完成之后正常使用即可。
Windows
在命令提示符(搜索框输入cmd)输入下面的命令启动Chrome,注意端口号如果你有修改也要对应的修改。


























start C:\"Program Files (x86)"\Google\Chrome\Application\chrome.exe --proxy-server="socks5://127.0.0.1:1080" --host-resolver-rules="MAP * ~NOTFOUND, EXCLUDE 127.0.0.1"
如果上述命令无法启动Chrome,是因为新版本的Chrome更改了安装路径导致的,你需要更新你的Chrome版本啦。
Mac
在终端输入下面的命令启动Chrome,注意端口号如果你有修改也要对应的修改。


























/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --proxy-server="socks5://127.0.0.1:1080" --host-resolver-rules="MAP * ~NOTFOUND, EXCLUDE 127.0.0.1"

安装SwitchyOmega插件

访问Chrome网上应用店,搜索SwitchyOmega即可找到SwitchyOmega插件并安装之。安装完成之后重启Chrome。

配置SwitchyOmega插件(以下每一步配置完之后记得应用选项)

在Chrome右上角打开SwitchyOmega配置界面,如图所示: SwitchyOmega选项
情景模式中的auto switch配置如图所示:注意规则列表规则选择proxy,规则列表格式为AutoProxy,其网址为:


























https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
填写完成之后需要先更新情景模式使其生效,如图所示: autoSwitch
情景模式中的proxy配置如下图所示,其中代理协议选择SOCKS5,这是Trojan支持的协议,注意不要选错了,127.0.0.1:1080为Trojan代理地址,只有流向这个地址的流量Trojan才会处理,如果Trojan配置文件有修改本地端口号这里也得对应的修改。 proxy
设定中的初始情景模式选择auto switch,如图所示。这样当检测到目标地址在GFW列表中的时候Chrome会让其走Trojan代理。否则直连。 初始情景模式
然后重启Chrome,保证SwitchyOmega运行在auto switch模式,否则可能无法正常使用,常见现象有无法访问国外网站、导致访问国内网站速度变慢或无法访问内网等。如图所示: 确定状态
至此客户端Trojan已经配置完成,尽情享受吧!!!

其他客户端部署指南

Linux客户端:Linux客户端安装方式与服务端一样,配置文件参考客户端修改即可;
IOS客户端:美区ID+[Pharos Pro | Shadowrocket];
Android客户端:igniter,目前尚未支持分流,慎用!

FQA

浏览器报错ERR_SSL_PROTOCOL_ERROR:可能是系统问题,解决方案是删除配置文件中的alpn中的h2那一行,或者重装系统。

如何寻求帮助

  1. 仔细核对操作是否与本文一致,特别是我加粗的地方很容易出错。
  2. Trojan-GFW项目查找是否有类似issue,如果有类似issue可自行参考解决。如果没有类似issue也可以在那里提交新的issue,基本上都会得到回复。
  3. Trojan-GFW官方电报群请教群里的开发者和大佬们:trojan-gfw。群里的人都是比较专业的,你的问题基本都能被解决,请注意群规和礼貌。
  4. 在博客留言区留言,我有空便会回复(但是肯定没有 1 和 2 方便和及时),记得带上服务端和客户端日志还有浏览器提示一起!

进阶

Trojan-GFW项目提供了用户管理界面,可以很方便的添加、删除用户和为每个用户设置流量限制,配置教程:Trojan-Panel配置

from https://trojan-tutor.github.io/2019/04/10/p41.html
-------

https://github.com/trojan-gfw/igniter/releases/download/v0.1.0-pre-alpha10/app-release.apk


A trojan client for Android: https://github.com/trojan-gfw/igniter
--------------------

Trojan Client for macOS, ported from ShadowsocksX-NG. Please use it in compliance with laws, regulations and rules.


Features

  • Could update PAC by download GFW List from GitHub.
  • Custom rules for PAC.
  • HTTP Proxy by privoxy
download url: https://github.com/JimLee1996/TrojanX/releases/download/0.2/TrojanX.zip

------------------------------------
 

-----------------------------------------------------------------

trojan多用户管理部署程序, 支持web页面管理.


trojan

  Go Report Card Downloads License
trojan多用户管理部署程序

功能

  • 在线web页面和命令行两种方式管理trojan多用户
  • 启动 / 停止 / 重启 trojan 服务端
  • 支持流量统计和流量限制
  • 命令行模式管理, 支持命令补全
  • 集成acme.sh证书申请
  • 生成客户端配置文件
  • 在线实时查看trojan日志
  • 支持trojan://分享链接和二维码分享(二维码仅限web页面)

安装方式

trojan使用请提前准备好服务器可用的域名

a. 一键脚本安装

#安装/更新
source <(curl -sL https://git.io/trojan-install)

#卸载
source <(curl -sL https://git.io/trojan-install) --remove

安装完后输入'trojan'可进入管理程序
浏览器访问 https://域名 可在线web页面管理trojan用户
前端页面源码地址: trojan-web

b. docker运行

  1. 安装mysql
因为mariadb内存使用比mysql至少减少一半, 所以推荐使用mariadb数据库
docker run --name trojan-mariadb --restart=always -p 3306:3306 -v /home/mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=trojan -e MYSQL_ROOT_HOST=% -e MYSQL_DATABASE=trojan -d mariadb:10.2
端口和root密码以及持久化目录都可以改成其他的
  1. 安装trojan
docker run -it -d --name trojan --net=host --restart=always --privileged jrohy/trojan init
运行完后进入容器 docker exec -it trojan bash, 然后输入'trojan'即可进行初始化安装
启动web服务: systemctl start trojan-web
设置自启动: systemctl enable trojan-web
更新管理程序: source <(curl -sL https://git.io/trojan-install)

运行截图

avatar avatar

命令行

Usage:
  trojan [flags]
  trojan [command]

Available Commands:
  add         添加用户
  completion  自动命令补全(支持bash和zsh)
  del         删除用户
  help        Help about any command
  info        用户信息列表
  log         查看trojan日志
  restart     重启trojan
  start       启动trojan
  status      查看trojan状态
  stop        停止trojan
  tls         证书安装
  update      更新trojan
  version     显示版本号
  web         以web方式启动

Flags:
  -h, --help   help for trojan

注意

安装完trojan后强烈建议开启BBR等加速: Linux-NetSpeed
推荐的trojan客户端:

--------------------------------

trojan多用户管理程序web页面

trojan-web

trojan管理程序前端页面
基于vue-cli3.0进行搭建, 并使用了vue全家桶vue vuex axios vue-router和elementui

项目启动步骤

  1. 安装包
    npm install
  2. 开发运行
    npm run serve:dev
  3. 生产打包
    npm run dll (仅需运行一次)
    npm run build
欢迎fork以改进优化页面.

from https://github.com/Jrohy/trojan-web
------------------------------------

Trojan工作在443端口,所以它会占用443端口,处理来自外界的HTTPS请求,如果是Trojan请求,那么为该请求提供服务,如果不是它就会将该流量转交给Nginx,
由Nginx为其提供服务。通过这个工作过程可以知道,Trojan的一切表现均与Nginx一致,不会引入额外特征,从而达到无法识别的效、看看原理图,一下就明白了吧。
果。当然,为了防止恶意探测,我们需要将80端口的流量全部重定向到443端口,并且服务器只暴露80和443端口,80端口还是由nginx管理,但443则由trojan管理,所以要赋予它监听443的权力,这样可以使得服务器与常见的 。这中间还能有好多可玩的,这里我就不演示了自己玩吧。。
一键安装脚本
bash <(curl -s -L https://github.com/V2RaySSR/Trojan/raw/master/Trojan.sh)
添加一个域名解析过去.
trojan的好处就是真的的伪装一个443的nginx网站 连访问的时候都是弹出网站的样子,不过你可以伪装成任何网站.
------------------
Trojan是较新的代理软件,项目官网:https://trojan-gfw.github.io/trojan/。与强调加密流量的SS/SSR等工具不同,trojan重点在将流量伪装成互联网最常见的https流量,从而规避防火墙的探测和干扰,相当于配置了流量伪装的精简版V2ray。在敏感时期,基本上只有 trojan 和 带流量伪装的V2ray 能提供稳如狗的服务。
Windows客户端:官网下载
安卓客户端:   官网下载
MacOS客户端:官网下载
iOS客户端:  iPhone/iPad打开App Store,搜索Shadowrocket
------------------------

https://github.com/hijkpw/scripts/raw/master/trojan.sh
https://raw.githubusercontent.com/hijkpw/scripts/master/trojan.sh
-------------------------

V2Ray / Trojan 传输方式哪个好?


我们从原理的角度来简单分析一下,V2Ray与Trojan究竟那个更好.

Trojan是什么?

根据官网给出的解释,Trojan的设计理念与传统协议的设计理念相反,Trojan不使用强加密和随机模糊,而是直接模仿互联网最常见的协议HTTPS,以此来达到设计的目的。





当然,这显然是胡扯。从笔者另一篇文章《V2Ray / SSR 传输协议哪个好? (各种协议对比)》中可以知道,HTTPS协议本身就含有加密,而且TLS 1.3更是强加密,现今无法通过简单方式破解。Trojan本身使用了HTTPS的特性,自带了加密属性,只不过这种加密大家都在用而已,因此官网描述是不准确的。

Trojan比V2Ray更安全?

答案是:不见得。我们从上述描述中可以看出,Trojan本身已经是确定好了自身的协议类型,而V2Ray使用多种协议。笔者之前的文章特意探讨过V2Ray的各种协议区别。因此不能简单的把Trojan和V2Ray进行类比。为了公平起见,我们可以选取V2Ray“最安全”的协议WS+TLS与Trojan进行对比。
我们不难发现,若V2Ray使用了WS+TLS方式,其协议与Trojan本身差异并不大。两者建立连接的过程有区别,但是从流量本身,或者说第三者看流量是难以发现区别的。也就是说,对于第三者的监听,这两类协议与普通流量表现均一致,这是两者的共性。





根据Trojan的官网描述,Trojan在建立连接的过程中考虑了现行加密协议的不足,也参考了传统网站服务器的连接过程,Trojan开发者似乎有意识的将Trojan服务器伪造成只处理HTTPS流量的Nginx服务器,这点很好,Nginx服务器的高性能与广泛流行能够一定程度让Trojan进行伪装,而V2Ray并不具有这类特性。不过V2Ray本身在连接过程中较之Trojan增加了些许步骤。





在笔者的文章《V2Ray / SSR 加密方式哪个好? (加密方式对比)》中,笔者介绍了V2Ray的加密形式,V2Ray的加密形式并不局限于一种协议,Vmess加密在各个传输协议中均是存在的。大家可以这么理解,对于一个内容,Vmess会根据客户端支持的加密方式进行加密,在服务端进行解密,这是基础的一层加密,如果使用WS+TLS的协议进行传输这些内容时,会在内容加密的基础上再进行一次TLS加密,也就是说,Vmess会加密两次。因此,即便在传输过程中遭到中间人攻击,导致传输内容变成明文及TLS加密失效,V2Ray传输的内容依旧能一定程度保持安全。





从反向代理的角度看,在《关于Trojan、CDN、V2Ray的种种问题 (原理分析)》一文中,笔者提到,V2Ray是支持反向代理的,而Trojan却并不支持。这使得Trojan无法使用CDN这类使用反向代理技术的服务,从而无法隐藏真实IP。无法处理反向代理流量减少了Trojan的安全性,笔者相信这是Trojan团队未来需要解决的问题之一。
所以对于究竟哪个更安全的讨论是仁者见仁智者见智的。实际上,现在的TLS 1.3已经足够安全,像是笔者说的中间人攻击这类手段本身代价很大,笔者觉得不会这么为了普通人动用这类手段。而CDN隐藏IP对于普通使用的安全性影响亦有限,因此从安全性来说,两者协议差别不大。

Trojan比V2Ray更快?

从上述的笔者描述中,我们能知道,V2Ray在使用WS+TLS传输的过程中进行了两次加密,虽然TLS加密对于速度的影响并不大,但是Vmess加密的影响还是有的。尤其在使用一些并不是很友好的加密协议时,影响更大。当然,相信有童鞋会想到在使用V2Ray时把加密方式改成None,但这并不代表能与Trojan保持一致,笔者在《V2Ray / SSR 加密方式哪个好? (加密方式对比)》文章中提到过,V2Ray即便在加密协议设置成None的情况下还是会有加密,具体情况大家可以参考那篇文章。
而对于Trojan而言,在处理与Trojan有关的流量时,Trojan表现优越,但是在处理其他流量诸如正常的HTTPS或者Vmess时,由于多一个流量本身的判断,导致效能低下,笔者认为这是Trojan的致命伤,期望后期Trojan团队能有所改变。
因此,仅从真正使用的流量的传输速度看,Trojan在原理上是一定快于V2Ray的,倒不是Trojan有什么黑科技,而是Trojan比V2Ray更简单,我们可以认为Trojan就是一个只有WS+TLS协议的V2Ray的简化版本(不能简单等同)。这也许就是Trojan的设计理念吧,笔者认为把Trojan介绍成:以简单的方法利用互联网最常见、最安全的形式完成连接的一种协议,这样的介绍或许会更好。





测评看,Trojan的连接速度确实快于V2Ray的WS+TLS,当然这种提升不会非常明显。原因很简单,毕竟AES之类的加密如果对于性能影响很大,又怎么会是现在主流的加密方式呢?

应不应该改用Trojan?

对于使用Trojan,根据Trojan的教程《替代V2Ray?- Trojan搭建教程》,普通人需要解决域名、解析的问题。这与V2Ray使用WS+TLS的门槛差不多了。如果仍有使用SSR的童鞋,笔者建议你赶紧改成Trojan或者V2Ray。
对于已经使用WS+TLS协议V2Ray用户,现在由于Trojan本身还算“年轻”,各个平台的客户端是远不及V2Ray来的完善,因此,为了提升一些些的传输速度,而选择改为Trojan是需要三思的。
那么是否需要从未来安全角度改用Trojan呢?笔者认为,若是V2Ray使用WS+TLS最终被封锁,那么其实离Trojan被封锁也不远了。毕竟Trojan不是一个具有革命性的新协议,两者本质上说均是采取了现在流行的TLS协议,因此没必要担心未来V2Ray是否安全而改用Trojan。
------------------------------------

关于Trojan、CDN、V2Ray的种种问题 


现在我们用提问的方式来一起更加“深入”的了解Trojan的本质吧~

Trojan能使用CDN吗?

答:不能。
很不幸,Trojan开发者非常明确的说明了不支持反向代理连接到Trojan。由于这种特性,导致Trojan无法直接隐藏在反向代理之后,同时亦不能使用反向代理达到多个不同协议的同时使用。因此对于CDN而言,由于使用了反向代理的技术,Trojan自然亦不支持套用CDN。这点笔者觉得甚是可惜。





笔者知道大家在想什么,如果不支持反向代理,那么是否会使得Trojan容易被识别呢?答:不至于。因为Trojan不支持反向代理只是局限于对自身的协议而言。对于普通协议,Trojan是支持反向代理的。也就是说,对于访问网站这类流量,即便使用了CDN,依然可以正常访问。
那么为什么不支持呢?笔者查找了所有已知公开文档,并没有找到原因说明(估计也不会有哈哈)。笔者推测,在流量经过反向代理后失去了一部分Trojan的特征信息;或者在经过反向代理后,由于增加了部分信息而导致Trojan判断为其他流量。总之,无论何种情况,一旦Trojan处于反向代理的后端,那么Trojan将变为一个性能低下的实打实的“web服务器”,这也就失去了它的真正功能。

Trojan与V2Ray可以共存吗?

答:可以。
刚刚笔者说明了Trojan是无法作为反向代理后端的。但是,Trojan本身一定程度起到了“反向代理”的功能。因此可以通过Trojan使其他流量发送至另外的HTTP服务器或者V2Ray,也就是下图中的remote_addrremote_port两处配置。





通过这种方式,可以利用Trojan将流量转发至nginx再经由nginx转发至V2Ray,实现Trojan、网站、V2Ray三者共存的情况。但就如笔者《V2Ray / Trojan 传输方式哪个好?(原理对比)》一文中的描述,Trojan由于多一个判断和转发过程,使得被转发的V2Ray和网站性能低下。根据实际测试,V2Ray表现明显下降。因此,虽然这种方式在理论上完全行得通,但是实际体验并不友好,笔者不推荐。

Trojan与V2Ray协议是否一致?

答:几乎完全一致。
笔者对Trojan、V2Ray以及正常的网站访问进行了抓包。
不难看出,三者在握手、连接、传输的过程中几乎找不出差别。由于笔者懒得进行中间人攻击哈哈,因此没有对TLS解包,所以传输内部封装情况还是暂时未知。不过根据已知的协议设计可知,Trojan与V2Ray的协议设计差别是很大的。Trojan内部封装的协议类似于SOCKS5,这也就解释了为什么Trojan客户端需要使用SOCKS5的原因。

Trojan究竟是什么?

答:笔者觉得,Trojan在作为服务器的部分更像是一个只处理TLS协议的nginx web服务器。在服务器上,对所设定端口(一般为443)的TLS协议进行握手、连接、转发。除去本身特殊作用外,与普通的web服务器的行为几乎无差别,这和其团队宣传的内容一致,笔者觉得是值得肯定的。但Trojan对普通流量的处理和反向代理的支持做的并不完善。从服务器安全角度看,未来可能会针对这两点进行识别。
Trojan在作为协议部分则更像是SOCKS5,这是本身设计使然。因此,若TLS加密失效(无论是量子计算机未来的量子霸权或是中间人攻击),都会对Trojan协议带来致命的打击。当然若是本地客户端就有对协议的监控则更为简便。从协议安全角度看,未来从客户端内部对Trojan进行拦截可能是最简单最可靠的方案。

总结

截至目前发表日期,笔者觉得Trojan整体还是一个非常“年轻”的方案。笔者认为无论是服务端还是客户端均不能达到稳定日常使用的水平。但是,Trojan安装配置的便利以及设计的巧妙还是值得持续关注的。
------------------------

Trojan-GFW

默认安装: ✅


Qbittorrent

默认安装: ❎

Your Qbittorrent Information
Tips:
  1. 请将Qbittorrent中的Bittorrent加密選項改为 強制加密(Require encryption) !!!否则會被迅雷吸血!!!
  2. 请在Qbittorrent中添加Trackers https://trackerslist.com/all.txt !!!否则速度不會快的!!!
  3. 请在Web选项中将监听地址修改为127.0.0.1并关闭 UPnP/NAT-PMP (端口请勿修改)来防止未授权访问!!!
附:优秀的BT站点推荐(Related Links)
  1. https://thepiratebay.org/
  2. https://sukebei.nyaa.si/
  3. https://rarbgprx.org/torrents.php
Related Links
  1. win等平台下载页面
  2. Github页面
  3. Android远程操控客户端
  4. https://www.qbittorrent.org/
  5. https://www.johnrosen1.com/qbt/

Bittorrent-trackers

默认安装: ✅

Your Bittorrent-Tracker Information
https://www.trojan-gfw.xyz:443/announce
http://www.trojan-gfw.xyz:8000/announce
你的Bittorrent-Tracker信息(查看状态用)(Your Bittorrent-Tracker Status Information)
Tips:
  1. 请手动将此Tracker添加于你的BT客户端中,发布种子时记得填上即可。
  2. 请记得将此Tracker分享给你的朋友们。
Related Links
  1. https://github.com/webtorrent/bittorrent-tracker
  2. What's a Private BitTorrent Tracker, and Why Should I Use One?
  3. How Does BitTorrent Work?

Aria2

默认安装: ✅

Your Aria2 Information
8949025701@https://www.trojan-gfw.xyz:443/myaria2
Related Links
  1. Aria客户端(远程操控)
  2. https://github.com/aria2/aria2
  3. https://aria2.github.io/manual/en/html/index.html 官方文档
  4. https://play.google.com/store/apps/details?id=com.gianlu.aria2app

Filebrowser

默认安装: ✅

Your Filebrowser Information
Tips:
!请修改默认用户名和密码!。
Related Links

Netdata

默认安装: ✅

Your Netdata Information
Related Links
  1. https://play.google.com/store/apps/details?id=com.kpots.netdata
  2. https://github.com/netdata/netdata

Speedtest

默认安装: ✅

Your Speedtest Information
Related Links
  1. https://github.com/librespeed/speedtest
  2. https://github.com/librespeed/speedtest/blob/docker/doc.md

How to change the default config

Nginx
  • sudo nano /etc/nginx/conf.d/default.conf
  • sudo systemctl start/restart/status nginx
Trojan-GFW
  • sudo nano /usr/local/etc/trojan/config.json
  • sudo systemctl start/restart/status trojan
Dnscrypt-proxy
  • sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
  • sudo systemctl start/restart/status dnscrypt-proxy
Aria2
  • sudo nano /etc/aria2.conf
  • sudo systemctl start/restart/status aria2
Netdata
  • sudo nano /opt/netdata/etc/netdata/netdata.conf
  • sudo systemctl start/restart/status netdata
Speedtest
  • docker ps/stop/start
  • docker run -d --restart unless-stopped -e MODE=standalone -p 127.0.0.1:8001:80 -it adolfintel/speedtest
Tor
  • sudo nano /etc/tor/torrc
  • sudo systemctl start/restart/status tor@default
------

VPS Toolbox

A powerful Toolbox for Linux VPS.

How to use

apt-get update && apt-get install sudo curl -y && sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/johnrosen1/vpstoolbox/master/vps.sh)"
Flowchart: flowchart

Privacy Statement:

Ip Information is just an indispensable part of this project, all ip information comes from ipinfo.io,no spam related.

Friendly Reminder:

  1. Please Run as root(sudo -i)
  2. Please Purchase a domain and finish a dns resolve before running this program!
  3. Please Open Tcp port 80 and 443 and turn off Cloudflare CDN in your control panel before running this program!
  4. For customized certificate , please put it in /etc/trojan/ , no name change required !
  5. Please use a VPS with more than 0.5 GB RAM and at least 5G FREE DISK SPACE.

Give it a try ! (Live Demo,no Guarantee)

Features:

  1. Auto install and config NGINX
  2. Support Auto install and config Trojan-GFW Dnscrypt-proxy Qbittorrent Bittorrent-Tracker Aria2 Filebrowser Netdata and TOR
  3. Auto issue and renew let's encrypt certificate and auto reload Trojan-GFW after renewal
  4. Support Debian Ubuntu
  5. Random Html Template Choose
  6. Full IPv6 Support
  7. time sync
  8. Fail Restart
  9. uninstall Aliyun Aegis
  10. Support TCP Turbo
  11. Support TLS1.3 ONLY
  12. Support manually check for update
  13. Support Full/Part Uninstall
  14. And so on...
from https://github.com/johnrosen1/vpstoolbox
---------------------

A cross-platform ss/ssr/vmess/trojan GUI client based on Shadowsocks-qt.


A cross-platform Trojan GUI client
Build status Build status HitCount GitHub Releases GitHub All Releases License

Feature

  • Full PAC Control
  • Cross-platform
  • User Rule Support
  • Http Privoxy Support
  • Subscription Support
  • Import Servers from many methods
  • Mutiple servers Support
  • SS/SSR/Vmess/Trojan(go) Support
  • ....and more

Install

  • You can download from release page
  • Or using homebrew: brew cask install trojan-qt5

Compiling

Frequent Ask Question (FAQ)

Warning

Note: Trojan-Qt5 can ONLY be used for learning related technologies such as Qt/C++/Linux/CI/automation and use within the scope permitted by law. Any individual or group MAY NOT use Trojan-Qt5 for any violation of relevant laws and regulations.
Any attempt to download of any branch or distribution of Trojan-Qt5 constitutes your agreement that the author of the project will not be liable for any legal liability arising from your breach of the above guidelines.

Youtube Channels

Don't forget to checkout me and my friends channel.

Special Thanks

This project is based on:

UI Design

Trojan-Qt5's icon is owned by [mielink] and [erdongchan], any unanthorized usage will be blamed.
(https://github.com/xswvfr/Trojan-Qt5,
https://github.com/blue-githubz6kh/Trojan-Qt5
https://github.com/hou1217/trojan-qt5)
----

trojan-legend

This version of Trojan supports manyuser mode using the legendsockssr API.

trojan

Build Status

An unidentifiable mechanism that helps you bypass GFW.

Trojan features multiple protocols over TLS to avoid both active/passive detections and ISP QoS limitations.

Trojan is not a fixed program or protocol. It's an idea, an idea that imitating the most common service, to an extent that it behaves identically, could help you get across the Great FireWall permanently, without being identified ever. We are the GreatER Fire; we ship Trojan Horses.

Documentations

An online documentation can be found here.
Installation guide on various platforms can be found in the wiki.

Contributing

See CONTRIBUTING.md.

Dependencies

--------

More Experimental Effective Features for Trojan.

Trojan Plus Project

Introduction

It's compatible with original trojan with following experimental features:

Trojan plus can be used as client or server to connect original trojan server or client, so if you just upgrade trojan plus binary with old config file, it can work all the same, we has optimized original trojan project a lot, especially in NAT mode.

Trojan plus' experimental features need to be used/enabled both server-end and client-end, so if you want to use them, please update both ends into trojan plus. In the other words, if you don't use/enable experimental features, you can use trojan plus in single end to adapt the original trojan.

Trojan plus has a different belief to original trojan, running effective with more features first instead of project simplification (origin trojan don't want to add unnecessary features, they want to keep the project simple). Under this trojan plus' belief, for Android lib, we even write a low level TUN tunnel interface to get better effective a little bit, rather than integrate/use other 3rd system directly such as tun2socks or clash (such as shadowsocks-android and Igniter).

Trojan plus project's best running environment is Linux system in NAT mode (might be known as transparent proxy), it would be better if you has a software-router gateway instead of OpenWrt in a weak hardware. That's to say trojan plus is prepared for company's gateway for handreds of devices proxying.

Compiling

Requirement

Here is a compiling guide to guide you compiling trojan plus in CentOS, you can copy and modify it for your system.

Configure

Here's a config wiki for fully introduction.

Open Source Code

Mobile client

There is a repo that developed for Trojan Plus especially in mobile devices:

https://github.com/Trojan-Plus-Group/trojan-plus-app

Usage or performance testing or even contribution are very welcome.

from https://github.com/Trojan-Plus-Group/trojan-plus