Почему эта команда ограничения входа tc не работает? (пропускная способность падает до нуля)

Я пытаюсь защитить свою нисходящую ленту для данного порта – но, похоже, если у меня нет гигантского предела и не лопнет, загрузка полностью прекратится

IF="wlp3s0" LIMIT="100kbit" BURST="100kbit" PORT="80" echo "resetting tc" tc qdisc del dev ${IF} ingress echo "setting tc" tc filter add dev ${IF} parent ffff: \ protocol ip prio 1 \ u32 match ip dport ${PORT} 0xffff \ police rate ${LIMIT} burst $BURST drop \ flowid :1 tc filter add dev ${IF} parent ffff: \ protocol ip prio 1 \ u32 match ip sport ${PORT} 0xffff \ police rate ${LIMIT} burst $BURST drop \ flowid :1 

Я довольно долго настраивал вещи, тестируя всевозможные значения для ограничения и всплеска – wgetting chozabu.net/testfile (12mb)

любые предложения очень приветствуются!

Я не совсем уверен в использовании интерфейса wlan, который вы используете, но я предполагаю, что вам не хватает виртуального интерфейса, который должен перенаправить трафик с ethX или в вашем случае wlan3s0 в ifb, который управляет входящим пакетом

Итак, что-то похожее

 modprobe ifb numifbs=1 ip link set dev ifb0 up tc filter add dev wlp3s0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0 tc qdisc add dev $VIRTUAL root handle 2: htb tc filter add dev $VIRTUAL protocol ip parent 2: prio 1 u32 match ip sport ${PORT} 0xffff police rate ${LIMIT} burst $BURST drop \ flowid :1 

Я создал сценарий bash, который позволяет фильтровать полосу пропускания для входящего и / или исходящего трафика на определенный IP-адрес (или сеть)

https://gist.github.com/ole1986/d9d6be5218affd41796610a35e3b069c

 Usage: ./traffic-control.sh [-r|--remove] [-i|--incoming] [-o|--outgoing] <IP> Arguments: -r|--remove : removes all traffic control being set -i|--incoming : limit the bandwidth only for incoming packetes -o|--outgoing : limit the bandwidth only for outgoing packetes <IP> : the ip address to limit the traffic for