性能优化

如果你所配置的代理需要公开分享或者给大量人使用,那么你可能会遇到 VPS 最大文件描述符的错误提示。

编辑文件 vi /etc/security/limits.conf 在文件尾或者对应段加入内容,对用户级进行配置

* soft nofile 655350
* hard nofile 655350

表示对任何用户的软硬限制提升到 655350 个

接下来对系统级进行配置,vi /etc/sysctl.conf 加入配置

fs.file-max = 655350

用户打开的最大文件描述符总数不会超过系统级的总数。

将内核参数生效

sysctl -p

(注意,你需要新开一个 ssh,在新 session 中启动 mtproxy,来保证上述参数生效)

gost 中转

鉴于伊朗用户的 MTProxy 使用率比较高,封锁程度也越来越强。半实现 tls 的 mtp 也难以长时间支撑大量用户的连接。

在这里经过自测被封锁的现象,给予两点原因参考:

  1. 同一 IP 被大量用户长时间访问会被运营商检测到。

  2. 半 tls 未能完全骗过运营商。

目前测试中,经由 gost 提供的 tls 完整协议来封装 mtproxy 流量到 MTP 服务器会相对稳定。

即:client --> iran server --> mtproxy server

这个方法解决了同一 IP 被大量用户同时访问连接的问题,在 firewall 看来,只有一台服务器对外提供服务。

而对于在伊朗境内的流量被封锁的规则和程度都很小,这种方式也是目前比较稳定的做法。

下载 gost:

wget https://github.com/ginuerzh/gost/releases/download/v2.11.1/gost-linux-amd64-2.11.1.gz
gzip -d gost-linux-amd64-2.11.1.gz
mv gost-linux-amd64-2.11.1  gost
chmod +x gost

iran server (45.93.168.1):

./gost -L=tcp://:443 -L=udp://:443 -F=forward+mtls://1.1.1.1:8443?mbind=true>/dev/null 2>&1 &

监听 443 端口的 TCP 和 UDP 数据,并将其转发给 1.1.1.1 服务器的 8443 端口。

mtproxy server (1.1.1.1):

./gost -L=mtls://:8443/127.0.0.1:443>/dev/null 2>&1 &

监听 8443 端口数据,并将其转发给 443 端口 (mtproxy)

用户只需要在 Telegram 中配置伊朗的服务器 IP 和端口就可以实现连接到 mtproxy 代理服务器。

写在最后

关于封锁的问题,如果你通过上文方式部署 mtproxy 还会被检测,那么建议使用冷门 IP 段的数据中心会降低封锁的可能。也可以通过 gost 转发中转机到你的 mtproxy 服务器之间的流量,这一段是实现真正的 tls 传输,以此骗过防火墙并放行流量 (上文已补充)。

项目:https://github.com/FunctionClub/MTProxy-Bash

如果安装失败就使用Go魔改版:https://blog.upx8.com/3716

 相关:https://eller.top/posts/40 、https://doubibackup.com/es5fj9se.html