分类 vpn 下的文章

nginx的stream配置代理(shadowsocks-libev服务端对每个tcp链接进行限速)

nginx stream 提供了四层代理。可以通过proxy_download_rate和proxy_upload_rate设置下载和上传限速。平时在七层http核心模块ngx_http_limit_conn_module这个模块提供limit_conn限速。
proxy_upload_rate 和proxy_download_rate分别配置从客户端读数据和从上游服务器读数据的速率,单位为每秒字节数,默认为0,不限速。
我的需求场景是:shadowsocks-libev服务端对每个tcp链接进行限速,不限制速度,网卡很容易被客户端的下载拖垮,限制后客户端表现平稳,服务端运行也平稳。
下面是nginx的配置:

stream{
        upstream ss1 {
                server 127.0.0.1:8389;
        }
        server {
                listen 1025;
                proxy_upload_rate 102400;
                proxy_download_rate 102400;
                proxy_pass ss1;
        }
}

其中1025是暴露给客户端的端口,8389是shadowsocks-libev的端口。

参考:
https://github.com/vislee/leevis.com/issues/62
https://gist.github.com/fqrouter/95c037f9a3ba196fd4dd

shadowsocks-libev常见问题

一、shadowsocks-libev输出的日志在哪里
实际上目前我还没有找到相关的错误日志的记录地方,但是在/var/log/syslog能看到一些日志,或者把-f参数去掉,用nohup启动,重定向日志

二、shadowsocks-libev配置多用户模式
shadowsocks-libev不支持多用户模式,python支持

三、shadowsocks-libev能开启多少端口
shadowsocks-libev通过ss-manager可以开启多端口,但是最多只能是1024个,在代码里面写死了

四、开启vpn后,有一些域名解析报错
报错类似为:

unable to resolve stats.appsflyer.com
unable to resolve gj.applog.uc.cn
unable to resolve dsp.batmobil.net
unable to resolve android.clients.google.com
unable to resolve android.clients.google.com
unable to resolve dsp.batmobil.net
unable to resolve www.facebook.com
unable to resolve portal.fb.com
unable to resolve tpc.googlesyndication.com
unable to resolve imasdk.googleapis.com
unable to resolve ad.api.kaffnet.com
unable to resolve android.clients.google.com
unable to resolve lh3.googleusercontent.com
unable to resolve lh3.googleusercontent.com
unable to resolve gj.applog.uc.cn
unable to resolve lh3.googleusercontent.com
unable to resolve lh3.googleusercontent.com
unable to resolve api5.batmobil.net
unable to resolve cdn.batmobi.net
unable to resolve tpc.googlesyndication.com
unable to resolve gj.applog.uc.cn
unable to resolve api5.batmobil.net
unable to resolve stats.appsflyer.com
unable to resolve gj.applog.uc.cn
unable to resolve cdn.batmobi.net
unable to resolve ad.api.kaffnet.com
unable to resolve www.facebook.com
unable to resolve imasdk.googleapis.com
unable to resolve cdn.avazutracking.net
unable to resolve cdn.avazutracking.net
unable to resolve gj.applog.uc.cn
unable to resolve gj.applog.uc.cn
unable to resolve cdn.batmobi.net
unable to resolve android.clients.google.com

这个我测试过,打开防火墙的53端口后,此类错误减少了很多

其它异常:
getpeername: Transport endpoint is not connected,偶尔会有这样的错误,但是VPN能正常连接

centos6安装shadowsocks-manager和shadowsocks-libev

一、安装nodejs
#要求在root下执行
curl -sL https://rpm.nodesource.com/setup_6.x | bash -
yum install -y nodejs
查看版本
node -v
v6.11.3

二、shadowsocks-manager使用npm安装
npm i -g shadowsocks-manager
use ssmgr to run this program.
如果安装报错为:
node: relocation error: node: symbol SSL_set_cert_cb, version libssl.so.10 not defined in file libssl.so.10 with link time reference
yum update openssl
npm rebuild
在执行上面的安装,问题解决

三、安装 shadowsocks-libev
在centos里面安装这个还是比较费力,我在centos6是可以正常安装成功
CentOS 6:
wget http://copr.fedoraproject.org/coprs/librehat/shadowsocks/repo/epel-6/librehat-shadowsocks-epel-6.repo
CentOS 7:
wget http://copr.fedoraproject.org/coprs/librehat/shadowsocks/repo/epel-7/librehat-shadowsocks-epel-7.repo

mv librehat-shadowsocks-epel-6.repo /etc/yum.repos.d/librehat-shadowsocks-epel-6.repo

yum -y install shadowsocks-libev
修改默认配置
vim /etc/shadowsocks-libev/config.json

{
"server":"127.0.0.1",
"server_port":4000,
"local_port":1080,
"password":"123456",
"timeout":60,
"method":"aes-256-cfb"
}

(一般不启动)启动方式为:/etc/init.d/shadowsocks-libev start
运行命令启动 shadowsocks-libev 的 manager API 服务
ss-manager -m aes-256-cfb -u --manager-address 127.0.0.1:4000
修改配置文件
在 ~/.ssmgr 下建立 ss.yml 作为 type s 的配置文件:
mkdir ~/.ssmgr
vim ~/.ssmgr/ss.yml
配置内容如下:

type: s
    empty: false

shadowsocks:
    address: 127.0.0.1:4000

manager:
    address: 0.0.0.0:4001
    password: '123456'

db: 'ss.sqlite'

ssmgr -c ss.yml(如果启动失败,可以写ss.yml全路径)
配置前端 webgui 服务

在 ~/.ssmgr 下建立 webgui.yml 作为 type m 的配置文件:

mkdir ~/.ssmgr
vim ~/.ssmgr/webgui.yml

type: m
empty: false

manager:
    address: 52.8.73.127:4001
    password: '123456'

plugins:
    flowSaver:
        use: true
    user:
        use: true
    account:
        use: true
        pay:
            hour:
                price: 0.03
                flow: 500000000
            day:
                price: 0.5
                flow: 7000000000
            week:
                price: 3
                flow: 50000000000
            month:
                price: 10
                flow: 200000000000
            season:
                price: 30
                flow: 200000000000
            year:
                price: 120
                flow: 200000000000
    email:
        use: true
        username: 'username'
        password: 'password'
        host: 'smtp.your-email.com'
    webgui:
        use: true
        host: '0.0.0.0'
        port: '7001'
        site: '52.8.1.1'
        gcmSenderId: '456102641793'
        gcmAPIKey: 'AAAAGzzdqrE:XXXXXXXXXXXXXX'
    alipay:
        use: true
        appid: 1
        notifyUrl: ''
        merchantPrivateKey: '1'
        alipayPublicKey: '1'
        gatewayUrl: 'https://openapi.alipay.com/gateway.do'

db: 'webgui.sqlite'

其中email 负责发送验证及密码找回邮件,非常重要,注册后,第一个账户就是管理员账户

上面全部做好后,就可以登陆控制台了,注册用户可以获得服务器IP、密码、端口号从而进行VPN了,别忘记在服务端要开端口号,不然访问不了

参考:
https://code.momok.xyz/server/deploy-ss-manager.html
https://github.com/shadowsocks/shadowsocks-manager