Qdisc ve tc kullanarak bir ipset için bant genişliği şekillendirme


0

Bu dersleri 1 , 3 , 2 1 kullanarak bir ipset için bant genişliği kontrolü yapmaya çalışıyorum . Ve bu senaryo . İpsetnames almak için değiştirdim.

Bu benim bandwithshaing betiğim.

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 betiğini başlatmaya çalıştığımda çıktıyı izliyorum. Bant genişliği biçimlendirmesini başlatma: Yasadışı "eşleşme"

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

Bu, bant genişliğini şekillendirmiyor. Bir IP adresi kullanırsam, iyi çalışıyor.

Qdisc ve tc için yeniyim, bunu yapmak mümkün mü?

Şimdiden teşekkürler. Burada ne özlüyorum?


IP1 ve IP2'yi tanımladınız. Ancak IP ve IP1 değişkenlerini kullanıyorsunuz. Bu amaçlanıyor mu?
livinston

Yanıtlar:


0

"RTNETLINK cevapları: Dosya var" hatası, kök dizinine zaten bağlı bir qdisc olduğunda ortaya çıkar. Genellikle "tc qdisc del dev $ IF root" eski aygıtların silinmesi için tc kurallarını ayarlamadan önce çalıştırılır.

Tc kuralları sadece çıkış trafiğine uygulanabilir. Kök tanıtıcı çıkış trafiği içindir ve dst IP1 veya IP2 olarak ayarlanmış hiçbir paket olmayacaktır. Giriş trafiğini çıkışa dönüştürmek ve bunun üzerine kurallar uygulamak için bir ifb aygıtı kullanıyoruz - http://linux-ip.net/gl/tc-filters/tc-filters-node3.html

İpset adlarını filtrelerde kullanma konusunda emin değilim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.