- 客户端发出的请求基于 Socks5 协议跟 ss-local 端进行通讯,由于这个 ss-local 一般是本机或路由器或局域网的其他机器,不经过 GFW,所以解决了 GFW 通过特征分析进行干扰的问题 - ss-local 和 ss-server 两端通过多种可选的加密方法进行通讯,经过 GFW 的时候是常规的TCP包,没有明显的特征码而且 GFW 也无法对通讯数据进行解密
- ss-server 将收到的加密数据进行解密,还原原来的请求,再发送到用户需要访问的服务,获取响应原路返回
搭建 shadowsocks 服务端
-
shadowsocks 下载和安装
- 下载
git clone https://github.com/shadowsocks/shadowsocks.git
- 切换分支:
git checkout origin/master -b master
- 安装
sudo python setup.py install
- 下载
-
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 }
-
启动服务:
ssserver -c /etc/shadowsocks/shadowsocks.json -d start
-
终止服务:
ssserver -c /etc/shadowsocks/shadowsocks.json -d stop
-
建议:
- 如果是自己搭建, 建议端口设置的随机一点. 不然会被其他的陌生人侦测到, 无节制的蹭网影响正常使用
- 如果不想自己搭建,可以去 shadowsocks 官网购买账号, 网速很稳定, 但可能被封. 一年16刀(需要翻墙才能访问)
-
国外服务器推荐
- 微软云, 按量付费模式
- 阿里云, 国外节点, 入门主机即可.
- Amazon, 新注册用户绑定信用卡后免费用一年乞丐版主机. 网速不太稳定.
客户端连接 socket 代理服务
-
win下,启动 shadowsocks客户端 会直接将socket代理转为HTTP代理.
-
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" }
-
建议:
- 若不需要全局代理, 建议使用 chrome 的 SwitchyOmega 插件, 支持 socket 代理.
- 使用
auto switch
模式. 这里推荐一个长期更新的代理规则列表https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
,可以很好的实现路由分流,提升访问速度 - 如果使用的国外服务器网速不太稳定, 可以使用阿里云ECS等可以稳定链接国外服务器的国内服务器做中转. 不过存在国内服务器被封的情况
搭建HTTP代理服务
使用 privoxy 程序实现
-
下载privoxy, 并安装(阿里源有此软件, 可以直接
apt install
) -
配置 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
-
启动privoxy服务
systemctl restart privoxy
-
注意防火墙不要禁用相关端口
-
privoxy 本身不支持用户功能.
ss 中转
有时我们有这样的需求: 本地网络访问海外服务器 IP 不稳定, 时断时序或者干脆直接连不上了, 这是可以通过远程中转的方式解决次问题. (需要你有一台稳定的公网服务器)
具体参端口转发