GOST
gost是一个Go语言编写的代理上网工具,可以作为小型企业在没有专有硬件或运营商提供的MPLS VPN等支持下,访问分部私有网络的一个廉价替代品。当然,其性能相对要差很多。gost提供了SOCKS5、HTTP、WebSocket等多种协议,当然首推的还是SOCKS5,因为它支持所有的TCP、UDP为传输层协议的应用层协议。使用起来也是很简单:
现在对外暴露48000端口,则所有经*:48000代理的应用都可以共享服务器主机的网络。也可以考虑多层转发:
所有报文都会向前转发到192.168.1.1:48000上的SOCKS5代理。这时gost可以作为一个代理客户端,可以考虑用NSSM之类的工具将其变为一个服务。目前,所有的主流浏览器都不支持SOCKS5用户名密码认证,如果使用了带有认证功能的SOCKS5服务并且还想使用浏览器访问,就必须考虑使用gost作为客户端:
注意后面的字符串,那是一个base64编码,格式是username:password(这里使用的是admin:1234)。服务器端除了可使用同样的auth外,还可以使用一个密码文件:
密码文件的每一行都是一个用户,用户名和密码之间用一个空格分开:
gost默认会将日志输出到标准输出。如果想记录日志,可以考虑借助Apache HTTPD里面的rotatelogs.exe:
该工具能够自动按时间命名日志,并在其大小超过1MB的时候创建一个新文件。
SOCKS5是一个明文传输的协议,如果希望加密,可以考虑在客户端和服务器端之间使用ShadowSocks协议:
数据会被加密后转发到192.168.1.1的9500端口。可以为代理添加访问控制,这是通过URL的whitelist和blacklist两个参数实现的:
此时会屏蔽除*.baidu.com和*.bilibili.com外所有网络的访问。whitelist的格式是action:url:port,其中rtcp指外网到内网方向的tcp,tcp指从内网到外网方向的tcp,不同的规则之间用加号连接,一定要注意blacklist和whitelist的顺序。