Thank for all.
_________________________________________________________________
Melodías, logos y mil servicios para tu teléfono en MSN Móviles. http://www.msn.es/MSNMovil/ #!/bin/bash
# Este programa se encarga de la limpieza del sistema de rutas, asi como de lavantar
# el sistema de enrutamiento avanzado y el sistema de control de trafico, tanto
# saliente como entrante.
#
# Cargamos las variables de entorno para facilitar el trabajo. De esta forma, si se
# cambia la IP del router 1, no habria que cambiarla en cada linea que aparece, sino
# tan solo aqui, lo mismo pasa cuando queremos cambiar otros parametros (Ej, Velocidad).
ETIP0=192.168.0.200 # Direccion IP de la tarjeta 1
ETIP1=192.168.2.201 # " tarjeta 2
ETIP2=10.10.5.200 # " tarjeta 3
ETIP3=10.10.5.201 # " tarjeta 4
ADSL1=192.168.2.100 # Direccion IP del router 1
ADSL2=10.10.5.1 # Direccion IP del router 2
RED1=192.168.2.0/24 # Subred 1 (192.168.2.0 mascara 255.255.255.0 = (/24)
RED2=10.10.5.0/24 # Subred 2 (10.10.5.0 mascara 255.255.255.0 = (/24)
DS1=eth0 # Dispositivo de salida 1
DE1=eth1 # Dispositivo de entrada 1
DS2=eth2 # Dispositivo de salida 2
DE2=eth3 # Dispositivo de entrada 2
RTS1=450 # Velocidad de subida linea 1
RTD1=1400 # Velocidad de bajada linea 1
RTS2=500 # Velocidad de subida linea 2
RTD2=1500 # Velocidad de bajada linea 2
IP_I= # IP de inicio de la sala 2
IP_F= # IP final de la sala 2
RAMA="parent 1:0 protocol ip prio 0 u32 match ip src" # Rama de coincidencias
# La velocidad Max de subida se ha dejado por debajo de la velocidad Max real de la
# linea, asi conseguimos eliminar esperas cuando se produce una bajada de capacidad.
# La velocidad de bajada ha sido limitada a este valor para evitar que los picos de
# descarga puedan afectar al trafico interactivo. A pesar de ello, la velocidad real
# obtenida por este metodo, es de 1510, cuando no hay un trafico prioritario.
# Esta primera funcion, nos muestra el estado del sistema de limitacion y control de trafico.
status() {
clear
echo
echo
echo
echo -en "\033[32m[qdisc]\033[m\014\r"
tc -s qdisc show dev $DS1 2> /dev/null # Muestra el estado de las colas de paquetes en
tc -s qdisc show dev imq0 2> /dev/null # cada uno de los dispositivos empleados, siendo
tc -s qdisc show dev $DS2 2> /dev/null # $DS1 y $DS2 los dispositivos de salida e imq0
tc -s qdisc show dev imq1 2> /dev/null # e imq1 los de entrada (FIXME: Limitar directa-
echo -en "\033[32m[class]\033[m\014\r" # mente en eth1 y eth3 si es posible.
tc -s class show dev $DS1 2> /dev/null # Identica funcion con las clases de cada raiz.
tc -s class show dev imq0 2> /dev/null
tc -s class show dev $DS2 2> /dev/null
tc -s class show dev imq1 2> /dev/null
echo -en "\033[32m[filter]\033[m\014\r" # Muestra los filtros aplicados.
tc -s filter show dev $DS1 2> /dev/null
tc -s filter show dev imq0 2> /dev/null
tc -s filter show dev $DS2 2> /dev/null
tc -s filter show dev imq1 2> /dev/null
echo -en "\033[32m[iptables]\033[m\014\r" # Muestra la configuracion de IPTABLES para cada
iptables -t mangle -L MYSHAPER-OUT-1 2> /dev/null # una de las cadenas existentes.
iptables -t mangle -L MYSHAPER-IN-1 2> /dev/null
iptables -t mangle -L MYSHAPER-OUT-2 2> /dev/null
iptables -t mangle -L MYSHAPER-IN-2 2> /dev/null
}
# Esta funcion se encarga de "poner todo a 0". stop() {
# Comienza el Modulo de rutas.
clear
echo
echo -en "\033[32m[Limpiando modulo de rutas]\033[m\014\r"
echo -en "\033[33mBorrar ruta principal : \033[m\014\r"
ip route del default via $ADSL1 dev $DS1 &> /dev/null
ip route del default via $ADSL2 dev $DS2 &> /dev/null
echo -en "\033[33mBorrar reglas locales : \033[m\014\r"
ip rule del from $RED1 dev $DE1 table sala1 &> /dev/null
ip rule del from $RED2 dev $DE2 table sala2 &> /dev/null
ip rule del from 127.0.0.0/8 dev lo table local &> /dev/null
echo -en "\033[33mBorrar rutas locales : \033[m\014\r"
ip route del default via $ADSL1 dev $DS1 table sala1 &> /dev/null
ip route del default via $ADSL2 dev $DS2 table sala2 &> /dev/null
ip route del default via $ADSL1 dev $DS1 table local &> /dev/null
ip route del default via $ADSL2 dev $DS2 table local &> /dev/null
echo -en "\033[33mBorrar ruta balanceada : \033[m\014\r"
ip route del default scope global nexthop via $ADSL2 dev $DS2 weight 1 nexthop via $ADSL1 dev $DS1 weight 1 &> /dev/null
ip route del default scope global nexthop via $ADSL1 dev $DS1 weight 1 nexthop via $ADSL2 dev $DS2 weight 1 &> /dev/null
echo -en "\033[32m[Modulo de rutas limpio]\033[m\014\r"
# Final del Modulo de rutas.
# Comienza el Modulo de limitacion-clasificacion.
echo
echo -en "\033[32m[Limpiando limitador-clasificador de trafico]\033[m\014\r"
# Sub-Modulo de limitacion saliente.
echo -en "\033[33mLimpiando limitador de velocidad saliente : \033[m\014\r"
tc qdisc del dev $DS1 root &> /dev/null
tc qdisc del dev $DS2 root &> /dev/null
# Sub-Modulo clasificador. echo -en "\033[33mLimpiando clasificador : \033[m\014\r" iptables -t mangle -D POSTROUTING -o $DS1 -j MYSHAPER-OUT-1 &> /dev/null iptables -t mangle -F MYSHAPER-OUT-1 &> /dev/null iptables -t mangle -X MYSHAPER-OUT-1 &> /dev/null iptables -t mangle -D PREROUTING -i $DS1 -j MYSHAPER-IN-1 &> /dev/null iptables -t mangle -F MYSHAPER-IN-1 &> /dev/null iptables -t mangle -X MYSHAPER-IN-1 &> /dev/null iptables -t mangle -D POSTROUTING -o $DS2 -j MYSHAPER-OUT-2 &> /dev/null iptables -t mangle -F MYSHAPER-OUT-2 &> /dev/null iptables -t mangle -X MYSHAPER-OUT-2 &> /dev/null iptables -t mangle -D PREROUTING -i $DS2 -j MYSHAPER-IN-2 &> /dev/null iptables -t mangle -F MYSHAPER-IN-2 &> /dev/null iptables -t mangle -X MYSHAPER-IN-2 &> /dev/null
# Sub-Modulo de limitacion entrante.
echo -en "\033[33mLimpiando limitador de velocidad entrante : \033[m\014\r"
tc qdisc del dev imq0 root &> /dev/null
tc qdisc del dev imq1 root &> /dev/null
ip link set imq0 down &> /dev/null
ip link set imq1 dwon &> /dev/null
echo -en "\033[32m[Limitador-clasificador de trafico limpio]\033[m\014\r"
# Final del Modulo de limitacion-clasificacion.
}
# Esta funcion carga todo el sistema de rutas y limitacion de trafico, tanto en trante
# como saliente.
start() {
# Comienza el Modulo de carga. stop # Limpiamos el entorno llamando al Modulo de Parada.
# Comenzamos a cargar las rutas basicas.
echo
echo -en "\033[32m[Cargando reglas de rutas y activando filtrado inverso]\033[m\014\r"
echo -en "\033[33mCargando reglas locales : \033[m\014\r" # Cargamos las reglas basicas.
ip rule add from $RED1 dev $DE1 table sala1 &> /dev/null
ip rule add from $RED2 dev $DE2 table sala2 &> /dev/null
ip rule add from 127.0.0.0/8 dev lo table local &> /dev/null
echo -en "\033[33mActivando Filtrado Inverso : \033[m\014\r" # Activamos el filtrado inverso a todas las tarjetas.
echo 1 > /proc/sys/net/ipv4/ip_forward
echo -en "\033[33mCargando rutas Locales : \033[m\014\r" # Aadimos las pasarelas por defecto a las tablas maestras.
ip route add default via $ADSL1 dev $DS1 table sala1 &> /dev/null
ip route add default via $ADSL2 dev $DS2 table sala2 &> /dev/null
ip route add default via $ADSL1 dev $DS1 table local &> /dev/null
echo -en "\033[33mCargando ruta principal : \033[m\014\r" # Cargar la ruta por defecto (Balanceada).
ip route add default scope global nexthop via $ADSL1 dev $DS1 weight 1 nexthop via $ADSL2 dev $DS2 weight 1 &> /dev/null
echo -en "\033[32m[Reglas de enrutado y filtrado inverso activados]\033[m\014\r"
# Finalizada la carga de rutas basicas.
echo
echo -en "\033[32m[Configurando Dispositivos]\033[m\014\r"
# Cambiamos el tamao de la cola.
ip link set dev $DS1 qlen 30 2> /dev/null
ip link set dev $DS2 qlen 30 2> /dev/null
# Cambiamos el tamao de la MTU.
ip link set dev $DS1 mtu 1000 2> /dev/null
ip link set dev $DS2 mtu 1000 2> /dev/null
echo -en "\033[32m[Configuracion de Dispositivos Finalizada]\033[m\014\r"
echo echo -en "\033[32m[Configurando Colas de Trafico de Salida]\033[m\014\r"
echo -en "\033[33mAnadiendo Cola Maestra : \033[m\014\r" # Aadiendo raiz HTB. # Sala 1 tc qdisc add dev $DS1 root handle 1: htb default 26 2> /dev/null # Sala 2 tc qdisc add dev $DS2 root handle 1: htb default 236 2> /dev/null
echo -en "\033[33mAnadiendo Clase Limitadora Maxima : \033[m\014\r"
# Aadiendo Clase Limitadora Maestra.
# Sala 1
tc class add dev $DS1 parent 1:0 classid 1:1 htb rate ${RTS1}kbit ceil ${RTS1}kbit 2> /dev/null
# Sala 2
tc class add dev $DS2 parent 1:0 classid 1:1 htb rate ${RTS2}kbit ceil ${RTS2}kbit 2> /dev/null
echo -en "\033[33mAnadiendo Clases Finales Limitadas : \033[m\014\r"
# Aadiendo Clases Finales.
# Sala 1
tc class add dev $DS1 parent 1:1 classid 1:20 htb rate 160kbit ceil ${RTS1}kbit prio 0 2> /dev/null
tc class add dev $DS1 parent 1:1 classid 1:21 htb rate 20kbit ceil 20kbit prio 1 2> /dev/null
tc class add dev $DS1 parent 1:1 classid 1:22 htb rate 20kbit ceil 20kbit prio 2 2> /dev/null
tc class add dev $DS1 parent 1:1 classid 1:23 htb rate 10kbit ceil 20kbit prio 3 2> /dev/null
tc class add dev $DS1 parent 1:1 classid 1:24 htb rate 10kbit ceil 20kbit prio 4 2> /dev/null
tc class add dev $DS1 parent 1:1 classid 1:25 htb rate 110kbit ceil 110kbit prio 3 2> /dev/null
tc class add dev $DS1 parent 1:1 classid 1:26 htb rate 40kbit ceil 40kbit prio 6 2> /dev/null
# Sala 2
for I in `seq $IP_I $IP_F`
do
tc class add dev $DS2 parent 1:1 classid 1:$I htb rate 14kbit ceil ${RTS2}kbit prio 0 2> /dev/null
done
echo -en "\033[33mAnadiendo Disciplinas a las Clases Finales : \033[m\014\r"
# Aadiendo Disciplinas a las clases Finales.
# Sala 1
tc qdisc add dev $DS1 parent 1:20 handle 20: sfq perturb 10 2> /dev/null
tc qdisc add dev $DS1 parent 1:21 handle 21: sfq perturb 10 2> /dev/null
tc qdisc add dev $DS1 parent 1:22 handle 22: sfq perturb 10 2> /dev/null
tc qdisc add dev $DS1 parent 1:23 handle 23: sfq perturb 10 2> /dev/null
tc qdisc add dev $DS1 parent 1:24 handle 24: sfq perturb 10 2> /dev/null
tc qdisc add dev $DS1 parent 1:25 handle 25: sfq perturb 10 2> /dev/null
tc qdisc add dev $DS1 parent 1:26 handle 26: sfq perturb 10 2> /dev/null
# Sala 2 for I in `seq $IP_I $IP_F` do tc qdisc add dev $DS2 parent 1:$I handle $I: sfq perturb 10 2> /dev/null done
echo -en "\033[33mAnadiendo Filtrado de Trafico : \033[m\014\r"
# Sala 1
tc filter add dev $DS1 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20 2> /dev/null
tc filter add dev $DS1 parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:21 2> /dev/null
tc filter add dev $DS1 parent 1:0 prio 0 protocol ip handle 22 fw flowid 1:22 2> /dev/null
tc filter add dev $DS1 parent 1:0 prio 0 protocol ip handle 23 fw flowid 1:23 2> /dev/null
tc filter add dev $DS1 parent 1:0 prio 0 protocol ip handle 24 fw flowid 1:24 2> /dev/null
tc filter add dev $DS1 parent 1:0 prio 0 protocol ip handle 25 fw flowid 1:25 2> /dev/null
tc filter add dev $DS1 parent 1:0 prio 0 protocol ip handle 26 fw flowid 1:26 2> /dev/null
# Sala 2
for I in `seq $IP_I $IP_F` do tc filter add dev $DS2 $RAMA 213.190.4.$I flowid 1:$I 2> /dev/null done
# Filtramos las peticiones al servidor del Cyber para que tengan Maxima prioridad.
# Sala 1
tc filter add dev $DS1 parent 1:0 protocol ip prio 0 u32 match ip dst 213.190.4.53 flowid 1:20 2> /dev/null
tc filter add dev $DS1 parent 1:0 protocol ip prio 0 u32 match ip src 127.0.0.1 flowid 1:25 2> /dev/null
# Sala 2
tc filter add dev $DS2 parent 1:0 protocol ip prio 0 u32 match ip src 127.0.0.1 flowid 1:25 2> /dev/null
# Anadimos marcas a los paquetes segun su tipo.
# Sala 1
iptables -t mangle -N MYSHAPER-OUT-1 2> /dev/null
iptables -t mangle -I POSTROUTING -o $DS1 -j MYSHAPER-OUT-1 2> /dev/null
iptables -t mangle -A MYSHAPER-OUT-1 -p tcp --sport 0:1024 -j MARK --set-mark 23 2> /dev/null # Default for low port traffic
iptables -t mangle -A MYSHAPER-OUT-1 -p tcp --dport 0:1024 -j MARK --set-mark 23 2> /dev/null # ""
iptables -t mangle -A MYSHAPER-OUT-1 -p tcp --sport 27016 -j MARK --set-mark 20 2> /dev/null
iptables -t mangle -A MYSHAPER-OUT-1 -p tcp --dport 20 -j MARK --set-mark 26 2> /dev/null # ftp-data port, low prio
iptables -t mangle -A MYSHAPER-OUT-1 -p tcp --dport 5190 -j MARK --set-mark 23 2> /dev/null # aol instant messenger
iptables -t mangle -A MYSHAPER-OUT-1 -p icmp -j MARK --set-mark 20 2> /dev/null # ICMP (ping) - high prio, impress friends
iptables -t mangle -A MYSHAPER-OUT-1 -p udp -j MARK --set-mark 21 2> /dev/null # DNS name resolution (small packets)
iptables -t mangle -A MYSHAPER-OUT-1 -p tcp --dport ssh -j MARK --set-mark 22 2> /dev/null # secure shell
iptables -t mangle -A MYSHAPER-OUT-1 -p tcp --sport ssh -j MARK --set-mark 22 2> /dev/null # secure shell
iptables -t mangle -A MYSHAPER-OUT-1 -p tcp --dport telnet -j MARK --set-mark 22 2> /dev/null # telnet (ew...)
iptables -t mangle -A MYSHAPER-OUT-1 -p tcp --sport telnet -j MARK --set-mark 22 2> /dev/null # telnet (ew...)
iptables -t mangle -A MYSHAPER-OUT-1 -p tcp --sport http -j MARK --set-mark 25 2> /dev/null # Local web server
iptables -t mangle -A MYSHAPER-OUT-1 -p tcp -m length --length :64 -j MARK --set-mark 21 2> /dev/null # small packets (probably just ACKs)
iptables -t mangle -A MYSHAPER-OUT-1 -m mark --mark 0 -j MARK --set-mark 26 2> /dev/null # redundant- mark any unmarked packets as 26 (low prio)
# Sala 2
iptables -t mangle -N MYSHAPER-OUT-2 2> /dev/null
iptables -t mangle -I POSTROUTING -o $DS2 -j MYSHAPER-OUT-2 2> /dev/null
iptables -t mangle -A MYSHAPER-OUT-2 -p tcp --sport 0:1024 -j MARK --set-mark 23 2> /dev/null # Default for low port traffic
iptables -t mangle -A MYSHAPER-OUT-2 -p tcp --dport 0:1024 -j MARK --set-mark 23 2> /dev/null # ""
iptables -t mangle -A MYSHAPER-OUT-2 -p tcp --sport 27016 -j MARK --set-mark 20 2> /dev/null
iptables -t mangle -A MYSHAPER-OUT-2 -p tcp --dport 20 -j MARK --set-mark 26 2> /dev/null # ftp-data port, low prio
iptables -t mangle -A MYSHAPER-OUT-2 -p tcp --dport 5190 -j MARK --set-mark 23 2> /dev/null # aol instant messenger
iptables -t mangle -A MYSHAPER-OUT-2 -p icmp -j MARK --set-mark 20 2> /dev/null # ICMP (ping) - high prio, impress friends
iptables -t mangle -A MYSHAPER-OUT-2 -p udp -j MARK --set-mark 21 2> /dev/null # DNS name resolution (small packets)
iptables -t mangle -A MYSHAPER-OUT-2 -p tcp --dport ssh -j MARK --set-mark 22 2> /dev/null # secure shell
iptables -t mangle -A MYSHAPER-OUT-2 -p tcp --sport ssh -j MARK --set-mark 22 2> /dev/null # secure shell
iptables -t mangle -A MYSHAPER-OUT-2 -p tcp --dport telnet -j MARK --set-mark 22 2> /dev/null # telnet (ew...)
iptables -t mangle -A MYSHAPER-OUT-2 -p tcp --sport telnet -j MARK --set-mark 22 2> /dev/null # telnet (ew...)
iptables -t mangle -A MYSHAPER-OUT-2 -p tcp --sport http -j MARK --set-mark 25 2> /dev/null # Local web server
iptables -t mangle -A MYSHAPER-OUT-2 -p tcp -m length --length :64 -j MARK --set-mark 21 2> /dev/null # small packets (probably just ACKs)
iptables -t mangle -A MYSHAPER-OUT-2 -m mark --mark 0 -j MARK --set-mark 26 2> /dev/null # redundant- mark any unmarked packets as 26 (low prio)
echo -en "\033[32m[Finalizada la configuracion de Colas de Trafico de Salida]\033[m\014\r"
# Mostramos los Limites.
echo
echo -en "\033[mTrafico de Salida en \033[31m$DS1 \033[mlimitado a : \033[31m${RTS1}Kbit/sec.\033[m\014\r"
echo -en "\033[mTrafico de Salida en \033[31m$DS2 \033[mlimitado a : \033[31m${RTS2}Kbit/sec.\033[m\014\r"
# Comenzamos con el trafico de Entrada. echo echo -en "\033[32m[Configuracion del Trafico de Entrada]\033[m\014\r" echo -en "\033[33mConfigurando Dispositivos : \033[m\014\r" modprobe imq numdevs=2 2> /dev/null # Creamos 2 dispositivos IMQ ip link set imq0 up 2> /dev/null # Arrancamos para la Sala 1 ip link set imq1 up 2> /dev/null # Arrancamos para la Sala 2
echo -en "\033[33mConfigurando Colas Maestras : \033[m\014\r" # Anadiendo Colas a los Dispositivos. tc qdisc add dev imq0 handle 1: root htb default 22 2> /dev/null tc qdisc add dev imq1 handle 1: root htb default 22 2> /dev/null
echo -en "\033[33mAnadiendo Clases Limitadas : \033[m\014\r"
# Anadiendo Clases Limitadas.
tc class add dev imq0 parent 1: classid 1:1 htb rate ${RTD1}kbit ceil ${RTD1} 2> /dev/null
tc class add dev imq1 parent 1: classid 1:1 htb rate ${RTD2}kbit ceil ${RTD2} 2> /dev/null
echo -en "\033[33mAnadiendo Clases Finales : \033[m\014\r"
# Anadiendo Clases Finales.
# Sala 1
tc class add dev imq0 parent 1:1 classid 1:20 htb rate ${RTD1}kbit ceil ${RTD1}kbit prio 0 2> /dev/null
tc class add dev imq0 parent 1:1 classid 1:20 htb rate $[$RTD1/2]kbit ceil ${RTD1}kbit prio 0 2> /dev/null
tc class add dev imq0 parent 1:1 classid 1:21 htb rate $[$RTD1/2]kbit ceil ${RTD1}kbit prio 1 2> /dev/null
# Sala 2
tc class add dev imq1 parent 1:1 classid 1:20 htb rate ${RTD2}kbit ceil ${RTD2}kbit prio 0 2> /dev/null
tc class add dev imq1 parent 1:1 classid 1:20 htb rate $[$RTD2/2]kbit ceil ${RTD2}kbit prio 0 2> /dev/null
tc class add dev imq1 parent 1:1 classid 1:21 htb rate $[$RTD2/2]kbit ceil ${RTD2}kbit prio 1 2> /dev/null
echo -en "\033[33mAnadiendo Disciplinas a las Colas Finales : \033[m\014\r"
# Sala 1
tc qdisc add dev imq0 parent 1:20 handle 20: sfq perturb 10 2> /dev/null
tc qdisc add dev imq0 parent 1:20 handle 21: sfq perturb 10 2> /dev/null
tc qdisc add dev imq0 parent 1:21 handle 22: red limit 1000000 min 5000 max 100000 avpkt 1000 burst 50 2> /dev/null
# Sala 2
tc qdisc add dev imq1 parent 1:20 handle 20: sfq perturb 10 2> /dev/null
tc qdisc add dev imq1 parent 1:20 handle 21: sfq perturb 10 2> /dev/null
tc qdisc add dev imq1 parent 1:21 handle 22: red limit 1000000 min 5000 max 100000 avpkt 1000 burst 50 2> /dev/null
echo -en "\033[33mConfigurando Filtro de Trafico : \033[m\014\r"
# Sala 1
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:21 2> /dev/null
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:22 2> /dev/null
tc filter add dev imq0 parent 1:0 protocol ip prio 0 u32 match ip src 213.190.4.53 flowid 1:20 2> /dev/null
iptables -t mangle -N MYSHAPER-IN-1 2> /dev/null iptables -t mangle -I PREROUTING -i $DS1 -j MYSHAPER-IN-1 2> /dev/null
iptables -t mangle -A MYSHAPER-IN-1 -p ! tcp -j MARK --set-mark 20 2> /dev/null # Set non-tcp packets to highest priority
iptables -t mangle -A MYSHAPER-IN-1 -p tcp -m length --length :64 -j MARK --set-mark 20 2> /dev/null # short TCP packets are probably ACKs
iptables -t mangle -A MYSHAPER-IN-1 -p tcp --dport ssh -j MARK --set-mark 20 2> /dev/null # secure shell
iptables -t mangle -A MYSHAPER-IN-1 -p tcp --sport ssh -j MARK --set-mark 20 2> /dev/null # secure shell
iptables -t mangle -A MYSHAPER-IN-1 -p tcp --dport telnet -j MARK --set-mark 20 2> /dev/null # telnet (ew...)
iptables -t mangle -A MYSHAPER-IN-1 -p tcp --sport telnet -j MARK --set-mark 20 2> /dev/null # telnet (ew...)
iptables -t mangle -A MYSHAPER-IN-1 -m mark --mark 0 -j MARK --set-mark 21 2> /dev/null # redundant- mark any unmarked packets as 26 (low prio)
# Sala 2
tc filter add dev imq1 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:21 2> /dev/null
tc filter add dev imq1 parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:22 2> /dev/null
tc filter add dev imq1 parent 1:0 protocol ip prio 0 u32 match ip src 213.190.4.53 flowid 1:20 2> /dev/null
iptables -t mangle -N MYSHAPER-IN-2 2> /dev/null iptables -t mangle -I PREROUTING -i $DS2 -j MYSHAPER-IN-2 2> /dev/null
iptables -t mangle -A MYSHAPER-IN-2 -p ! tcp -j MARK --set-mark 20 2> /dev/null # Set non-tcp packets to highest priority
iptables -t mangle -A MYSHAPER-IN-2 -p tcp -m length --length :64 -j MARK --set-mark 20 2> /dev/null # short TCP packets are probably ACKs
iptables -t mangle -A MYSHAPER-IN-2 -p tcp --dport ssh -j MARK --set-mark 20 2> /dev/null # secure shell
iptables -t mangle -A MYSHAPER-IN-2 -p tcp --sport ssh -j MARK --set-mark 20 2> /dev/null # secure shell
iptables -t mangle -A MYSHAPER-IN-2 -p tcp --dport telnet -j MARK --set-mark 20 2> /dev/null # telnet (ew...)
iptables -t mangle -A MYSHAPER-IN-2 -p tcp --sport telnet -j MARK --set-mark 20 2> /dev/null # telnet (ew...)
iptables -t mangle -A MYSHAPER-IN-2 -m mark --mark 0 -j MARK --set-mark 21 2> /dev/null # redundant- mark any unmarked packets as 26 (low prio)
iptables -t mangle -A MYSHAPER-IN-1 -j IMQ --todev=0 2> /dev/null # Sala 1
iptables -t mangle -A MYSHAPER-IN-2 -j IMQ --todev=1 2> /dev/null # Sala 2
echo -en "\033[32m[Finalizada la configuracion de Colas de Trafico de Entrada]\033[m\014\r"
echo
echo -en "\033[mTrafico de Entrada en \033[31m$DS1 \033[mlimitado a : \033[31m${RTD1}Kbit/sec.\033[m\014\r"
echo -en "\033[mTrafico de Entrada en \033[31m$DS2 \033[mlimitado a : \033[31m${RTD2}Kbit/sec.\033[m\014\r"
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
*)
echo -en "\033[31m[Los Parametros Aceptados son : start , stop o status .]\033[m\014\r"
exit 1
;;
esac
exit 0