У меня есть Ubuntu 10, который я пытаюсь настроить как маршрутизатор с ограничением пропускной способности.
Машина имеет один интерфейс WAN, eth0 и два интерфейса LAN, eth1 и eth2. NAT настраивается с помощью MASQUERADE, как описано в Интернет-соединение.
Меня больше всего интересует формирование исходящего трафика от интерфейсов LAN - в конце концов, я хотел бы получить жесткое ограничение на 768 Кбит / с для каждого интерфейса LAN (а не ограничение на eth0, объединенное для всех интерфейсов).
Я установил HTB.init, и перебирая примеры, попытался настроить это на eth1, поместив три файла в / etc / sysconfig / htb:
/ и т.д. / 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 start и /etc/init.d/htb stats и видеть информацию, которая / кажется / предполагает, что это работает ... но когда я пытаюсь вытащить большой файл через интерфейс WAN, формируется четкое не действует.
Какие-либо предложения? Я предполагаю, что это как-то связано с тем, где формирование попадает в цепочку NAT, но я действительно не знаю, с чего начать устранение неполадок.
---- Обновить:
Вот мой вывод списка /etc/init.d/htb, кажется, имеет смысл - скорость по умолчанию для eth1 составляет 768 Кбит / с?
### 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
Должен сказать, мне было действительно трудно понять это при скоростях, превышающих 100 Мбит. В моем случае я хотел сформировать до 2 Гбит / с
В конце концов я адаптировал сценарий, который нашел работу. Вот он, адаптируйте его под свои нужды. В частности, вам нужно настроить скорость на что-то действительное. тс понимает мбит. Таким образом, вам нужно ввести что-то вроде 768 Кбит или что-то, что он может правильно интерпретировать.
#!/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
Попробуйте добавить это (используя свой IP) в eth1-2: 30.dfl
RULE=192.168.0.0/24