├── README.md ├── mu.sh ├── mult.sh ├── sshot ├── 2.png ├── 3.png ├── 4.png ├── sshot-1.png ├── sshot-2.png ├── sshot-3.png ├── sshot-4.png ├── sshot-5.png └── sshot-8.png ├── tcp.sh ├── trojan-go_install.sh └── web.zip /README.md: -------------------------------------------------------------------------------- 1 | #### Trojan one key 2 | 3 | 4 | ##### 说明 5 | 6 | - 脚本会自动获取最新Trojan程序 7 | 8 | - vps上需要安装curl Ubuntu/Debian 系统安装 Curl 方法 9 | 10 | ```bash 11 | apt-get update -y && apt-get install curl -y 12 | ``` 13 | - Centos 系统安装 Curl 方法 14 | 15 | ```bash 16 | yum update -y && yum install curl -y 17 | ``` 18 | - 80端口被Nginx点用使用命令 service nginx stop 停用 19 | 20 | 21 | ##### trojan-go一键二合一脚本 22 | 23 | 项目地址 https://github.com/p4gefau1t/trojan-go 24 | 25 | 26 | - trojan-go多路复用,降低延迟,提升并发性能 27 | 28 | - trojan-go一键脚本支持CDN流量中转等 29 | 30 | ```bash 31 | bash -c "$(curl -fsSL https://raw.githubusercontent.com/kenzok8/Trojan/master/trojan-go_install.sh)" 32 | ``` 33 | 34 | 35 | ##### Trojan一键安装脚本二选一: 36 | 37 | - atrandys脚本修改 38 | 39 | ```bash 40 | bash <(curl -s -L https://git.io/Jvc32) 41 | ``` 42 | ![Trojan脚本运行](https://github.com/kenzok8/Trojan/blob/master/sshot/4.png) 43 | ![Trojan脚本运行](https://github.com/kenzok8/Trojan/blob/master/sshot/sshot-1.png) 44 | 45 | - atrandys+BBR脚本 46 | 47 | ```bash 48 | bash <(curl -s -L https://git.io/Jvcyx) 49 | ``` 50 | ![Trojan脚本运行](https://github.com/kenzok8/Trojan/blob/master/sshot/2.png) 51 | 52 | BBR加速(可选): 53 | 54 | ```bash 55 | cd /usr/src && wget -N --no-check-certificate "https://git.io/Jvc36" && chmod +x tcp.sh && ./tcp.sh 56 | ``` 57 | 58 | ```bash 59 | bash <(curl -L -s -k "https://git.io/Jvc36") 60 | ``` 61 | ![BBR脚本运行](https://github.com/kenzok8/Trojan/blob/master/sshot/3.png) 62 | ![BBR脚本运行](https://github.com/kenzok8/Trojan/blob/master/sshot/sshot-3.png) 63 | ![BBR脚本运行](https://github.com/kenzok8/Trojan/blob/master/sshot/sshot-8.png) 64 | 65 | 66 | 67 | ##### 注意 68 | 69 | 1、系统支持centos7+/debian9+/ubuntu16+ 70 | 71 | 2、域名解析到VPS需要间生效,建议留10分钟,用cloudflare解析,能良好支持TLS; 72 | 73 | 3、脚本自动续签https证书; 74 | 75 | 4、自动配置伪装网站,位于/usr/share/nginx/html/目录下,可自行替换其中内容; 76 | 77 | 5、trojan不能用CDN,不要开启CDN; 78 | 79 | 6、如果你在用谷歌云需要注意防火墙出入站规则设置并给80和443访问权限。 80 | 81 | ##### 结尾 82 | 83 | - 服务端怎么修改密码 84 | 85 | trojan 服务端配置文件路径如下,如需修改内容,修改以下文件即可。 86 | 87 | ```bash 88 | nano /usr/src/trojan/server.conf (没有nano请调用vi命令) 89 | 90 | 修改完成后,重启 trojan 服务端即可,同时客户端的密码也要同步修改哦。 91 | 92 | systemctl start trojan #启动 Trojan 93 | systemctl restart trojan #重启 Trojan 94 | systemctl enable trojan #设置 Trojan 为开机自启 95 | 96 | ``` 97 | ![密码修改](https://github.com/kenzok8/Trojan/blob/master/sshot/sshot-5.png) 98 | 99 | ##### 建议国内域名去cf设置解析 100 | 101 | - 地址 https://www.cloudflare.com/ 102 | 103 | ![cf设置截图](https://github.com/kenzok8/Trojan/blob/master/sshot/sshot-4.png) 104 | 105 | 106 | 107 | 108 | 109 | -------------------------------------------------------------------------------- /mu.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | #Author: kenzo 4 | # 5 | # 6 | function blue(){ 7 | echo -e "\033[34m\033[01m$1\033[0m" 8 | } 9 | function green(){ 10 | echo -e "\033[32m\033[01m$1\033[0m" 11 | } 12 | function cyan(){ 13 | echo -e "\033[36m\033[01m$1\033[0m" 14 | } 15 | function version_lt(){ 16 | test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; 17 | } 18 | #copy from 秋水逸冰 ss scripts 19 | if [[ -f /etc/cyanhat-release ]]; then 20 | release="centos" 21 | systemPackage="yum" 22 | elif cat /etc/issue | grep -Eqi "debian"; then 23 | release="debian" 24 | systemPackage="apt-get" 25 | elif cat /etc/issue | grep -Eqi "ubuntu"; then 26 | release="ubuntu" 27 | systemPackage="apt-get" 28 | elif cat /etc/issue | grep -Eqi "centos|cyan hat|cyanhat"; then 29 | release="centos" 30 | systemPackage="yum" 31 | elif cat /proc/version | grep -Eqi "debian"; then 32 | release="debian" 33 | systemPackage="apt-get" 34 | elif cat /proc/version | grep -Eqi "ubuntu"; then 35 | release="ubuntu" 36 | systemPackage="apt-get" 37 | elif cat /proc/version | grep -Eqi "centos|cyan hat|cyanhat"; then 38 | release="centos" 39 | systemPackage="yum" 40 | fi 41 | systempwd="/etc/systemd/system/" 42 | 43 | #install & config trojan 44 | function install_trojan(){ 45 | $systemPackage install -y nginx 46 | systemctl stop nginx 47 | sleep 5 48 | cat > /etc/nginx/nginx.conf <<-EOF 49 | user root; 50 | worker_processes 1; 51 | error_log /var/log/nginx/error.log warn; 52 | pid /var/run/nginx.pid; 53 | events { 54 | worker_connections 1024; 55 | } 56 | http { 57 | include /etc/nginx/mime.types; 58 | default_type application/octet-stream; 59 | log_format main '\$remote_addr - \$remote_user [\$time_local] "\$request" ' 60 | '\$status \$body_bytes_sent "\$http_referer" ' 61 | '"\$http_user_agent" "\$http_x_forwarded_for"'; 62 | access_log /var/log/nginx/access.log main; 63 | sendfile on; 64 | #tcp_nopush on; 65 | keepalive_timeout 120; 66 | client_max_body_size 20m; 67 | #gzip on; 68 | server { 69 | listen 80; 70 | server_name $your_domain; 71 | root /usr/share/nginx/html; 72 | index index.php index.html index.htm; 73 | } 74 | } 75 | EOF 76 | #设置伪装站 77 | rm -rf /usr/share/nginx/html/* 78 | cd /usr/share/nginx/html/ 79 | wget https://raw.githubusercontent.com/kenzok8/Trojan/master/web.zip >/dev/null 2>&1 80 | unzip web.zip >/dev/null 2>&1 81 | sleep 5 82 | #申请https证书 83 | if [ ! -d "/usr/src" ]; then 84 | mkdir /usr/src 85 | fi 86 | mkdir /usr/src/trojan-cert /usr/src/trojan-temp 87 | curl https://get.acme.sh | sh 88 | ~/.acme.sh/acme.sh --issue -d $your_domain --standalone 89 | if test -s /root/.acme.sh/$your_domain/fullchain.cer; then 90 | systemctl start nginx 91 | cd /usr/src 92 | #wget https://github.com/trojan-gfw/trojan/releases/download/v1.13.0/trojan-1.13.0-linux-amd64.tar.xz 93 | wget https://api.github.com/repos/trojan-gfw/trojan/releases/latest >/dev/null 2>&1 94 | latest_version=`grep tag_name latest| awk -F '[:,"v]' '{print $6}'` 95 | rm -f latest 96 | wget https://github.com/trojan-gfw/trojan/releases/download/v${latest_version}/trojan-${latest_version}-linux-amd64.tar.xz >/dev/null 2>&1 97 | tar xf trojan-${latest_version}-linux-amd64.tar.xz >/dev/null 2>&1 98 | #下载trojan客户端 99 | wget https://github.com/atrandys/trojan/raw/master/trojan-cli.zip >/dev/null 2>&1 100 | wget -P /usr/src/trojan-temp https://github.com/trojan-gfw/trojan/releases/download/v${latest_version}/trojan-${latest_version}-win.zip >/dev/null 2>&1 101 | unzip trojan-cli.zip >/dev/null 2>&1 102 | unzip /usr/src/trojan-temp/trojan-${latest_version}-win.zip -d /usr/src/trojan-temp/ >/dev/null 2>&1 103 | mv -f /usr/src/trojan-temp/trojan/trojan.exe /usr/src/trojan-cli/ 104 | trojan_passwd=$(cat /dev/urandom | head -1 | md5sum | head -c 8) 105 | cat > /usr/src/trojan-cli/config.json <<-EOF 106 | { 107 | "run_type": "client", 108 | "local_addr": "127.0.0.1", 109 | "local_port": 1080, 110 | "remote_addr": "$your_domain", 111 | "remote_port": 443, 112 | "password": [ 113 | "$trojan_passwd" 114 | ], 115 | "log_level": 1, 116 | "ssl": { 117 | "verify": true, 118 | "verify_hostname": true, 119 | "cert": "", 120 | "cipher_tls13":"TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384", 121 | "sni": "", 122 | "alpn": [ 123 | "h2", 124 | "http/1.1" 125 | ], 126 | "reuse_session": true, 127 | "session_ticket": false, 128 | "curves": "" 129 | }, 130 | "tcp": { 131 | "no_delay": true, 132 | "keep_alive": true, 133 | "fast_open": false, 134 | "fast_open_qlen": 20 135 | } 136 | } 137 | EOF 138 | rm -rf /usr/src/trojan/server.conf 139 | cat > /usr/src/trojan/server.conf <<-EOF 140 | { 141 | "run_type": "server", 142 | "local_addr": "0.0.0.0", 143 | "local_port": 443, 144 | "remote_addr": "127.0.0.1", 145 | "remote_port": 80, 146 | "password": [ 147 | "$trojan_passwd" 148 | ], 149 | "log_level": 1, 150 | "ssl": { 151 | "cert": "/usr/src/trojan-cert/fullchain.cer", 152 | "key": "/usr/src/trojan-cert/private.key", 153 | "key_password": "", 154 | "cipher_tls13":"TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384", 155 | "prefer_server_cipher": true, 156 | "alpn": [ 157 | "http/1.1" 158 | ], 159 | "reuse_session": true, 160 | "session_ticket": false, 161 | "session_timeout": 600, 162 | "plain_http_response": "", 163 | "curves": "", 164 | "dhparam": "" 165 | }, 166 | "tcp": { 167 | "no_delay": true, 168 | "keep_alive": true, 169 | "fast_open": false, 170 | "fast_open_qlen": 20 171 | }, 172 | "mysql": { 173 | "enabled": false, 174 | "server_addr": "127.0.0.1", 175 | "server_port": 3306, 176 | "database": "trojan", 177 | "username": "trojan", 178 | "password": "" 179 | } 180 | } 181 | EOF 182 | cd /usr/src/trojan-cli/ 183 | zip -q -r trojan-cli.zip /usr/src/trojan-cli/ 184 | trojan_path=$(cat /dev/urandom | head -1 | md5sum | head -c 16) 185 | mkdir /usr/share/nginx/html/${trojan_path} 186 | mv /usr/src/trojan-cli/trojan-cli.zip /usr/share/nginx/html/${trojan_path}/ 187 | #增加启动脚本 188 | 189 | cat > ${systempwd}trojan.service <<-EOF 190 | [Unit] 191 | Description=trojan 192 | After=network.target 193 | 194 | [Service] 195 | Type=simple 196 | PIDFile=/usr/src/trojan/trojan/trojan.pid 197 | ExecStart=/usr/src/trojan/trojan -c "/usr/src/trojan/server.conf" 198 | ExecReload=/bin/kill -HUP \$MAINPID 199 | Restart=on-failure 200 | RestartSec=1s 201 | 202 | [Install] 203 | WantedBy=multi-user.target 204 | EOF 205 | 206 | chmod +x ${systempwd}trojan.service 207 | systemctl enable trojan.service 208 | cd /root 209 | ~/.acme.sh/acme.sh --installcert -d $your_domain \ 210 | --key-file /usr/src/trojan-cert/private.key \ 211 | --fullchain-file /usr/src/trojan-cert/fullchain.cer \ 212 | --reloadcmd "systemctl restart trojan" 213 | green "======================================================================" 214 | green "Trojan已安装完成,请使用以下链接下载trojan客户端,此客户端已配置好所有参数" 215 | green "1、复制下面的链接,在浏览器打开,下载客户端,注意此下载链接将在1个小时后失效" 216 | blue "http://${your_domain}/$trojan_path/trojan-cli.zip" 217 | green "2、将下载的压缩包解压,打开文件夹,打开start.bat即打开并运行Trojan客户端" 218 | green "3、打开stop.bat即关闭Trojan客户端" 219 | green "4、Trojan客户端需要搭配浏览器插件使用,例如switchyomega等" 220 | green "======================================================================" 221 | else 222 | cyan "===================================" 223 | cyan "https证书没有申请成果,自动安装失败" 224 | green "不要担心,你可以手动修复证书申请" 225 | green "1. 重启VPS" 226 | green "2. 重新执行脚本,使用修复证书功能" 227 | cyan "===================================" 228 | fi 229 | } 230 | function preinstall_check(){ 231 | 232 | nginx_status=`ps -aux | grep "nginx: worker" |grep -v "grep"` 233 | if [ -n "$nginx_status" ]; then 234 | systemctl stop nginx 235 | fi 236 | $systemPackage -y install net-tools socat 237 | Port80=`netstat -tlpn | awk -F '[: ]+' '$1=="tcp"{print $5}' | grep -w 80` 238 | Port443=`netstat -tlpn | awk -F '[: ]+' '$1=="tcp"{print $5}' | grep -w 443` 239 | if [ -n "$Port80" ]; then 240 | process80=`netstat -tlpn | awk -F '[: ]+' '$5=="80"{print $9}'` 241 | cyan "===========================================================" 242 | cyan "检测到80端口被占用,占用进程为:${process80},本次安装结束" 243 | cyan "===========================================================" 244 | exit 1 245 | fi 246 | if [ -n "$Port443" ]; then 247 | process443=`netstat -tlpn | awk -F '[: ]+' '$5=="443"{print $9}'` 248 | cyan "=============================================================" 249 | cyan "检测到443端口被占用,占用进程为:${process443},本次安装结束" 250 | cyan "=============================================================" 251 | exit 1 252 | fi 253 | if [ -f "/etc/selinux/config" ]; then 254 | CHECK=$(grep SELINUX= /etc/selinux/config | grep -v "#") 255 | if [ "$CHECK" != "SELINUX=disabled" ]; then 256 | green "检测到SELinux开启状态,添加放行80/443端口规则" 257 | yum install -y policycoreutils-python >/dev/null 2>&1 258 | semanage port -m -t http_port_t -p tcp 80 259 | semanage port -m -t http_port_t -p tcp 443 260 | fi 261 | fi 262 | if [ "$release" == "centos" ]; then 263 | if [ -n "$(grep ' 6\.' /etc/cyanhat-release)" ] ;then 264 | cyan "===============" 265 | cyan "当前系统不受支持" 266 | cyan "===============" 267 | exit 268 | fi 269 | if [ -n "$(grep ' 5\.' /etc/cyanhat-release)" ] ;then 270 | cyan "===============" 271 | cyan "当前系统不受支持" 272 | cyan "===============" 273 | exit 274 | fi 275 | firewall_status=`systemctl status firewalld | grep "Active: active"` 276 | if [ -n "$firewall_status" ]; then 277 | green "检测到firewalld开启状态,添加放行80/443端口规则" 278 | firewall-cmd --zone=public --add-port=80/tcp --permanent 279 | firewall-cmd --zone=public --add-port=443/tcp --permanent 280 | firewall-cmd --reload 281 | fi 282 | rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 283 | elif [ "$release" == "ubuntu" ]; then 284 | if [ -n "$(grep ' 14\.' /etc/os-release)" ] ;then 285 | cyan "===============" 286 | cyan "当前系统不受支持" 287 | cyan "===============" 288 | exit 289 | fi 290 | if [ -n "$(grep ' 12\.' /etc/os-release)" ] ;then 291 | cyan "===============" 292 | cyan "当前系统不受支持" 293 | cyan "===============" 294 | exit 295 | fi 296 | ufw_status=`systemctl status ufw | grep "Active: active"` 297 | if [ -n "$ufw_status" ]; then 298 | ufw allow 80/tcp 299 | ufw allow 443/tcp 300 | fi 301 | apt-get update 302 | elif [ "$release" == "debian" ]; then 303 | ufw_status=`systemctl status ufw | grep "Active: active"` 304 | if [ -n "$ufw_status" ]; then 305 | ufw allow 80/tcp 306 | ufw allow 443/tcp 307 | fi 308 | apt-get update 309 | fi 310 | $systemPackage -y install wget unzip zip curl tar >/dev/null 2>&1 311 | green "=======================" 312 | blue "请输入绑定到本VPS的域名" 313 | green "=======================" 314 | read your_domain 315 | real_addr=`ping ${your_domain} -c 1 | sed '1{s/[^(]*(//;s/).*//;q}'` 316 | local_addr=`curl ipv4.icanhazip.com` 317 | if [ $real_addr == $local_addr ] ; then 318 | green "==========================================" 319 | green " 域名解析正常,开始安装trojan" 320 | green "==========================================" 321 | sleep 1s 322 | install_trojan 323 | 324 | else 325 | cyan "====================================" 326 | cyan "域名解析地址与本VPS IP地址不一致" 327 | cyan "若你确认解析成功你可强制脚本继续运行" 328 | cyan "====================================" 329 | read -p "是否强制运行 ?请输入 [Y/n] :" yn 330 | [ -z "${yn}" ] && yn="y" 331 | if [[ $yn == [Yy] ]]; then 332 | green "强制继续运行脚本" 333 | sleep 1s 334 | install_trojan 335 | else 336 | exit 1 337 | fi 338 | fi 339 | } 340 | 341 | function repair_cert(){ 342 | systemctl stop nginx 343 | iptables -I INPUT -p tcp --dport 80 -j ACCEPT 344 | iptables -I INPUT -p tcp --dport 443 -j ACCEPT 345 | Port80=`netstat -tlpn | awk -F '[: ]+' '$1=="tcp"{print $5}' | grep -w 80` 346 | if [ -n "$Port80" ]; then 347 | process80=`netstat -tlpn | awk -F '[: ]+' '$5=="80"{print $9}'` 348 | cyan "===========================================================" 349 | cyan "检测到80端口被占用,占用进程为:${process80},本次安装结束" 350 | cyan "===========================================================" 351 | exit 1 352 | fi 353 | green "=======================" 354 | blue "请输入绑定到本VPS的域名" 355 | blue "务必与之前失败使用的域名一致" 356 | green "=======================" 357 | read your_domain 358 | real_addr=`ping ${your_domain} -c 1 | sed '1{s/[^(]*(//;s/).*//;q}'` 359 | local_addr=`curl ipv4.icanhazip.com` 360 | if [ $real_addr == $local_addr ] ; then 361 | ~/.acme.sh/acme.sh --issue -d $your_domain --standalone 362 | ~/.acme.sh/acme.sh --installcert -d $your_domain \ 363 | --key-file /usr/src/trojan-cert/private.key \ 364 | --fullchain-file /usr/src/trojan-cert/fullchain.cer \ 365 | --reloadcmd "systemctl restart trojan" 366 | if test -s /usr/src/trojan-cert/fullchain.cer; then 367 | green "证书申请成功" 368 | green "请将/usr/src/trojan-cert/下的fullchain.cer下载放到客户端trojan-cli文件夹" 369 | systemctl restart trojan 370 | systemctl start nginx 371 | else 372 | cyan "申请证书失败" 373 | fi 374 | else 375 | cyan "================================" 376 | cyan "域名解析地址与本VPS IP地址不一致" 377 | cyan "本次安装失败,请确保域名解析正常" 378 | cyan "================================" 379 | fi 380 | } 381 | 382 | function remove_trojan(){ 383 | cyan "================================" 384 | cyan "即将卸载trojan" 385 | cyan "同时卸载安装的nginx" 386 | cyan "================================" 387 | systemctl stop trojan 388 | systemctl disable trojan 389 | rm -f ${systempwd}trojan.service 390 | if [ "$release" == "centos" ]; then 391 | yum remove -y nginx 392 | else 393 | apt autoremove -y nginx 394 | fi 395 | rm -rf /usr/src/trojan* 396 | rm -rf /usr/share/nginx/html/* 397 | rm -rf /root/.acme.sh/ 398 | green "==============" 399 | green "trojan删除完毕" 400 | green "==============" 401 | } 402 | 403 | function update_trojan(){ 404 | /usr/src/trojan/trojan -v 2>trojan.tmp 405 | curr_version=`cat trojan.tmp | grep "trojan" | awk '{print $4}'` 406 | wget https://api.github.com/repos/trojan-gfw/trojan/releases/latest >/dev/null 2>&1 407 | latest_version=`grep tag_name latest| awk -F '[:,"v]' '{print $6}'` 408 | rm -f latest 409 | rm -f trojan.tmp 410 | if version_lt "$curr_version" "$latest_version"; then 411 | green "当前版本$curr_version,最新版本$latest_version,开始升级……" 412 | mkdir trojan_update_temp && cd trojan_update_temp 413 | wget https://github.com/trojan-gfw/trojan/releases/download/v${latest_version}/trojan-${latest_version}-linux-amd64.tar.xz >/dev/null 2>&1 414 | tar xf trojan-${latest_version}-linux-amd64.tar.xz >/dev/null 2>&1 415 | mv ./trojan/trojan /usr/src/trojan/ 416 | cd .. && rm -rf trojan_update_temp 417 | systemctl restart trojan 418 | /usr/src/trojan/trojan -v 2>trojan.tmp 419 | green "trojan升级完成,当前版本:`cat trojan.tmp | grep "trojan" | awk '{print $4}'`" 420 | rm -f trojan.tmp 421 | else 422 | green "当前版本$curr_version,最新版本$latest_version,无需升级" 423 | fi 424 | 425 | 426 | } 427 | 428 | start_menu(){ 429 | clear 430 | green " =======================================" 431 | green " 介绍:一键安装trojan 4月25日更新" 432 | green " 系统:centos7+/debian9+/ubuntu16.04+" 433 | cyan " *请不要在任何生产环境使用此脚本" 434 | cyan " *请不要有其他程序占用80和443端口" 435 | cyan " *若是第二次使用脚本,请先执行卸载trojan" 436 | green " =======================================" 437 | echo 438 | green " 1. 安装trojan" 439 | cyan " 2. 卸载trojan" 440 | green " 3. 升级trojan" 441 | green " 4. 修复证书" 442 | blue " 0. 退出脚本" 443 | echo 444 | read -p "请输入数字 :" num 445 | case "$num" in 446 | 1) 447 | preinstall_check 448 | ;; 449 | 2) 450 | remove_trojan 451 | ;; 452 | 3) 453 | update_trojan 454 | ;; 455 | 4) 456 | repair_cert 457 | ;; 458 | 0) 459 | exit 1 460 | ;; 461 | *) 462 | clear 463 | cyan "请输入正确数字" 464 | sleep 1s 465 | start_menu 466 | ;; 467 | esac 468 | } 469 | 470 | start_menu 471 | -------------------------------------------------------------------------------- /mult.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | #Author: kenzo 4 | # 5 | # 6 | function blue(){ 7 | echo -e "\033[34m\033[01m$1\033[0m" 8 | } 9 | function green(){ 10 | echo -e "\033[32m\033[01m$1\033[0m" 11 | } 12 | function cyan(){ 13 | echo -e "\033[36m\033[01m$1\033[0m" 14 | } 15 | function version_lt(){ 16 | test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; 17 | } 18 | #copy from 秋水逸冰 ss scripts 19 | if [[ -f /etc/cyanhat-release ]]; then 20 | release="centos" 21 | systemPackage="yum" 22 | elif cat /etc/issue | grep -Eqi "debian"; then 23 | release="debian" 24 | systemPackage="apt-get" 25 | elif cat /etc/issue | grep -Eqi "ubuntu"; then 26 | release="ubuntu" 27 | systemPackage="apt-get" 28 | elif cat /etc/issue | grep -Eqi "centos|cyan hat|cyanhat"; then 29 | release="centos" 30 | systemPackage="yum" 31 | elif cat /proc/version | grep -Eqi "debian"; then 32 | release="debian" 33 | systemPackage="apt-get" 34 | elif cat /proc/version | grep -Eqi "ubuntu"; then 35 | release="ubuntu" 36 | systemPackage="apt-get" 37 | elif cat /proc/version | grep -Eqi "centos|cyan hat|cyanhat"; then 38 | release="centos" 39 | systemPackage="yum" 40 | fi 41 | systempwd="/etc/systemd/system/" 42 | 43 | #install & config trojan 44 | function install_trojan(){ 45 | $systemPackage install -y nginx 46 | systemctl stop nginx 47 | sleep 5 48 | cat > /etc/nginx/nginx.conf <<-EOF 49 | user root; 50 | worker_processes 1; 51 | error_log /var/log/nginx/error.log warn; 52 | pid /var/run/nginx.pid; 53 | events { 54 | worker_connections 1024; 55 | } 56 | http { 57 | include /etc/nginx/mime.types; 58 | default_type application/octet-stream; 59 | log_format main '\$remote_addr - \$remote_user [\$time_local] "\$request" ' 60 | '\$status \$body_bytes_sent "\$http_referer" ' 61 | '"\$http_user_agent" "\$http_x_forwarded_for"'; 62 | access_log /var/log/nginx/access.log main; 63 | sendfile on; 64 | #tcp_nopush on; 65 | keepalive_timeout 120; 66 | client_max_body_size 20m; 67 | #gzip on; 68 | server { 69 | listen 80; 70 | server_name $your_domain; 71 | root /usr/share/nginx/html; 72 | index index.php index.html index.htm; 73 | } 74 | } 75 | EOF 76 | #设置伪装站 77 | rm -rf /usr/share/nginx/html/* 78 | cd /usr/share/nginx/html/ 79 | wget https://raw.githubusercontent.com/kenzok8/Trojan/master/web.zip >/dev/null 2>&1 80 | unzip web.zip >/dev/null 2>&1 81 | sleep 5 82 | #申请https证书 83 | if [ ! -d "/usr/src" ]; then 84 | mkdir /usr/src 85 | fi 86 | mkdir /usr/src/trojan-cert /usr/src/trojan-temp 87 | curl https://get.acme.sh | sh 88 | ~/.acme.sh/acme.sh --issue -d $your_domain --standalone 89 | if test -s /root/.acme.sh/$your_domain/fullchain.cer; then 90 | systemctl start nginx 91 | cd /usr/src 92 | #wget https://github.com/trojan-gfw/trojan/releases/download/v1.13.0/trojan-1.13.0-linux-amd64.tar.xz 93 | wget https://api.github.com/repos/trojan-gfw/trojan/releases/latest >/dev/null 2>&1 94 | latest_version=`grep tag_name latest| awk -F '[:,"v]' '{print $6}'` 95 | rm -f latest 96 | wget https://github.com/trojan-gfw/trojan/releases/download/v${latest_version}/trojan-${latest_version}-linux-amd64.tar.xz >/dev/null 2>&1 97 | tar xf trojan-${latest_version}-linux-amd64.tar.xz >/dev/null 2>&1 98 | #下载trojan客户端 99 | wget https://github.com/atrandys/trojan/raw/master/trojan-cli.zip >/dev/null 2>&1 100 | wget -P /usr/src/trojan-temp https://github.com/trojan-gfw/trojan/releases/download/v${latest_version}/trojan-${latest_version}-win.zip >/dev/null 2>&1 101 | unzip trojan-cli.zip >/dev/null 2>&1 102 | unzip /usr/src/trojan-temp/trojan-${latest_version}-win.zip -d /usr/src/trojan-temp/ >/dev/null 2>&1 103 | mv -f /usr/src/trojan-temp/trojan/trojan.exe /usr/src/trojan-cli/ 104 | trojan_passwd=$(cat /dev/urandom | head -1 | md5sum | head -c 8) 105 | cat > /usr/src/trojan-cli/config.json <<-EOF 106 | { 107 | "run_type": "client", 108 | "local_addr": "127.0.0.1", 109 | "local_port": 1080, 110 | "remote_addr": "$your_domain", 111 | "remote_port": 443, 112 | "password": [ 113 | "$trojan_passwd" 114 | ], 115 | "log_level": 1, 116 | "ssl": { 117 | "verify": true, 118 | "verify_hostname": true, 119 | "cert": "", 120 | "cipher_tls13":"TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384", 121 | "sni": "", 122 | "alpn": [ 123 | "h2", 124 | "http/1.1" 125 | ], 126 | "reuse_session": true, 127 | "session_ticket": false, 128 | "curves": "" 129 | }, 130 | "tcp": { 131 | "no_delay": true, 132 | "keep_alive": true, 133 | "fast_open": false, 134 | "fast_open_qlen": 20 135 | } 136 | } 137 | EOF 138 | rm -rf /usr/src/trojan/server.conf 139 | cat > /usr/src/trojan/server.conf <<-EOF 140 | { 141 | "run_type": "server", 142 | "local_addr": "0.0.0.0", 143 | "local_port": 443, 144 | "remote_addr": "127.0.0.1", 145 | "remote_port": 80, 146 | "password": [ 147 | "$trojan_passwd" 148 | ], 149 | "log_level": 1, 150 | "ssl": { 151 | "cert": "/usr/src/trojan-cert/fullchain.cer", 152 | "key": "/usr/src/trojan-cert/private.key", 153 | "key_password": "", 154 | "cipher_tls13":"TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384", 155 | "prefer_server_cipher": true, 156 | "alpn": [ 157 | "http/1.1" 158 | ], 159 | "reuse_session": true, 160 | "session_ticket": false, 161 | "session_timeout": 600, 162 | "plain_http_response": "", 163 | "curves": "", 164 | "dhparam": "" 165 | }, 166 | "tcp": { 167 | "no_delay": true, 168 | "keep_alive": true, 169 | "fast_open": false, 170 | "fast_open_qlen": 20 171 | }, 172 | "mysql": { 173 | "enabled": false, 174 | "server_addr": "127.0.0.1", 175 | "server_port": 3306, 176 | "database": "trojan", 177 | "username": "trojan", 178 | "password": "" 179 | } 180 | } 181 | EOF 182 | cd /usr/src/trojan-cli/ 183 | zip -q -r trojan-cli.zip /usr/src/trojan-cli/ 184 | trojan_path=$(cat /dev/urandom | head -1 | md5sum | head -c 16) 185 | mkdir /usr/share/nginx/html/${trojan_path} 186 | mv /usr/src/trojan-cli/trojan-cli.zip /usr/share/nginx/html/${trojan_path}/ 187 | #增加启动脚本 188 | 189 | cat > ${systempwd}trojan.service <<-EOF 190 | [Unit] 191 | Description=trojan 192 | After=network.target 193 | 194 | [Service] 195 | Type=simple 196 | PIDFile=/usr/src/trojan/trojan/trojan.pid 197 | ExecStart=/usr/src/trojan/trojan -c "/usr/src/trojan/server.conf" 198 | ExecReload=/bin/kill -HUP \$MAINPID 199 | Restart=on-failure 200 | RestartSec=1s 201 | 202 | [Install] 203 | WantedBy=multi-user.target 204 | EOF 205 | 206 | chmod +x ${systempwd}trojan.service 207 | systemctl enable trojan.service 208 | cd /root 209 | ~/.acme.sh/acme.sh --installcert -d $your_domain \ 210 | --key-file /usr/src/trojan-cert/private.key \ 211 | --fullchain-file /usr/src/trojan-cert/fullchain.cer \ 212 | --reloadcmd "systemctl restart trojan" 213 | green "======================================================================" 214 | green "Trojan已安装完成,请使用以下链接下载trojan客户端,此客户端已配置好所有参数" 215 | green "1、复制下面的链接,在浏览器打开,下载客户端,注意此下载链接将在1个小时后失效" 216 | blue "http://${your_domain}/$trojan_path/trojan-cli.zip" 217 | green "2、将下载的压缩包解压,打开文件夹,打开start.bat即打开并运行Trojan客户端" 218 | green "3、打开stop.bat即关闭Trojan客户端" 219 | green "4、Trojan客户端需要搭配浏览器插件使用,例如switchyomega等" 220 | green "======================================================================" 221 | else 222 | cyan "===================================" 223 | cyan "https证书没有申请成果,自动安装失败" 224 | green "不要担心,你可以手动修复证书申请" 225 | green "1. 重启VPS" 226 | green "2. 重新执行脚本,使用修复证书功能" 227 | cyan "===================================" 228 | fi 229 | } 230 | function preinstall_check(){ 231 | 232 | nginx_status=`ps -aux | grep "nginx: worker" |grep -v "grep"` 233 | if [ -n "$nginx_status" ]; then 234 | systemctl stop nginx 235 | fi 236 | $systemPackage -y install net-tools socat 237 | Port80=`netstat -tlpn | awk -F '[: ]+' '$1=="tcp"{print $5}' | grep -w 80` 238 | Port443=`netstat -tlpn | awk -F '[: ]+' '$1=="tcp"{print $5}' | grep -w 443` 239 | if [ -n "$Port80" ]; then 240 | process80=`netstat -tlpn | awk -F '[: ]+' '$5=="80"{print $9}'` 241 | cyan "===========================================================" 242 | cyan "检测到80端口被占用,占用进程为:${process80},本次安装结束" 243 | cyan "===========================================================" 244 | exit 1 245 | fi 246 | if [ -n "$Port443" ]; then 247 | process443=`netstat -tlpn | awk -F '[: ]+' '$5=="443"{print $9}'` 248 | cyan "=============================================================" 249 | cyan "检测到443端口被占用,占用进程为:${process443},本次安装结束" 250 | cyan "=============================================================" 251 | exit 1 252 | fi 253 | if [ -f "/etc/selinux/config" ]; then 254 | CHECK=$(grep SELINUX= /etc/selinux/config | grep -v "#") 255 | if [ "$CHECK" != "SELINUX=disabled" ]; then 256 | green "检测到SELinux开启状态,添加放行80/443端口规则" 257 | yum install -y policycoreutils-python >/dev/null 2>&1 258 | semanage port -m -t http_port_t -p tcp 80 259 | semanage port -m -t http_port_t -p tcp 443 260 | fi 261 | fi 262 | if [ "$release" == "centos" ]; then 263 | if [ -n "$(grep ' 6\.' /etc/cyanhat-release)" ] ;then 264 | cyan "===============" 265 | cyan "当前系统不受支持" 266 | cyan "===============" 267 | exit 268 | fi 269 | if [ -n "$(grep ' 5\.' /etc/cyanhat-release)" ] ;then 270 | cyan "===============" 271 | cyan "当前系统不受支持" 272 | cyan "===============" 273 | exit 274 | fi 275 | firewall_status=`systemctl status firewalld | grep "Active: active"` 276 | if [ -n "$firewall_status" ]; then 277 | green "检测到firewalld开启状态,添加放行80/443端口规则" 278 | firewall-cmd --zone=public --add-port=80/tcp --permanent 279 | firewall-cmd --zone=public --add-port=443/tcp --permanent 280 | firewall-cmd --reload 281 | fi 282 | rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 283 | elif [ "$release" == "ubuntu" ]; then 284 | if [ -n "$(grep ' 14\.' /etc/os-release)" ] ;then 285 | cyan "===============" 286 | cyan "当前系统不受支持" 287 | cyan "===============" 288 | exit 289 | fi 290 | if [ -n "$(grep ' 12\.' /etc/os-release)" ] ;then 291 | cyan "===============" 292 | cyan "当前系统不受支持" 293 | cyan "===============" 294 | exit 295 | fi 296 | ufw_status=`systemctl status ufw | grep "Active: active"` 297 | if [ -n "$ufw_status" ]; then 298 | ufw allow 80/tcp 299 | ufw allow 443/tcp 300 | fi 301 | apt-get update 302 | elif [ "$release" == "debian" ]; then 303 | ufw_status=`systemctl status ufw | grep "Active: active"` 304 | if [ -n "$ufw_status" ]; then 305 | ufw allow 80/tcp 306 | ufw allow 443/tcp 307 | fi 308 | apt-get update 309 | fi 310 | $systemPackage -y install wget unzip zip curl tar >/dev/null 2>&1 311 | green "=======================" 312 | blue "请输入绑定到本VPS的域名" 313 | green "=======================" 314 | read your_domain 315 | real_addr=`ping ${your_domain} -c 1 | sed '1{s/[^(]*(//;s/).*//;q}'` 316 | local_addr=`curl ipv4.icanhazip.com` 317 | if [ $real_addr == $local_addr ] ; then 318 | green "==========================================" 319 | green " 域名解析正常,开始安装trojan" 320 | green "==========================================" 321 | sleep 1s 322 | install_trojan 323 | 324 | else 325 | cyan "====================================" 326 | cyan "域名解析地址与本VPS IP地址不一致" 327 | cyan "若你确认解析成功你可强制脚本继续运行" 328 | cyan "====================================" 329 | read -p "是否强制运行 ?请输入 [Y/n] :" yn 330 | [ -z "${yn}" ] && yn="y" 331 | if [[ $yn == [Yy] ]]; then 332 | green "强制继续运行脚本" 333 | sleep 1s 334 | install_trojan 335 | else 336 | exit 1 337 | fi 338 | fi 339 | } 340 | 341 | function repair_cert(){ 342 | systemctl stop nginx 343 | iptables -I INPUT -p tcp --dport 80 -j ACCEPT 344 | iptables -I INPUT -p tcp --dport 443 -j ACCEPT 345 | Port80=`netstat -tlpn | awk -F '[: ]+' '$1=="tcp"{print $5}' | grep -w 80` 346 | if [ -n "$Port80" ]; then 347 | process80=`netstat -tlpn | awk -F '[: ]+' '$5=="80"{print $9}'` 348 | cyan "===========================================================" 349 | cyan "检测到80端口被占用,占用进程为:${process80},本次安装结束" 350 | cyan "===========================================================" 351 | exit 1 352 | fi 353 | green "=======================" 354 | blue "请输入绑定到本VPS的域名" 355 | blue "务必与之前失败使用的域名一致" 356 | green "=======================" 357 | read your_domain 358 | real_addr=`ping ${your_domain} -c 1 | sed '1{s/[^(]*(//;s/).*//;q}'` 359 | local_addr=`curl ipv4.icanhazip.com` 360 | if [ $real_addr == $local_addr ] ; then 361 | ~/.acme.sh/acme.sh --issue -d $your_domain --standalone 362 | ~/.acme.sh/acme.sh --installcert -d $your_domain \ 363 | --key-file /usr/src/trojan-cert/private.key \ 364 | --fullchain-file /usr/src/trojan-cert/fullchain.cer \ 365 | --reloadcmd "systemctl restart trojan" 366 | if test -s /usr/src/trojan-cert/fullchain.cer; then 367 | green "证书申请成功" 368 | green "请将/usr/src/trojan-cert/下的fullchain.cer下载放到客户端trojan-cli文件夹" 369 | systemctl restart trojan 370 | systemctl start nginx 371 | else 372 | cyan "申请证书失败" 373 | fi 374 | else 375 | cyan "================================" 376 | cyan "域名解析地址与本VPS IP地址不一致" 377 | cyan "本次安装失败,请确保域名解析正常" 378 | cyan "================================" 379 | fi 380 | } 381 | 382 | function remove_trojan(){ 383 | cyan "================================" 384 | cyan "即将卸载trojan" 385 | cyan "同时卸载安装的nginx" 386 | cyan "================================" 387 | systemctl stop trojan 388 | systemctl disable trojan 389 | rm -f ${systempwd}trojan.service 390 | if [ "$release" == "centos" ]; then 391 | yum remove -y nginx 392 | else 393 | apt autoremove -y nginx 394 | fi 395 | rm -rf /usr/src/trojan* 396 | rm -rf /usr/share/nginx/html/* 397 | rm -rf /root/.acme.sh/ 398 | green "==============" 399 | green "trojan删除完毕" 400 | green "==============" 401 | } 402 | 403 | function bbr_tcp_sh(){ 404 | [ -f "tcp.sh" ] && rm -rf ./tcp.sh 405 | wget -N --no-check-certificate "https://raw.githubusercontent.com/kenzok8/Trojan/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh 406 | } 407 | 408 | function update_trojan(){ 409 | /usr/src/trojan/trojan -v 2>trojan.tmp 410 | curr_version=`cat trojan.tmp | grep "trojan" | awk '{print $4}'` 411 | wget https://api.github.com/repos/trojan-gfw/trojan/releases/latest >/dev/null 2>&1 412 | latest_version=`grep tag_name latest| awk -F '[:,"v]' '{print $6}'` 413 | rm -f latest 414 | rm -f trojan.tmp 415 | if version_lt "$curr_version" "$latest_version"; then 416 | green "当前版本$curr_version,最新版本$latest_version,开始升级……" 417 | mkdir trojan_update_temp && cd trojan_update_temp 418 | wget https://github.com/trojan-gfw/trojan/releases/download/v${latest_version}/trojan-${latest_version}-linux-amd64.tar.xz >/dev/null 2>&1 419 | tar xf trojan-${latest_version}-linux-amd64.tar.xz >/dev/null 2>&1 420 | mv ./trojan/trojan /usr/src/trojan/ 421 | cd .. && rm -rf trojan_update_temp 422 | systemctl restart trojan 423 | /usr/src/trojan/trojan -v 2>trojan.tmp 424 | green "trojan升级完成,当前版本:`cat trojan.tmp | grep "trojan" | awk '{print $4}'`" 425 | rm -f trojan.tmp 426 | else 427 | green "当前版本$curr_version,最新版本$latest_version,无需升级" 428 | fi 429 | 430 | 431 | } 432 | 433 | start_menu(){ 434 | clear 435 | green " =======================================" 436 | green " 介绍:一键安装trojan 4月25日更新" 437 | green " 系统:centos7+/debian9+/ubuntu16.04+" 438 | cyan " *请不要在任何生产环境使用此脚本" 439 | cyan " *请不要有其他程序占用80和443端口" 440 | cyan " *若是第二次使用脚本,请先执行卸载trojan" 441 | green " =======================================" 442 | echo 443 | green " 1. 安装trojan" 444 | cyan " 2. 卸载trojan" 445 | green " 3. 升级trojan" 446 | green " 4. 修复证书" 447 | green " 5. BBR加速" 448 | cyan " 0. 退出脚本" 449 | echo 450 | read -p "请输入数字 :" num 451 | case "$num" in 452 | 1) 453 | preinstall_check 454 | ;; 455 | 2) 456 | remove_trojan 457 | ;; 458 | 3) 459 | update_trojan 460 | ;; 461 | 4) 462 | repair_cert 463 | ;; 464 | 5) 465 | bbr_tcp_sh 466 | ;; 467 | 0) 468 | exit 1 469 | ;; 470 | *) 471 | clear 472 | cyan "请输入正确数字" 473 | sleep 1s 474 | start_menu 475 | ;; 476 | esac 477 | } 478 | 479 | start_menu 480 | -------------------------------------------------------------------------------- /sshot/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenzok8/Trojan/565a145686e54beed05ccd6cf47054857939664b/sshot/2.png -------------------------------------------------------------------------------- /sshot/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenzok8/Trojan/565a145686e54beed05ccd6cf47054857939664b/sshot/3.png -------------------------------------------------------------------------------- /sshot/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenzok8/Trojan/565a145686e54beed05ccd6cf47054857939664b/sshot/4.png -------------------------------------------------------------------------------- /sshot/sshot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenzok8/Trojan/565a145686e54beed05ccd6cf47054857939664b/sshot/sshot-1.png -------------------------------------------------------------------------------- /sshot/sshot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenzok8/Trojan/565a145686e54beed05ccd6cf47054857939664b/sshot/sshot-2.png -------------------------------------------------------------------------------- /sshot/sshot-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenzok8/Trojan/565a145686e54beed05ccd6cf47054857939664b/sshot/sshot-3.png -------------------------------------------------------------------------------- /sshot/sshot-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenzok8/Trojan/565a145686e54beed05ccd6cf47054857939664b/sshot/sshot-4.png -------------------------------------------------------------------------------- /sshot/sshot-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenzok8/Trojan/565a145686e54beed05ccd6cf47054857939664b/sshot/sshot-5.png -------------------------------------------------------------------------------- /sshot/sshot-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenzok8/Trojan/565a145686e54beed05ccd6cf47054857939664b/sshot/sshot-8.png -------------------------------------------------------------------------------- /tcp.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin 3 | export PATH 4 | 5 | #================================================= 6 | # System Required: CentOS 6/7/8,Debian 8/9/10,ubuntu 16/18/19 7 | # Description: BBR+BBRplus+Lotserver 8 | # Version: 1.3.2.20 9 | # Author: kenzo 10 | #================================================= 11 | 12 | sh_ver="1.3.2.20" 13 | github="github.000060000.xyz" 14 | 15 | Green_font_prefix="\033[32m" && Red_font_prefix="\033[31m" && Green_background_prefix="\033[42;37m" && Red_background_prefix="\033[41;37m" && Font_color_suffix="\033[0m" 16 | Info="${Green_font_prefix}[信息]${Font_color_suffix}" 17 | Error="${Red_font_prefix}[错误]${Font_color_suffix}" 18 | Tip="${Green_font_prefix}[注意]${Font_color_suffix}" 19 | 20 | #安装BBR内核 21 | installbbr(){ 22 | kernel_version="4.11.8" 23 | bit=`uname -m` 24 | rm -rf bbr 25 | mkdir bbr && cd bbr 26 | 27 | if [[ "${release}" == "centos" ]]; then 28 | if [[ ${version} = "6" ]]; then 29 | if [[ ${bit} = "x86_64" ]]; then 30 | wget -N -O kernel-headers-c6.rpm https://github.com/ylx2016/kernel/releases/download/5.5.5/kernel-headers-5.5.5-1-c6.x86_64.rpm 31 | wget -N -O kernel-c6.rpm https://github.com/ylx2016/kernel/releases/download/5.5.5/kernel-5.5.5-1-c6.x86_64.rpm 32 | 33 | yum install -y kernel-c6.rpm 34 | yum install -y kernel-headers-c6.rpm 35 | 36 | kernel_version="5.5.5" 37 | else 38 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 39 | fi 40 | 41 | elif [[ ${version} = "7" ]]; then 42 | if [[ ${bit} = "x86_64" ]]; then 43 | wget -N -O kernel-headers-c7.rpm https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/ESP6BPY8mhhOn6S3TJQEUdQBOVRbrQ_Sy5T681epEc6c7g?download=1 44 | wget -N -O kernel-c7.rpm https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/Ed_0whzp_VRCkw2oJbXR0W0BFGep10U3-Lridbqwe9Lv5g?download=1 45 | 46 | yum install -y kernel-c7.rpm 47 | yum install -y kernel-headers-c7.rpm 48 | 49 | kernel_version="5.5.10" 50 | else 51 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 52 | fi 53 | 54 | elif [[ ${version} = "8" ]]; then 55 | wget -N -O kernel-c8.rpm https://github.com/ylx2016/kernel/releases/download/5.5.5/kernel-5.5.5-1-c8.x86_64.rpm 56 | wget -N -O kernel-headers-c8.rpm https://github.com/ylx2016/kernel/releases/download/5.5.5/kernel-headers-5.5.5-1-c8.x86_64.rpm 57 | 58 | yum install -y kernel-c8.rpm 59 | yum install -y kernel-headers-c8.rpm 60 | 61 | kernel_version="5.5.5" 62 | fi 63 | 64 | elif [[ "${release}" == "debian" || "${release}" == "ubuntu" ]]; then 65 | if [[ "${release}" == "debian" ]]; then 66 | if [[ ${version} = "8" ]]; then 67 | if [[ ${bit} = "x86_64" ]]; then 68 | wget -N -O linux-image-d8.deb https://github.com/ylx2016/kernel/releases/download/5.5.5/linux-image-5.5.5_5.5.5-1-d8_amd64.deb 69 | wget -N -O linux-headers-d8.deb https://github.com/ylx2016/kernel/releases/download/5.5.5/linux-headers-5.5.5_5.5.5-1-d8_amd64.deb 70 | 71 | dpkg -i linux-image-d8.deb 72 | dpkg -i linux-headers-d8.deb 73 | 74 | kernel_version="5.5.5" 75 | else 76 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 77 | fi 78 | 79 | elif [[ ${version} = "9" ]]; then 80 | if [[ ${bit} = "x86_64" ]]; then 81 | wget -N -O linux-image-d9.deb https://github.com/ylx2016/kernel/releases/download/5.5.5/linux-image-5.5.5_5.5.5-1-d9_amd64.deb 82 | wget -N -O linux-headers-d9.deb https://github.com/ylx2016/kernel/releases/download/5.5.5/linux-headers-5.5.5_5.5.5-1-d9_amd64.deb 83 | 84 | dpkg -i linux-image-d9.deb 85 | dpkg -i linux-headers-d9.deb 86 | 87 | kernel_version="5.5.5" 88 | else 89 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 90 | fi 91 | elif [[ ${version} = "10" ]]; then 92 | if [[ ${bit} = "x86_64" ]]; then 93 | wget -N -O linux-image-d10.deb https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/EY8ps95tSZhAkdbZeaEsMNsBbAbfHeUS0Hzc4Hk2Vr-QMQ?download=1 94 | wget -N -O linux-headers-d10.deb https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/EVkOIxa9afBJm0ouo9XZzDkBVl10vSMMgrd58WUHTJdvfQ?download=1 95 | 96 | dpkg -i linux-image-d10.deb 97 | dpkg -i linux-headers-d10.deb 98 | 99 | kernel_version="5.5.10" 100 | else 101 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 102 | fi 103 | fi 104 | elif [[ "${release}" == "ubuntu" ]]; then 105 | if [[ ${version} = "16" ]]; then 106 | if [[ ${bit} = "x86_64" ]]; then 107 | wget -N -O linux-image-u16.deb https://github.com/ylx2016/kernel/releases/download/5.4.14/linux-image-5.4.14_5.4.14-1-u16_amd64.deb 108 | wget -N -O linux-headers-u16.deb https://github.com/ylx2016/kernel/releases/download/5.4.14/linux-headers-5.4.14_5.4.14-1-u16_amd64.deb 109 | 110 | dpkg -i linux-image-u16.deb 111 | dpkg -i linux-headers-u16.deb 112 | 113 | kernel_version="5.4.14" 114 | else 115 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 116 | fi 117 | 118 | elif [[ ${version} = "18" ]]; then 119 | if [[ ${bit} = "x86_64" ]]; then 120 | wget -N -O linux-image-u18.deb https://github.com/ylx2016/kernel/releases/download/5.4.14/linux-image-5.4.14_5.4.14-1-u18_amd64.deb 121 | wget -N -O linux-headers-u18.deb https://github.com/ylx2016/kernel/releases/download/5.4.14/linux-headers-5.4.14_5.4.14-1-u18_amd64.deb 122 | 123 | dpkg -i linux-image-u18.deb 124 | dpkg -i linux-headers-u18.deb 125 | 126 | kernel_version="5.4.14" 127 | else 128 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 129 | fi 130 | elif [[ ${version} = "19" ]]; then 131 | if [[ ${bit} = "x86_64" ]]; then 132 | wget -N -O linux-image-u19.deb https://github.com/ylx2016/kernel/releases/download/5.4.14/linux-headers-5.4.14_5.4.14-1-u19_amd64.deb 133 | wget -N -O linux-headers-u19.deb https://github.com/ylx2016/kernel/releases/download/5.4.14/linux-image-5.4.14_5.4.14-1-u19_amd64.deb 134 | 135 | dpkg -i linux-image-u19.deb 136 | dpkg -i linux-headers-u19.deb 137 | 138 | kernel_version="5.4.14" 139 | else 140 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 141 | fi 142 | fi 143 | 144 | #else 145 | # wget http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u10_amd64.deb 146 | # wget -N --no-check-certificate http://${github}/bbr/debian-ubuntu/linux-headers-${kernel_version}-all.deb 147 | # wget -N --no-check-certificate http://${github}/bbr/debian-ubuntu/${bit}/linux-headers-${kernel_version}.deb 148 | # wget -N --no-check-certificate http://${github}/bbr/debian-ubuntu/${bit}/linux-image-${kernel_version}.deb 149 | 150 | # dpkg -i libssl1.0.0_1.0.1t-1+deb8u10_amd64.deb 151 | # dpkg -i linux-headers-${kernel_version}-all.deb 152 | # dpkg -i linux-headers-${kernel_version}.deb 153 | # dpkg -i linux-image-${kernel_version}.deb 154 | fi 155 | fi 156 | 157 | cd .. && rm -rf bbr 158 | 159 | detele_kernel 160 | BBR_grub 161 | echo -e "${Tip} ${Red_font_prefix}请检查上面是否有内核信息,无内核千万别重启${Font_color_suffix}" 162 | echo -e "${Tip} ${Red_font_prefix}rescue不是正常内核,要排除这个${Font_color_suffix}" 163 | echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}BBR${Font_color_suffix}" 164 | stty erase '^H' && read -p "需要重启VPS后,才能开启BBR,是否现在重启 ? [Y/n] :" yn 165 | [ -z "${yn}" ] && yn="y" 166 | if [[ $yn == [Yy] ]]; then 167 | echo -e "${Info} VPS 重启中..." 168 | reboot 169 | fi 170 | #echo -e "${Tip} 内核安装完毕,请参考上面的信息检查是否安装成功及手动调整内核启动顺序" 171 | } 172 | 173 | #安装BBRplus内核 4.14.129 174 | installbbrplus(){ 175 | kernel_version="4.14.160-bbrplus" 176 | bit=`uname -m` 177 | rm -rf bbrplus 178 | mkdir bbrplus && cd bbrplus 179 | if [[ "${release}" == "centos" ]]; then 180 | if [[ ${version} = "7" ]]; then 181 | if [[ ${bit} = "x86_64" ]]; then 182 | wget -N -O kernel-headers-c7.rpm https://github.com/cx9208/Linux-NetSpeed/raw/master/bbrplus/centos/7/kernel-headers-4.14.129-bbrplus.rpm 183 | wget -N -O kernel-c7.rpm https://github.com/cx9208/Linux-NetSpeed/raw/master/bbrplus/centos/7/kernel-4.14.129-bbrplus.rpm 184 | 185 | yum install -y kernel-c7.rpm 186 | yum install -y kernel-headers-c7.rpm 187 | 188 | kernel_version="4.14.129_bbrplus" 189 | else 190 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 191 | fi 192 | fi 193 | 194 | elif [[ "${release}" == "debian" || "${release}" == "ubuntu" ]]; then 195 | wget -N -O linux-headers.deb https://github.com/cx9208/Linux-NetSpeed/raw/master/bbrplus/debian-ubuntu/x64/linux-headers-4.14.129-bbrplus.deb 196 | wget -N -O linux-image.deb https://github.com/cx9208/Linux-NetSpeed/raw/master/bbrplus/debian-ubuntu/x64/linux-image-4.14.129-bbrplus.deb 197 | 198 | dpkg -i linux-image.deb 199 | dpkg -i linux-headers.deb 200 | 201 | kernel_version="4.14.129-bbrplus" 202 | fi 203 | 204 | cd .. && rm -rf bbrplus 205 | detele_kernel 206 | BBR_grub 207 | echo -e "${Tip} ${Red_font_prefix}请检查上面是否有内核信息,无内核千万别重启${Font_color_suffix}" 208 | echo -e "${Tip} ${Red_font_prefix}rescue不是正常内核,要排除这个${Font_color_suffix}" 209 | echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}BBRplus${Font_color_suffix}" 210 | stty erase '^H' && read -p "需要重启VPS后,才能开启BBRplus,是否现在重启 ? [Y/n] :" yn 211 | [ -z "${yn}" ] && yn="y" 212 | if [[ $yn == [Yy] ]]; then 213 | echo -e "${Info} VPS 重启中..." 214 | reboot 215 | fi 216 | #echo -e "${Tip} 内核安装完毕,请参考上面的信息检查是否安装成功及手动调整内核启动顺序" 217 | } 218 | 219 | #安装Lotserver内核 220 | installlot(){ 221 | if [[ "${release}" == "centos" ]]; then 222 | rpm --import http://${github}/lotserver/${release}/RPM-GPG-KEY-elrepo.org 223 | yum remove -y kernel-firmware 224 | yum install -y http://${github}/lotserver/${release}/${version}/${bit}/kernel-firmware-${kernel_version}.rpm 225 | yum install -y http://${github}/lotserver/${release}/${version}/${bit}/kernel-${kernel_version}.rpm 226 | yum remove -y kernel-headers 227 | yum install -y http://${github}/lotserver/${release}/${version}/${bit}/kernel-headers-${kernel_version}.rpm 228 | yum install -y http://${github}/lotserver/${release}/${version}/${bit}/kernel-devel-${kernel_version}.rpm 229 | elif [[ "${release}" == "ubuntu" ]]; then 230 | bash <(wget --no-check-certificate -qO- "http://${github}/Debian_Kernel.sh") 231 | elif [[ "${release}" == "debian" ]]; then 232 | bash <(wget --no-check-certificate -qO- "http://${github}/Debian_Kernel.sh") 233 | fi 234 | 235 | detele_kernel 236 | BBR_grub 237 | echo -e "${Tip} ${Red_font_prefix}请检查上面是否有内核信息,无内核千万别重启${Font_color_suffix}" 238 | echo -e "${Tip} ${Red_font_prefix}rescue不是正常内核,要排除这个${Font_color_suffix}" 239 | echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}Lotserver${Font_color_suffix}" 240 | stty erase '^H' && read -p "需要重启VPS后,才能开启Lotserver,是否现在重启 ? [Y/n] :" yn 241 | [ -z "${yn}" ] && yn="y" 242 | if [[ $yn == [Yy] ]]; then 243 | echo -e "${Info} VPS 重启中..." 244 | reboot 245 | fi 246 | #echo -e "${Tip} 内核安装完毕,请参考上面的信息检查是否安装成功及手动调整内核启动顺序" 247 | } 248 | 249 | #安装xanmod内核 from xanmod.org 250 | installxanmod(){ 251 | kernel_version="5.5.1-xanmod1" 252 | bit=`uname -m` 253 | rm -rf xanmod 254 | mkdir xanmod && cd xanmod 255 | if [[ "${release}" == "centos" ]]; then 256 | if [[ ${version} = "7" ]]; then 257 | if [[ ${bit} = "x86_64" ]]; then 258 | wget -N -O kernel-c7.rpm https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/ES1FqBSXMZlJlPgYrSagBCUBb6N2_srwS_e59B2Y74Rksg?download=1 259 | wget -N -O kernel-headers-c7.rpm https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/ERUwIDLM1XdDt4xxv13xJOkBfpaQby-u2XdEr3d9I6ixag?download=1 260 | 261 | yum install -y kernel-c7.rpm 262 | yum install -y kernel-headers-c7.rpm 263 | 264 | kernel_version="5.5.8_xanmod6" 265 | else 266 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 267 | fi 268 | elif [[ ${version} = "8" ]]; then 269 | wget -N -O kernel-c8.rpm https://github.com/ylx2016/kernel/releases/download/5.5.1xanmod/kernel-5.5.1_xanmod1-1-c8.x86_64.rpm 270 | wget -N -O kernel-headers-c8.rpm https://github.com/ylx2016/kernel/releases/download/5.5.1xanmod/kernel-headers-5.5.1_xanmod1-1-c8.x86_64.rpm 271 | 272 | yum install -y kernel-c8.rpm 273 | yum install -y kernel-headers-c8.rpm 274 | 275 | kernel_version="5.5.1_xanmod1" 276 | fi 277 | 278 | elif [[ "${release}" == "debian" ]]; then 279 | if [[ ${version} = "9" ]]; then 280 | if [[ ${bit} = "x86_64" ]]; then 281 | wget -N -O linux-headers-d9.deb https://github.com/ylx2016/kernel/releases/download/5.5.1xanmod/linux-headers-5.5.1-xanmod1_5.5.1-xanmod1-1-d9_amd64.deb 282 | wget -N -O linux-image-d9.deb https://github.com/ylx2016/kernel/releases/download/5.5.1xanmod/linux-image-5.5.1-xanmod1_5.5.1-xanmod1-1-d9_amd64.deb 283 | 284 | dpkg -i linux-image-d9.deb 285 | dpkg -i linux-headers-d9.deb 286 | 287 | #kernel_version="4.14.168-bbrplus" 288 | else 289 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 290 | fi 291 | elif [[ ${version} = "10" ]]; then 292 | if [[ ${bit} = "x86_64" ]]; then 293 | wget -N -O linux-headers-d10.deb https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/EcwO-0rZ3VlFjBNHYoVxy_IBgn2E_viwNx0l2fGHtRwyJw?download=1 294 | wget -N -O linux-image-d10.deb https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/EcJBiKjxLp5Lq0tkTUlXcfEBH2wRr_n83jV4aVvii3q2Fg?download=1 295 | 296 | dpkg -i linux-image-d10.deb 297 | dpkg -i linux-headers-d10.deb 298 | 299 | kernel_version="5.5.8-xanmod6" 300 | else 301 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 302 | fi 303 | fi 304 | fi 305 | 306 | cd .. && rm -rf xanmod 307 | detele_kernel 308 | BBR_grub 309 | echo -e "${Tip} ${Red_font_prefix}请检查上面是否有内核信息,无内核千万别重启${Font_color_suffix}" 310 | echo -e "${Tip} ${Red_font_prefix}rescue不是正常内核,要排除这个${Font_color_suffix}" 311 | echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}BBR${Font_color_suffix}" 312 | stty erase '^H' && read -p "需要重启VPS后,才能开启BBR,是否现在重启 ? [Y/n] :" yn 313 | [ -z "${yn}" ] && yn="y" 314 | if [[ $yn == [Yy] ]]; then 315 | echo -e "${Info} VPS 重启中..." 316 | reboot 317 | fi 318 | #echo -e "${Tip} 内核安装完毕,请参考上面的信息检查是否安装成功及手动调整内核启动顺序" 319 | } 320 | 321 | #安装bbr2内核 322 | installbbr2(){ 323 | kernel_version="5.4.0-rc6" 324 | bit=`uname -m` 325 | rm -rf bbr2 326 | mkdir bbr2 && cd bbr2 327 | if [[ "${release}" == "centos" ]]; then 328 | if [[ ${version} = "7" ]]; then 329 | if [[ ${bit} = "x86_64" ]]; then 330 | wget -N -O kernel-c7.rpm https://github.com/ylx2016/kernel/releases/download/5.4.0r6bbr2/kernel-5.4.0_rc6-1-bbr2-c7.x86_64.rpm 331 | wget -N -O kernel-headers-c7.rpm https://github.com/ylx2016/kernel/releases/download/5.4.0r6bbr2/kernel-headers-5.4.0_rc6-1-bbr2-c7.x86_64.rpm 332 | 333 | yum install -y kernel-c7.rpm 334 | yum install -y kernel-headers-c7.rpm 335 | 336 | kernel_version="5.4.0_rc6" 337 | else 338 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 339 | fi 340 | elif [[ ${version} = "8" ]]; then 341 | wget -N -O kernel-c8.rpm https://github.com/ylx2016/kernel/releases/download/5.4.0r6bbr2/kernel-5.4.0_rc6-1-bbr2-c8.x86_64.rpm 342 | wget -N -O kernel-headers-c8.rpm https://github.com/ylx2016/kernel/releases/download/5.4.0r6bbr2/kernel-headers-5.4.0_rc6-1-bbr2-c8.x86_64.rpm 343 | 344 | yum install -y kernel-c8.rpm 345 | yum install -y kernel-headers-c8.rpm 346 | 347 | kernel_version="5.4.0_rc6" 348 | fi 349 | 350 | elif [[ "${release}" == "debian" ]]; then 351 | if [[ ${version} = "9" ]]; then 352 | if [[ ${bit} = "x86_64" ]]; then 353 | wget -N -O linux-image-d9.deb https://github.com/ylx2016/kernel/releases/download/5.4.0r6bbr2/linux-image-5.4.0-rc6_5.4.0-rc6-1-bbr2-d9_amd64.deb 354 | wget -N -O linux-headers-d9.deb https://github.com/ylx2016/kernel/releases/download/5.4.0r6bbr2/linux-headers-5.4.0-rc6_5.4.0-rc6-1-bbr2-d9_amd64.deb 355 | 356 | dpkg -i linux-image-d9.deb 357 | dpkg -i linux-headers-d9.deb 358 | 359 | #kernel_version="4.14.168-bbrplus" 360 | else 361 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 362 | fi 363 | elif [[ ${version} = "10" ]]; then 364 | if [[ ${bit} = "x86_64" ]]; then 365 | wget -N -O linux-headers-d10.deb https://github.com/ylx2016/kernel/releases/download/5.4.0r6bbr2/linux-headers-5.4.0-rc6_5.4.0-rc6-1-bbr2-d10_amd64.deb 366 | wget -N -O linux-image-d10.deb https://github.com/ylx2016/kernel/releases/download/5.4.0r6bbr2/linux-image-5.4.0-rc6_5.4.0-rc6-1-bbr2-d10_amd64.deb 367 | 368 | dpkg -i linux-image-d10.deb 369 | dpkg -i linux-headers-d10.deb 370 | 371 | #kernel_version="4.14.168-bbrplus" 372 | else 373 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 374 | fi 375 | fi 376 | fi 377 | 378 | cd .. && rm -rf bbr2 379 | detele_kernel 380 | BBR_grub 381 | echo -e "${Tip} ${Red_font_prefix}请检查上面是否有内核信息,无内核千万别重启${Font_color_suffix}" 382 | echo -e "${Tip} ${Red_font_prefix}rescue不是正常内核,要排除这个${Font_color_suffix}" 383 | echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}BBR2${Font_color_suffix}" 384 | stty erase '^H' && read -p "需要重启VPS后,才能开启BBR2,是否现在重启 ? [Y/n] :" yn 385 | [ -z "${yn}" ] && yn="y" 386 | if [[ $yn == [Yy] ]]; then 387 | echo -e "${Info} VPS 重启中..." 388 | reboot 389 | fi 390 | #echo -e "${Tip} 内核安装完毕,请参考上面的信息检查是否安装成功及手动调整内核启动顺序" 391 | } 392 | 393 | #安装Zen内核 394 | installzen(){ 395 | kernel_version="5.5.2-zen" 396 | bit=`uname -m` 397 | rm -rf zen 398 | mkdir zen && cd zen 399 | if [[ "${release}" == "centos" ]]; then 400 | if [[ ${version} = "7" ]]; then 401 | if [[ ${bit} = "x86_64" ]]; then 402 | wget -N -O kernel-c7.rpm https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/EfQb4N8c2bxDlF3mj3SBVHIBGFSg_d1uR4LFzzT0Ii5FWA?download=1 403 | wget -N -O kernel-headers-c7.rpm https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/EfKgMa8vsZBOt0zwXM_lHcUBOYlyH1CyRHrYSRJ5r6a0EQ?download=1 404 | 405 | yum install -y kernel-c7.rpm 406 | yum install -y kernel-headers-c7.rpm 407 | 408 | kernel_version="5.5.10_zen" 409 | else 410 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 411 | fi 412 | elif [[ ${version} = "8" ]]; then 413 | wget -N -O kernel-c8.rpm https://github.com/ylx2016/kernel/releases/download/5.5.2zen/kernel-5.5.2_zen-1-c8.x86_64.rpm 414 | wget -N -O kernel-headers-c8.rpm https://github.com/ylx2016/kernel/releases/download/5.5.2zen/kernel-headers-5.5.2_zen-1-c8.x86_64.rpm 415 | 416 | yum install -y kernel-c8.rpm 417 | yum install -y kernel-headers-c8.rpm 418 | 419 | kernel_version="5.5.2_zen" 420 | fi 421 | 422 | elif [[ "${release}" == "debian" ]]; then 423 | if [[ ${version} = "9" ]]; then 424 | if [[ ${bit} = "x86_64" ]]; then 425 | wget -N -O linux-headers-d9.deb https://github.com/ylx2016/kernel/releases/download/5.5.2zen/linux-headers-5.5.2-zen_5.5.2-zen-1-d9_amd64.deb 426 | wget -N -O linux-image-d9.deb https://github.com/ylx2016/kernel/releases/download/5.5.2zen/linux-image-5.5.2-zen_5.5.2-zen-1-d9_amd64.deb 427 | 428 | dpkg -i linux-image-d9.deb 429 | dpkg -i linux-headers-d9.deb 430 | 431 | #kernel_version="4.14.168-bbrplus" 432 | else 433 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 434 | fi 435 | elif [[ ${version} = "10" ]]; then 436 | if [[ ${bit} = "x86_64" ]]; then 437 | wget -N -O linux-headers-d10.deb https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/EShzFq8Jlv1PthbYlNNvLjIB2-hktrkPXxwd9mqcXgmcyg?download=1 438 | wget -N -O linux-image-d10.deb https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/ERXzOc-2BzJInOxBgKo62OkBgcI9-O-fw0M8U2B4NazuLg?download=1 439 | 440 | dpkg -i linux-image-d10.deb 441 | dpkg -i linux-headers-d10.deb 442 | 443 | kernel_version="5.5.10-zen" 444 | else 445 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 446 | fi 447 | fi 448 | fi 449 | 450 | cd .. && rm -rf zen 451 | detele_kernel 452 | BBR_grub 453 | echo -e "${Tip} ${Red_font_prefix}请检查上面是否有内核信息,无内核千万别重启${Font_color_suffix}" 454 | echo -e "${Tip} ${Red_font_prefix}rescue不是正常内核,要排除这个${Font_color_suffix}" 455 | echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}BBR${Font_color_suffix}" 456 | stty erase '^H' && read -p "需要重启VPS后,才能开启BBR,是否现在重启 ? [Y/n] :" yn 457 | [ -z "${yn}" ] && yn="y" 458 | if [[ $yn == [Yy] ]]; then 459 | echo -e "${Info} VPS 重启中..." 460 | reboot 461 | fi 462 | #echo -e "${Tip} 内核安装完毕,请参考上面的信息检查是否安装成功及手动调整内核启动顺序" 463 | } 464 | 465 | #安装bbrplus 新内核 466 | installbbrplusnew(){ 467 | kernel_version="4.14.173-bbrplus" 468 | bit=`uname -m` 469 | rm -rf bbrplusnew 470 | mkdir bbrplusnew && cd bbrplusnew 471 | if [[ "${release}" == "centos" ]]; then 472 | if [[ ${version} = "7" ]]; then 473 | if [[ ${bit} = "x86_64" ]]; then 474 | wget -N -O kernel-c7.rpm https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/EWu6fCx32KxEvBrWqe5pZbAB6Y13ogTMfMfPnQWzfQpmiQ?download=1 475 | wget -N -O kernel-headers-c7.rpm https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/EZVCeWQA8rdMrNMysFO2V_0BJWB6Mlrc-IzLD_Xni4HuTQ?download=1 476 | 477 | yum install -y kernel-c7.rpm 478 | yum install -y kernel-headers-c7.rpm 479 | 480 | kernel_version="4.14.173_bbrplus" 481 | else 482 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 483 | fi 484 | fi 485 | elif [[ "${release}" == "debian" ]]; then 486 | if [[ ${version} = "10" ]]; then 487 | if [[ ${bit} = "x86_64" ]]; then 488 | wget -N -O linux-headers-d10.deb https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/ERSKfg1XkUJImM9fWZ3N8WwB3ygLGBzAT3-2Qf37UOokcw?download=1 489 | wget -N -O linux-image-d10.deb https://chinagz2018-my.sharepoint.com/:u:/g/personal/ylx_chinagz2018_onmicrosoft_com/EeSISwYaxadNr81olVZh_usBHwvnt0J6W__-4nV-AKY9HQ?download=1 490 | 491 | dpkg -i linux-image-d10.deb 492 | dpkg -i linux-headers-d10.deb 493 | 494 | kernel_version="4.14.173-bbrplus" 495 | else 496 | echo -e "${Error} 还在用32位内核,别再见了 !" && exit 1 497 | fi 498 | fi 499 | fi 500 | 501 | cd .. && rm -rf bbrplusnew 502 | detele_kernel 503 | BBR_grub 504 | echo -e "${Tip} ${Red_font_prefix}请检查上面是否有内核信息,无内核千万别重启${Font_color_suffix}" 505 | echo -e "${Tip} ${Red_font_prefix}rescue不是正常内核,要排除这个${Font_color_suffix}" 506 | echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}BBRplus${Font_color_suffix}" 507 | stty erase '^H' && read -p "需要重启VPS后,才能开启BBRplus,是否现在重启 ? [Y/n] :" yn 508 | [ -z "${yn}" ] && yn="y" 509 | if [[ $yn == [Yy] ]]; then 510 | echo -e "${Info} VPS 重启中..." 511 | reboot 512 | fi 513 | #echo -e "${Tip} 内核安装完毕,请参考上面的信息检查是否安装成功及手动调整内核启动顺序" 514 | 515 | } 516 | 517 | #启用BBR+fq 518 | startbbrfq(){ 519 | remove_all 520 | echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf 521 | echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf 522 | sysctl -p 523 | echo -e "${Info}BBR+FQ启动成功!" 524 | } 525 | 526 | #启用BBR+cake 527 | startbbrcake(){ 528 | remove_all 529 | echo "net.core.default_qdisc=cake" >> /etc/sysctl.conf 530 | echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf 531 | sysctl -p 532 | echo -e "${Info}BBR+cake启动成功!" 533 | } 534 | 535 | #启用BBRplus 536 | startbbrplus(){ 537 | remove_all 538 | echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf 539 | echo "net.ipv4.tcp_congestion_control=bbrplus" >> /etc/sysctl.conf 540 | sysctl -p 541 | echo -e "${Info}BBRplus启动成功!" 542 | } 543 | 544 | #启用Lotserver 545 | startlotserver(){ 546 | remove_all 547 | if [[ "${release}" == "centos" ]]; then 548 | yum install ethtool 549 | else 550 | apt-get update 551 | apt-get install ethtool 552 | fi 553 | bash <(wget --no-check-certificate -qO- https://raw.githubusercontent.com/chiakge/lotServer/master/Install.sh) install 554 | sed -i '/advinacc/d' /appex/etc/config 555 | sed -i '/maxmode/d' /appex/etc/config 556 | echo -e "advinacc=\"1\" 557 | maxmode=\"1\"">>/appex/etc/config 558 | /appex/bin/lotServer.sh restart 559 | start_menu 560 | } 561 | 562 | #启用BBR2+FQ 563 | startbbr2fq(){ 564 | remove_all 565 | echo "net.ipv4.tcp_ecn=0" >> /etc/sysctl.conf 566 | echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf 567 | echo "net.ipv4.tcp_congestion_control=bbr2" >> /etc/sysctl.conf 568 | sysctl -p 569 | echo -e "${Info}BBR2启动成功!" 570 | } 571 | 572 | #启用BBR2+CAKE 573 | startbbr2cake(){ 574 | remove_all 575 | echo "net.ipv4.tcp_ecn=0" >> /etc/sysctl.conf 576 | echo "net.core.default_qdisc=cake" >> /etc/sysctl.conf 577 | echo "net.ipv4.tcp_congestion_control=bbr2" >> /etc/sysctl.conf 578 | sysctl -p 579 | echo -e "${Info}BBR2启动成功!" 580 | } 581 | 582 | #启用BBR2+FQ+ecn 583 | startbbr2fqecn(){ 584 | remove_all 585 | echo "net.ipv4.tcp_ecn=1" >> /etc/sysctl.conf 586 | echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf 587 | echo "net.ipv4.tcp_congestion_control=bbr2" >> /etc/sysctl.conf 588 | sysctl -p 589 | echo -e "${Info}BBR2启动成功!" 590 | } 591 | 592 | #启用BBR2+CAKE+ecn 593 | startbbr2cakeecn(){ 594 | remove_all 595 | echo "net.ipv4.tcp_ecn=1" >> /etc/sysctl.conf 596 | echo "net.core.default_qdisc=cake" >> /etc/sysctl.conf 597 | echo "net.ipv4.tcp_congestion_control=bbr2" >> /etc/sysctl.conf 598 | sysctl -p 599 | echo -e "${Info}BBR2启动成功!" 600 | } 601 | 602 | 603 | #卸载全部加速 604 | remove_all(){ 605 | rm -rf bbrmod 606 | sed -i '/net.ipv4.tcp_retries2/d' /etc/sysctl.conf 607 | sed -i '/net.ipv4.tcp_slow_start_after_idle/d' /etc/sysctl.conf 608 | sed -i '/net.ipv4.tcp_fastopen/d' /etc/sysctl.conf 609 | sed -i '/net.ipv4.tcp_ecn/d' /etc/sysctl.conf 610 | sed -i '/net.core.default_qdisc/d' /etc/sysctl.conf 611 | sed -i '/net.ipv4.tcp_congestion_control/d' /etc/sysctl.conf 612 | sed -i '/fs.file-max/d' /etc/sysctl.conf 613 | sed -i '/net.core.rmem_max/d' /etc/sysctl.conf 614 | sed -i '/net.core.wmem_max/d' /etc/sysctl.conf 615 | sed -i '/net.core.rmem_default/d' /etc/sysctl.conf 616 | sed -i '/net.core.wmem_default/d' /etc/sysctl.conf 617 | sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.conf 618 | sed -i '/net.core.somaxconn/d' /etc/sysctl.conf 619 | sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf 620 | sed -i '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.conf 621 | sed -i '/net.ipv4.tcp_tw_recycle/d' /etc/sysctl.conf 622 | sed -i '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.conf 623 | sed -i '/net.ipv4.tcp_keepalive_time/d' /etc/sysctl.conf 624 | sed -i '/net.ipv4.ip_local_port_range/d' /etc/sysctl.conf 625 | sed -i '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.conf 626 | sed -i '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.conf 627 | sed -i '/net.ipv4.tcp_rmem/d' /etc/sysctl.conf 628 | sed -i '/net.ipv4.tcp_wmem/d' /etc/sysctl.conf 629 | sed -i '/net.ipv4.tcp_mtu_probing/d' /etc/sysctl.conf 630 | sed -i '/net.ipv4.ip_forward/d' /etc/sysctl.conf 631 | sed -i '/fs.inotify.max_user_instances/d' /etc/sysctl.conf 632 | sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf 633 | sed -i '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.conf 634 | sed -i '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.conf 635 | sed -i '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.conf 636 | sed -i '/net.ipv4.ip_local_port_range/d' /etc/sysctl.conf 637 | sed -i '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.conf 638 | sed -i '/net.ipv4.route.gc_timeout/d' /etc/sysctl.conf 639 | sed -i '/net.ipv4.tcp_synack_retries/d' /etc/sysctl.conf 640 | sed -i '/net.ipv4.tcp_syn_retries/d' /etc/sysctl.conf 641 | sed -i '/net.core.somaxconn/d' /etc/sysctl.conf 642 | sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.conf 643 | sed -i '/net.ipv4.tcp_timestamps/d' /etc/sysctl.conf 644 | sed -i '/net.ipv4.tcp_max_orphans/d' /etc/sysctl.conf 645 | if [[ -e /appex/bin/lotServer.sh ]]; then 646 | bash <(wget --no-check-certificate -qO- https://github.com/MoeClub/lotServer/raw/master/Install.sh) uninstall 647 | fi 648 | clear 649 | echo -e "${Info}:清除加速完成。" 650 | sleep 1s 651 | } 652 | 653 | #优化系统配置 654 | optimizing_system(){ 655 | sed -i '/net.ipv4.tcp_retries2/d' /etc/sysctl.conf 656 | sed -i '/net.ipv4.tcp_slow_start_after_idle/d' /etc/sysctl.conf 657 | sed -i '/net.ipv4.tcp_fastopen/d' /etc/sysctl.conf 658 | sed -i '/fs.file-max/d' /etc/sysctl.conf 659 | sed -i '/fs.inotify.max_user_instances/d' /etc/sysctl.conf 660 | sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf 661 | sed -i '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.conf 662 | sed -i '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.conf 663 | sed -i '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.conf 664 | sed -i '/net.ipv4.ip_local_port_range/d' /etc/sysctl.conf 665 | sed -i '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.conf 666 | sed -i '/net.ipv4.route.gc_timeout/d' /etc/sysctl.conf 667 | sed -i '/net.ipv4.tcp_synack_retries/d' /etc/sysctl.conf 668 | sed -i '/net.ipv4.tcp_syn_retries/d' /etc/sysctl.conf 669 | sed -i '/net.core.somaxconn/d' /etc/sysctl.conf 670 | sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.conf 671 | sed -i '/net.ipv4.tcp_timestamps/d' /etc/sysctl.conf 672 | sed -i '/net.ipv4.tcp_max_orphans/d' /etc/sysctl.conf 673 | sed -i '/net.ipv4.ip_forward/d' /etc/sysctl.conf 674 | echo "net.ipv4.tcp_retries2 = 8 675 | net.ipv4.tcp_slow_start_after_idle = 0 676 | net.ipv4.tcp_fastopen = 3 677 | fs.file-max = 1000000 678 | fs.inotify.max_user_instances = 8192 679 | net.ipv4.tcp_syncookies = 1 680 | net.ipv4.tcp_fin_timeout = 30 681 | net.ipv4.tcp_tw_reuse = 1 682 | net.ipv4.ip_local_port_range = 1024 65000 683 | net.ipv4.tcp_max_syn_backlog = 16384 684 | net.ipv4.tcp_max_tw_buckets = 6000 685 | net.ipv4.route.gc_timeout = 100 686 | net.ipv4.tcp_syn_retries = 1 687 | net.ipv4.tcp_synack_retries = 1 688 | net.core.somaxconn = 32768 689 | net.core.netdev_max_backlog = 32768 690 | net.ipv4.tcp_timestamps = 0 691 | net.ipv4.tcp_max_orphans = 32768 692 | # forward ipv4 693 | net.ipv4.ip_forward = 1">>/etc/sysctl.conf 694 | sysctl -p 695 | echo "* soft nofile 1000000 696 | * hard nofile 1000000">/etc/security/limits.conf 697 | echo "ulimit -SHn 1000000">>/etc/profile 698 | read -p "需要重启VPS后,才能生效系统优化配置,是否现在重启 ? [Y/n] :" yn 699 | [ -z "${yn}" ] && yn="y" 700 | if [[ $yn == [Yy] ]]; then 701 | echo -e "${Info} VPS 重启中..." 702 | reboot 703 | fi 704 | } 705 | #更新脚本 706 | Update_Shell(){ 707 | echo -e "当前版本为 [ ${sh_ver} ],开始检测最新版本..." 708 | sh_new_ver=$(wget --no-check-certificate -qO- "https://${github}/tcp.sh"|grep 'sh_ver="'|awk -F "=" '{print $NF}'|sed 's/\"//g'|head -1) 709 | [[ -z ${sh_new_ver} ]] && echo -e "${Error} 检测最新版本失败 !" && start_menu 710 | if [[ ${sh_new_ver} != ${sh_ver} ]]; then 711 | echo -e "发现新版本[ ${sh_new_ver} ],是否更新?[Y/n]" 712 | read -p "(默认: y):" yn 713 | [[ -z "${yn}" ]] && yn="y" 714 | if [[ ${yn} == [Yy] ]]; then 715 | wget -N --no-check-certificate http://${github}/tcp.sh && chmod +x tcp.sh 716 | echo -e "脚本已更新为最新版本[ ${sh_new_ver} ] !" 717 | else 718 | echo && echo " 已取消..." && echo 719 | fi 720 | else 721 | echo -e "当前已是最新版本[ ${sh_new_ver} ] !" 722 | sleep 5s 723 | fi 724 | } 725 | 726 | #切换到不卸载内核版本 727 | gototcpx(){ 728 | clear 729 | wget -N --no-check-certificate "https://github.000060000.xyz/tcpx.sh" && chmod +x tcpx.sh && ./tcpx.sh 730 | } 731 | 732 | #开始菜单 733 | start_menu(){ 734 | clear 735 | echo && echo -e " TCP加速 一键安装管理脚本 ${Red_font_prefix}[v${sh_ver}]${Font_color_suffix} 736 | 更新内容及反馈: https://blog.ylx.me/archives/783.html 737 | 738 | ${Green_font_prefix}0.${Font_color_suffix} 升级脚本 739 | ${Green_font_prefix}9.${Font_color_suffix} 切换到不卸载内核版本 740 | ————————————内核管理———————————— 741 | ${Green_font_prefix}1.${Font_color_suffix} 安装 BBR原版内核 - 5.4.14/5.5.5/5.5.10 742 | ${Green_font_prefix}2.${Font_color_suffix} 安装 BBRplus版内核 - 4.14.129 743 | ${Green_font_prefix}3.${Font_color_suffix} 安装 Lotserver(锐速)内核 - 多种 744 | ${Green_font_prefix}4.${Font_color_suffix} 安装 xanmod版内核 - 5.5.1/5.5.8 745 | ${Green_font_prefix}5.${Font_color_suffix} 安装 BBR2测试版内核 - 5.4.0 746 | ${Green_font_prefix}6.${Font_color_suffix} 安装 Zen版内核 - 5.5.2/5.5.10 747 | ${Green_font_prefix}7.${Font_color_suffix} 安装 BBRplus新版内核 - 4.14.173 748 | ————————————加速管理———————————— 749 | ${Green_font_prefix}11.${Font_color_suffix} 使用BBR+FQ加速 750 | ${Green_font_prefix}12.${Font_color_suffix} 使用BBR+CAKE加速 751 | ${Green_font_prefix}13.${Font_color_suffix} 使用BBRplus+FQ版加速 752 | ${Green_font_prefix}14.${Font_color_suffix} 使用Lotserver(锐速)加速 753 | ${Green_font_prefix}15.${Font_color_suffix} 使用BBR2+FQ加速 754 | ${Green_font_prefix}16.${Font_color_suffix} 使用BBR2+CAKE加速 755 | ${Green_font_prefix}17.${Font_color_suffix} 使用BBR2+FQ+ECN加速 756 | ${Green_font_prefix}18.${Font_color_suffix} 使用BBR2+CAKE+ECN加速 757 | ————————————杂项管理———————————— 758 | ${Green_font_prefix}21.${Font_color_suffix} 卸载全部加速 759 | ${Green_font_prefix}22.${Font_color_suffix} 系统配置优化 760 | ${Green_font_prefix}23.${Font_color_suffix} 退出脚本 761 | ————————————————————————————————" && echo 762 | 763 | check_status 764 | echo -e " 当前内核为:${Font_color_suffix}${kernel_version_r}${Font_color_suffix}" 765 | if [[ ${kernel_status} == "noinstall" ]]; then 766 | echo -e " 当前状态: ${Green_font_prefix}未安装${Font_color_suffix} 加速内核 ${Red_font_prefix}请先安装内核${Font_color_suffix}" 767 | else 768 | echo -e " 当前状态: ${Green_font_prefix}已安装${Font_color_suffix} ${_font_prefix}${kernel_status}${Font_color_suffix} 加速内核 , ${Green_font_prefix}${run_status}${Font_color_suffix}" 769 | 770 | fi 771 | echo -e " 当前拥塞控制算法为: ${Green_font_prefix}${net_congestion_control}${Font_color_suffix} 当前队列算法为: ${Green_font_prefix}${net_qdisc}${Font_color_suffix} " 772 | 773 | echo 774 | read -p " 请输入数字 :" num 775 | case "$num" in 776 | 0) 777 | Update_Shell 778 | ;; 779 | 1) 780 | check_sys_bbr 781 | ;; 782 | 2) 783 | check_sys_bbrplus 784 | ;; 785 | 3) 786 | check_sys_Lotsever 787 | ;; 788 | 4) 789 | check_sys_xanmod 790 | ;; 791 | 5) 792 | check_sys_bbr2 793 | ;; 794 | 6) 795 | check_sys_zen 796 | ;; 797 | 7) 798 | check_sys_bbrplusnew 799 | ;; 800 | 9) 801 | gototcpx 802 | ;; 803 | 11) 804 | startbbrfq 805 | ;; 806 | 12) 807 | startbbrcake 808 | ;; 809 | 13) 810 | startbbrplus 811 | ;; 812 | 14) 813 | startlotserver 814 | ;; 815 | 15) 816 | startbbr2fq 817 | ;; 818 | 16) 819 | startbbr2cake 820 | ;; 821 | 17) 822 | startbbr2fqecn 823 | ;; 824 | 18) 825 | startbbr2cakeecn 826 | ;; 827 | 21) 828 | remove_all 829 | ;; 830 | 22) 831 | optimizing_system 832 | ;; 833 | 23) 834 | exit 1 835 | ;; 836 | *) 837 | clear 838 | echo -e "${Error}:请输入正确数字 [0-11]" 839 | sleep 5s 840 | start_menu 841 | ;; 842 | esac 843 | } 844 | #############内核管理组件############# 845 | 846 | #删除多余内核 847 | detele_kernel(){ 848 | if [[ "${release}" == "centos" ]]; then 849 | rpm_total=`rpm -qa | grep kernel | grep -v "${kernel_version}" | grep -v "noarch" | wc -l` 850 | if [ "${rpm_total}" > "1" ]; then 851 | echo -e "检测到 ${rpm_total} 个其余内核,开始卸载..." 852 | for((integer = 1; integer <= ${rpm_total}; integer++)); do 853 | rpm_del=`rpm -qa | grep kernel | grep -v "${kernel_version}" | grep -v "noarch" | head -${integer}` 854 | echo -e "开始卸载 ${rpm_del} 内核..." 855 | rpm --nodeps -e ${rpm_del} 856 | echo -e "卸载 ${rpm_del} 内核卸载完成,继续..." 857 | done 858 | echo --nodeps -e "内核卸载完毕,继续..." 859 | else 860 | echo -e " 检测到 内核 数量不正确,请检查 !" && exit 1 861 | fi 862 | elif [[ "${release}" == "debian" || "${release}" == "ubuntu" ]]; then 863 | deb_total=`dpkg -l | grep linux-image | awk '{print $2}' | grep -v "${kernel_version}" | wc -l` 864 | if [ "${deb_total}" > "1" ]; then 865 | echo -e "检测到 ${deb_total} 个其余内核,开始卸载..." 866 | for((integer = 1; integer <= ${deb_total}; integer++)); do 867 | deb_del=`dpkg -l|grep linux-image | awk '{print $2}' | grep -v "${kernel_version}" | head -${integer}` 868 | echo -e "开始卸载 ${deb_del} 内核..." 869 | apt-get purge -y ${deb_del} 870 | echo -e "卸载 ${deb_del} 内核卸载完成,继续..." 871 | done 872 | echo -e "内核卸载完毕,继续..." 873 | else 874 | echo -e " 检测到 内核 数量不正确,请检查 !" && exit 1 875 | fi 876 | fi 877 | } 878 | 879 | #更新引导 880 | BBR_grub(){ 881 | if [[ "${release}" == "centos" ]]; then 882 | if [[ ${version} = "6" ]]; then 883 | if [ ! -f "/boot/grub/grub.conf" ]; then 884 | echo -e "${Error} /boot/grub/grub.conf 找不到,请检查." 885 | exit 1 886 | fi 887 | sed -i 's/^default=.*/default=0/g' /boot/grub/grub.conf 888 | elif [[ ${version} = "7" ]]; then 889 | if [ -f "/boot/grub2/grub.cfg" ]; then 890 | grub2-mkconfig -o /boot/grub2/grub.cfg 891 | grub2-set-default 0 892 | exit 1 893 | elif [ -f "/boot/efi/EFI/centos/grub.cfg" ]; then 894 | grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg 895 | grub2-set-default 0 896 | exit 1 897 | else 898 | echo -e "${Error} grub.cfg 找不到,请检查." 899 | fi 900 | #grub2-mkconfig -o /boot/grub2/grub.cfg 901 | #grub2-set-default 0 902 | 903 | elif [[ ${version} = "8" ]]; then 904 | grub2-mkconfig -o /boot/grub2/grub.cfg 905 | grubby --info=ALL|awk -F= '$1=="kernel" {print i++ " : " $2}' 906 | fi 907 | elif [[ "${release}" == "debian" || "${release}" == "ubuntu" ]]; then 908 | /usr/sbin/update-grub 909 | fi 910 | } 911 | 912 | #############内核管理组件############# 913 | 914 | 915 | 916 | #############系统检测组件############# 917 | 918 | #检查系统 919 | check_sys(){ 920 | if [[ -f /etc/redhat-release ]]; then 921 | release="centos" 922 | elif cat /etc/issue | grep -q -E -i "debian"; then 923 | release="debian" 924 | elif cat /etc/issue | grep -q -E -i "ubuntu"; then 925 | release="ubuntu" 926 | elif cat /etc/issue | grep -q -E -i "centos|red hat|redhat"; then 927 | release="centos" 928 | elif cat /proc/version | grep -q -E -i "debian"; then 929 | release="debian" 930 | elif cat /proc/version | grep -q -E -i "ubuntu"; then 931 | release="ubuntu" 932 | elif cat /proc/version | grep -q -E -i "centos|red hat|redhat"; then 933 | release="centos" 934 | fi 935 | 936 | #处理ca证书 937 | if [[ "${release}" == "centos" ]]; then 938 | yum install ca-certificates -y 939 | update-ca-trust force-enable 940 | elif [[ "${release}" == "debian" || "${release}" == "ubuntu" ]]; then 941 | apt-get install ca-certificates -y 942 | update-ca-certificates 943 | fi 944 | } 945 | 946 | #检查Linux版本 947 | check_version(){ 948 | if [[ -s /etc/redhat-release ]]; then 949 | version=`grep -oE "[0-9.]+" /etc/redhat-release | cut -d . -f 1` 950 | else 951 | version=`grep -oE "[0-9.]+" /etc/issue | cut -d . -f 1` 952 | fi 953 | bit=`uname -m` 954 | if [[ ${bit} = "x86_64" ]]; then 955 | bit="x64" 956 | else 957 | bit="x32" 958 | fi 959 | } 960 | 961 | #检查安装bbr的系统要求 962 | check_sys_bbr(){ 963 | check_version 964 | if [[ "${release}" == "centos" ]]; then 965 | if [[ ${version} = "6" || ${version} = "7" || ${version} = "8" ]]; then 966 | installbbr 967 | else 968 | echo -e "${Error} BBR内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 969 | fi 970 | elif [[ "${release}" == "debian" ]]; then 971 | if [[ ${version} = "8" || ${version} = "9" || ${version} = "10" ]]; then 972 | installbbr 973 | else 974 | echo -e "${Error} BBR内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 975 | fi 976 | elif [[ "${release}" == "ubuntu" ]]; then 977 | if [[ ${version} = "16" || ${version} = "18" || ${version} = "19" ]]; then 978 | installbbr 979 | else 980 | echo -e "${Error} BBR内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 981 | fi 982 | else 983 | echo -e "${Error} BBR内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 984 | fi 985 | } 986 | 987 | check_sys_bbrplus(){ 988 | check_version 989 | if [[ "${release}" == "centos" ]]; then 990 | if [[ ${version} = "7" ]]; then 991 | installbbrplus 992 | else 993 | echo -e "${Error} BBRplus内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 994 | fi 995 | elif [[ "${release}" == "debian" ]]; then 996 | if [[ ${version} = "8" || ${version} = "9" || ${version} = "10" ]]; then 997 | installbbrplus 998 | else 999 | echo -e "${Error} BBRplus内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1000 | fi 1001 | elif [[ "${release}" == "ubuntu" ]]; then 1002 | if [[ ${version} = "16" || ${version} = "18" || ${version} = "19" ]]; then 1003 | installbbrplus 1004 | else 1005 | echo -e "${Error} BBRplus内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1006 | fi 1007 | else 1008 | echo -e "${Error} BBRplus内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1009 | fi 1010 | } 1011 | 1012 | check_sys_bbrplusnew(){ 1013 | check_version 1014 | if [[ "${release}" == "centos" ]]; then 1015 | if [[ ${version} = "7" ]]; then 1016 | installbbrplusnew 1017 | else 1018 | echo -e "${Error} BBRplusNew内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1019 | fi 1020 | elif [[ "${release}" == "debian" ]]; then 1021 | if [[ ${version} = "10" ]]; then 1022 | installbbrplusnew 1023 | else 1024 | echo -e "${Error} BBRplusNew内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1025 | fi 1026 | else 1027 | echo -e "${Error} BBRplusNew内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1028 | fi 1029 | } 1030 | 1031 | check_sys_xanmod(){ 1032 | check_version 1033 | if [[ "${release}" == "centos" ]]; then 1034 | if [[ ${version} = "7" || ${version} = "8" ]]; then 1035 | installxanmod 1036 | else 1037 | echo -e "${Error} xanmod内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1038 | fi 1039 | elif [[ "${release}" == "debian" ]]; then 1040 | if [[ ${version} = "9" || ${version} = "10" ]]; then 1041 | installxanmod 1042 | else 1043 | echo -e "${Error} xanmod内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1044 | fi 1045 | elif [[ "${release}" == "ubuntu" ]]; then 1046 | echo -e "${Error} xanmod内核不支持当前系统 ${release} ${version} ${bit} ,去xanmod.org 官网安装吧!" && exit 1 1047 | else 1048 | echo -e "${Error} xanmod内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1049 | fi 1050 | } 1051 | 1052 | check_sys_bbr2(){ 1053 | check_version 1054 | if [[ "${release}" == "centos" ]]; then 1055 | if [[ ${version} = "7" || ${version} = "8" ]]; then 1056 | installbbr2 1057 | else 1058 | echo -e "${Error} bbr2内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1059 | fi 1060 | elif [[ "${release}" == "debian" ]]; then 1061 | if [[ ${version} = "9" || ${version} = "10" ]]; then 1062 | installbbr2 1063 | else 1064 | echo -e "${Error} bbr2内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1065 | fi 1066 | elif [[ "${release}" == "ubuntu" ]]; then 1067 | echo -e "${Error} bbr2内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1068 | else 1069 | echo -e "${Error} bbr2内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1070 | fi 1071 | } 1072 | 1073 | 1074 | check_sys_zen(){ 1075 | check_version 1076 | if [[ "${release}" == "centos" ]]; then 1077 | if [[ ${version} = "7" || ${version} = "8" ]]; then 1078 | installzen 1079 | else 1080 | echo -e "${Error} zen内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1081 | fi 1082 | elif [[ "${release}" == "debian" ]]; then 1083 | if [[ ${version} = "9" || ${version} = "10" ]]; then 1084 | installzen 1085 | else 1086 | echo -e "${Error} zen内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1087 | fi 1088 | elif [[ "${release}" == "ubuntu" ]]; then 1089 | echo -e "${Error} zen内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1090 | else 1091 | echo -e "${Error} zen内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1092 | fi 1093 | } 1094 | 1095 | #检查安装Lotsever的系统要求 1096 | check_sys_Lotsever(){ 1097 | check_version 1098 | if [[ "${release}" == "centos" ]]; then 1099 | if [[ ${version} == "6" ]]; then 1100 | kernel_version="2.6.32-504" 1101 | installlot 1102 | elif [[ ${version} == "7" ]]; then 1103 | yum -y install net-tools 1104 | kernel_version="4.11.2-1" 1105 | installlot 1106 | else 1107 | echo -e "${Error} Lotsever不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1108 | fi 1109 | elif [[ "${release}" == "debian" ]]; then 1110 | if [[ ${version} = "7" || ${version} = "8" ]]; then 1111 | if [[ ${bit} == "x64" ]]; then 1112 | kernel_version="3.16.0-4" 1113 | installlot 1114 | elif [[ ${bit} == "x32" ]]; then 1115 | kernel_version="3.2.0-4" 1116 | installlot 1117 | fi 1118 | elif [[ ${version} = "9" ]]; then 1119 | if [[ ${bit} == "x64" ]]; then 1120 | kernel_version="4.9.0-4" 1121 | installlot 1122 | fi 1123 | else 1124 | echo -e "${Error} Lotsever不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1125 | fi 1126 | elif [[ "${release}" == "ubuntu" ]]; then 1127 | if [[ ${version} -ge "12" ]]; then 1128 | if [[ ${bit} == "x64" ]]; then 1129 | kernel_version="4.4.0-47" 1130 | installlot 1131 | elif [[ ${bit} == "x32" ]]; then 1132 | kernel_version="3.13.0-29" 1133 | installlot 1134 | fi 1135 | else 1136 | echo -e "${Error} Lotsever不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1137 | fi 1138 | else 1139 | echo -e "${Error} Lotsever不支持当前系统 ${release} ${version} ${bit} !" && exit 1 1140 | fi 1141 | } 1142 | 1143 | check_status(){ 1144 | kernel_version=`uname -r | awk -F "-" '{print $1}'` 1145 | kernel_version_full=`uname -r` 1146 | net_congestion_control=`cat /proc/sys/net/ipv4/tcp_congestion_control | awk '{print $1}'` 1147 | net_qdisc=`cat /proc/sys/net/core/default_qdisc | awk '{print $1}'` 1148 | kernel_version_r=`uname -r | awk '{print $1}'` 1149 | if [[ ${kernel_version_full} = "4.14.168-bbrplus" || ${kernel_version_full} = "4.14.98-bbrplus" || ${kernel_version_full} = "4.14.129-bbrplus" || ${kernel_version_full} = "4.14.160-bbrplus" || ${kernel_version_full} = "4.14.166-bbrplus" || ${kernel_version_full} = "4.14.161-bbrplus" ]]; then 1150 | kernel_status="BBRplus" 1151 | elif [[ ${kernel_version} = "3.10.0" || ${kernel_version} = "3.16.0" || ${kernel_version} = "3.2.0" || ${kernel_version} = "4.4.0" || ${kernel_version} = "3.13.0" || ${kernel_version} = "2.6.32" || ${kernel_version} = "4.9.0" || ${kernel_version} = "4.11.2" ]]; then 1152 | kernel_status="Lotserver" 1153 | 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" ]]; then 1154 | kernel_status="BBR" 1155 | else 1156 | kernel_status="noinstall" 1157 | fi 1158 | 1159 | 1160 | if [[ ${kernel_status} == "BBR" ]]; then 1161 | run_status=`cat /proc/sys/net/ipv4/tcp_congestion_control | awk '{print $1}'` 1162 | if [[ ${run_status} == "bbr" ]]; then 1163 | run_status=`cat /proc/sys/net/ipv4/tcp_congestion_control | awk '{print $1}'` 1164 | if [[ ${run_status} == "bbr" ]]; then 1165 | run_status="BBR启动成功" 1166 | else 1167 | run_status="BBR启动失败" 1168 | fi 1169 | elif [[ ${run_status} == "bbr2" ]]; then 1170 | run_status=`cat /proc/sys/net/ipv4/tcp_congestion_control | awk '{print $1}'` 1171 | if [[ ${run_status} == "bbr2" ]]; then 1172 | run_status="BBR2启动成功" 1173 | else 1174 | run_status="BBR2启动失败" 1175 | fi 1176 | elif [[ ${run_status} == "tsunami" ]]; then 1177 | run_status=`lsmod | grep "tsunami" | awk '{print $1}'` 1178 | if [[ ${run_status} == "tcp_tsunami" ]]; then 1179 | run_status="BBR魔改版启动成功" 1180 | else 1181 | run_status="BBR魔改版启动失败" 1182 | fi 1183 | elif [[ ${run_status} == "nanqinlang" ]]; then 1184 | run_status=`lsmod | grep "nanqinlang" | awk '{print $1}'` 1185 | if [[ ${run_status} == "tcp_nanqinlang" ]]; then 1186 | run_status="暴力BBR魔改版启动成功" 1187 | else 1188 | run_status="暴力BBR魔改版启动失败" 1189 | fi 1190 | else 1191 | run_status="未安装加速模块" 1192 | fi 1193 | 1194 | elif [[ ${kernel_status} == "Lotserver" ]]; then 1195 | if [[ -e /appex/bin/lotServer.sh ]]; then 1196 | run_status=`bash /appex/bin/lotServer.sh status | grep "LotServer" | awk '{print $3}'` 1197 | if [[ ${run_status} = "running!" ]]; then 1198 | run_status="启动成功" 1199 | else 1200 | run_status="启动失败" 1201 | fi 1202 | else 1203 | run_status="未安装加速模块" 1204 | fi 1205 | elif [[ ${kernel_status} == "BBRplus" ]]; then 1206 | run_status=`cat /proc/sys/net/ipv4/tcp_congestion_control | awk '{print $1}'` 1207 | if [[ ${run_status} == "bbrplus" ]]; then 1208 | run_status=`cat /proc/sys/net/ipv4/tcp_congestion_control | awk '{print $1}'` 1209 | if [[ ${run_status} == "bbrplus" ]]; then 1210 | run_status="BBRplus启动成功" 1211 | else 1212 | run_status="BBRplus启动失败" 1213 | fi 1214 | else 1215 | run_status="未安装加速模块" 1216 | fi 1217 | fi 1218 | } 1219 | 1220 | #############系统检测组件############# 1221 | check_sys 1222 | check_version 1223 | [[ ${release} != "debian" ]] && [[ ${release} != "ubuntu" ]] && [[ ${release} != "centos" ]] && echo -e "${Error} 本脚本不支持当前系统 ${release} !" && exit 1 1224 | start_menu -------------------------------------------------------------------------------- /trojan-go_install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #================================================= 3 | # System Required: :Debian 9+/Ubuntu 18.04+/Centos 7+ 4 | # Description: Trojan&V2ray&SSR script 5 | # Version: 1.0.0 6 | # 来自珍妮姐的Trojan-go脚本 7 | # Official document: www.v2ray.com 8 | #================================================= 9 | sh_ver="1.0.0" 10 | #fonts color 11 | RED="\033[0;31m" 12 | NO_COLOR="\033[0m" 13 | GREEN="\033[32m\033[01m" 14 | FUCHSIA="\033[0;35m" 15 | YELLOW="\033[33m" 16 | BLUE="\033[0;36m" 17 | GreenBG="\033[42;37m" 18 | RedBG="\033[41;37m" 19 | Font="\033[0m" 20 | Green_font_prefix="\033[32m" && Red_font_prefix="\033[31m" && Green_background_prefix="\033[42;37m" && Red_background_prefix="\033[41;37m" && Font_color_suffix="\033[0m" 21 | Info="${Green_font_prefix}[信息]${Font_color_suffix}" 22 | Error="${Red_font_prefix}[错误]${Font_color_suffix}" 23 | Tip="${Green_font_prefix}[注意]${Font_color_suffix}" 24 | trojan_dir=/etc/trojan 25 | trojan_bin_dir=${trojan_dir}/bin 26 | trojan_conf_dir=${trojan_dir}/conf 27 | trojan_conf_file=${trojan_conf_dir}/server.json 28 | trojan_qr_config_file=${trojan_conf_dir}/qrconfig.json 29 | trojan_systemd_file="/etc/systemd/system/trojan.service" 30 | web_dir="/usr/wwwroot" 31 | nginx_bin_file="/etc/nginx/sbin/nginx" 32 | nginx_conf_dir="/etc/nginx/conf/conf.d" 33 | nginx_conf="${nginx_conf_dir}/default.conf" 34 | nginx_dir="/etc/nginx" 35 | nginx_openssl_src="/usr/local/src" 36 | nginx_systemd_file="/etc/systemd/system/nginx.service" 37 | caddy_bin_dir="/usr/local/bin" 38 | caddy_conf_dir="/etc/caddy" 39 | caddy_conf="${caddy_conf_dir}/Caddyfile" 40 | caddy_systemd_file="/etc/systemd/system/caddy.service" 41 | nginx_version="1.18.0" 42 | openssl_version="1.1.1g" 43 | jemalloc_version="5.2.1" 44 | old_config_status="off" 45 | check_root() { 46 | [[ $EUID != 0 ]] && echo -e "${Error} ${RedBG} 当前非ROOT账号(或没有ROOT权限),无法继续操作,请执行命令 ${Green_background_prefix}sudo -i${Font_color_suffix} 更换ROOT账号" && exit 1 47 | } 48 | set_SELINUX() { 49 | if [ -s /etc/selinux/config ] && grep 'SELINUX=enforcing' /etc/selinux/config; then 50 | sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 51 | setenforce 0 52 | fi 53 | } 54 | check_sys() { 55 | if [[ -f /etc/redhat-release ]]; then 56 | release="centos" 57 | elif cat /etc/issue | grep -q -E -i "debian"; then 58 | release="debian" 59 | elif cat /etc/issue | grep -q -E -i "ubuntu"; then 60 | release="ubuntu" 61 | elif cat /etc/issue | grep -q -E -i "centos|red hat|redhat"; then 62 | release="centos" 63 | elif cat /proc/version | grep -q -E -i "debian"; then 64 | release="debian" 65 | elif cat /proc/version | grep -q -E -i "ubuntu"; then 66 | release="ubuntu" 67 | elif cat /proc/version | grep -q -E -i "centos|red hat|redhat"; then 68 | release="centos" 69 | fi 70 | bit=`uname -m` 71 | } 72 | sys_cmd(){ 73 | if [[ ${release} == "centos" ]]; then 74 | cmd="yum" 75 | else 76 | cmd="apt" 77 | fi 78 | } 79 | sucess_or_fail() { 80 | if [[ 0 -eq $? ]]; then 81 | echo -e "${Info} ${GreenBG} $1 完成 ${Font}" 82 | sleep 1 83 | else 84 | echo -e "${Error} ${GreenBG}$1 失败${Font}" 85 | exit 1 86 | fi 87 | } 88 | GCE_debian10(){ 89 | echo -e "${Tip}${RedBG}因为谷歌云的debian10抽风,所以需要确认您当前是否是谷歌云的debian10系统吗(Y/n)?" 90 | echo -e "${Tip}${RedBG}只有谷歌云的debian10系统才填y,其他都填n。如果填错,将直接导致您后面无法科学上网(Y/n)(默认:n)${NO_COLOR}" 91 | read -rp "请输入:" Yn 92 | [[ -z ${Yn} ]] && Yn="n" 93 | case ${Yn} in 94 | [yY][eE][sS] | [yY]) 95 | is_debian10="y" 96 | ;; 97 | *) 98 | ;; 99 | esac 100 | } 101 | install_dependency() { 102 | echo -e "${Info}开始升级系统,需要花费几分钟……" 103 | ${cmd} update -y 104 | sucess_or_fail "系统升级" 105 | echo -e "${Info}开始安装依赖……" 106 | if [[ ${cmd} == "apt" ]]; then 107 | apt -y install dnsutils 108 | else 109 | yum -y install bind-utils 110 | fi 111 | sucess_or_fail "DNS工具包安装" 112 | ${cmd} -y install wget 113 | sucess_or_fail "wget包安装" 114 | ${cmd} -y install unzip 115 | sucess_or_fail "unzip安装" 116 | ${cmd} -y install zip 117 | sucess_or_fail "zip安装" 118 | ${cmd} -y install curl 119 | sucess_or_fail "curl安装" 120 | ${cmd} -y install tar 121 | sucess_or_fail "tar安装" 122 | ${cmd} -y install git 123 | sucess_or_fail "git安装" 124 | ${cmd} -y install lsof 125 | sucess_or_fail "lsof安装" 126 | if [[ ${cmd} == "yum" ]]; then 127 | yum -y install crontabs 128 | else 129 | apt -y install cron 130 | fi 131 | sucess_or_fail "定时任务工具安装" 132 | ${cmd} -y install qrencode 133 | sucess_or_fail "qrencode安装" 134 | ${cmd} -y install bzip2 135 | sucess_or_fail "bzip2安装" 136 | if [[ ${cmd} == "yum" ]]; then 137 | yum install -y epel-release 138 | fi 139 | sucess_or_fail "epel-release安装" 140 | if [[ "${cmd}" == "yum" ]]; then 141 | ${cmd} -y groupinstall "Development tools" 142 | else 143 | ${cmd} -y install build-essential 144 | fi 145 | sucess_or_fail "编译工具包 安装" 146 | 147 | if [[ "${cmd}" == "yum" ]]; then 148 | ${cmd} -y install pcre pcre-devel zlib-devel epel-release 149 | else 150 | ${cmd} -y install libpcre3 libpcre3-dev zlib1g-dev dbus 151 | fi 152 | ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 153 | } 154 | close_firewall() { 155 | systemctl stop firewalld.service 156 | systemctl disable firewalld.service 157 | echo -e "${Info} firewalld 已关闭 ${Font}" 158 | } 159 | open_port() { 160 | if [[ ${release} != "centos" ]]; then 161 | #iptables -I INPUT -p tcp --dport 80 -j ACCEPT 162 | #iptables -I INPUT -p tcp --dport 443 -j ACCEPT 163 | iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 164 | iptables -I INPUT -m state --state NEW -m udp -p udp --dport 80 -j ACCEPT 165 | ip6tables -I INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 166 | ip6tables -I INPUT -m state --state NEW -m udp -p udp --dport 80 -j ACCEPT 167 | iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT 168 | iptables -I INPUT -m state --state NEW -m udp -p udp --dport 443 -j ACCEPT 169 | ip6tables -I INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT 170 | ip6tables -I INPUT -m state --state NEW -m udp -p udp --dport 443 -j ACCEPT 171 | iptables-save >/etc/iptables.rules.v4 172 | ip6tables-save >/etc/iptables.rules.v6 173 | netfilter-persistent save 174 | netfilter-persistent reload 175 | else 176 | firewall-cmd --zone=public --add-port=80/tcp --permanent 177 | firewall-cmd --zone=public --add-port=443/tcp --permanent 178 | fi 179 | } 180 | 181 | get_ip() { 182 | local_ip=$(curl -s https://ipinfo.io/ip) 183 | [[ -z ${local_ip} ]] && ${local_ip}=$(curl -s https://api.ip.sb/ip) 184 | [[ -z ${local_ip} ]] && ${local_ip}=$(curl -s https://api.ipify.org) 185 | [[ -z ${local_ip} ]] && ${local_ip}=$(curl -s https://ip.seeip.org) 186 | [[ -z ${local_ip} ]] && ${local_ip}=$(curl -s https://ifconfig.co/ip) 187 | [[ -z ${local_ip} ]] && ${local_ip}=$(curl -s https://api.myip.com | grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}") 188 | [[ -z ${local_ip} ]] && ${local_ip}=$(curl -s icanhazip.com) 189 | [[ -z ${local_ip} ]] && ${local_ip}=$(curl -s myip.ipip.net | grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}") 190 | [[ -z ${local_ip} ]] && echo -e "${Error}获取不到你vps的ip地址" && exit 191 | } 192 | check_domain() { 193 | read -rp "请输入您的域名(如果用Cloudflare解析域名,请点击小云彩使其变灰):" domain 194 | real_ip=$(ping "${domain}" -c 1 | sed '1{s/[^(]*(//;s/).*//;q}') 195 | while [ "${real_ip}" != "${local_ip}" ]; do 196 | read -rp "本机IP和域名绑定的IP不一致,请检查域名是否解析成功,并重新输入域名:" domain 197 | real_ip=$(ping ${domain} -c 1 | sed '1{s/[^(]*(//;s/).*//;q}') 198 | read -rp "我已人工确认,本机Ip和域名绑定的IP一致,继续安装(Y/n)?(默认:n)" continue_install 199 | [[ -z ${continue_install} ]] && continue_install="n" 200 | case ${continue_install} in 201 | [yY][eE][sS] | [yY]) 202 | echo -e "${Tip} 继续安装" 203 | break 204 | ;; 205 | *) 206 | echo -e "${Tip} 安装终止" 207 | exit 2 208 | ;; 209 | esac 210 | done 211 | } 212 | 213 | uninstall_web() { 214 | [[ -d ${web_dir} ]] && rm -rf ${web_dir} && echo -e "${Info}开始删除伪装网站……" && echo -e "${Info}伪装网站删除成功!" 215 | } 216 | 217 | tls_generate_script_install() { 218 | if [[ "${cmd}" == "yum" ]]; then 219 | ${cmd} install socat nc -y 220 | else 221 | ${cmd} install socat netcat -y 222 | fi 223 | sucess_or_fail "安装 tls 证书生成脚本依赖" 224 | 225 | curl https://get.acme.sh | sh 226 | sucess_or_fail "安装 tls 证书生成脚本" 227 | source ~/.bashrc 228 | } 229 | tls_generate() { 230 | if [[ -f "/data/${domain}/fullchain.crt" ]] && [[ -f "/data/${domain}/privkey.key" ]]; then 231 | echo -e "${Info}证书已存在……不需要再重新签发了……" 232 | else 233 | if "$HOME"/.acme.sh/acme.sh --issue -d "${domain}" --standalone -k ec-256 --force --test; then 234 | echo -e "${Info} TLS 证书测试签发成功,开始正式签发" 235 | rm -rf "$HOME/.acme.sh/${domain}_ecc" 236 | sleep 2 237 | else 238 | echo -e "${Error}TLS 证书测试签发失败 " 239 | rm -rf "$HOME/.acme.sh/${domain}_ecc" 240 | exit 1 241 | fi 242 | 243 | if "$HOME"/.acme.sh/acme.sh --issue -d "${domain}" --standalone -k ec-256 --force; then 244 | echo -e "${Info} TLS 证书生成成功 " 245 | sleep 2 246 | mkdir /data 247 | mkdir /data/${domain} 248 | if "$HOME"/.acme.sh/acme.sh --installcert -d "${domain}" --fullchainpath /data/${domain}/fullchain.crt --keypath /data/${domain}/privkey.key --ecc --force; then 249 | echo -e "${Info}证书配置成功 " 250 | sleep 2 251 | fi 252 | else 253 | echo -e "${Error} TLS 证书生成失败" 254 | rm -rf "$HOME/.acme.sh/${domain}_ecc" 255 | exit 1 256 | fi 257 | fi 258 | } 259 | install_nginx() { 260 | if [[ -f ${nginx_bin_file} ]]; then 261 | echo -e "${Info} Nginx已存在,跳过编译安装过程 ${Font}" 262 | sleep 2 263 | else 264 | wget -nc --no-check-certificate http://nginx.org/download/nginx-${nginx_version}.tar.gz -P ${nginx_openssl_src} 265 | sucess_or_fail "Nginx 下载" 266 | wget -nc --no-check-certificate https://www.openssl.org/source/openssl-${openssl_version}.tar.gz -P ${nginx_openssl_src} 267 | sucess_or_fail "openssl 下载" 268 | wget -nc --no-check-certificate https://github.com/jemalloc/jemalloc/releases/download/${jemalloc_version}/jemalloc-${jemalloc_version}.tar.bz2 -P ${nginx_openssl_src} 269 | sucess_or_fail "jemalloc 下载" 270 | cd ${nginx_openssl_src} || exit 271 | 272 | [[ -d nginx-"$nginx_version" ]] && rm -rf nginx-"$nginx_version" 273 | tar -zxvf nginx-"$nginx_version".tar.gz 274 | 275 | [[ -d openssl-"$openssl_version" ]] && rm -rf openssl-"$openssl_version" 276 | tar -zxvf openssl-"$openssl_version".tar.gz 277 | 278 | [[ -d jemalloc-"${jemalloc_version}" ]] && rm -rf jemalloc-"${jemalloc_version}" 279 | tar -xvf jemalloc-"${jemalloc_version}".tar.bz2 280 | 281 | [[ -d "$nginx_dir" ]] && rm -rf ${nginx_dir} 282 | 283 | echo -e "${Info} 开始编译并安装 jemalloc……" 284 | sleep 2 285 | 286 | cd jemalloc-${jemalloc_version} || exit 287 | ./configure 288 | sucess_or_fail "编译检查……" 289 | make && make install 290 | sucess_or_fail "jemalloc 编译安装" 291 | echo '/usr/local/lib' >/etc/ld.so.conf.d/local.conf 292 | ldconfig 293 | 294 | echo -e "${Info} 即将开始编译安装 Nginx, 过程稍久,请耐心等待……" 295 | sleep 4 296 | 297 | cd ../nginx-${nginx_version} || exit 298 | 299 | ./configure --prefix="${nginx_dir}" \ 300 | --with-http_ssl_module \ 301 | --with-http_gzip_static_module \ 302 | --with-http_stub_status_module \ 303 | --with-pcre \ 304 | --with-http_realip_module \ 305 | --with-http_flv_module \ 306 | --with-http_mp4_module \ 307 | --with-http_secure_link_module \ 308 | --with-http_v2_module \ 309 | --with-cc-opt='-O3' \ 310 | --with-ld-opt="-ljemalloc" \ 311 | --with-openssl=../openssl-"$openssl_version" 312 | sucess_or_fail "编译检查" 313 | make && make install 314 | sucess_or_fail "Nginx 编译安装" 315 | 316 | # 修改基本配置 317 | sed -i 's/#user nobody;/user root;/' ${nginx_dir}/conf/nginx.conf 318 | sed -i 's/worker_processes 1;/worker_processes 3;/' ${nginx_dir}/conf/nginx.conf 319 | sed -i 's/ worker_connections 1024;/ worker_connections 4096;/' ${nginx_dir}/conf/nginx.conf 320 | sed -i '$i include conf.d/*.conf;' ${nginx_dir}/conf/nginx.conf 321 | 322 | # 删除临时文件 323 | rm -rf ../nginx-"${nginx_version}" 324 | rm -rf ../openssl-"${openssl_version}" 325 | rm -rf ../nginx-"${nginx_version}".tar.gz 326 | rm -rf ../openssl-"${openssl_version}".tar.gz 327 | 328 | # 添加配置文件夹,适配旧版脚本 329 | mkdir ${nginx_dir}/conf/conf.d 330 | fi 331 | } 332 | nginx_systemd() { 333 | touch ${nginx_systemd_file} 334 | cat >${nginx_systemd_file} <${trojan_systemd_file} << EOF 355 | [Unit] 356 | Description=trojan 357 | Documentation=https://github.com/p4gefau1t/trojan-go 358 | After=network.target 359 | 360 | [Service] 361 | Type=simple 362 | StandardError=journal 363 | PIDFile=/usr/src/trojan/trojan/trojan.pid 364 | ExecStart=/etc/trojan/bin/trojan-go -config /etc/trojan/conf/server.json 365 | ExecReload= 366 | ExecStop=/etc/trojan/bin/trojan-go 367 | LimitNOFILE=51200 368 | Restart=on-failure 369 | RestartSec=1s 370 | 371 | [Install] 372 | WantedBy=multi-user.target 373 | EOF 374 | systemctl daemon-reload 375 | } 376 | uninstall_nginx() { 377 | if [[ -f ${nginx_bin_file} ]]; then 378 | echo -e "${Tip} 是否卸载 Nginx [Y/N]? " 379 | read -r uninstall_nginx 380 | case ${uninstall_nginx} in 381 | [yY][eE][sS] | [yY]) 382 | rm -rf ${nginx_dir} 383 | echo -e "${Info} 已卸载 Nginx ${Font}" 384 | ;; 385 | *) ;; 386 | esac 387 | fi 388 | } 389 | download_install(){ 390 | [[ ! -d ${trojan_dir} ]] && mkdir ${trojan_dir} 391 | [[ ! -d ${trojan_bin_dir} ]] && mkdir ${trojan_bin_dir} 392 | if [[ ! -f ${trojan_bin_dir}/trojan-go ]];then 393 | case ${bit} in 394 | "x86_64") 395 | wget --no-check-certificate -O ${trojan_bin_dir}/trojan-go-linux-amd64.zip "https://github.com/p4gefau1t/trojan-go/releases/download/v0.4.10/trojan-go-linux-amd64.zip" 396 | sucess_or_fail "trojan-go下载" 397 | unzip -o -d ${trojan_bin_dir} ${trojan_bin_dir}/trojan-go-linux-amd64.zip 398 | sucess_or_fail "trojan-go解压" 399 | ;; 400 | "i386" | "i686") 401 | wget --no-check-certificate -O ${trojan_bin_dir}/trojan-go-linux-386.zip "https://github.com/p4gefau1t/trojan-go/releases/download/v0.4.10/trojan-go-linux-386.zip" 402 | sucess_or_fail "trojan-go下载" 403 | unzip -o -d ${trojan_bin_dir} ${trojan_bin_dir}/trojan-go-linux-386.zip 404 | sucess_or_fail "trojan-go解压" 405 | ;; 406 | "armv7l") 407 | wget --no-check-certificate -O ${trojan_bin_dir}/trojan-go-linux-armv7.zip "https://github.com/p4gefau1t/trojan-go/releases/download/v0.4.10/trojan-go-linux-armv7.zip" 408 | sucess_or_fail "trojan-go下载" 409 | unzip -o -d ${trojan_bin_dir} ${trojan_bin_dir}/trojan-go-linux-armv7.zip 410 | sucess_or_fail "trojan-go解压" 411 | ;; 412 | *) 413 | echo -e "${Error}不支持 [${bit}] ! 请向Jeannie反馈[]中的名称,会及时添加支持。" && exit 1 414 | ;; 415 | esac 416 | rm -f ${trojan_bin_dir}/trojan-go-linux-amd64.zip 417 | rm -f ${trojan_bin_dir}/trojan-go-linux-386.zip 418 | rm -f ${trojan_bin_dir}/trojan-go-linux-armv7.zip 419 | else 420 | echo -e "${Info}trojan-go已存在,无需安装" 421 | fi 422 | } 423 | 424 | trojan_go_uninstall(){ 425 | [[ -d ${trojan_dir} ]] && rm -rf ${trojan_dir} && echo -e "${Info}Trojan-go卸载成功" 426 | } 427 | trojan_go_qr_config(){ 428 | touch ${trojan_qr_config_file} 429 | cat >${trojan_qr_config_file} <<-EOF 430 | "domain": "${domain}" 431 | "uuid": "${uuid}" 432 | "password": "${password}" 433 | "obfuscation_password":"${obfuscation_password}" 434 | "websocket_status":"${websocket_status}" 435 | "double_tls":"${double_tls}" 436 | "websocket_path":"${websocket_path}" 437 | EOF 438 | } 439 | trojan_info_extraction() { 440 | grep "$1" ${trojan_conf_file} | awk -F '"' '{print $4}' 441 | } 442 | trojan_go_conf(){ 443 | [[ ! -d ${trojan_conf_dir} ]] && mkdir ${trojan_conf_dir} 444 | touch ${trojan_conf_file} 445 | read -rp "$(echo -e "${Info}请输入您的Trojan-go密码:")" password 446 | while [[ -z ${password} ]]; do 447 | read -rp "$(echo -e "${Tip}密码不能为空,请重新输入您的Trojan-go密码:")" password 448 | done 449 | cat >${trojan_conf_file} <${web_dir}/${uuid}.json <${nginx_conf_dir}/default.conf <${caddy_conf} <<_EOF 835 | http://${domain}:80 { 836 | gzip 837 | timeouts none 838 | tls /data/${domain}/fullchain.crt /data/${domain}/privkey.key { 839 | protocols tls1.0 tls1.3 840 | } 841 | root ${web_dir} 842 | } 843 | _EOF 844 | } 845 | uninstall_caddy() { 846 | if [[ -f ${caddy_bin_dir}/caddy ]] || [[ -f ${caddy_systemd_file} ]] || [[ -d ${caddy_conf_dir} ]] || [[ -f ${caddy_bin_dir}/caddy_old ]]; then 847 | echo -e "${Info}开始卸载Caddy……" 848 | [[ -f ${caddy_bin_dir}/caddy ]] && rm -f ${caddy_bin_dir}/caddy 849 | [[ -f ${caddy_bin_dir}/caddy_old ]] && rm -f ${caddy_bin_dir}/caddy_old 850 | [[ -d ${caddy_conf_dir} ]] && rm -rf ${caddy_conf_dir} 851 | [[ -f ${caddy_systemd_file} ]] && rm -f ${caddy_systemd_file} 852 | echo -e "${Info}Caddy卸载成功!" 853 | fi 854 | } 855 | port_used_check() { 856 | if [[ 0 -eq $(lsof -i:"$1" | grep -i -c "listen") ]]; then 857 | echo -e "${Info} $1 端口未被占用" 858 | sleep 1 859 | else 860 | echo -e "${Error}检测到 $1 端口被占用,以下为 $1 端口占用信息 ${Font}" 861 | lsof -i:"$1" 862 | echo -e "${Info} 5s 后将尝试自动 kill 占用进程 " 863 | sleep 5 864 | lsof -i:"$1" | awk '{print $2}' | grep -v "PID" | xargs kill -9 865 | echo -e "${Info} kill 完成" 866 | sleep 1 867 | fi 868 | } 869 | install_bbr() { 870 | wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" 871 | chmod +x tcp.sh 872 | ./tcp.sh 873 | } 874 | download_trojan_mgr(){ 875 | curl -s -o /etc/trojan_mgr.sh https://raw.githubusercontent.com/JeannieStudio/all_install/master/trojan_mgr.sh 876 | sucess_or_fail "修改密码、混淆密码、启用/禁用websocket、查询证书相关信息的管理脚本下载" 877 | chmod +x /etc/trojan_mgr.sh 878 | } 879 | remove_trojan_mgr(){ 880 | [[ -f /etc/trojan_mgr.sh ]] && rm -f /etc/trojan_mgr.sh && echo -e "${Info}trojan_mgr.sh删除成功" 881 | } 882 | trojan_go_info_html() { 883 | vps="Trojan-go" 884 | wget --no-check-certificate -O ${web_dir}/trojan_go_tmpl.html https://raw.githubusercontent.com/JeannieStudio/jeannie/master/trojan_go_tmpl.html 885 | chmod +x ${web_dir}/trojan_go_tmpl.html 886 | eval "cat <${web_dir}/${uuid}.html 890 | } 891 | trojan_nginx_install(){ 892 | check_root 893 | check_sys 894 | sys_cmd 895 | sucess_or_fail 896 | #GCE_debian10 897 | install_dependency 898 | #close_firewall 899 | download_install 900 | port_used_check 80 901 | port_used_check 443 902 | uninstall_web 903 | remove_trojan_mgr 904 | uninstall_caddy 905 | get_ip 906 | check_domain 907 | tls_generate_script_install 908 | tls_generate 909 | web_download 910 | #generate_trojan_go_tls 911 | trojan_go_conf 912 | trojan_client_conf 913 | open_websocket 914 | trojan_go_qr_config 915 | install_nginx 916 | nginx_systemd 917 | nginx_trojan_conf 918 | systemctl restart nginx 919 | systemctl enable nginx 920 | trojan_go_info_html 921 | trojan_go_systemd 922 | systemctl start trojan.service 923 | systemctl enable trojan.service 924 | download_trojan_mgr 925 | trojan_go_basic_information 926 | } 927 | trojan_caddy_install(){ 928 | check_root 929 | # shellcheck disable=SC2164 930 | cd /root 931 | set_SELINUX 932 | check_sys 933 | sys_cmd 934 | sucess_or_fail 935 | install_dependency 936 | #close_firewall 937 | download_install 938 | port_used_check 80 939 | port_used_check 443 940 | uninstall_web 941 | remove_trojan_mgr 942 | uninstall_nginx 943 | get_ip 944 | check_domain 945 | tls_generate_script_install 946 | tls_generate 947 | web_download 948 | #generate_trojan_go_tls 949 | trojan_go_conf 950 | trojan_client_conf 951 | open_websocket 952 | trojan_go_qr_config 953 | install_caddy 954 | install_caddy_service 955 | caddy_trojan_conf 956 | caddy -service start 957 | trojan_go_info_html 958 | trojan_go_systemd 959 | systemctl start trojan.service 960 | systemctl enable trojan.service 961 | download_trojan_mgr 962 | trojan_go_basic_information 963 | } 964 | uninstall_all(){ 965 | uninstall_nginx 966 | trojan_go_uninstall 967 | uninstall_caddy 968 | uninstall_web 969 | remove_trojan_mgr 970 | echo -e "${Info}卸载完成,系统回到初始状态!" 971 | } 972 | main() { 973 | echo -e " 974 | ${FUCHSIA}=================================================== 975 | ${GREEN}Trojan-go二合一脚本 976 | ${FUCHSIA}=================================================== 977 | ${GREEN}如果已经安装了下列脚本之一,想要安装其他的,不需要单独执行卸载,直接选择想要安装脚本对应的数字即可…… 978 | ${GREEN}因为安装的同时会执行卸载,除非想卸载干净回到初始状态,可以执行3…… 979 | ${FUCHSIA}=================================================== 980 | ${GREEN}1. 安装trojan-go + nginx +tls 981 | ${FUCHSIA}=================================================== 982 | ${GREEN}2. 安装trojan-go + caddy +tls 983 | ${FUCHSIA}=================================================== 984 | ${GREEN}3. 卸载全部,系统回到初始状态 985 | ${FUCHSIA}=================================================== 986 | ${GREEN}4. 安装BBR加速 987 | ${FUCHSIA}=================================================== 988 | ${GREEN}0. 啥也不做,退出${NO_COLOR}" 989 | read -rp "请输入数字:" menu_num 990 | case $menu_num in 991 | 1) 992 | trojan_nginx_install 993 | ;; 994 | 2) 995 | trojan_caddy_install 996 | ;; 997 | 3) 998 | uninstall_all 999 | ;; 1000 | 4) 1001 | install_bbr 1002 | ;; 1003 | 0) 1004 | exit 0 1005 | ;; 1006 | *) 1007 | echo -e "${RedBG}请输入正确的数字${Font}" 1008 | ;; 1009 | esac 1010 | } 1011 | main 1012 | -------------------------------------------------------------------------------- /web.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenzok8/Trojan/565a145686e54beed05ccd6cf47054857939664b/web.zip --------------------------------------------------------------------------------