无需域名,在Ubuntu系统上搭建Trojan科学上网服务器

科学上网 admin 7770℃ 0评论

我的上一篇文章《从源头绕过GFW,利用Trojan在Debian系统上搭建科学上网服务器》,有网友反映现在申请免费域名(www.freenom.com)越来越困难,对部署Trojan增加障碍,今天为大家分享使用使用CA自签证书,在Ubuntu 18.04系统上搭建Trojan科学上网服务器。

理论上来说,Trojan可以永久地穿越Great FireWall,而不会被识别出来。Trojan的GitHub地址

本教程视频:YouTube

Trojan服务器部署

1、安装BBR加速

Ubuntu 18.04的内核也直接升到了正式版4.15,而BBR内核要求为4.9,也就是说满足了,所以我们不需要换内核就可以很快的开启BBR,以下是开启方法。

1.1、修改系统变量

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

1.2、保存生效

sysctl -p

1.3、查看内核是否已开启BBR

sysctl net.ipv4.tcp_available_congestion_control

显示以下即已开启:

net.ipv4.tcp_available_congestion_control = reno cubic bbr

1.4、查看BBR是否启动

lsmod | grep bbr

显示以下即启动成功:tcp_bbr 20480 5

2、安装Trojan

sudo apt --fix-broken install python-pycurl python-apt
sudo add-apt-repository ppa:greaterfire/trojan
sudo apt update
sudo apt install trojan

3、创建CA证书

安装CA证书所需的工具

apt install gnutls-bin gnutls-doc

创建 CA 模板 ca.tmpl(organization 可以随便写,服务器证书的 cn 填 VPS 的 IP 或域名)

vi /etc/ca-certificates/ca.tmpl
#内容为:
cn = "vps的IP地址"
organization = "Trojan"
serial = 1
expiration_days = 3650
ca
signing_key
cert_signing_key
crl_signing_key

生成 CA 密钥:

cd /etc/ca-certificates
certtool --generate-privkey --outfile ca-key.pem

生成 CA 证书:

certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem

创建服务器证书模板 :

vi /etc/ca-certificates/server.tmpl
#内容为:
cn = "vps的IP地址"
organization = "Trojan"
expiration_days = 3650
signing_key
encryption_key
tls_www_server

生成服务器证书密钥:

certtool --generate-privkey --outfile server-key.pem

生成服务器证书:

certtool --generate-certificate --load-privkey server-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile server-cert.pem

4、修改服务器配置文件

vi /etc/trojan/config.json
#内容为:
{
    "run_type": "server",
    "local_addr": "0.0.0.0",
    "local_port": 443,
    "remote_addr": "127.0.0.1",
    "remote_port": 80,
    "password": [
        "你的密码"
    ],
    "log_level": 1,
    "ssl": {
        "cert": "/etc/ca-certificates/server-cert.pem",
        "key": "/etc/ca-certificates/server-key.pem",
        "key_password": "",
        "cipher": "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256",
        "prefer_server_cipher": true,
        "alpn": [
            "http/1.1"
        ],
        "reuse_session": true,
         "session_timeout": 300,
         "curves": "",
         "sigalgs": "",
        "dhparam": ""
       }
}

5、试运行

cd
trojan /etc/trojan/config.json

6、把命令运行为server

因为命令trojan  /etc/trojan/config.json是运行在前台的,我们需要利用systemd来把该命令运行为service,运行下面命令

vi /etc/systemd/system/trojan.service

其内容为:

[Unit]
After=network.target 

[Service]
ExecStart=/usr/bin/trojan /etc/trojan/config.json
Restart=always

[Install]
WantedBy=multi-user.target

7、启动Trojan

systemctl start trojan

设置开机启动:由于Ubuntu 18.04不再使用 inited 管理系统,改用 systemd,实现起来有点复杂,有需求的自行搜索解决。

查看运行状态:

systemctl status trojan

客户端部署

1、下载证书文件(安卓手机客户端不需要下载,苹果手机客户端请自行测试)

用finashell或者其它相关软件下载trojan服务器/etc/ca-certificates/文件夹下的ca-cert.pem文件,并存放到客户端的trojan文件夹内。

2、编辑客户端配置文件

其内容为:

{
    "run_type": "client",
    "local_addr": "127.0.0.1",
    "local_port": 10800,
    "remote_addr": "vps的IP地址",
    "remote_port": 443,
    "password": [
        "你的密码"
    ],
    "append_payload": true,
    "log_level": 1,
    "ssl": {
        "verify": true,
        "verify_hostname": true,
        "cert": "ca-cert.pem",
        "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305-SHA256:ECDHE-RSA-CHACHA20-POLY1305-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:RSA-AES128-GCM-SHA256:RSA-AES256-GCM-SHA384:RSA-AES128-SHA:RSA-AES256-SHA:RSA-3DES-EDE-SHA",
        "sni": "35.229.176.107",
        "alpn": [
            "h2",
            "http/1.1"
        ],
        "reuse_session": true,
        "curves": "",
        "sigalgs": ""
    }
}

关于客户端的部署使用的更多方法,请参考https://www.mfzy.cf/archives/190

 

转载请注明:罗在草木间 » 无需域名,在Ubuntu系统上搭建Trojan科学上网服务器

喜欢 (7)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址