Skip to main content

Debian 7 搭建shadowsocks服务器并开启ss-bash脚本管理与BBR

自己搭建ss-bash脚本管理的shadowsocks服务器并开启BBR。在网上各种文章比较多,我在搭建的时候就走了不少弯路,所以搭建成功之后就想自己重新整理一遍方法,放到自己的Blog里,以后也方便一些。参考了很多网上的方法,因此文章的末尾会有References

此篇用的是 Debian 7 搭建的,已成功。其他系统不一定。
(2018-07-09更新:Debian 9 所有安装都没问题,但是ss-bash/ssadmin.sh start就会显示ssserver启动失败,查了很多方法都没有办法解决。换回Debian7才能正常使用。)

购买与初步部署VPS就不写了。
部署完VPS之后,下载PuTTy或者Xshell,连接上VPS
1.依次复制以下命令,一行执行一次,每一行单独复制粘贴到 PuTTy / Xshell ,每行按一次回车)
apt-get update
apt-get install python-pip
apt-get install wget
apt-get install bc
apt-get install gawk
apt-get install git
pip install shadowsocks
git clone https://github.com/hellofwy/ss-bash

Debian一般默认没有sudo,要安装sudo的话执行以下命令:
apt-get install sudo

注:下面的很多命令,GitHub上原作者给出的例子会在前面加上“sudo”,但是自己实际运行的时候可能会遇上sudo command not found,如果遇上了,就把前面的sudo去掉就好,或者是按照前面说的把sudo安装好。我这一篇的例子是没有sudo的。

2.首次运行时,先新建用户
例如新用户端口为8381,密码为abcdefg,流量限制为100GB
执行以下命令:
ss-bash/ssadmin.sh add 8381 abcdefg 100GB
要添加更多用户就自己继续按照格式来执行命令。

3.启动ssserver,执行:
ss-bash/ssadmin.sh start
每次重启VPS都需要再次执行ss-bash/ssadmin.sh start

自定义ssserver配置,有两种方法
1)下载WinSCP,然后连接VPS,然后进入root/ss-bash,找到ssmlt.template文件,打开。文件默认内容为:
"server": "0.0.0.0",
"timeout": 60,
"method": "aes-256-cfb",

可以进行修改,比如增加fast_open、修改加密方式(rc4-md5的速度更快,但更容易被GFW检测出来,相比之下aes-256-cfb更安全但要慢一些)等,举例:

"server": "0.0.0.0",
"timeout": 60,
"method": "rc4-md5",
"fast_open": true,

要注意!每一行后面都有个逗号!!
fast_open的具体作用我也不知道,可以去看看https://github.com/shadowsocks/shadowsocks/wiki/TCP-Fast-Open

我在用 PuTTy 连接 Debian 7 的时候,按i进入编辑模式后,方向键上下左右变成了字母ABCD,从而无法正常操作。解决方法:
先执行命令:vi /etc/vim/vimrc.tiny
然后找到 set compatible
然后用方向键移动到 compatible 前面
按i进入编辑模式,加上no
改成 set nocompatible
然后ESC,冒号,输入wq,回车。
再去试试就可以正常使用方向键了。

解决方法2:执行 apt-get install vim
    
2)直接在 PuTTy / Xshell 执行:
cd root                          //打开root文件夹
ls -a                            //列出目录下所有文件,这时就能看到有ssmlt.template文件了
vi ssmlt.template                //打开ssmlt.template文件
然后按键盘上的i进入编辑模式就可以开始编辑
编辑完成后,按ESC,然后按冒号:,然后输入wq,然后回车。
要退出root文件夹,直接输入cd然后回车就好。
第二种方法想要打开ssmlt.template的时候可能会遇到permission denied,这时可能就要用上前面安装的sudo了。
做了任何修改,都要执行:
ss-bash/ssadmin.sh soft_restart

查看其他ss-bash命令,执行:
ss-bash/ssadmin.sh help
或者点击连接https://github.com/hellofwy/ss-bash/blob/master/sshelp
注:GitHub这个链接里,其他ss-bash命令都是直接以ssadmin.sh开头的。我直接复制然后运行的时候,会提示command not found。在最前面加上ss-bash/就好了。例如:
    查看ss状态
       ssadmin.sh status                  //这是GitHub链接里的,我运行不了
       ss-bash/ssadmin.sh status              //加上ss-bash/之后就可以了




安装BBR

1.PuTTy / Xshell 执行(每行按一次回车):
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
chmod +x bbr.sh
./bbr.sh

2.安装完成后,会提示需要重启 VPS,输入 y 并回车后重启。

3.验证是否开启TCP BBR,执行:
lsmod | grep bbr
返回值有 tcp_bbr 模块即说明bbr已启动。

References
1.ss-bash项目的GitHub地址https://github.com/hellofwy/ss-bash/wiki
2.Google搜到的博主六個蛤的教程https://forusjustice.blogspot.jp/2016/10/shadowsocks.html

Comments

Popular posts from this blog

shadowsocks服务器开启net-speeder在高延迟不稳定链路上优化单线程下载速度

在网上各种文章比较多,我在搭建的时候就走了不少弯路,所以搭建成功之后就想自己重新整理一遍方法,放到自己的 Blog 里,以后也方便一些。参考了网上其他文章,教程末尾有References。 此篇教程用 Debian 7 操作,已成功。之前用过 CentOS 6 ,也成功了。其他系统不一定。 注1:开启了net-speeder的服务器上对外ping时看到的是4倍,实际网络上是2倍流量。另外两倍是内部dup出来的,不占用带宽。 另外,内部dup包并非是偷懒未判断。。。是为了更快触发快速重传的。 注2:net-speeder不依赖ttl的大小,ttl的大小跟流量无比例关系。不存在windows的ttl大,发包就多的情况。 安装步骤: 1:下载源码并解压 wget https://github.com/snooda/net-speeder/archive/master.zip unzip master.zip 若遇到 unzip command not found,可以执行以下命令来安装unzip: apt-get install zip unzip 2:准备编译环境 debian/ubuntu: #安装libnet-dev: apt-get install libnet1-dev #安装libpcap-dev: apt-get install libpcap0.8-dev centos: #下载epel:https://fedoraproject.org/wiki/EPEL/zh-cn 例:CentOS6 64位: wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm #(如果是centos5,则在epel/5/下) #安装epel: rpm -ivh epel-release-6-8.noarch.rpm #然后即可使用yum安装: yum install libnet libpcap libnet-devel libpcap-devel 编译: 可能要先进入到net-speeder的目录下:

Vivado崩溃与文件路径和计算机名称

先声明软件版本与操作系统 Vivado 2014.4 Windows 10 家庭版 做数字逻辑实验要用 Vivado ,按照老师给的教程安装了 Vivado 2014.4 。然后就开始按照实验指导去做实验了。 做到需要进行 RTL Analysis 的时候,点击 Schematic , Vivado 就直接崩溃了,没有弹出任何的错误提示。 于是我就去搜索,看有没有人遇到了类似情况,是否有解决办法。搜索到的全都是说文件路径里含有中文或特殊字符,但是我的路径全都是规范的,只包含英文、数字、下划线。我从头开始做了一遍,不行。卸载后重装 Vivado ,重做实验,还是不行。完全不知道该怎么解决。 后来做另一个实验的时候,要用到 Synthesis 功能,在 Run Synthesis 之后,就会 Fail ,在最底下的 Log 里的最后几行能看到 TclStackFree: incorrect freePtr. Call out of sequence? 我又去 Google 了一下,然后就浏览到了这个链接。 https://forums.xilinx.com/t5/Synthesis/TclStackFree-incorrect-freePtr-Call-out-of-sequence-in-2016-4/m-p/742698 看到里面有人说,把计算机的名字改了之后就能正常使用了。我就去看了一下我的计算机名,是 myName’sPC 然后我就尝试着去掉那个单引号改成 myNamesPC 重启计算机之后再去使用 Vivado ,发现已经能够正常使用了!!! 原来我遇到的问题的根源就出在这里!计算机名包含了这个单引号! 所以,以后在命名这些关键内容的时候,无论是设备名还是路径名,都尽量只包含英文、数字、下划线,其他的符号很容易带来问题。

C++中shared_ptr环形引用问题及weak_ptr的作用

     C++中双斜杠//只能注释一行,在这里我没有花时间排版,所以看起来//注释换了行。把代码复制到编辑器或IDE上看可能会好很多。     weak_ptr指向一个shared_ptr管理的对象,最重要的特点就是,weak_ptr不会改变shared_ptr的引用计数。weak_ptr更详细的介绍可以参考《C++ Primer》中文版第五版第420页。此篇文章将给出《C++ Primer》上没有给出的weak_ptr的用法。     在使用shared_ptr的时候,可能会出现环形引用的问题。一旦出现了环形引用(Circular Reference),就会导致两个shared_ptr的引用计数都没办法减到1,也就没办法销毁对象,程序结束的时候就没办法正常地释放内存。下面将演示一下这种情况。 #include<memory>    //shared_ptr定义在memory头文件中。 using namespace std; //我们先定义一个叫Node的类,包含两个数据成员。 struct Node{     shared_ptr<Node> previous;     shared_ptr<Node> next; }; int mian() {     //然后在main函数里定义两个指向Node类对象的shared_ptr并进行值初始化。     shared_ptr<Node> n1 = make_shared<Node>();  //此时n1计数器为1。     shared_ptr<Node> n2 = make_shared<Node>();  //此时n2计数器为1。     //不妨假设n1指向的对象名字为node_1,n2指向的叫node_2。     //接下来让node_1的next成员指向node_2,让node_2的previous成员指向node_1。     (*n1).next=n2;      //拷贝了n2,此时n2的计数器为2     (*n2).previous=n1;  //拷贝了n1,此时n1的计数器为2     //这时n1、n2就产生