在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實現基本的流量整形。根據具體需求,你可以進一步調整和優化配置。