1. 程式人生 > >debian 8 (systemd) 上 Shadowsocks-libev 的安裝與多埠配置

debian 8 (systemd) 上 Shadowsocks-libev 的安裝與多埠配置

安裝步驟很簡單,直接上程式碼

sudo sh -c 'printf "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list'
sudo apt update
sudo apt -t jessie-backports install shadowsocks-libev

以上安裝過程只適合debian 8,如果是debian 9及ubuntu 16.10或更新的系統,請使用:
sudo apt update
sudo apt install shadowsocks-libev

配置:

單一埠:

修改/etc/shadowsocks-libev/config.json;配置成你的設定: ip地址,埠,密碼都需要你自己調整下,下面的內容僅供參考格式

{
    "server":"111.111.111.111",
    "server_port":8399,
    "local_port":1080,
    "password":"yourpassword",
    "timeout":60,
    "method":"aes-256-cfb"
}

啟動:
sudo systemctl start shadowsocks-libev

以上的配置過程很簡單,如果你需要在這個伺服器上開通多埠的設定,則需要下面的步驟:

注意: 下面的操作不僅僅適用於debian8,適用於所有systemd的系統

原理: systemd不直接執行ss-server,而是執行一個shell指令碼,shell指令碼再啟動多個ss-server;systemd配置成forking方式

如果你想拿來主義,請按照下面的步驟操作:

1:將/etc/shadowsocks-libev/config.json複製多份,放到 /opt/shadowsocks-libev 目錄下,取名如下:

ss_0_cfg.json
ss_1_cfg.json
ss_2_cfg.json

我這裡複製了3份,支援同時開3個埠,當然這些檔案裡面的內容,尤其是埠部分,一定要是不同的,即你需要改成你想要設定的埠

如果你想支援10個埠,則需要準備10個埠的 .json檔案,還需要修改下面步驟3中的shell script,聰明的你一定知道怎麼修改的!

2:修改 /lib/systemd/system/shadowsocks-libev.service 的 [Service]節中的內容如下:

[Service]
Type=forking
EnvironmentFile=/etc/default/shadowsocks-libev
User=root
LimitNOFILE=32768
PIDFile=/var/run/shadowsocks-libev/ss_0.pid
ExecStart=/opt/shadowsocks-libev/ss_multi_port.sh $USER $CONFFILE $DAEMON_ARGS

其中需要注意的是 Type=forking; 而PIDFile是新加的
3:關鍵的東西來了: /opt/shadowsocks-libev/ss_multi_port.sh; 這個檔案的內容如下:
#!/bin/bash
# Program:
#     this program used for multi-port service for shadowsocks-libev
#     shaddowsockes-libev do not support multi port configuration, use multiple instances instead.
#     visit https://github.com/shadowsocks/shadowsocks-libev/issues/5  for more information
#
#     Usage: ss_multi_port.sh user_as default_cfg daemon_opt
#
#     In general, this script need start as a daemon from sysV init or systemd
#     for systemd: it is run from /etc/systemd/system/multi-user.target.wants/shadowsocks-libev.service
#
# History:
# 2017-01-01    [email protected]    first release



# check argument number
if [ $# != 3 ]
then
        echo "Usage: `basename $0` user_as default_cfg daemon_opt"
        exit 1
fi


pid_file_dir=/var/run/shadowsocks-libev
user_as=$1
default_cfg=$2
daemon_opt=$3


# create pid file folder
[ -d $pid_file_dir ] || mkdir $pid_file_dir

# pid file name
pid_0_file=$pid_file_dir/ss_0.pid
pid_1_file=$pid_file_dir/ss_1.pid
pid_2_file=$pid_file_dir/ss_2.pid
pid_3_file=$pid_file_dir/ss_3.pid

# config file name
default_cfg_dir=/opt/shadowsocks-libev

#cfg_0_file=$default_cfg
cfg_0_file=$default_cfg_dir/ss_0_cfg.json
cfg_1_file=$default_cfg_dir/ss_1_cfg.json
cfg_2_file=$default_cfg_dir/ss_2_cfg.json
cfg_3_file=$default_cfg_dir/ss_3_cfg.json



# start service
echo "start multi-port service:"
/usr/bin/ss-server -a $user_as -c $cfg_0_file -f $pid_0_file $daemon_opt
/usr/bin/ss-server -a $user_as -c $cfg_1_file -f $pid_1_file $daemon_opt
/usr/bin/ss-server -a $user_as -c $cfg_2_file -f $pid_2_file $daemon_opt
#/usr/bin/ss-server -a $user_as -c $cfg_3_file -f $pid_3_file $daemon_opt

echo "start multi-port sevice done!"

exit 0

啟動:
sudo systemctl start shadowsocks-libev
如果判斷啟動多埠成功了呢:
ps -ef                 # 檢視輸出是否有你配置的那麼多個 /usr/bin/ss-server 程序
netstat -tuap          # 檢視輸出的埠是否有你配置的多個埠在監聽
如果有需要交流的可以留言,最好是mail (不知道,再認真看看上面的shell script),會回覆比較及時。