科学上网-shadowsocks

Shadowsocks 使用

利用docker搭建属于自己的shadowsocks服务器
一键式部署,操作方便

一道隐形的墙

  • 众所周知,天朝局域网通过 GFW 隔离了我们与外界的交流,当然,这个隔离并非完全隔离,而是选择性的,天朝不希望你上的网站就直接阻断。每一个网络请求都是有数据特征的,不同的协议具备不同的特征,比如 HTTP/HTTPS 这类请求,会很明确地告诉 GFW 它们要请求哪个域名;再比如 TCP 请求,它只会告诉 GFW 它们要请求哪个 IP。

  • GFW 封锁包含多种方式,最容易操作也是最基础的方式便是域名黑白名单,在黑名单内的域名不让通过,IP 黑白名单也是这个道理。如果你有一台国外服务器不在 GFW 的黑名单内,天朝局域网的机器就可以跟这一台机器通讯。那么一个翻墙的方案就出来了:境内设备与境外机器通讯,境内想看什么网页,就告诉境外的机器,让境外机器代理抓取,然后送回来,我们要做的就是保证境内设备与境外设备通讯时不被 GFW 怀疑和窃听。

  • ssh tunnel 是比较具有代表性的防窃听通讯隧道,通过 ssh 与境外服务器建立一条加密通道,此时的通讯 GFW 会将其视作普通的连接。由于大家都这么玩,GFW 着急了,于是它通过各种流量特征分析,渐渐的能够识别哪些连接是 ssh 隧道,并尝试性的对隧道做干扰,结果还是玩不过 GFW,众多隧道纷纷不通。

Shadowsocks 及其部署

原理

  • 具体而言,Shadowsocks 将原来 ssh 创建的 Socks5 协议拆开成 Server 端和 Client 端,两个端分别安装在境外服务器和境内设备上。
    1
    2
    3
    +------+     +------+     +=====+     +------+     +-------+
    | 设备 | <-> |Client| <-> | GFW | <-> |Server| <-> | 服务器 |
    +------+ +------+ +=====+ +------+ +-------+

境外服务器购买

服务端

  • Docker安装

  • 拉取镜像

    1
    docker pull oddrationale/docker-shadowsocks
    • 启动容器
      • 命令中 12345 端口号可以根据自己的喜好进行修改
      • YOUR_PASSWORD 替换成自己的密码
        1
        docker run -d -p 12345:12345 oddrationale/docker-shadowsocks -s 0.0.0.0 -p 12345 -k YOUR_PASSWORD -m aes-256-cfb

客户端