搭建 shadowsocks 代理

  • 客户端发出的请求基于 Socks5 协议跟 ss-local 端进行通讯,由于这个 ss-local 一般是本机或路由器或局域网的其他机器,不经过 GFW,所以解决了 GFW 通过特征分析进行干扰的问题 - ss-local 和 ss-server 两端通过多种可选的加密方法进行通讯,经过 GFW 的时候是常规的TCP包,没有明显的特征码而且 GFW 也无法对通讯数据进行解密
  • ss-server 将收到的加密数据进行解密,还原原来的请求,再发送到用户需要访问的服务,获取响应原路返回
  • shadowsocks

搭建 shadowsocks 服务端

  1. shadowsocks 下载和安装

    • 下载git clone https://github.com/shadowsocks/shadowsocks.git
    • 切换分支: git checkout origin/master -b master
    • 安装 sudo python setup.py install
  2. json 配置文件参考

    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
        "server": "0.0.0.0",
        "server_port": 50000,
        "password": "***",
        "timeout": 300,
        "method": "aes-256-cfb",
        "fast_open": false,
        "workers": 1
    }
    
  3. 启动服务: ssserver -c /etc/shadowsocks/shadowsocks.json -d start

  4. 终止服务: ssserver -c /etc/shadowsocks/shadowsocks.json -d stop

  5. 建议:

    • 如果是自己搭建, 建议端口设置的随机一点. 不然会被其他的陌生人侦测到, 无节制的蹭网影响正常使用
    • 如果不想自己搭建,可以去 shadowsocks 官网购买账号, 网速很稳定, 但可能被封. 一年16刀(需要翻墙才能访问)
  6. 国外服务器推荐

    • 微软云, 按量付费模式
    • 阿里云, 国外节点, 入门主机即可.
    • Amazon, 新注册用户绑定信用卡后免费用一年乞丐版主机. 网速不太稳定.

客户端连接 socket 代理服务

  1. win下,启动 shadowsocks客户端 会直接将socket代理转为HTTP代理.

  2. linux下, 使用

    1
    sslocal -c /etc/shadowsocks/shadowsocks.json -d start
    

    启动本地 socket 代理

    • 如果系统不支持 socket代理,那么可以使用privoxy程序实现socket代理转http代理
    • json配置文件参考
    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
        "server": "sslserverIp",
        "server_port": 8443,
        "local_address": "127.0.0.1",
        "local_port": 88345,
        "password": "***",
        "timeout": 300,
        "method": "aes-256-cfb"
    }
    
  3. 建议:

    • 若不需要全局代理, 建议使用 chrome 的 SwitchyOmega 插件, 支持 socket 代理.
    • 使用 auto switch 模式. 这里推荐一个长期更新的代理规则列表 https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt ,可以很好的实现路由分流,提升访问速度
    • 如果使用的国外服务器网速不太稳定, 可以使用阿里云ECS等可以稳定链接国外服务器的国内服务器做中转. 不过存在国内服务器被封的情况

搭建HTTP代理服务

使用 privoxy 程序实现

  1. 下载privoxy, 并安装(阿里源有此软件, 可以直接 apt install)

  2. 配置 config 文件,添加以下行,实现socket代理转http代理

    1
    2
    3
    4
    # 监听socket服务的端口, 如果要对外提供服务, 127.0.0.1 改为 0.0.0.0
    forward-socks5t / 127.0.0.1:1080    .
    # http服务的监听端口,建议取一个随机的五位数值
    listen-address  0.0.0.0:8118
    
  3. 启动privoxy服务 systemctl restart privoxy

  4. 注意防火墙不要禁用相关端口

  5. privoxy 本身不支持用户功能.

ss 中转

有时我们有这样的需求: 本地网络访问海外服务器 IP 不稳定, 时断时序或者干脆直接连不上了, 这是可以通过远程中转的方式解决次问题. (需要你有一台稳定的公网服务器)

具体参端口转发