centos7.9 TCP 加速

BBR是谷歌开发的新的TCP加速算法,在网络状况不好的服务器上开启TCP的bbr,可以在无需增加任何硬件投入的情况下实现网络加速,并且客户端无需做任何配置,因此使用起来非常的方便。TCP加速对网络状况较好的内网环境,或者大带宽的境内服务器优化效果不明显,对于境外的VPS则有较好的加速效果。

开启BBR的前提是linux的内核版本要高于4.8(高版本的内核已经默认集成了BBR模块),目前centos7.9默认安装的内核版本是3.10,因此Centos7.9要开启TCP BBR加速首先要升级centos7 的内核。

以下的操作都是在centos7.9操作系统之上的,使用命令cat /etc/redhat-release命令可以查看当前系统的版本信息。

cat /etc/redhat-release

在这里插入图片描述
使用命令uname -ra可以查看当前系统的内核版本信息。

uname -ra

在这里插入图片描述

1.升级Centos7内核

1.1查找版本

因 ELRepo 源都是最新版本,所以旧版本内核只能手动下载。

查找 kernel rpm 历史版本:http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/

1.2下载内核 RPM

共需要下载三个类型 rpm

kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm

kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm

kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm

cd /home
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm

1.3安装内核

rpm -ivh kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm

在这里插入图片描述

1.4确认已安装内核版本

[root@localhost kernel]# rpm -qa | grep kernel
kernel-devel-3.10.0-1160.102.1.el7.x86_64
kernel-devel-3.10.0-1160.el7.x86_64
kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64
kernel-headers-3.10.0-1160.102.1.el7.x86_64
abrt-addon-kerneloops-2.1.11-60.el7.centos.x86_64
kernel-3.10.0-1160.el7.x86_64
kernel-tools-3.10.0-1160.102.1.el7.x86_64
kernel-3.10.0-1160.102.1.el7.x86_64
kernel-lt-5.4.226-1.el7.elrepo.x86_64
kernel-devel-3.10.0-1160.99.1.el7.x86_64
kernel-tools-libs-3.10.0-1160.102.1.el7.x86_64
kernel-3.10.0-1160.99.1.el7.x86_64

在这里插入图片描述

1.5设置启用新内核

# 查看启动顺序
[root@localhost alfiy]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (3.10.0-1160.105.1.el7.x86_64) 7 (Core)
CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.102.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.99.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-4f159f5c7c9a4d2aa7ea785de06efbaf) 7 (Core)

# 设置启动顺序 启动顺序从0排序,比如上面列表中0代表的是CentOS Linux (3.10.0-1160.105.1.el7.x86_64) 7 (Core)
# 1代表的是CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)
[root@localhost ~]# grub2-set-default 1

# 重启生效
[root@localhost ~]# reboot

在这里插入图片描述
💁‍♂ 如果grub2.cfg文件为空,则上述命令不会生效,需要执行grub2-mkconfig生成一个新的grub2.cfg文件.

grub2-mkconfig -o /etc/grub2.cfg

然后再执行前面的命令。

2.安装BBR

echo 'net.core.default_qdisc=cake' | tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | tee -a /etc/sysctl.conf
sysctl -p

在这里插入图片描述

👿 实测net.core.default_qdisc=cake的效果要比`net.core.default_qdisc=fq的效果好一些,但是cake好像在4.9内核上不支持,在5.4内核上就支持了。

💁‍♂ 其实上述步骤等同于直接修改/etc/sysctl.conf文件,如果多次执行上述命令时,再使用sysctl -p命令检查时会出现重复项,大家重新编辑/etc/sysctl.conf文件把重复项删除掉就可以了。

👿 如果你的系统报net.core.default_qdiscnet.ipv4.tcp_congestion_control不存在时,说明内核目前并不支持后面选项,需要检查确认内核版本。

3.检测

使用lsmod命令可以列出内核自启的模块,具体用法如下。

lsmod | grep bbr

如果出现下图所示内容,说明内核已经启用bbr模块。
在这里插入图片描述
也可以使用sysctl -p命令查看内核是否已经启用BBR,如果命令行打印出下图内容说明内核已经启用了BBR了,使用reboot命令重启服务器就可以了。
在这里插入图片描述

4.创建安装脚本

如果你有多台VPS并且都是相同的发行版本,那么需要重复前面1-3步的过程,是不是感觉有点太麻烦了?好吧,接下来我们将为前面的步骤开发一个简单的安装脚本。

思路如下,先提取前面步骤中所必需的安装命令。在前面1-3步中基本上使用了以下命令。

# 进入一个准备下载rpm包的目录 这里我们使用了家目录
cd /home

# 在当前目录下,下载所需的内核安装包
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm

# 通过rpm安装器安装下载的包 这里我们只安装了基础包和开发包,head包并没安装,如果有些程序需要head包可以再进入这个目录进行安装
rpm -ivh kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm

# 设置启用新内核
grub2-set-default 'CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)'

# 启用Tcp的bbr加速
echo 'net.core.default_qdisc=cake' | tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | tee -a /etc/sysctl.conf

# 重启生效
reboot

以上过程就基本上是我们手动安装的过程,由于我们要创建自动安装脚本,所以其中有些安装检查步骤就省略了。依照上面的流程,我们就可以编写自动安装脚本 了。

首先新建一个脚本文件,这里我就以tcp.sh为例。

vim tcp.sh

tcp.sh文件中添加以下内容:

#!/bin/bash

# 1. 创建目录
cd /home
mkdir bbr
cd bbr
# 2. 下载内核
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm &
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm &
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm &
wait
# 3. 安装内核
rpm -ivh kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm &
rpm -ivh kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm &
wait
# 4. 设置启动
# 设置启动顺序 
grub2-set-default 'CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)'
wait
# 5. 安装BBR
echo 'net.core.default_qdisc=cake' | tee -a /etc/sysctl.conf &
echo 'net.ipv4.tcp_congestion_control=bbr' | tee -a /etc/sysctl.conf &
# sysctl -p
wait
# 6. 重启系统
reboot

保存退出tcp.sh文件,并给tcp.sh文件赋可执行权限。

chmoe +x tcp.sh

然后执行tcp.sh文件。

重启系统后你会发现系统已经使用新的内核,并在内核中启用了bbr了。

💁‍♂ 在脚本文件中,使用了&后台运行命令,以及wait命令,这两个命令的使用能够让脚本顺序执行,也就是说上一步骤执行完成后,再执行下一步的命令。

👿 学会举一反三:上面的脚本都是写死的,所以只能在特定的发行版本上运行,大家还可以在此基础上进行完善,比如写一个判断语句,判断当前的系统的发行版本,判断当前的内核版本,以及一些友好的提示等。

5.一键安装脚本

有心的同学,如果认真实现了前面的4步,我想肯定会有很多收获,可是也有偷懒的同学,好吧下面就给出一个可用的一键安装脚本。

yum -y update && yum install -y wget && bash <(curl -s -L https://raw.githubusercontent.com/alfiy/centos7-bbr-enable/main/tcp.sh)

💁‍♂ 其实我只是把脚本放在了一个网络上可以下载的地方,大家可以沿着这个思路生成自己的一键安装脚本,自己写的脚本适应性可能不是太强,但对自己可能更加有用。

  • 21
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 Linux CentOS 7.9 上设置防火墙的IP段配置,可以使用iptables或firewalld来实现。 1. 使用iptables设置IP段配置 在 CentOS 7.9 中,iptables 已经被 firewalld 替代,但仍然可以使用 iptables 进行设置。以下是一些基本的 iptables 命令: - 允许某个IP段访问本机的22端口:`iptables -I INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT` - 允许本机访问某个IP段的22端口:`iptables -I OUTPUT -p tcp --sport 22 -d 192.168.1.0/24 -j ACCEPT` - 拒绝某个IP段访问本机的所有端口:`iptables -I INPUT -s 192.168.1.0/24 -j DROP` 需要注意的是,iptables 的规则可以被其他的防火墙软件覆盖掉,所以在使用 iptables 之前请确认其他的防火墙软件已经关闭。 2. 使用 firewalld 设置IP段配置 firewalld 是 CentOS 7.9 默认的防火墙软件。可以通过以下命令设置IP段配置: - 允许某个IP段访问本机的22端口:`firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'` - 允许本机访问某个IP段的22端口:`firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" destination address="192.168.1.0/24" port protocol="tcp" port="22" accept'` - 拒绝某个IP段访问本机的所有端口:`firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" drop'` 需要注意的是,firewalld 的规则需要永久生效需要使用 --permanent 选项,并且需要重新加载防火墙规则才能生效:`firewall-cmd --reload`。 以上命令仅为示例,具体的命令需要根据实际情况进行调整。同时,防火墙的IP段配置需要根据具体的网络环境进行调整,需要仔细考虑网络安全问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

alfiy

欢迎请博主喝瓶矿泉水

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值