#!/bin/sh ### Dispositivo de upload (externo) ### DEV=eth0 ### Bajar el txqueuelen the $DEV ### ifconfig $DEV txqueuelen 10 ### BORRADO DE REGLAS Y CADENAS de la tabla mangle ### iptables -t mangle -F iptables -t mangle -X ## BORRADO DE ROOT QDISC EN $DEV tc qdisc del dev $DEV root ### FORWARD RULES ### P2P_IP=192.168.0.100 SSH_PORT=9000 iptables -t mangle -A FORWARD -s $P2P_IP -o $DEV -j MARK --set-mark 1 iptables -t mangle -A OUTPUT -o $DEV -p tcp --sport $SSH_PORT -j MARK --set-mark 2 ### CLASES ### SSH=1:10 P2P=1:20 DEF=1:30 ### Establece una qdisc de simulacion, ayuda con los delays de los paquetes para incrementar la responsividad de trafico importante ### MAX_RATE=22kbps P2P_UP=10kbps tc qdisc add dev $DEV root handle 1: htb default 30 tc class add dev $DEV parent 1: classid 1:1 htb rate $MAX_RATE tc class add dev $DEV parent 1:1 classid $P2P htb rate 5kbps ceil $P2P_UP tc class add dev $DEV parent 1:1 classid $SSH htb rate 5kbps tc class add dev $DEV parent 1:1 classid $DEF htb rate 10kbps ceil $MAX_RATE ### Se agregan qdisc sfq para garantizar un manejo de ancho de banda justo ### tc qdisc add dev $DEV parent $SSH handle 10: sfq perturb 10 tc qdisc add dev $DEV parent $DEF handle 30: sfq perturb 10 tc qdisc add dev $DEV parent $P2P handle 20: sfq perturb 10 ### Filtros para controlar el trafico marcado (especificamente, P2P y SSH) iptables -t mangle -A FORWARD -o $DEV -s $P2P_IP -m mark --mark 1 -j CLASSIFY --set-class $P2P iptables -t mangle -A OUTPUT -o $DEV -s ! $P2P_IP -m mark --mark 2 -j CLASSIFY --set-class $SSH