有时候需要科学上网,这个时候 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