Posts Tagged ‘how-to’

¿Dos IP en un mismo equipo o servidor?

Posted in Curso Adm. Servidores, Servidores on noviembre 22nd, 2008 by Itimag – 1 Comment

Seguimos con el curso de administración de servidores.

Este es un ejemplo práctico de como añadir una segunda ip a un servidor en una misma interfaz o tarjeta de red utilizando una ip privada (para que fuera de utilidad, debería ser pública). Esto es útil para poder asignar a nuestro servidor distintas direcciones ip, permitiéndonos de esta forma crear nuestros servidores de dns (ns1.ejemplo.com y ns2.ejemplo.com) en un mismo equipo sin que los analizadores de dns den error.

Esta acción tiene una desventaja muy grande: si falla nuestro equipo, no se resolverá el dominio/s ya que los dos servidores de nombres de dominio (o DNS) estarán caídos.

Si el servidor DNS y el servidor web que transmite nuestras páginas se encuentran en el mismo equipo, no hará falta que nos preocupemos de lo anterior ya que si se cae el servidor web, no hace falta que intente resolver el dominio ya que no resolverá por mucho que los servidores de dominio si que funcionen.

Tras esta explicación, pasemos a la acción

Veamos nuestra configuración actual. Para ello, escribimos lo siguiente en un el terminal:

/sbin/ifconfig

Se visualiza algo como esto:

itimag@server1:~$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:E0:7D:DF:EA:07
          inet addr:192.168.2.222  Bcast:192.168.2.255  Mask:255
          inet6 addr: fe80::2e0:7dff:fedf:ea07/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:739 errors:0 dropped:0 overruns:0 frame:0
          TX packets:295 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:61160 (59.7 KiB)  TX bytes:41734 (40.7 KiB)
          Interrupt:11 Base address:0xc000
 
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)

Supongamos que queremos añadir la IP AAA.BBB.CCC.DDD a nuestra interfaz de red eth0 (nuestra interfaz de internet por cable).

Para ello, editamos el fichero /etc/network/interfaces de la manera siguiente :

nano /etc/network/interfaces

Observamos lo siguiente:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
             address xxx.xxx.xxx.xxx
             netmask 255.255.255.0
             gateway xxx.xxx.xxx.xxx

Al final del fichero, debemos añadir lo siguiente:

auto eth0:0
 
iface eth0:0 inet static
               address AAA.BBB.CCC.DDD
               netmask 255.255.255.0
               gateway xxx.xxx.xxx.xxx # La puerta de enlace

A continuación activamos la nueva interfaz que hemos definido:

ifup eth0:0

Verificamos la configuración :

/sbin/ifconfig

Nos aparecerá algo parecido a lo siguiente:

server1:/home/itimag# /sbin/ifconfig
 
eth0      Link encap:Ethernet  HWaddr 00:E0:7D:DF:EA:07
          inet addr:192.168.2.222  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::2e0:7dff:fedf:ea07/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2033 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1055 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:178474 (174.2 KiB)  TX bytes:173779 (169.7 KiB)
          Interrupt:11 Base address:0xc000
 
eth0:0    Link encap:Ethernet  HWaddr 00:E0:7D:DF:EA:07
          inet addr:192.168.2.111  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:11 Base address:0xc000
 
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)

Ahora añadimos esta misma ip al fichero /etc/resolv.conf añadiendo la siguiente linea al final del fichero:

nameserver AAA.BBB.CCC.DDD

Próximamente más :) .

Como instalar un server de DNS con BIND en linux

Posted in Curso Adm. Servidores, Servidores on octubre 31st, 2008 by Itimag – Be the first to comment

Continuando con el Curso de Administración de Servidores, hoy toca ver como instalar un servidor bind en  una distribución basada en Debian (Debian etch, Ubuntu, Kubuntu, etc.)

En pocas palabras, ¿Qué hace un servidor de DNS?

Es el encargado de convertir distintos nombres de dominio (Ej: www.itimag.net) en su ip. Por lo tanto, cada vez que accedemos a un servidor mediante un dominio de internet, pasamos por un servidor de dns que se encarga de decirnos cúal es la ip del equipo en la que se encuentra la web a la que estamos accediendo.

Pasemos a la acción. Para instalar bind, ejecutamos el siguiente comando en una consola o shell:

su
apt-get install bind9

Por razones de seguridad, vamos a ejecutar el BIND de tal forma que pueda correr en un directorio chroot. Lo hacemos de la siguiente forma:

/etc/init.d/bind9 stop

Editamos el fichero /etc/default/bind9 . Queremos que el demonio del bind se ejecute con el usuario bind sin privilegios, “chrooted” al directorio /var/lib/named. Para ello, buscamos donde pone <<OPTIONS=”-u bind”>> y lo substituimos por <<OPTIONS=”-u bind -t /var/lib/named”>>:

nano /etc/default/bind9
OPTIONS="-u bind -t /var/lib/named"
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes

Ahora creamos los directorios necesarios en /var/lib:

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run

Y a continuación movemos el directorio de configuración desde /etc hasta /var/lib/named/etc:

mv /etc/bind /var/lib/named/etc

Creamos un link simbólico al nuevo directorio de configuración partiendo del antiguo directorio (para evitar problemas cuando bind se actualice):

ln -s /var/lib/named/etc/bind /etc/bind

Hacemos “null” y “random”, y cambiamos los permisos de los directorios:

mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind

Ahora necesitamos modificar el fichero /etc/default/syslogd con la finalidad de registrar los mensajes que muestre bind el algún fichero de log. Debemos buscar la linea que pone <<SYSLOGD=”">> y lo substituimos por <<SYSLOGD=”-a /var/lib/named/dev/log”>>:

nano /etc/default/syslogd

El fichero resultante es el siguiente:

#
# Top configuration file for syslogd
#
 
#
# Full documentation of possible arguments are found in the manpage
# syslogd(8).
#
 
#
# For remote UDP logging use SYSLOGD="-r"
#
SYSLOGD="-a /var/lib/named/dev/log"

Reiniciamos el demonio del generador de logs:

/etc/init.d/sysklogd restart

Iniciamos o arrancamos BIND, y chequeamos /var/log/syslog para observar si se han producido errores:

/etc/init.d/bind9 start

Para ver si hay errores, hacemos:

less /var/log/syslog

Ahora pulsamos la z para recorrer el texto hasta el final y observamos si se ha producido algún error tras reiniciar:

Ejemplo:

Sep 22 13:13:01 ksxxxxx syslogd 1.4.1#18: restart.
 
Sep 22 13:13:01 ksxxxxx /USR/SBIN/CRON[11162]: (root) CMD (/usr/local/rtm/bin/rtm 12 &gt; /dev/null 2&gt; /dev/null)
 
Sep 22 13:13:15 ksxxxxx named[11217]: starting BIND 9.3.4-P1.1 -u bind -t /var/lib/named
 
Sep 22 13:13:15 ksxxxxx named[11217]: found 1 CPU, using 1 worker thread
 
Sep 22 13:13:15 ksxxxxx named[11217]: loading configuration from '/etc/bind/named.conf'
 
Sep 22 13:13:15 ksxxxxx named[11217]: no IPv6 interfaces found
 
Sep 22 13:13:15 ksxxxxx named[11217]: listening on IPv4 interface lo, 127.0.0.1#53
 
Sep 22 13:13:15 ksxxxxx named[11217]: listening on IPv4 interface eth0, 213.251.xxx.xxx#53
 
Sep 22 13:13:15 ksxxxxx named[11217]: command channel listening on 127.0.0.1#953
 
Sep 22 13:13:15 ksxxxxx named[11217]: zone 0.in-addr.arpa/IN: loaded serial 1
 
Sep 22 13:13:15 ksxxxxx named[11217]: zone 127.in-addr.arpa/IN: loaded serial 1
 
Sep 22 13:13:15 ksxxxxx named[11217]: zone 255.in-addr.arpa/IN: loaded serial 1
 
Sep 22 13:13:15 ksxxxxx named[11217]: zone localhost/IN: loaded serial 1
 
Sep 22 13:13:15 ksxxxxx named[11217]: running

En este ejemplo, no se observa ningún mensaje de error y, por lo tanto, la instalación ha sido un éxito.

Instalar y Acceder por ssh a nuestro servidor

Posted in Curso Adm. Servidores, Otros, Servidores on octubre 20th, 2008 by Itimag – 1 Comment

¿Qué es ssh o secure shell y para qué sirve?

Veamos la definición que nos da la wikipedia:

SSH (Secure SHell) -intérprete de comandos seguro- es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X (en sistemas Unix) corriendo.

Además de la conexión a otras máquinas, SSH nos permite copiar datos de forma segura (tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a las máquinas y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH.

¿Cómo instalo ssh en una distribución linux basada en debian?

Abrimos una consola e introducimos lo siguiente:

apt-get install ssh

Tras pulsar intro se nos va a preguntar la contraseña de root. La introducimos y listo.

¿Cómo accedo por ssh?

Usando linux:

Es muy sencillo. Debemos seguir los siguientes pasos:

  1. Abrimos una consola (Programa de terminal)
  2. Escribimos:
ssh user@tu_server -p puerto

Hay que tener en cuenta que:

  • user= es el nombre de usuario
  • tu_server: la ip del servidor o nombre de dominio ya instalado en la máquina.
  • Puerto = es el puerto de acceso a ssh. Por defecto es el 21 pero más adelante veremos como cambiarlo para obtener más seguridad.

Usando Windows:

Para acceder desde windows a nuestro servidor, deberemos bajarnos un programa llamado putty. Lo podeis descargar desde aquí y a continuación os dejo un link al siguiente manual donde se explica su uso.

¿Y ahora?¿Qué hago?

Si estamos instalando ssh será porqué lo hemos hecho en un ordenador de casa en vez de alquilar un servidor dedicado en alguna empresa, la cual nos habría entregado el equipo con ssh para que lo podamos administrar.

Para que podamos quitar el teclado, monitor y demás periféricos a nuestro ordenador que hará de servidor, primero debemos modificar la ip privada (normalmente asignada por DHCP) asignada a nuestro equipo por nuestro router con la finalidad de que ésta siempre sea la misma. Si quisiéramos, también podríamos conectar al servidor utilizando la ip pública asignada por nuestro operador (normalmente es una ip dinámica, que cambia). Para ello, debemos abrir el puerto 22 (TCP) de nuestro router para la ip privada de nuestro equipo, la cual vamos a hacer fija.

En caso de tener únicamente un módem conectado a nuestro equipo, esto no hará falta ya que podemos acceder directamente al equipo utilizando la ip pública de este.

Más adelante veremos como hacer todo esto en más detalle. Un saludo.

Programar con Lisp en Linux

Posted in Lisp, Otros, Programación on octubre 18th, 2008 by Itimag – Be the first to comment

¿Qué es lisp?

De acuerdo con la definición en la wikipedia:

Lisp es el segundo lenguaje de programación, después de Fortran, de alto nivel. Lisp es de tipo declarativo y fue creado en 1958 por John McCarthy y sus colaboradores en el MIT.

El elemento fundamental en Lisp es la lista, en el sentido más amplio del término, pues tanto los datos como los programas son listas. De ahí viene su nombre, pues Lisp es un acrónimo de “LIStProcessing”.

¿Cómo vamos a programar con Lisp en una distribución Linux basada en Debian?

Vamos a utilizar Clisp. Su definición en la wikipedia es la siguiente:

CLISP es una completa implementación libre de Common Lisp realizada por Bruno Haible, de la Universidad de Karlsruhe, y Michael Stoll, de la Universidad de Munich, que cumple con casi la totalidad del estándar ANSI Common Lisp, además de muchas otras extensiones. CLISP es software libre y está publicado con la licencia GPL.

¿Cómo instalamos Clisp?

  1. Abrimos un Terminal y accedemos como root
  2.  su
  3. Ejeutamos lo siguinte:
  4.  apt-get install clisp clisp-dev clisp-doc

Ahora que ya tenemos Clisp instalado, para acceder a Clisp, abrimos una consola y escribimos el siguiente comando:

clisp

Ahora, a programar se ha dicho ;)