Foros del Web » Administración de Sistemas » Unix / Linux »

Control de banda ancha linux (TC)

Estas en el tema de Control de banda ancha linux (TC) en el foro de Unix / Linux en Foros del Web. Buenos días a todos, les comparto un código que encontré en Internet para el control de las redes lan, yo tengo mi servidor LINUX como ...
  #1 (permalink)  
Antiguo 26/03/2014, 08:45
Avatar de Melecio  
Fecha de Ingreso: julio-2011
Ubicación: Coahuila
Mensajes: 320
Antigüedad: 13 años, 4 meses
Puntos: 8
Control de banda ancha linux (TC)

Buenos días a todos,

les comparto un código que encontré en Internet para el control de las redes lan, yo tengo mi servidor LINUX como firewall en mi red lan utlizando dhcp y squid para brindar el servicio y poder aplicar este script



lo haré de 2 formas, 1 con base de datos y la otra muy simple

para hacerlo mas sencillo de utilizar tendrán que crear una base de datos en phpmysql y agregan esta tabla a su base de datos


CREATE TABLE IF NOT EXISTS `dhcp` (
`id_dhcp` int(11) NOT NULL AUTO_INCREMENT,
`USUARIO` text NOT NULL,
`MAC` text NOT NULL,
`IP` text NOT NULL,
`ACCESO` text NOT NULL,
PRIMARY KEY (`id_dhcp`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=86 ;



lo que tienen que hacer es ingresar la información de la red que tienen ejemplo yo en mi red tengo 20 computadoras las cuales tienen 3 niveles de uso de banda ancha

(ACCESO)
PRIORIDAD = INTERNET SIN RESTRICCIONES
LIMITADO = 1mbit = 120 kb
DENEGADO = 300kbit = 40 kb (lo suficiente como para abrir el correo y evitar que utilizen youtube a su 100%)


primero antes de iniciar con el script es necesario instalar algunos modulos para nuestro script en perl


en la terminal colocan perl -MCPAN -e shell, si es la primera vez que lo ejecutan les pedirá que ingresen la palabra yes como 3 veces y les saldra esto una vez que ya lo configuraron

#---------------------------------------------------
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.960001)
Enter 'h' for help.

cpan[1]>
#---------------------------------------------------
ahora deberan de ingresar lo siguiente

install Text::Table
install Term::ANSIColor
install CGI
install DBI


una vez que instalaron todos estos módulos solo faltaría configurar el script

en la terminal ingresen sudo nano download_limit.pl e insertan el siguiente codigo

veran en el script que yo tengo la tarjeta de red eth1 ustedes la cambian por la que tengan predeterminada para su red LAN

Código HTML:
#!/usr/bin/perl
 use Text::Table;
 use Term::ANSIColor;
 use 5.010;
 use CGI;
 use DBI;
$cgiObj = CGI ->new;
$params = 'DBI:mysql:TU BASE DE DATOS:localhost';
$user= 'TU USUARIO MYSQL';
$pass = 'TU CLAVE DE ACCESO';
$conn = DBI ->connect ($params, $user, $pass);
system "clear";
print colored ['red on_bright_yellow'], '                    SISTEMA CONTROL DE DESCARGAS                          ', "\n";
print "USUARIO\t\t\t   MAC ADDRESS\t\t    IP\t\tVELOCIDAD\n";
print "\e[1;31m--------------------------------------------------------------------------\e[0m \n";
    my $tb = Text::Table->new(
  "", "", "", "", ""
    );
    system "/sbin/tc qdisc add dev eth1 root handle 1: htb default 30";
    system "/sbin/tc class add dev eth1 parent 1: classid 1:1 htb rate 1mbit";
    system "/sbin/tc class add dev eth1 parent 1: classid 1:2 htb rate 1mbit";
    system "/sbin/tc class add dev eth1 parent 1: classid 1:3 htb rate 300kbit";
    system "/sbin/tc class add dev eth1 parent 1: classid 1:4 htb rate 300kbit";
#------------------------EXTRACCION DE DIRECCIONES IP
$sql_DHCP = "SELECT * FROM dhcp" ;
$query_DHCP = $conn->prepare($sql_DHCP);
$query_DHCP->execute();
while (@row_DHCP = $query_DHCP->fetchrow_array){
$TOTALES ++;
$USUARIO=$row_DHCP[1];
$MAC=$row_DHCP[2];
$IP_ADDRESS=$row_DHCP[3];
$ACCESO=$row_DHCP[4];

if ($ACCESO eq "PRIORIDAD") {
$ACCESO="NO LIMITADO";
}

if ($ACCESO eq "LIMITADO") {
system "/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst $IP_ADDRESS/32 flowid 1:1";
system "/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src $IP_ADDRESS/32 flowid 1:2";
$ACCESO="100Kb";
}

if ($ACCESO eq "DENEGADO") {
system "/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst $IP_ADDRESS/32 flowid 1:3";
system "/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src $IP_ADDRESS/32 flowid 1:4";
$ACCESO="40kb";
}
$tb->load(
        [ "\e[1;32m#\e[0m\e[1;31m$TOTALES\e[0m", "$USUARIO", "$MAC\t", "$IP_ADDRESS\t", "$ACCESO" ]
    );
}
#------------------------EXTRACCION DE DIRECCIONES IP
print $tb;

despues precionan control + O para guardar y control + X para salir
ahora hay que darle permisos sudo chmod 7777 -R download_limit.pl

una vez que ingresaron los datos de su red lan en la tabla DHCP de mysql

solo bastara ejecutar el script perl download_limit.pl


para parar el proceso ingresar en la terminal

tc qdisc del dev eth1 root


#-----------------------------------------------------------

opción sencilla


/sbin/tc qdisc add dev eth1 root handle 1: htb default 30
/sbin/tc class add dev eth1 parent 1: classid 1:1 htb rate 1mbit
/sbin/tc class add dev eth1 parent 1: classid 1:2 htb rate 1mbit
/sbin/tc class add dev eth1 parent 1: classid 1:3 htb rate 300kbit
/sbin/tc class add dev eth1 parent 1: classid 1:4 htb rate 300kbit

#LIMITAR LA DIRECCION IP A 1mbit = 120 kb
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.31/32 flowid 1:1
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.1.31/32 flowid 1:2
#LIMITAR LA DIRECCION IP A 1mbit = 120 kb


#LIMITAR LA DIRECCION IP A 300kbit = 40 kb
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.31/32 flowid 1:3
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.1.31/32 flowid 1:4
#LIMITAR LA DIRECCION IP A 300kbit = 40 kb


espero y les sirva esta aportacion, gracias.

Última edición por Melecio; 26/03/2014 a las 10:00
  #2 (permalink)  
Antiguo 27/03/2014, 21:02
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
Respuesta: Control de banda ancha linux (TC)

Saludos, si no me equivoco squid ya hace eso sin tanto jaleo (configuracion).
:)

Etiquetas: banda, control, ip, linux, servidor, squid
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:02.