前言
GOPROXY使用必读
手册和项目中使用了一部分的名词,它们本身的含义和在goproxy的专有含义是不一样的,所以前言中对这些名词做了解释,不然直接看具体手册章节必然会出现理解偏差,导致不能正确的使用goproxy。
goproxy的很多功能都使用了相同的核心技术,比如底层传输:tcps传输协议,ws协议,kcp参数,黑白名单,认证等,它们的用法是一样的。 为了手册的简洁,相同的功能的说明,就放在这里统一说明,不在每个地方重复的说明。
proxy功能很多,往往你想要用的只是其中一个功能,那么不要被手册其它功能内容吓到和干扰,你只需要看前言和你需要用到的功能的手册部分即可!
名词解释
本站包括项目手册,如果没有特殊说明:
goproxy
,proxy
,均指本项目:https://github.com/snail007/goproxy 。本地
,均指需要使用代理的应用程序
直接连接的代理
,一般是你日常使用的机器,也可能是一个服务器。代理链
,指多个相连的代理组成的一个代理链条,一个代理链中至少有两个上下相连的代理,链条中的每一个代理不一定都是proxy提供的,可以是第三方标准代理。为了区分,链条的 末端 是入口,称为
本地代理
是最后一级;链条的 顶端 是出口,称为一级
代理。连接一级代理的是二级代理,连接二级代理的是三级级代理,以此类推。
由此可见,本地和一级代理是链条的两端,链条中至少两个代理,链条中间的称为n级代理,越靠近本地n就越大。
如果链条只有两个代理,那么二级代理和本地代理指的是同一个代理。
本级
,均指链条中,任意一个代理。上级
,父级
,parent
,均指:本级代理连接的上一级代理,可以是proxy提供的代理也可以是第三方标准代理。
分层架构
goproxy数据流动架构,主要分为两层。
上层是我们熟悉的各种标准服务:socks5代理,http(s)代理,sps代理(ss+http(s)+socks5),tcp代理,udp代理,dns代理,内网穿透。
也就是命令中的第一参数,代表服务,也称为功能模块,功能。比如:http,socks,sps,tcp,udp,dns等。
下层也就是底层,负责数据传输,传输的协议和有很多,比如:tcp,tcps,ws,tls,wss,tou,kcp,不同的协议使用的基础协议也是不一样的,
其中除了tou和kcp使用UDP作为基础协议之外,其它传输协议均是基于TCP。也就是说tou和kcp监听的是UDP端口,其它监听的是TCP端口。
传输协议在proxy的参数中体现为-T、-t,-T是连接上级使用的传输协议。-t是本地监听的端口使用的传输协议。
本级代理的-T和和上级代理的-t应该是一致的,不然是无法通讯的,这很好理解,对方说什么语言你用什么语言去聆听才能明白对方说些什么。
IP地址
由于代理示例用到各种IP,示例中统一用IP_X,X是机器名词代号,比如A,B,这样的形式表示一个机器的IP;你在复制命令后实际使用前,记得一定要根据自己情况替换IP_X为你自己的实际IP地址。如果示例中提到了机器A,那么默认它的IP地址就是IP_A,不再重复声明。
高级使用
proxy命令格式是:proxy 功能名称
参数1 参数2 参数n…,proxy功能名称和功能介绍如下:
http
http(s)代理
socks
socks5代理
sps
http(s)+socks5+ss综合代理,一个端口同时支持3种代理
tcp
tcp代理,tcp端口转发
udp
udp代理,udp端口转发
dns
dns代理,dns服务器,dns转发
bridge
多路复用版内网穿透的bridge端
client
多路复用版内网穿透的client端
server
多路复用版内网穿透的server端
tbridge
多链接版内网穿透的bridge端
tclient
多链接版内网穿透的client端
tserver
多链接版内网穿透的server端
由于每个功能参数众多,有的很少用,默认值就能很好工作,手册只是介绍了高频的参数的使用,未提及的参数可以通过 proxy help 功能名称
,查看到功能相关所有的参数。
如果你想深入了解和掌握proxy每个功能的用法,那么动起手来试试每个参数吧,去体会,去感受就能深刻理解并熟练掌握它。
KCP配置
很多功能的底层传输协议都支持kcp,kcp参数都是以--kcp
开头,可以通过proxy help 功能名称 ,比如:proxy help http,去查看所有的参数,包括kcp参数。
虽然参数很多,但是proxy针对大众情况,设置了一波默认值,如果发现默认参数不合你口味,那么你就需要自己搜索kcp每个参数的意思和用法,资料很多,本手册不再赘述。
当然最简单的用法就是设置一个kcp密码即可,KCP协议需要–kcp-key参数设置一个密码用于加密解密数据。
TLS证书
为了安全很多功能都可以使用底层tls传输协议加密传输数据,tls需要一个proxy.crt证书文件和一个私钥proxy.key文件。
这两个文件可以通过命令:proxy keygen proxy
生成。
另外,tls证书只需要在一个proxy端生成,其它端复制过去即可,要保证所有端证书一样。