1903 lines
78 KiB
Bash
1903 lines
78 KiB
Bash
#!/usr/bin/env bash
|
||
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
||
export PATH
|
||
#=================================================
|
||
# System Required: CentOS 7/8,Debian/ubuntu,oraclelinux
|
||
# Description: BBR+BBRplus+Lotserver
|
||
# Version: 100.0.1.25
|
||
# Author: 千影,cx9208,YLX
|
||
# 更新内容及反馈: https://blog.ylx.me/archives/783.html
|
||
#=================================================
|
||
|
||
# RED='\033[0;31m'
|
||
# GREEN='\033[0;32m'
|
||
# YELLOW='\033[0;33m'
|
||
# SKYBLUE='\033[0;36m'
|
||
# PLAIN='\033[0m'
|
||
|
||
sh_ver="100.0.1.25"
|
||
github="raw.githubusercontent.com/ylx2016/Linux-NetSpeed/master"
|
||
|
||
imgurl=""
|
||
headurl=""
|
||
github_network=1
|
||
|
||
Green_font_prefix="\033[32m"
|
||
Red_font_prefix="\033[31m"
|
||
Font_color_suffix="\033[0m"
|
||
Info="${Green_font_prefix}[信息]${Font_color_suffix}"
|
||
Error="${Red_font_prefix}[错误]${Font_color_suffix}"
|
||
Tip="${Green_font_prefix}[注意]${Font_color_suffix}"
|
||
|
||
if [ -f "/etc/sysctl.d/bbr.conf" ]; then
|
||
rm -rf /etc/sysctl.d/bbr.conf
|
||
fi
|
||
|
||
# 检查当前用户是否为 root 用户
|
||
if [ "$EUID" -ne 0 ]; then
|
||
echo "请使用 root 用户身份运行此脚本"
|
||
exit
|
||
fi
|
||
|
||
# 检查github网络
|
||
check_github() {
|
||
# 检测域名的可访问性函数
|
||
check_domain() {
|
||
local domain="$1"
|
||
if ! curl --head --silent --fail "$domain" >/dev/null; then
|
||
echo -e "${Error}无法访问 $domain,请检查网络或者本地DNS 或者访问频率过快而受限"
|
||
github_network=0
|
||
fi
|
||
}
|
||
|
||
# 检测所有域名的可访问性
|
||
check_domain "https://raw.githubusercontent.com"
|
||
check_domain "https://api.github.com"
|
||
check_domain "https://github.com"
|
||
|
||
if [ "$github_network" -eq 0 ]; then
|
||
echo -e "${Error}github网络访问受限,将影响内核的安装以及脚本的检查更新,5秒后继续运行脚本"
|
||
sleep 5
|
||
else
|
||
# 所有域名均可访问,打印成功提示
|
||
echo "${Green_font_prefix}github可访问${Font_color_suffix},继续执行脚本..."
|
||
fi
|
||
}
|
||
|
||
#检查连接
|
||
checkurl() {
|
||
local url="$1"
|
||
local maxRetries=3
|
||
local retryDelay=2
|
||
|
||
if [[ -z "$url" ]]; then
|
||
echo "错误:缺少URL参数!"
|
||
exit 1
|
||
fi
|
||
|
||
local retries=0
|
||
local responseCode=""
|
||
|
||
while [[ -z "$responseCode" && $retries -lt $maxRetries ]]; do
|
||
responseCode=$(curl -s -L -m 10 --connect-timeout 5 -o /dev/null -w "%{http_code}" "$url")
|
||
|
||
if [[ -z "$responseCode" ]]; then
|
||
((retries++))
|
||
sleep $retryDelay
|
||
fi
|
||
done
|
||
|
||
if [[ -n "$responseCode" && ("$responseCode" == "200" || "$responseCode" =~ ^3[0-9]{2}$) ]]; then
|
||
echo "下载地址检查OK,继续!"
|
||
else
|
||
echo "下载地址检查出错,退出!"
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
#cn使用fastgit.org的github加速
|
||
check_cn() {
|
||
# 检查是否安装了jq命令,如果没有安装则进行安装
|
||
if ! command -v jq >/dev/null 2>&1; then
|
||
if command -v yum >/dev/null 2>&1; then
|
||
sudo yum install epel-release -y
|
||
sudo yum install -y jq
|
||
elif command -v apt-get >/dev/null 2>&1; then
|
||
sudo apt-get update
|
||
sudo apt-get install -y jq
|
||
else
|
||
echo "无法安装jq命令。请手动安装jq后再试。"
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
# 获取当前IP地址,设置超时为3秒
|
||
current_ip=$(curl -s --max-time 3 https://api.ipify.org)
|
||
|
||
# 使用ip-api.com查询IP所在国家,设置超时为3秒
|
||
response=$(curl -s --max-time 3 "http://ip-api.com/json/$current_ip")
|
||
|
||
# 检查国家是否为中国
|
||
country=$(echo "$response" | jq -r '.countryCode')
|
||
if [[ "$country" == "CN" ]]; then
|
||
echo "https://endpoint.fastgit.org/$1"
|
||
else
|
||
echo "$1"
|
||
fi
|
||
}
|
||
|
||
#下载
|
||
download_file() {
|
||
url="$1"
|
||
filename="$2"
|
||
|
||
wget -N "$url" -O "$filename"
|
||
status=$?
|
||
|
||
if [ $status -eq 0 ]; then
|
||
echo -e "\e[32m文件下载成功或已经是最新。\e[0m"
|
||
else
|
||
echo -e "\e[31m文件下载失败,退出状态码: $status\e[0m"
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
#檢查賦值
|
||
check_empty() {
|
||
local var_value=$1
|
||
|
||
if [[ -z $var_value ]]; then
|
||
echo "$var_value 是空值,退出!"
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
#安装BBR内核
|
||
installbbr() {
|
||
kernel_version="5.9.6"
|
||
bit=$(uname -m)
|
||
rm -rf bbr
|
||
mkdir bbr && cd bbr || exit
|
||
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
if [[ ${version} == "7" ]]; then
|
||
if [[ ${bit} == "x86_64" ]]; then
|
||
echo -e "如果下载地址出错,可能当前正在更新,超过半天还是出错请反馈,大陆自行解决污染问题"
|
||
#github_ver=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | head -n 1 | awk -F '"' '{print $4}' | awk -F '[/]' '{print $8}' | awk -F '[_]' '{print $3}')
|
||
github_tag=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep 'Centos_Kernel' | grep '_latest_bbr_' | head -n 1 | awk -F '"' '{print $4}' | awk -F '[/]' '{print $8}')
|
||
github_ver=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'rpm' | grep 'headers' | awk -F '"' '{print $4}' | awk -F '[/]' '{print $9}' | awk -F '[-]' '{print $3}')
|
||
check_empty $github_ver
|
||
echo -e "获取的版本号为:${Green_font_prefix}${github_ver}${Font_color_suffix}"
|
||
kernel_version=$github_ver
|
||
detele_kernel_head
|
||
headurl=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'rpm' | grep 'headers' | awk -F '"' '{print $4}')
|
||
imgurl=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'rpm' | grep -v 'headers' | grep -v 'devel' | awk -F '"' '{print $4}')
|
||
#headurl=https://github.com/ylx2016/kernel/releases/download/$github_tag/kernel-headers-${github_ver}-1.x86_64.rpm
|
||
#imgurl=https://github.com/ylx2016/kernel/releases/download/$github_tag/kernel-${github_ver}-1.x86_64.rpm
|
||
|
||
check_empty $imgurl
|
||
headurl=$(check_cn $headurl)
|
||
imgurl=$(check_cn $imgurl)
|
||
|
||
download_file $headurl kernel-headers-c7.rpm
|
||
download_file $imgurl kernel-c7.rpm
|
||
yum install -y kernel-c7.rpm
|
||
yum install -y kernel-headers-c7.rpm
|
||
else
|
||
echo -e "${Error} 不支持x86_64以外的系统 !" && exit 1
|
||
fi
|
||
fi
|
||
|
||
elif [[ "${OS_type}" == "Debian" ]]; then
|
||
if [[ ${bit} == "x86_64" ]]; then
|
||
echo -e "如果下载地址出错,可能当前正在更新,超过半天还是出错请反馈,大陆自行解决污染问题"
|
||
github_tag=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep 'Debian_Kernel' | grep '_latest_bbr_' | head -n 1 | awk -F '"' '{print $4}' | awk -F '[/]' '{print $8}')
|
||
github_ver=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'deb' | grep 'headers' | awk -F '"' '{print $4}' | awk -F '[/]' '{print $9}' | awk -F '[-]' '{print $3}' | awk -F '[_]' '{print $1}')
|
||
check_empty $github_ver
|
||
echo -e "获取的版本号为:${Green_font_prefix}${github_ver}${Font_color_suffix}"
|
||
kernel_version=$github_ver
|
||
detele_kernel_head
|
||
headurl=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'deb' | grep 'headers' | awk -F '"' '{print $4}')
|
||
imgurl=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'deb' | grep -v 'headers' | grep -v 'devel' | awk -F '"' '{print $4}')
|
||
#headurl=https://github.com/ylx2016/kernel/releases/download/$github_tag/linux-headers-${github_ver}_${github_ver}-1_amd64.deb
|
||
#imgurl=https://github.com/ylx2016/kernel/releases/download/$github_tag/linux-image-${github_ver}_${github_ver}-1_amd64.deb
|
||
|
||
headurl=$(check_cn $headurl)
|
||
imgurl=$(check_cn $imgurl)
|
||
|
||
download_file $headurl linux-headers-d10.deb
|
||
download_file $imgurl linux-image-d10.deb
|
||
dpkg -i linux-image-d10.deb
|
||
dpkg -i linux-headers-d10.deb
|
||
elif [[ ${bit} == "aarch64" ]]; then
|
||
echo -e "如果下载地址出错,可能当前正在更新,超过半天还是出错请反馈,大陆自行解决污染问题"
|
||
github_tag=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep 'Debian_Kernel' | grep '_arm64_' | grep '_bbr_' | head -n 1 | awk -F '"' '{print $4}' | awk -F '[/]' '{print $8}')
|
||
github_ver=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'deb' | grep 'headers' | awk -F '"' '{print $4}' | awk -F '[/]' '{print $9}' | awk -F '[-]' '{print $3}' | awk -F '[_]' '{print $1}')
|
||
echo -e "获取的版本号为:${Green_font_prefix}${github_ver}${Font_color_suffix}"
|
||
kernel_version=$github_ver
|
||
detele_kernel_head
|
||
headurl=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'deb' | grep 'headers' | awk -F '"' '{print $4}')
|
||
imgurl=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'deb' | grep -v 'headers' | grep -v 'devel' | awk -F '"' '{print $4}')
|
||
#headurl=https://github.com/ylx2016/kernel/releases/download/$github_tag/linux-headers-${github_ver}_${github_ver}-1_amd64.deb
|
||
#imgurl=https://github.com/ylx2016/kernel/releases/download/$github_tag/linux-image-${github_ver}_${github_ver}-1_amd64.deb
|
||
|
||
check_empty $imgurl
|
||
headurl=$(check_cn $headurl)
|
||
imgurl=$(check_cn $imgurl)
|
||
|
||
download_file $headurl linux-headers-d10.deb
|
||
download_file $imgurl linux-image-d10.deb
|
||
dpkg -i linux-image-d10.deb
|
||
dpkg -i linux-headers-d10.deb
|
||
else
|
||
echo -e "${Error} 不支持x86_64及arm64/aarch64以外的系统 !" && exit 1
|
||
fi
|
||
fi
|
||
|
||
cd .. && rm -rf bbr
|
||
|
||
detele_kernel
|
||
BBR_grub
|
||
echo -e "${Tip} ${Red_font_prefix}请检查上面是否有内核信息,无内核千万别重启${Font_color_suffix}"
|
||
echo -e "${Tip} ${Red_font_prefix}rescue不是正常内核,要排除这个${Font_color_suffix}"
|
||
echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}BBR${Font_color_suffix}"
|
||
check_kernel
|
||
stty erase '^H' && read -p "需要重启VPS后,才能开启BBR,是否现在重启 ? [Y/n] :" yn
|
||
[ -z "${yn}" ] && yn="y"
|
||
if [[ $yn == [Yy] ]]; then
|
||
echo -e "${Info} VPS 重启中..."
|
||
reboot
|
||
fi
|
||
#echo -e "${Tip} 内核安装完毕,请参考上面的信息检查是否安装成功及手动调整内核启动顺序"
|
||
}
|
||
|
||
#安装BBRplus内核 4.14.129
|
||
installbbrplus() {
|
||
kernel_version="4.14.160-bbrplus"
|
||
bit=$(uname -m)
|
||
rm -rf bbrplus
|
||
mkdir bbrplus && cd bbrplus || exit
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
if [[ ${version} == "7" ]]; then
|
||
if [[ ${bit} == "x86_64" ]]; then
|
||
kernel_version="4.14.129_bbrplus"
|
||
detele_kernel_head
|
||
headurl=https://github.com/cx9208/Linux-NetSpeed/raw/master/bbrplus/centos/7/kernel-headers-4.14.129-bbrplus.rpm
|
||
imgurl=https://github.com/cx9208/Linux-NetSpeed/raw/master/bbrplus/centos/7/kernel-4.14.129-bbrplus.rpm
|
||
|
||
headurl=$(check_cn $headurl)
|
||
imgurl=$(check_cn $imgurl)
|
||
|
||
download_file $headurl kernel-headers-c7.rpm
|
||
download_file $imgurl kernel-c7.rpm
|
||
yum install -y kernel-c7.rpm
|
||
yum install -y kernel-headers-c7.rpm
|
||
else
|
||
echo -e "${Error} 不支持x86_64以外的系统 !" && exit 1
|
||
fi
|
||
fi
|
||
|
||
elif [[ "${OS_type}" == "Debian" ]]; then
|
||
if [[ ${bit} == "x86_64" ]]; then
|
||
kernel_version="4.14.129-bbrplus"
|
||
detele_kernel_head
|
||
headurl=https://github.com/cx9208/Linux-NetSpeed/raw/master/bbrplus/debian-ubuntu/x64/linux-headers-4.14.129-bbrplus.deb
|
||
imgurl=https://github.com/cx9208/Linux-NetSpeed/raw/master/bbrplus/debian-ubuntu/x64/linux-image-4.14.129-bbrplus.deb
|
||
|
||
headurl=$(check_cn $headurl)
|
||
imgurl=$(check_cn $imgurl)
|
||
|
||
wget -N -O linux-headers.deb $headurl
|
||
wget -N -O linux-image.deb $imgurl
|
||
|
||
dpkg -i linux-image.deb
|
||
dpkg -i linux-headers.deb
|
||
else
|
||
echo -e "${Error} 不支持x86_64以外的系统 !" && exit 1
|
||
fi
|
||
fi
|
||
|
||
cd .. && rm -rf bbrplus
|
||
detele_kernel
|
||
BBR_grub
|
||
echo -e "${Tip} ${Red_font_prefix}请检查上面是否有内核信息,无内核千万别重启${Font_color_suffix}"
|
||
echo -e "${Tip} ${Red_font_prefix}rescue不是正常内核,要排除这个${Font_color_suffix}"
|
||
echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}BBRplus${Font_color_suffix}"
|
||
check_kernel
|
||
stty erase '^H' && read -p "需要重启VPS后,才能开启BBRplus,是否现在重启 ? [Y/n] :" yn
|
||
[ -z "${yn}" ] && yn="y"
|
||
if [[ $yn == [Yy] ]]; then
|
||
echo -e "${Info} VPS 重启中..."
|
||
reboot
|
||
fi
|
||
#echo -e "${Tip} 内核安装完毕,请参考上面的信息检查是否安装成功及手动调整内核启动顺序"
|
||
}
|
||
|
||
#安装Lotserver内核
|
||
installlot() {
|
||
bit=$(uname -m)
|
||
if [[ ${bit} != "x86_64" ]]; then
|
||
echo -e "${Error} 不支持x86_64以外的系统 !" && exit 1
|
||
fi
|
||
if [[ ${bit} == "x86_64" ]]; then
|
||
bit='x64'
|
||
fi
|
||
if [[ ${bit} == "i386" ]]; then
|
||
bit='x32'
|
||
fi
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
rpm --import http://${github}/lotserver/${release}/RPM-GPG-KEY-elrepo.org
|
||
yum remove -y kernel-firmware
|
||
yum install -y http://${github}/lotserver/${release}/${version}/${bit}/kernel-firmware-${kernel_version}.rpm
|
||
yum install -y http://${github}/lotserver/${release}/${version}/${bit}/kernel-${kernel_version}.rpm
|
||
yum remove -y kernel-headers
|
||
yum install -y http://${github}/lotserver/${release}/${version}/${bit}/kernel-headers-${kernel_version}.rpm
|
||
yum install -y http://${github}/lotserver/${release}/${version}/${bit}/kernel-devel-${kernel_version}.rpm
|
||
fi
|
||
|
||
if [[ "${OS_type}" == "Debian" ]]; then
|
||
deb_issue="$(cat /etc/issue)"
|
||
deb_relese="$(echo $deb_issue | grep -io 'Ubuntu\|Debian' | sed -r 's/(.*)/\L\1/')"
|
||
os_ver="$(dpkg --print-architecture)"
|
||
[ -n "$os_ver" ] || exit 1
|
||
if [ "$deb_relese" == 'ubuntu' ]; then
|
||
deb_ver="$(echo $deb_issue | grep -o '[0-9]*\.[0-9]*' | head -n1)"
|
||
if [ "$deb_ver" == "14.04" ]; then
|
||
kernel_version="3.16.0-77-generic" && item="3.16.0-77-generic" && ver='trusty'
|
||
elif [ "$deb_ver" == "16.04" ]; then
|
||
kernel_version="4.8.0-36-generic" && item="4.8.0-36-generic" && ver='xenial'
|
||
elif [ "$deb_ver" == "18.04" ]; then
|
||
kernel_version="4.15.0-30-generic" && item="4.15.0-30-generic" && ver='bionic'
|
||
else
|
||
exit 1
|
||
fi
|
||
url='archive.ubuntu.com'
|
||
urls='security.ubuntu.com'
|
||
elif [ "$deb_relese" == 'debian' ]; then
|
||
deb_ver="$(echo $deb_issue | grep -o '[0-9]*' | head -n1)"
|
||
if [ "$deb_ver" == "7" ]; then
|
||
kernel_version="3.2.0-4-${os_ver}" && item="3.2.0-4-${os_ver}" && ver='wheezy' && url='archive.debian.org' && urls='archive.debian.org'
|
||
elif [ "$deb_ver" == "8" ]; then
|
||
kernel_version="3.16.0-4-${os_ver}" && item="3.16.0-4-${os_ver}" && ver='jessie' && url='archive.debian.org' && urls='archive.debian.org'
|
||
elif [ "$deb_ver" == "9" ]; then
|
||
kernel_version="4.9.0-4-${os_ver}" && item="4.9.0-4-${os_ver}" && ver='stretch' && url='archive.debian.org' && urls='archive.debian.org'
|
||
else
|
||
exit 1
|
||
fi
|
||
fi
|
||
[ -n "$item" ] && [ -n "$urls" ] && [ -n "$url" ] && [ -n "$ver" ] || exit 1
|
||
if [ "$deb_relese" == 'ubuntu' ]; then
|
||
echo "deb http://${url}/${deb_relese} ${ver} main restricted universe multiverse" >/etc/apt/sources.list
|
||
echo "deb http://${url}/${deb_relese} ${ver}-updates main restricted universe multiverse" >>/etc/apt/sources.list
|
||
echo "deb http://${url}/${deb_relese} ${ver}-backports main restricted universe multiverse" >>/etc/apt/sources.list
|
||
echo "deb http://${urls}/${deb_relese} ${ver}-security main restricted universe multiverse" >>/etc/apt/sources.list
|
||
|
||
apt-get update || apt-get --allow-releaseinfo-change update
|
||
apt-get install --no-install-recommends -y linux-image-${item}
|
||
elif [ "$deb_relese" == 'debian' ]; then
|
||
echo "deb http://${url}/${deb_relese} ${ver} main" >/etc/apt/sources.list
|
||
echo "deb-src http://${url}/${deb_relese} ${ver} main" >>/etc/apt/sources.list
|
||
echo "deb http://${urls}/${deb_relese}-security ${ver}/updates main" >>/etc/apt/sources.list
|
||
echo "deb-src http://${urls}/${deb_relese}-security ${ver}/updates main" >>/etc/apt/sources.list
|
||
|
||
if [ "$deb_ver" == "8" ]; then
|
||
dpkg -l | grep -q 'linux-base' || {
|
||
wget --no-check-certificate -qO '/tmp/linux-base_3.5_all.deb' 'http://snapshot.debian.org/archive/debian/20120304T220938Z/pool/main/l/linux-base/linux-base_3.5_all.deb'
|
||
dpkg -i '/tmp/linux-base_3.5_all.deb'
|
||
}
|
||
wget --no-check-certificate -qO '/tmp/linux-image-3.16.0-4-amd64_3.16.43-2+deb8u5_amd64.deb' 'http://snapshot.debian.org/archive/debian/20171008T163152Z/pool/main/l/linux/linux-image-3.16.0-4-amd64_3.16.43-2+deb8u5_amd64.deb'
|
||
dpkg -i '/tmp/linux-image-3.16.0-4-amd64_3.16.43-2+deb8u5_amd64.deb'
|
||
|
||
if [ $? -ne 0 ]; then
|
||
exit 1
|
||
fi
|
||
elif [ "$deb_ver" == "9" ]; then
|
||
dpkg -l | grep -q 'linux-base' || {
|
||
wget --no-check-certificate -qO '/tmp/linux-base_4.5_all.deb' 'http://snapshot.debian.org/archive/debian/20160917T042239Z/pool/main/l/linux-base/linux-base_4.5_all.deb'
|
||
dpkg -i '/tmp/linux-base_4.5_all.deb'
|
||
}
|
||
wget --no-check-certificate -qO '/tmp/linux-image-4.9.0-4-amd64_4.9.65-3+deb9u1_amd64.deb' 'http://snapshot.debian.org/archive/debian/20171224T175424Z/pool/main/l/linux/linux-image-4.9.0-4-amd64_4.9.65-3+deb9u1_amd64.deb'
|
||
dpkg -i '/tmp/linux-image-4.9.0-4-amd64_4.9.65-3+deb9u1_amd64.deb'
|
||
##备选
|
||
#https://sys.if.ci/download/linux-image-4.9.0-4-amd64_4.9.65-3+deb9u1_amd64.deb
|
||
#http://mirror.cs.uchicago.edu/debian-security/pool/updates/main/l/linux/linux-image-4.9.0-4-amd64_4.9.65-3+deb9u1_amd64.deb
|
||
#https://debian.sipwise.com/debian-security/pool/main/l/linux/linux-image-4.9.0-4-amd64_4.9.65-3+deb9u1_amd64.deb
|
||
#http://srv24.dsidata.sk/security.debian.org/pool/updates/main/l/linux/linux-image-4.9.0-4-amd64_4.9.65-3+deb9u1_amd64.deb
|
||
#https://pubmirror.plutex.de/debian-security/pool/updates/main/l/linux/linux-image-4.9.0-4-amd64_4.9.65-3+deb9u1_amd64.deb
|
||
#https://packages.mendix.com/debian/pool/main/l/linux/linux-image-4.9.0-4-amd64_4.9.65-3_amd64.deb
|
||
#http://snapshot.debian.org/archive/debian/20171224T175424Z/pool/main/l/linux/linux-image-4.9.0-4-amd64_4.9.65-3+deb9u1_amd64.deb
|
||
#http://snapshot.debian.org/archive/debian/20171231T180144Z/pool/main/l/linux/linux-image-4.9.0-4-amd64_4.9.65-3_amd64.deb
|
||
if [ $? -ne 0 ]; then
|
||
exit 1
|
||
fi
|
||
else
|
||
exit 1
|
||
fi
|
||
fi
|
||
apt-get autoremove -y
|
||
[ -d '/var/lib/apt/lists' ] && find /var/lib/apt/lists -type f -delete
|
||
fi
|
||
|
||
detele_kernel
|
||
BBR_grub
|
||
echo -e "${Tip} ${Red_font_prefix}请检查上面是否有内核信息,无内核千万别重启${Font_color_suffix}"
|
||
echo -e "${Tip} ${Red_font_prefix}rescue不是正常内核,要排除这个${Font_color_suffix}"
|
||
echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}Lotserver${Font_color_suffix}"
|
||
check_kernel
|
||
stty erase '^H' && read -p "需要重启VPS后,才能开启Lotserver,是否现在重启 ? [Y/n] :" yn
|
||
[ -z "${yn}" ] && yn="y"
|
||
if [[ $yn == [Yy] ]]; then
|
||
echo -e "${Info} VPS 重启中..."
|
||
reboot
|
||
fi
|
||
#echo -e "${Tip} 内核安装完毕,请参考上面的信息检查是否安装成功及手动调整内核启动顺序"
|
||
}
|
||
|
||
#安装xanmod内核 from xanmod.org
|
||
installxanmod() {
|
||
kernel_version="5.5.1-xanmod1"
|
||
bit=$(uname -m)
|
||
if [[ ${bit} != "x86_64" ]]; then
|
||
echo -e "${Error} 不支持x86_64以外的系统 !" && exit 1
|
||
fi
|
||
rm -rf xanmod
|
||
mkdir xanmod && cd xanmod || exit
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
if [[ ${version} == "7" ]]; then
|
||
if [[ ${bit} == "x86_64" ]]; then
|
||
echo -e "如果下载地址出错,可能当前正在更新,超过半天还是出错请反馈,大陆自行解决污染问题"
|
||
github_tag=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep 'Centos_Kernel' | grep '_lts_latest_' | grep 'xanmod' | head -n 1 | awk -F '"' '{print $4}' | awk -F '[/]' '{print $8}')
|
||
github_ver=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'rpm' | grep 'headers' | awk -F '"' '{print $4}' | awk -F '[/]' '{print $9}' | awk -F '[-]' '{print $3}')
|
||
echo -e "获取的版本号为:${Green_font_prefix}${github_ver}${Font_color_suffix}"
|
||
kernel_version=$github_ver
|
||
detele_kernel_head
|
||
headurl=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'rpm' | grep 'headers' | awk -F '"' '{print $4}')
|
||
imgurl=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'rpm' | grep -v 'headers' | grep -v 'devel' | awk -F '"' '{print $4}')
|
||
|
||
headurl=$(check_cn $headurl)
|
||
imgurl=$(check_cn $imgurl)
|
||
|
||
download_file $headurl kernel-headers-c7.rpm
|
||
download_file $imgurl kernel-c7.rpm
|
||
yum install -y kernel-c7.rpm
|
||
yum install -y kernel-headers-c7.rpm
|
||
else
|
||
echo -e "${Error} 不支持x86_64以外的系统 !" && exit 1
|
||
fi
|
||
elif [[ ${version} == "8" ]]; then
|
||
echo -e "如果下载地址出错,可能当前正在更新,超过半天还是出错请反馈,大陆自行解决污染问题"
|
||
github_tag=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep 'Centos_Kernel' | grep '_lts_C8_latest_' | grep 'xanmod' | head -n 1 | awk -F '"' '{print $4}' | awk -F '[/]' '{print $8}')
|
||
github_ver=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'rpm' | grep 'headers' | awk -F '"' '{print $4}' | awk -F '[/]' '{print $9}' | awk -F '[-]' '{print $3}')
|
||
echo -e "获取的版本号为:${Green_font_prefix}${github_ver}${Font_color_suffix}"
|
||
kernel_version=$github_ver
|
||
detele_kernel_head
|
||
headurl=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'rpm' | grep 'headers' | awk -F '"' '{print $4}')
|
||
imgurl=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'rpm' | grep -v 'headers' | grep -v 'devel' | awk -F '"' '{print $4}')
|
||
|
||
headurl=$(check_cn $headurl)
|
||
imgurl=$(check_cn $imgurl)
|
||
|
||
wget -N -O kernel-headers-c8.rpm $headurl
|
||
wget -N -O kernel-c8.rpm $imgurl
|
||
yum install -y kernel-c8.rpm
|
||
yum install -y kernel-headers-c8.rpm
|
||
fi
|
||
|
||
elif [[ "${OS_type}" == "Debian" ]]; then
|
||
|
||
if [[ ${bit} == "x86_64" ]]; then
|
||
echo -e "如果下载地址出错,可能当前正在更新,超过半天还是出错请反馈,大陆自行解决污染问题"
|
||
github_tag=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep 'Debian_Kernel' | grep '_lts_latest_' | grep 'xanmod' | head -n 1 | awk -F '"' '{print $4}' | awk -F '[/]' '{print $8}')
|
||
github_ver=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'deb' | grep 'headers' | awk -F '"' '{print $4}' | awk -F '[/]' '{print $9}' | awk -F '[-]' '{print $3}')
|
||
|
||
check_empty $github_ver
|
||
echo -e "获取的xanmod lts版本号为:${github_ver}"
|
||
|
||
kernel_version=$github_ver
|
||
|
||
detele_kernel_head
|
||
headurl=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'deb' | grep 'headers' | awk -F '"' '{print $4}')
|
||
imgurl=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'deb' | grep -v 'headers' | grep -v 'devel' | awk -F '"' '{print $4}')
|
||
|
||
check_empty $imgurl
|
||
headurl=$(check_cn $headurl)
|
||
imgurl=$(check_cn $imgurl)
|
||
|
||
download_file $headurl linux-headers-d10.deb
|
||
download_file $imgurl linux-image-d10.deb
|
||
dpkg -i linux-image-d10.deb
|
||
dpkg -i linux-headers-d10.deb
|
||
else
|
||
echo -e "${Error} 不支持x86_64以外的系统 !" && exit 1
|
||
fi
|
||
fi
|
||
|
||
cd .. && rm -rf xanmod
|
||
detele_kernel
|
||
BBR_grub
|
||
echo -e "${Tip} ${Red_font_prefix}请检查上面是否有内核信息,无内核千万别重启${Font_color_suffix}"
|
||
echo -e "${Tip} ${Red_font_prefix}rescue不是正常内核,要排除这个${Font_color_suffix}"
|
||
echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}BBR${Font_color_suffix}"
|
||
check_kernel
|
||
stty erase '^H' && read -p "需要重启VPS后,才能开启BBR,是否现在重启 ? [Y/n] :" yn
|
||
[ -z "${yn}" ] && yn="y"
|
||
if [[ $yn == [Yy] ]]; then
|
||
echo -e "${Info} VPS 重启中..."
|
||
reboot
|
||
fi
|
||
#echo -e "${Tip} 内核安装完毕,请参考上面的信息检查是否安装成功及手动调整内核启动顺序"
|
||
}
|
||
|
||
#安装bbr2内核 集成到xanmod内核了
|
||
#安装bbrplus 新内核
|
||
#2021.3.15 开始由https://github.com/UJX6N/bbrplus-5.19 替换bbrplusnew
|
||
#2021.4.12 地址更新为https://github.com/ylx2016/kernel/releases
|
||
#2021.9.2 再次改为https://github.com/UJX6N/bbrplus
|
||
#2022.9.6 改为https://github.com/UJX6N/bbrplus-5.19
|
||
#2022.11.24 改为https://github.com/UJX6N/bbrplus-6.x_stable
|
||
|
||
installbbrplusnew() {
|
||
github_ver_plus=$(curl -s https://api.github.com/repos/UJX6N/bbrplus-6.x_stable/releases | grep /bbrplus-6.x_stable/releases/tag/ | head -1 | awk -F "[/]" '{print $8}' | awk -F "[\"]" '{print $1}')
|
||
github_ver_plus_num=$(curl -s https://api.github.com/repos/UJX6N/bbrplus-6.x_stable/releases | grep /bbrplus-6.x_stable/releases/tag/ | head -1 | awk -F "[/]" '{print $8}' | awk -F "[\"]" '{print $1}' | awk -F "[-]" '{print $1}')
|
||
echo -e "获取的UJX6N的bbrplus-6.x_stable版本号为:${Green_font_prefix}${github_ver_plus}${Font_color_suffix}"
|
||
echo -e "如果下载地址出错,可能当前正在更新,超过半天还是出错请反馈,大陆自行解决污染问题"
|
||
echo -e "${Green_font_prefix}安装失败这边反馈,内核问题给UJX6N反馈${Font_color_suffix}"
|
||
# kernel_version=$github_ver_plus
|
||
|
||
bit=$(uname -m)
|
||
#if [[ ${bit} != "x86_64" ]]; then
|
||
# echo -e "${Error} 不支持x86_64以外的系统 !" && exit 1
|
||
#fi
|
||
rm -rf bbrplusnew
|
||
mkdir bbrplusnew && cd bbrplusnew || exit
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
if [[ ${version} == "7" ]]; then
|
||
if [[ ${bit} == "x86_64" ]]; then
|
||
#github_tag=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep 'Centos_Kernel' | grep '_latest_bbrplus_' | head -n 1 | awk -F '"' '{print $4}' | awk -F '[/]' '{print $8}')
|
||
#github_ver=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'rpm' | grep 'headers' | awk -F '"' '{print $4}' | awk -F '[/]' '{print $9}' | awk -F '[-]' '{print $3}' | awk -F '[_]' '{print $1}')
|
||
#echo -e "获取的版本号为:${Green_font_prefix}${github_ver}${Font_color_suffix}"
|
||
kernel_version=${github_ver_plus_num}-bbrplus
|
||
detele_kernel_head
|
||
headurl=$(curl -s 'https://api.github.com/repos/UJX6N/bbrplus-6.x_stable/releases' | grep ${github_ver_plus} | grep 'rpm' | grep 'headers' | grep 'el7' | awk -F '"' '{print $4}' | grep 'http')
|
||
imgurl=$(curl -s 'https://api.github.com/repos/UJX6N/bbrplus-6.x_stable/releases' | grep ${github_ver_plus} | grep 'rpm' | grep -v 'devel' | grep -v 'headers' | grep -v 'Source' | grep 'el7' | awk -F '"' '{print $4}' | grep 'http')
|
||
|
||
headurl=$(check_cn $headurl)
|
||
imgurl=$(check_cn $imgurl)
|
||
|
||
wget -N -O kernel-c7.rpm $headurl
|
||
wget -N -O kernel-headers-c7.rpm $imgurl
|
||
yum install -y kernel-c7.rpm
|
||
yum install -y kernel-headers-c7.rpm
|
||
else
|
||
echo -e "${Error} 不支持x86_64以外的系统 !" && exit 1
|
||
fi
|
||
fi
|
||
if [[ ${version} == "8" ]]; then
|
||
if [[ ${bit} == "x86_64" ]]; then
|
||
#github_tag=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep 'Centos_Kernel' | grep '_latest_bbrplus_' | head -n 1 | awk -F '"' '{print $4}' | awk -F '[/]' '{print $8}')
|
||
#github_ver=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'rpm' | grep 'headers' | awk -F '"' '{print $4}' | awk -F '[/]' '{print $9}' | awk -F '[-]' '{print $3}' | awk -F '[_]' '{print $1}')
|
||
#echo -e "获取的版本号为:${Green_font_prefix}${github_ver}${Font_color_suffix}"
|
||
kernel_version=${github_ver_plus_num}-bbrplus
|
||
detele_kernel_head
|
||
headurl=$(curl -s 'https://api.github.com/repos/UJX6N/bbrplus-6.x_stable/releases' | grep ${github_ver_plus} | grep 'rpm' | grep 'headers' | grep 'el8.x86_64' | grep 'https' | awk -F '"' '{print $4}' | grep 'http')
|
||
imgurl=$(curl -s 'https://api.github.com/repos/UJX6N/bbrplus-6.x_stable/releases' | grep ${github_ver_plus} | grep 'rpm' | grep -v 'devel' | grep -v 'headers' | grep -v 'Source' | grep 'el8.x86_64' | grep 'https' | awk -F '"' '{print $4}' | grep 'http')
|
||
|
||
headurl=$(check_cn $headurl)
|
||
imgurl=$(check_cn $imgurl)
|
||
|
||
wget -N -O kernel-c8.rpm $headurl
|
||
wget -N -O kernel-headers-c8.rpm $imgurl
|
||
yum install -y kernel-c8.rpm
|
||
yum install -y kernel-headers-c8.rpm
|
||
else
|
||
echo -e "${Error} 不支持x86_64以外的系统 !" && exit 1
|
||
fi
|
||
fi
|
||
elif [[ "${OS_type}" == "Debian" ]]; then
|
||
if [[ ${bit} == "x86_64" ]]; then
|
||
#github_tag=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep 'Ubuntu_Kernel' | grep '_latest_bbrplus_' | head -n 1 | awk -F '"' '{print $4}' | awk -F '[/]' '{print $8}')
|
||
#github_ver=$(curl -s 'http s://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'deb' | grep 'headers' | awk -F '"' '{print $4}' | awk -F '[/]' '{print $9}' | awk -F '[-]' '{print $3}' | awk -F '[_]' '{print $1}')
|
||
#echo -e "获取的版本号为:${Green_font_prefix}${github_ver}${Font_color_suffix}"
|
||
kernel_version=${github_ver_plus_num}-bbrplus
|
||
detele_kernel_head
|
||
headurl=$(curl -s 'https://api.github.com/repos/UJX6N/bbrplus-6.x_stable/releases' | grep ${github_ver_plus} | grep 'https' | grep 'amd64.deb' | grep 'headers' | awk -F '"' '{print $4}' | grep 'http')
|
||
imgurl=$(curl -s 'https://api.github.com/repos/UJX6N/bbrplus-6.x_stable/releases' | grep ${github_ver_plus} | grep 'https' | grep 'amd64.deb' | grep 'image' | awk -F '"' '{print $4}' | grep 'http')
|
||
|
||
headurl=$(check_cn $headurl)
|
||
imgurl=$(check_cn $imgurl)
|
||
|
||
download_file $headurl linux-headers-d10.deb
|
||
download_file $imgurl linux-image-d10.deb
|
||
dpkg -i linux-image-d10.deb
|
||
dpkg -i linux-headers-d10.deb
|
||
elif [[ ${bit} == "aarch64" ]]; then
|
||
#github_tag=$(curl -s 'https://api.github.com/repos/ylx2016/kernel/releases' | grep 'Ubuntu_Kernel' | grep '_latest_bbrplus_' | head -n 1 | awk -F '"' '{print $4}' | awk -F '[/]' '{print $8}')
|
||
#github_ver=$(curl -s 'http s://api.github.com/repos/ylx2016/kernel/releases' | grep ${github_tag} | grep 'deb' | grep 'headers' | awk -F '"' '{print $4}' | awk -F '[/]' '{print $9}' | awk -F '[-]' '{print $3}' | awk -F '[_]' '{print $1}')
|
||
#echo -e "获取的版本号为:${Green_font_prefix}${github_ver}${Font_color_suffix}"
|
||
kernel_version=${github_ver_plus_num}-bbrplus
|
||
detele_kernel_head
|
||
headurl=$(curl -s 'https://api.github.com/repos/UJX6N/bbrplus-6.x_stable/releases' | grep ${github_ver_plus} | grep 'https' | grep 'arm64.deb' | grep 'headers' | awk -F '"' '{print $4}')
|
||
imgurl=$(curl -s 'https://api.github.com/repos/UJX6N/bbrplus-6.x_stable/releases' | grep ${github_ver_plus} | grep 'https' | grep 'arm64.deb' | grep 'image' | awk -F '"' '{print $4}')
|
||
|
||
headurl=$(check_cn $headurl)
|
||
imgurl=$(check_cn $imgurl)
|
||
|
||
download_file $headurl linux-headers-d10.deb
|
||
download_file $imgurl linux-image-d10.deb
|
||
dpkg -i linux-image-d10.deb
|
||
dpkg -i linux-headers-d10.deb
|
||
else
|
||
echo -e "${Error} 不支持x86_64及arm64/aarch64以外的系统 !" && exit 1
|
||
fi
|
||
fi
|
||
|
||
cd .. && rm -rf bbrplusnew
|
||
detele_kernel
|
||
BBR_grub
|
||
echo -e "${Tip} ${Red_font_prefix}请检查上面是否有内核信息,无内核千万别重启${Font_color_suffix}"
|
||
echo -e "${Tip} ${Red_font_prefix}rescue不是正常内核,要排除这个${Font_color_suffix}"
|
||
echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}BBRplus${Font_color_suffix}"
|
||
check_kernel
|
||
stty erase '^H' && read -p "需要重启VPS后,才能开启BBRplus,是否现在重启 ? [Y/n] :" yn
|
||
[ -z "${yn}" ] && yn="y"
|
||
if [[ $yn == [Yy] ]]; then
|
||
echo -e "${Info} VPS 重启中..."
|
||
reboot
|
||
fi
|
||
#echo -e "${Tip} 内核安装完毕,请参考上面的信息检查是否安装成功及手动调整内核启动顺序"
|
||
|
||
}
|
||
|
||
#启用BBR+fq
|
||
startbbrfq() {
|
||
remove_bbr_lotserver
|
||
echo "net.core.default_qdisc=fq" >>/etc/sysctl.d/99-sysctl.conf
|
||
echo "net.ipv4.tcp_congestion_control=bbr" >>/etc/sysctl.d/99-sysctl.conf
|
||
sysctl --system
|
||
echo -e "${Info}BBR+FQ修改成功,重启生效!"
|
||
}
|
||
|
||
#启用BBR+fq_pie
|
||
startbbrfqpie() {
|
||
remove_bbr_lotserver
|
||
echo "net.core.default_qdisc=fq_pie" >>/etc/sysctl.d/99-sysctl.conf
|
||
echo "net.ipv4.tcp_congestion_control=bbr" >>/etc/sysctl.d/99-sysctl.conf
|
||
sysctl --system
|
||
echo -e "${Info}BBR+FQ_PIE修改成功,重启生效!"
|
||
}
|
||
|
||
#启用BBR+cake
|
||
startbbrcake() {
|
||
remove_bbr_lotserver
|
||
echo "net.core.default_qdisc=cake" >>/etc/sysctl.d/99-sysctl.conf
|
||
echo "net.ipv4.tcp_congestion_control=bbr" >>/etc/sysctl.d/99-sysctl.conf
|
||
sysctl --system
|
||
echo -e "${Info}BBR+cake修改成功,重启生效!"
|
||
}
|
||
|
||
#启用BBRplus
|
||
startbbrplus() {
|
||
remove_bbr_lotserver
|
||
echo "net.core.default_qdisc=fq" >>/etc/sysctl.d/99-sysctl.conf
|
||
echo "net.ipv4.tcp_congestion_control=bbrplus" >>/etc/sysctl.d/99-sysctl.conf
|
||
sysctl --system
|
||
echo -e "${Info}BBRplus修改成功,重启生效!"
|
||
}
|
||
|
||
#启用Lotserver
|
||
startlotserver() {
|
||
remove_bbr_lotserver
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
yum install ethtool -y
|
||
else
|
||
apt-get update || apt-get --allow-releaseinfo-change update
|
||
apt-get install ethtool -y
|
||
fi
|
||
#bash <(wget -qO- https://git.io/lotServerInstall.sh) install
|
||
#echo | bash <(wget --no-check-certificate -qO- https://raw.githubusercontent.com/1265578519/lotServer/main/lotServerInstall.sh) install
|
||
# echo | bash <(wget --no-check-certificate -qO- https://raw.githubusercontent.com/fei5seven/lotServer/master/lotServerInstall.sh) install
|
||
echo | bash <(wget --no-check-certificate -qO- https://raw.githubusercontent.com/wxlost/lotServer/master/lotServerInstall.sh) install
|
||
sed -i '/advinacc/d' /appex/etc/config
|
||
sed -i '/maxmode/d' /appex/etc/config
|
||
echo -e "advinacc=\"1\"
|
||
maxmode=\"1\"" >>/appex/etc/config
|
||
/appex/bin/lotServer.sh restart
|
||
start_menu
|
||
}
|
||
|
||
#启用BBR2+FQ
|
||
startbbr2fq() {
|
||
remove_bbr_lotserver
|
||
echo "net.core.default_qdisc=fq" >>/etc/sysctl.d/99-sysctl.conf
|
||
echo "net.ipv4.tcp_congestion_control=bbr2" >>/etc/sysctl.d/99-sysctl.conf
|
||
sysctl --system
|
||
echo -e "${Info}BBR2修改成功,重启生效!"
|
||
}
|
||
|
||
#启用BBR2+FQ_PIE
|
||
startbbr2fqpie() {
|
||
remove_bbr_lotserver
|
||
echo "net.core.default_qdisc=fq_pie" >>/etc/sysctl.d/99-sysctl.conf
|
||
echo "net.ipv4.tcp_congestion_control=bbr2" >>/etc/sysctl.d/99-sysctl.conf
|
||
sysctl --system
|
||
echo -e "${Info}BBR2修改成功,重启生效!"
|
||
}
|
||
|
||
#启用BBR2+CAKE
|
||
startbbr2cake() {
|
||
remove_bbr_lotserver
|
||
echo "net.core.default_qdisc=cake" >>/etc/sysctl.d/99-sysctl.conf
|
||
echo "net.ipv4.tcp_congestion_control=bbr2" >>/etc/sysctl.d/99-sysctl.conf
|
||
sysctl --system
|
||
echo -e "${Info}BBR2修改成功,重启生效!"
|
||
}
|
||
|
||
#开启ecn
|
||
startecn() {
|
||
sed -i '/net.ipv4.tcp_ecn/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_ecn/d' /etc/sysctl.conf
|
||
|
||
echo "net.ipv4.tcp_ecn=1" >>/etc/sysctl.d/99-sysctl.conf
|
||
sysctl --system
|
||
echo -e "${Info}开启ecn结束!"
|
||
}
|
||
|
||
#关闭ecn
|
||
closeecn() {
|
||
sed -i '/net.ipv4.tcp_ecn/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_ecn/d' /etc/sysctl.conf
|
||
|
||
echo "net.ipv4.tcp_ecn=0" >>/etc/sysctl.d/99-sysctl.conf
|
||
sysctl --system
|
||
echo -e "${Info}关闭ecn结束!"
|
||
}
|
||
|
||
#卸载bbr+锐速
|
||
remove_bbr_lotserver() {
|
||
sed -i '/net.ipv4.tcp_ecn/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.core.default_qdisc/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_congestion_control/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_ecn/d' /etc/sysctl.conf
|
||
sed -i '/net.core.default_qdisc/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_congestion_control/d' /etc/sysctl.conf
|
||
sysctl --system
|
||
|
||
rm -rf bbrmod
|
||
|
||
if [[ -e /appex/bin/lotServer.sh ]]; then
|
||
echo | bash <(wget -qO- https://raw.githubusercontent.com/fei5seven/lotServer/master/lotServerInstall.sh) uninstall
|
||
fi
|
||
clear
|
||
# echo -e "${Info}:清除bbr/lotserver加速完成。"
|
||
# sleep 1s
|
||
}
|
||
|
||
#卸载全部加速
|
||
remove_all() {
|
||
rm -rf /etc/sysctl.d/*.conf
|
||
#rm -rf /etc/sysctl.conf
|
||
#touch /etc/sysctl.conf
|
||
if [ ! -f "/etc/sysctl.conf" ]; then
|
||
touch /etc/sysctl.conf
|
||
else
|
||
cat /dev/null >/etc/sysctl.conf
|
||
fi
|
||
sysctl --system
|
||
sed -i '/DefaultTimeoutStartSec/d' /etc/systemd/system.conf
|
||
sed -i '/DefaultTimeoutStopSec/d' /etc/systemd/system.conf
|
||
sed -i '/DefaultRestartSec/d' /etc/systemd/system.conf
|
||
sed -i '/DefaultLimitCORE/d' /etc/systemd/system.conf
|
||
sed -i '/DefaultLimitNOFILE/d' /etc/systemd/system.conf
|
||
sed -i '/DefaultLimitNPROC/d' /etc/systemd/system.conf
|
||
|
||
sed -i '/soft nofile/d' /etc/security/limits.conf
|
||
sed -i '/hard nofile/d' /etc/security/limits.conf
|
||
sed -i '/soft nproc/d' /etc/security/limits.conf
|
||
sed -i '/hard nproc/d' /etc/security/limits.conf
|
||
|
||
sed -i '/ulimit -SHn/d' /etc/profile
|
||
sed -i '/ulimit -SHn/d' /etc/profile
|
||
sed -i '/required pam_limits.so/d' /etc/pam.d/common-session
|
||
|
||
systemctl daemon-reload
|
||
|
||
rm -rf bbrmod
|
||
sed -i '/net.ipv4.tcp_retries2/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_slow_start_after_idle/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_fastopen/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_ecn/d' /etc/sysctl.conf
|
||
sed -i '/net.core.default_qdisc/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_congestion_control/d' /etc/sysctl.conf
|
||
sed -i '/fs.file-max/d' /etc/sysctl.conf
|
||
sed -i '/net.core.rmem_max/d' /etc/sysctl.conf
|
||
sed -i '/net.core.wmem_max/d' /etc/sysctl.conf
|
||
sed -i '/net.core.rmem_default/d' /etc/sysctl.conf
|
||
sed -i '/net.core.wmem_default/d' /etc/sysctl.conf
|
||
sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.conf
|
||
sed -i '/net.core.somaxconn/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_tw_recycle/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_keepalive_time/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.ip_local_port_range/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_rmem/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_wmem/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_mtu_probing/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.ip_forward/d' /etc/sysctl.conf
|
||
sed -i '/fs.inotify.max_user_instances/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.ip_local_port_range/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.route.gc_timeout/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_synack_retries/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_syn_retries/d' /etc/sysctl.conf
|
||
sed -i '/net.core.somaxconn/d' /etc/sysctl.conf
|
||
sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_timestamps/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_max_orphans/d' /etc/sysctl.conf
|
||
if [[ -e /appex/bin/lotServer.sh ]]; then
|
||
bash <(wget -qO- https://raw.githubusercontent.com/fei5seven/lotServer/master/lotServerInstall.sh) uninstall
|
||
fi
|
||
clear
|
||
echo -e "${Info}:清除加速完成。"
|
||
sleep 1s
|
||
}
|
||
|
||
#优化系统配置
|
||
optimizing_system() {
|
||
if [ ! -f "/etc/sysctl.conf" ]; then
|
||
touch /etc/sysctl.conf
|
||
fi
|
||
sed -i '/net.ipv4.tcp_retries2/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_slow_start_after_idle/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_fastopen/d' /etc/sysctl.conf
|
||
sed -i '/fs.file-max/d' /etc/sysctl.conf
|
||
sed -i '/fs.inotify.max_user_instances/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.ip_local_port_range/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.route.gc_timeout/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_synack_retries/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_syn_retries/d' /etc/sysctl.conf
|
||
sed -i '/net.core.somaxconn/d' /etc/sysctl.conf
|
||
sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_timestamps/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.tcp_max_orphans/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv4.ip_forward/d' /etc/sysctl.conf
|
||
|
||
echo "net.ipv4.tcp_retries2 = 8
|
||
net.ipv4.tcp_slow_start_after_idle = 0
|
||
fs.file-max = 1000000
|
||
fs.inotify.max_user_instances = 8192
|
||
net.ipv4.tcp_syncookies = 1
|
||
net.ipv4.tcp_fin_timeout = 30
|
||
net.ipv4.tcp_tw_reuse = 1
|
||
net.ipv4.ip_local_port_range = 1024 65000
|
||
net.ipv4.tcp_max_syn_backlog = 16384
|
||
net.ipv4.tcp_max_tw_buckets = 6000
|
||
net.ipv4.route.gc_timeout = 100
|
||
net.ipv4.tcp_syn_retries = 1
|
||
net.ipv4.tcp_synack_retries = 1
|
||
net.core.somaxconn = 32768
|
||
net.core.netdev_max_backlog = 32768
|
||
net.ipv4.tcp_timestamps = 0
|
||
net.ipv4.tcp_max_orphans = 32768
|
||
# forward ipv4
|
||
#net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
|
||
sysctl -p
|
||
echo "* soft nofile 1000000
|
||
* hard nofile 1000000" >/etc/security/limits.conf
|
||
echo "ulimit -SHn 1000000" >>/etc/profile
|
||
read -p "需要重启VPS后,才能生效系统优化配置,是否现在重启 ? [Y/n] :" yn
|
||
[ -z "${yn}" ] && yn="y"
|
||
if [[ $yn == [Yy] ]]; then
|
||
echo -e "${Info} VPS 重启中..."
|
||
reboot
|
||
fi
|
||
}
|
||
|
||
optimizing_system_johnrosen1() {
|
||
if [ ! -f "/etc/sysctl.d/99-sysctl.conf" ]; then
|
||
touch /etc/sysctl.d/99-sysctl.conf
|
||
fi
|
||
sed -i '/net.ipv4.tcp_fack/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_early_retrans/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.neigh.default.unres_qlen/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_max_orphans/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.netfilter.nf_conntrack_buckets/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/kernel.pid_max/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/vm.nr_hugepages/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.core.optmem_max/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.all.route_localnet/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.ip_forward/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.all.forwarding/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.default.forwarding/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.all.forwarding/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.default.forwarding/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.lo.forwarding/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.all.disable_ipv6/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.default.disable_ipv6/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.lo.disable_ipv6/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.all.accept_ra/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.default.accept_ra/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.core.netdev_budget/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.core.netdev_budget_usecs/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/fs.file-max /d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.core.rmem_max/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.core.wmem_max/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.core.rmem_default/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.core.wmem_default/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.core.somaxconn/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.icmp_echo_ignore_all/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.icmp_echo_ignore_broadcasts/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.icmp_ignore_bogus_error_responses/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.all.accept_redirects/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.default.accept_redirects/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.all.secure_redirects/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.default.secure_redirects/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.all.send_redirects/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.default.send_redirects/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.default.rp_filter/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.all.rp_filter/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_keepalive_time/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_keepalive_intvl/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_keepalive_probes/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_synack_retries/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_rfc1337/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_timestamps/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.ip_local_port_range/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_fastopen/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_rmem/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_wmem/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.udp_rmem_min/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.udp_wmem_min/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_mtu_probing/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.all.arp_ignore /d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.default.arp_ignore/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.all.arp_announce/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.conf.default.arp_announce/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_autocorking/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_slow_start_after_idle/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.core.default_qdisc/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_congestion_control/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_notsent_lowat/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_no_metrics_save/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_ecn/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_ecn_fallback/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_frto/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.all.accept_redirects/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.default.accept_redirects/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/vm.swappiness/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.ip_unprivileged_port_start/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/vm.overcommit_memory/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.neigh.default.gc_thresh3/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.neigh.default.gc_thresh2/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.neigh.default.gc_thresh1/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.neigh.default.gc_thresh3/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.neigh.default.gc_thresh2/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.neigh.default.gc_thresh1/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.netfilter.nf_conntrack_max/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.nf_conntrack_max/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.netfilter.nf_conntrack_tcp_timeout_fin_wait/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.netfilter.nf_conntrack_tcp_timeout_time_wait/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.netfilter.nf_conntrack_tcp_timeout_close_wait/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.netfilter.nf_conntrack_tcp_timeout_established/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/fs.inotify.max_user_instances/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/fs.inotify.max_user_watches/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_low_latency/d' /etc/sysctl.d/99-sysctl.conf
|
||
|
||
cat >'/etc/sysctl.d/99-sysctl.conf' <<EOF
|
||
net.ipv4.tcp_fack = 1
|
||
net.ipv4.tcp_early_retrans = 3
|
||
net.ipv4.neigh.default.unres_qlen=10000
|
||
net.ipv4.conf.all.route_localnet=1
|
||
net.ipv4.ip_forward = 1
|
||
net.ipv4.conf.all.forwarding = 1
|
||
net.ipv4.conf.default.forwarding = 1
|
||
#net.ipv6.conf.all.forwarding = 1 #awsipv6问题
|
||
net.ipv6.conf.default.forwarding = 1
|
||
net.ipv6.conf.lo.forwarding = 1
|
||
net.ipv6.conf.all.disable_ipv6 = 0
|
||
net.ipv6.conf.default.disable_ipv6 = 0
|
||
net.ipv6.conf.lo.disable_ipv6 = 0
|
||
net.ipv6.conf.all.accept_ra = 2
|
||
net.ipv6.conf.default.accept_ra = 2
|
||
net.core.netdev_max_backlog = 100000
|
||
net.core.netdev_budget = 50000
|
||
net.core.netdev_budget_usecs = 5000
|
||
#fs.file-max = 51200
|
||
net.core.rmem_max = 67108864
|
||
net.core.wmem_max = 67108864
|
||
net.core.rmem_default = 67108864
|
||
net.core.wmem_default = 67108864
|
||
net.core.optmem_max = 65536
|
||
net.core.somaxconn = 1000000
|
||
net.ipv4.icmp_echo_ignore_all = 0
|
||
net.ipv4.icmp_echo_ignore_broadcasts = 1
|
||
net.ipv4.icmp_ignore_bogus_error_responses = 1
|
||
net.ipv4.conf.all.accept_redirects = 0
|
||
net.ipv4.conf.default.accept_redirects = 0
|
||
net.ipv4.conf.all.secure_redirects = 0
|
||
net.ipv4.conf.default.secure_redirects = 0
|
||
net.ipv4.conf.all.send_redirects = 0
|
||
net.ipv4.conf.default.send_redirects = 0
|
||
net.ipv4.conf.default.rp_filter = 0
|
||
net.ipv4.conf.all.rp_filter = 0
|
||
net.ipv4.tcp_keepalive_time = 600
|
||
net.ipv4.tcp_keepalive_intvl = 15
|
||
net.ipv4.tcp_keepalive_probes = 2
|
||
net.ipv4.tcp_synack_retries = 1
|
||
net.ipv4.tcp_syncookies = 1
|
||
net.ipv4.tcp_rfc1337 = 0
|
||
net.ipv4.tcp_timestamps = 1
|
||
net.ipv4.tcp_tw_reuse = 0
|
||
net.ipv4.tcp_fin_timeout = 15
|
||
net.ipv4.ip_local_port_range = 1024 65535
|
||
net.ipv4.tcp_max_tw_buckets = 5000
|
||
#net.ipv4.tcp_fastopen = 3
|
||
net.ipv4.tcp_rmem = 4096 87380 67108864
|
||
net.ipv4.tcp_wmem = 4096 65536 67108864
|
||
net.ipv4.udp_rmem_min = 8192
|
||
net.ipv4.udp_wmem_min = 8192
|
||
net.ipv4.tcp_mtu_probing = 1
|
||
net.ipv4.tcp_autocorking = 0
|
||
net.ipv4.tcp_slow_start_after_idle = 0
|
||
net.ipv4.tcp_max_syn_backlog = 819200
|
||
net.ipv4.tcp_notsent_lowat = 16384
|
||
net.ipv4.tcp_no_metrics_save = 0
|
||
net.ipv4.tcp_ecn = 1
|
||
net.ipv4.tcp_ecn_fallback = 1
|
||
net.ipv4.tcp_frto = 0
|
||
net.ipv6.conf.all.accept_redirects = 0
|
||
net.ipv6.conf.default.accept_redirects = 0
|
||
net.ipv4.neigh.default.gc_thresh3=8192
|
||
net.ipv4.neigh.default.gc_thresh2=4096
|
||
net.ipv4.neigh.default.gc_thresh1=2048
|
||
net.ipv6.neigh.default.gc_thresh3=8192
|
||
net.ipv6.neigh.default.gc_thresh2=4096
|
||
net.ipv6.neigh.default.gc_thresh1=2048
|
||
net.ipv4.tcp_orphan_retries = 1
|
||
net.ipv4.tcp_retries2 = 5
|
||
vm.swappiness = 1
|
||
vm.overcommit_memory = 1
|
||
kernel.pid_max=64000
|
||
net.netfilter.nf_conntrack_max = 262144
|
||
net.nf_conntrack_max = 262144
|
||
## Enable bbr
|
||
net.core.default_qdisc = fq
|
||
net.ipv4.tcp_congestion_control = bbr
|
||
net.ipv4.tcp_low_latency = 1
|
||
EOF
|
||
sysctl -p
|
||
sysctl --system
|
||
echo always >/sys/kernel/mm/transparent_hugepage/enabled
|
||
|
||
cat >'/etc/systemd/system.conf' <<EOF
|
||
[Manager]
|
||
#DefaultTimeoutStartSec=90s
|
||
DefaultTimeoutStopSec=30s
|
||
#DefaultRestartSec=100ms
|
||
DefaultLimitCORE=infinity
|
||
DefaultLimitNOFILE=infinity
|
||
DefaultLimitNPROC=infinity
|
||
DefaultTasksMax=infinity
|
||
EOF
|
||
|
||
cat >'/etc/security/limits.conf' <<EOF
|
||
root soft nofile 1000000
|
||
root hard nofile 1000000
|
||
root soft nproc unlimited
|
||
root hard nproc unlimited
|
||
root soft core unlimited
|
||
root hard core unlimited
|
||
root hard memlock unlimited
|
||
root soft memlock unlimited
|
||
* soft nofile 1000000
|
||
* hard nofile 1000000
|
||
* soft nproc unlimited
|
||
* hard nproc unlimited
|
||
* soft core unlimited
|
||
* hard core unlimited
|
||
* hard memlock unlimited
|
||
* soft memlock unlimited
|
||
EOF
|
||
|
||
sed -i '/ulimit -SHn/d' /etc/profile
|
||
sed -i '/ulimit -SHu/d' /etc/profile
|
||
echo "ulimit -SHn 1000000" >>/etc/profile
|
||
|
||
if grep -q "pam_limits.so" /etc/pam.d/common-session; then
|
||
:
|
||
else
|
||
sed -i '/required pam_limits.so/d' /etc/pam.d/common-session
|
||
echo "session required pam_limits.so" >>/etc/pam.d/common-session
|
||
fi
|
||
systemctl daemon-reload
|
||
echo -e "${Info}优化方案2应用结束,可能需要重启!"
|
||
}
|
||
|
||
optimizing_ddcc() {
|
||
sed -i '/net.ipv4.conf.all.rp_filter/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.d/99-sysctl.conf
|
||
|
||
echo "net.ipv4.conf.all.rp_filter = 1" >>/etc/sysctl.d/99-sysctl.conf
|
||
echo "net.ipv4.tcp_syncookies = 1" >>/etc/sysctl.d/99-sysctl.conf
|
||
echo "net.ipv4.tcp_max_syn_backlog = 1024" >>/etc/sysctl.d/99-sysctl.conf
|
||
sysctl -p
|
||
sysctl --system
|
||
}
|
||
|
||
#更新脚本
|
||
Update_Shell() {
|
||
local shell_file
|
||
shell_file="$(readlink -f "$0")"
|
||
local shell_url="https://raw.githubusercontent.com/ylx2016/Linux-NetSpeed/master/tcp.sh"
|
||
|
||
# 下载最新版本的脚本
|
||
wget -O "/tmp/tcp.sh" "$shell_url" &>/dev/null
|
||
|
||
# 比较本地和远程脚本的 md5 值
|
||
local md5_local
|
||
local md5_remote
|
||
md5_local="$(md5sum "$shell_file" | awk '{print $1}')"
|
||
md5_remote="$(md5sum /tmp/tcp.sh | awk '{print $1}')"
|
||
|
||
if [ "$md5_local" != "$md5_remote" ]; then
|
||
# 替换本地脚本文件
|
||
cp "/tmp/tcp.sh" "$shell_file"
|
||
chmod +x "$shell_file"
|
||
|
||
echo "脚本已更新,请重新运行。"
|
||
exit 0
|
||
else
|
||
echo "脚本是最新版本,无需更新。"
|
||
fi
|
||
}
|
||
|
||
#切换到不卸载内核版本
|
||
gototcpx() {
|
||
clear
|
||
wget -O tcpx.sh "https://github.com/ylx2016/Linux-NetSpeed/raw/master/tcpx.sh" && chmod +x tcpx.sh && ./tcpx.sh
|
||
}
|
||
|
||
#切换到秋水逸冰BBR安装脚本
|
||
gototeddysun_bbr() {
|
||
clear
|
||
wget https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
|
||
}
|
||
|
||
#切换到一键DD安装系统脚本 新手勿入
|
||
gotodd() {
|
||
clear
|
||
echo DD使用git.beta.gs的脚本,知悉
|
||
sleep 1.5
|
||
wget -O NewReinstall.sh https://github.com/fcurrk/reinstall/raw/master/NewReinstall.sh && chmod a+x NewReinstall.sh && bash NewReinstall.sh
|
||
#wget -qO ~/Network-Reinstall-System-Modify.sh 'https://github.com/ylx2016/reinstall/raw/master/Network-Reinstall-System-Modify.sh' && chmod a+x ~/Network-Reinstall-System-Modify.sh && bash ~/Network-Reinstall-System-Modify.sh -UI_Options
|
||
}
|
||
|
||
#禁用IPv6
|
||
closeipv6() {
|
||
clear
|
||
sed -i '/net.ipv6.conf.all.disable_ipv6/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.default.disable_ipv6/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.lo.disable_ipv6/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.all.disable_ipv6/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv6.conf.default.disable_ipv6/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv6.conf.lo.disable_ipv6/d' /etc/sysctl.conf
|
||
|
||
echo "net.ipv6.conf.all.disable_ipv6 = 1
|
||
net.ipv6.conf.default.disable_ipv6 = 1
|
||
net.ipv6.conf.lo.disable_ipv6 = 1" >>/etc/sysctl.d/99-sysctl.conf
|
||
sysctl --system
|
||
echo -e "${Info}禁用IPv6结束,可能需要重启!"
|
||
}
|
||
|
||
#开启IPv6
|
||
openipv6() {
|
||
clear
|
||
sed -i '/net.ipv6.conf.all.disable_ipv6/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.default.disable_ipv6/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.lo.disable_ipv6/d' /etc/sysctl.d/99-sysctl.conf
|
||
sed -i '/net.ipv6.conf.all.disable_ipv6/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv6.conf.default.disable_ipv6/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv6.conf.lo.disable_ipv6/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv6.conf.all.accept_ra/d' /etc/sysctl.conf
|
||
sed -i '/net.ipv6.conf.default.accept_ra/d' /etc/sysctl.conf
|
||
|
||
echo "net.ipv6.conf.all.disable_ipv6 = 0
|
||
net.ipv6.conf.default.disable_ipv6 = 0
|
||
net.ipv6.conf.lo.disable_ipv6 = 0
|
||
net.ipv6.conf.all.accept_ra = 2
|
||
net.ipv6.conf.default.accept_ra = 2" >>/etc/sysctl.d/99-sysctl.conf
|
||
sysctl --system
|
||
echo -e "${Info}开启IPv6结束,可能需要重启!"
|
||
}
|
||
|
||
#开始菜单
|
||
start_menu() {
|
||
clear
|
||
echo && echo -e " TCP加速 一键安装管理脚本 ${Red_font_prefix}[v${sh_ver}]${Font_color_suffix} from blog.ylx.me 母鸡慎用
|
||
${Green_font_prefix}0.${Font_color_suffix} 升级脚本
|
||
${Green_font_prefix}9.${Font_color_suffix} 切换到不卸载内核版本 ${Green_font_prefix}10.${Font_color_suffix} 切换到一键DD系统脚本
|
||
${Green_font_prefix}1.${Font_color_suffix} 安装 BBR原版内核
|
||
${Green_font_prefix}2.${Font_color_suffix} 安装 BBRplus版内核 ${Green_font_prefix}5.${Font_color_suffix} 安装 BBRplus新版内核
|
||
${Green_font_prefix}3.${Font_color_suffix} 安装 Lotserver(锐速)内核
|
||
${Green_font_prefix}11.${Font_color_suffix} 使用BBR+FQ加速 ${Green_font_prefix}12.${Font_color_suffix} 使用BBR+FQ_PIE加速
|
||
${Green_font_prefix}13.${Font_color_suffix} 使用BBR+CAKE加速
|
||
${Green_font_prefix}14.${Font_color_suffix} 使用BBR2+FQ加速 ${Green_font_prefix}15.${Font_color_suffix} 使用BBR2+FQ_PIE加速
|
||
${Green_font_prefix}16.${Font_color_suffix} 使用BBR2+CAKE加速
|
||
${Green_font_prefix}17.${Font_color_suffix} 开启ECN ${Green_font_prefix}18.${Font_color_suffix} 关闭ECN
|
||
${Green_font_prefix}19.${Font_color_suffix} 使用BBRplus+FQ版加速
|
||
${Green_font_prefix}20.${Font_color_suffix} 使用Lotserver(锐速)加速
|
||
${Green_font_prefix}21.${Font_color_suffix} 系统配置优化 ${Green_font_prefix}22.${Font_color_suffix} 应用优化方案2
|
||
${Green_font_prefix}23.${Font_color_suffix} 禁用IPv6 ${Green_font_prefix}24.${Font_color_suffix} 开启IPv6
|
||
${Green_font_prefix}25.${Font_color_suffix} 卸载全部加速 ${Green_font_prefix}99.${Font_color_suffix} 退出脚本
|
||
————————————————————————————————————————————————————————————————" &&
|
||
check_status
|
||
get_system_info
|
||
echo -e " 系统信息: ${Font_color_suffix}$opsy ${Green_font_prefix}$virtual${Font_color_suffix} $arch ${Green_font_prefix}$kern${Font_color_suffix} "
|
||
if [[ ${kernel_status} == "noinstall" ]]; then
|
||
echo -e " 当前状态: ${Green_font_prefix}未安装${Font_color_suffix} 加速内核 ${Red_font_prefix}请先安装内核${Font_color_suffix}"
|
||
else
|
||
echo -e " 当前状态: ${Green_font_prefix}已安装${Font_color_suffix} ${Red_font_prefix}${kernel_status}${Font_color_suffix} 加速内核 , ${Green_font_prefix}${run_status}${Font_color_suffix}"
|
||
|
||
fi
|
||
echo -e " 当前拥塞控制算法为: ${Green_font_prefix}${net_congestion_control}${Font_color_suffix} 当前队列算法为: ${Green_font_prefix}${net_qdisc}${Font_color_suffix} "
|
||
|
||
read -p " 请输入数字 :" num
|
||
case "$num" in
|
||
0)
|
||
Update_Shell
|
||
;;
|
||
1)
|
||
check_sys_bbr
|
||
;;
|
||
2)
|
||
check_sys_bbrplus
|
||
;;
|
||
3)
|
||
check_sys_Lotsever
|
||
;;
|
||
5)
|
||
check_sys_bbrplusnew
|
||
;;
|
||
9)
|
||
gototcpx
|
||
;;
|
||
10)
|
||
gotodd
|
||
;;
|
||
11)
|
||
startbbrfq
|
||
;;
|
||
12)
|
||
startbbrfqpie
|
||
;;
|
||
13)
|
||
startbbrcake
|
||
;;
|
||
14)
|
||
startbbr2fq
|
||
;;
|
||
15)
|
||
startbbr2fqpie
|
||
;;
|
||
16)
|
||
startbbr2cake
|
||
;;
|
||
17)
|
||
startecn
|
||
;;
|
||
18)
|
||
closeecn
|
||
;;
|
||
19)
|
||
startbbrplus
|
||
;;
|
||
20)
|
||
startlotserver
|
||
;;
|
||
21)
|
||
optimizing_system
|
||
;;
|
||
22)
|
||
optimizing_system_johnrosen1
|
||
;;
|
||
23)
|
||
closeipv6
|
||
;;
|
||
24)
|
||
openipv6
|
||
;;
|
||
25)
|
||
remove_all
|
||
;;
|
||
26)
|
||
optimizing_ddcc
|
||
;;
|
||
99)
|
||
exit 1
|
||
;;
|
||
*)
|
||
clear
|
||
echo -e "${Error}:请输入正确数字 [0-99]"
|
||
sleep 5s
|
||
start_menu
|
||
;;
|
||
esac
|
||
}
|
||
#############内核管理组件#############
|
||
|
||
#删除多余内核
|
||
detele_kernel() {
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
rpm_total=$(rpm -qa | grep kernel | grep -v "${kernel_version}" | grep -v "noarch" | wc -l)
|
||
if [ "${rpm_total}" ] >"1"; then
|
||
echo -e "检测到 ${rpm_total} 个其余内核,开始卸载..."
|
||
for ((integer = 1; integer <= ${rpm_total}; integer++)); do
|
||
rpm_del=$(rpm -qa | grep kernel | grep -v "${kernel_version}" | grep -v "noarch" | head -${integer})
|
||
echo -e "开始卸载 ${rpm_del} 内核..."
|
||
rpm --nodeps -e ${rpm_del}
|
||
echo -e "卸载 ${rpm_del} 内核卸载完成,继续..."
|
||
done
|
||
echo --nodeps -e "内核卸载完毕,继续..."
|
||
else
|
||
echo -e " 检测到 内核 数量不正确,请检查 !" && exit 1
|
||
fi
|
||
elif [[ "${OS_type}" == "Debian" ]]; then
|
||
deb_total=$(dpkg -l | grep linux-image | awk '{print $2}' | grep -v "${kernel_version}" | wc -l)
|
||
if [ "${deb_total}" ] >"1"; then
|
||
echo -e "检测到 ${deb_total} 个其余内核,开始卸载..."
|
||
for ((integer = 1; integer <= ${deb_total}; integer++)); do
|
||
deb_del=$(dpkg -l | grep linux-image | awk '{print $2}' | grep -v "${kernel_version}" | head -${integer})
|
||
echo -e "开始卸载 ${deb_del} 内核..."
|
||
apt-get purge -y ${deb_del}
|
||
apt-get autoremove -y
|
||
echo -e "卸载 ${deb_del} 内核卸载完成,继续..."
|
||
done
|
||
echo -e "内核卸载完毕,继续..."
|
||
else
|
||
echo -e " 检测到 内核 数量不正确,请检查 !" && exit 1
|
||
fi
|
||
fi
|
||
}
|
||
|
||
detele_kernel_head() {
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
rpm_total=$(rpm -qa | grep kernel-headers | grep -v "${kernel_version}" | grep -v "noarch" | wc -l)
|
||
if [ "${rpm_total}" ] >"1"; then
|
||
echo -e "检测到 ${rpm_total} 个其余head内核,开始卸载..."
|
||
for ((integer = 1; integer <= ${rpm_total}; integer++)); do
|
||
rpm_del=$(rpm -qa | grep kernel-headers | grep -v "${kernel_version}" | grep -v "noarch" | head -${integer})
|
||
echo -e "开始卸载 ${rpm_del} headers内核..."
|
||
rpm --nodeps -e ${rpm_del}
|
||
echo -e "卸载 ${rpm_del} 内核卸载完成,继续..."
|
||
done
|
||
echo --nodeps -e "内核卸载完毕,继续..."
|
||
else
|
||
echo -e " 检测到 内核 数量不正确,请检查 !" && exit 1
|
||
fi
|
||
elif [[ "${OS_type}" == "Debian" ]]; then
|
||
deb_total=$(dpkg -l | grep linux-headers | awk '{print $2}' | grep -v "${kernel_version}" | wc -l)
|
||
if [ "${deb_total}" ] >"1"; then
|
||
echo -e "检测到 ${deb_total} 个其余head内核,开始卸载..."
|
||
for ((integer = 1; integer <= ${deb_total}; integer++)); do
|
||
deb_del=$(dpkg -l | grep linux-headers | awk '{print $2}' | grep -v "${kernel_version}" | head -${integer})
|
||
echo -e "开始卸载 ${deb_del} headers内核..."
|
||
apt-get purge -y ${deb_del}
|
||
apt-get autoremove -y
|
||
echo -e "卸载 ${deb_del} 内核卸载完成,继续..."
|
||
done
|
||
echo -e "内核卸载完毕,继续..."
|
||
else
|
||
echo -e " 检测到 内核 数量不正确,请检查 !" && exit 1
|
||
fi
|
||
fi
|
||
}
|
||
|
||
#更新引导
|
||
BBR_grub() {
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
if [[ ${version} == "6" ]]; then
|
||
if [ -f "/boot/grub/grub.conf" ]; then
|
||
sed -i 's/^default=.*/default=0/g' /boot/grub/grub.conf
|
||
elif [ -f "/boot/grub/grub.cfg" ]; then
|
||
grub-mkconfig -o /boot/grub/grub.cfg
|
||
grub-set-default 0
|
||
elif [ -f "/boot/efi/EFI/centos/grub.cfg" ]; then
|
||
grub-mkconfig -o /boot/efi/EFI/centos/grub.cfg
|
||
grub-set-default 0
|
||
elif [ -f "/boot/efi/EFI/redhat/grub.cfg" ]; then
|
||
grub-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
|
||
grub-set-default 0
|
||
else
|
||
echo -e "${Error} grub.conf/grub.cfg 找不到,请检查."
|
||
exit
|
||
fi
|
||
elif [[ ${version} == "7" ]]; then
|
||
if [ -f "/boot/grub2/grub.cfg" ]; then
|
||
grub2-mkconfig -o /boot/grub2/grub.cfg
|
||
grub2-set-default 0
|
||
elif [ -f "/boot/efi/EFI/centos/grub.cfg" ]; then
|
||
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
|
||
grub2-set-default 0
|
||
elif [ -f "/boot/efi/EFI/redhat/grub.cfg" ]; then
|
||
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
|
||
grub2-set-default 0
|
||
else
|
||
echo -e "${Error} grub.cfg 找不到,请检查."
|
||
exit
|
||
fi
|
||
elif [[ ${version} == "8" ]]; then
|
||
if [ -f "/boot/grub2/grub.cfg" ]; then
|
||
grub2-mkconfig -o /boot/grub2/grub.cfg
|
||
grub2-set-default 0
|
||
elif [ -f "/boot/efi/EFI/centos/grub.cfg" ]; then
|
||
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
|
||
grub2-set-default 0
|
||
elif [ -f "/boot/efi/EFI/redhat/grub.cfg" ]; then
|
||
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
|
||
grub2-set-default 0
|
||
else
|
||
echo -e "${Error} grub.cfg 找不到,请检查."
|
||
exit
|
||
fi
|
||
grubby --info=ALL | awk -F= '$1=="kernel" {print i++ " : " $2}'
|
||
fi
|
||
elif [[ "${OS_type}" == "Debian" ]]; then
|
||
if _exists "update-grub"; then
|
||
update-grub
|
||
elif [ -f "/usr/sbin/update-grub" ]; then
|
||
/usr/sbin/update-grub
|
||
else
|
||
apt install grub2-common -y
|
||
update-grub
|
||
fi
|
||
#exit 1
|
||
fi
|
||
}
|
||
|
||
#简单的检查内核
|
||
check_kernel() {
|
||
if [[ -z "$(find /boot -type f -name 'vmlinuz-*' ! -name 'vmlinuz-*rescue*')" ]]; then
|
||
echo -e "\033[0;31m警告: 未发现内核文件,请勿重启系统,不卸载内核版本选择30安装默认内核救急!\033[0m"
|
||
else
|
||
echo -e "\033[0;32m发现内核文件,看起来可以重启。\033[0m"
|
||
fi
|
||
}
|
||
|
||
#############内核管理组件#############
|
||
|
||
#############系统检测组件#############
|
||
|
||
#检查系统
|
||
check_sys() {
|
||
if [[ -f /etc/redhat-release ]]; then
|
||
release="centos"
|
||
elif grep -qi "debian" /etc/issue; then
|
||
release="debian"
|
||
elif grep -qi "ubuntu" /etc/issue; then
|
||
release="ubuntu"
|
||
elif grep -qi -E "centos|red hat|redhat" /etc/issue || grep -qi -E "centos|red hat|redhat" /proc/version; then
|
||
release="centos"
|
||
fi
|
||
|
||
if [[ -f /etc/debian_version ]]; then
|
||
OS_type="Debian"
|
||
echo "检测为Debian通用系统,判断有误请反馈"
|
||
elif [[ -f /etc/redhat-release || -f /etc/centos-release || -f /etc/fedora-release ]]; then
|
||
OS_type="CentOS"
|
||
echo "检测为CentOS通用系统,判断有误请反馈"
|
||
else
|
||
echo "Unknown"
|
||
fi
|
||
|
||
#from https://github.com/oooldking
|
||
|
||
_exists() {
|
||
local cmd="$1"
|
||
if eval type type >/dev/null 2>&1; then
|
||
eval type "$cmd" >/dev/null 2>&1
|
||
elif command >/dev/null 2>&1; then
|
||
command -v "$cmd" >/dev/null 2>&1
|
||
else
|
||
which "$cmd" >/dev/null 2>&1
|
||
fi
|
||
local rt=$?
|
||
return ${rt}
|
||
}
|
||
|
||
get_opsy() {
|
||
if [ -f /etc/os-release ]; then
|
||
awk -F'[= "]' '/PRETTY_NAME/{print $3,$4,$5}' /etc/os-release
|
||
elif [ -f /etc/lsb-release ]; then
|
||
awk -F'[="]+' '/DESCRIPTION/{print $2}' /etc/lsb-release
|
||
elif [ -f /etc/system-release ]; then
|
||
cat /etc/system-release | awk '{print $1,$2}'
|
||
fi
|
||
}
|
||
|
||
get_system_info() {
|
||
opsy=$(get_opsy)
|
||
arch=$(uname -m)
|
||
kern=$(uname -r)
|
||
virt_check
|
||
}
|
||
# from LemonBench
|
||
virt_check() {
|
||
if [ -f "/usr/bin/systemd-detect-virt" ]; then
|
||
Var_VirtType="$(/usr/bin/systemd-detect-virt)"
|
||
# 虚拟机检测
|
||
if [ "${Var_VirtType}" = "qemu" ]; then
|
||
virtual="QEMU"
|
||
elif [ "${Var_VirtType}" = "kvm" ]; then
|
||
virtual="KVM"
|
||
elif [ "${Var_VirtType}" = "zvm" ]; then
|
||
virtual="S390 Z/VM"
|
||
elif [ "${Var_VirtType}" = "vmware" ]; then
|
||
virtual="VMware"
|
||
elif [ "${Var_VirtType}" = "microsoft" ]; then
|
||
virtual="Microsoft Hyper-V"
|
||
elif [ "${Var_VirtType}" = "xen" ]; then
|
||
virtual="Xen Hypervisor"
|
||
elif [ "${Var_VirtType}" = "bochs" ]; then
|
||
virtual="BOCHS"
|
||
elif [ "${Var_VirtType}" = "uml" ]; then
|
||
virtual="User-mode Linux"
|
||
elif [ "${Var_VirtType}" = "parallels" ]; then
|
||
virtual="Parallels"
|
||
elif [ "${Var_VirtType}" = "bhyve" ]; then
|
||
virtual="FreeBSD Hypervisor"
|
||
# 容器虚拟化检测
|
||
elif [ "${Var_VirtType}" = "openvz" ]; then
|
||
virtual="OpenVZ"
|
||
elif [ "${Var_VirtType}" = "lxc" ]; then
|
||
virtual="LXC"
|
||
elif [ "${Var_VirtType}" = "lxc-libvirt" ]; then
|
||
virtual="LXC (libvirt)"
|
||
elif [ "${Var_VirtType}" = "systemd-nspawn" ]; then
|
||
virtual="Systemd nspawn"
|
||
elif [ "${Var_VirtType}" = "docker" ]; then
|
||
virtual="Docker"
|
||
elif [ "${Var_VirtType}" = "rkt" ]; then
|
||
virtual="RKT"
|
||
# 特殊处理
|
||
elif [ -c "/dev/lxss" ]; then # 处理WSL虚拟化
|
||
Var_VirtType="wsl"
|
||
virtual="Windows Subsystem for Linux (WSL)"
|
||
# 未匹配到任何结果, 或者非虚拟机
|
||
elif [ "${Var_VirtType}" = "none" ]; then
|
||
Var_VirtType="dedicated"
|
||
virtual="None"
|
||
local Var_BIOSVendor
|
||
Var_BIOSVendor="$(dmidecode -s bios-vendor)"
|
||
if [ "${Var_BIOSVendor}" = "SeaBIOS" ]; then
|
||
Var_VirtType="Unknown"
|
||
virtual="Unknown with SeaBIOS BIOS"
|
||
else
|
||
Var_VirtType="dedicated"
|
||
virtual="Dedicated with ${Var_BIOSVendor} BIOS"
|
||
fi
|
||
fi
|
||
elif [ ! -f "/usr/sbin/virt-what" ]; then
|
||
Var_VirtType="Unknown"
|
||
virtual="[Error: virt-what not found !]"
|
||
elif [ -f "/.dockerenv" ]; then # 处理Docker虚拟化
|
||
Var_VirtType="docker"
|
||
virtual="Docker"
|
||
elif [ -c "/dev/lxss" ]; then # 处理WSL虚拟化
|
||
Var_VirtType="wsl"
|
||
virtual="Windows Subsystem for Linux (WSL)"
|
||
else # 正常判断流程
|
||
Var_VirtType="$(virt-what | xargs)"
|
||
local Var_VirtTypeCount
|
||
Var_VirtTypeCount="$(echo $Var_VirtTypeCount | wc -l)"
|
||
if [ "${Var_VirtTypeCount}" -gt "1" ]; then # 处理嵌套虚拟化
|
||
virtual="echo ${Var_VirtType}"
|
||
Var_VirtType="$(echo ${Var_VirtType} | head -n1)" # 使用检测到的第一种虚拟化继续做判断
|
||
elif [ "${Var_VirtTypeCount}" -eq "1" ] && [ "${Var_VirtType}" != "" ]; then # 只有一种虚拟化
|
||
virtual="${Var_VirtType}"
|
||
else
|
||
local Var_BIOSVendor
|
||
Var_BIOSVendor="$(dmidecode -s bios-vendor)"
|
||
if [ "${Var_BIOSVendor}" = "SeaBIOS" ]; then
|
||
Var_VirtType="Unknown"
|
||
virtual="Unknown with SeaBIOS BIOS"
|
||
else
|
||
Var_VirtType="dedicated"
|
||
virtual="Dedicated with ${Var_BIOSVendor} BIOS"
|
||
fi
|
||
fi
|
||
fi
|
||
}
|
||
|
||
#检查依赖
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
# 检查是否安装了 ca-certificates 包,如果未安装则安装
|
||
if ! rpm -q ca-certificates >/dev/null; then
|
||
echo '正在安装 ca-certificates 包...'
|
||
yum install ca-certificates -y
|
||
update-ca-trust force-enable
|
||
fi
|
||
echo 'CA证书检查OK'
|
||
|
||
# 检查并安装 curl、wget 和 dmidecode 包
|
||
for pkg in curl wget dmidecode redhat-lsb-core; do
|
||
if ! type $pkg >/dev/null 2>&1; then
|
||
echo "未安装 $pkg,正在安装..."
|
||
yum install $pkg -y
|
||
else
|
||
echo "$pkg 已安装。"
|
||
fi
|
||
done
|
||
|
||
if [ -x "$(command -v lsb_release)" ]; then
|
||
echo "lsb_release 已安装"
|
||
else
|
||
echo "lsb_release 未安装,现在开始安装..."
|
||
yum install epel-release -y
|
||
yum install redhat-lsb-core -y
|
||
fi
|
||
|
||
elif [[ "${OS_type}" == "Debian" ]]; then
|
||
# 检查是否安装了 ca-certificates 包,如果未安装则安装
|
||
if ! dpkg-query -W ca-certificates >/dev/null; then
|
||
echo '正在安装 ca-certificates 包...'
|
||
apt-get update || apt-get --allow-releaseinfo-change update && apt-get install ca-certificates -y
|
||
update-ca-certificates
|
||
fi
|
||
echo 'CA证书检查OK'
|
||
|
||
# 检查并安装 curl、wget 和 dmidecode 包
|
||
for pkg in curl wget dmidecode; do
|
||
if ! type $pkg >/dev/null 2>&1; then
|
||
echo "未安装 $pkg,正在安装..."
|
||
apt-get update || apt-get --allow-releaseinfo-change update && apt-get install $pkg -y
|
||
else
|
||
echo "$pkg 已安装。"
|
||
fi
|
||
done
|
||
|
||
if [ -x "$(command -v lsb_release)" ]; then
|
||
echo "lsb_release 已安装"
|
||
else
|
||
echo "lsb_release 未安装,现在开始安装..."
|
||
apt-get install lsb-release -y
|
||
fi
|
||
|
||
else
|
||
echo "不支持的操作系统发行版:${release}"
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
#检查Linux版本
|
||
check_version() {
|
||
if [[ -s /etc/redhat-release ]]; then
|
||
version=$(grep -oE "[0-9.]+" /etc/redhat-release | cut -d . -f 1)
|
||
else
|
||
version=$(grep -oE "[0-9.]+" /etc/issue | cut -d . -f 1)
|
||
fi
|
||
bit=$(uname -m)
|
||
check_github
|
||
}
|
||
|
||
#检查安装bbr的系统要求
|
||
check_sys_bbr() {
|
||
check_version
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
if [[ ${version} == "7" ]]; then
|
||
installbbr
|
||
else
|
||
echo -e "${Error} BBR内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
|
||
fi
|
||
elif [[ "${OS_type}" == "Debian" ]]; then
|
||
apt-get --fix-broken install -y && apt-get autoremove -y
|
||
installbbr
|
||
else
|
||
echo -e "${Error} BBR内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
|
||
fi
|
||
}
|
||
|
||
check_sys_bbrplus() {
|
||
check_version
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
if [[ ${version} == "7" ]]; then
|
||
installbbrplus
|
||
else
|
||
echo -e "${Error} BBRplus内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
|
||
fi
|
||
elif [[ "${OS_type}" == "Debian" ]]; then
|
||
apt-get --fix-broken install -y && apt-get autoremove -y
|
||
installbbrplus
|
||
else
|
||
echo -e "${Error} BBRplus内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
|
||
fi
|
||
}
|
||
|
||
check_sys_bbrplusnew() {
|
||
check_version
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
#if [[ ${version} == "7" ]]; then
|
||
if [[ ${version} == "7" || ${version} == "8" ]]; then
|
||
installbbrplusnew
|
||
else
|
||
echo -e "${Error} BBRplusNew内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
|
||
fi
|
||
elif [[ "${OS_type}" == "Debian" ]]; then
|
||
apt-get --fix-broken install -y && apt-get autoremove -y
|
||
installbbrplusnew
|
||
else
|
||
echo -e "${Error} BBRplusNew内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
|
||
fi
|
||
}
|
||
|
||
check_sys_xanmod() {
|
||
check_version
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
if [[ ${version} == "7" || ${version} == "8" ]]; then
|
||
installxanmod
|
||
else
|
||
echo -e "${Error} xanmod内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
|
||
fi
|
||
elif [[ "${OS_type}" == "Debian" ]]; then
|
||
apt-get --fix-broken install -y && apt-get autoremove -y
|
||
installxanmod
|
||
else
|
||
echo -e "${Error} xanmod内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
|
||
fi
|
||
}
|
||
|
||
#检查安装Lotsever的系统要求
|
||
check_sys_Lotsever() {
|
||
check_version
|
||
bit=$(uname -m)
|
||
if [[ ${bit} != "x86_64" ]]; then
|
||
echo -e "${Error} 不支持x86_64以外的系统 !" && exit 1
|
||
fi
|
||
if [[ "${OS_type}" == "CentOS" ]]; then
|
||
if [[ ${version} == "6" ]]; then
|
||
kernel_version="2.6.32-504"
|
||
installlot
|
||
elif [[ ${version} == "7" ]]; then
|
||
yum -y install net-tools
|
||
kernel_version="4.11.2-1"
|
||
installlot
|
||
else
|
||
echo -e "${Error} Lotsever不支持当前系统 ${release} ${version} ${bit} !" && exit 1
|
||
fi
|
||
elif [[ "${release}" == "debian" ]]; then
|
||
if [[ ${version} == "7" || ${version} == "8" ]]; then
|
||
if [[ ${bit} == "x86_64" ]]; then
|
||
kernel_version="3.16.0-4"
|
||
installlot
|
||
elif [[ ${bit} == "i386" ]]; then
|
||
kernel_version="3.2.0-4"
|
||
installlot
|
||
fi
|
||
elif [[ ${version} == "9" ]]; then
|
||
if [[ ${bit} == "x86_64" ]]; then
|
||
kernel_version="4.9.0-4"
|
||
installlot
|
||
fi
|
||
else
|
||
echo -e "${Error} Lotsever不支持当前系统 ${release} ${version} ${bit} !" && exit 1
|
||
fi
|
||
elif [[ "${release}" == "ubuntu" ]]; then
|
||
if [[ ${version} -ge "12" ]]; then
|
||
if [[ ${bit} == "x86_64" ]]; then
|
||
kernel_version="4.4.0-47"
|
||
installlot
|
||
elif [[ ${bit} == "i386" ]]; then
|
||
kernel_version="3.13.0-29"
|
||
installlot
|
||
fi
|
||
else
|
||
echo -e "${Error} Lotsever不支持当前系统 ${release} ${version} ${bit} !" && exit 1
|
||
fi
|
||
else
|
||
echo -e "${Error} Lotsever不支持当前系统 ${release} ${version} ${bit} !" && exit 1
|
||
fi
|
||
}
|
||
|
||
#检查系统当前状态
|
||
check_status() {
|
||
kernel_version=$(uname -r | awk -F "-" '{print $1}')
|
||
kernel_version_full=$(uname -r)
|
||
net_congestion_control=$(cat /proc/sys/net/ipv4/tcp_congestion_control | awk '{print $1}')
|
||
net_qdisc=$(cat /proc/sys/net/core/default_qdisc | awk '{print $1}')
|
||
if [[ ${kernel_version_full} == *bbrplus* ]]; then
|
||
kernel_status="BBRplus"
|
||
elif [[ ${kernel_version_full} == *4.9.0-4* || ${kernel_version_full} == *4.15.0-30* || ${kernel_version_full} == *4.8.0-36* || ${kernel_version_full} == *3.16.0-77* || ${kernel_version_full} == *3.16.0-4* || ${kernel_version_full} == *3.2.0-4* || ${kernel_version_full} == *4.11.2-1* || ${kernel_version_full} == *2.6.32-504* || ${kernel_version_full} == *4.4.0-47* || ${kernel_version_full} == *3.13.0-29 || ${kernel_version_full} == *4.4.0-47* ]]; then
|
||
kernel_status="Lotserver"
|
||
elif [[ $(echo ${kernel_version} | awk -F'.' '{print $1}') == "4" ]] && [[ $(echo ${kernel_version} | awk -F'.' '{print $2}') -ge 9 ]] || [[ $(echo ${kernel_version} | awk -F'.' '{print $1}') == "5" ]] || [[ $(echo ${kernel_version} | awk -F'.' '{print $1}') == "6" ]]; then
|
||
kernel_status="BBR"
|
||
else
|
||
kernel_status="noinstall"
|
||
fi
|
||
|
||
if [[ ${kernel_status} == "BBR" ]]; then
|
||
run_status=$(cat /proc/sys/net/ipv4/tcp_congestion_control | awk '{print $1}')
|
||
if [[ ${run_status} == "bbr" ]]; then
|
||
run_status=$(cat /proc/sys/net/ipv4/tcp_congestion_control | awk '{print $1}')
|
||
if [[ ${run_status} == "bbr" ]]; then
|
||
run_status="BBR启动成功"
|
||
else
|
||
run_status="BBR启动失败"
|
||
fi
|
||
elif [[ ${run_status} == "bbr2" ]]; then
|
||
run_status=$(cat /proc/sys/net/ipv4/tcp_congestion_control | awk '{print $1}')
|
||
if [[ ${run_status} == "bbr2" ]]; then
|
||
run_status="BBR2启动成功"
|
||
else
|
||
run_status="BBR2启动失败"
|
||
fi
|
||
elif [[ ${run_status} == "tsunami" ]]; then
|
||
run_status=$(lsmod | grep "tsunami" | awk '{print $1}')
|
||
if [[ ${run_status} == "tcp_tsunami" ]]; then
|
||
run_status="BBR魔改版启动成功"
|
||
else
|
||
run_status="BBR魔改版启动失败"
|
||
fi
|
||
elif [[ ${run_status} == "nanqinlang" ]]; then
|
||
run_status=$(lsmod | grep "nanqinlang" | awk '{print $1}')
|
||
if [[ ${run_status} == "tcp_nanqinlang" ]]; then
|
||
run_status="暴力BBR魔改版启动成功"
|
||
else
|
||
run_status="暴力BBR魔改版启动失败"
|
||
fi
|
||
else
|
||
run_status="未安装加速模块"
|
||
fi
|
||
|
||
elif [[ ${kernel_status} == "Lotserver" ]]; then
|
||
if [[ -e /appex/bin/lotServer.sh ]]; then
|
||
run_status=$(bash /appex/bin/lotServer.sh status | grep "LotServer" | awk '{print $3}')
|
||
if [[ ${run_status} == "running!" ]]; then
|
||
run_status="启动成功"
|
||
else
|
||
run_status="启动失败"
|
||
fi
|
||
else
|
||
run_status="未安装加速模块"
|
||
fi
|
||
elif [[ ${kernel_status} == "BBRplus" ]]; then
|
||
run_status=$(cat /proc/sys/net/ipv4/tcp_congestion_control | awk '{print $1}')
|
||
if [[ ${run_status} == "bbrplus" ]]; then
|
||
run_status=$(cat /proc/sys/net/ipv4/tcp_congestion_control | awk '{print $1}')
|
||
if [[ ${run_status} == "bbrplus" ]]; then
|
||
run_status="BBRplus启动成功"
|
||
else
|
||
run_status="BBRplus启动失败"
|
||
fi
|
||
elif [[ ${run_status} == "bbr" ]]; then
|
||
run_status="BBR启动成功"
|
||
else
|
||
run_status="未安装加速模块"
|
||
fi
|
||
fi
|
||
}
|
||
|
||
#############系统检测组件#############
|
||
check_sys
|
||
check_version
|
||
[[ "${OS_type}" == "Debian" ]] && [[ "${OS_type}" == "CentOS" ]] && echo -e "${Error} 本脚本不支持当前系统 ${release} !" && exit 1
|
||
check_github
|
||
start_menu
|