介绍
为什么需要TLS加密?
答:MTProxy搭建在海外服务器上直接使用太过容易被封锁,使用TLS加密流量进行转发可有效避免封锁
方案
需要准备
- 一台国内服务器
- 一台海外服务器
- 一个SSL证书及私钥
国内服务器上
搭建一个Nginx服务器作为入口,推荐使用docker,官方已集成四层转发需要的stream相关模块,不需要自行编译
- 创建Nginx配置文件
nginx.conf
,注意修改证书名称及转发的目的ip和端口,参考如下: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
26
27user nginx;
worker_processes auto;
worker_rlimit_nofile 65535;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 102400;
}
stream {
log_format proxy '$remote_addr:$remote_port $server_port [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr" '
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
access_log /var/log/nginx/access.log proxy;
proxy_ssl on;
proxy_ssl_protocols TLSv1.3;
proxy_ssl_server_name on;
proxy_ssl_name xxx.kwin.win; #改为你的SSL证书名称
server {
listen 6666;
listen 6666 udp;
proxy_pass x.x.x.x:6666; #改为海外服务器ip
}
} - 创建Nginx容器(注意修改
/path/to/your/nginx.conf
为你的nginx.conf
绝对路径)1
2
3
4
5
6
7docker run -d --name nginx \
--net=host \
-e TZ=Asia/Shanghai \
--log-opt max-size=10m \
--restart=always \
-v "/path/to/your/nginx.conf:/etc/nginx/nginx.conf" \
nginx:latest
海外服务器上
同样搭建一个Nginx服务器(配置文件有所不同),以及MTProxy(不再赘述)
- 将你的证书和证书私钥放至同一文件夹
- 创建Nginx配置文件
nginx.conf
,注意证书及证书私钥的文件名及修改MTProxy端口,参考如下: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
26
27user nginx;
worker_processes auto;
worker_rlimit_nofile 65535;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 102400;
}
stream {
log_format proxy '$remote_addr:$remote_port $server_port [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr" '
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
access_log /var/log/nginx/access.log proxy;
ssl_protocols TLSv1.3;
ssl_certificate /home/cert/fullchain.pem; #证书
ssl_certificate_key /home/cert/privkey.pem; #证书私钥
server {
listen 6666 ssl;
listen 6666 udp;
proxy_pass 127.0.0.1:你的MTProxy端口;
}
} - 创建Nginx容器
- 注意修改
/path/to/your/nginx.conf
为你的nginx.conf
绝对路径 - 注意修改
/path/to/your/cert
为证书所在文件夹的绝对路径1
2
3
4
5
6
7
8docker run -d --name nginx \
--net=host \
-e TZ=Asia/Shanghai \
--log-opt max-size=10m \
--restart=always \
-v "/path/to/your/nginx.conf:/etc/nginx/nginx.conf" \
-v "/path/to/your/cert:/home/cert" \
nginx:latest
完成
打开Telegram,修改代理MTProxy中的hostname为国内服务器ip
,port为6666
即可