地图炮

  • 首页
  • 文章分类
    • 生活随笔
    • ACGMN
    • 科技数码
    • 操作记录
    • 资源分享
    • 天下杂侃
  • 文章归档
  • RSS
  • 读者留言
Kira|(<ゝω・)☆
一个逗逼的自言自语
  1. 首页
  2. 操作记录
  3. 正文

Debian8零基础配置ShadowsocksR服务端教程

2017-03-21 38072点热度 9人点赞 0条评论
由于作者已移除ShadowsocksR主页,链接替换为shadowsocksr-backup,请自行甄别安全性

此前写过一个「CentOS6零基础配置shadowsocks服务端完整教程」,但随着软件更新与完善以及某些干扰的加剧,原教程已不再适用,为避免原来那篇一些过时的操作影响需要教程辅助安装的朋友,在此做一些更新。此外,由于博主已从CentOS切换到Debian,以及CentOS操作对新手不甚友好,本教程以bandwagonhost最小安装的Debian8为例,同时补充CentOS对应步骤操作,因CentOS一些软件包的版本较旧可能会撞坑,欢迎在评论中提出以完善教程。

出于安全性考虑,本教程只基于官方教程补充一些细节帮助理解,不会涉及任何一键包。
另外不建议使用一键脚本安装,除非你自己能维护其功能,否则安装时若出了问题很难查,而且现在有不少不明来历的一键脚本内嵌后门程序。
此教程为单用户版,配置最为简单,适合个人用户。本教程包含部分教程忽略的性能优化、自启动、更新服务端内容,欢迎有需要的用户浏览。

关于ShadowsocksR

ShadowsocksR是@breakwa11基于原版协议fork,增加了流量混淆功能降低流量特征以获得更好的稳定性(注意不是加速),该服务端兼容原版协议,混淆模式在各个平台上已有较全面支持,推荐开启混淆选项。

项目主页:https://github.com/shadowsocksr-backup/

各平台客户端:
Android:SSR-android;iOS :Shadowrocket;
Windows:shadowsocksr-csharp;macOS:ShadowsocksX-NG、ShadowsocksX-R

关于VPS选择

此处只会涉及一些适合个人使用的服务商(美国服务器推荐选西海岸城市机房),线路质量可能较差,如果对线路质量与安全性有较高要求,可考虑使用Azure国际版,当然使用成本也比较高了。此外,目前中国电信限制了家庭宽带用户的国际出口,如果对速度有较高要求,推荐办理联通宽带(实在不行移动也行)。

Linode:https://www.linode.com/
即博主博客使用的服务商,随着竞争激烈曾经高高在上的Linode价格也被拉下,老东京机房KDDI线路表现不错但经常没货,新加坡机房电信表现一般,支持Paypal。
bandwagonhost:https://bandwagonhost.com/
俗称搬瓦工官网已被认证,国内访问可使用镜像域名 https://bwh1.net/,线路质量一般但胜在便宜,支持Paypal与支付宝付款。
BudgetVM:https://www.budgetvm.com/
常年有便宜的OpenVZ VPS销售,时不时还有实惠的优惠券,支持Paypal与支付宝付款。
DigitalOcean:https://www.digitalocean.com/
曾经号称Linode的挑战者,新加坡机房电信速度较慢,支持Paypal。
OneAsiaHost:https://www.oneasiahost.com/
新加坡服务商,仅限OVZ SSD VPS值得购买,PCCW连国内表现不错,支持Paypal。

接下来开始正式开始教程了_(:з」∠)_
以下步骤均以root用户执行,非root用户可su root或在命令前加“sudo ”执行。

一、准备工作

1、从服务商获取服务器IP、SSH端口(默认为22,部分服务商如板瓦工为随机端口)、root密码(部分服务商如Azure不提供root用户登陆)。

2、下载SSH客户端如putty连接所购买VPS,具体操作可自行搜索。

3、执行以下命令(一行一行执行,复制命令后在putty窗口中鼠标右键即可粘贴)先更新一下以免出错,再安装git。

Debian/Ubuntu:

apt-get update
apt-get install git

CentOS/RHEL:

yum update all
yum install git

二、获取源代码

通过git获取ShadowsocksR源代码:

git clone -b manyuser https://github.com/shadowsocksr-backup/shadowsocksr.git

执行完毕后当前目录会出现一个shadowsocksr目录,其中根目录的是多用户版(即数据库版,个人用户请忽略这个),子目录中的是单用户版(即shadowsocksr/shadowsocks,即本次教程所讲的地方)。若当前在/root目录内,则根目录为 /root/shadowsocksr 子目录为 /root/shadowsocksr/shadowsocks。
如果不确定当前在什么目录的话可以通过“pwd”命令查看当前路径,比方说以下情况:

root@SS-LA5:~# pwd
/home/q1ngyang

大致界面如上,可得知当前在/home/q1ngyang目录,则根目录为 /home/q1ngyang/shadowsocksr 子目录为 /home/q1ngyang/shadowsocksr/shadowsocks

三、服务端配置

1、进入根目录初始化配置(假设根目录在/root/shadowsocksr,如果不是,命令需要适当调整):

cd /root/shadowsocksr  //进入根目录
bash initcfg.sh  //初始化配置

 

2、[可选]开启FastOpen性能优化

开启FastOpen可以获取更好性能,此步骤使用OpenVZ虚拟技术的VPS请忽略,上面列举服务商中Linode和DigitalOcean用户使用最新版本系统可考虑开启。

使用“uname -a”命令查看内核版本,需要Linux内核版本3.7.1以上,低于该版本无法开启。

root@SS-LA5:~# uname -a  //查看内核版本
Linux SS-LA5 4.9.0-x86_64-linode79 #1 SMP Mon Dec 12 13:17:30 EST 2016 x86_64 GNU/Linux

创建/etc/sysctl.d/local.conf文件并编辑

touch /etc/sysctl.d/local.conf  //创建文件
vi /etc/sysctl.d/local.conf  编辑文件

将以下内容粘贴到刚刚创建的文件中,vi按“i”进入编辑模式,编辑完成后按“Esc”退出编辑模式,按“Shift”和“:”键进入命令模式,输入“wq”即可保存退出(“q!”为不保存退出)。

# max open files
fs.file-max = 51200
# max read buffer
net.core.rmem_max = 67108864
# max write buffer
net.core.wmem_max = 67108864
# default read buffer
net.core.rmem_default = 65536
# default write buffer
net.core.wmem_default = 65536
# max processor input queue
net.core.netdev_max_backlog = 4096
# max backlog
net.core.somaxconn = 4096

# resist SYN flood attacks
net.ipv4.tcp_syncookies = 1
# reuse timewait sockets when safe
net.ipv4.tcp_tw_reuse = 1
# turn off fast timewait sockets recycling
net.ipv4.tcp_tw_recycle = 0
# short FIN timeout
net.ipv4.tcp_fin_timeout = 30
# short keepalive time
net.ipv4.tcp_keepalive_time = 1200
# outbound port range
net.ipv4.ip_local_port_range = 10000 65000
# max SYN backlog
net.ipv4.tcp_max_syn_backlog = 4096
# max timewait sockets held by system simultaneously
net.ipv4.tcp_max_tw_buckets = 5000
# turn on TCP Fast Open on both client and server side
net.ipv4.tcp_fastopen = 3
# TCP receive buffer
net.ipv4.tcp_rmem = 4096 87380 67108864
# TCP write buffer
net.ipv4.tcp_wmem = 4096 65536 67108864
# turn on path MTU discovery
net.ipv4.tcp_mtu_probing = 1

# for high-latency network
# net.ipv4.tcp_congestion_control = hybla

# for low-latency network, use cubic instead
# net.ipv4.tcp_congestion_control = cubic

执行以下命令,使配置生效

sysctl --system

3、编辑配置文件

执行以下“ls”命令查看目录内文件,可以看到配置文件“user-config.json”

root@SS-LA5:~/shadowsocksr# ls
CHANGES          config.json      mujson_mgr.py   tail.sh
CONTRIBUTING.md  configloader.py  mysql.json      tests
Dockerfile       db_transfer.py   run.sh          user-config.json
LICENSE          debian           server.py       userapiconfig.py
MANIFEST.in      importloader.py  server_pool.py  usermysql.json
README.md        initcfg.bat      setup.py        utils
README.rst       initcfg.sh       shadowsocks
apiconfig.py     logrun.sh        stop.sh
asyncmgr.py      mudb.json        switchrule.py

使用vi编辑配置文件

vi user-config.json

参考//后注释编辑配置文件,vi按“i”进入编辑模式,编辑完成后按“Esc”退出编辑模式,按“Shift”和“:”键进入命令模式,输入“wq”即可保存退出(“q!”为不保存退出)。

{
    "server": "0.0.0.0",
    "server_ipv6": "::",
    "out_bind":"0.0.0.0",//输入服务器IPV4地址,只有一个可留空此行
    "out_bindv6":"::",//输入服务器IPV6地址,只有一个或没有IPV6地址可留空此行
    "server_port": 1984,//服务器端口,根据需要在1-65535之间选择即可
    "local_address": "127.0.0.1",
    "local_port": 1080,

    "password": "q1ngyang",//输入想要的加密密码
    "method": "rc4-md5",//推荐使用rc4-md5,速度较快
    "protocol": "auth_sha1_v4_compatible",//推荐,末尾“_compatible”为开启原版协议兼容
    "protocol_param": "",
    "obfs": "tls1.2_ticket_auth_compatible",//推荐,末尾“_compatible”为开启原版协议兼容
    "obfs_param": "",
    "speed_limit_per_con": 0,
    "speed_limit_per_user": 0,

    "additional_ports" : {}, // only works under multi-user mode
    "timeout": 120,
    "udp_timeout": 60,
    "dns_ipv6": false,//优先使用IPV6,若需要则改为true
    "connect_verbose_info": 0,
    "redirect": ["amazon.com", "incapsula.com:443"],//连接参数不正确时重定向,避免服务器被认证
    "fast_open": false//若通过之前步骤开启了fastopen,则改为true
}

以上为最基本的配置方式,如有更多需求,可以参照以下页面修改:
ShadowsocksR 协议插件文档:https://github.com/breakwa11/shadowsocks-rss/blob/master/ssr.md
配置文件各项说明:https://github.com/breakwa11/shadowsocks-rss/wiki/config.json

四、运行服务端

1、前往子目录/root/shadowsocksr/shadowsocks

cd /root/shadowsocksr/shadowsocks

2、操作ShadowsocksR命令

python server.py  //在前台运行(一般不这么用)
python server.py -d start  //后台启动
python server.py -d stop  //停止运行
python server.py -d restart //重新启动

五、更新服务端

ShadowsocksR会定期更新一些新特性或修复BUG,如果当前使用遇到问题或者想体验新功能,可以定期手动更新服务端。

cd /root/shadowsocksr //进入主目录
git pull  //更新文件,成功后重启服务端
python /root/shadowsocksr/shadowsocks/server.py -d restart  //重启服务端

至此,ShadowsocksR服务端部署常规部分完毕,通过以上教程可正常使用。如果觉得上述命令太麻烦或者每回都要开机启动不方便的话可进行以下步骤。

六、添加开机自启动

以下启动脚本均假定Python port of ShadowsocksR安装于/root/shadowsocksr目录,配置文件为/root/shadowsocksr/user-config.json,请按照实际情况自行修改。

先关闭ShadowsocksR,然后创建/etc/init.d/shadowsocks文件并编辑

python /root/shadowsocksr/shadowsocks/server.py -d stop  //关闭ShadowsocksR
touch /etc/init.d/shadowsocks  //创建文件
vi /etc/init.d/shadowsocks  //编辑文件

使用以下SysVinit启动脚本,适合CentOS/RHEL6系以及Ubuntu 14.x,Debian7.x以上版本。

#!/bin/sh
# chkconfig: 2345 90 10
# description: Start or stop the Shadowsocks R server
#
### BEGIN INIT INFO
# Provides: Shadowsocks-R
# Required-Start: $network $syslog
# Required-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Start or stop the Shadowsocks R server
### END INIT INFO

# Author: Yvonne Lu(Min) <min@utbhost.com>

name=shadowsocks
PY=/usr/bin/python
SS=/root/shadowsocksr/shadowsocks/server.py
SSPY=server.py
conf=/root/shadowsocksr/user-config.json

start(){
    $PY $SS -c $conf -d start
    RETVAL=$?
    if [ "$RETVAL" = "0" ]; then
        echo "$name start success"
    else
        echo "$name start failed"
    fi
}

stop(){
    pid=`ps -ef | grep -v grep | grep -v ps | grep -i "${SSPY}" | awk '{print $2}'`
    if [ ! -z $pid ]; then
        $PY $SS -c $conf -d stop
        RETVAL=$?
        if [ "$RETVAL" = "0" ]; then
            echo "$name stop success"
        else
            echo "$name stop failed"
        fi
    else
        echo "$name is not running"
        RETVAL=1
    fi
}

status(){
    pid=`ps -ef | grep -v grep | grep -v ps | grep -i "${SSPY}" | awk '{print $2}'`
    if [ -z $pid ]; then
        echo "$name is not running"
        RETVAL=1
    else
        echo "$name is running with PID $pid"
        RETVAL=0
    fi
}

case "$1" in
'start')
    start
    ;;
'stop')
    stop
    ;;
'status')
    status
    ;;
'restart')
    stop
    start
    RETVAL=$?
    ;;
*)
    echo "Usage: $0 { start | stop | restart | status }"
    RETVAL=1
    ;;
esac
exit $RETVAL

保存后执行以下命令:

Debian/Ubuntu:

chmod 755 /etc/init.d/shadowsocks ; update-rc.d shadowsocks defaults ; service shadowsocks start

CentOS/RHEL:

chmod 755 /etc/init.d/shadowsocks && chkconfig --add shadowsocks && service shadowsocks start

执行成功后可以开机自起,不用每次都手动启动服务端。

此外,还可以通过以下命令,在任意目录中操作ShadowsocksR

service shadowsocks start  //启动
service shadowsocks stop  //停止
service shadowsocks restart  //重启
service shadowsocks status  //查看状态

 

本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可
标签: Debian Shadowsocks VPS
最后更新:2018-01-31

轻飏

博客上发表的原创内容除特别注明,可在注明来源前提下转载,无需通知本人。

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。

轻飏

博客上发表的原创内容除特别注明,可在注明来源前提下转载,无需通知本人。

SEARCH
最新 热点 随机
最新 热点 随机
使用宝塔面板(BT-Panel)创建Rustdesk API+中转服务器并添加HTTPS WESCOM 32寸 4K显示器(C32VU)使用感受与校色文件分享 解决群晖百度网盘官方NAS客户端无法登录问题 解决RZ616通过Windows自带热点共享(Hotspot)无法共享WIFI6问题 Windows11正式版启用Copilot功能操作说明 解决Oneinstack安装无法命令行登录MySQL/MariaDB问题
使用宝塔面板(BT-Panel)创建Rustdesk API+中转服务器并添加HTTPS
Debian8零基础配置ShadowsocksR服务端教程 [已失效]支持HTTPS的奶瓶推、embr、kwestion、twip4、jtapi 免费使用自己域名DDNS绑定Synology(群晖)NAS的方法 1999的Core-M,酷比魔方i7手写版拆解 还是选择原谅它?华为终端造假黑历史 脱离BurstNet苦海,Blog搬家budgetvm
最近评论
grq 发布于 2 个月前(04月02日) 这款似乎官方标称300cd
迷途小书童 发布于 7 个月前(10月16日) 最近也遇到了这个困扰,微软把Intel无线网卡热点带宽限制到了20MHz,极大影响了VR串流体验(其...
newbie 发布于 9 个月前(09月09日) tabletpro3.0出来了 还多出来几个功能强大的插件 有更新汉化的想法吗 学习了几天也没搞明白...
newbie 发布于 9 个月前(09月09日) 大佬 tabletpro3.0出来了 有更新汉化的想法吗 学习了几天也没搞明白 有心无力
嘿嘿 发布于 10 个月前(08月07日) 不管用啊
标签聚合
Microsoft 浏览器拓展 平板电脑 Android Chrome Windows VPS twitter

COPYRIGHT © 2024 地图炮. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang