細水長流

VPS 一键安装最新内核并开启 BBR 加速

文章目录 「隐藏」
  1. 一键 BBR 脚本适用环境
  2. 关于一键 BBR 脚本
  3. 一键 BBR 脚本使用方法
  4. CentOS 下最新版内核 headers 安装方法
  5. 为什么要安装最新版内核 headers 呢?
  6. 一键 BBR 脚本 内核升级方法
  7. 一键 BBR 脚本特别说明
  8. 一键 BBR 脚本更新日志
  9. 参考链接

Google 2016 年开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,Linux 4.9 版本内核开始已经用上该算法。在部署了最新版内核并开启了 TCP BBR VPS 上,网速甚至可以提升好几个数量级。 2022 年了,BBR 加速是标配了吧。

一键 BBR 脚本适用环境

谷歌 BBR 一键安装开启脚本,谷歌 BBR 一键安装教程。

系统支持:CentOS 6+,Debian 8+,Ubuntu 16+
虚拟技术:OpenVZ 以外的,比如 KVM 、 Xen 、 VMware
内存要求:≥128M
更新日期:2021 年 1 月 3 日

关于一键 BBR 脚本

Google BBR 项目主页:https://github.com/google/bbr

1 、本脚本已在 Vultr 上的 VPS 全部测试通过。

2 、脚本检测到 VPS 虚拟方式为 OpenVZ 时,会提示错误,并自动退出安装。

3 、脚本运行完重启发现开不了机的,打开 VPS 后台控制面板 VNC,开机卡在 grub 引导,手动选择内核即可。

4 、由于是使用最新版系统内核,最好请勿在生产环境安装,以免产生不可预测之后果

一键 BBR 脚本使用方法

使用 root 用户登录,运行以下命令:

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

或者:

wget --no-check-certificate -O /opt/bbr.sh https://github.com/teddysun/across/raw/master/bbr.sh && chmod 755 /opt/bbr.sh && /opt/bbr.sh

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

重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:

No.1

uname -r

查看内核版本,显示为最新版就表示成功了。

No.2

sysctl net.ipv4.tcp_available_congestion_control

返回值一般为:

net.ipv4.tcp_available_congestion_control = bbr cubic reno

或者:

net.ipv4.tcp_available_congestion_control = reno cubic bbr

No.3

sysctl net.ipv4.tcp_congestion_control

返回值一般为:

net.ipv4.tcp_congestion_control = bbr

No.4

sysctl net.core.default_qdisc

返回值一般为:

net.core.default_qdisc = fq

No.5

lsmod | grep bbr

返回值有 tcp_bbr 模块即说明 bbr 已启动。注意:并不是所有的 VPS 都会有此返回值,若没有也属正常。

CentOS 下最新版内核 headers 安装方法

本来打算在脚本里直接安装 kernel-ml-headers,但会出现和原版内核 headers 冲突的问题。因此在这里添加一个脚本执行完后,手动安装最新版内核 headers 之教程。

执行以下命令

yum --enablerepo=elrepo-kernel -y install kernel-ml-headers

根据 CentOS 版本的不同,此时一般会出现类似于以下的错误提示(Vultr CentOS 7 X64 测试的时候不会有下面的错误提示):

Error: kernel-ml-headers conflicts with kernel-headers-2.6.32-696.20.1.el6.x86_64 Error: kernel-ml-headers conflicts with kernel-headers-3.10.0-693.17.1.el7.x86_64

因此需要先卸载原版内核 headers ,然后再安装最新版内核 headers 。执行命令:

yum remove kernel-headers

确认无误后,输入 y,回车开始卸载。注意,有时候这么操作还会卸载一些对内核 headers 依赖的安装包,比如 gcc 、 gcc-c++ 之类的。不过不要紧,我们可以在安装完最新版内核 headers 后再重新安装回来即可。

卸载完成后,再次执行上面给出的安装命令。

yum --enablerepo=elrepo-kernel -y install kernel-ml-headers

成功安装后,再把那些之前对内核 headers 依赖的安装包,比如 gcc 、 gcc-c++ 之类的再安装一次即可。

为什么要安装最新版内核 headers 呢?

这是因为 爱国-libev 版有个 tcp fast open 功能,如果不安装的话,这个功能是无法开启的。

一键 BBR 脚本 内核升级方法

如果是 CentOS 系统,执行如下命令即可升级内核:

yum --enablerepo=elrepo-kernel -y install kernel-ml kernel-ml-devel

如果你还手动安装了新版内核 headers ,那么还需要以下命令来升级 headers :

yum --enablerepo=elrepo-kernel -y install kernel-ml-headers

CentOS 6 的话,执行命令:

sed -i 's/^default=.*/default=0/g' /boot/grub/grub.conf

CentOS 7 的话,执行命令:

grub2-set-default 0

如果是 Debian/Ubuntu 系统,则需要手动下载最新版内核来安装升级。

这里(http://kernel.ubuntu.com/~kernel-ppa/mainline/)下载最新版的内核 deb 安装包。

如果系统是 64 位,则下载 amd64 的 linux-image 中含有 generic 这个 deb 包; 如果系统是 32 位,则下载 i386 的 linux-image 中含有 generic 这个 deb 包;

安装的命令如下(以最新版的 64 位 4.12.4 举例而已,请替换为下载好的 deb 包):

dpkg -i linux-image-4.12.4-041204-generic_4.12.4-041204.201707271932_amd64.deb

安装完成后,再执行命令:

/usr/sbin/update-grub

最后,重启 VPS 即可。

一键 BBR 脚本特别说明

如果你使用的是 Google Cloud Platform(GCP)更换内核,有时会遇到重启后,整个磁盘变为只读的情况。只需执行以下命令即可恢复:

mount -o remount rw /

一键 BBR 脚本更新日志

2020 年 6 月 23 日:

1 、重构了代码,去除一些不必要的处理;

2 、精简在 Debian 和 Ubuntu 下的可选内核版本,从 5.6 起始到当前最新版结束。

2021 年 1 月 3 日:

1 、为了稳定性,在 CentOS 7 下更改 elrepo-kernel 为 centos-release-xen-48,并升级安装 4.9 版稳定内核;

2 、在 CentOS 6 和 CentOS 8 下不再安装 elrepo-kernel 。原因:CentOS 6 是通过 rpm 安装 4.18.20;CentOS 8 则无需升级内核即可开启 BBR 。

3 、精简在 Debian 和 Ubuntu 下的可选内核版本,从 5.9 起始到当前最新版结束。

参考链接

TCP BBR Quick-Start - Building and Running TCP BBR on Google Compute Engine

ELRepo.org - The Community Enterprise Linux Repository

http://kernel.ubuntu.com/~kernel-ppa/mainline/

一键 BBR 脚本备份:bbr.sh-备份-2022.03.15


原文:秋水逸冰 - 一键安装最新内核并开启 BBR 脚本

退出移动版