VPN

VPS shadowsocks搭建配置

多用户登录和流量限制,双边加速kcptun

Posted by zhida on May 22, 2016

VPS

点击网站特价机型跳转到购买列表

机型繁多,我最后选的是:SPECIAL 20G VZ PROMO V3 - LOS ANGELES - CHINA DIRECT ROUTE ,着重关注几个点:

  • 平台架构 KiwiVM
  • 线路:Direct route via China Telecom and China Unicom
  • Transfer: 2000 GB/mo
  • Link speed: 1 Gigabit
  • OS: 32 or 64 bit Centos, Debian, Ubuntu, Fedora

支持支付宝,付款的时候选择优惠码:BWH1ZBPVK

后续的很多关键信息会通过邮件进行通知,包括主机的登录密码,所以要经常查看自己的邮箱

搬瓦工自带的shadow socks 安装

主要步骤如下:

https://bwh1.net/ ,进入我的账户,点击进入控制面板

image

按照如下步骤进行操作完成单用户版配置。安装的新系统是 Centos 6 x86

image

参考网站搬瓦工bandwagon 内置一键安装Shadowsocks图文教程

shadow sock 多用户安装

如果还想限制流量的,请跳过这节,跳到下一部分。

apt-get -y install wget
wget --no-check-certificate http://blog.whsir.com/uploads/ss.sh
chmod +x ss.sh
./ss.sh 2>&1 | tee shadowsocks.log

跟着提示操作,安装完成之后会提示

Congratulations, ss install completed!
Your Server IP:your_server_ip
Your Server Port:443
Your Password:your_password
Your Local IP:127.0.0.1
Your Local Port:1080
Your Encryption Method:aes-256-cfb

Welcome to visit:blog.whsir.com
Enjoy it!

我在安装的过程中会因为网络或者VPS配置过低导致iterm卡死的问题,要是安装过程太久就关闭iterm 重新进入,一般已经安装好了

卸载方法:

./ss.sh uninstall

多端口多密码配置:

#vim /etc/shadowsocks.json

按i粘贴以下配置(原有内容需要删除)

{
    "server":"45.78.20.**",
    "local_address":"127.0.0.1",
    "local_port":1080,
    "port_password":{
        "1012":"zhishan",
        "666":"zhishan2",
        "888":"zhida",
        "8880":"baolin"
        },
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}

7788、7789、7790为你要设置的端口号,后面是每个端口号对应的密码,设置端口号的时候不要有冲突端口就好。 timeout:超时时长,这里默认300。

最后要记得重启下shadowsocks,需要用到的命令:

启动:service shadowsocks start
停止:service shadowsocks stop
重启:service shadowsocks restart
状态:service shadowsocks status

设置开机启动

# vim /etc/supervisord.conf

[program:shadowsocks]
command=ssserver -s ::0 -d restart -c /etc/shadowsocks.json
autostart=true
autorestart=true
user=root
log_stderr=true
logfile=/var/log/shadowsocks.log


# vim /etc/rc.local

service supervisord start

# reboot

shadow sock 多用户限制流量

简介

使用流量管理脚本ss-bash , 系统版本请使用Debian

ss-bash原理是使用iptables规则获取各端口的流量,一个端口代表一个用户。脚本循环运行,在固定时间间隔根据iptables结果统计流量使用情况,并在流量超过限制时,添加对应端口的iptables reject规则以禁用端口。

系统要求为Linux Debian/Ubuntu,shadowsocks python版,iptables需要正常工作中。目前只支持统计ipv4流量。

github网址:https://github.com/hellofwy/ss-bash

安装配置

# apt-get update
# apt-get install python-pip -y
# pip install shadowsocks
# apt-get install unzip
# apt-get install bc
# wget https://github.com/hellofwy/ss-bash/archive/master.zip
# unzip master.zip
# cd ss-bash-master/
# ./ssadmin.sh h
# ./ssadmin.sh add 8388 123456 100G
# ./ssadmin.sh start

# ./ssadmin.sh h

启动ss:
    ssadmin.sh start
停止ss:
    ssadmin.sh stop
查看ss状态:
    ssadmin.sh status
重启ss:
    ssadmin.sh restart
软重启ss:
    ssadmin.sh soft_restart
    在不影响现有连接的情况下重启ss服务。用于ss服务参数修改,
    和手动直接修改配置文件后,重启ss服务。
添加用户:
    ssadmin.sh add port passwd limit
        port:端口号, 0<port<=65535
        passwd:密码, 不能有空格,引号等字符
        limit:流量限制,可以用K/M/G/T、KB/MB/GB/TB等(不区
               分大小写)。支持小数。比如10.5G、10.5GB等。
               1KB=1024 bytes,以此类推。
    示例: ssadmin.sh add 3333 abcde 10.5G
显示用户流量信息:
    ssadmin.sh show port
显示所有用户流量信息:
    ssadmin.sh show
显示用户密码信息:
    ssadmin.sh showpw port
显示所有用户密码信息:
    ssadmin.sh showpw
删除用户:
    ssadmin.sh del port
修改用户:
    ssadmin.sh change port passwd limit
修改用户密码:
    ssadmin.sh cpw port passwd
修改用户流量限制:
    ssadmin.sh clim port limit
修改所有用户流量限制:
    ssadmin.sh change_all_limit limit
用户流量使用量置零:
    ssadmin.sh rused limit
所有用户流量使用量置零:
    ssadmin.sh reset_all_used
用户流量限制置零:
    ssadmin.sh rlim port
全部用户流量限制置零:
    ssadmin.sh reset_all_limit
显示已添加的iptables规则:
    ssadmin.sh lrules

配置开机启动

## 在 exit 0 前面加入(路径请自行替换)
# /etc/rc.local 
/root/ss-bash-master/ssadmin.sh start

每个月更新流量脚本

编写一个定时任务的脚本,执行流量清零

# contab -e
1 * * * * ? *  sh ssadmin.sh reset_all_used >>  /root/ss-bash-master/.sslog

其他知识点

  • 无法连接上。确认本地shadowsocks客户端帐号无误,访问网站无法打开,客户端日志记录有大量的time out。解决方法:说明是服务器端口被封,尝试换一个端口。
  • 修改加密方式。编辑配置文件 ssmlt.template 即可,例如加密方式改为chacha20
  • 修改ssserver文件位置,打开文件sslib.sh,修改SSSERVER的值
  • 修改流量统计间隔.打开文件sslib.sh,修改INTERVEL的值,单位为秒

常见问题

pip install shadowsocks 执行失败
curl -O https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
pip --version # 6.0.8

退出session 重新执行

流量统计失败

流量统计失败 按步骤排查问题

使用kcptun流量加速配置

image

工作原理: 使用UDP(KCP?)代替TCP做流量处理 ; 了解了原理才知道怎么配置

客户端设置

kpctun配置

下载地址:找到kcptun-darwin-386-20170904.tar.gz下载,下面直接用命令行执行

# /mkdir kpctun
# wget https://github.com/xtaci/kcptun/releases/download/v20170930/kcptun-darwin-amd64-20170930.tar.gz
# tar zxf kcptun-darwin-amd64-20170930.tar.gz && rm kcptun-darwin-amd64-20170930.tar.gz
# vim config.json

{
  "localaddr": ":888",
  "remoteaddr": "45.78.20.**:29900",
  "key": "123mutouren789",
  "crypt": "aes-128",
  "mode": "fast2",
  "mtu": 1350,
  "sndwnd": 512,
  "rcvwnd": 512,
  "datashard": 10,
  "parityshard": 3,
  "dscp": 0,
  "nocomp": true
}

# sudo ./client_darwin_amd64 -c config.json
shadowSocks配置

ip: 127.0.0.1 port: 888 crypt: 就是连接 shadowSocks 服务器的加密方式 密码: 连接 shadowSocks配置 的密码

开机启动
vi /etc/rc.local

nohup /Users/zhidaliao/git/kcptun/client_darwin_amd64 -c /Users/zhidaliao/git/kcptun/config.json >/dev/null 2>&1 &

服务端配置

1、检查自己网络情况,确定自己的加速IP。

netstat -nl | grep xxxx

其中xxxx代表的是你SS的端口。此时会遇到多种情况,简单地说如果看到0.0.0.0或者127.0.0.1以及没有IP只有端口的情况,加速IP就是127.0.0.1,如果有其他IP那么就是其他IP。

2、使用一键安装脚本。

wget --no-check-certificate https://raw.githubusercontent.com/kuoruan/kcptun_installer/master/kcptun.sh
chmod +x ./kcptun.sh
./kcptun.sh

上面3条命令执行之后,就进入配置过程了。

3、一路默认到禁用数据压缩这一步,这里选择了y,禁用。这样花费流量换取速度

4、 配置完成后,此时应该安装成功了,会打印出相关信息,请复制保存下来。此时Kcptun服务器端就安装配置完毕了。

服务器IP:  45.78.20.**
端口:  29900
加速地址:  127.0.0.1:888
key:  123mutouren789
crypt:  aes-128
mode:  fast2
mtu:  1350
sndwnd:  512
rcvwnd:  512
datashard:  10
parityshard:  3
dscp:  0
nocomp:  true

安装地址:/usr/local/kcptun,已经写入自动开机的配置,这个时候就安装配置好了

cd /usr/local/kcptun
cat config.json
{
  "listen": ":29900",
  "target": "127.0.0.1:888",
  "key": "123mutouren789",
  "crypt": "aes-128",
  "mode": "fast2",
  "mtu": 1350,
  "sndwnd": 512,
  "rcvwnd": 512,
  "datashard": 10,
  "parityshard": 3,
  "dscp": 0,
  "nocomp": true,
  "pprof": false
}
多端口配置

去到安装地址,新建配置文件,已新进程启动

[root@localhost kcptun] cd /usr/local/kcptun
[root@localhost kcptun] ls
bin   server-config.json  server_linux_386
[root@localhost kcptun]  vim server-config-new.json 

{
  "listen": ":29901",
  "target": "127.0.0.1:888",
  "key": "123mutouren789",
  "crypt": "aes-128",
  "mode": "fast2",
  "mtu": 1350,
  "sndwnd": 512,
  "rcvwnd": 512,
  "datashard": 10,
  "parityshard": 3,
  "dscp": 0,
  "nocomp": true,
  "pprof": false
}

[root@localhost kcptun] ./server_linux_386 -c server-config-new.json

这样就能配置一个新的端口号,在 shadowsocks中配置新的信息即可

使用 FinalSpeed 给 shadowsocks 加速

网上说 FinalSpeed 加速比 kcptun 的加速性能强很多,等下次尝试的时候在补上

安装net-speeder

网上的其他方式,亲测无效

安装上之后能提升代理速度,但是流量应该是成倍的跑,请自行测试。 详细说明:https://github.com/snooda/net-speeder

1.下载安装脚本

wget –no-check-certificate https://gist.github.com/LazyZhu/dc3f2f84c336a08fd6a5/raw/d8aa4bcf955409e28a262ccf52921a65fe49da99/net_speeder_lazyinstall.sh sh net_speeder_lazyinstall.sh

如果以上指令无效

wget –no-check-certificate http://www.v5fm.com/mirror/net_speeder_lazyinstall.sh sh net_speeder_lazyinstall.sh

2.运行

nohup /usr/local/net_speeder/net_speeder venet0 “ip” >/dev/null 2>&1 &

3.加入自启动

echo “nohup /usr/local/net_speeder/net_speeder venet0 “ip” >/dev/null 2>&1 &” » /etc/rc.local

参考网站