趁黑五买了个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.conf
的events
和http
两段之间上加上这一段:
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-available
和sites-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.json
,local_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这种开了严格反攻击的网站就打不开,不过日常使用绝对够了。
不知道线路稳不稳定?
赞赞
这就要看服务器到中国稳不稳了。我是还需要一个梯子备用的。
赞赞
嗯,我的服务器线路就是时好时坏的那种
赞赞