Trojan 和 Trojan-go 的区别,可以参考官方说明

安装

Releases 页面下载对应的版本。

cd ~
wget https://github.com/p4gefau1t/trojan-go/releases/download/v0.10.6/trojan-go-linux-amd64.zip
# 解压
unzip trojan-go-linux-amd64.zip -d /etc/trojan-go
# 进入到 trojan-go 目录
cd /etc/trojan-go

申请证书或放置证书

参考https://km.sankuai.com/page/1271259776

配置 Trojan-Go

修改服务器配置文件

cp /etc/trojan-go/example/server.json /etc/trojan-go
vim server.json

编辑 server.json,可以根据你的需求,自行修改。

{
    "run_type": "server",
    "local_addr": "0.0.0.0",
    "local_port": 14443,
    "remote_addr": "127.0.0.1",
    "remote_port": 80,
    "password": [
        "d933afb4-7297-11ec-90d6-0242ac12000"
    ],
    "ssl": {
        "cert": "/etc/nginx/ssl/tro-go.xingshuo.me.fullchain.cer",
        "key": "/etc/nginx/ssl/tro-go.xingshuo.me.key",
    },
    "router": {
        "enabled": true,
        "block": [
            "geoip:private"
        ],
        "geoip": "/etc/trojan-go/geoip.dat",
        "geosite": "/etc/trojan-go/geosite.dat"
    }
}

配置 Nginx

vim /etc/nginx/nginx.conf
# 转发到特定域名
stream {
  map $ssl_preread_server_name $backend_name {
    tro-go.xingshuo.me trojan-go;
  }
  upstream trojan-go {
   server 127.0.0.1:14443;
  }
}
# 重启 nginx
nginx -s reload

测试 Trojan-Go

关闭会话对断开,只适用临时测试。

cd /etc/trojan-go
./trojan-go -config config.json

安装服务

设为开机启动,需要新增服务。

安装后,有个 example 目录,里边有对应系统的服务。因为我是 CentOS 7 ,所以选择 trojan-go.service。

第一步复制到服务目录中。

cp /etc/trojan-go/example/trojan-go.service /etc/systemd/system/
vim /etc/systemd/system/trojan-go.service

进入编辑模式,需要关注两点:

  • 第 7 行,需要改成已有账户。我这里只有一个账户 root。

  • 第 11 行需要用绝对路径启动。

[Unit]
Description=Trojan-Go - An unidentifiable mechanism that helps you bypass GFW
Documentation=https://p4gefau1t.github.io/trojan-go/
After=network.target nss-lookup.target

[Service]
User=root
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ExecStart=/etc/trojan-go/trojan-go -config /etc/trojan-go/config.json
Restart=on-failure
RestartSec=10s
LimitNOFILE=infinity

[Install]
WantedBy=multi-user.target

最后,设置开机启动。

systemctl enable trojan-go.service
systemctl start trojan-go.service
# 查看服务是否正常
systemctl status trojan-go.service