温馨提示×

ubuntu防火墙限制带宽的方法

小樊
37
2025-10-25 03:40:34
栏目: 智能运维

Ubuntu防火墙限制带宽的主要方法

1. 使用iptables结合limit模块限制带宽

iptables是Ubuntu自带的防火墙工具,可通过limit模块限制特定流量的速率。适用于简单场景(如限制SSH登录速率)。
示例命令

# 限制SSH(端口22)的新建连接速率为100个/分钟,超出后丢弃 sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 100/minute -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j DROP 

说明--limit指定速率(支持/second、/minute等单位),-m limit启用速率限制模块。需保存规则(sudo iptables-save | sudo tee /etc/iptables/rules.v4)以持久化。

2. 使用tc(Traffic Control)工具实现精细化带宽控制

tc是Linux内核提供的流量控制工具,通过HTB(Hierarchical Token Bucket)队列调度算法实现灵活的带宽分配,适用于复杂场景(如限制特定IP或端口的带宽)。
步骤详解

  • 安装工具
    sudo apt update && sudo apt install iproute2 
  • 创建HTB队列
    eth0(替换为目标接口)附加到HTB队列,handle 1:为队列句柄,default 30表示未匹配流量的默认类。
    sudo tc qdisc add dev eth0 root handle 1: htb default 30 
  • 创建带宽类
    设置父类(1:)的保证带宽(rate)和最大带宽(ceil),子类(1:1)继承父类并设置具体限制(如1Mbps)。
    sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit 
  • 添加过滤器
    通过u32模块匹配特定流量(如源IP192.168.1.100),将其分配到对应的类(1:1)。
    sudo tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip src 192.168.1.100 flowid 1:1 

说明rate为保证带宽,ceil为最大允许带宽(突发流量上限)。监控规则效果可使用tc -s qdisc ls dev eth0

3. 使用nftables实现带宽限制

nftables是iptables的下一代替代工具,语法更简洁,支持更丰富的流量匹配(如meter、quota)。适用于需要高性能或复杂规则的场景。
示例命令

  • 限制HTTP(端口80)出站带宽为1Mbps
    使用meter统计流量,超过rate 1mbit时触发drop(或log)。
    sudo nft add table inet filter sudo nft add chain inet filter output { type filter hook output priority 0; policy accept; } sudo nft add rule inet filter output meta l4proto tcp dport 80 meter http_meter { ip saddr limit rate 1mbit } drop 
  • 限制特定IP(192.168.1.100)的入站带宽
    使用quota限制总流量(如100MB),超出后拒绝。
    sudo nft add table inet filter sudo nft add chain inet filter input { type filter hook input priority 0; policy accept; } sudo nft add rule inet filter input ip saddr 192.168.1.100 meter bw_quota { bytecount 100mb } drop 

说明meter用于流量统计,limit rate设置速率限制,quota设置总流量配额。持久化规则需导出到/etc/nftables.conf并启用服务(sudo systemctl enable --now nftables)。

4. 使用wondershaper简化带宽限制

wondershaper是基于tc的脚本工具,简化了常用带宽限制场景(如限制上下行速度)的配置,适用于快速部署。
步骤详解

  • 安装工具
    sudo apt install wondershaper 
  • 限制带宽
    eth0为目标接口,1000为下载速度(KB/s),500为上传速度(KB/s)。
    sudo wondershaper eth0 1000 500 
  • 清除限制
    sudo wondershaper clear eth0 

说明:wondershaper自动创建HTB队列和过滤器,适合非技术人员快速配置。

注意事项

  • 权限要求:所有操作需root权限(使用sudo)。
  • 持久化配置:iptables规则需保存到/etc/iptables/rules.v4;nftables规则需导出到/etc/nftables.conf并启用服务;tc规则需添加到启动脚本(如/etc/rc.local)。
  • 测试验证:生产环境使用前,建议在测试环境验证规则效果,避免误操作导致网络中断。

0