曾经在这里介绍过shadowsocks-python的安装。不过由于某些原因,Python版已经好久没更新了。所以再写一篇基于C语言和libev的shadowsocks-libev安装。
安装epel repo
如果epel仓库已经配置好了,可以跳过这一步。
执行 yum -y install epel-release
,当最后显示Complete!表示安装成功。
yum -y install epel-release
安装netspeeder
如果你的VPS或者虚拟机是KVM,建议安装谷歌的BBR协议,而非安装netspeeder。
大洋彼岸的服务器由于延时比较大,繁忙时段经常出现掉包的情况。netspeeder通过双重发包,大幅降低掉包重传的状况,让OpenVZ服务器的网速大幅上升。
首先,安装netspeeder依赖的编译环境和工具。执行 yum install libnet libpcap libnet-devel libpcap-devel gcc unzip -y
。
yum install libnet libpcap libnet-devel libpcap-devel gcc unzip -y
然后下载并编译netspeeder。
cd /usr/local wget https://github.com/snooda/net-speeder/archive/master.zip unzip master.zip rm -f master.zip cd net-speeder-master sh build.sh -DCOOKED
编译成功后,启动netspeeder检查是否能正常工作。venet0为网卡名,“ip”是bpf过滤规则的语法,代表所有IP协议的数据。
./net_speeder venet0 "ip"
然后在自己的电脑上ping服务器的IP,检查响应时间和掉包率。一般美国西岸的ping值小于300ms。掉包率为0就最好了。
为了让netspeeder能够在每次开机都运行,我们编写一个daemon脚本并且加到rc.local里面。(其实CentOS 7建议创建systemmd服务而非使用rc.local,不过使用rc.local更为简单)
在net-speeder-master目录下创建一个名为ns_deamon.sh的脚本。
#!/bin/bash BASE_DIR="/usr/local/net-speeder-master" myself=`ps -ef | grep ns_daemon.sh | grep -v grep | grep -v $$` if [ -n "${myself}" ] then exit 0; fi cd ${BASE_DIR} while true do pid=`ps -ef | grep net_speeder | grep -v grep | awk '{print $3}'` if [ -z "${pid}" ] then ${BASE_DIR}/net_speeder venet0 "ip" & fi sleep 60 done
在/etc/rc.local
里面加入一行
/usr/local/net-speeder-master/ns_daemon.sh & >/dev/null 2>&1
完成后,为rc.local增加执行属性。
chmod +x /etc/rc.d/rc.local
最后重启服务器,检查netspeeder是否能被自动启动。
安装shadowsocks-libev
终于到主角出场了。shadowsocks-libev在Fedora Copr上有repo文件。我们只需要下载到/etc/yum.repos.d/
然后用yum安装就行了。
cd /etc/yum.repos.d/ wget https://copr.fedorainfracloud.org/coprs/librehat/shadowsocks/repo/epel-7/librehat-shadowsocks-epel-7.repo yum clean all yum makecache yum install shadowsocks-libev -y
编辑/etc/shadowsocks-libev/config.json
,server_port为服务器端口,password为密码,method是加密方法,timeout是每个连接的超时时间。其中加密方法建议aes-256-gcm或者CHACHA20_POLY1305。
{ "server_port":3389, "password":"<A-PASSWORD>", "method":"aes-256-gcm", "timeout":120 }
然后激活shadowsocks-libev服务。
systemctl enable shadowsocks-libev
最后重启服务器,看服务能不能被自动启动,如果能看到进程就证明成功了。至于客户端怎么使用,这里就不说了。
ps -ef|grep ss-server nobody 1062 1 0 10:11 ? 00:00:00 /usr/bin/ss-server -a nobody -c /etc/shadowsocks-libev/config.json -u
大功告成!!!作为程序猿,能看看外面的技术文章是很重要的。
文章评论