HTB.init / tc 位于 NAT 后面

HTB.init / tc 位于 NAT 后面

我有一个 Ubuntu 10 盒子,我正在尝试将其设置为带宽整形路由器。

该机器有一个 WAN 接口 eth0 和两个 LAN 接口 eth1 和 eth2。NAT 使用 MASQUERADE 配置,如以下所述网络连接共享

我主要关心的是塑造来自 LAN 接口的出站流量 - 最终,我希望每个 LAN 接口的硬限制为 768Kbps(而不是跨所有接口汇集的 eth0 的限制)。

我安装了HTB初始化,并根据示例,尝试通过将三个文件放入 /etc/sysconfig/htb 来在 eth1 上进行设置:

/etc/sysconfig/htb/eth1

DEFAULT=30
R2Q=100

/etc/sysconfig/htb/eth1-2.root

RATE=768Kbps
BURST=15k

/etc/sysconfig/htb/eth1-2:30.dfl

RATE=768Kbps
CEIL=788Kbps
BURST=15k
LEAF=sfq

我可以启动 /etc/init.d/htb 和 /etc/init.d/htb 统计并查看似乎表明它正在运行的信息……但是当我尝试通过 WAN 接口提取大文件时,整形显然没有生效。

有什么建议吗?我猜这与 NAT 链中的整形位置有关,但我真的不知道从哪里开始排除故障。

- - 更新:

这是我的 /etc/init.d/htb 列表输出,它似乎有道理——eth1 的默认速率是 768Kbps?

### eth0: queueing disciplines

qdisc htb 1: root refcnt 2 r2q 100 default 30 direct_packets_stat 0
qdisc sfq 30: parent 1:30 limit 127p quantum 1514b perturb 10sec 

### eth0: traffic classes

class htb 1:2 root rate 768000bit ceil 768000bit burst 1599b cburst 1599b 
class htb 1:30 parent 1:2 leaf 30: prio 0 rate 6144Kbit ceil 6144Kbit burst 15Kb cburst 1598b 

### eth0: filtering rules

filter parent 1: protocol ip pref 100 u32 
filter parent 1: protocol ip pref 100 u32 fh 800: ht divisor 1 
filter parent 1: protocol ip pref 100 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:30 
  match 00000000/00000000 at 12
  match 00000000/00000000 at 16

### eth1: queueing disciplines

qdisc htb 1: root refcnt 2 r2q 100 default 30 direct_packets_stat 0
qdisc sfq 30: parent 1:30 limit 127p quantum 1514b perturb 10sec 

### eth1: traffic classes

class htb 1:2 root rate 768000bit ceil 768000bit burst 1599b cburst 1599b 
class htb 1:30 parent 1:2 leaf 30: prio 0 rate 6144Kbit ceil 6144Kbit burst 15Kb cburst 1598b 

答案1

尝试将其(使用您的 IP)添加到 eth1-2:30.dfl

RULE=192.168.0.0/24

答案2

我不得不说,我发现速度超过 100Mbit 时很难解决这个问题。就我而言,我想调整到 2Gbit/s

最后,我改编了一个我认为可行的脚本。它就在这里,请根据您的需要进行改编。具体来说,您需要将速率调整为有效值。tc 可以理解 mbit。因此,您需要输入 768kbit 之类的值或它可以正确解释的值。

#!/bin/sh
#
# Incoming traffic control
#
DEV=eth0
RATE="2000mbit"

tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate ${RATE} burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${RATE} ceil ${RATE} burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10

echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV

#
# Outgoing traffic control
#
DEV=eth2
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate ${RATE} burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${RATE} ceil ${RATE} burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10

echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV

相关内容