کد:
nano /etc/rc.d/rc.bw
#!/usr/bin/bash
# The script for share bandwithd in the lan network
# Lan interface = $INTIF = Receive of user = $DOWNLINK control
# Internet interface = $EXTIF = Send of user = $UPLINK control
# Users = 192.168.1.11 192.168.1.100
##
INTIF="eth0"
EXTIF="eth1"
DOWNLINK="256"
UPLINK="64"
MINDOWN="32"
MINUP="8"
LAN="192.168.1.11 192.168.1.100"
iptables -t mangle -F
tc qdisc del dev ${INTIF} root
tc qdisc del dev ${EXTIF} root
tc qdisc add dev ${INTIF} root handle 1: htb
tc qdisc add dev ${EXTIF} root handle 1: htb
tc class add dev ${INTIF} parent 1: classid 1:1 htb rate ${DOWNLINK}kbit ceil ${DOWNLINK}kbit
tc class add dev ${EXTIF} parent 1: classid 1:1 htb rate ${UPLINK}kbit ceil ${UPLINK}kbit
COUNT=1
HANDLE=1
for IP in $LAN; do
tc class add dev ${INTIF} parent 1:1 classid 1:1${COUNT} htb rate ${MINDOWN}kbit ceil ${DOWNLINK}kbit
tc filter add dev ${INTIF} parent 1: protocol ip prio 1 handle ${HANDLE} fw classid 1:1${COUNT}
iptables -t mangle -A FORWARD -o ${INTIF} -d ${IP} -j MARK --set-mark ${HANDLE}
HANDLE=$( expr ${HANDLE} + 1 )
tc class add dev ${EXTIF} parent 1:1 classid 1:1${COUNT} htb rate ${MINUP}kbit ceil ${UPLINK}kbit
tc filter add dev ${EXTIF} parent 1: protocol ip prio 1 handle ${HANDLE} fw classid 1:1${COUNT}
iptables -t mangle -A FORWARD -o ${EXTIF} -s ${IP} -j MARK --set-mark ${HANDLE}
COUNT=$( expr ${COUNT} + 1 )
HANDLE=$( expr ${HANDLE} + 1 )
done
موضوعات مشابه: