在Debian系统中,ulimit
命令主要用于控制用户进程的资源限制,如文件描述符、进程数等。然而,ulimit
本身并不直接支持限制网络带宽。要实现网络带宽限制,通常需要结合其他工具,如tc
(Traffic Control)或nftables
。
tc
工具调整网络带宽限制tc
是一个强大的流量控制工具,可以用来限制网络接口的带宽。以下是一个简单的示例,用于将eth0
接口的带宽限制为1Mbps下载和2Mbps上传:
# 安装 iproute2 包(如果尚未安装)
sudo apt-get update
sudo apt-get install iproute2
# 创建一个基本的 tc 规则
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 2mbit ceil 2mbits
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit ceil 1mbit
# 添加过滤器以应用规则
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 0.0.0.0/0 flowid 1:10
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 0.0.0.0/0 flowid 1:10
# 验证规则
sudo tc -s qdisc ls dev eth0
sudo tc -s class ls dev eth0
sudo tc -s filter ls dev eth0
nftables
调整网络带宽限制nftables
是另一个用于配置Linux内核防火墙的命令行工具,可以用来限制网络带宽。以下是一个简单的示例,用于限制eth0
接口的出站带宽为1Mbps:
# 安装 nftables 包(如果尚未安装)
sudo apt-get update
sudo apt-get install nftables
# 创建一个基本的 nftables 规则
sudo nft add table ip filters
sudo nft add chain ip filter input { type filter hook input priority 0 \; }
sudo nft add chain ip filter output { type filter hook output priority 0 \; }
sudo nft add rule ip filter output meta l4proto tcp dport 80 burst 100kb rate 1mbits
sudo nft add rule ip filter output meta l4proto tcp dport 443 burst 100kb rate 1mbits
sudo nft add rule ip filter output meta l4proto udp dport 53 burst 100kb rate 1mbit
sudo nft add rule ip filter output meta l4proto udp dport 67 burst 100kb rate 1mbit
# 验证规则
sudo nft list ruleset
除了tc
和nftables
,还可以使用trickle
或wondershaper
等工具来限制网络带宽。
trickle:
# 安装 trickle
sudo apt update
sudo apt install trickle
# 使用 trickle 限制带宽
trickle -d 100 -u 50 wget http://example.com/largefile.zip
wondershaper:
# 安装 wondershaper
sudo apt update
sudo apt install wondershaper
# 使用 wondershaper 限制带宽
sudo wondershaper eth0 1024 512