Формирование пропускной способности для ipset с использованием qdisc и tc

Я пытаюсь управлять полосой пропускания для ipset с помощью этих руководств 1 , 3 , 2 1 . И этот скрипт . Я изменил его, чтобы получить ipsetnames.

Это мой скрипт Bandwithshaing.

TC=/sbin/tc
IF=wlan0             # Interface 
DNLD=1mbit          # DOWNLOAD Limit
UPLD=1mbit          # UPLOAD Limit 
IP1="myIPset1"     # Host IP
IP2="myIPset2"
U32="$TC filter add dev $IF protocol ip parent 1:0 prio 1 u32"

start() {

    $TC qdisc add dev $IF root handle 1: htb default 30
    $TC class add dev $IF parent 1: classid 1:1 htb rate $DNLD
    $TC class add dev $IF parent 1: classid 1:2 htb rate $UPLD
    $U32 match iptables dst $IP flowid 1:1
    $U32 match iptables src $IP flowid 1:2

        #second chain
    $TC qdisc add dev $IF root handle 1: htb default 30
    $TC class add dev $IF parent 1: classid 1:1 htb rate $DNLD
    $TC class add dev $IF parent 1: classid 1:2 htb rate $UPLD
    $U32 match iptables dst $IP1 flowid 1:1
    $U32 match iptables src $IP1 flowid 1:2
}

stop() {

    $TC qdisc del dev $IF root

}

restart() {

    stop
    sleep 1
    start
    }

show() {

    $TC -s qdisc ls dev $IF
    }
case "$1" in

  start)
        echo -n "Starting bandwidth shaping: "
    start
    echo "done"
    ;;

  stop)

    echo -n "Stopping bandwidth shaping: "
    stop
    echo "done"
    ;;

  restart)
        echo -n "Restarting bandwidth shaping: "
    restart
    echo "done"
    ;;
  show)
        echo "Bandwidth shaping status for $IF:\n"
    show
    echo ""
    ;;

  *)
        pwd=$(pwd)
    echo "Usage: $(/usr/bin/dirname $pwd)/tc.bash {start|stop|restart|show}"
    ;;

esac
exit 0

Когда я пытаюсь запустить скрипт Bandwithshaping, я получаю следующий результат. Начало формирования полосы пропускания: недопустимое «совпадение»

Illegal "match"
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
Illegal "match"
Illegal "match"
done

Это не влияет на формирование полосы пропускания. Если я использую IP-адрес, он работает нормально.

Я новичок в qdisc и tc, возможно ли это сделать?

Заранее спасибо. Что мне здесь не хватает?

0
задан 1 September 2017 в 09:10
1 ответ
يظهر الخطأ

"إجابات RTNETLINK: الملف موجود" عندما يكون هناك بالفعل qdisc متصل بالجذر. عادةً ما يتم تشغيل "tc qdisc del dev $ IF root" قبل إعداد قواعد tc على الجهاز بحيث يتم حذف القواعد القديمة.

يمكن تطبيق قواعد Tc فقط على حركة المرور للخارج. مقبض الجذر مخصص لحركة المرور ولن تكون هناك حزم مع تعيين dst على IP1 أو IP2. نستخدم جهاز ifb لتحويل حركة مرور الدخول إلى خروج وتطبيق القواعد عليه - http://linux-ip.net/gl/tc-filters/tc-filters-node3.html

لست تأكد من استخدام أسماء مجموعات الشرائح في المرشحات

0
ответ дан 24 November 2019 в 03:54

Теги

Похожие вопросы