快柠檬Falemon - 网络加速服务返回首页

Linux 网络加速服务怎么设置?从环境检查到效果验证

更新于 2026-10-24 · falemon.buzz

简答:要提速的是服务器 TCP 传输,还是域名解析慢?Linux 网络加速服务应先识别系统、内核、虚拟化和网络管理方式,再配置可回滚的 BBR 或 DNS,最后用相同目标完成前后对比。若你要设置的是 Linux 客户端,而不是服务器,请先确认客户端类型和配置格式。

定义:Linux 网络加速服务是针对服务器 TCP 拥塞控制、队列调度、DNS 解析、MTU 或线路路径等环节进行配置和验证的一类网络方案,不等于单独开启某一个参数。

先用 4 条命令判断问题属于哪一类

先不要直接执行一键配置。假如你遇到的是文件传输速度不稳定,优先看 TCP、丢包和队列;假如是域名首次访问慢或解析失败,优先看 DNS;假如是延迟、抖动或部分业务中断,优先检查路径和 MTU。

速查命令:

uname -r
systemd-detect-virt || true
sysctl net.ipv4.tcp_available_congestion_control
resolvectl status 2>/dev/null || cat /etc/resolv.conf

现象先检查不要直接假设
TCP 下载或接口传输不稳定拥塞控制、队列、丢包、服务器带宽改 DNS 就能提升传输速度
域名解析失败或首次解析慢DNS 管理组件、解析服务器、缓存一定是线路故障
延迟高、抖动大或丢包路由、出口、MTU、目标地址开启 BBR 就能降低所有延迟
UDP 业务异常业务协议、路径、MTU、防火墙BBR 会直接优化 UDP

Linux 内核文档说明,tcp_available_congestion_control显示已经注册的拥塞控制算法,但可用算法也可能以模块形式存在、尚未加载;因此查询结果没有 bbr 时,不应立即判断内核不支持。相关定义可查看Linux 内核 IP Sysctl 文档。

本文核对日期:2026-10-24。命令需要 root 权限或使用 sudo;网卡名称、连接名称、目标地址和 DNS 地址必须替换为你的实际值。

检查 Linux 发行版、内核与虚拟化环境

先保留一个可用的 SSH 会话,再另开一个会话执行修改。远程服务器最好准备云平台控制台或带外管理入口,以便配置错误后恢复。

cat /etc/os-release
uname -r
ip -br addr
ip route
systemd-detect-virt || true
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc
ip -br link

  • 发行版:确认是 Ubuntu、Debian、CentOS、Rocky 还是 AlmaLinux,并记录具体版本。
  • 内核:用 uname -r记录版本。原版 BBR 通常需要具备相应实现的 Linux 内核,常见判断起点是 4.9 及以上;不同发行版可能回移植、裁剪或拆分模块,最终以实际检测结果为准。
  • 虚拟化:如果显示 OpenVZ、LXC 或其他容器环境,当前实例可能不能修改宿主机内核或部分网络参数;KVM、独立服务器和容器的权限边界不同。
  • 网卡:从 ip -br link找到实际接口,例如 eth0、ens3或 enp1s0。

如果 systemd-detect-virt没有输出,不能据此断定一定是独立服务器。应结合云平台控制台和实际权限核对,不要因为检测结果为空就修改宿主机相关设置。

安全启用原版 BBR,并处理模块未加载情况

如果可用算法列表已经包含 bbr,可以直接进入配置。如果列表没有 bbr,先检查模块是否存在,再决定是否加载:

modinfo tcp_bbr 2>/dev/null | head -n 20
sudo modprobe tcp_bbr
sysctl net.ipv4.tcp_available_congestion_control

如果 modinfo tcp_bbr能找到模块但列表仍没有 BBR,说明模块可能尚未加载或当前权限受限。确认可以加载后,可将模块写入开机加载列表:

echo tcp_bbr | sudo tee /etc/modules-load.d/tcp-bbr.conf
sudo modprobe tcp_bbr

如果 modinfo找不到模块,不要直接运行来源不明的脚本或更换生产环境内核,应先核对发行版内核包、云平台限制和容器权限。

  1. 备份当前值:sudo sysctl -n net.ipv4.tcp_congestion_control | tee ~/tcp-congestion-before.txt
    sudo sysctl -n net.core.default_qdisc | tee ~/default-qdisc-before.txt
  2. 创建独立配置文件:sudo sh -c 'cat > /etc/sysctl.d/99-network-acceleration.conf <<EOF
    net.ipv4.tcp_congestion_control=bbr
    net.core.default_qdisc=fq
    EOF'
  3. 加载配置:sudo sysctl --system
  4. 检查结果:sysctl net.ipv4.tcp_congestion_control
    sysctl net.core.default_qdisc
    tc qdisc show

tcp_congestion_control用于设置新 TCP 连接采用的算法,已经建立的连接不一定立即切换。default_qdisc是网络设备默认队列调度设置;内核文档指出,虚拟设备可能忽略该设置,而且改变默认值主要影响之后创建的设备。可查看Linux 内核网络 sysctl 文档。

因此,写入 default_qdisc=fq后,现有网卡的 tc qdisc show仍可能显示旧值,这不一定代表配置文件无效。若需要立即对指定网卡生效,可先确认接口名,再执行:

sudo tc qdisc replace dev ens3 root fq
sudo tc qdisc show dev ens3

该命令会改变指定接口当前队列,远程生产环境应先评估业务影响。也可以在维护窗口重启后再次检查,但不要把重启当作唯一验证方式。

按发行版选择 DNS 配置方式

DNS 设置必须先确认由谁管理。直接编辑 /etc/resolv.conf通常只适合临时验证,可能被 DHCP 客户端、NetworkManager、systemd-resolved 或其他组件覆盖。

Ubuntu:用 resolvectl 临时验证,再用 Netplan 持久化

先查看接口和 DNS 状态:

resolvectl status
ip -br link

假设接口是 ens3,临时设置并验证:

sudo resolvectl dns ens3 1.1.1.1 8.8.8.8
resolvectl status
resolvectl query example.com

Ubuntu 的 resolvectl dns可以为接口设置临时 DNS;不再需要时执行:

sudo resolvectl revert ens3

如果要持久化配置,可编辑对应的 /etc/netplan/*.yaml。使用 DHCP 时,示例应明确关闭 DHCP 下发 DNS,避免静态 DNS 与自动 DNS 混合:

network:
version: 2
ethernets:
ens3:
dhcp4: true
dhcp4-overrides:
use-dns: false
nameservers:
addresses: [1.1.1.1, 8.8.8.8]

先试运行,再正式应用:

sudo netplan try
sudo netplan apply

netplan try适合远程修改时先确认网络仍可用。Netplan 的 use-dns默认值为 true,DHCP 下发的 DNS 可能优先于静态配置;相关说明见Ubuntu Netplan 手册和Ubuntu resolvectl 手册。

Debian:先区分 ifupdown、NetworkManager 与 systemd-networkd

Debian 服务器不一定安装 NetworkManager,常见方式还包括 ifupdown、/etc/network/interfaces、resolvconf或 systemd-networkd。先执行:

systemctl is-active NetworkManager 2>/dev/null || true
systemctl is-active systemd-networkd 2>/dev/null || true
grep -v '^[[:space:]]*#' /etc/network/interfaces 2>/dev/null || true
readlink -f /etc/resolv.conf
cat /etc/resolv.conf

如果由 NetworkManager 管理,才使用:

nmcli connection show
sudo nmcli connection modify "连接名称" ipv4.dns "1.1.1.1 8.8.8.8" ipv4.ignore-auto-dns yes
sudo nmcli connection up "连接名称"

如果接口写在 /etc/network/interfaces中,应按 ifupdown 配置;不要让 NetworkManager 和 ifupdown 同时管理同一接口。Debian 官方参考资料说明了这些网络管理方式之间的区别,可查看Debian Reference 网络设置和Debian resolv.conf 说明。

CentOS、Rocky、AlmaLinux:通常优先检查 NetworkManager

先确认连接名称:

nmcli connection show
nmcli device show | grep -E 'GENERAL.DEVICE|IP4.DNS|IP6.DNS'

配置并重新激活:

sudo nmcli connection modify "连接名称" ipv4.dns "1.1.1.1 8.8.8.8" ipv4.ignore-auto-dns yes
sudo nmcli connection up "连接名称"
cat /etc/resolv.conf

Red Hat 文档说明 NetworkManager 会根据活动连接更新 DNS 配置;如果系统使用多个连接,还要留意 DNS 优先级和实际生效的 /etc/resolv.conf。参考Red Hat Enterprise Linux 网络管理文档。

用 ping、mtr、iperf3 和 MTU 做前后对比

配置前后应使用相同目标、相同命令和相近业务时段;这里的“相近业务时段”是指尽量在服务器负载和业务流量相似的时间测试,具体时段可按本地情况调整。关闭配置和开启配置各测一次,至少记录平均延迟、最大延迟、丢包、DNS 结果和传输速率。

项目命令示例记录内容
接口与路由ip route
ip -s link
默认路由、接口错误、丢弃和收发计数。
延迟ping -c 20 example.com平均值、最大值、超时情况。
抖动估算记录多次 ping 的最小值和最大值用最大值减最小值作粗略估算,不替代专业监测。
路径与丢包mtr -rwzc 50 example.com终点丢包和路径变化;单个中间跳点丢包不一定代表终点丢包。
DNSresolvectl query example.com
getent ahosts example.com
解析是否成功、结果是否符合预期。
TCP 传输iperf3 -s
iperf3 -c 服务器地址 -t 30 -J
吞吐量、方向、测试时长和 JSON 结果。

iperf3 需要在两台你有权限控制的主机上分别运行服务端和客户端。默认客户端向服务端发送数据;使用 -R可以反向测试,使用 --bidir可以双向测试。其官方文档说明了这些参数和输出含义,见iperf3 调用文档。不要把 iperf3 结果直接当作所有业务的实际速度,测试端 CPU、端口策略和路径都会影响结果。

MTU 排查从 IPv4 不分片 ping 开始:

ping -M do -s 1472 -c 4 example.com

如果提示需要分片或发送失败,就把 1472 逐步降低,例如 1464、1452、1440,直到连续成功。成功的 payload 值加 28 字节,可得到当前目标和路径的估算 MTU;例如 1472 成功时,估算值为 1500。不要把一个目标测出的值直接套用到所有业务。

速率换算示例:80 MB/s 传输 1 GB,按十进制单位约需 12.5 秒;1 GiB 约等于 1073.7 MB,按 80 MB/s 计算约需 13.4 秒。MB 和 MiB 不同,不能把 1024 MiB 直接当成 1024 MB/s 计算。

出现无效果、变慢或断连时如何排查与回滚

一次只改一个变量。不要同时修改 BBR、DNS、MTU、防火墙和线路参数,否则无法判断是哪一步造成变化。

  1. 确认配置是否加载:sysctl net.ipv4.tcp_congestion_control
    sysctl net.core.default_qdisc
    tc qdisc show dev ens3
    resolvectl status 2>/dev/null || cat /etc/resolv.conf
  2. 检查参数冲突:grep -RInE 'tcp_congestion_control|default_qdisc' /etc/sysctl.conf /etc/sysctl.d 2>/dev/null。如果多个文件设置同一参数,应保留清晰的最后加载关系,并避免重复配置。
  3. 区分 DNS 与线路:分别测试域名和已确认的目标 IP;只有域名失败时,优先检查 DNS 管理组件。
  4. 区分 MTU 与 TCP:恢复原 MTU 后再次测试,观察是否仍有连接中断、页面不完整或大文件传输失败。
  5. 分别对比关闭和开启:保持目标、命令和测试时段尽量一致,再比较平均延迟、最大延迟、丢包和吞吐。

立即回滚 BBR 和队列:先使用配置前保存的值替换下面的占位符,不要默认写死为 reno或其他算法:

sudo sysctl -w net.ipv4.tcp_congestion_control=<备份的拥塞控制算法>
sudo sysctl -w net.core.default_qdisc=<备份的队列算法>
sudo tc qdisc replace dev ens3 root <备份的队列算法>

确认运行中的值恢复后,再删除新增文件并重新加载其他配置:

sudo rm -f /etc/sysctl.d/99-network-acceleration.conf
sudo sysctl --system
sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc
tc qdisc show dev ens3

删除配置文件再执行 sysctl --system不会自动把运行中的值恢复成原值,所以必须先用 sysctl -w立即改回备份值。若修改后 SSH 已断开,应通过云平台控制台检查 sysctl 文件、DNS 配置、网络管理服务和接口队列。

一键脚本还需要额外做来源审查、固定版本核对、配置备份、测试环境验证和回滚演练。生产服务器不应在未确认脚本内容、权限范围和修改文件的情况下直接执行。

如果你的实际需求是 Linux 客户端导入配置,而不是服务器参数调整,可继续查看站内的配置链接导入方法;如果已经出现连接失败,可参考网络加速服务连接失败排查。

常见问题

Linux 开启 BBR 后一定会变快吗?

不一定。BBR主要改变 TCP 拥塞控制方式,实际结果还受带宽上限、丢包、路径拥塞、服务器性能和业务协议影响。应使用相同目标、相同命令,并分别测试关闭和开启状态。

为什么可用算法列表里没有 bbr?

先执行 <code>modinfo tcp_bbr</code>检查模块是否存在,再尝试 <code>sudo modprobe tcp_bbr</code>。如果模块不存在,可能是内核包未提供、内核被裁剪或容器权限受限;不要仅凭一条查询结果就更换内核或运行来源不明的脚本。

修改 default_qdisc 后,为什么 tc qdisc show 仍不是 fq?

<code>default_qdisc</code>主要影响之后创建的网络设备,现有网卡不一定立即改变。可以使用 <code>sudo tc qdisc replace dev ens3 root fq</code>对指定接口立即设置,然后再次用 <code>tc qdisc show dev ens3</code>确认。

Debian 没有 nmcli,怎样配置 DNS?

Debian 服务器可能使用 ifupdown、<code>/etc/network/interfaces</code>、resolvconf 或 systemd-networkd,不一定安装 NetworkManager。先查看活动服务、接口配置文件和 <code>/etc/resolv.conf</code>的链接目标,再使用对应组件配置,避免多个组件同时管理同一接口。

Ubuntu 使用 DHCP 时,静态 DNS 为什么没有完全生效?

Netplan 的 <code>use-dns</code>默认值为 true,DHCP 下发的 DNS 可能继续参与配置。使用 Netplan 时,可在对应接口下加入 <code>dhcp4-overrides: use-dns: false</code>,再执行 <code>sudo netplan try</code>确认网络正常。

怎样立即恢复已经启用的 BBR?

删除配置文件不会立即恢复运行中的参数。应先执行 <code>sudo sysctl -w net.ipv4.tcp_congestion_control=<备份值></code>和 <code>sudo sysctl -w net.core.default_qdisc=<备份值></code>,必要时再用 <code>tc qdisc replace</code>恢复指定网卡的队列,最后删除新增文件。

iperf3 能代表真实业务速度吗?

不能完全代表。iperf3用于测量两台主机之间的网络吞吐,结果会受测试方向、并行连接、CPU、端口策略和路径影响。应把 iperf3 与实际业务文件、接口统计、DNS 和路径测试结合判断。

相关阅读

参考资料

  1. Linux 内核 IP Sysctl 文档
  2. Linux 内核网络 sysctl 文档
  3. Ubuntu Netplan 手册
  4. Ubuntu resolvectl 手册
  5. Debian Reference 网络设置
  6. Debian resolv.conf 说明
  7. Red Hat Enterprise Linux 网络管理文档
  8. iperf3 官方调用文档