许多系统管理员和网络工程师在优化服务器性能或调试网络问题时,常常会考虑使用 ulimit 命令来调整系统参数。确实,ulimit 是管理 Shell 进程及其子进程资源(如打开文件数、进程数、内存等)的有效工具。然而,如果您希望直接控制网络带宽的速率,那么 ulimit 并非正确的选择——它并不负责网络流量整形。

那么,在 Linux 系统中如何实现专业的网络带宽控制呢?实际上,系统提供了更强大的原生工具,例如 tc(流量控制)和 nftables。本文将重点介绍最常用的 tc 命令,手把手教您配置基础带宽限制。
第一步:安装必要工具
tc 命令通常集成在 iproute2 软件包中。如果您的系统中尚未安装,可以使用对应的包管理器快速安装:
sudo apt-get install iproute2 # Debian/Ubuntu
sudo yum install iproute # CentOS/RHEL
第二步:配置基础带宽限制
安装完成后,即可通过创建队列规则来限制指定网络接口的带宽。例如,若要将网卡 eth0 的上传与下载速率均限制在 1 Mbps,可依次执行以下命令:
sudo tc qdisc add dev eth0 root handle 1: htb default 30
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit
sudo tc class add dev eth0 parent 1:1 classid 1:30 htb rate 1mbit ceil 1mbit
简要说明:首条命令创建了一个根队列;后续两条命令则在该队列基础上,定义了具体的带宽限制规则,其中 rate 表示保证带宽,ceil 表示最大可用带宽。
第三步:(可选)设置特定目标限速
有时您可能需要针对特定 IP 地址或端口进行精细化流量控制,而非全局限制。此时,tc 的过滤器功能便能大显身手。例如,以下命令仅将源 IP 为 192.168.1.2 的流量限速至 128 Kbps:
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.1.2 flowid 1:30
第四步:撤销或调整限速规则
若配置有误或需要恢复网络接口的原始状态,删除限速规则十分简便。要清除 eth0 上设置的所有流量控制规则,只需执行:
sudo tc qdisc del dev eth0 root
最后需要强调的是,以上示例仅为 tc 命令的基础用法。该工具功能极为强大,配置也相对复杂。在生产环境中部署前,建议深入理解其队列规则、分类及过滤器的工作机制,并结合实际网络拓扑与业务需求进行充分测试,以避免因配置不当导致网络服务异常。
