کد:
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




موضوعات مشابه: