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
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开启模块(无需重新覆盖安装)