搭建Trojan梯子笔记

趁黑五买了个15刀/年的小机器(别的没啥就每月流量管够),和友一提,友说干脆让我再搭个梯子用着玩,遂开始研究。

因为之前购买的机场是Trojan服务,所以研究方向也是Trojan。Trojan的原理,简单来说,是当通过Trojan协议和正确的密码访问时,会提供梯子代理;而如果不满足条件,则会访问一个正常的网站,所以混在其他所有需要访问的网站中不容易被察觉。当你使用梯子时,在外人看来,你就仿佛在浏览一个正常网站。

随便搜了下就发现教程还真不少。如果这个机器纯粹是用来搭梯子而不需要别的服务,那一键脚本走下来,可能15分钟梯子就搭好了吧。这里放一个一键教程给大家参考。

但是不幸的是我这个服务器还想用来干点别的事情,比如给这个博客作中转,以及给我的mastodon站弄一个备用域名等等。当我使用一键脚本安装完毕之后,发现nginx整个文件都给折腾得大变样,之前搞完的nginx中转统统失效。好的,老老实实一步步来(虽然我并没有完全参考这个教程)。

按照以往习惯,我采用的是trojan+nginx中转+certbot申请证书的模式。搜索发现绝大多数情况下装了trojan服务都会监听整个443端口进来的流量,如果同时还在使用其他网址就会产生冲突。但是万能的谷歌给我提供了一个教程解决了这个问题(教程具体地址我找不到了,可以参考这个)。

各自安装过程省略。需要修改的地方主要是:

1. 需要在nginx里安装模块ngx_stream_ssl_preread_module。不过我用apt install下载的nginx已经自带。具体可通过nginx -V查看。

/etc/nginx/nginx.confeventshttp两段之间上加上这一段:

stream {
    map $ssl_preread_server_name $name {
        YOUR.TROJAN.DOMAIN trojan;
        YOUR.SITE1 https1;
        YOUR.SITE2 https2;
        YOUR.SITE3 https3;
        YOUR.SITE4 https4;
    }
    upstream trojan {
        server 127.0.0.1:350; #trojan端口
    }
    upstream https1 {
        server 127.0.0.1:352; #https网站1端口
    }
    upstream https2 {
        server 127.0.0.1:353; #https网站2端口
    }
    upstream https3 {
        server 127.0.0.1:354; #https网站3端口
    }
    upstream https4 {
        server 127.0.0.1:355; #https网站4端口
    }

    server {
        listen 443 reuseport;
        listen [::]:443 reuseport;
        proxy_pass	$name;
        ssl_preread on; #开启 ssl_preread
    }
}

map和upstream部分可以继续添加。

2. 注意要把每个站点各自文件(位于/etc/nginx/sites-availablesites-enabled文件夹)的监听端口相应作出改变,把以往默认的443端口改成上面自己设置的相应端口。

3. Trojan部分如下配置(修改YOUR.TROJAN.DOMAIN为自己的网址):

server {
    listen 80;
    listen [::]:80;
    server_name YOUR.TROJAN.DOMAIN;
    return 301 https://YOUR.TROJAN.DOMAIN$request_uri;
}

server {
    listen 351;     #trojan伪装网址远程端口
    server_name YOUR.TROJAN.DOMAIN;
    root /var/www/YOUR.TROJAN.DOMAIN/html;
    index index.php index.html index.htm default.php default.htm default.html;
}

然后使用Certbot申请证书。尤其注意certbot会自动对你的文件进行修改,所以后面请注意把文件改回来,变成如下,然后再systemctl reload nginx重启:

server {
    listen 80;
    listen [::]:80;
    server_name YOUR.TROJAN.DOMAIN;
    return 301 https://YOUR.TROJAN.DOMAIN$request_uri;
}

server {
    listen 351;
    server_name YOUR.TROJAN.DOMAIN;
    root /var/www/YOUR.TROJAN.DOMAIN/html;
    index index.php index.html index.htm default.php default.htm default.html;

    ssl_certificate /etc/letsencrypt/live/YOUR.TROJAN.DOMAIN/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/YOUR.TROJAN.DOMAIN/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

4. 服务器端trojan文件配置:修改/usr/local/etc/trojan/config.jsonlocal_port改成350,remote_port改成351。下面证书那块儿,因为我是用certbot申请的,所以就改成certbot申请到的证书地址:

{
    "run_type": "server",
    "local_addr": "0.0.0.0",
    "local_port": 350,
    "remote_addr": "127.0.0.1",
    "remote_port": 351,
    "password": [
        "设置密码"
    ],
    "log_level": 1,
    "ssl": {
        "cert": "/etc/letsencrypt/live/YOUR.TROJAN.DOMAIN/fullchain.pem",
        "key": "/etc/letsencrypt/live/YOUR.TROJAN.DOMAIN/privkey.pem",

下面不变。

5. 电脑端配置时,注意电脑上设置的“服务器端口/remote_port”依然为443。

6. 按照上面的nginx设置,伪装网页的html文件我放在了/var/www/YOUR.TROJAN.DOMAIN/html文件夹中,命名为index.html。这个网站可以随意设置,比如我就简单地放了一个我西皮的照片——看,我成天刷这个网页多么合理!

<html>
<meta name="viewport" content="width=device-width,initial-scale=1" />
    <head>
        <title>标题</title>
    </head>
    <body>
        <img src="./images/图.jpg" alt="图片说明" width="100%">
    </body>
</html>

装完之后测试了一下——速度的话看起来还行,比我往常的梯子快。流量……我作为一个成天挂着梯子的重度用户,感觉五个我都用不完OTZ……唯一一个缺点就是买到的服务器IP段可能被其他人干过什么坏事,所以被cloudflare屏蔽了,像m.cmx.im这种开了严格反攻击的网站就打不开,不过日常使用绝对够了。

发布者:叼走禁令的鹅

当我伸出手来,总希望能抓住些什么,不至于落入对空虚无尽的恐慌之中。

搭建Trojan梯子笔记》有4个想法

留下评论

通过 WordPress.com 设计一个这样的站点
从这里开始