本文最后更新于 2019年4月19日17:37:24 如已有问题需要修正,请留言!

Google BBR是一个TCP加速优化工具,类似于锐速,可用于优化TCP连接,最近Google开源了其TCP BBR拥塞控制算法,并提交到了Linux内核,根据实地测试,在部署了最新版内核并开启了TCP BBR的机器上,网速甚至可以提升好几个数量级,所以最近一下就火起来了。

一、KVM一键开启 BBR 脚本

使用环境

虚拟化:KVM、Xen等,除了OpenVZ基本都行
系统:CentOS 6+,Debian 7+,Ubuntu 12+
内存:128MB以上

方法

使用root登陆VPS,输入下面命令:

yum -y install wget
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
chmod +x bbr.sh
./bbr.sh

完成后,提示重启,输入y并重启VPS。
重启后,验证是否成功安装,输入:

uname -r

查看内核版本,含有 4.10 就表示 OK 了

sysctl net.ipv4.tcp_available_congestion_control

返回值一般为:
net.ipv4.tcp_available_congestion_control = bbr cubic reno

sysctl net.ipv4.tcp_congestion_control

返回值一般为:
net.ipv4.tcp_congestion_control = bbr

sysctl net.core.default_qdisc

返回值一般为:
net.core.default_qdisc = fq

lsmod | grep bbr

返回值有 tcp_bbr 模块即说明bbr已启动。

二、OVZ开启 Haproxy-BBR 脚本

1、来自扩软博客的Haproxy-BBR 脚本

已测试通过的系统: Ubuntu 14.04 x64、Ubuntu 16.04 x64、CentOS 6 x64、CentOS 7 x64 只支持 64 位系统,要求 glibc 版本 2.14 以上(若版本过低,请查看文章末尾的升级教程)。
该脚本需要服务器开启 TUN
安装:

wget https://raw.githubusercontent.com/kuoruan/shell-scripts/master/ovz-bbr/ovz-bbr-installer.sh 
chmod +x ovz-bbr-installer.sh 
./ovz-bbr-installer.sh

需要配置的选项:

  1. 端口,即你用到的端口。开启后,流量先经过 BBR 处理,然后发送给指定端口。
  2. 可能需要配置“公网接口名称”,即你服务器上具有公网 IP 的接口名称。下面继续介绍一些使用方法以及问题排除。

在有 firewalld 的服务器上安装的时候,firewalld 会干扰 iptables 的规则,造成网络不通(现在具体原因未知,谁有解决方案可以提示一下)。所以在装有 firewalld 的服务器上需要先退出 firewalld:

systemctl disable firewalld 
systemctl stop firewalld

其他使用说明

卸载:

./ovz-bbr-installer.sh uninstall

多端口配置:
安装的时候只配置了一个加速端口,但是你可以配置多端口加速,配置方法非常简单。 修改文件

vim /usr/local/haproxy-lkl/etc/port-rules

在文件里添加需要加速的端口,每行一条,可以配置单个端口或者端口范围,以 # 开头的行将被忽略。 例如:8800 或者 8800-8810 配置完成之后,只需要重启 haproxy-lkl 即可。
启动、停止、重启 HAproxy-lkl:

systemctl start haproxy-lkl
systemctl stop haproxy-lkl
systemctl restart haproxy-lkl
或者:
service haproxy-lkl start
service haproxy-lkl stop
service haproxy-lkl restart

如果想自定义配置(新手请忽略):

/usr/local/haproxy-lkl/sbin/haproxy-lkl

多端口加速

安装的时候只配置了一个加速端口,但是你可以配置多端口加速,配置方法非常简单。 修改文件 

2、来自南琴浪的Haproxy-BBR 脚本

Debian 8+/CentOS 7 64bit该脚本需要服务器开启 TUN

开始安装

适用于Debian 8+ 环境:

wget https://github.com/tcp-nanqinlang/lkl-haproxy/releases/download/1.1.1/tcp_nanqinlang-haproxy-debian.sh
bash tcp_nanqinlang-haproxy-debian.sh

适用于Centos7 环境:

wget https://github.com/tcp-nanqinlang/lkl-haproxy/releases/download/1.1.1/tcp_nanqinlang-haproxy-centos.sh
bash tcp_nanqinlang-haproxy-centos.sh

使用说明

安装 lkl-haproxyd
此命令用于安装 lkl-haproxy。
/home/tcp_nanqinlang进行安装,所以安装完成后不要动这个文件夹了(除非你想修改端口)。
安装过程中,会提示你选择单个端口端口段输入
安装完成后,会开启 lkl-haproxy。以后重启机器也会随开机自启。

lkl-haproxyd端口修改
以后若需要修改转发端口,请将/home/tcp_nanqinlang/haproxy.cfg中的端口号和 /home/tcp_nanqinlang/redirect.sh  中的端口号改为你想要的端口或端口段,修改完成后重启服务器。使用前请注意自己的 iptables 相关设置。

检查 lkl-haproxy 运行状态
此命令用于检查 lkl-haproxy 运行与否,可通过返回的提示判断。

卸载 lkl-haproxy
运行此命令会卸载 haproxy、删除 /home/tcp_nanqinlang、移除 rc.local 开机自启项。稍后请自行移除 iptables 相关规则。

3、判断 BBR 是否工作

判断 bbr 是否正常启动可以尝试 ping 10.0.0.2,如果能通,说明 bbr 已经启动。
检查一下 iptables 规则:

iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
LKL_IN     all  --  0.0.0.0/0            0.0.0.0/0
 
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
 
Chain LKL_IN (1 references)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8989 to:10.0.0.2

里边会看到多了一张链表 LKL_IN,里边有相应的端口规则。

三、OVZ开启Rinetd-BBR

要求如下

OpenVZ 64 bit
Ram >> 64M
该脚本无须服务器开启 TUN

Debian or Ubuntu

适用于单网卡(单 IP) 服务器:

wget https://github.com/tcp-nanqinlang/lkl-rinetd/releases/download/1.1.0/tcp_nanqinlang-rinetd-debianorubuntu.sh
bash tcp_nanqinlang-rinetd-debianorubuntu.sh

适用于 多网卡(单 IP)  服务器,会为所有网卡(所有 IP)提供加速:

wget https://github.com/tcp-nanqinlang/lkl-rinetd/releases/download/1.1.0/tcp_nanqinlang-rinetd-debianorubuntu-multiNIC.sh
bash tcp_nanqinlang-rinetd-debianorubuntu-multiNIC.sh

CentOS 7

和上面一样,也分 单网卡 和 多网卡 版本:

# 单网卡
wget https://github.com/tcp-nanqinlang/lkl-rinetd/releases/download/1.1.0/tcp_nanqinlang-rinetd-centos.sh
bash tcp_nanqinlang-rinetd-centos.sh
# 多网卡
wget https://github.com/tcp-nanqinlang/lkl-rinetd/releases/download/1.1.0/tcp_nanqinlang-rinetd-centos-multiNIC.sh
bash tcp_nanqinlang-rinetd-centos-multiNIC.sh

使用说明

以下进行脚本使用说明:
安装 lkl-rinetd
此命令用于安装 lkl-rinetd。
/home/tcp_nanqinlang进行安装,所以安装完成后不要动这个文件夹了(除需修改端口)。
安装过程中,会提示输入端口号。多个端口号用空格隔开。不支持端口段。
安装完成后,会开启 lkl-rinetd。以后重启机器也会随开机自启。
使用前请注意自己的 iptables 相关设置。

lkl-rinetd端口修改
编辑/home/tcp_nanqinlang下的相关config文件,接着运行.sh文件

检查 lkl-rinetd 运行状态
此命令用于检查 lkl-rinetd 运行与否,可通过返回的提示判断。

卸载 lkl-rinetd
运行此命令会删除 /home/tcp_nanqinlang 、移除 rc.local 对应开机自启项和清空 iptables raw 表。属于完整卸载,不会有残留。且卸载后无需重启。

三、KVM魔改BBR/Lotsever(锐速)一键脚本

支持系统

虚拟化:KVM、Xen等,除了OpenVZ基本都行
系统:Centos 6+ / Debian 7+ / Ubuntu 14+BBR魔改版不支持Debian 8

安装

wget -N --no-check-certificate "https://github.com/cx9208/Linux-NetSpeed/raw/master/tcp.sh"
chmod +x tcp.sh
./tcp.sh

本脚本为高度集成一键脚本,请按照相关提示依次进行。
如果在删除内核环节出现这样一张图产品注意选择NO:

补充:更新 glibc

如果 glibc 版本过低,可以进行更新。
CentOS 6:

wget http://ftp.redsleeve.org/pub/steam/glibc-2.15-60.el6.x86_64.rpm \
http://ftp.redsleeve.org/pub/steam/glibc-common-2.15-60.el6.x86_64.rpm \
http://ftp.redsleeve.org/pub/steam/glibc-devel-2.15-60.el6.x86_64.rpm \
http://ftp.redsleeve.org/pub/steam/glibc-headers-2.15-60.el6.x86_64.rpm \
http://ftp.redsleeve.org/pub/steam/nscd-2.15-60.el6.x86_64.rpm
rpm -Uvh glibc-2.15-60.el6.x86_64.rpm \
glibc-common-2.15-60.el6.x86_64.rpm \
glibc-devel-2.15-60.el6.x86_64.rpm \
glibc-headers-2.15-60.el6.x86_64.rpm \
nscd-2.15-60.el6.x86_64.rpm

如果无法更新,手动编译:

wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz
wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz
tar -zxf glibc-2.15.tar.gz
tar -zxf glibc-ports-2.15.tar.gz
mv glibc-ports-2.15 glibc-2.15/ports
mkdir glibc-build-2.15
cd glibc-build-2.15
../glibc-2.15/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make all && make install

检查一下:

ldd --version
ldd (GNU libc) 2.15
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

声明:参考“OpenVZ平台Google BBR一键安装脚本”、“一键安装最新内核并开启 BBR 脚本”、“南琴浪GitHub”、“Linux网络优化加速一键脚本”,测试后发布,内容与本人无关。