Control de ancho de Banda con Squid Delay Pools

15 febrero 2013

Por publicado en las categorías Sysadmin el 29 abril 2011

Uno de los usos más útiles que tenemos con Squid, además de usarlo como caché es el de poder administrar el consumo de ancho de banda de los clientes que se conectan al mismo.

Para poder usar los Delay Pools debemos tener configuradas ACL’s, tanto sea por subred, grupo de equipos, destino, o lo que necesitamos controlar

Existen 3 tipos de “delay pools“. Los valores de ancho de banda son dos, se expresan en bits, e indican el número promedio de bits por segundo y un límite istantáneo que no se puede superar.

El tipo 1 te permite definir un límite de ancho de banda global, o sea que todos las solicitudes que entran en ese pool estarán compartiendo este ancho de bando. Este tipo te permite decir, por ejemplo  “Hay un ancho de banda disponible de 128kbps para bajar archivos desde la red A”

El tipo 2 te permite definir un ancho de banda global y un límite por  cada usuario. Este tipo te permite decir, por ejemplo, “Hay un ancho de banda disponible de 128kbps para bajar archivos desde la red A pero cada usuario que acceda no podrá usar más de 32kbps”.

El tipo 3 te permite definir un ancho de banda global, un límite por cada subred clase C (/24), y un límite por cada usuario accediendo. Este tipo te permite decir, por ejemplo “Hay un ancho de banda disponible de 256kbps para bajar archivos, pero cada subred clase C no puede usar más de 128kbps, y cada usuario individual no puede usar más de 32kbps”.

# Se indica el número TOTAL de delay_pools definidios en el sistema
delay_pools 1
# Definimos un delay pool (número 1) de Clase 2
# (es decir, con limite global, y para cada usuario):
delay_class 1 2
# Definimos los parámetros del delay_pool número 1
delay_parameters 1 128000/128000 32000/56000

Esto indica que el Delay Pool número 1 tiene un límite global de 128kbps (promedio e instantáneo), cada usuario accediendo  dentro del pool tiene un límite promedio de 32kbps, pero puede bajarse objetos pequeños del caché a 56kbps.

Como explicaba más arriba, también tenemos que definir algún ACL para identificar a que objetos o usuarios afecta el pool que acabamos de definir:

acl mired src 10.0.10.0/255.255.255.0
delay_access 1 allow mired
delay_access 1 deny all

Podemos usarlo para limitar ancho de banda para destinos especificos

acl destinos dstdomain .youtube.com .facebook.com
delay_access 1 allow destinos
delay_access 1 deny all

How to squid + delay pools + youtube facebook

15 febrero 2013

Si son administradores de redes o tuvieron que implementar squid en alguna empresa con muchos usuarios y poco enlace, seguro saben de que les voy a hablar. Youtube y facebook pueden ser sitios que nos saquen los pelos de punta!….pero bloquearlos completamente puede hacer que los usuarios de la red nos quieran colgar . Una solución que nos dió resultado en varios lugares es crear un delay pool clase 1 para determinados sitios. Les paso este how to pequeño pero efectivo. Claro que si quieren saber como funcionan exactamente las delay pools pueden dirigirse a la web de squid que lo explica mucho mejor de lo que podría hacerlo yo!

1)
Instalar squid desde aptitude o compilar con soporte para delay pools, –enable-delay-pools.

1.2)
Crear un archivo que se llame lentos en /etc/squid y poner las ips que queremos que naveguen lento.

2)
Editar el archivo squid.conf y agregar lo siguiente:

acl usuarioslentos src “/etc/squid/lentos”

#PONER LENTO YOUTUBE, FACEBOOK
delay_pools 1
delay_class 1 1
delay_parameters 1 1000/100
acl lento url_regex \.flv$
acl lento url_regex -i watch?
acl lento url_regex -i youtube
acl lento url_regex -i facebook
delay_access 1 allow lento usuarioslentos

http_access allow usurarioslentos

Claro que esto lo pueden adecuar a su archivo, podrían tener los grupos por AD o OpenLDAP o usuarios comunes. También pueden agregar los dominios que quieran.

Reinician Squid y ya comenzaría a funcionar, también pueden jugar con lo valores del pool ya que con lo que puse yo va realmente lento.

Saludos! Publicado por Fede en 12:55


Limitando del ancho de banda con CBQ vs P2P

15 febrero 2013

Escrito por Domingo Varela el 08 Abril 2008.

Uno de los recursos mas importantes cuando se tiene un servicio de Internet es el consumo de ancho de banda, para ello es necesario tomar ciertas politicas que nos llevara a la administracion de las QoS. En un servidor GNU/Linux podemos limitar el ancho de banda de las descargas o del trafico entrante y de como administrar la conexion a internet para que sea mas eficiente.

Aqui proporcionaremos de manera sencilla como limitar el trafico entrante evitando así que los usuarios de nuestra LAN consuman todo el ancho de banda de nuestra conexión a Internet.

Esto resulta útil cuando nuestra conexión es lenta o nuestros usuarios suelen descargar toneladas de mp3s, archivos en formato iso, inclusive las últimas distribuciones de Linux.

Supongamos que tenemos un enlace sea cual sea (Ds0,E1 o 2 E1’s) y que asu vez una serie de redes privadas con 60 AP’s. Nuestro GW es un GNU/Linux y por ende debemos de tener un buen plan de “distribucion” y/o “prioridad” para distribuir el ancho de banda.

Aqui se explicara como usar el script CBQ que Linux lo incluye por default por lo tanto no se hace ningún cambio adicional al kernel como es en el caso del traffic shaper (Que solo podra ayudarnos a configurar una interface a limitar, no por IP como es el caso de CBQ).

CBQ es mas poderoso de lo que creemos, con este podemos controlar puertos, determinar el horario especifico para usar el ancho de banda a ser utilizado, compartirlo y controlar programas que consumen demasiado ancho de banda por ejemplo (iMesh, Edonkey, Morpheous, Audiogalaxy, etc).

Se sabe que CBQ trabaja con archivos de configuración que se localizan en el directorio /etc/sysconfig/cbq. Los archivos de configuración se tienen que llamar cbq-X.nombre donde x es un numero en hexadecimal de 4 digitos que indica el orden de arranque respecto a los demás archivos de configuración (hay uno por servicio normalmente).

Los archivos de configuración deberan de tener un formato definido, por ejemplo:

  • cbq-0001.ftp-sedecap, download
  • cbq-0002.http-cobaep, download
  • cbq-0128.campus.backbone-client, download
  • cbq-0129.client-backbone, upload

donde cada archivo de configuración debe tener las siguientes reglas obligatorias:

DEVICE=Interfaz,Velocidad-Interfaz,Peso
RATE=velocidad
WEITH=peso/10
PRIO=prioridad
RULE=ip o red a ser controlada

En el caso de que tengamos 20 redes privadas en un solo gateway y queremos darle solo 40 Kbps de upload, armamos la configuracion, el rate, el weight, etc y colocaremos 192.168.0.0/24

Parámetro DEVICE
DEVICE=Interfaz,Velocidad-Interfaz,Peso

Ejemplo:
DEVICE=eth0,10Mbit,1Mbit

Interfaz: Nombre de la Interfaz eth0, eth1, ppp0, wvlan0…
Velocidad: Es la velocidad del dispositivo

Ejemplo:
Ethernet 10Mbit o 100 Mbit…

Peso: Es un parámetro de ajuste que debera ser proporcional a la Velocidad-Interfaz, siempre vamos a darle el 10%.

Parametro RATE
Velocidad

Ejemplo:
RATE=5Mbit

Velocidad-Interfaz, podemos usar Kbit, Mbit o Mbps.

Parametro WEIGHT
WEIGHT=(peso/10)
Ejemplo:
WEIGHT=500Kbit

Otro parámetro que debe ser proporcional a la Velocidad-Interfaz.
Peso = (Velocidad-Interfaz) / 8
Parametro PRIO
PRIO=(1-8)
Ejemplo: PRIO=5

Prioridad del tráfico para la clase, cuando mayor sea el número, menor es la prioridad, la prioridad 5 es un valor excelente, de hecho, la última versión de CBQ.INIT viene con prioridad 5 por defecto.

Parámetro RULE
RULE=[[saddr[/prefix]][:port],][daddr[/prefix]][:port]

Los parámetros anteriores hacen un filtro para el trafico de cada una de las clases, podemos usar múltiplos compuestos de reglas de archivos de configuración.

Por ejemplo

  • RULE=10.1.1.0/24:80 selecciona el trafico que va al puerto 80 de la red 10.1.1.0
  • RULE=10.2.2.5 selecciona todo el trafico del host 10.2.2.5
  • RULE=10.2.2.5:20/0xfffe selecciona el trafico que va a los puertos 20 y 21 en el host 10.2.2.5 (¿alguien lo entiende?)
  • RULE=:25,10.2.2.128/26:5000 selecciona el trafico que viene desde cualquier ip en el puerto 25 al puerto 5000 de la red 10.2.2.128.
  • RULE=10.5.5.5:80 Selecciona el trafico que viene del puerto 80 del host 10.5.5.5

Parámetro TIME
Este parámetro limita el acceso en horarios predeterminados:
TIME=(hora inicial)-(hora final);(velocidad)/(velocidad/10)

Por ejemplo:
TIME=18:00-06:00;256Kbit/25Kbit

Otros parámetros:
BOUNDED: Si esta definido como ‘yes’ el shaper, sera mantenido siempre que haya ancho de banda disponible.

ISOLATED: Si esta definido como ‘yes’ el shaper NO tomara ancho de banda compartido.
EJEMPLOS:

DEVICE=eth0,10Mbit,1Mbit
RATE=128Kbit
WEIGHT=10Kbit
PRIO=5
RULE=192.128.1.0/24

En este ejemplo, dice que el tráfico de la interface eth0 es de 10 Mbit, a través de la red 192.168.1.0, que a su vez, será procesado con prioridad 5 a través de un shaping de 128 Kbit.

Nótese que con este archivo de configuración SOLO estamos limitando el ancho de banda de salida. Para limitar el ancho de banda en los dos sentidos, debemos configurar, la otra interface….

DEVICE=eth1,10Mbit,1Mbit
RATE=28Kbit
WEIGHT=2Kbit
PRIO=5
RULE=192.168.1.0/24

Ejemplos Reales: Chulo

Eth0,es mi conexion a internet
Eth1, es mi LAN

Aqui anexo los archivos de configuración para los diferentes servicios que se tienen en la Universidad, estos archivos estan situados en el directorio /etc/sysconfig/cbq y el script se puede bajar de aqui o si lo prefiere directamente instalar el paquete iproute.
Archivos de SALIDA, Tarjeta ETH0, que esta conectado a Internet

#cbq-0003.Web_Out_eth0_256K
#
DEVICE=eth0,10Mbit,1Mbit # Interface,Vel-Interface,Vel-Interface/8
RATE=256Kbit #Velocidad
WEIGHT=32Kbit #Velocidad / 8
PRIO=5 #Prioridad 1-8, donde el 8 es mas baja
RULE=,:80
RULE=,201.151.249.101
BOUNDED=yes
ISOLATED=yes
# ——————-

#cbq-0004.Correo_Out_eth0_256K
#
DEVICE=eth0,10Mbit,1Mbit # Interface,Vel-Interface,Vel-Interface/8
RATE=256Kbit #Velocidad
WEIGHT=32Kbit #Velocidad / 8
PRIO=5 #Prioridad 1-8, donde el 8 es mas baja
RULE=,:25
RULE,:110
RULE=,80
RULE=,:143
RULE=,:22
RULE=,53
RULE=,201.151.249.98
BOUNDED=yes
ISOLATED=yes
# ——————-

#cbq-0005.P2P_Out_eth0_15K
#
DEVICE=eth1,10Mbit,1Mbit # Interface,Vel-Interface,Vel-Interface/8
RATE=15Kbit #Velocidad
WEIGHT=1Kbit #Velocidad / 8
PRIO=2 #Prioridad 1-8, donde el 8 es mas baja
TIME=01:00-07:59;110Kbit/11Kbit
RULE=,:21
RULE=,201.151.249.100
RULE=,:1214
RULE=,:4661
RULE=,:4662
RULE=,:4665
RULE=,:4666
RULE=,:4667
RULE=,:4668
RULE=,:4669
RULE=,:4610
RULE=,:41000
RULE=,:41001
RULE=,:41002
RULE=,:41003
RULE=,:41004
RULE=,:41005
RULE=,:41006
RULE=,:41007
RULE=,:41008
RULE=,:41009
RULE=,:41010
RULE=,:41011
RULE=,:41012
RULE=,:41013
RULE=,:41014
RULE=,:41015
RULE=,:41016
RULE=,:41017
RULE=,:41018
RULE=,:41019
RULE=,:41020
RULE=,:41021
RULE=,:41022
RULE=,:41023
RULE=,:41024
RULE=,:41025
RULE=,:41026
RULE=,:41027
RULE=,:41028
RULE=,:41029
RULE=,:41030
BOUNDED=yes
ISOLATED=yes
# ——————-

Archivos de ENTRADA, Tarjeta ETH1, que esta conectado a la LAN

#cbq-0006.P2P_In_eth1_15K
#
DEVICE=eth1,10Mbit,1Mbit # Interface,Vel-Interface,Vel-Interface/8
RATE=15Kbit #Velocidad
WEIGHT=1Kbit #Velocidad / 8
PRIO=3 #Prioridad 1-8, donde el 8 es mas baja
#Windows Media Player.
RULE=:1755,192.168.1.0/24
#Real Player uses TCP port 554, for UDP it uses different ports,
#but generally RealAudio in UDP doesn’t consume much bandwidth.
RULE=:554,192.168.1.0/24
RULE=:7070,192.169.1.0/24
#Napster uses ports 6699 and 6700, maybe some other?
RULE=:6699,192.168.1.0/24
RULE=:6700,192.168.1.0/24
#Audiogalaxy uses ports from 41000 to as high as probably 41900,
#there are many of them, so keep in mind I didn’t list all of
#them here. Repeating 900 nearly the same lines would be of course
#pointless. We will simply cut out ports 410031-41900 using
#ipchains or iptables.
RULE=:41000,192.168.1.0/24
RULE=:41001,192.168.1.0/24
RULE=:41000,192.168.1.0/24
RULE=:41001,192.168.1.0/24
RULE=:41002,192.168.1.0/24
RULE=:41003,192.168.1.0/24
RULE=:41004,192.168.1.0/24
RULE=:41005,192.168.1.0/24
RULE=:41006,192.168.1.0/24
RULE=:41007,192.168.1.0/24
RULE=:41008,192.168.1.0/24
RULE=:41009,192.168.1.0/24
RULE=:41010,192.168.1.0/24
RULE=:41011,192.168.1.0/24
RULE=:41012,192.168.1.0/24
RULE=:41013,192.168.1.0/24
RULE=:41014,192.168.1.0/24
RULE=:41015,192.168.1.0/24
RULE=:41016,192.168.1.0/24
RULE=:41017,192.168.1.0/24
RULE=:41018,192.168.1.0/24
RULE=:41019,192.168.1.0/24
RULE=:41020,192.168.1.0/24
RULE=:41021,192.168.1.0/24
RULE=:41022,192.168.1.0/24
RULE=:41023,192.168.1.0/24
RULE=:41024,192.168.1.0/24
RULE=:41025,192.168.1.0/24
RULE=:41026,192.168.1.0/24
RULE=:41027,192.168.1.0/24
RULE=:41028,192.168.1.0/24
RULE=:41029,192.168.1.0/24
RULE=:41030,192.168.1.0/24
RULE=:41030,192.168.1.0/24
#Some clever users can connect to SOCKS servers when using Napster,
#Audiogalaxy etc.; it’s also a good idea to do so
#when you run your own SOCKS proxy
RULE=:1080,192.168.1.0/24
#Add any other ports you want; you can easily check and track
#ports that programs use with IPTraf
#RULE=:port,192.168.1.0/24
BOUNDED=yes
ISOLATED=yes
# ——————-

#cbq-0007.PROXY_In_eth1_35K
#
DEVICE=eth1,10Mbit,1Mbit # Interface,Vel-Interface,Vel-Interface/8
RATE=35Kbit #Velocidad
WEIGHT=3Kbit #Velocidad / 8
PRIO=2 #Prioridad 1-8, donde el 8 es mas baja
RULE=:8080,192.168.1.248
BOUNDED=yes
ISOLATED=yes
# ——————-

#cbq-0008.FTP_In_eth1_15K
#
DEVICE=eth1,10Mbit,1Mbit # Interface,Vel-Interface,Vel-Interface/8
RATE=15Kbit #Velocidad
WEIGHT=1Kbit #Velocidad / 8
PRIO=5 #Prioridad 1-8, donde el 8 es mas baja
RULE=:20,192.168.1.0/24
RULE:21,192.168.1.0/24
BOUNDED=yes
ISOLATED=yes
# ——————-

Posted by: Lic. Domingo Varela Y.


Instalar Ntop en Centos 6

10 abril 2012

Encontré un buen manual para la instalación de ntop en centos, solo le corregí algo en la ultima parte y también pongo la pagina de donde lo encontré

yum install cairo-devel libxml2-devel pango-devel pango libpng-devel
yum install freetype freetype-devel libart_lgpl-devel wget gcc make
yum install perl-ExtUtils-MakeMaker
cd /opt
wget 
http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.5.tar.gz
tar -zxvf rrdtool-1.4.5.tar.gz
cd rrdtool-1.4.5
./configure -prefix=/usr/local/rrdtool
make
make install

cd ..

yum install libpcap libpcap-devel gdbm gdbm-devel
yum install libevent libevent-devel
wget 
http://geolite.maxmind.com/download/geoip/api/c/GeoIP-1.4.8.tar.gz
tar -zxvf GeoIP-1.4.8.tar.gz
cd GeoIP-1.4.8
./configure
make
make install

cd ..

yum install libtool automake autoconf
wget 
http://downloads.sourceforge.net/project/ntop/ntop/Stable/ntop-4.1.0.tar.gz
tar zxvf ntop-4.1.0.tar.gz
cd ntop-4.1.0
./autogen.sh -prefix=/usr/local/ntop
make
make install

cd ..

useradd -M -s /sbin/nologin -r ntop
chown ntop:root /usr/local/ntop
chown ntop:ntop /usr/local/ntop/share/ntop

###esto es para generar el password ######

/usr/local/ntop/bin/ntop -A

###Para correr la apliccion de ntop en demonio#####

/usr/local/ntop/bin/ntop -d -L -u ntop -P /usr/local/ntop –skip-version-check –use-syslog=daemon

Autor del manual: http://ryanwoon.wordpress.com/2011/08/20/install-ntop-in-centos-6/  como les comente hice correcciones niminas en el los ultimos parrafos donde se crea la contraseña y se corre el demonio de ntop



GUIA ROUTER CENTOS – DHCP, PROXY CACHE, DNS CACHE, DNS de DOBLE VISTA… Parte 3 VLAN

2 febrero 2012

Siguiendo con articulo anterior GUIA ROUTER CENTOS – DHCP, PROXY CACHE, DNS CACHE, DNS de DOBLE VISTA… Parte 2““ no es de mi autoria pero pareció muy bueno que lo voy a postear, le pertenece a: rodhalpern que es usuario al igual que yo del Foro ba-k.com

Las Vlans son extremadamente simples de manejar, y como todas las cosas en linux, existe mas de una forma de hacerlas. Te muestro la nomenclatura de las 2.
1.- Usando la misma nomenclatura de las “eth”
LAN = eth0
Vlan = eth0.x
donde x es un numero desde 0 a lo que necesites asignar por cada eth que tengas.

Ejemplo de esto es:
eth0.0, eth0.1, eth0.2, eth0.3… eth0.x

2.- Usando nomenclatura Vlan
LAN = eth0
Vlan = vlanx

donde x es un numero desde 0 a lo que necesites asignar por cada eth que tengas
Ejemplo de esto es:
vlan0, vlan1, vlan2… vlanx

Ahora, para la nomenclatura de la vlan, considerando el mismo adaptador que di de ejemplo para la LAN

# Interface hacia la red local
DEVICE=eth1
BOOTPROTO=static
IPADDR=192.168.10.1
NETMASK=255.255.255.0
USERCTRL=no
HWADDR=aa:bb:cc:dd:ee:ff # Ojo, no modifiquen SU mac, este es un ejemplo
ONBOOT=yes

Para las Vlan en Formato ETHX.X, usando la misma configuración del eth del que queremos colgar la Vlan, y modificamos:

# VLAN FORMATO ETH
DEVICE=eth1.0
BOOTPROTO=static
IPADDR=10.10.1.1 (este es un EJEMPLO de IP de la VLAN)
NETMASK=255.255.255.0
USERCTRL=no
HWADDR=aa:bb:cc:dd:ee:ff # Ojo, no modifiquen SU mac, este es un ejemplo
VLAN=yes
ONBOOT=yes

y lo guardamos en /etc/sysconfig/network-scripts/ifcfg-eth1.0
(era que no)

Para hacer otra Vlan basada en eth1, quedaría igual pero eth1.1 y así
Ejemplo Vlan eth1.1

# VLAN FORMATO ETH
DEVICE=eth1.1
BOOTPROTO=static
IPADDR=10.10.2.1 (este es un EJEMPLO de IP de la VLAN)
NETMASK=255.255.255.0
USERCTRL=no
HWADDR=aa:bb:cc:dd:ee:ff # Ojo, no modifiquen SU mac, este es un ejemplo
VLAN=yes
ONBOOT=yes

Para las Vlan en Formato VLANX, modificamos:

# VLAN FORMATO VLAN
VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
DEVICE=vlan0
PHYSDEV=eth1
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=10.10.1.1
NETMASK=255.255.255.0

y guardamos el archivo como “/etc/sysconfig/network-scripts/ifcfg-vlan0”

¿¿¿ Suficientemente útil???

Falta que preguntes por las uniones (bonds)


GUIA ROUTER CENTOS – DHCP, PROXY CACHE, DNS CACHE, DNS de DOBLE VISTA… Parte 2

2 febrero 2012

Siguiendo con articulo anterior “GUIA ROUTER CENTOS – DHCP, PROXY CACHE, DNS CACHE, DNS de DOBLE VISTA… Parte 1“ no es de mi autoria pero pareció muy bueno que lo voy a postear, le pertenece a: rodhalpern que es usuario al igual que yo del Foro ba-k.com

VAMOS BIEN!

Ahora, para que la navegación sea expedita, es absurdo depender de los DNS del ISP, que normalmente son PEORES que MALOS… así es que levantamos nuestro propio servidor de DNS de doble vista.
Instalamos BIND

# yum -y install bind bind-utils bind-chroot caching-nameserver
Una vez instalado, tenemos que configurar nuestro servidor, para eso:

# cd /var/named/chroot/etc/
# cp -a named.caching-nameserver.conf named.conf
# cp -a named.rfc1912.zones named.rfc1912.int.zones
# cp -a named.rfc1912.zones named.rfc1912.ext.zones
# cd /etc/
# ll named*

Borramos todos los enlaces simbolicos, para poder crear los nuevos

# rm named*
(le decimos que si a todo)

Y ahora creamos los enlaces simbólicos que corresponden

# ln -s /var/named/chroot//etc/named.conf named.conf
# ln -s /var/named/chroot//etc/named.rfc1912.int.zones named.rfc1912.int.zones
# ln -s /var/named/chroot//etc/named.rfc1912.ext.zones named.rfc1912.ext.zones

Ahora la parte entretenida, modificamos named.conf para que funcione nuestro servidor de DNS.

# vim /etc/named.conf
Debiera quedar mas menos asi:
//
// named.caching-nameserver.conf
//
// Provided by Red Hat caching-nameserver package to configure the
// ISC BIND named(8) DNS server as a caching only nameserver
// (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// DO NOT EDIT THIS FILE – use system-config-bind or an editor
// to create named.conf – edits to this file will be lost on
// caching-nameserver package upgrade.
//
options {
listen-on port 53 { 127.0.0.1; 192.168.10.1;};
listen-on-v6 port 53 { ::1; };
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;

// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;

allow-query { localhost; any; };
allow-query-cache { localhost; localnets; };
};
logging {
channel default_debug {
file “data/named.run”;
severity dynamic;
};
};
view interno {
match-clients { localhost; 192.168.10.0/24;};
match-destinations { localhost; };
recursion yes;
include “/etc/named.rfc1912.int.zones”;
};
view externo {
match-clients { any; };
match-destinations { localhost; };
recursion no;
include “/etc/named.rfc1912.ext.zones”;
};

Si se fijan, cuando se pregunta “recursion” en la vista interna, le decimos que si, pero en la vista externa, SIEMPRE decimos que no. Esto es base para evitar DNS poisoning, y por tanto mantener cierta seguridad de nuestro servidor.
A veces, es polite cambiar además los permisos a la carpeta donde funcionan los DNS

# chmod 770 /var/named/
Y hechamos a andar nuestro servicio de DNS

# service named restart
Y como siempre, revisamos la colita de mensajes para ver que todo este ok, aunque nuestro servidor levante de manera correcta.

# tail -100 /var/log/messages
Si todo esta ok, definimos que el servicio levante siempre que la maquina se enciende

# chkconfig named on

FINALMENTE . . . dejamos la guinda de la torta para el final. Un router de juguete me da internet, y la mayor parte maneja DHCP incluso fijando las IPs, pero dependemos de un servicio de enmascaramiento de DNS y DNS Forwarding para poder tener un servicio medianamente decente. Pero no tienen servidor de DNS ni DNS cache como nuestro servidor. Esto mejora increíblemente los tiempos de respuesta de cada requerimiento a las diferentes direcciones de Internet que queramos ver.
Pero lo que hace la diferencia cuando tenemos más de una persona navegando en nuestra red, es la existencia de un proxy. Esto hace que se almacene en el cache del mismo servidor, toda página y elementos que pertenecen a una página, quedando guardados en dos niveles. Por un lado, cuando los elementos son pequeños, quedan en la memoria RAM del servidor, y cuando son más grandes, pasan al disco duro. Si hacen memoria, asigne 5Gb al cache del Squid, que quedo ubicado en /var/spool/squid. En mi humilde experiencia, un cache de 5Gb es MUCHO para una casa de 5 a 6 personas, pero cuando el espacio de disco no es una limitación, el cache NO DEBE exceder los 20Gb (16 Gb se ha visto como el ideal), a menos que el disco sea MUCHO más rápido de lo que uno compra normalmente.

Ahora, instalar squid, es fácil, configurarlo, es un poco “aspero” para ser sincero.
Para facilitar la configuración, les voy a dar las líneas minimas para no sufrir ni padecer en el intento.

# yum install -y squid
# vim /etc/squid/squid.conf

Para poder hacer esto en fácil, pongamos números en las líneas y asi solo modificaremos algunas de ellas. El comando en vi/vim para ver la numeración de las líneas es “:set nu”

– Las líneas pueden variar un par de números, pero dan una buena referencia de donde esta cada cosa

632 # acl TURED src 192.168.10.0/24
633 # http_access allow TURED
921 # http_port 192.168.10.1:3128 transparent

Squid entonces escucha todo lo que pase en la red mencionada, en el Puerto 3128 y de forma transparente.
¿la navegación no es por el puerto 80? :s

1579 # cache_mem 384 MB
(SIN GUI recomiendo)
1579 # cache_mem 320 MB
(CON GUI recomiendo)

aquí menciono que es la cantidad de memoria RAM asignada a cache de navegación. La recomendación cuando la maquina solo corre como router, es hasta el 90% de la ram. Personalmente, creo que esto es correcto SOLO si se usa runlevel 3, sino, debe sumarse el costo del GUI (unos 120Mb) a los servicios y el poner el hasta el 90% del remanente.

1588 # maximum_object_size_in_memory 160 KB

Tamaño maximo de un objeto cargado en la RAM

1786 # cache_dir ufs /var/spool/squid 5120 16 256

En mi humilde experiencia, el cache que ha dado mejor resultado es el “UFS”, por lo que recomiendo dejarlo tal cual. Ahora el primero número 5120, es el espacio asignado en disco al cache de Squid, el segundo son los niveles de directorios que se crearan, y el tercero los subniveles. NO LOS MODIFIQUEN, solo modifiquen el espacio en disco que quieran asignar.

1811 # minimum_object_size 140 KB
1825 # maximum_object_size 30720 KB

este es el valor MAXIMO de un objeto que será almacenado en disco. En este caso, lo fije como 30Mb, lo que es más que suficiente para el 90% de los usuarios. Las salvedades comienzan a aparecer cuando los usuarios quieren que squid almacene las actualizaciones de Windows por ejemplo, hecho que PUEDE hacer, pero no con la configuración que estoy entregando (necesitamos modificar algunos ACLs).

Eso debiera ser todo, aunque a veces, Squid pide que se defina un “visible_hostname”.

# AGREGUE en la pagina 2 como configurar Vlans y como optimizar Squid para Windows UPDATE… así es que no se lo pierdan y PONGAN FEEDBACK… que esto tomo MUCHISISISISISIMO tiempo y dedicación.

Si encuentran errores, o tienen preguntas, avísenme para poder optimizar todo.


GUIA ROUTER CENTOS – DHCP, PROXY CACHE, DNS CACHE, DNS de DOBLE VISTA… Parte 1

2 febrero 2012

Siguiente con  articulo anterior “¿Por qué CENTOS y no UBUNTU o DEBIAN?”  no es de mi autoria pero pareció muy bueno que lo voy a postear, le pertenece a: rodhalpern que es usuario al igual que yo del Foro ba-k.com

Empezamos a postear.

Dentro de la receta, pedimos como mínimo un computador viejito con:

  • P3 500 o superior
  • 512Mb de RAM (podría ser menos, pero no funciona con Fedora 12 o superior, ni Centos 5x o superior)
  • Dos tarjetas de red, dos viejas de 10Mbps mínimo (10/100 ideal)
  • Un disco duro de 8Gb mínimo (voy a hacer el server con un disco de 20Gb, ustedes usen el que tengan)
  • Lector de dvd ideal (aunque lector de CD también sirve)

Mi advertencia para los que tienen más de un tarro botado, es que usen el más chico, y eviten los P4. Esto es porque un PIII de 800 con 512Mb es suficiente para administrar una red de más de 400 usuarios sin despeinarse, consumiendo menos de la mitad de lo que un P4 consumiría. Eliminando el mito, los Duron, Athlon XP y Atlhon MP, así como los semproms, son máquinas muy eficientes energéticamente, y que dan grandes y agradables sorpresas en Linux, aunque los puristas siempre prefieren Intel.

No me puede importar menos ni el monitor, ni la tarjeta de video, ni nada más. La idea es que luego de dejarlo funcionando, dejen servidor en una posición donde nadie lo toque, siempre encendido, e idealmente sin mouse, teclado, ni monitor. De hecho, para los MASHOS TARTAROS, les recomiendo que instalemos SIN GUI, aunque algunas personas siempre quieren tener un escritorio al que allegarse. Mi recomendación, es que si van a hacer una instalación con GUI, tengan en cuenta que es mejor dejar el equipo siempre en runlevel 3, no solo para ahorrarse los megamuchos megabytes de RAM que se consumen, sino que para evitar que manos inescrupulosas crean que pueden ser administradores de servidores.

Si por alguna razón, no son los mashos bakunos que dicen ser, e instalan GUI de todas formas, les menciono que todas las configuraciones que haremos, serán en base a texto, lo que no favorece el uso de la GUI, aunque a los que estén acostumbrados, puede que les acomode tener diferentes ventanas de terminal abiertas, o usando otro editor de texto diferente a “VI/VIM” (mis elecciones) como puede ser “gedit”.

CUIDADO CON EL SERVICIO NETWORKMANAGER. Es un servicio que corre en GUI, pero que evita que el servicio de red sea manejado por consola. Deshabilitenlo.

Además, la mayor parte de las otras interacciones que haremos, serán luego que el equipo funcione, siempre usando ssh, asi es que no tiene mucho sentido.
Manos a la Obra:

Paso 1.- Descarguen el primer CD de Centos 5x (la última versión antes de salir Centos 6 fue la Centos 5.6, y es de hecho la que recomiendo). Pueden usar si tienen a mano como mencione anteriormente Fedora en las versiones 12 hasta la 14 (no probé con versiones anteriores), y Centos 4 a la última de la 5. SIEMPRE EN 32bits.

Para los que vienen del mundo de Windows y creen de guata al cielo que los 64bits son la solución a la hambruna, la estupidez y la pobreza, les comento que NO. Un Kernel PAE puede administrar 64Gb de ram, lo que hace innecesario usar Kernels de 64 bits en Linux a menos que sea un servidor tamaño MAMUT.

NO USEN CENTOS 6 PORQUE HAY DETALLES DIFERENTES dentro de las configuraciones de DHCP, y posiblemente se mareen… ¿para qué hacerlo difícil, si fácil también resulta?

Paso 2.- Quemen el CD o el DVD de Centos 5x en el medio que corresponda.

Paso 3.- Inicien la instalación…

Aunque no quiero hacer un tratado de la instalación, y no capture imágenes de pantalla, tengo que explayarme porque necesitamos modificar algunas cosillas solamente… dentro de las cuales está la tabla de particiones (haremos un diseño personalizado), y las cosas que instalaremos.

Cuando inicien la instalación, elijan la instalación en modo gráfico. Sé que suena un poco contradictorio, pero la modificación de la tabla de particiones es un PARTO de PRIMERISA en modo texto, y no veo porque hacerlos sufrir gratis.

Cuando les ofrezca instalar el idioma, por defecto viene en Ingles, pero si quieres español, pinchen la selección de inglés, y escriban “SPA”, y tendrán la opción de Español (spanish), pinchen luego en siguiente, para seleccionar ahora el idioma del teclado. Por defecto viene con la configuración de español-españa. En mi caso tengo un teclado latinoamericano, así es que pongo “lat” y aparecerá la opción de teclado latino americano.
Ahora lo truculento . . . cuando les dé opción de hacer un diseño predeterminado… la respuesta es NO!!! . . . especialmente a los amigos newbies y Ubunteros, la respuesta es NO. Elijan “CREAR DISEÑO PERSONALIZADO”.

El porqué de esto, varias explicaciones, y cada una muchas ramificaciones, pero lo que es importante que entiendan es que:

  1. Al crear un diseño personalizado, distribuyo a voluntad el disco, y limito la posibilidad de vulnerabilidades de softwares.
  2. Evito que programas tomen más espacio de disco del que yo quiero asignar o es sano asignar. Por ejemplo, hasta hace poco tiempo, Squid tenía justamente un bug aleatorio, que lo hacía tomar más espacio de disco del que se configuraba, pudiendo tomar incluso el 100% del espacio libre de la partición en que se instaló. Con o sin BUG, no dejamos que eso pase.
  3. Puedo enjaular los requerimientos de usuarios (por ejemplo, con los DNS)
  4. Puedo dejar espacio SIN ASIGNAR para aumentar las particiones que así lo requieran, y no necesariamente asignado ni a la raíz, ni al home, ni a nada… no es una máquina de uso personal, es un servidor, y de buenas prácticas siempre es dejar espacio para crecer.

Desde que apareció el MARAVILLOSO LVM, se acabó el problema de espacio, siempre y cuando, tengamos la buena costumbre de definir un VOLUMEN FISICO LVM, y las particiones correspondientes dentro.
Ok… entonces ya que estamos ok con el diseño personalizado, lo primero es crear una nueva partición con punto de montaje /boot con sistema de archivos EXT3 y tamaño fijo de al menos 200Mb (fedora 14 y 15 soportan EXT4, lo que lo hace recomendable, solo por velocidad). Luego, todo el espacio que queda disponible, lo agregamos como LVM.

Acuérdense que el disco que estoy usando es de 20Gb.

Discos duros:
Dispositivo Punto de Montaje TIPO Formato Tamaño (MB)
/dev/sda
/dev/sda1 /boot Ext3 Si 250
/dev/sda2 Sistema LVM PV Si 20222

Ahora en el espacio LVM, ponemos las particiones necesarias para que nuestro servidor funcione. Como les mencione, el disco que usare tiene 20Gb, pero me va a sobrar espacio (como les mencione, por buenas practicas).

La tabla de particiones LVM, la llamé “SISTEMA”, y tiene que quedar entonces más menos así:

Grupo de volúmenes LVM
Dispositivo Punto de Montaje TIPO Formato Tamaño (MB)
Swap Swap Si 1024
Temp /tmp Ext3 Si 1024
Raíz / Ext3 Si 5120
Home /home Ext3 Si 2048
Var /var Ext3 Si 2048
Usr /usr Ext3 Si 2048
Squid /var/spool/squid Ext3 Si 5120

Para los que hacen las matemáticas… SI, deje más menos 1Gb no asignado. De esa manera puedo aumentar sin necesidad de disminuir nada alguna partición que requiera. Si pongo otro disco duro, simplemente lo transformo en volumen LVM, y aumento el espacio al nuevo disco, sin necesidad de hacer RAID. ¿¿¿ Les mencione que desde que apareció el LVM, fue amor a primera vista???
El gestor de arranque por defecto, es el amado GRUB, que se instale en /dev/sda/ tal cual como viene.

Ahora tiene que dar la opción de configurar nuestros adaptadores de red.

Nuestro adaptador eth0 debe quedar con dhcp e ipv6 desactivado (no se necesita), mientras que el eth1 tiene que quedar configurado con la dirección ip que queremos que tenga nuestra red, para ejemplos prácticos, la fijare como 192.168.10.1, con mascara de subred 255.255.255.0 (clase C), también ipv6 desactivado. Preocúpense que ambos adaptadores suban al encender la máquina.

Terminado eso, fijen su zona horaria correspondiente, mi caso, mi Chile querido. (America/Santiago).

Ahora les pedirá una contraseña de administrador. Les pido que sean sobrios y sensatos… “1234” NO ES UNA CONTRASEÑA, y “contraseña” TAMPOCO es una contraseña. Usen una contraseña que tenga al menos una mayúscula, minúsculas, números y algún carácter especial. NO LA PIERDAN.

Si quieren evaluar su contraseña…

Ahora, hacemos la magia. Por defecto en centos se instala el escritorio y algunas cosillas más. Como buenos mashos TARTATOS VIKINGOS, vamos a personalizar la instalación y sacar TODO, salvo el GUI para los no tan mashos. Pinchen Personalizar ahora.
En Entornos gráficos… SAQUEN TODO, salvos los no mashitos que quieren gnome. KDE es un pelito pesado, y es mejor evitarlo.
En Aplicaciones:

  • Auditoria y Publicación desmárquela completo
  • Editores, marquen las dos opciones de VIM-enhanced. Nada más.
  • Emacs, desmarquen todo
  • Gráficos, desmarquen todo
  • Ingeniería y científico, desmarquen todo
  • Internet basada en texto, para MASHOS, déjenlo
  • Internet gráfica, para los que van a instalar GUI, SOLO dejen Firefox
  • Juegos y entretenimiento, desmarquen todo (es un servidor)
  • Oficina y productividad, desmarquen todo (es un servidor)
  • Sonido y video, desmarquen todo

En desarrollo, DESMARQUEN TODO
En Servidores, DESMARQUEN TODO (sip, desmarquen todo)
En Sistema Base, SI NO SON LOS MASHITOS QUE CREO… desmarquen por favor el network manager, o tomara control de los adaptadores de red, además desmarquen el anacron (hace lo mismo que Cron), los servicios aspell, el bluetz-utils, cpuspeed, dmraud, finger, fistboot, ftp, yum-updatestd. El resto, no lo toquen.

Si tienen una conexión por modem ADSL, tienen que preocuparse que el soporte de red mediante discado este marcado, El resto, déjenlo tal como viene, con java desmarcado, herramientas de sistema desmarcada, herramientas de administración desmarcado, distribución de empresas desmarcado.

En la sección Virtualizacion, desmarquen todo
En agrupamiento de clustering desmarquen todo
En almacenamiento del clustering, desmarquen todo
En idiomas, desmarquen todos, menos el idioma que van a usar.

Cuando presionen siguiente, una pantalla avisara que luego del próximo siguiente, la instalación propiamente tal iniciara. Al finalizar la instalación, les va a pedir que reinicien la maquina (no se acostumbren, no es Windows).

El reinicio es suave y rápido, si desmarcaron todo lo que les pedí, he hicieron bien las particiones, solo queda poco trabajo antes de comenzar a hacer lo mínimo que se necesita para poder tener un servidor funcional.