LINUX.ORG.RU
решено ФорумAdmin

Шейпинг интернет трафика. Как отключить ограничение скорости в локальной сети

 , , ,


1

2

Добрый день форумчане, нужна ваша помощь, сам новичок пока.

Используя маны в интернете написал вот такой скрипт для шейпинга интернета, скрипт работает и трафик шейпится, но подскажите плиз, как отключить шейпирование локального трафика, а интернет трафик шейпить согласно скрипту. У нас интернет канал 100Мбит, а локалка 1Гб.

Сам скрипт:

#!/bin/bash
################################################################
TC="/sbin/tc"
MODPROBE="/sbin/modprobe"
PROVIDER_SPEED="100Mbit"
SPEED_LAN_MAX="1024Mbit"
SPEED_Lan_RATE="800Mbit"
################################################################

###
stop(){
for var in $(cat ./list | grep -v "^\#")
do

NUMBER=$(echo "$var" | cut -d ":" -f 1)
VLAN=$(echo "$var" | cut -d ":" -f 2)
IFB=$(echo "$var" | cut -d ":" -f 3)

VLAN_DOWN_RATE=$(echo "$var" | cut -d ":" -f 4)
VLAN_DOWN_CEIL=$(echo "$var" | cut -d ":" -f 5)

VLAN_UP_RATE=$(echo "$var" | cut -d ":" -f 6)
VLAN_UP_CEIL=$(echo "$var" | cut -d ":" -f 7)

NO_CLASS_TRAFFIC_RATE=$(echo "$var" | cut -d ":" -f 8)
NO_CLASS_TRAFFIC_CEIL=$(echo "$var" | cut -d ":" -f 9)

$TC qdisc del dev $VLAN root
$TC qdisc del dev $IFB root
$TC qdisc del dev $VLAN ingress

done

$MODPROBE ifb -r

}

start(){
# Считаем строки, создаем интерфейсы EFB и включаем их
LINE=$(cat ./list | grep -v "^\#" | wc -l)
$MODPROBE ifb numifbs=$LINE
i=0
while [ $i -lt $LINE ]
do
ifconfig ifb$i up
i=$((i+1))
done

# читаем построчно файл "list"
for var in $(cat ./list | grep -v "^\#")
do

NUMBER=$(echo "$var" | cut -d ":" -f 1)
VLAN=$(echo "$var" | cut -d ":" -f 2)
IFB=$(echo "$var" | cut -d ":" -f 3)

VLAN_DOWN_RATE=$(echo "$var" | cut -d ":" -f 4)
VLAN_DOWN_CEIL=$(echo "$var" | cut -d ":" -f 5)

VLAN_UP_RATE=$(echo "$var" | cut -d ":" -f 6)
VLAN_UP_CEIL=$(echo "$var" | cut -d ":" -f 7)

NO_CLASS_TRAFFIC_RATE=$(echo "$var" | cut -d ":" -f 8)
NO_CLASS_TRAFFIC_CEIL=$(echo "$var" | cut -d ":" -f 9)

# Удаляем все обработчики на интерфейсе
#$TC qdisc del dev $VLAN root
#$TC qdisc del dev $IFB root
#$TC qdisc del dev $VLAN ingress

## Перенаправляем весь исходящий от пользователей трафик на виртуальный интерфейс ifb0
$TC qdisc add dev $VLAN ingress
$TC filter add dev $VLAN parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev $IFB

## DOWNLOAD CLASSES
#############################################################
# Создаем корневой обработчик очереди
$TC qdisc add dev $VLAN root handle $NUMBER: htb default 900

# Описание классов для входящего к пользователям трафика (пропускная способность самого интерфейса)
$TC class add dev $VLAN parent $NUMBER: classid $NUMBER:1 htb rate $SPEED_LAN_MAX burst 15k

# Локльный трафик (SERVER -> CLIENTS) (пропускная способность всего локального трафика)
$TC class add dev $VLAN parent $NUMBER:1 classid $NUMBER:10 htb rate $SPEED_Lan_RATE ceil $SPEED_LAN_MAX burst 15k

# Трафик от провайдера (SERVER -> CLIENTS) (пропускная способность канала провайдера)
$TC class add dev $VLAN parent $NUMBER:1 classid $NUMBER:100 htb rate $PROVIDER_SPEED burst 15k

# Неклассифицированный трафик будет отправлен в этот класс (SERVER -> CLIENTS)
$TC class add dev $VLAN parent $NUMBER:1 classid $NUMBER:900 htb rate $NO_CLASS_TRAFFIC_RATE ceil $NO_CLASS_TRAFFIC_CEIL
#############################################################

## UPLOAD CLASSES
#############################################################
# Создаем корневой обработчик очереди 
$TC qdisc add dev $IFB root handle $NUMBER: htb default 900

# Описание классов для исходящего от пользователей трафика
$TC class add dev $IFB parent $NUMBER: classid $NUMBER:1 htb rate $SPEED_LAN_MAX burst 15k

# Локльный трафик (SERVER -> CLIENTS) (пропускная способность всего локального трафика)
$TC class add dev $IFB parent $NUMBER:1 classid $NUMBER:10 htb rate $SPEED_Lan_RATE ceil $SPEED_LAN_MAX burst 15k

# Трафик от провайдера (SERVER -> CLIENTS) (пропускная способность канала провайдера)
$TC class add dev $IFB parent $NUMBER:1 classid $NUMBER:100 htb rate $PROVIDER_SPEED burst 15k

# Неклассифицированный трафик будет отправлен в этот класс (SERVER -> CLIENTS)
$TC class add dev $IFB parent $NUMBER:1 classid $NUMBER:900 htb rate $NO_CLASS_TRAFFIC_RATE ceil $NO_CLASS_TRAFFIC_CEIL
##############################################################

done

}

case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
start
;;
*)
msg_usage "${0##*/} {restart|start|stop}"
RETVAL=1
esac

Файл в котором хранятся все переменные

#№:VLAN:IFB:DOWNLOAD:CEIL:UPLOAD:CEIL:NOCLASS:CEIL
1:enp4s0:ifb0:10Mbit:10Mbit:10Mbit:10Mbit:10Mbit:10Mbit

Трафик откуда куда хотите шейпить и по каким критериям? Из вашего скрипта, простите, ничего не понял... Может лучше начать с постановки задачи, а потом разбираться, как её решать?

mik73 ()
Ответ на: комментарий от mik73

Возможно действую не правильно, т.к. только в процессе изучения утилиты iproute.

Задача следующая: Есть сеть разделенная на VLANы, необходимо ограничить скорость доступа в интернет нескольким VLANам, но при этом локальный трафик не ограничивать по скорости.

StalinSmol ()

У вас все работает по дефолт классам и вход и выход. Соотвественно надо сделать фильтры входа и выхода для не дефолтных классов и расширить их до локальных скоростей, оставив интернет в дефолтных. Желательно повесить оконечные дисциплины sfq, если суммарный сейл будет больше скорости корня.

anonymous ()
Ответ на: комментарий от anonymous

Не совсем понимаю, как это реализовать, не могли бы подсказать пожалуйста или дать ссылку на статью какую, спасибо огромное.

StalinSmol ()
Ответ на: комментарий от anonymous

Не совсем понимаю, как это реализовать, не могли бы подсказать пожалуйста или дать ссылку на статью какую, спасибо огромное.

StalinSmol ()
3 мая 2018 г.
Ответ на: комментарий от StalinSmol

Приветствую. Удалось найти решение данной задачи?

Столкнулся с такой же ситуацией...

lanit ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.