[VPN转载]shadowsocks服务器端配置&BBR加速配置。centos7

首先发布原文链接http://blog.51cto.com/zero01/2064660

感谢提供。

下文为原文复制,仅作个人博客的留档,非原创内容且无修改。 


我按照他的方法成功的配置了shadowsocks服务,并且成功连通了网络且启用了代理服务,但在后续的配置BBR加速器配置成功后就连通无效了,暂时没有排查出错误。

我的操作环境为 centos7.3 1611.


安装 pip(部分环境已经预装此命令)

pip是 python 的包管理工具。在本文中将使用 python 版本的 shadowsocks,此版本的 shadowsocks 已发布到 pip 上,因此我们需要通过 pip 命令来安装。

在控制台执行以下命令安装 pip:

[root@server ~]# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"

[root@server ~]# python get-pip.py




安装配置 shadowsocks

在控制台执行以下命令安装 shadowsocks:

[root@server ~]# pip install --upgrade pip

[root@server ~]# pip install shadowsocks

安装完成后,需要创建shadowsocks的配置文件/etc/shadowsocks.json,编辑内容如下:

[root@server ~]# vim /etc/shadowsocks.json

{
  "server": "0.0.0.0",
  "local_address": "127.0.0.1",
  "local_port": 1080,
  "port_password": {
    "8080": "填写密码",
    "8081": "填写密码"
  },
  "timeout": 600,
  "method": "aes-256-cfb"
}


说明:

以上两项信息在配置 shadowsocks 客户端时需要配置一致,具体说明可查看 shadowsocks 的帮助文档。

如果你不需要配置多个端口的话,仅配置单个端口,则可以使用以下配置:

{
  "server": "0.0.0.0",
  "server_port": 8080,
  "password": "填写密码",
  "method": "aes-256-cfb"
}


说明:

同样的,以上四项信息在配置 shadowsocks 客户端时需要配置一致。




配置自启动

编辑shadowsocks 服务的启动脚本文件,内容如下:

[root@server ~]# vim /etc/systemd/system/shadowsocks.service

[Unit]
Description=Shadowsocks 

[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/ssserver -c /etc/shadowsocks.json 

[Install]
WantedBy=multi-user.target


执行以下命令启动 shadowsocks 服务:

[root@server ~]# systemctl enable shadowsocks

[root@server ~]# systemctl start shadowsocks





搭建过后发现重启过后shadowsocks服务无法自动启动解决方法如下:

进入配置文件,添加开启执行的命令。这个配置文件会在开机的时候自动运行里面添加的命令行。

vim /etc/rc.d/rc.local

末行写入:

systemctl restart shadowsocks


给予本文件的执行权限:

chmod +x /etc/rc.d/rc.local




检查 shadowsocks 服务是否已成功启动,可以执行以下命令查看服务的状态:

systemctl status shadowsocks -l

如果服务启动成功,则控制台显示的信息应该类似这样:

确认服务启动成功后,配置防火墙规则,开放你配置的端口,不然客户端是无法连接的:

[root@server ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent

success

[root@server ~]# firewall-cmd --zone=public --add-port=8081/tcp --permanent

success

[root@server ~]# firewall-cmd --reload

success

附上一键安装脚本代码:(未测试,慎用)

#!/bin/bash# Install Shadowsocks on CentOS 7 echo "Installing Shadowsocks..." random-string(){    cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-32} | head -n 1} CONFIG_FILE=/etc/shadowsocks.jsonSERVICE_FILE=/etc/systemd/system/shadowsocks.serviceSS_PASSWORD=$(random-string 32)SS_PORT=8388SS_METHOD=aes-256-cfbSS_IP=`ip route get 1 | awk '{print $NF;exit}'`GET_PIP_FILE=/tmp/get-pip.py # install pipcurl "https://bootstrap.pypa.io/get-pip.py" -o "${GET_PIP_FILE}"python ${GET_PIP_FILE} # install shadowsockspip install --upgrade pippip install shadowsocks # create shadowsocls configcat <<EOF | sudo tee ${CONFIG_FILE}{  "server": "0.0.0.0",  "server_port": ${SS_PORT},  "password": "${SS_PASSWORD}",  "method": "${SS_METHOD}"}EOF # create servicecat <<EOF | sudo tee ${SERVICE_FILE}[Unit]Description=Shadowsocks [Service]TimeoutStartSec=0ExecStart=/usr/bin/ssserver -c ${CONFIG_FILE} [Install]WantedBy=multi-user.targetEOF # start servicesystemctl enable shadowsockssystemctl start shadowsocks # view service statussleep 5systemctl status shadowsocks -l echo "================================"echo ""echo "Congratulations! Shadowsocks has been installed on your system."echo "You shadowsocks connection info:"echo "--------------------------------"echo "server:      ${SS_IP}"echo "server_port: ${SS_PORT}"echo "password:    ${SS_PASSWORD}"echo "method:      ${SS_METHOD}"echo "--------------------------------"



配置客户端

我这里配置的是windows的客户端,挺方便的,点击即用,不需要安装。

Windows客户端下载地址:

https://github.com/shadowsocks/shadowsocks-windows/releases

Mac客户端下载地址:

https://github.com/shadowsocks/ShadowsocksX-NG/releases

Android客户端下载地址:

https://github.com/shadowsocks/shadowsocks-android/releases

运行客户端程序,右键点击shadowsocks图标,然后点击编辑服务器:

配置对应的信息:


然后显示已启用代表配置成功:

接着测试能否上Google搜索即可,以下的配置BBR加速则是选看,不配置也是可以正常使用shadowsocks的。




配置BBR加速

什么是BBR:

TCP BBR是谷歌出品的TCP拥塞控制算法。BBR目的是要尽量跑满带宽,并且尽量不要有排队的情况。BBR可以起到单边加速TCP连接的效果。

Google提交到Linux主线并发表在ACM queue期刊上的TCP-BBR拥塞控制算法。继承了Google“先在生产环境上部署,再开源和发论文”的研究传统。TCP-BBR已经再YouTube服务器和Google跨数据中心的内部广域网(B4)上部署。由此可见出该算法的前途。

TCP-BBR的目标就是最大化利用网络上瓶颈链路的带宽。一条网络链路就像一条水管,要想最大化利用这条水管,最好的办法就是给这跟水管灌满水。

BBR解决了两个问题:

Google 在 2016年9月份开源了他们的优化网络拥堵算法BBR,最新版本的 Linux内核(4.9-rc8)中已经集成了该算法。

对于TCP单边加速,并非所有人都很熟悉,不过有另外一个大名鼎鼎的商业软件“锐速”,相信很多人都清楚。特别是对于使用国外服务器或者VPS的人来说,效果更佳。

BBR项目地址:

https://github.com/google/bbr

升级内核,第一步首先是升级内核到支持BBR的版本:
1.yum更新系统版本:

yum update

2.查看系统版本:

[root@server ~]# cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

[root@server ~]#

3.安装elrepo并升级内核:

[root@server ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

[root@server ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

[root@server ~]# yum --enablerepo=elrepo-kernel install kernel-ml -y

4.更新grub文件并重启系统:

[root@server ~]# egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

CentOS Linux 7 Rescue 8619ff5e1306499eac41c02d3b23868e (4.14.14-1.el7.elrepo.x86_64)

CentOS Linux (4.14.14-1.el7.elrepo.x86_64) 7 (Core)

CentOS Linux (3.10.0-693.11.6.el7.x86_64) 7 (Core)

CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)

CentOS Linux (0-rescue-c73a5ccf3b8145c3a675b64c4c3ab1d4) 7 (Core)

[root@server ~]# grub2-set-default 0

[root@server ~]# reboot

5.重启完成后查看内核是否已更换为4.14版本:

[root@server ~]# uname -r

4.14.14-1.el7.elrepo.x86_64

[root@server ~]#

6.开启bbr:

[root@server ~]# vim /etc/sysctl.conf    # 在文件末尾添加如下内容

net.core.default_qdisc = fq

net.ipv4.tcp_congestion_control = bbr

7.加载系统参数:

[root@vultr ~]# sysctl -p

net.ipv6.conf.all.accept_ra = 2

net.ipv6.conf.eth0.accept_ra = 2

net.core.default_qdisc = fq

net.ipv4.tcp_congestion_control = bbr

[root@vultr ~]#

如上,输出了我们添加的那两行配置代表正常。

8.确定bbr已经成功开启:

[root@vultr ~]# sysctl net.ipv4.tcp_available_congestion_control

net.ipv4.tcp_available_congestion_control = bbr cubic reno

[root@vultr ~]# lsmod | grep bbr

tcp_bbr                20480  2

[root@vultr ~]#

输出内容如上,则表示bbr已经成功开启。


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。