稚鱼
稚鱼
发布于 2024-03-02 / 36 阅读
0
0

CentOS7服务器配置trojan代理经验及遇到的问题

记一次腾讯云CentOS7服务器配置trojan代理经验及遇到的问题

由于服务器需要下载一些国内网络无法访问到的内容,今天做了下服务器的代理配置,过程如下:

下载并安装配置trojan

依次复制下面命令并执行即可

## 进入你想要安装trojan的目录下,我的是在/usr/local
cd /usr/local 
## 下载trojan,可能服务器下载很慢,那就直接在你电脑(有科学工具)上粘贴下面的链接下载然后ftp上传到服务器去
wget https://github.com/trojan-gfw/trojan/releases/download/v1.16.0/trojan-1.16.0-linux-amd64.tar.xz
## 解压后会得到一个trojan的文件夹,其中就是全部软件内容,其中包含一个config.json这个文件很重要
tar xvf trojan-1.16.0-linux-amd64.tar.xz
## 进入trojan文件夹,此时我的当前路径是/usr/local/trojan
cd trojan
## 复制config.json原始文件备份
cp config.json /usr/local/trojan/config.json.bak
## 根据你的服务提供商提供的内容编辑配置内容
vim config.json
## 按i进入编辑模式
## run_type 为运行模式,指定填为 "client"
## local_port 为本地端口,如 1080
## remote_addr 为远程服务器地址,可以填服务器IP或者域名地址
## remote_port 为远程服务器端口,如 5001
## password 修改为你服务商提供的密码
## 示例如下
    "run_type": "client",
    "local_addr": "127.0.0.1",
    "local_port": 1080,
    "remote_addr": "os-1.trojanwheel.com",
    "remote_port": 443,
    "password": [
        "Ss3uPtMNTyc9rzwkjd"
    ],
ssl中的 verify 值修改为 false (如果配置文件中没有,则添加这个配置)
​ssl中的 verify_hostname 值修改为 false (如果配置文件中没有,则添加这个配置)
​ssl中的 cert 修改为 “” (先改成空的试试看,有问题的话后面会说)
按ESC键退出编辑,输入:wq保存配置文件
## 然后使用下面的命令运行客户端即可
sudo ./trojan 
## 如果希望后台运行,请执行(当无法使用时,请不要后台运行,以便查看运行日志)
sudo ./trojan &
## 退出的话,请运行下面的命令。
pkill -f trojan

这时你的trojan应该已经执行起来了

输出内容大概是这样

 Welcome to trojan 1.16.0
[2024-03-01 20:55:10] [WARN] trojan service (client) started at 127.0.0.1:1080

此时为了验证你的代理是否已经生效也为了之后命令行能够使用代理,我们需要安装proxychains

proxychains安装(trojan代理使用)

yum install -y proxychains-ng
## 完成后可以输入which proxychains确认是否安装成功
## 之后修改proxychains配置文件
vim /etc/proxychains.conf
## 按i进入编辑修改最后一行为(这里的端口号1080就是前面trojan配置的本地端口号)
socks5 127.0.0.1 1080
## 同样的按ESC键退出编辑,输入:wq保存配置文件

安装完成后可以就可以测试一下我们前面安装的trojan是否正常工作了,

## 直接执行下面指令会响应你服务器IP相关信息
curl cip.cc
## 执行下面指令如果你的trojan正常工作应该是响应你的代理服务器IP相关信息
proxychains curl cip.cc
## 示例如下
[root@lighthouse ~]# proxychains curl cip.cc
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/lib64/proxychains-ng/libproxychains4.so
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] Strict chain  ...  127.0.0.1:1080  ...  cip.cc:80  ...  OK
IP      : xx.xx.xx.xx
地址    : 欧盟  欧盟

数据二  : 欧盟

数据三  : 英国伦敦伦敦

URL     : http://www.cip.cc/xx.xx.xx.xx

可能出现的错误提示及解决方式

如果测试通过就万事大吉,如果不通过且你的trojan报错内容大概是下面这样

SSL handshake failed with xx.xx.xx:端口号: certificate verify failed

那么就可以尝试我这种方法去修复,我这里是从trojan官方issue中得到的解决方案

## 执行下面命令查看是否存在证书文件,如果你是centos7,那么你应该会有一个tls-ca-bundle.pem文件
ls -al /etc/pki/ca-trust/extracted/pem/
## 确认存在文件就可以回去trojan配置文件中做修改,将前面配置时候要你改成空的ssl下面的"cert": "" 改为"cert": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"

随后重新启动trojan再次执行proxychains curl cip.cc应该就是可以成功获取到你的代理服务IP信息了,也就代表着你的服务器已经能够正常使用代理了,在需要代理执行的命令前加上proxychains 即可。如果报错内容不一样或者未能成功解决的话,由于我没遇到过所以无法给你更详细的解答,如果有需要可以留言一起讨论

以系统服务方式启动trojan

在配置完成后可以执行下面命令为trojan创建系统服务,使之可以通过systemctl管理,其中/usr/local/trojan是我的trojan安装地址,如果你的不是这里,请修改为你的地址。至于说为什么这么写,就涉及到centos7的服务管理规则以及cat指令的使用了,有兴趣的可以自行搜索了解

cat > /etc/systemd/system/trojan.service <<-EOF
[Unit]
Description=trojan
After=network.target

[Service]
Type=simple
PIDFile=/usr/local/trojan/trojan.pid
ExecStart=/usr/local/trojan/trojan -c /usr/local/trojan/config.json -l /usr/local/trojan/trojan.log
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=1s

[Install]
WantedBy=multi-user.target

EOF

启动Trojan

systemctl start trojan

检查是否启动成功

ps aux | grep trojan | grep -v grep
## 看到有类似 /usr/local/trojan/trojan 的内容展示,即表示trojan正在运行如果未启动成功,通过下面命令查看日志: 
cat /usr/local/trojan/trojan.log
## 还可以执行查看结果是否为Trojan代理的IP
proxychains curl cip.cc  

设置开机自启

systemctl enable trojan


评论