debian 8 (systemd) 上 Shadowsocks-libev 的安裝與多埠配置
阿新 • • 發佈:2019-01-10
安裝步驟很簡單,直接上程式碼
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),會回覆比較及時。