44 lines
1.2 KiB
Bash
Executable File
44 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# Helper script to limit traffic for iface:port
|
|
# http://www.codeoriented.com/how-to-limit-network-bandwidth-for-a-specific-tcp-port-on-ubuntu-linux/
|
|
# https://wiki.archlinux.org/index.php/Advanced_traffic_control
|
|
|
|
if ! which tc &>/dev/null ; then
|
|
2>&1 echo Error: tc executable not found
|
|
2>&1 echo Please install iproute2 package
|
|
exit 1
|
|
fi
|
|
|
|
IFACE=$1
|
|
RATE=$3
|
|
PORT=$2
|
|
|
|
if [ -z "$3" ] ; then
|
|
echo "Traffic limitter"
|
|
echo "Usage: $0 IFACE PORT RATE"
|
|
echo
|
|
echo "Available interfaces: $(ls -m /sys/class/net)"
|
|
echo
|
|
echo "Rate units: "
|
|
echo " kbps: Kilobytes per Second"
|
|
echo " mbps: Megabytes per Second"
|
|
echo " gbps: Gigabytes per Second"
|
|
echo " off: No rate limit"
|
|
echo
|
|
echo "Examples:"
|
|
echo " $0 wlan0 8080 10kbps"
|
|
echo " $0 wlan0 8080 off"
|
|
exit 1
|
|
fi
|
|
|
|
sudo tc qdisc del root dev $IFACE &>/dev/null || true
|
|
|
|
[ "$RATE" = "off" ] && exit
|
|
|
|
sudo tc qdisc add dev $IFACE root handle 1:0 htb default 10
|
|
sudo tc class add dev $IFACE parent 1:0 classid 1:10 htb rate $RATE prio 0
|
|
sudo tc filter add dev $IFACE parent 1:0 prio 0 protocol ip u32 match ip protocol 4 0xff match ip dport $PORT 0xffff flowid 1:10
|
|
sudo tc qdisc show dev $IFACE
|