安全、跨平台、可持久、无副作用。
作者: @buyi06
版本: v1.0 Final
兼容系统: Debian / Ubuntu / AlmaLinux / Rocky / CentOS / Arch / openSUSE / Alpine / KVM / 云主机
目标: "一键执行,全程安全、自动持久化、无副作用的网络性能优化脚本"
| 模块 | 功能 | 是否自动持久 |
|---|---|---|
| 🔧 sysctl 优化 | 调整 TCP/UDP 缓冲、backlog、端口范围等 | ✅ |
| 📦 ulimit 提升 | 调高文件句柄数、nproc 限制 | ✅ |
| 🧩 网卡 offload 关闭 | 自动检测并安全关闭 GRO/GSO/TSO/LRO 等 | ✅ |
| ⚙️ IRQ 优化 | 尝试将网卡中断绑定到 CPU0(虚拟机无 IRQ 会自动跳过) | ✅ |
| 🩺 开机自检 | 每次启动自动输出状态日志(offload/IRQ/sysctl) | ✅ |
| 🪶 安全 | 失败自动忽略、不锁机、不修改防火墙/代理配置 | ✅ |
推荐直接执行以下命令:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/buyi06/-Linux-/main/universal_optimize.sh)"📊 查看状态
bash -c "$(curl -fsSL https://raw.githubusercontent.com/buyi06/-Linux-/main/universal_optimize.sh)" status
输出示例:
=== 状态报告 (2025-10-06 02:05:17) ===
- 目标网卡:eth0
- sysctl 文件:/etc/sysctl.d/99-universal-net.conf
1 67108864
2 67108864
3 8388608
4 16434 21912 32868
5 8192
6 8192
scatter-gather: off
rx-gro-hw: off
rx-udp-gro-forwarding: off
univ-offload@eth.service: enabled
univ-offload@eth0.service: active
curl -fsSL https://raw.githubusercontent.com/buyi06/-Linux-/main/universal_optimize.sh | bash -s -- repair
脚本会检测并修复:
- sysctl 配置文件是否存在
- offload / irqpin systemd 服务是否丢失
- 健康自检是否正常启用
---
## ⚙️ 手动指定网卡(可选)
默认脚本会自动探测出口网卡。
若你的网卡名称不是 eth0(比如 ens3),可以手动指定:
```bash
IFACE=ens3 bash -c "$(curl -fsSL https://raw.githubusercontent.com/buyi06/-Linux-/main/universal_optimize.sh)" apply| 参数 | 默认值 | 作用 |
|---|---|---|
| net.core.rmem_default / wmem_default | 4MB | 默认 socket 缓冲 |
| net.core.optmem_max | 8MB | 额外控制缓冲 |
| net.ipv4.udp_mem | 8192 16384 32768 | UDP 内存阈值 |
| net.ipv4.udp_rmem_min / wmem_min | 128KB | 最小 UDP 缓冲 |
| net.core.netdev_max_backlog | 50000 | 内核队列长度 |
| net.core.somaxconn | 16384 | 最大等待连接数 |
| net.ipv4.ip_local_port_range | 10240–65535 | 可用端口范围 |
| 项目 | 值 |
|---|---|
| nofile | 1,048,576 |
| nproc | unlimited |
- GRO / GSO / TSO / LRO
- Scatter-gather
- rx-gro-hw / rx-udp-gro-forwarding
所有关闭操作在:
- systemd 模板:
/etc/systemd/system/univ-offload@.service - 即时生效(即便 systemd 延迟,也会即时执行一遍)
- 主 IRQ → CPU0
- MSI IRQ → CPU0
- 无可用 IRQ 时自动忽略,无风险
每次开机 5 秒后执行一次健康检测:
journalctl -u univ-health -b --no-pager输出包括:
- offload / irqpin 状态
- 当前 sysctl 参数
- ethtool offload 状态
| 路径 | 用途 |
|---|---|
| /etc/sysctl/99-universal-net.conf | 网络缓冲优化参数 |
| /etc/security/limits.d/99-universal.conf | ulimit 配置 |
| /etc/systemd/system/univ-offload@.service | Offload 自启服务 |
| /etc/systemd/system/univ-irqpin@.service | IRQ 绑定服务 |
| /etc/systemd/system/univ-health.service | 启动健康自检 |
| /etc/default/universal-optimize | 环境变量文件 |
如需完全恢复默认设置:
systemctl disable --now univ-offload@*.service univ-irqpin@*.service univ-health.service
rm -f /etc/sysctl.d/99-universal-net.conf \
/etc/security/limits.d/99-universal.conf \
/etc/systemd/system/univ-*.service \
/etc/systemd/system.conf.d/99-universal-limits.conf \
/etc/default/universal-optimize
sysctl --system >/dev/null 2>&1 || true
systemctl daemon-reload- 安全第一: 所有操作
|| true防炸机 - 跨平台: 自动识别 Debian / RHEL / Alpine 包管理器
- 幂等性: 重复执行无副作用
- 无需重启: 立即生效(健康服务除外)
- 完全开源可审计
MIT License © 2025 buyi06