使用tls分流器搭配部署mtg协议 作者: 毕世平 时间: 2021-04-09 分类: 默认分类 前言:之前曾介绍过依赖`docker/docker-compose`的方式来部署[nginx反代mtproxy](https://shiping.date/5.html "nginx反代mtproxy")的安装方法,安装起来稍微有些繁琐,用到了`nginx的stream模块转发`和`alexbers/mtprotoproxy`的项目,起到了一定的隐蔽作用。 最近看到`9seconds/mtg`的项目也能搭配`tls分流器`以类似的方式运行,两个用go开发的应用,安装简单无依赖。个人部署使用了几天,还不错蛮稳的。 特此转载记录下,特此感谢原教程作者[Ben Jamin](https://winamp.top "Ben Jamin"),当然也有[tls分流器项目的开发者](https://github.com/liberal-boy "tls分流器项目的开发者")和[mtg项目的开发者](https://github.com/9seconds "mtg项目的开发者")。 > 转载教程原文链接:[MTG Proxy协议的搭建](https://winamp.top/102.html "MTG Proxy协议的搭建") # 一、配置mtg ## 1.1 下载 假定你的海外机器架构是`x86_64`,那么以`root`用户对应执行下面的命令进行下载: # 创建mtproxy目录并切换至此 mkdir -p /etc/mtproxy && cd /etc/mtproxy # 下载压缩包(目前最新稳定版是2.1.5) wget https://github.com/9seconds/mtg/releases/download/v2.1.5/mtg-2.1.5-linux-amd64.tar.gz # 解压 tar -zxf mtg-2.1.5-linux-amd64.tar.gz # 移动,并修改所有者 mv ./mtg-2.1.5-linux-amd64/mtg . && chown root.root ./mtg # (可选)删除压缩包和无用文件 rm -rf mtg-2.1.5-linux-amd64 mtg-2.1.5-linux-amd64.tar.gz > 其中mtg软件的releases发布页面地址是:[点我打开](https://github.com/9seconds/mtg/releases "点我打开")。 ## 1.2 生成密钥 找一个大陆可访问的海外站点,取其域名作为混淆对象,这里根据原文取的是`amazon.com`,那么对应生成密钥的命令如下: # 当前路径下执行下面命令生成密钥,密钥以ee开头 ./mtg generate-secret --hex amazon.com # 假设这是输出的结果,复制保存下来备用 eec9ef901afd5369447f55ac417b8465ce616d617a6f6e2e636f6d ## 1.3 配置服务 基本按下面命令操作,配置`mtg`的`systemd`服务: # mtg从v2.0.0RC1版开始支持配置文件启动 vim mtg.toml # 下面是示例 secret = "eec9ef901afd5369447f55ac417b8465ce616d617a6f6e2e636f6d" bind-to = "127.0.0.1:12345" # 添加完成后保存文件 ------------------------------------- # 切换路径 cd /etc/systemd/system && vim mtg.service # 下面是服务示例 [Unit] Description=mtg [Service] User=nobody AmbientCapabilities=CAP_NET_BIND_SERVICE ExecStart=/etc/mtproxy/mtg run /etc/mtproxy/mtg.toml Restart=always RestartSec=3 [Install] WantedBy=multi-user.target # 上面是示例 ---------------------------------------- systemctl daemon-reload systemctl start mtg systemctl enable mtg **说明**:配置文件中`bind-to = 127.0.0.1:12345`表示`mtg`的监听地址为本机的12345端口,这代表你tg代理程序跟tls分流器的通讯端口号也是`12345`,且这个mtg程序仅限本机可访问,别的地址无法探测。 # 二、配置tls分流器 ## 2.1 安装 tls分流器,顾名思义,可以分流tls流量,如果给读某域名的证书和key文件,那么解密该域名的https流量并进行其它一些操作也是可以的。目前,它支持分流转发`https`流量,`trojan`流量以及其它无法识别的tls流量,支持从letsencrypt申请证书(需要监听443端口)。 作者在github仅发布了`x86_64`架构的预编译版本,因此如果需要其它架构的,就需要自己来搞了。这里假定你的海外机器架构也是`x86_64`,则以`root`用户执行下面命令对tls分流器进行配置安装: # 创建文件夹 mkdir /etc/tls-shunt-proxy && cd /etc/tls-shunt-proxy # 下载压缩包 wget https://github.com/liberal-boy/tls-shunt-proxy/releases/download/0.7.0/tls-shunt-proxy-linux-amd64.zip # 解压 unzip tls-shunt-proxy-linux-amd64.zip # (可选)删除压缩包 rm tls-shunt-proxy-linux-amd64.zip # 赋予可执行权限 chmod +x tls-shunt-proxy > tls分流器项目release页面发布地址是:[点我打开](https://github.com/liberal-boy/tls-shunt-proxy/releases "点我打开")。 ## 2.2 配置文件 `tls-shunt-proxy`分流器读取`yaml`格式的配置文件,因此编写起来要特别注意缩进哦,不然可能就会出错: # 创建配置文件 vim config.yaml # 下面是(可用)配置文件全文示例 listen: 0.0.0.0:443 inboundbuffersize: 4 outboundbuffersize: 32 vhosts: - name: amazon.com tlsoffloading: false default: handler: proxyPass args: 127.0.0.1:12345 # 上面是配置文件示例 ## 2.3 服务文件的配置 这里抄了一份,稍作改动,原项目里服务文件这样配置:[点我打开](https://github.com/liberal-boy/tls-shunt-proxy/raw/master/dist/tls-shunt-proxy.service "点我打开")。 # 切换目录 cd /etc/systemd/system # 编写服务文件 vim tls-shunt-proxy.service # 下面是示例 [Unit] Description=TLS Shunt Proxy Service Documentation=https://github.com/liberal-boy/tls-shunt-proxy/blob/master/README.md After=network.target Wants=network-online.target [Service] Type=simple User=nobody AmbientCapabilities=CAP_NET_BIND_SERVICE StandardOutput=null ExecStart=/etc/tls-shunt-proxy/tls-shunt-proxy -config /etc/tls-shunt-proxy/config.yaml LimitNOFILE=51200 Restart=on-failure RestartSec=1s [Install] WantedBy=multi-user.target # 上面是示例 --------------------------------- systemctl daemon-reload # 启动|停止|开机自启|查看状态 systemctl start | stop | enable | status tls-shunt-proxy 之后通过`cd /etc/mtproxy && ./mtg access ./mtg.toml`命令输出获取tg代理链接,将端口号从`12345`换成`443`,然后把链接粘贴到`telegram`客户端里,尽情享用tg代理带来的便利吧。 ## 2.4 脚本方式安装(项目作者提供) tls分流器项目作者在github也提供了一键部署的方式,想使用脚本部署的可以执行下面命令进行安装: # 对于 linux-amd64 可以使用脚本安装,以 root 身份执行以下命令 bash <(curl -L -s https://raw.githubusercontent.com/liberal-boy/tls-shunt-proxy/master/dist/install.sh) # 三、结语 欢迎尝试,如有错误或不足,欢迎留言指正。 > 本文属转载,思路由`Ben jamin`原文提供,欢迎访问源地址: [Mtg Proxy协议的搭建](https://winamp.top/102.html "Mtg Proxy协议的搭建") 参考链接: - [9seconds/mtg项目地址](http://github.com/9seconds/mtg "9seconds/mtg项目地址") - [tls分流器项目地址](https://github.com/liberal-boy/tls-shunt-proxy "tls分流器项目地址") - [Ben jamin博客地址](https://winamp.top "Ben jamin博客地址") 标签: none
有几点疑惑:
- name: amazon.com1:全程用的是amazon.com范例
2:如果不需要用户自己准备域名,并用分流器申请证书,那最后如何实现
vhosts:
其实那个分流器我也用过几次,但根据本文无法成功让mtg走443.其实需要一个范例演示,哪怕播主随便虚构一个域名都可以
1、域名不要求必须是amazon.com,只是以此为例,你也可以写为baidu.com等等。
2、因为tlsoffloading这一项的值是false,也就是不解开tls,当然也就不用给读证书和key文件。
3、完整的文件示例,我在2.2这一项给出的就是完整示例了。