在CentOS 7上安装shadowsocks-libev

在CentOS 7上安装shadowsocks-libev

在CentOS 7上安装shadowsocks-libev

曾经在这里介绍过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

大功告成!!!作为程序猿,能看看外面的技术文章是很重要的。

SMG
SMG

小小的博主