2020年12月4日星期五

全网首个Windows上搭建Trojan+MTG+SNIPROXY,TLS分流器教程共用443端口

为什么要在上Windows搭建,因为我要用。

๑乛◡乛๑

域名:

以下教程中,需要2-3个域名,其中:
1.a.hahaha.com
这个是trojan TLS证书的域名。

2.b.hahaha.com
这个是Telegram代理服务器的域名。

3.如果你的服务器是固定ip,那就把前面两个域名指向固定IP,在域名管理网站里选择添加Source record type A,输入固定IP。
如果是DDNS,则需要一个ddns地址,假设是ddns.hahaha.com。那就要在域名管理网站里选择添加Source record type CNAME,把前面两个域名指向ddns.hahaha.com。

改好之后等待DNS刷新生效。
如果ping前面两个网址,看到解析的IP地址是固定IP或者ddns的IP,就证明已经生效了。

Trojan

下载地址:https://github.com/trojan-gfw/trojan

配置指南:https://trojan-gfw.github.io/trojan

用Trojan-go也是一样的,这里就不放配置了。

(我这里的config.json不适合所有人,请自行理解修改)

{

    "run_type": "server",

    "local_addr": "0.0.0.0",

    "local_port": 233,

    "remote_addr": "192.168.1.1",

    "remote_port": 3070,

    "password": [

    "password1",

    "password2" //用不同的密码区分用户,在log里可以查看

    ],

    "log_level": 1,

    "ssl": {

    "cert": "D:/cert.pem", //TLS证书路径

    "key": "D:/privkey.pem", //TLS私钥路径

        "key_password": "",

        "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:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384",

        "cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",

        "prefer_server_cipher": true,

        "alpn": [

            "http/1.1"

        ],

        "alpn_port_override": {

            "h2": 81

        },

        "reuse_session": true,

        "session_ticket": false,

        "session_timeout": 600,

        "plain_http_response": "",

        "curves": "",

        "dhparam": ""

    },

    "tcp": {

        "prefer_ipv4": true, //我是prefer的

        "no_delay": true,

        "keep_alive": true,

        "reuse_port": false,

        "fast_open": false,

        "fast_open_qlen": 20

    },

    "mysql": {

        "enabled": false,

        "server_addr": "127.0.0.1",

        "server_port": 3306,

        "database": "trojan",

        "username": "trojan",

        "password": "",

        "key": "",

        "cert": "",

        "ca": ""

    }

}


写个bat文件,双击之后就可以后台运行了,不用看着烦人的黑底白字的窗口。

(这个是会生成log文件的,不想生成就去掉 -l D:/Log.log 这部分代码)

@echo off

if "%1"=="h" goto begin

start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit

:begin


D:/trojan -l D:/Log.log D:/config.json


想在窗口里看log的话就这么写:

@echo off

D:/trojan D:/config.json


当然,如果后台运行,改了配置是要重新启动的,以下是关闭trojan的bat,双击就能用。

@echo off

if "%1" == "h" goto begin

mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit

:begin


taskkill /f /t /im trojan.exe 

根据后面的需要,这里可以直接关闭三个程序:

taskkill /f /t /im trojan.exe & taskkill /f /t /im mtg.exe & taskkill /f /t /im sniproxy.exe 


MTG

下载地址及使用说明:https://github.com/9seconds/mtg

先安装Golang,因为要自己编译成windows版本:

装好之后打开cmd,输入go env看看环境,应该是没什么问题的。

Go支持不同平台交叉编译,命令放在最后面供大家参考。

开始编译:
打开cmd进入到mtg路径下,输入以下命令
SET CGO_ENABLED=0
SET GOOS=windows 
SET GOARCH=amd64
go build main.go 

你就会在mtg文件夹下面得到一个main.exe,重命名为mtg.exe并且放到trojan文件夹下,方便后面使用。

伪装域名
官方给的例子

mtg generate-secret -c google.com tls
ee852380f362a09343efb4690c4e17862e676f6f676c652e636f6d

可以填写任意域名做为伪装,建议填写国内的域名。可以参考这个列表

首次需要手动添加:
Server:b.hahaha.com
Port:443
Secret:ee852380f362a09343efb4690c4e17862e676f6f676c652e636f6d

分享代理的话在代理编辑模式下点击Share,将这段代码或者二维码发给别人,对方在telegram里,点一下就能自动添加:
https://t.me/proxy?server=b.hahaha.com&port=443&secret=7oUjgPNioJND77RpDE4Xhi5nb29nbGUuY29t
然后写个bat后台运行:
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin

D:/trojan/mtg run -b 0.0.0.0:2333 --cloak-port=443 
ee852380f362a09343efb4690c4e17862e676f6f676c652e636f6d


想在窗口里看的话就这么写:

@echo off

D:/trojan/mtg run -b 0.0.0.0:2333 --cloak-port=443 

ee852380f362a09343efb4690c4e17862e676f6f676c652e636f6d

SNIPROXY

下载地址:https://github.com/atenart/sniproxy


开始编译:
打开cmd进入到sniproxy路径下,输入以下命令

SET CGO_ENABLED=0
SET GOOS=windows 
SET GOARCH=amd64 //这三句之前没动过的话就不用再输入了
go build main.go 

他会提示:

# command-line-arguments

.\main.go:34:8: undefined: Proxy

然后你运行:

go build

就会发现它说:

proxy.go:26:2: cannot find package "github.com/atenart/sniproxy/config" in any of:

        c:\go\src\github.com\atenart\sniproxy\config (from $GOROOT)

        C:\Users\userA\go\src\github.com\atenart\sniproxy\config (from $GOPATH)

因为GOROOT和GOPATH路径下没这个package,我懒得改环境,就直接复制过去吧:

md C:\Users\userA\go\src\github.com\atenart\sniproxy\config

xcopy D:\sniproxy\config C:\Users\userA\go\src\github.com\atenart\sniproxy\config /e
它会显示:
D:\sniproxy\config\config.go
D:\sniproxy\config\lexer.go
D:\sniproxy\config\parser.go
复制了 3 个文件
然后再编译:
go build
你就会发现在文件夹下面多了一个sniproxy.exe,放到trojan文件夹下,方便后面使用。

配置:
在trojan文件夹下创建一个sniproxy的配置文件。
a.hahaha.com {
        backend 127.0.0.1:233
}
google.com {
        backend 127.0.0.1:2333
}
注意:
这里的第一个域名是trojan服务的域名,第二个域名是前面MTG伪装的域名,端口记得对应好,也别用已经被占用的端口。如果是内网的话,记得设置路由器443端口转发到服务器上。

依旧写个bat后台运行:
(这个是会生成log文件的,不想生成就去掉 >> D:\SNILog.log 2>&1 这部分代码)
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin

D:/Tro/sniproxy-bind 0.0.0.0:443 -conf D:/Tro/sniproxy.conf 
>> D:\SNILog.log 2>&1

刚开始也可以看一下运行情况
@echo off
D:/Tro/sniproxy-bind 0.0.0.0:443 -conf D:/Tro/sniproxy.conf

最后,运行三个程序,搞定收工!

我一般是把trojan、MTG、sniproxy写好的bat放在Windows 启动 文件夹里,开机启动。

附录:

Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。

Mac 下编译 Linux 和 Windows 64位可执行程序

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Linux 下编译 Mac 和 Windows 64位可执行程序

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Windows 下编译 Mac 和 Linux 64位可执行程序

SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go 

没有评论:

发表评论