Перейти до

Помогите разобраться со скриптом шейпера


Рекомендованные сообщения

Нашел в нете следующий скриптик шейпера

#!/bin/sh

 

IPTABLES=/sbin/iptables

TC=/sbin/tc

DEV_IN=eth1

DEV_OUT=eth0

#actually 1mbit

#для того, чтобы реально управлять с приоритетом пришлось резать канал примерно на 25%

RATE_IN=800

 

case "$1" in

start)

########################## IN #############################

$TC qdisc add dev $DEV_IN root handle 1:0 htb default 99

 

$TC class add dev $DEV_IN parent 1:0 classid 1:1 htb rate ${RATE_IN}kbit ceil ${RATE_IN}kbit

 

$TC class add dev $DEV_IN parent 1:1 classid 1:10 htb rate $[$RATE_IN/8]kbit ceil $[$RATE_IN/2]kbit prio 0

$TC class add dev $DEV_IN parent 1:1 classid 1:25 htb rate $[$RATE_IN/8]kbit ceil $[$RATE_IN/2]kbit prio 1

$TC class add dev $DEV_IN parent 1:1 classid 1:50 htb rate $[$RATE_IN/4]kbit ceil ${RATE_IN}kbit prio 2

$TC class add dev $DEV_IN parent 1:1 classid 1:75 htb rate $[$RATE_IN/4]kbit ceil ${RATE_IN}kbit prio 3

$TC class add dev $DEV_IN parent 1:1 classid 1:99 htb rate $[$RATE_IN/4]kbit ceil ${RATE_IN}kbit prio 4

 

$TC qdisc add dev $DEV_IN parent 1:10 handle 10: pfifo limit 5

$TC qdisc add dev $DEV_IN parent 1:25 handle 25: sfq perturb 10

$TC qdisc add dev $DEV_IN parent 1:50 handle 50: sfq perturb 10

$TC qdisc add dev $DEV_IN parent 1:75 handle 75: sfq perturb 10

$TC qdisc add dev $DEV_IN parent 1:99 handle 99: sfq perturb 10

 

 

#### Маркировка пакетов

 

# добавить цепочку MYSHAPER-IN в таблицу mangle - сейчас мы настроим таблицу,которую будем

# использовать для фильтрациии установки fwmark

iptables -t mangle -N MYSHAPER-IN

iptables -t mangle -I POSTROUTING -o $DEV_IN -j MYSHAPER-IN

 

# маркируем пакеты с помощью fwmark - устанавливаем значения 10-99 в зависимости от

# нужного класса. Высший приоритет - 10.

 

# Низкоприоритетный трафик

iptables -t mangle -A MYSHAPER-IN -p tcp --sport 0:1024 -j MARK --set-mark 99

iptables -t mangle -A MYSHAPER-IN -p tcp --dport 0:1024 -j MARK --set-mark 99

 

#www

iptables -t mangle -A MYSHAPER-IN -p tcp --sport 80 -j MARK --set-mark 25

iptables -t mangle -A MYSHAPER-IN -p tcp --dport 80 -j MARK --set-mark 25

 

# порт ftp-data, низкий приоритет

iptables -t mangle -A MYSHAPER-IN -p tcp --sport 20 -j MARK --set-mark 99

 

# интернет-пейджер aol

iptables -t mangle -A MYSHAPER-IN -p tcp --sport 5190 -j MARK --set-mark 75

 

# irc

iptables -t mangle -A MYSHAPER-IN -p tcp --sport 6667 -j MARK --set-mark 75

iptables -t mangle -A MYSHAPER-IN -p tcp --sport 9944 -j MARK --set-mark 75

 

#pptp

iptables -t mangle -A MYSHAPER-IN -p tcp --sport 1723 -j MARK --set-mark 75

iptables -t mangle -A MYSHAPER-IN -p gre -j MARK --set-mark 75

 

# ICMP (ping) - высокий приоритет,

# будем удивлять друзей

iptables -t mangle -A MYSHAPER-IN -p icmp -j MARK --set-mark 25

 

# распознавание имен DNS (маленькие пакеты)

iptables -t mangle -A MYSHAPER-IN -p udp -j MARK --set-mark 25

 

# secure shell

iptables -t mangle -A MYSHAPER-IN -p tcp --dport 22 -j MARK --set-mark 10

iptables -t mangle -A MYSHAPER-IN -p tcp --sport 22 -j MARK --set-mark 10

 

# telnet (ew...)

iptables -t mangle -A MYSHAPER-IN -p tcp --dport 23 -j MARK --set-mark 25

iptables -t mangle -A MYSHAPER-IN -p tcp --sport 23 -j MARK --set-mark 25

 

# маленькие пакеты, скорее всего ACK-пакеты

iptables -t mangle -A MYSHAPER-IN -p tcp -m length --length :64 -j MARK --set-mark 25

#тут ускрил шефа Smile

# iptables -t mangle -A MYSHAPER-IN -d 192.168.0.3 -j MARK --set-mark 10

 

 

# избыточно - смаркировать все неотмаркированые пакеты как 99 (низкий проиритет)

iptables -t mangle -A MYSHAPER-IN -m mark --mark 0 -j MARK --set-mark 99

 

$TC filter add dev $DEV_IN parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10

$TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip handle 25 fw flowid 1:25

$TC filter add dev $DEV_IN parent 1:0 prio 2 protocol ip handle 50 fw flowid 1:50

$TC filter add dev $DEV_IN parent 1:0 prio 3 protocol ip handle 75 fw flowid 1:75

$TC filter add dev $DEV_IN parent 1:0 prio 4 protocol ip handle 99 fw flowid 1:99

# LAN

$TC filter add dev $DEV_OUT parent 1:0 protocol ip prio 1 u32 match ip src 192.168.0.1/24 flowid 1:2

 

echo "Shaper on $DEV_IN started ($RATE_IN kbit/s)"

;;

stop)

tc qdisc del dev $DEV_IN root 2> /dev/null > /dev/null

tc qdisc del dev $DEV_OUT root 2> /dev/null > /dev/null

iptables -t mangle -D POSTROUTING -o $DEV_OUT -j MYSHAPER-OUT 2> /dev/null > /dev/null

iptables -t mangle -F MYSHAPER-OUT 2> /dev/null > /dev/null

iptables -t mangle -X MYSHAPER-OUT 2> /dev/null > /dev/null

iptables -t mangle -D POSTROUTING -o $DEV_IN -j MYSHAPER-IN 2> /dev/null > /dev/null

iptables -t mangle -F MYSHAPER-IN 2> /dev/null > /dev/null

iptables -t mangle -X MYSHAPER-IN 2> /dev/null > /dev/null

 

echo "Shaper removed"

;;

restart)

$0 stop

$0 start

 

;;

status)

echo "[qdisc IN]"

$TC -s qdisc show dev $DEV_IN

echo "[class IN]"

$TC -s class show dev $DEV_IN

echo "[filter IN]"

$TC -s filter show dev $DEV_IN

;;

*)

echo "Usage: $0 {start|stop|restart|status}"

;;

esac

 

exit 0

 

При запросе статуса получаю следующий результат

[qdisc IN]

 

qdisc htb 1: r2q 10 default 99 direct_packets_stat 0

 

Sent 344263973 bytes 1152851 pkt (dropped 0, overlimits 197446 requeues 0)

 

rate 0bit 0pps backlog 0b 0p requeues 0

 

qdisc pfifo 10: parent 1:10 limit 5p

 

Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)

 

rate 0bit 0pps backlog 0b 0p requeues 0

 

qdisc sfq 25: parent 1:25 limit 128p quantum 1514b perturb 10sec

 

Sent 10055 bytes 124 pkt (dropped 0, overlimits 0 requeues 0)

 

rate 0bit 0pps backlog 0b 0p requeues 0

 

qdisc sfq 50: parent 1:50 limit 128p quantum 1514b perturb 10sec

 

Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)

 

rate 0bit 0pps backlog 0b 0p requeues 0

 

qdisc sfq 75: parent 1:75 limit 128p quantum 1514b perturb 10sec

 

Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)

 

rate 0bit 0pps backlog 0b 0p requeues 0

 

qdisc sfq 99: parent 1:99 limit 128p quantum 1514b perturb 10sec

 

Sent 344253782 bytes 1152725 pkt (dropped 0, overlimits 0 requeues 0)

 

rate 0bit 0pps backlog 0b 0p requeues 0

 

[class IN]

 

class htb 1:99 parent 1:1 leaf 99: prio 4 rate 200000bit ceil 800000bit burst 1699b cburst 1999b

 

Sent 344255340 bytes 1152728 pkt (dropped 0, overlimits 0 requeues 0)

 

rate 309280bit 126pps backlog 0b 0p requeues 0

 

lended: 727811 borrowed: 424917 giants: 0

 

tokens: -1139 ctokens: -1226

 

 

 

class htb 1:1 root rate 800000bit ceil 800000bit burst 1999b cburst 1999b

 

Sent 344265395 bytes 1152852 pkt (dropped 0, overlimits 0 requeues 0)

 

rate 309512bit 126pps backlog 0b 0p requeues 0

 

lended: 424917 borrowed: 0 giants: 0

 

tokens: -1226 ctokens: -1226

 

 

 

class htb 1:10 parent 1:1 leaf 10: prio 0 rate 100000bit ceil 400000bit burst 1649b cburst 1799b

 

Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)

 

rate 0bit 0pps backlog 0b 0p requeues 0

 

lended: 0 borrowed: 0 giants: 0

 

tokens: 135168 ctokens: 36864

 

 

 

class htb 1:75 parent 1:1 leaf 75: prio 3 rate 200000bit ceil 800000bit burst 1699b cburst 1999b

 

Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)

 

rate 0bit 0pps backlog 0b 0p requeues 0

 

lended: 0 borrowed: 0 giants: 0

 

tokens: 69632 ctokens: 20480

 

 

 

class htb 1:50 parent 1:1 leaf 50: prio 2 rate 200000bit ceil 800000bit burst 1699b cburst 1999b

 

Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)

 

rate 0bit 0pps backlog 0b 0p requeues 0

 

lended: 0 borrowed: 0 giants: 0

 

tokens: 69632 ctokens: 20480

 

 

 

class htb 1:25 parent 1:1 leaf 25: prio 1 rate 100000bit ceil 400000bit burst 1649b cburst 1799b

 

Sent 10055 bytes 124 pkt (dropped 0, overlimits 0 requeues 0)

 

rate 0bit 0pps backlog 0b 0p requeues 0

 

lended: 124 borrowed: 0 giants: 0

 

tokens: 128615 ctokens: 35226

 

 

 

[filter IN]

 

filter parent 1: protocol ip pref 1 fw

 

filter parent 1: protocol ip pref 1 fw handle 0x19 classid 1:25

 

filter parent 1: protocol ip pref 2 fw

 

filter parent 1: protocol ip pref 2 fw handle 0x32 classid 1:50

 

filter parent 1: protocol ip pref 3 fw

 

filter parent 1: protocol ip pref 3 fw handle 0x4b classid 1:75

 

filter parent 1: protocol ip pref 4 fw

 

filter parent 1: protocol ip pref 4 fw handle 0x63 classid 1:99

 

filter parent 1: protocol ip pref 49152 fw

 

filter parent 1: protocol ip pref 49152 fw handle 0xa classid 1:10

судя по логам весь трафик направляется в одну полосу хотя должен делиться iptables-ом. В чем может быть проблема?

Ссылка на сообщение
Поделиться на других сайтах

А с чего ты взял, что у тебя все побежало в одну полосу?

Судя по данным, пошло по 99му марку (основная масса) и по 25ой марке (телнет)

Тобиш фаервол нормально все размарковал.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...