shadowsocks了解一下

有时候需要科学上网,这个时候 ss 就大显身手了

初步认识

  • ss 是一个能骗过防火墙的网络代理工具。把要传输的原数据经过加密后再传输,网络中的防火墙由于得不出要传输的内容是啥,就只好放行了。
  • 于是就完成了防火墙穿透,也就是所谓翻墙。

网络环境

  • 自由的网络环境下 ,本机访问其他互联网服务建立连接传输数据的时候,直接 req 过去,res 回来
  • 但是一般情况下,会有 GFW。req 过去的数据和 res 回来的数据都必须通过 GFW 的检查。
  • 如果发现传输受限的内容,就会拦截本次传输,就会导致本机无法访问远程服务。

ss 做什么

  • ss 所做的就是把传输的数据加密,防火墙得到的数据是加密后的数据,如果想要破解加密数据可能经过大量运算,所以防火墙只好放弃。
  • 放行这个请求,本机就可以访问到了远程服务

ss 准备什么

  • 一台在 GFW 之外的服务器,ip 是国外的,比如(vultr 的 vps)
  • 在本机安装 ss 客户端,用于加密传输数据
  • 服务器需要安装 ss 服务端,用于解密加密的传输数据,然后再把揭秘后的原数据发送到目标服务器

原理

由两部分组成,运行在本地的 ss-local 和运行在 GFW 之外的服务器的 ss-server。

ss-local

  • 在本机启动和监听着一个服务,本地软件的网络请求都先发送到 ss-local,然后按照用户配置的加密方法和密码加密传输数据,再转发到墙外的 ss-server
PAC 代理模式和全局代理模式
  • pac 模式是访问网站先匹配 pac list,如果有在里面才会访问,否则直接连接访问网站
  • 节省 ss 流量,提高国内的访问速度

ss-server

  • 在墙外服务器启动和监听一个服务,监听 ss-local 的请求。
  • 收到 ss-local 转发过来的数据后,会先根据用户配置的加密方法和密码对数据进行对称揭秘,以获得加密后的数据的原内容。
  • 同时还会解析 socks5 协议,读出本次请求真正的目标服务地址(例如 facebook,google 服务器地址),再把解密后的数据发过去
  • 当真正的目标服务返回了数据,比如谷歌返回了页面,ss-server 会把返回的数据加密返回给 ss-local。ss-local 收到数据后再解密,发给本机的软件。
  • 这是一个对称相反的过程。
    • ss-local 和 ss-server 都需要用对称加密算法对数据进行加密和解密,因此这两端的加密方法和密码必须配置为一样。
    • ss 提供一系列的标准可靠的对称算法供用户选择。如 rc4,aes,does。
    • 对数据加密后再传输的目的是为了混淆原数据,让途中的防火墙无法算出传输的原数据。

chrome 下 SwitchyOmega 配合使用

  • 下载 SwitchyOmega 插件,勾选系统代理,将流量全部转给 ss-local

推荐阅读