Bloqueo con Cbq

Imagen de juank6_66

Tema: 

Saludos...nuevamente tengo una inquietud con el control de ancho de banda mediante cbq... tengo una red tras un servidor linux con ip publica, el objetivo es hacer que toda la red no pase de un consumo de 192k...pero este script no me permite hacer tal cosa de igual manera el consumo sobrepasa lo marcado...y ademas quiero bloquear a la ip .2 a solo 64kbit lo tengo hecho de la manera detallada a continuacion pero no me ubico donde estoy fallando ya que he buscado y seguido las recomendaciones de este foro pero sigo teniendo el mismo problema.. tambien quisiera que me orienten si puedo bloquear con este script el Lime Wire y las actualizaciones automaticas de windows que cuando una pc usa ese programa no hay script que funcione o puede deterner el exesivo consumo que genera..!!!!

GRACIAS por las recomendaciones que sean indicadas

#!/bin/sh
IPTABLES=/sbin/iptables
TC=/sbin/tc
CBQ=/sbin/cbq.init
OK="\033[1;0m [ \033[00;32mOK \033[1;0m]\033[0m"
echo -e "Ancho de banda Asignado: $OK"
$CBQ stop

# ******** Control Ingreso de Paquetes de la Red *************************#

$IPTABLES -t mangle -A PREROUTING -j MARK -p tcp -s 201.208.245.19 --set-mark 1
$IPTABLES -t mangle -A INPUT -j MARK -p tcp -s 201.208.245.19 --set-mark 1
$IPTABLES -t mangle -A OUTPUT -j MARK -p tcp -s 201.208.245.19 --set-mark 1
$IPTABLES -t mangle -A PREROUTING -j MARK -p udp -s 201.208.245.19 --set-mark 1
$IPTABLES -t mangle -A INPUT -j MARK -p udp -s 201.208.245.19 --set-mark 1
$IPTABLES -t mangle -A OUTPUT -j MARK -p udp -s 201.208.245.19 --set-mark 1

$IPTABLES -t mangle -A PREROUTING -j MARK -p tcp -s 192.168.1.1/28 --set-mark 2
$IPTABLES -t mangle -A INPUT -j MARK -p tcp -s 192.168.1.1/28 --set-mark 2
$IPTABLES -t mangle -A OUTPUT -j MARK -p tcp -s 192.168.1.1/28 --set-mark 2
$IPTABLES -t mangle -A PREROUTING -j MARK -p udp -s 192.168.1.1/28 --set-mark 2
$IPTABLES -t mangle -A INPUT -j MARK -p udp -s 192.168.1.1/28 --set-mark 2
$IPTABLES -t mangle -A OUTPUT -j MARK -p udp -s 192.168.1.1/28 --set-mark 2

$IPTABLES -t mangle -A PREROUTING -j MARK -p tcp -s 192.168.1.2/28 --set-mark 3
$IPTABLES -t mangle -A INPUT -j MARK -p tcp -s 192.168.1.2/28 --set-mark 3
$IPTABLES -t mangle -A OUTPUT -j MARK -p tcp -s 192.168.1.2/28 --set-mark 3
$IPTABLES -t mangle -A PREROUTING -j MARK -p udp -s 192.168.1.2/28 --set-mark 3
$IPTABLES -t mangle -A INPUT -j MARK -p udp -s 192.168.1.2/28 --set-mark 3
$IPTABLES -t mangle -A OUTPUT -j MARK -p udp -s 192.168.1.2/28 --set-mark 3

# ===>> Control Egreso de Paquetes de la Red <<=== #

$IPTABLES -t mangle -A PREROUTING -j MARK -p tcp -d 201.208.245.19 --set-mark 1
$IPTABLES -t mangle -A INPUT -j MARK -p tcp -d 201.208.245.19 --set-mark 1
$IPTABLES -t mangle -A OUTPUT -j MARK -p tcp -d 201.208.245.19 --set-mark 1
$IPTABLES -t mangle -A PREROUTING -j MARK -p udp -d 201.208.245.19 --set-mark 1
$IPTABLES -t mangle -A INPUT -j MARK -p udp -d 201.208.245.19 --set-mark 1
$IPTABLES -t mangle -A OUTPUT -j MARK -p udp -d 201.208.245.19 --set-mark 1

$IPTABLES -t mangle -A PREROUTING -j MARK -p tcp -d 192.168.1.1/28 --set-mark 2
$IPTABLES -t mangle -A INPUT -j MARK -p tcp -d 192.168.1.1/28 --set-mark 2
$IPTABLES -t mangle -A OUTPUT -j MARK -p tcp -d 192.168.1.1/28 --set-mark 2
$IPTABLES -t mangle -A PREROUTING -j MARK -p udp -d 192.168.1.1/28 --set-mark 2
$IPTABLES -t mangle -A INPUT -j MARK -p udp -d 192.168.1.1/28 --set-mark 2
$IPTABLES -t mangle -A OUTPUT -j MARK -p udp -d 192.168.1.1/28 --set-mark 2

$IPTABLES -t mangle -A PREROUTING -j MARK -p tcp -d 192.168.1.2/28 --set-mark 3
$IPTABLES -t mangle -A INPUT -j MARK -p tcp -d 192.168.1.2/28 --set-mark 3
$IPTABLES -t mangle -A OUTPUT -j MARK -p tcp -d 192.168.1.2/28 --set-mark 3
$IPTABLES -t mangle -A PREROUTING -j MARK -p udp -d 192.168.1.2/28 --set-mark 3
$IPTABLES -t mangle -A INPUT -j MARK -p udp -d 192.168.1.2/28 --set-mark 3
$IPTABLES -t mangle -A OUTPUT -j MARK -p udp -d 192.168.1.2/28 --set-mark 3

# ===>> Control de Ancho de Banda a 192Kbit <<=== #
$TC qdisc add dev eth0 root handle 1: cbq bandwidth 100Mbit avpkt 1000 cell 8
$TC qdisc add dev eth1 root handle 2: cbq bandwidth 100Mbit avpkt 1000 cell 8

$TC class add dev eth0 parent 1:0 classid 1:1 est 1sec 2sec cbq bandwidth 10Mbit rate 192Kbit allot 1514 cell 8 weight 1 prio 1 maxburst 20 avpkt 1000 bounded

$TC class add dev eth1 parent 2:0 classid 2:1 est 1sec 2sec cbq bandwidth 10Mbit rate 192Kbit allot 1514 cell 8 weight 1 prio 1 maxburst 20 avpkt 1000 bounded

#*************************----bloqueo a 64kbit a ip 2*******************

$TC class add dev eth0 parent 1:0 classid 1:2 est 1sec 2sec cbq bandwidth 10Mbit rate 64Kbit allot 1514 cell 8 weight 1 prio 1 maxburst 20 avpkt 1000 bounded

$TC class add dev eth1 parent 2:0 classid 2:2 est 1sec 2sec cbq bandwidth 10Mbit rate 64Kbit allot 1514 cell 8 weight 1 prio 1 maxburst 20 avpkt 1000 bounded
#--------------------*****************************************************

$TC filter add dev eth0 protocol ip handle 1 fw classid 1:1
$TC filter add dev eth1 protocol ip handle 2 fw classid 2:1
#-----------------------
$TC filter add dev eth0 protocol ip handle 3 fw classid 1:2
$TC filter add dev eth1 protocol ip handle 3 fw classid 2:2
#---------------------------

Comentarios

El script esta mal

Imagen de damage

El script esta mal estructurado eso es todo, no le dices que puertos bloequar ni donde aplique la marca, te paso como deberias tenerlo.
OK="\033[1;0m [ \033[00;32mOK \033[1;0m]\033[0m"
echo -e "ANCHO DE BANDA: $OK"

####################
# VARIABLES ########
####################
# COMANDOS
IPTABLES="/sbin/iptables -t mangle"
TC=/sbin/tc
CBQ=/sbin/cbq

# INTERFACES
WAN="0/0"
DEVWAN="eth0"
DEVLAN="eth1"

# VELOCIDAD DE INTERFACES DE RED
ETH0_BW="100Mbit"
ETH1_BW="100Mbit"

# PUERTOS
PROXY_PORT="8080"
SMTP_PORT="25"
POP3_PORT="110"

####################
# PRIORIDADES ######
####################
NORMAL="5"
ALTA="2"
BAJA="8"

##########
# INICIO #
##########
$CBQ stop
$IPTABLES -F
$IPTABLES -X

$TC qdisc add dev $DEVWAN root handle 1: cbq bandwidth $ETH0_BW avpkt 1000 cell 8
$TC qdisc add dev $DEVLAN root handle 2: cbq bandwidth $ETH1_BW avpkt 1000 cell 8

####################
# CLIENTES #########
####################

###==> BW 1 INCLUIR IPS o SUBREDES QUE COMPARTIRAN UN MISMO ANCHO DE BANDA
#

BWLAN1="64Kbit"
NETWORKS_BW1="192.168.100.2 192.168.100.3"

for NET in $NETWORKS_BW1; do
$IPTABLES -A PREROUTING -s $NET -d $WAN -i $DEVLAN -j MARK --set-mark 1
$IPTABLES -A FORWARD -s $WAN -d $NET -i $DEVWAN -o $DEVLAN -j MARK --set-mark 2
$IPTABLES -A OUTPUT -d $NET -p tcp --sport $PROXY_PORT -o $DEVLAN -j MARK --set-mark 2
$IPTABLES -A OUTPUT -d $NET -p tcp --sport $SMTP_PORT -o $DEVLAN -j MARK --set-mark 2
$IPTABLES -A OUTPUT -d $NET -p tcp --sport $POP3_PORT -o $DEVLAN -j MARK --set-mark 2
done

$TC class add dev $DEVWAN parent 1:0 classid 1:1 est 1sec 2sec cbq bandwidth $ETH0_BW rate $BWLAN1 allot 1514 cell 8 weight 1 prio $NORMAL maxburst 20 avpkt 1000 bounded
$TC class add dev $DEVLAN parent 2:0 classid 2:1 est 1sec 2sec cbq bandwidth $ETH1_BW rate $BWLAN1 allot 1514 cell 8 weight 1 prio $NORMAL maxburst 20 avpkt 1000 bounded
$TC filter add dev $DEVWAN protocol ip handle 1 fw classid 1:1
$TC filter add dev $DEVLAN protocol ip handle 2 fw classid 2:1

###==> BW 2 INCLUIR IPS o SUBREDES QUE COMPARTIRAN UN MISMO ANCHO DE BANDA
#
BWLAN2="64Kbit"
NETWORKS_BW2="192.168.100.4"

for NET in $NETWORKS_BW2; do
$IPTABLES -A PREROUTING -s $NET -d $WAN -i $DEVLAN -j MARK --set-mark 3
$IPTABLES -A FORWARD -s $WAN -d $NET -i $DEVWAN -o $DEVLAN -j MARK --set-mark 4
$IPTABLES -A OUTPUT -d $NET -p tcp --sport $PROXY_PORT -o $DEVLAN -j MARK --set-mark 4
$IPTABLES -A OUTPUT -d $NET -p tcp --sport $SMTP_PORT -o $DEVLAN -j MARK --set-mark 4
$IPTABLES -A OUTPUT -d $NET -p tcp --sport $POP3_PORT -o $DEVLAN -j MARK --set-mark 4
done

$TC class add dev $DEVWAN parent 1:0 classid 1:2 est 1sec 2sec cbq bandwidth $ETH0_BW rate $BWLAN2 allot 1514 cell 8 weight 1 prio $NORMAL maxburst 20 avpkt 1000 bounded
$TC class add dev $DEVLAN parent 2:0 classid 2:2 est 1sec 2sec cbq bandwidth $ETH1_BW rate $BWLAN2 allot 1514 cell 8 weight 1 prio $NORMAL maxburst 20 avpkt 1000 bounded
$TC filter add dev $DEVWAN protocol ip handle 3 fw classid 1:2
$TC filter add dev $DEVLAN protocol ip handle 4 fw classid 2:2

Eso es todo.

P.d. Yo actualemnte no uso este script, aunque es bueno, pero investigando encontre a htb-gen, es muy facil de usar y mas facil aun de administrar.
Aunque si este funciona en conjunto con un Proxy, se le debe hacer ciertos toques magicos para que funcione 100% bien.

Saludos.

Keep The Fire Burning.....
Stryper 1988
http://counter.li.org/

Cannot find device "eth1:1"

Imagen de juank6_66

Saludos..gracias por el codigo..estoy probando con una interfaz virtual pero Como podria declarar a la variable DEVLAN="eth1:1" para que no se produsca el siguinte error
Cannot find device "eth1:1"
Warning: wierd character in interface `eth1:1' (No aliases, :, ! or *).
Warning: wierd character in interface `eth1:1' (No aliases, :, ! or *).
Warning: wierd character in interface `eth1:1' (No aliases, :, ! or *)

Juank

Facil solucion,

Imagen de damage

Facil solucion, pon directamente la ip o sub red en la linea que corresponda, eso es todo y deja DEVLAN con eth1, no se como tengas estructorada tu red, pero si eth0 es hacia el internet, eth1 hacia la LAN y eth1:1 es una sub red, el script en mencion debe funcionar a la perfección. Recuerda wue si eth1 esta determinada como tu DEVLAN, eth1;1 será parte de esta misma, y solo debes poner la ip o las ip's de esa sub red en el script.
Para eso esta esto en el script:
NETWORKS_BW1="192.168.100.1 192.168.100.3"
Puedes ponerlo asi:
NETWORKS_BW2="192.168.100.2 192.168.101.3 10.10.10.50"
O como quieras:
NETWORKS_BW3="192.168.1.0/24"

O si tienes tiempo de investigar usa HTB-GEN.
Saludos.

Keep The Fire Burning.....
Stryper 1988
http://counter.li.org/