[[linux:servidores_linux_y_openbsd]]

Administrando una Red.

Esta texto no pretende ser una guía detallada de administración de servidores Linux, con una serie de ejemplo tratare de mostrar como OpenBSD y Linux, con ayuda de algunos software, parecen la mejor y estable solución para una red empresarial mediana de por ahí 50 equipos conectados permanentemente a Internet y manejando correo todo el tiempo.

Parte de la idea de este documento es mostrar como con equipos de bajo coste puedes tener una buena infraestructura de red y unos servicios de red que soporten de manera decente la carga de tu red, debo afirmar que esto no seria posible si no fuera por la existencia del software libre, utilizar software propietario de por si implica costes bastante altos que no todas las empresas tienen la capacidad de asumir.

Manos a la Obra:

(Diseño Muy Basico de la red)

                           
Internet   ------------>>>>     Firewall BSD    ------>>  Servidor Linux 
                       
                                                                      |
                                                                      |
                                                                      |
                                                                     LAN
                                                                    EMPRESA 

Servidor OpenBSD (Firewall)

Usar OpenBSD de firewall es una decisión un poco difícil cuando estas acostumbrado a firewalls en Linux, en OpenBSD tenemos la herramienta llamada PacketFilter (pf), para administrar nuestro firewall.

Desde mi punto de vista PF parece ser mas intuitivo y ademas no necesita de módulos adicionales para la administración y la gestión del ancho de banda, (QOS), con BSD, podemos tener un servidor seguro y ademas administrar la conexión a Internet de nuestros clientes sin software adicional ni parches que pueden ser difíciles de aplicar.

—- » Con esto No quiero decir que con Linux no se pueda hacer, claro que pueda hacerse y según asesorías lo hace mucho mejor pero requiere de mas trabajo, ya que es necesario parchar el kernel e instalar algunos software necesarios para complementar netfilter y darle mas potencia a iptables.

Manos a la Obra, parte del manual que he usado es el mismo de la pagina de OpenBSD ( http://www.openbsd.org/faq/pf/config.html ).

  • Lo primero que se tiene que hacer es instalar OpenBSD, eso no lo explicare aqui, por que la guia oficial es suficiente para instalar el sistema operativo.
  • Lo segundo es configurar el archivo /etc/rc.conf.local , donde activaremos con la variable pf=YES , la utilización de packet filter.

OpenBSD, por defecto trae un servidor dhcp, es el típico servidor dhcpd, que utilizamos con Linux, que trae muchas opciones de configuración, puede ser usado en conjunto con tftp para LTSP (Linux terminal server) y enviar una imagen boot a un sistema remoto, se puede configurar para que le asigne a una mac address especifica una ip, entre muchas otras, para activar DHCP en bsd se debe hacer lo siguiente:

1. En el archivo rc.conf, colocar la siguiente linea: dhcpd_flags=“” , tambien puede agregarse en rc.conf.local.

2. Configurar el archivo /etc/dhcpd.conf

como ejemplo dejo mi archivo de configuracion:

# $OpenBSD: dhcpd.conf,v 1.1 1998/08/19 04:25:45 form Exp $
#
# DHCP server options.
# See dhcpd.conf(5) and dhcpd(8) for more information.
#

# Network: 192.168.1.0/255.255.255.0
# Domain name: my.domain
# Name servers: 192.168.1.3 and 192.168.1.5
# Default router: 192.168.1.1
# Addresses: 192.168.1.32 - 192.168.1.127
#
shared-network Red_Museo {

      option  domain-name "museodeantioquia.org";
      subnet 192.168.0.0 netmask 255.255.255.0 {
              option routers 192.168.0.1;
              option  domain-name-servers 192.168.0.1;
              range 192.168.0.10 192.168.0.200;
      }

}

shared-network Red_Casa {

      option  domain-name "museodeantioquia.org";
      subnet 192.168.1.0 netmask 255.255.255.0 {
              option routers 192.168.1.1;
              option  domain-name-servers 192.168.1.1;
              range 192.168.1.20 192.168.1.100;
      }

}

Por defecto en este sistema operativo encontramos el famoso y reconocido BIND9, como todos saben este servidor dns, suele tener bastantes bugs y problemas pero parece en ocasiones que no encontramos otra cosa para usar, después de usar durante mucho tiempo BIND9, decidí por fin implementar djbdns, un servidor DNS, sencillo, eficiente y seguro, que utiliza daemontools y uscpi-tcp para correr.

Lo primero que se debe hacer es leer las siguientes guías:

http://www.lifewithdjbdns.com/es/ {Manual A}

En esta encontrara una excelente descripción de lo que es djbdns y sus diferentes divisiones o pequeños programas para las tareas que desempeña un servidor DNS.

http://www.openbsd.adm.br/es/txt/djb.htm {Manual B}

En esta encontrar un manual para OpenBSD yo seguí en parte esta guía y funciona solo diré que cosas deben hacerse de manera diferente y lograr una buena configuración.

Lo primero que se debe tener en cuenta antes de empezar a instalar y configurar cosas es el diseño de su red, por lo general los servidores conectados a internet que actúan de firewall-nat tienen 2 interfaces de red, una que se encarga de dar conexión a la red local y otra conectada a internet que debe tener una ip fija

Se recomienda que DNSCACHE, corra en la ip interna que da conexión a a la red local. Y que TinyDNS, corra en la IP publica.

Si su conexión a internet no tiene ip publica, le recomiendo crear un alias de ip en la iface local y ahí correr tinydns según el {Manual B}, para crear un alias de ip en OpenBSD se hace de la siguiente manera:

ifconfig rl1 alias 192.168.0.2 netmask 255.255.255.0

Ahora pasemos a la parte de instalación y configuración de DNSCACHE y TinyDNS ( Segun {Manual B} )

1. Compilar e instalar daemontools
2. Compilar e instalar ucspi-tcp
3. Crear los grupos y usuarios necesarios para correr djbdns
4. Compilar e instalar djbdns
5. Poner en marcha dnscache :

Ejecute los siguientes pasos:

# cd /var/djbdns
# dnscache-conf dnscache dnslog /var/djbdns/dnscache 192.168.0.1 —> Esta es la ip de su red local
# ln -s /var/djbdns/dnscache /service/ —> Al hacer esto esta diciendo daemontools que corra el demonio dnscache

Luego, le debe decir desde que redes dnscache aceptara conexiones así:

# touch /var/djbdns/dnscache/root/ip/192.168.0
# touch /var/djbdns/dnscache/root/ip/127.0.0.1

Despues de hacer esto ya puede colocar en su resolv.conf :

nameserver 192.168.0.1

De esta manera ya esta corriendo un DNS resolver, o mas bien dnscache. que se encarga de resolver los nombres de dominio que son pedidos por tus clientes web.

Configurando TinyDNS

Antes de configurar nuestro servidor DNS, debemos elegir la interfaz de red en la que esta va a correr, como dije antes ya sea un alias de ip de la iface interna o la ip publica, el primer paso es decirle al DNSCACHE quien va a ser el servidor dns local así:

# echo “200.200.0.1” > /var/djbdns/dnscache/root/servers/tudominio.net –> Donde 200.200.0.1 es la IP Publica
# cd /var/djbdns/dnscache/root/servers/
# cp tudominio.net 0.200.200.in-addr.arpa

La configuración anterior corresponde a tu dominio primario, si tienes otros dominios que dependen del mismo servidor dns lo que tienes que hacer es lo siguiente:

# cd /var/djbdns/dnscache/root/servers/
# ln -s tudominio.net tu_otro_dominio.com

Ahora despues de tener listo el enlace de DNSCACHE con TinyDNS procedemos a configurar dns asi:

# cd /var/djbdns
# tinydns-conf tinydns dnslog /var/djbdns/tinydns 200.200.0.1 –» 200.200.0.1 es la ip donde correrá el servidor tinyDNS
# ln -s /var/djbdns/tinydns /service/

Ahora solo falta configurar las zonas de dominio para ello se hace lo siguiente:

Entre en el directorio del tiny:

# cd /var/djbdns/tinydns/root

Con su editor preferido edite el archivo “data”

# pico data

–> Despues de configurar el archivo data se hace:

# make

–> con esto queda listo nuestro servidor tinyDNS

Convenciones para manejar el archivo “data”

= crea una entrada PTR ademas del A
+ solo crea el A
C crea una entrada CNAME

Ejemplo de Configuracion del archivo data «<

%in:192.168 — > Zona LOCAL, atiende las peticiones de la red interna
%in:127 — > Zona Local
%ex — > Zona Exterior, atiende peticiones de afuera.

# Public Zones
# .tudominio.net::ns1.tudominio.net:86400
&tudominio.net::ns2.tudominio.net:86400
@tudominio.net::mx.tudominio.net.cl:0

.tu_otro_dominio.com::ns1.tudominio.net:86400
&tu_otro_dominio.com::ns2.tudominio.net:86400
@tu_otro_dominio.com::mx.tudominio.net:0

# Internal only zones
#

.0.168.192.in-addr.arpa::ns1.tudominio.net:::in
.1.168.192.in-addr.arpa::ns1.tudominio.net:::in

# MX
#

# Main entries
#
+ns1.tudominio.net:200.100.10.58:::ex
+ns1.tudominio.net:192.168.1.1:::in

+ns2.tudominio.net:200.100.10.59:::ex
+ns2.tudominio.net:192.168.0.1:::in
+mx.tudominio.net:200.100.10.58:::ex
+mx.tudominio.net:192.168.0.224:::in

+mx2.tudominio.net:200.100.10.59:::ex
+mx2.tudominio.net:192.168.1.2:::in

# External IPs
#
=ip0.tudominio.net:200.100.10.58
=ip1.tudominio.net:200.100.10.59

# IPs of the servers in our lan (192.168.1.*)
#
=servidor.tudominio.net:192.168.0.3:::in
=perseus.tudominio.net:192.168.1.212:::in
=gatos.tudominio.net:192.168.1.3:::in
=web.tudominio.net:192.168.0.225:::in
=correo.tudominio.net:192.168.0.224:::in


# external sites
#
Cworksite.tudominio.net:worksite.tigabytes.com

# mail (smtp;imap;pop)
#
Cmail.tudominio.net:ip2.tudominio.net:::ex
Cpop.tudominio.net:ip2.tudominio.net:::ex
Cimap.tudominio.net:ip2.tudominio.net:::ex
Csmtp.tudominio.net:ip2.tudominio.net:::ex

Cmail.tudominio.net:correo.tudominio.net:::in
Cpop.tudominio.net:correo.tudominio.net:::in
Cimap.tudominio.net:correo.tudominio.net:::in
Csmtp.tudominio.net:correo.tudominio.net:::in


# services
#
+ldap.tudominio.net:192.168.10.62:::in
# Web sites
#
Cwww.tudominio.net:web.tudominio.net
Cwww.tu_otro:dominio.com:web.tudominio.net

Nota:

Solo tuve que agregar estas lineas al PF, para que el lo0 le pudiera hablar a la iface externa:

# LO allow loopback to flow freely
pass in quick on lo0 all
pass out quick on lo0 all

Un proxy inverso (o reverse proxy) es aquel que se sitúa cerca de uno o mas servidores web, de forma que es el proxy quien recibe las peticiones y las reenvía a los servidores web. En mi Caso mi servidor OpenBSD no es lo suficiente potente en cuanto a procesador, ram y disco duro, como para ser servidor web, además por que atiendo alrededor de 5 dominios, así que necesito de un software que haga balanceo de cargas y se encargue de encaminar cada petición web a su servidor o vhost determinado, ya que solo tengo una ip publica disponible.

Como proxy inverso pueden utilizarse diferentes aplicativos como:

Apache, Squid, entre otros, pero no es recomendable tener las anteriores ya que si falla alguna por una razón diferente a nuestro proxy inverso pueden caer otros servicios necesarios como la navegación en el caso de squid, o los servicios web en el caso de usar apache.

Así que la aplicación escogida para dicha tarea es POUND ( http://www.apsis.ch/pound/ )

Pound, es un programa diseñado específicamente para actuar como Proxy inverso y balanceo de carga para servidores web , usando http o https.

Para instalar Pound en OpenBSD es necesario compilarlo a mano ya que no viene en los ports ni en los package de OpenBSD.

Aqui una guia para instalar pound en OpenBSD:

http://www.azbsd.org/~marco/openbsd/pound/

He aqui un ejemplo del archivo de configuracion:

# Global directives

ListenHTTP

          Address 200.200.10.58
          Port    80
          Service
              HeadRequire "Host: (tudominio\.net|(mail|m3lab|www2|www)\.tudominio\.net)"
              BackEnd
                  Address 192.168.0.226
                  Port    80
              End
          End
          Service 
              HeadRequire "Host: (tu_otro_dominio\.com|www\.tu_otr_dominio\.com)"
              BackEnd
                  Address 192.168.0.224
                  Port    80
              End
          End

Servidor Linux

Llegada a la parte del servidor Linux debo decir lo siguiente para empezar:

1. En este servidor estoy utilizando Linux/Debian, por la siguiente razón, es mucho mas sencillo instalar los paquetes y mantenerlos actualizados debido su manejador de paquetes dpkg ( apt- )

2. Utilizo este servidor como servidor web, servidor de correo, y servidor de streaming de audio y video.

3. No soy amante de debían, y si tuviera el suficiente tiempo migraría todo a una distribución desarrollada con OpenSDE, y haría todo a mano, pero como no hay tiempo uso la distribución que puede servir para servidores y se instala mas rápido.

  • linux/servidores_linux_y_openbsd.txt
  • Última modificación: 2008/01/07 00:00
  • (editor externo)