shadowsocks ~= spipe + socket5_proxy
即:
shadowsocks_client —–基于共享密码的加密数据—-> shadowsocks_server(解密数据,并将解密后的数据作为socket5协议来处理)
spipe和stunnel只是简单的数据的加密传输
如果client支持socket5代理,则使用shadowsocks比较方便;如果client不支持socket5代理,则需要在shadowsocks_client 前面添加一个支持socket5代理的proxy,如:(polipo)
如果client不支持任何代理设置,则可以通过一个自建的dns+stunnel+sniproxy来实现:
- 将需要代理的域名,通过dns解析到stunnel
- stunnel_client对数据进行加密传输给stunnel_server,stunnel_server解密数据并转给sniproxy
- sniproxy进行代理
spipe 是基于共享秘钥加密的,没有认证功能;也有其他基于ssl的实现方式,具有认证功能,如: https://github.com/dchest/spipe
stunnel是通过ssl实现的,具有认证功能
基于ssl握手认证的实现需要配置证书相关的东西,相对共享秘钥来讲麻烦一些