如何搭建梯子(Trojan-Go方法)

The Great Firewall(GFW),是国内大陆的网络审查系统,所有的内外网络交互数据都会被审查。如果访问的数据包含敏感内容,访问会被强制中断。合法合规的访问必须备案,而未经备案的访问方式被称为VPN、翻墙、梯子。

Virtual Private Network(VPN),虚拟私有网络。一般指相对于公开网络的,只有指定方式才能访问的,利用内外穿透的方式实现公网访问内网的是VPN。可以看到VPN是提供外网访问内网的一种方式,但是因为GFW的存在,中国大陆的网络可以算作一种大范围的内网。

除了内网、公网,还有一种网络叫做暗网(Dark Web),是深网(Deep Web)的一部分,暗网的内容无法用搜索引擎查找,甚至VPN都没有用,需要特定的浏览器,特别的网址。大部分不合法的内容都在里面。我们可以通过搜索引擎找到的内容、甚至不用搜索引擎找到的内容大概只有暗网的1/400。

现在网上的VPN服务商很难找,找到的不知道稳不稳定,会不会随时跑路,会不会被封。

最大的问题,大部分服务商不支持Linux平台,这就让只使用linux的人很难受(比如我)。

本文介绍如何用国外服务器搭建一个VPN。

网络安全一直是大问题,如果数据直接是明文,到达GFW时会立刻被查出来,所以需要加密。

加密方式

Shadowsocks

ShadowsocksR

V2Ray

V2Ray使用了新的自行研发的VMess协议,改正了Shadowsocks一些已有的缺点,更难被墙检测到。V2Ray 的节点可以伪装成正常的网站(HTTPS),将其流量与正常的网页流量混淆,以避开第三方干扰。

Trojan

Trojan只使用HTTPS

搭建VPN

我使用的是Trojan,安全第一。

1、首先准备一台国外的服务器,服务商最好也是国外的。

server

然后登录到服务器中

htop

512MB + 1 CPU + Ubuntu 20.04 LTS

2、到国外的域名服务商网站(name或者godaddy)购买一个域名。

在DNS控制台,添加一个A记录,并指向服务器IP地址

dns

3、从腾讯或者阿里或者freessl申请一个对应域名的证书。

4、在服务器中安装Apache2或者Nginx,根据自己喜好。确保服务器的80端口可以访问,443即https端口无法访问。

5、从https://github.com/p4gefau1t/trojan-go下载对应服务器平台的安装包

解压上传到服务器上(或者可以直接下载到服务器,在服务器中解压)

files

在使用之前需要配置一下

6、将example文件夹中的文件复制到程序所在文件夹

先看一下server.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": [
"your_password"
],
"ssl": {
"cert": "your_cert.crt",
"key": "your_key.key",
"sni": "your-domain-name.com"
},
"router": {
"enabled": true,
"block": [
"geoip:private"
],
"geoip": "/usr/share/trojan-go/geoip.dat",
"geosite": "/usr/share/trojan-go/geosite.dat"
}
}

password字段改为自己想要的,最好复杂一些。

ssl字段下的cert、key字段填写申请的SSL证书位置,sni填写证书对应的域名。

router字段下的geoip/geosite位置根据实际调整

7、运行命令,这里推荐使用Screen

执行命令

1
./trojan-go -config server.json

运行效果为

running

如果443端口被占用,则自动退出。

8、检查一下是否运行正常,在浏览器中输入https格式的域名,应该会看见默认的Apache2页面

https

Apache2并没有配置SSL,而443端口被trojan-go程序占用,证明运行正常。

在使用nginx作为网络服务器时,如果VPN的Ip和正常网站的ip设置一样的话,会出现访问vpn网址和正常网址网址内容一样的问题。

在/var/www目录下创建一个新目录example.com,在里面创建一个新文件作为vpn服务器的主页,我选择nginx的默认显示页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/" rel="nofollow" target="_blank">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/" rel="nofollow" target="_blank">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

编辑/etc/nginx/sites-enabled

将最后部分的注释去掉

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
server {
listen 80;
listen [::]:80;

server_name example.com;

root /var/www/example.com;
index index.html;

location / {
try_files $uri $uri/ =404;
}
}

这样访问vpn网址时内容不会和其他网站内容冲突。当然apache2也要相应的配置。

服务器搭建完毕

Windows

v2rayN

v2rayN下载最新的版本,当前版本为4.20(需要安装依赖.net 环境)。

运行程序,点击菜单栏最左侧的服务器菜单

server

然后弹出配置界面

config

点击确定,在状态栏找到软件的图标,设置自动设置代理模式,然后软件图标会变为红色

icon

使用Firefox时,要设置浏览器的代理设置

firefox

这样就可以访问外网了

done

Trojan-Qt5

经过测试,可以使用

Linux

随便下载一个客户端,我用的是Manjaro Linux仓库提供的V2Ray Desktop

v2ray

设置trojan,把之前保存的地址、端口、密码填入

setup

ALPN Protocols字段就填写它提供的示例。

在setting页面,将模式修改为全局

global

然后可以看到软件默认页面信息变了

dashboard

经过测试并不能用。

qv2ray

然后我尝试了另一个客户端,qv2ray。当然,还有trojan插件

默认界面为:

default

点击下方的New创建新的链接

New

然后就可以了,当然浏览器的代理需要设置一下

done

我在国外服务器使用测试测试了一些国外服务器,腾讯的香港服务器效果还是不错的,720P无压力,但是使用要低调

tencent

优化

启动BBR

先安装依赖

1
apt install ca-certificate

运行脚本

1
wget "https://github.com/chiakge/Linux-NetSpeed/raw/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

sh

依次选择1/2/3,试一下哪个可以正常安装或者喜欢哪个。

经过测试,内核没有选,加速选择了4,也就是使用系统BBR。

bbr

开机启动

添加服务文件/etc/systemd/system/trojan-go.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=Trojan-GO
After=network.target nss-lookup.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/trojan-go -config /etc/trojan-go/config.json
Restart=on-failure
RestartSec=10s
LimitNOFILE=infinity

[Install]
WantedBy=multi-user.target

然后可以启动服务

1
systemctl start trojan-go.service

如何搭建梯子(Trojan-Go方法)
https://feater.top/linux/how-to-setup-vpn-with-foreign-server-using-trojan-go
作者
JackeyLea
发布于
2021年11月3日
许可协议