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.