安装 ss 客户端
shadowsocks安装时是不分客户端还是服务器端的, 只不过安装后有两个脚本一个是sslocal代表以客户端模式工作,一个是ssserver代表以服务器端模式工作。
1
2
|
yum install -y python-pip
pip install https://github.com/shadowsocks/shadowsocks/archive/master.zip -U
|
启动 ss 客户端
1
|
nohup sslocal -s your_server_ip -p your_server_port -l 1080 -k your_server_passwd -t 600 -m rc4-md5 > /dev/null 2>&1 &
|
注意:
- 使用的是
sslocal
这个命令,表示 shadowsocks
以客户端模式工作
- 将上述命令里的
your_server_ip
, your_server_port
, your_server_passwd
换成自己的, 这三个分别代表服务器ip, 服务器上 shadowsocks
的端口以及密码.后面的 rc4-md5
加密方式也要换成跟 server
端一致。
- 前面的nohub 和最后的 & 表示后台执行且关闭 session 后仍然在后台执行,否则将会阻塞shell端口.
为了更方便, 建议新建一个.json的文件, 将上述信息放里面,如新建/etc/shadowsocks.json文件, 内容为:
1
2
3
4
5
6
7
8
9
10
11
|
{
"server":"your_server_ip", #ss服务器IP
"server_port":your_server_port, #端口
"local_address": "127.0.0.1", #本地ip
"local_port":1080, #本地端口
"password":"your_server_passwd",#连接ss密码
"timeout":300, #等待超时
"method":"rc4-md5", #加密方式
"fast_open": false, # true 或 false。如果你的服务器 Linux 内核在3.7+,可以开启 fast_open 以降低延迟。开启方法: echo 3 > /proc/sys/net/ipv4/tcp_fastopen 开启之后,将 fast_open 的配置设置为 true 即可
"workers": 1 # 工作线程数
}
|
然后运行一下命令启动shadowsocks
1
|
nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &
|
- 如果想增加开启自动启动,执行:echo “ nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &” /etc/rc.local
- 执行ps aux |grep sslocal |grep -v “grep”查看后台sslocal是否运行
安装Privoxy
上述安好了shadowsocks
,但它是 socks5
代理,我门在 shell
里执行的命令,发起的网络请求现在还不支持 socks5
代理,只支持 http/https
代理。为了我门需要安装 privoxy
代理,它能把电脑上所有http请求转发给 shadowsocks
1
2
3
4
5
|
yum install privoxy -y
# 把本地 HTTP 流量转发到本地 1080 SOCKS5 代理
forward-socks5t / 127.0.0.1:1080 .
# 可选,默认监听本地连接
listen-address 127.0.0.1:8118
|
- 查看
vim /usr/local/etc/privoxy/config
文件,
先搜索关键字 listen-address
找到 listen-address 127.0.0.1:8118
这一句,保证这一句没有注释,8118就是将来http代理要输入的端口。
然后搜索 forward-socks5t
, 将 #forward-socks5t / 127.0.0.1:1080 .
此句前面的注释去掉, 意思是转发流量到本地的1080端口, 而1080端口正是 ss 监听的端口
启动privoxy
1
2
|
systemctl restart privoxy
systemctl enable privoxy
|
转发配置
1
2
3
4
5
6
7
8
|
vim /etc/profile
PROXY_HOST=127.0.0.1
export all_proxy=http://$PROXY_HOST:8118
export ftp_proxy=http://$PROXY_HOST:8118
export http_proxy=http://$PROXY_HOST:8118
export https_proxy=http://$PROXY_HOST:8118
export no_proxy=localhost,本机网络地址/22
> source /etc/profile
|
测试验证
问题解决
如果不能访问, 请重启机器, 依次打开shadowsocks和privoxy再测试复制
1
2
|
nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &
privoxy --user privoxy /usr/local/etc/privoxy/config
|
性能优化
服务器:Linux 3.5及以上。
☆提高最大连接数:
编辑/etc/security/limits.conf文件,添加以下两行:
* soft nofile 51200
* hard nofile 51200
在启动shadowsocks之前先设置一下ulimit:
ulimit -n 51200
☆调整内核参数:
调整内核参数的目标是:
1.尽可能重用连接和端口号
2.尽可能增大队列和缓冲区
3.为高延迟和高流量选择合适的TCP拥塞算法
编辑/etc/sysctl.conf文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
fs.file-max = 51200
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_mem = 25600 51200 102400
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hybla
运行sysctl -p生效。
|
参考文献
https://github.com/shadowsocks/