Люди ! Помогите.
Измотал меня этот htb и я понимаю что проблема не в нём.

/sbin/tc qdisc del dev eth1 root
/sbin/tc qdisc add dev eth1 root handle 1 htb default 0 r2q 100

/sbin/tc qdisc del dev eth0 root
/sbin/tc qdisc add dev eth0 root handle 1 htb default 0 r2q 100

/sbin/tc class add dev eth1 parent 1: classid 1:2 htb rate 16Mbit ceil 16Mbit

/sbin/tc class add dev eth1 parent 1:2 classid 1:05 htb rate 15Mbit ceil 15Mbit
/sbin/tc qdisc add dev eth1 parent 1:05 handle 05 sfq perturb 10

/sbin/tc class add dev eth1 parent 1:2 classid 1:07 htb rate 1024Kbit ceil 1024Kbit burst 50Kb prio 1
/sbin/tc qdisc add dev eth1 parent 1:07 handle 07 sfq perturb 10
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip dst 192.168.1.2/22 classid 1:07

/sbin/tc class add dev eth1 parent 1:2 classid 1:08 htb rate 1024Kbit ceil 1024Kbit burst 50Kb prio 1
/sbin/tc qdisc add dev eth1 parent 1:08 handle 08 sfq perturb 10
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip dst 192.168.1.3/22 classid 1:08

/sbin/tc class add dev eth0 parent 1: classid 1:2 htb rate 16Mbit ceil 16Mbit

/sbin/tc class add dev eth0 parent 1:2 classid 1:05 htb rate 15Mbit ceil 15Mbit
/sbin/tc qdisc add dev eth0 parent 1:05 handle 05 sfq perturb 10

/sbin/tc class add dev eth0 parent 1:2 classid 1:07 htb rate 128Kbit ceil 128Kbit burst 50Kb prio 1
/sbin/tc qdisc add dev eth0 parent 1:07 handle 07 sfq perturb 10
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 200 handle 102 fw classid 1:07

/sbin/tc class add dev eth0 parent 1:2 classid 1:08 htb rate 128Kbit ceil 128Kbit burst 50Kb prio 1
/sbin/tc qdisc add dev eth0 parent 1:08 handle 08 sfq perturb 10
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 200 handle 103 fw classid 1:08

iptables

iptables -A POSTROUTING -t nat -s 192.168.1.2 -j SNAT --to-source 10.1.1.1
iptables -t mangle -A PREROUTING -s 192.168.1.2 -j MARK --set-mark 102
iptables -t mangle -A PREROUTING -s 192.168.1.2 -j RETURN

iptables -A POSTROUTING -t nat -s 192.168.1.3 -j SNAT --to-source 10.1.1.1
iptables -t mangle -A PREROUTING -s 192.168.1.3 -j MARK --set-mark 103
iptables -t mangle -A PREROUTING -s 192.168.1.3 -j RETURN

Проблема в том, что 1024Кбит/с делит на двоих а не каждому по 1024Кбит/с.  Надо чтобы каждому по 1024
В чем я ошибся??

I like Linux

2 (26.01.2011 01:03:25 отредактировано Kettler)

Отписал в асю к вечеру будет просто хочу довести до ума.
Уверен что правильно указана маска 192.168.1.2/22 ?
Ещё для размышления если режишь по метке так на фига по ипи?

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

3 (26.01.2011 02:38:46 отредактировано Kettler)

Ну пока ток исходящую режим.

#!/bin/sh
lan=vlan6
tc=`which tc`

/sbin/tc qdisc del dev $lan root
/sbin/tc qdisc add dev $lan root handle 1: htb default 10

/sbin/tc class add dev $lan parent 1: classid 1:10 htb rate 100Mbit ceil 100Mbit

#/sbin/tc class add dev $lan parent 1:2 classid 1:07 htb rate 1024Kbit ceil 1024Kbit burst 50Kb prio 1
#/sbin/tc qdisc add dev $lan parent 1:07 handle 07 sfq perturb 10
#/sbin/tc filter add dev $lan parent 1:0 protocol ip prio 100 u32 match ip dst 172.16.0.32 classid 1:07

/sbin/tc class add dev $lan parent 1:2 classid 1:08 htb rate 2048Kbit ceil 2048Kbit burst 50Kb prio 1
/sbin/tc qdisc add dev $lan parent 1:08 handle 08 sfq perturb 10
/sbin/tc filter add dev $lan parent 1:0 protocol ip prio 100 u32 match ip dst 172.16.0.32 classid 1:08

Проверенно и так и так. Исходящую резать по ип не знаю честно ток если общий канал резать.

tc qdisc add dev ${IFACE} handle ffff: ingress
tc filter add dev ${IFACE} parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${DOWNLINK} burst 12k drop flowid :1

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

4

Блин... маска 192.168.1.2/32 а не 22

I like Linux

5

Я вам дал выше готовые примеры. На счёт маски 192.168.1.0/32 ток вашем скрипте вы гоняете по метке а также и по фильтру.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

6

Спасибо Kettler. Помог, всё ОК!
Есть такой еще вопрос. А как можно ограничить на группу. К приеру три группы, в них ип в разнобой и потому маской не получиться поделить. Надо чтобы каждая группа состоящая из нескольких адресов имела свое ограничение. К примеру 2Mbit на группу.
Такое возможно селать?

I like Linux

7 (27.01.2011 11:44:52 отредактировано Kettler)

а кто мешает ограничить по ип? заместо  172.16.0.32 подставляй своё ну классы само собой.

/sbin/tc class add dev $lan parent 1:2 classid 1:08 htb rate 2048Kbit ceil 2048Kbit burst 50Kb prio 1
/sbin/tc qdisc add dev $lan parent 1:08 handle 08 sfq perturb 10
/sbin/tc filter add dev $lan parent 1:0 protocol ip prio 100 u32 match ip dst 172.16.0.32 classid 1:08

P.S не хошь так посади их в отдельную подсеть.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

8 (29.01.2011 17:46:54 отредактировано astalavista)

Подскажите пожалуйста какие правила еще нужно добавить в iptables, чтобы не они не мешали тому что есть и отсекали то что не нужно. Т.е. вирусы с локалки чтобы не забивали канал и не было лишней нагрузки на сервер из-за левых запросов.

I like Linux

9

Покажи свой скрипт потом глянем.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

10

При загрузке делается это,  +последние три правила для каждого клиента.

#!/bin/bash
iptables -F -t nat
iptables -F -t mangle
iptables -A POSTROUTING -t nat -s 192.168.1.2 -j SNAT --to-source 10.1.1.1
iptables -t mangle -A PREROUTING -s 192.168.1.2 -j MARK --set-mark 102
iptables -t mangle -A PREROUTING -s 192.168.1.2 -j RETURN
...

при iptables -S выдает - можно всё

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
I like Linux

11

Скажи какие порты надо открыть обычным пользователям кто за nat? и какие порты нужны самому серверу.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

12

Все только через nat ходят ,  для внутренней ничего не надо, только интернет.

I like Linux

13 (29.01.2011 19:15:31 отредактировано astalavista)

также из нутри сети чтобы вирусы сервер не забивали

I like Linux

14

Ну на счёт вирусов это конечно вам надо логи смотреть а чтоб их смотреть надо iptables + log делать. Для человеческого логирования rotate настраивать.
Инет это ток 80 и 53 порт я думаю так же почту надо.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.