在Debian系统中,使用iptables
结合tc
(Traffic Control)工具可以实现流量整形。以下是实现流量整形的基本步骤:
首先,确保你已经安装了iptables
和iproute2
(包含tc
工具)。
sudo apt update
sudo apt install iptables iproute2
假设你的网络接口是eth0
。
sudo ip link set eth0 up
HTB是一种分层令牌桶队列,可以用来实现流量整形。
sudo tc qdisc add dev eth0 root handle 1: htb default 30
为不同的流量类型创建类。例如,为HTTP流量创建一个类。
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 2mbit
使用过滤器将特定类型的流量分配到相应的类中。
sudo tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 80 0xffff flowid 1:1
使用iptables
标记特定类型的流量,以便tc
可以识别并处理它们。
sudo iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1
使用tc
命令监控队列的状态,并根据需要调整参数。
sudo tc -s qdisc ls dev eth0
sudo tc -s class ls dev eth0
# 启用网络接口
sudo ip link set eth0 up
# 添加HTB队列
sudo tc qdisc add dev eth0 root handle 1: htb default 30
# 创建一个类,限制速率为1mbit,峰值速率为2mbit
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 2mbit
# 创建一个过滤器,将目标端口为80的流量标记为1
sudo tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 80 0xffff flowid 1:1
# 使用iptables标记目标端口为80的流量
sudo iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1
通过以上步骤,你可以在Debian系统中使用iptables
和tc
实现基本的流量整形。根据具体需求,你可以进一步调整和优化配置。