发布于 

trojan-go使用

下载并解压trojan-go

1.下载trojan-go

1
wget https://github.com/p4gefau1t/trojan-go/releases/download/v0.10.6/trojan-go-linux-amd64.zip

2.解压trojan-go

1
unzip trojan-go-linux-amd64.zip

3.将trojan-go命令复制到/usr/local/bin目录下

1
cp trojan-go /usr/local/bin/

4.在etc下创建存储trojan-go配置文件的目录,并把配置文件复制到该目录

1
2
mkdir /etc/trojan-go
cp *.dat /etc/trojan-go

创建trojan-go运行配置文件

在/etc/trojan-go目录下创建配置文件server.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
run-type: server
# 对外监听端口
local-addr: 0.0.0.0
local-port: 22250
# fallback 端口
remote-addr: 127.0.0.1
remote-port: 80
# 密码
password:
- your_password
# 自己的域名和证书
ssl:
cert: /www/ssl/example.crt
key: /www/ssl/example.key
sni: trojan.example.com
router:
enabled: true
block:
- 'geoip:private'
# 不同的安装方式,这些文件的路径会不一样
geoip: /etc/trojan-go/geoip.dat
geosite: /etc/trojan-go/geosite.dat

运行trojan-go程序

1
nohup trojan-go -config server.yaml &

配置nginx转发

实现目标:通过8443端口监听,若是trojan的流量则转发到trojan,若是其他流量转发到nginx的443端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 流量转发核心配置
stream {
# 这里就是 SNI 识别,将域名映射成一个配置名
map $ssl_preread_server_name $backend_name {
trojan.example.com trojan;
# 域名都不匹配情况下的默认值
default web;
}
# web,配置转发详情
upstream web {
server 127.0.0.1:443;
}
# trojan,配置转发详情。需要跟 trojan 的监听端口一致。
upstream trojan {
server 127.0.0.1:22250;
}
# 监听 8443 并开启 ssl_preread
server {
listen 8443 reuseport;
listen [::]:8443 reuseport;
proxy_pass $backend_name;
ssl_preread on;
}
}

重启nginx并打开防火墙端口

1.检查配置文件是否有问题并重启nginx

1
2
nginx -t
nginx -s reload

3.开启防火墙

1
2
firewall-cmd --add-port=8443/tcp --permanent
firewall-cmd --reload

FAQ

1.stream在nginx配置文件中与http块同级,所以在引入的时候,需要在http块外部引入stream块

2.nginx转发配置文件中需要引入stream模块和ssl_preread模块,详细可参考nginx开启模块(无需重新覆盖安装)




Copyright © 2023 ChenWei | Powered By Stellar
本站已运行 00 小时 00