Настройка шейпера

Технические вопросы по UTM 5.0
Ответить
fider83
Сообщения: 10
Зарегистрирован: Чт янв 22, 2009 23:54

Настройка шейпера

Сообщение fider83 »

Здравствуйте уважаемые формучане. Есть не большой вопрос по настройке шейпера. Не получаеться на строить шейпер по статье от netapa. Сама статья http://www.netup.ru/articles.php?n=2
При настройке файерволла в администраторском интерфейсе,
не заносятся правила, т.е. они заносятся, но не выполняются.
4. включение: tc filter add dev eth0 parent 1: protocol ip prio 3 handle RULE_ID fw classid 1:RULE_ID
выключение: tc filter del dev eth0 parent 1: protocol ip prio 3 handle RULE_ID fw classid 1:RULE_ID

5. включение: tc class add dev eth0 parent 1:1 classid 1:RULE_ID htb rate 1mbit burst 20k
выключение: tc class del dev eth0 parent 1:1 classid 1:RULE_ID htb rate 1mbit burst 20k

в логе rfw5.log

Try `iptables -h' or 'iptables --help' for more information.
Bad argument `tc'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `tc'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `tc'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `tc'

Куда копать может кто скажет? Заранее спасибо :(

Аватара пользователя
stmw00d00
Сообщения: 51
Зарегистрирован: Пт ноя 02, 2007 16:18
Контактная информация:

Сообщение stmw00d00 »

А в конфиге firewall_path=/usr/bin/sudo?

fider83
Сообщения: 10
Зарегистрирован: Чт янв 22, 2009 23:54

Сообщение fider83 »

так точно, еще вот что заметил, в логе secure , т.е. видно что он пытаться tc запустить iptables ом


; COMMAND=/sbin/iptables -A FORWARD -s 0/0 -d 192.168.1.3/32 -j ACCEPT
Jan 22 03:35:23 router-victory sudo: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/sbin/iptables -A FORWARD -d 0/0 -s 192.168.1.3/32 -j ACCEPT
Jan 22 03:35:23 router-victory sudo: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/sbin/iptables -t mangle -A FORWARD -s 0/0 -d 192.168.1.3/32 -j MARK - -set-mark 5014
Jan 22 03:35:23 router-victory sudo: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/sbin/iptables /sbin/tc filter add dev eth0 parent 1: protocol ip prio 3 handle 5014 fw classid 1:5014
Jan 22 03:35:23 router-victory sudo: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/sbin/iptables /sbin/tc class add dev eth0 parent 1:1 classid 1:5014 h tb rate 128Kbit burst 20k

Аватара пользователя
stmw00d00
Сообщения: 51
Зарегистрирован: Пт ноя 02, 2007 16:18
Контактная информация:

Сообщение stmw00d00 »

В /etc/sudoers запятые не пропустил?

fider83
Сообщения: 10
Зарегистрирован: Чт янв 22, 2009 23:54

Сообщение fider83 »

cat sudoers
root ALL=(ALL) ALL
ALL ALL=(ALL) ALL

mrDefault
Сообщения: 86
Зарегистрирован: Ср окт 29, 2008 12:04

Сообщение mrDefault »

Не стал создавать новую тему, решил спросить в этой.
Собственно имеем Debian и шейпер tc.

шейпер настроен по статье от нетапа, т.е

tc qdisc add dev vlan700 root handle 1: htb
tc class add dev vlan700 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit burst 10000k
iptables -t mangle -A PREROUTING -s 0/0 -d UIP -j MARK --set-mark RULE_ID
tc filter add dev vlan700 parent 1: protocol ip prio 1 handle RULE_ID fw classid 1:RULE_ID
tc class add dev vlan700 parent 1:1 classid 1:RULE_ID htb rate 512kbit burst 2000k

Сначала, работал нормально, но с увеличением числа клиентов стал давать неверную скорость, занижать.
при 128 кбит/c скорость в районе ~12 кбайт/с
при 256 кбит/c ~16 кбайт/с
при 512 кбит/c ~35кбайт/c
Причем что самое интересное даже при скорости 1024 кбит/c скорость не поднимается выше 38 кбайт/c.
не могу понять в чем дело, может кто сталкивался? дайте пинка в нужном направлении :)

P.S. с каналом все нормально, если убрать правила tc скорость взлетает...

linx
Сообщения: 29
Зарегистрирован: Ср окт 01, 2008 12:10

Сообщение linx »

собственно покажи отдельно скрипт динашейпера dynash.sh (например)
и классы которые создаешь на интерфейсе, а то каша получается

и почему iptables -t mangle -A PREROUTING а не iptables -t mangle -A FORWARD

Аватара пользователя
ds
Сообщения: 380
Зарегистрирован: Пн сен 18, 2006 14:06

Сообщение ds »

linx писал(а): и почему iptables -t mangle -A PREROUTING а не iptables -t mangle -A FORWARD
Можно и FORWARD конечно, если ната нет. А так есть табличка в lartc - порядок прохождения пакетов iptables.

Пишу в любом случае лучше в prerouting, мало ли :)

mrDefault
Сообщения: 86
Зарегистрирован: Ср окт 29, 2008 12:04

Сообщение mrDefault »

linx писал(а):собственно покажи отдельно скрипт динашейпера dynash.sh (например)
и классы которые создаешь на интерфейсе, а то каша получается

и почему iptables -t mangle -A PREROUTING а не iptables -t mangle -A FORWARD
Я же уже показал что создается
#очередь
tc qdisc add dev vlan700 root handle 1: htb
#корневой класс
tc class add dev vlan700 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit burst 10000k
#класс на абонента
tc class add dev vlan700 parent 1:1 classid 1:RULE_ID htb rate 512kbit burst 2000k
#фильтр на абонента
tc filter add dev vlan700 parent 1: protocol ip prio 1 handle RULE_ID fw classid 1:RULE_ID
#маркируем пакеты абонента
iptables -t mangle -A PREROUTING -s 0/0 -d UIP -j MARK --set-mark RULE_ID

Никакие динашейпы не используются, задача просто дать пользователю гарантированную полосу.
По поводу Forward или prerouting, пакет маркируется нормально. Проблема где-то с tc. Но для эксперимента попробовал forward, ничего не изменилось. TC просто выдает не ту скорость, причем непонятно поведение на полосах 1024 и 2048, скорость на них просто не поднимается выше 40 кбайт/c

P.S. может я не на том интерфейсе кручу? vlan700 смотрит в сеть(сеть с реальными адресами, ната нет) eth0 в интернет

linx
Сообщения: 29
Зарегистрирован: Ср окт 01, 2008 12:10

Сообщение linx »

может я не на том интерфейсе кручу? vlan700 смотрит в сеть(сеть с реальными адресами, ната нет) eth0 в интернет
если создашь на eth0 то будет резатся исходящая скорость.

сравни тогда с моими настройками

# создана очередь с индентификатором 1
tc qdisc add dev eth2 root handle 1: htb
# корневой класс очереди с идентификатором 1:1,
# имеющим гарантированую полосу в 12мбит/сек с возможностью повышения до 20 мбит с шагом в 200кбит
tc class add dev eth2 parent 1: classid 1:1 htb rate 12mbit ceil 20mbit burst 200k
# класс с идентификатором 1:10 имеющий полосу пропускания 800 кбит без возможности превышения,
# предназначенный для пропускания трафика неопределенной принадлежности из очереди
tc class add dev eth2 parent 1:1 classid 1:10 htb rate 800kbit burst 20k
# фильтр направляющий неклассифицированные пакеты трафика из очереди в класс с наименьшей пропускной способностью
tc filter add dev eth2 parent 1: protocol ip prio 3 handle 1 fw classid 1:10

класс с идентификатором 1:10 - испльзуется для безлимитчиков

mrDefault
Сообщения: 86
Зарегистрирован: Ср окт 29, 2008 12:04

Сообщение mrDefault »

linx писал(а):
может я не на том интерфейсе кручу? vlan700 смотрит в сеть(сеть с реальными адресами, ната нет) eth0 в интернет
если создашь на eth0 то будет резатся исходящая скорость.

сравни тогда с моими настройками

# создана очередь с индентификатором 1
tc qdisc add dev eth2 root handle 1: htb
# корневой класс очереди с идентификатором 1:1,
# имеющим гарантированую полосу в 12мбит/сек с возможностью повышения до 20 мбит с шагом в 200кбит
tc class add dev eth2 parent 1: classid 1:1 htb rate 12mbit ceil 20mbit burst 200k
# класс с идентификатором 1:10 имеющий полосу пропускания 800 кбит без возможности превышения,
# предназначенный для пропускания трафика неопределенной принадлежности из очереди
tc class add dev eth2 parent 1:1 classid 1:10 htb rate 800kbit burst 20k
# фильтр направляющий неклассифицированные пакеты трафика из очереди в класс с наименьшей пропускной способностью
tc filter add dev eth2 parent 1: protocol ip prio 3 handle 1 fw classid 1:10

класс с идентификатором 1:10 - испльзуется для безлимитчиков
понятно спасибо. eth2 смотрит в сторону абонентов? Я так понял что у вас все безлимитчики делят между собой 1 полосу и поэтому не жалуются? Мне же надо каждому безлимитчику предоставить свою гарантированную полосу и тут начинаются звонки и жалобы, типа должно быть столько-то, а у меня на 5 килобайт/c тянет медленней, что за фигня и тд. Прям чувствую что проблема зарыта в значениях ceil burst :(

linx
Сообщения: 29
Зарегистрирован: Ср окт 01, 2008 12:10

Сообщение linx »

чтоб каждому нарезать - использую скрипт dynash (модуль динашейп):

#!/bin/bash
if="eth2"
echo $*
echo "First create: tc qdisc add dev $if root handle 1: htb"
case "$7" in
1)

iptables -t mangle -A FORWARD -s 0/0 -d $2/$3 -j MARK --set-mark $1
tc filter add dev $if parent 1: protocol ip prio 3 handle $1 fw classid 1:$1
tc class add dev $if parent 1:1 classid 1:$1 htb rate $5kbit burst 20k

;;
0)

iptables -t mangle -D FORWARD -s 0/0 -d $2/$3 -i eth0 -j MARK --set-mark $1
tc filter del dev $if parent 1: protocol ip prio 3 handle $1 fw classid 1:$1
tc class del dev $if parent 1:1 classid 1:$1 htb rate $5kbit burst 20k


;;
2)
;;
3)
tc class change dev $if parent 1:1 classid 1:$1 htb rate $5kbit burst 20k
;;
*) echo "Usage: `basename $0` {ID IP BITMASK MASK SPEED INT_STATUS OPER_STATUS}" >&2
exit 64
;;
esac


параметры $1,$2,$3,$5 - берутся из базы билинга, т.е ,$5 - заданный параметр шейпирования в билинге

Ответить