jueves, 3 de febrero de 2011

FTP EN SERVER 2008 (I) INSTALACIÓN DEL IIS

Para realizar algunas prácticas en Windows Server 2008 (http, dns, correo, ftp...) necesitamos tener instalado el servicio IIS.
Vamos a ello:

Vamos a: Inicio -> Administrador del Servidor o pulsáis el icono que aparece al lado del botón inicio
En el Administrador del Servidor seleccionáis la opción Funciones
Pulsamos el enlace donde pone Agregar funciones
Pasamos la primera pantalla y en la siguiente seleccionamos la opción Servidor web IIS
Al seleccionar el Servidor web IIS nos va a pedir instalar unas características requeridas para Servidores Web (IIS), la verdad es que hay que decir sí, porque si cancelas no se instala el IIS.
Pulsamos siguiente y en la siguiente pantalla nos hace una breve descripción de lo que estamos instalando, podemos dar siguiente otra vez y en esta pantalla hay un listado de opciones para instalar en el servidor IIS, como puede ser: ASP.NET, CGI, Redireccionamiento HTTP,...etc.

Una vez tenemos todas las opciones que queremos seleccionadas pulsamos siguiente y después de la ventana de resumen instalamos.
Cuando la instalación acaba hay un resumen de la instalación y ya tenemos el IIS 7 listo para trabajar, vamos a: Inicio -> Herramientas Administrativas -> Administrador de Internet Information Services (IIS) y nos aparece el IIS
Si abrimos el árbol del IIS y nos ponemos encima del Default Web Site,
a la derecha, en el menú lateral pulsamos Examinar *:80(http) y nos aparecerá la página del IIS 7
 
También podemos abrir el navegador y poner http://localhost

Servidor VSFTPD

Servidores FTP

El Protocolo de Transferencia de Archivos (FTP) es un protocolo TCP para subir y descargar archivos entre ordenadores. El FTP funciona según el modelo cliente/servidor. El componente servidor se denomina demonio FTP. Está continuamente escuchando peticiones FTP de clientes remotos. Cuando se recibe una petición, gestiona la creación de la sesión y establece la conexión. Durante la duración de la sesión ejecuta las órdenes enviadas por el cliente FTP.
El acceso a un servidor FTP puede hacerse de dos maneras:
  • Anónimo
  • Autenticado
En el modo Anónimo, los clientes remotos pueden acceder al servidor FTP usando la cuenta de usuario por defecto llamada «anonymous» o "ftp" y enviando una dirección de correo como contraseña. En el modo Autenticado los usuario deben poseer una cuenta y su contraseña. El acceso del usuario a los directorios u ficheros del servidor FTP dependerá de los permisos definidos para la cuenta utilizada. Como regla general, el demonio FTP oculta el directorio raíz del servidor FTP y lo cambia por el directorio de inicio del FTP. Esto oculta el resto del sistema de archivos en las sesiones remotas.



vsftpd - Instalación del Servidor FTP

vsftpd es un demonio FTP disponible en Ubuntu. Es fácil de intalar, configurar y mantener. Para instalar vsftpd ejecuta el siguiente comando:

sudo apt-get install vsftpd 

vsftpd - Configuración del Servidor FTP

Puedes editar el archivo de configuración de vsftpd, /etc/vsftpd.conf, para cambiar las opciones por omisión. De forma predeterminada, sólo se permiten los accesos FTP anónimos. Si deseas desactivar esta opción, debes cambiar la siguiente línea:

anonymous_enable=YES
por
anonymous_enable=NO
De forma predeterminada, los usuarios locales del sistema no pueden  iniciar una sesión al servidor FTP. Para cambiar esto, debes descomentar  la siguiente línea: 
 
#local_enable=YES
De forma predeterminada, los usuarios pueden descargar archivos desde  el servidor FTP. Sin embargo, no pueden subir archivos al servidor FTP.  Para cambiar esto, debes descomentar la siguiente línea:

#write_enable=YES
Del mismo modo, de forma predeterminada, los usuarios anónimos no  pueden subir archivos al servidor FTP. Para cambiar esta opción, debes  descomentar la siguiente línea:

#anon_upload_enable=YES
El archivo de configuración consta de muchos parámetros de  configuración. La información sobre cada parámetro se encuentra  disponible en el archivo de configuración. Además, puedes consultar la  página del manual, man 5 vsftpd.conf, para conocer más detalles sobre  cada parámetro. 
Una vez que haya configurado vsftpd puede ejecutar el demonio. Puedes ejecutar el siguiente comando para lanzar el demonio vsftpd :

sudo /etc/init.d/vsftpd start 

Comandos FTP en Consola Linux

Comandos FTP para usar desde consola Linux

OPEN

Con este comando se abre una sesión con el ftp seleccionado. Este comando no funcionaria sin previamente haber establecido conexión con el servidor FTP:
    ftp 212.152.1.22

CLOSE

Como es evidente, con este comando se cierra sesión.

GET

Este comando probablemente es el más utilizado ya que es el que se utiliza para bajarte los ficheros del servidor remoto de FTP. Tienes que estar en el directorio del servidor remoto donde está el archivo que quieres recibir. Se copiará en el directorio en local en el que estés.
    get fichero.txt

PUT

Este como el segundo es muy utilizado haciendo justo lo contrario, subiendo los ficheros al servidor de FTP. Los archivos de origen los toma del ordenador local, del directorio donde estés situado en local. Se suben al directorio remoto donde estés situado.
    put fichero.txt

LCD

Específica el directorio local sobre el que vamos a trabajar, es decir donde colocaremos los archivos que queremos compartir con el servidor remoto.

CD

Este comando actúa de la misma forma que en MS-DOS es decir, se utiliza para moverse a través de los directorios del servidor de FTP.

LCD

Tiene la misma función que el anterior pero este aplicado a tus directorios locales.

LS

Con este comando sacamos una lista de directorios y archivos encontrados en el servidor, actúa de la misma forma que en el interprete de comandos en Linux.

DELETE

Cuidado con este comando, que solo se puede aplicar al servidor remoto, ya que se utiliza para borrar archivos que se encuentren en dicho servidor con el que estamos conectados. Sólo podrán utilizarlo usuarios que tengan los permisos adecuados.

APPEND

Permite reanudar una descarga que por cualquier motivo haya sido interrumpida. Este comando puede resultar muy útil cuando intentemos descargas archivos bastante pesados, que tarden mucho tiempo, ya que puedes reanudar la descarga en el punto donde la dejaste.

MPUT

Este comando nos permite subir varios archivos a la vez al servidor en remoto, es bastante útil cuando se necesitan subir varios archivos.

MGET

Hace la operación inversa que el anterior, es decir, descarga varios archivos del servidor en remoto, a la vez.

USER

Con este comando cambiamos de usuario e iniciamos sesión con otro usuario distinto.

BYE

Por ultimo hay un comando que cierra la sesión y sale del programa de ftp de forma que todas las sesiones abiertas se cierran.

EL SERVICIO FTP

1.- Introducción.

El servicio FTP (File Transfer Protocol, Protocolo de Transferencia de Ficheros), es un de los mas antiguos dentro de Internet. Es un servicio que los usuarios lo utilizan frecuentemente (descarga de drivers, música, documentos, etc.), pero esto es sólo una parte del servicio, ya que también es posible, implementar en nuestra máquina, un servidor FTP para que otros usuarios se puedan conectar a nuestra computadora y recoger/dejar información en una zona concreta. Existen dos tipos de transferencias:
  • Descarga (download). Consiste en traer un archivo a nuestro ordenador desde un servidor remoto. También se dice "bajar un archivo".
  • Carga (upload). Consiste en llevar un archivo desde nuestro ordenador a un servidor. También se dice " subir un archivo".
El servicio FTP (File Transfer Protocol),es por tanto un servicio que se utiliza para transferir información, almacenada en ficheros, de una máquina remota a otra local, o viceversa. Para poder realizar esta operación es necesario conocer la dirección IP (o el "nombre") de la máquina a la que nos queremos conectar para realizar algún tipo de transferencia.
Es fundamental distinguir entre máquina local y máquina remota:
  • MAQUINA LOCAL: Es aquella desde donde nos conectamos para hacer la transferencia, es decir, donde ejecutamos ftp.
  • MAQUINA REMOTA: Es aquella a la que nos conectamos para transferir información.
El servicio FTP se puede realizar a través de los navegadores de Internet (Firefox, Chrome, Internet Explorer...), así como a través de clientes FTP.
Los servidores FTP controlan el acceso de los usuarios a su sistema de carpetas. Esto quiere decir que, para conectarse a un servidor FTP, necesitamos un usuario (login) y una contraseña (password). Se ofrece una alternativa de acceso no autentificado: el usuario anonymous, que no lleva contraseña. Normalmente, este usuario tiene los permisos restringidos. 

2.- Tipos de FTP.

 
Existen tres tipos de FTP:
  • FTP Anónimo: Cualquiera puede descargar un archivo sin identificarse.
  • FTP Autenticado: Hay que conectarse al servidor utilizando un nombre y una contraseña.
  • FTP Embebido: Es el que se realiza desde las páginas Web, a través de navegadores. Es una opción dentro del FTP Anónimo.
En resumen, el FTP Anónimo/Embebido se utiliza normalmente para el download y el FTP Autenticado para el upload.


El FTP anónimo es un servicio que nos permite acceder a ficheros que están situados en un ordenador sin tener cuenta o estar registrados en él. Se accede utilizando el usuario especial anonymous y la contraseña es nuestra dirección de correo electrónico (por cortesía, como mínimo). Está específicamente orientado para trabajar con ficheros, cuyo contenido puede ser de lo más variado (texto, fotos, software, ejecutables...) y la transferencia se puede realizar entre ordenadores con distintos sistemas operativos y entre distintas redes, siempre que se tenga una aplicación que maneje este servicio.
Los servidores de FTP anónimo son los que permiten que cualquiera que esté conectado a Internet se conecte a ellos y descargue archivos. Es por ello que se utilizan para poner a disposición del gran público todo tipo de archivos.
Es la mejor alternativa al envío de mensajes de correo electrónico con ficheros grandes, ya que evita que los mensajes atraviesen varios servidores, saturándolos. Dichos ficheros se colocan en el servidor FTP anónimo y pueden ser recogidos por quien los necesite de una manera rápida y eficaz.
Para recoger un fichero, se necesita saber obligatoriamente el ordenador en el que está y se recomienda conocer la localización del fichero a transferir y el tipo de fichero, para saber si después de transferido, se disponen de las herramientas adecuadas para manejarlo como se desea.
Es muy recomendable guardar los archivos que descarguemos en un directorio temporal, ya que siempre vendrán comprimidos y su directorio final será probablemente otro distinto al de descarga. De esta forma siempre conservaremos el archivo comprimido inicial en un lugar localizado.


El FTP Autenticado se utiliza para conectarse a un servidor y enviar/recibir archivos a/desde un directorio para luego hacerlos públicos/privados. Por ejemplo, si deseásemos colocar estas páginas en Internet, habría que enviarlas al servidor. Pero, por otro lado, no nos gustaría que cualquiera pudiese acceder a ellas para cambiarlas o eliminarlas. Por tanto, se necesita un protocolo con contraseña.

Como se ha comentado antes, el FTP Embebido es una parte del FTP Anónimo que se realiza desde los navegadores Web. Es quizá el mas popular hoy día, ya que las descargas se realizan haciendo clic en determinados enlaces desde la Web. Una vez hecho el clic, se inicia el proceso de descarga, solicitando desde el navegador, la ubicación del fichero dentro de nuestro equipo.
Hay que tener en cuenta que, normalmente este tipo de FTP, es mas lento que el que se realiza con clientes FTP pero es mas cómodo al no tener que saber manejar nada mas que el navegador Web.
 
 
3.- Servidores FTP.
 
El servidor FTP es el software que tienen instalado las máquina que ofrecen servicio de FTP a la Comunidad Internet. El servidor de archivos debe admitir las transferencias de tipo FTP, por lo que deberá ser un ordenador especialmente preparado para esta tarea.
Los servidores FTP de Internet son en su inmensa mayoría sistemas UNIX/LINUX aunque se puede montar un servidor FTP en nuestro ordenador. Para ello, necesitaremos un programa específico; hay varios muy populares, gratuitos, algunos incluso en castellano.
Los servidores FTP controlan el acceso de los usuarios dentro de su sistema de carpetas. Esto quiere decir que, para conectarse a un servidor FTP, necesitamos un usuario (login) y una contraseña (password). Se ofrece una alternativa de acceso no autentificado: el usuario anonymous, que no lleva contraseña. Normalmente, este usuario tiene los permisos restringidos.
 
4.- Clientes FTP.

El acceso convencional a los servidores FTP se realiza por medio de programas cliente específicos para el protocolo FTP, que permiten cosas como la transferencia de grupos de ficheros o directorios completos. Es la forma más fácil de transferir archivos entre un PC y un servidor remoto, por tanto, para ficheros grandes es mejor utilizar Clientes FTP que el correo electrónico. Los clientes FTP más utilizados son:
  • En Microsoft Windows: WS-FTP y CuteFTP o Filezilla
  • En Linux: ncftp (en modo consola) y gFTP o Filezilla (gráfico).

sábado, 29 de enero de 2011

APACHE EN UBUNTU

APACHE es un servidor web HTTP que podemos instalar en Ubuntu desde el terminal:
$ sudo apt-get install apache2
El sistema nos pedirá instalar otros paquetes adicionales:
apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
Descargará poco más de 3 Mb y se ocuparán 10,5 Mb de espacio en el disco duro. Al terminar, podemos comprobar que el servidor esta configurado para iniciarse con el sistema si escribimos:
$ ls /etc/init.d/apache2
y recibimos como respuesta:
/etc/init.d/apache2
Esto quiere decir que se ha creado el guión de inicio del servidor.
El servidor ya debe estar iniciado al acabar la instalación pero por si falla, podemos iniciar el servicio manualmente, así como detenerlo o reiniciarlo. Basta con usar la orden que necesitemos de entre las siguientes:
$ sudo /etc/init.d/apache2 start
$ sudo /etc/init.d/apache2 stop
$ sudo /etc/init.d/apache2 restart

Ahora al hacer start, debería decirnos que el servicio ya se ha iniciado:
$ sudo /etc/init.d/apache2 start
* Starting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name,
using 127.0.1.1 for ServerName
httpd (pid 2523) already running


Se puede comprobar haciendo un listado de los procesos cargados y que se estén ejecutando actualmente con el comando:
$ ps -ef | grep apache
Que por ejemplo puede devolver:
root 2523 1 0 10:21 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 2525 2523 0 10:21 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 2526 2523 0 10:21 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 2527 2523 0 10:21 ? 00:00:00 /usr/sbin/apache2 -k start
emi 3230 3015 0 13:32 pts/1 00:00:00 grep --color=auto apache

Ahora podemos también verificar que el servidor está funcionando correctamente, basta con acceder a la dirección http://localhost/, que es la dirección local de una máquina (equivale a http://127.0.0.1/).
En el navegador veremos una página de confirmación:

HTTP

Hypertext Transfer Protocol o HTTP (protocolo de transferencia de hipertexto) es el protocolo usado en cada transmisión de lared. El HTTP fue desarrollado por el World Wide Web Consortium y la Internet Engineering Task Force, colaboración que culminó en 1999 con la publicación de una serie de RFC, el más importante de ellos es el RFC 2616 que especifica la versión 1.1. HTTP define la sintaxis y la semántica que utilizan los elementos de software de la arquitectura web (clientes, servidores, proxies) para comunicarse. Es un protocolo orientado a transacciones y sigue el esquema petición-respuesta entre un cliente y un servidor. Al cliente que efectúa la petición (un navegador web o un spider) se lo conoce como "user agent" (agente del usuario). A la información transmitida se la llama recurso y se la identifica mediante un localizador uniforme de recursos (URL). Los recursos pueden ser archivos, el resultado de la ejecución de un programa, una consulta a una base de datos, la traducción automática de un documento, etc.
HTTP es un protocolo sin estado, es decir, que no guarda ninguna información sobre conexiones anteriores. El desarrollo de aplicaciones web necesita frecuentemente mantener estado. Para esto se usan las cookies, que es información que un servidor puede almacenar en el sistema cliente. Esto le permite a las aplicaciones web instituir la noción de "sesión", y también permite rastrear usuarios ya que las cookies pueden guardarse en el cliente por tiempo indeterminado.

Primeros Servidores

  • CERN httpd Server
  • NCSA httpd server
  • Compuserve httpd server

Métodos de Petición

HTTP define 8 métodos (algunas veces referido como "verbos") que indica la acción que desea que se efectúe sobre el recurso identificado. Lo que este recurso representa, si los datos pre-existentes o datos que se generan de forma dinámica, depende de la aplicación del servidor. A menudo, el recurso corresponde a un archivo o la salida de un ejecutable que residen en el servidor.
HEAD
Pide una respuesta idéntica a la que correspondería a una petición GET, pero sin el cuerpo de la respuesta. Esto es útil para la recuperación de meta-información escrita en los encabezados de respuesta, sin tener que transportar todo el contenido.
GET
Pide una representación del recurso especificado. Por seguridad no debería ser usado por aplicaciones que causen efectos ya que transmite información a través de la URI agregando parámetros a la URL.
Ejemplo:
GET /images/logo.png HTTP/1.1 obtiene un recurso llamado logo.png
Ejemplo con parámetros:
/index.php?page=main&lang=es
POST
Somete los datos a que sean procesados para el recurso identificado. Los datos se incluirán en el cuerpo de la petición. Esto puede resultar en la creación de un nuevo recurso o de las actualizaciones de los recursos existentes o ambas cosas.
PUT
Sube, carga o realiza un upload de un recurso especificado (archivo), es el camino más eficiente para subir archivos a un servidor, esto es porque en POST utiliza un mensaje multiparte y el mensaje es decodificado por el servidor. En contraste, el método PUT te permite escribir un archivo en una conexión socket establecida con el servidor.
La desventaja del método PUT es que los servidores de hosting compartido no lo tienen habilitado.
Ejemplo:
PUT /path/filename.html HTTP/1.1
DELETE
Borra el recurso especificado.
TRACE
Este método solicita al servidor que envíe de vuelta en un mensaje de respuesta, en la sección del cuerpo de entidad, toda la data que reciba del mensaje de solicitud. Se utiliza con fines de comprobación y diagnostico.
OPTIONS
Devuelve los métodos HTTP que el servidor soporta para un URL especifico.Esto puede ser utilizado para comprobar la funcionalidad de un servidor web mediante peticion en lugar de un recurso especifico
CONNECT

Códigos de respuesta

Son códigos de tres dígitos:
  • 1xx Mensajes
N° Descripción
100 111 Conexión rechazada
  • 2xx Operación exitosa
N° Descripción
200 OK
201-203 Información no oficial
204 Sin Contenido
205 Contenido para recargar
206 Contenido parcial
  • 3xx Redireción
N° Descripción
301 Mudado permanentemente
302 Encontrado
303 Vea otros
304 No modificado
305 Utilice un proxy
307 Redirección temporal
  • 4xx Error por parte del cliente
N° Descripción
400 Solicitud incorrecta
402 Pago requerido
403 Prohibido
404 No encontrado
409 Conflicto
410 Ya no disponible
412 Falló precondición
  • 5xx Error del servidor
N° Descripción
500 Error interno
501 No implementado
502 Pasarela incorrecta
503 Servicio nodisponible
504 Tiempo de espera de la pasarela agotado
505 Versión de HTTP no soportada

TÚNELES SSH

Ssh nos ofrece entre otras cosas una consola remota segura, ftp seguro, X forwarding y lo que hoy vamos a ver, túneles a través del protocolo ssh. Básicamente hay dos tipos, túnel en modo listen y en modo remote; empezaré por el primero, que es el que más comúnmente suelo usar.

Imaginemos que estamos por ejemplo en un aula de ordenadores en una biblioteca o en la universidad. Queremos conectar a nuestro emule en el puerto 4080 de nuestro ordenador sobremesa, para poder ver como van esas descargas o bien añadir algo que nos han recomendado para bajar, por poner un ejemplo. Pero claro sólo tenemos el router configurado para que funcione con los puertos de emule y el ssh hacia un ordenador cualquiera de nuestra red. Suponemos que el servicio ssh está corriendo en la misma máquina que el emule, que esta máquina se llama en la red molongo y que tiene la ip 192.168.1.110, ssh está en esta máquina en el puerto 22, sin embargo el router redirecciona el puerto 4422 al 22 de esa máquina.
Según esto, si queremos hacer sesión ssh tendríamos que ejecutar el comando ssh -p 4422 usuario@nombre_de_maquina_en_internet así conectaríamos haciendo sesión ssh al puerto 22 del ordenador de sobremesa. Pero realmente lo que queremos es tener acceso al puerto 4080, donde podemos conectar a la interfaz web de emule. Recordemos que no tenemos acceso desde internet a ese puerto, pues no tenemos las reglas de redireccionamiento activadas en el firewall de nuestro router, así que haremos un túnel del puerto 4080 del sobremesa molongo al puerto 8888 del ordenador desde el que estamos accedidendo.
El comando sería: ssh -p 4422 -L 8888:localhost:4080 usuario@nombre_de_maquina_en_internet
Con este comando conseguimos una sesión ssh, pero además el túnel, ahora si abrimos el navegador web y ponemos la dirección http://localhost:8888 veremos lo mismo que si ponemos http://localhost:4080 en molongo.
Ahora veamos cómo se sabe qué es cada opción, -p es para decir qué puerto usamos para la sesión ssh, por defecto es 22, pero en nuestro router hemos abierto el 4422 direccinoado al 22 de molongo. -L es para hacer un túnel en modo listen y se especifica puerto_local:maquina_remota:puerto_remoto, debemos tener en cuenta que puerto_local es el puerto al que queremos llevar el puerto_remoto mediante el túnel y que maquina_remota es el nombre o ip de la máquina visto siempre desde la máquina en la cual está ejecutando el sshd al que estamos conectando. En el ejemplo anterior también funcionaría si pusiéramos molongo o 192.168.10.110 en lugar de localhost.
Si quisiéramos conectar a otra máquina de la red, en lugar de al sobremesa, por ejemplo a un servidor web que tengamos para acceder sólo desde nuestra red local, bastaría con substuir localhost por la ip o el nombre de esa máquina y también el puerto por el que queremos acceder, por ejemplo quedaría -L 8888:servidorweb:80.
Por otro lado tenemos el túnel en modo remoto, que es algo más extraño. Imaginemos que lo que queremos es acceder al servidor web para administrarlo, usando para ello una sesión ssh, este servidor no tiene acceso desde internet, pues está detrás de un firewall y no diponemos de puertos que redireccionen a él. En este caso el comando lo ejecutamos en el servidor web, de manera que lo que hacemos en este caso es decirle que haga un túnel para llevar el puerto 22 local al puerto 5522 de un equipo que sea accesible desde internet. ssh -p 4422 -R 5522:localhost:22 usuario@nombre_de_maquina_en_internet.
La opción -N es para que no ejecute ningún comando remoto, y la opción -f para que pase a segundo plano.

FREENX

NX es una tecnología para manejar conexiones remotas a X Window de forma suficientemente rápida incluso sobre un módem de 56K. Para ello utiliza compresión de datos y mecanismos de caché, que le proporcionan un rendimiento netamente superior al de otras soluciones de este tipo como VNC. También emplea SSH para cifrar la conexión entre servidor y cliente. Además de permitir a los usuarios loguearse en una máquina remota accediendo al escritorio, permite también suspender y recuperar sesiones. NX es un producto de la empresa NoMachine, que dispone de licencia GPL sobre la propia tecnología NX, existiendo múltiples implementaciones, tanto comerciales como gratuitas, y tanto libres como propietarias, de servidores y clientes. Es necesario destacar que la mayoría de la información disponible en la Red sobre NX, tanto en español como en inglés, está en general totalmente desfasada, lo que obliga a una importante labor de rastreo a fin de localizar un repositorio adecuado de los paquetes necesarios en Debian. Por idéntica razón, es de prever que este mismo tutorial pierda vigencia sin tardar, pero ahora mismo permite instalar el servidor FreeNX en una máquina Debian (Lenny) de una forma absolutamente simple. Después, instalaremos el software cliente de NoMachine en una máquina remota con Windows XP SP2 a fin de acceder al escritorio de Debian...
Diferenciaremos por tanto la instalación en el lado servidor y en el lado cliente.

SERVIDOR


1. Instalación

Instalaremos el servidor FreeNX en una máquina corriendo Debian (Lenny), aunque creo poder afirmar que funcionaría exactamente igual en Debian Etch. De hecho los paquetes que utilizaremos están diseñados para Etch, representando este tutorial la primera y única confirmación que yo haya podido encontrar de que también funcionan perfectamente en Lenny.
El punto fundamental radica en añadir la siguiente línea a /etc/apt/sources.list:
deb http://krnl.nl/freenx/ ./
Operación que seguiremos del imprescindible:
# apt-get update
Los repositorios de FreeNX se muestran especialmente volátiles y desactualizados, por lo que es posible que éste tampoco dure demasiado.
La instalación y puesta en marcha de SSH representa el principal requisito previo. Por tanto, si no está instalado, es el momento de escribir:
# apt-get install ssh
Y, por supuesto también:
# apt-get install freenx
A mitad de esta instalación nos saltará la siguiente pantalla:


A los efectos de este tutorial seleccionaremos "NoMachine key", por ser la opción recomendada para facilitar la configuración, aunque para entornos de producción donde la seguridad es importante resulta mucho más recomendable utilizar "Custom Keys" (que nos obliga a copiar las claves a la máquina cliente), o al menos cambiar el puerto de escucha por defecto de SSH e incluso impedir el acceso remoto a root, es decir, las medidas habituales de protección frente a los ataques habituales contra este servicio.

2. Configuración

Una vez completada la instalación, podemos comprobar que el servidor está en efecto funcionando:

# nxserver --status 
 
NX> 100 NXSERVER - Version 1.5.0-60 OS (GPL)
NX> 110 NX Server is running 
NX> 999 Bye

CLIENTE


1. Instalación

Descargamos NX Client for Windows y procedemos a su instalación:
http://www.nomachine.com/download.php



2. Configuración








FUNCIONAMIENTO


Arrancamos NX Client y se nos solicita el nombre de usuario y password que configuramos antes, al crear nuestra sesión "debian":




Ya estamos dentro de Ubuntu, desde nuestra máquina remota con Windows XP, pudiendo trabajar exactamente igual que si estuviéramos sentados ante la máquina.

SERVIDOR SSH EN UBUNTU

Instalación

Vamos a usar OpenSSH por tanto vamos a instalarlo:
sudo apt-get install openssh-server
Ahora procedemos a su configuración.

Comandos que debemos tener en cuenta

Para editar la configuración del servidor SSH debemos hacer en consola:
sudo gedit /etc/ssh/sshd_config
Para arrancar el servidor:
sudo /etc/init.d/ssh start
* Starting OpenBSD Secure Shell server sshd
Para parar el servidor:
sudo /etc/init.d/ssh stop
* Stopping OpenBSD Secure Shell server sshd
Para reiniciar el servidor:
sudo /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd

Configuración del servidor

Una vez instalado, vamos a configurar el servidor, hacemos en consola:
sudo gedit /etc/ssh/sshd_config
Y podremos editar sus opciones:
# Package generated configuration file
# See the sshd_config(5) manpage for details
# Ponemos el puerto a escuchar por el SSH, por defecto es el 22. Deberemos abrir un puerto en nuestro router redirigiendo hacia la IP interna de la máquina donde lo tengamos.
Port 1234
# Usaremos el protocolo 2 de SSH, mucho más seguro, por tanto forzamos a que siempre conecten por protocolo 2.
Protocol 2
# HostKeys for protocol version 2. El lugar donde se guardan las keys.
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 2048
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication, importante la parte PermitRootLogin
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile    %h/.ssh/authorized_keys
# Don’t read the user’s ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don’t trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes
# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
#MaxStartups 10:30:60
#Banner /etc/issue.net
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
MaxAuthTries 2

Opciones adicionales de Seguridad

Podemos conectarnos al servidor sin usuario clave, utilizando un certificado RSA que proporcionará mucha más seguridad, pero como siempre que sucede en estos casos…es más incómodo y no siempre vas a llevar encima tu certificado...

Para ver los LOGS de conexión:
cd /var/log/
gedit auth.log

COMANDOS SSH

Comandos SSH Shell frecuentes

Este es un listado de los comandos SSH que se usan con más frecuencia. Los comandos se encuentran organizados por tema e incluyen una descripción breve para comprender como usarlos.

Comandos de navegación



  • pwd muestra el path completo del directorio en el que se encuentra

  • cd cambia de directorio, por ejemplo cd directorio/subdirectorio

  • cd ~ lleva a su directorio home

  • cd - lleva al último directorio en el que estuvo

  • cd .. sube a un directorio superior

  • Listado de archivos


  • ls lista archivos y directorios de un directorio

  • ls -al lista archivos y directorios e información sobre los mismos

  • ls -aR lista archivos e información incluyendo todos los subdirectorios

  • ls -aR | more lista archivos e información incluyendo todos los subdirectorios por pantallas

  • ls -alR > resultado.txt lista archivos e información de subdirectorios y lo guarda en un archivo

  • cat resultado.txt mostraría en pantalla el contenido del archivo

  • ls *.html lista todos los archivos acabados en .html

  • ls -al directorio/subdirectorio/ lista archivos e información de ese subdirectorio

  • Crear, editar o eliminar archivos y directorios


  • pico /home/usuario/public_html/index.html edita el archivo index.html con el editor pico

  • touch /home/usuario/public_html/404.html crea el archivo vacio 404.html en ese directorio

  • rm archivo.txt elimina archivo.txt

  • rm -rf directorio/ ¡CUIDADO! elimina el directorio indicado, los subdirectorios y todos sus archivos

  • mkdir descargas Crea un directorio llamado descargas

  • rmdir descargas Elimina el directorio llamado descargas

  • Compresión y descompresión de archivos


  • zip archivo.zip /home/usuario/public_html/directorio Comprimir directorio

  • unzip archivo.zip Descomprimir archivo.zip

  • unzip -v archivo.zip Ver contenido de archivo.zip

  • Otros comandos SSH



  • cp -a /home/usuario/public_html/origen/* /home/usuario/public_html/destino/

  • Copia todos los archivos de un directorio a otro manteniendo sus respectivos permisos
  • du -sh muestra es espacio total ocupado por el directorio en el que se encuentra

  • du -sh * muestra el espacio ocupado de cada archivo y directorio


  • lynx aemilius.net usar el navegador Lynx para acceder a www.aemilius.net

  • whoami muestra su nombre de usuario

  • PUTTY

    Configurar un acceso y conectar a un servidor SSH con PuTTY

    Para ejecutar PuTTY no es necesario instalarlo, se ejecuta directamente. También se puede crear un acceso directo al escritorio para futuras conexiones.
    1. Ejecutamos PuTTY
    2. En el menú de configuración seleccionamos la categoría Session
    3. Introducimos el nombre del dominio o IP en el campo Host Name y seleccionamos el protocolo SSH
    4. Introducimos un nombre para esta conexión en el campo Saved Sessions
    5. Volvemos al menú de configuración y seleccionamos la categoría SSH
    6. Hay que asegurarse de que está marcada la opción 2 en Preferred SSH protocol version

    7. Seleccionamos nuevamente la categoría Session
    8. Para guardar la configuración pulsamos Save y Open para conectar


    Configuración de acceso SSH

    Iniciar una sesión SSH usando  nombre de usuario y contraseña

    Al iniciar la conexión, se abrirá la ventana del terminal. Introducimos el  nombre de usuario y pulsamos Intro, después, introducimos la contraseña y pulsamos Intro. Si el nombre de usuario y password son correctos podremos iniciar la sesión SSH.
    Iniciar una sesión SSH usando su nombre de usuario y contraseña
    Cuando se realiza una conexión SSH por primera vez, el servidor entrega al cliente de SSH la clave pública del servidor. PuTTY nos alertará de ello y  ofrecerá la opción de aceptar la clave o rechazarla.
    Si aceptamos la clave, se almacenará en el registro y se utilizará para compararla con la que el servidor envíe en cada conexión. Si por algún motivo la clave cambia, PuTTY generará un nuevo aviso en el que se planteará la autenticidad de la clave recibida, ya que alguien podría estar haciéndose pasar por el servidor al que nos queremos conectar.

    Trabajando con PuTTY, funciones principales

    PuTTY es muy sencillo de utilizar, la mayor o menor complejidad a la hora de usarlo depende principalmente de los conocimientos que tengamos con los comandos SSH desde el terminal
    .
    El menú de sistema permite acceder a opciones bastante interesantes mientras se trabaja. Para mostrar el menú de sistema, haremos clic con el botón derecho sobre la barra de titulo de la ventana del terminal.

    Duplicate Session abre una nueva ventana de terminal basada en la conexión actual.
    Saved Sessions permite iniciar una nueva sesión basada en una conexión guardada con anterioridad.  
    Copy All to Clipboard copia en el portapapeles de Windows todo el texto impreso en la ventana del terminal.


    PuTTY permite copiar y pegar texto entre entre la ventana del términal y el portapapeles de Windows.

    Selección del algoritmo de encriptación

    PuTTY soporta una gran variedad de algoritmos de encriptación. Podemos definir el orden seleccionando el tipo de difrado en la sección Encryption options de la categoría SSH y haciendo clic sobre los botones Up y Down para indicar cual de ellos prefiere utilizar si el servidor al que estamos conectandso nos ofrece esa posibilidad.
    Actualmente PuTTY soporta los siguientes algoritmos:
    • AES (Rijndael) - 256, 192, or 128-bit CBC (solo para SSH-2)
    • Blowfish - 128-bit CBC
    • Triple-DES - 168-bit CBC
    • Single-DES - 56-bit CBC
    Para cerrar una sesión, no hay que cerrar PuTTY como cualquier otra aplicación(vamos, pinchando en la X de la esquina..).Mejor escribimos "Exit" y pulsamos intro.

    ALGUNAS COSILLAS CON SSH

    Utilización básica del cliente

    Utilizar el cliente es muy sencillo; nos basta con utilizar la orden:
    $ ssh -l user@<maquina>
    donde <maquina>  peude ser un nombre de host o bien una dirección IP.
    La opción -l nos permite indicar el usuario con el que queremos loguearnos en la máquina remota.
    Una vez conectado será como si estuviéramos físicamente en la máquina ya que tendremos un terminal qeu nos ofrecerá todo lo que pudiera tener el usuario como el que hemos entrado.

    Subir y bajar ficheros

    Para enviar y recibir ficheros usulizando ssh, tenemos varias opciones, como scp (Secure CoPy) o sftp (Secure FTP). Aquí veremos el uso de scp, ya que sftp tiene los mismos comandos que el protocolo ftp normal.

    Sintaxis de scp

    La sintaxis básica es la siguiente:
    scp <origen> <destino>
    donde <origen> y <destino>pueden ser un nombre de fichero, un directorio o un nombre de host (o ip) y nu directorio. Veamos algun ejemplo para ver como especificamos el nombre de host remoto:
    Para subir cosas de un pc a un host remoto la sintaxis seria:
    scp fichero1 <usuario>@<maquina>:<directorio>
    donde <usuario> es el usuario remoto, <maquina> el nombre de host o ip de la maquina remota, y <directorio> el directorio remoto donde queremos subirlo. Por ejemplo:
    $ scp fichero1 nacx@172.16.0.2:/home/nacx/
    Para bajar cosas de un host remoto a un PC la sintaxis seria:
    scp <usuario>@<maquina>:<directorio>/<fichero> <directorio_local>
    Así, por ejemplo, para descargar un fichero remoto al directorio local donde nos encontremos, haríamos algo asi:
    scp nacx@172.16.0.2:/home/nacx/fichero1 ./

    Resumiendo ficheros mediante rsync

    Hay veces en que no podemos terminar de bajar por completo un archivo grande entonces lo que hay que hacer es conectarnos via rsync, con la siguiente sintaxis:
    $ rsync -ve ssh -avz <usuario>@<maquina>:<direcotio>/<fichero> <directorio_local>
    nos conectamos via rsync, ssh a la máquina remota y descargamos el fichero.
    El fichero debe descargarse al directorio donde quedó incompleto para que pueda resumirse; si por alguna razon cancelamos la transferencia, se perdera lo que llevamos resumido. Antes de cerrar el la transferencia tenemos que hacer una copia: siempre que se esta resumiendo aparece como .fichero.bla, donde bla son caracteres raros:
    $ cp .fichero.bla fichero.back
    Una vez copiado, cancelamos el la transferencia; el .fichero.bla desaparecerá instantáneamete y nos quedara:
    fichero fichero.back
    fichero es el que descargamos con ssh pero incompleto, y fichero.back es el fichero incompleto mas los bytes que bajamos mientras resumía, asi que borramos fichero y solo nos quedaremos con fichero.back:
    $ mv fichero.back fichero
    Renombramos el fichero para que se pueda resumir con el mismo nombre que el fichero original.

    SSH EN UBUNTU

    Instalación de OpenSSH

    Algunas distribuciones traen instalado por defecto un cliente SSH, no obstante explicaremos como realizarla para un sistema Ubuntu.
    Instalando a través de terminal
    • Para instalar el cliente: sudo apt-get install openssh-client
    • Para instalar el servidor: sudo apt-get install openssh-server

    Primeros pasos con SSH

    • Para iniciar el servidor SSH: service ssh start
    • Para parar el servidor SSH: service ssh stop
    • Para reiniciar el servidor SSH: service ssh restart

    Conectándonos a un servidor remoto (Linux) desde un cliente (Linux)

    Primero descubramos qué dirección IP tenemos en el servidor. Para ello desde una ventana de terminal escribimos:
    ifconfig
    Nos aseguramos de que el servicio esté ejecutándose:
    service ssh start
    Y ahora podemos dirigirnos a nuestro cliente y establecer una conexión remota al equipo que ejerce de servidor. Basta con escribir la siguiente orden en la terminal:
    ssh usuario_remoto@host_remoto
    Dónde:
    • usuario_remoto – Será el nombre de usuario con el que queremos iniciar sesión. Debes tener en cuenta que si no está registrado en el equipo, no podrás iniciar sesión con él.
    • host_remoto – Es la dirección del equipo que ejerce como servidor. Ahí es donde pondremos la dirección IP que hemos obtenido antes.
    La primera vez que establezcas conexión el sistema nos pedirá confirmación, bastará con decir “yes” y una vez introducida la contraseña correcta para el usuario solicitado, nos encontraremos identificados en el equipo remoto.
    Los comandos, programas y scripts que lancemos tras conectarnos se ejecutarán en la máquina remota, utilizando los recursos de esta (CPU, memoria, disco, etc…).
    Recuerda que podrás hacer todo aquello que se contemple bajo los permisos que posea el usuario con el que hayas iniciado sesión.

    Establezcamos una conexión que nos permita ejecutar aplicaciones gráficas.

    Ahora que hemos visto cómo conectarnos y trabajar desde nuestra ventana de terminal, vamos a ir un poco más allá, y vamos a ejecutar aplicaciones gráficas.
    Un método bastante efectivo consiste en utilizar un túnel SSH para encapsular el protocolo X11, permitiendo transmitir la información de manera segura y sin crear conflictos con los cortafuegos.
    Pero para ello debemos configurar un par de parámetros en el fichero sshd_config:
    X11Forwarding    yes
    AllowTcpForwarding    yes
    Con X11Forwarding especificamos si se permite el reenvío por X11. El valor por defecto es ‘yes’. Desactivarlo en ningún momento ayudará a mejorar la seguridad del servidor.
    Y lo que intentamos conseguir activando dicha directiva es permitir ejecutar aplicaciones gráficas en el servidor remoto. Recordad que X es un sistema de ventanas creado para dotar de interfaz gráfica a los sistemas Unix.
    Por otro lado con AllowTcpForwarding especificamos si se permite el reenvío a través del protocolo TCP. Al igual que pasaba con X11, desactivarlo, en ningún momento proveerá mayor seguridad a nuestro servidor. Su valor por defecto es ‘yes’.
    Una vez hecho esto, ya podemos iniciar una sesión SSH y ejecutar aplicaciones gráficas. Para ello bastará con escribir en nuestra terminal:
    ssh -X -Y usuario_remoto@host_remota
    • -X (X11 forwarding)
    • -Y (X11 trusted forwarding)
    Ahora podremos ejecutar cualquier aplicación que se encuentre instalada en el servidor. Reproduzcamos una película con mplayer por ejemplo:
    mplayer nombre_película
    Recuerda que los recursos se tomarán del equipo donde te encuentres conectado.

    SSH

    SSH

    SSH (Secure SHell) es el nombre de un protocolo y del conjunto de herramientas que lo implementan. Este protocolo sirve para acceder a máquinas a través de una red, de forma similar a como se hacía con telnet o FTP. La diferencia principal es que SSH usa técnicas de cifrado para que ningún atacante pueda descubrir el usuario y contraseña de la conexión ni lo que se escribe durante toda la sesión. Al igual que telnet, sólo permite conexiones tipo terminal de texto, aunque puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X arrancado.
    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 de SSH (esto sólo si tenemos acceso como administrador a ambas máquinas).

    Reseña histórica

    La primera versión del protocolo y el programa eran libres y los creó un sueco llamado Tatu Ylönen, pero su licencia fue cambiando y terminó apareciendo la compañía `SSH Communications Security`, que lo ofrecía gratuitamente para uso doméstico y académico, pero exigía el pago a otras empresas.

    En el año 1997 (dos años después de que se creara la primera versión) se propuso como borrador en la IETF.

    A principios de 1999 se empezó a escribir una versión que se convertiría en la implementación libre por excelencia, la de OpenBSD, llamada OpenSSH, creadas ambas por Theo de Raadt

    SERVIDOR DHCP EN UBUNTU

    Instalar un servidor DHCP en Ubuntu

    Para instalar el servidor de asignacion automatica de direccion IP ejecutamos el comando:
    sudo apt-get install dhcp3-server
    Este sencillo paso instala el servidor en nuestro linux.

    Configurando el servidor DHCP

    En el caso de tener dos interfaces de red (NIC) en su servidor Linux se tiene que seleccionar cual se va a utilizar para escuchar las peticiones DHCP.  Para configurar el servicio, editamos el archivo /etc/default/dhcp3-server, y cambiamos INTERFACES=”eth0″  por la tarjeta de red interna.
    Es necesario hacer una copia de seguridad del archivo de configuracion:
    cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.back

    Configurar utilizando el metodo de rango de direcciones (IP pool)

    Editamos la configuracion tecleando:
    sudo vi /etc/dhcp3/dhcpd.conf
    Y en este archivo cambiamos las siguientes secciones
    default-lease-time 600;
    max-lease-time 7200;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.1.255;
    option routers 192.168.1.1;
    option domain-name-servers 192.168.1.9, 192.168.1.10;
    option domain-name “midominio.org”;
    subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.10 192.168.1.200;
    }
    Guardamos y salimos del archivo. El texto anterior configura el servidor DHCP con los siguientes parametros:
    • Asignacion a los clientes direcciones IPs del rango de 192.168.1.10 hasta 192.168.1.200
    • Prestara la direccion IP por un minimo de 600 segundos, y como maximo permitido de 7200 segundos.
    • Determina la mascara de subred a 255.255.255.0
    • Direccion de broadcast de 192.168.1.255
    • Como gateway/pasarela de red/router la direccion 192.168.1.1
    • Y los servidores 192.168.1.9 y 10 como sus servidores DNS

    Configurar utilizando el metodo de direcciones MAC

    Con este metodo se puede reservar algunas o todas las direcciones IP de nuestra red para determinadas maquinas. Como podran ver la configuracion es muy parecida a la anterior, con la salvedad que para reservar la asignacion de una IP a una determinada NIC (network card interface) debemos de utilizar la etiqueta host
    default-lease-time 600;
    max-lease-time 7200;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.1.255;
    option routers 192.168.1.1;
    option domain-name-servers 192.168.1.9, 192.168.1.10;
    option domain-name “midominio.org”;
    subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.10 192.168.1.200;
    }
    host oracle{
    hardware ethernet 00:03:47:31:e1:7f;
    fixed-address 192.168.1.20;
    }
    host printer {
    hardware ethernet 00:03:47:31:e1:b0;
    fixed-address 192.168.1.21;
    }
    Ahora reiniciamos el servidor dhcp ejecutando el siguiente comando:
    sudo /etc/init.d/dhcp3-server restart

    CLIENTE DHCP EN UBUNTU

    Configurar el cliente DHCP en Linux Ubuntu

    Si dean configurar un escritorio o maquina con linux como cliente DHCP seguimos los siguientes pasos:
    • Editamos el archivo de interfaces de red
    sudo vi /etc/network/interfaces
    • Debemos de tener las siguientes lineas, tomando en cuenta que eth0 es un ejemplo
    auto lo eth0
    iface eth0 inet dhcp
    iface lo inet loopback
    • Salvamos y salimos del archivo
    • Reiniciamos los servicios de red de Linux Ubuntu
    sudo /etc/init.d/networking restart
    Para poder conocer las direcciones asignadas a las maquinas clientes
    tail -n 15 /var/lib/dhcp3/dhclient.*.leases

    DHCP

    Dynamic Host Configuration Protocol (DHCP) es un servicio que permite a los ordenadores asignar automáticamente determinados parámetros de configuración de red. Los ordenadores cliente configurados a través de DHCP no tienen control sobre los parámetros que reciben del servidor, resultado en un proceso de instalación transparente.
    Por lo tanto, es lo más parecido a la configuración automática (plug-and-play) en IPv4, que es básico para simplificar las tareas de administración de la red, que tendría que hacerse manualmente. Por esto, es ampliamente utilizado en LAN domésticas, empresas, el proveedor de acceso a Internet, redes WiFi, universidades, etc.
    Los parámetros más comunes que un servidor DHCP para asignar a un cliente son:
    • Dirección IPy máscara
    • DNS
    • Router
    Si algún parámetro cambia en la configuración de la red, como por ejemplo la dirección del servidor DNS, basta con cambiar el parámetro en el servidor, en vez de tener que ir PC a PC modificándolo. Además, el conflicto de direcciones IP dentro de la red se reduce, ya que éstas se asignan dentro de un rango determinado de manera automática.
    El Dynamic Host Configuration Protocol (DHCP) está especificiado en el RFC 2131 . Fue diseñado en el año 1993 y complementa y mejora otros protocolos similares como RARP (Reverse ARP) y BOOTP.

    Funcionamiento


    El funcionamento DHCP se basa en la arquitectura cliente / servidor (como casi todos los servicios de Internet), por lo que debe ser un servidor DHCP (dhcpd) y el cliente DHCP para su funcionamiento. En el caso más simple es un servidor DHCP en la subred a la que el cliente solicite la asignación de dirección IP (y el resto de los parámetros de configuración). Si no existe un servidor DHCP de la subred se necesitará un agente (normalmente un router) que sabe la dirección del servidor DHCP.

    Como puedes ver a continuación, el protocolo funciona en cuatro pasos:

    • DHCP discover
    • DHCP offer
    • DHCP request
    • DHCP ACK
    dhcp
    DHCP puede configurarse para realizar la asignación de parámetros en los equipos de diferentes maneras. Por lo tanto, tres tipos de asignación:
    - Asignación manual. En este modo de funcionamiento se comporta como DHCP BOOTP. Se configuran parámetros manualmente en el servidor para cada equipo para Obtener una dirección IP (la misma), y cada vez que se conecta a la red equipos se le asignan estos parámetros automáticamente.
    - Asignación persistente. En este caso, la asignación es automática y cada vez que el equipo se conecta a la red recibe la misma dirección IP.
    - Dinámica de asignación (alquiler de la dirección). El cliente recibe la dirección IP del servidor durante un tiempo limitado, después de lo cual debe renovar su solicitud o la concesión caduca. Por lo tanto, una dirección pueden ser reutilizados por los distintos equipos en distintos momentos.
    Un caso típico del uso de DHCP es la Internet los proveedores de acceso, o ISP. Por ejemplo, si su ISP ofrece el servicio a 2.000 clientes y estima que nunca habrá más de 200 ordenadores conectados al mismo tiempo, en principio, ser capaces de prestar servicios en una red IP de clase C (254 direcciones) y el uso de DHCP con asignación dinámica.

    SERVIDOR DNS EN 2003 SERVER

    SERVIDOR DNS EN WINDOWS 2003 SERVER

    Para instalar un DNS Server vamos a Inicio > Panel de control > Agregar o quitar programas, una vez ejecutada esta opción aparece una ventana donde seleccionaremos de las opciones que aparecen a la izquierda, agregar o quitar componentes de Windows, buscamos en la ventana que nos aparece la opción servicios de red, la seleccionamos y pulsamos el botón detalles, de la nueva ventana que aparece seleccionamos la opción sistema de nombres de dominios (DNS), la seleccionamos y aceptamos todas las pantallas y pulsamos siguiente. Este proceso de instalación pedirá el CD de Windows debido a que necesita instalar varios componentes.
    Una vez terminado el proceso de instalación podemos acceder al DNS desde Inicio > herramientas administrativas > DNS, hacemos clic en DNS, a partir de ahora hay que configurarlo.
    Configuración del servidor DNS.
    Para configurar el DNS y que nos resuelva las IP en nombres lo primero que deberemos crear es una zona de búsqueda inversa. Para realizar esta acción nos pondremos sobre esta rama de la consola del DNS y con el botón derecho seleccionamos nueva zona, nos aparece un asistente donde asignaremos:
    1. Tipo de zona: Primaria
    2. Id. De red: Será nuestra IP, en mi caso y para los ejemplos 192.168.0.2
    Y las siguientes pantallas las dejamos tal y como las pone el asistente.
    Una vez creada la zona inversa tenemos que crear el nombre de domino que utilizaremos en nuestros webs. Para la realización del artículo he creado dos nombres fictícios “tudominio” y “simpson” que serán los que utilizaré en los ejemplos. Está demás decir, que se puede crear cualquier nombre que deseemos. Para instalar el servidor DNS en Internet, estos nombres deben de ser nombres de dominios reales. En Internet se debe poner los nombre con el .com, ,net, etc … y no sólo el nombre como en la intranet.
    Para crear los nombres de dominio damos clic con el botón derecho sobre zonas de búsqueda directa y seleccionamos nueva zona, aparece un asistente donde asignaremos:
    1. Tipo de zona: Zonal principal. La zona secundaria se utiliza para añadir dominios que ya tienen una zona principal creada en otro servidor DNS, de esta forma cuando creamos una zona secundaria todos los registros que tengamos en la zona principal se replicarán a ésta. Pero no es nuestro caso.
    2. Nombre de zona: Aquí ponemos nuestro nombre de dominio, por ejemplo, “tudominio”.
    Y las siguientes pantallas las dejamos como las pone el asistente.
    Para crear el segundo nombre de domino repetimos los pasos.
    Con ésto ya tenemos dado de alta nuestro nombre de dominio para la intranet ahora queda crear los nombres de los subdominos con los que crearemos la dirección web, es decir, accederemos a nuestro web a través de
    Nombre_Subdominio.Nombre_dominio
    Para crear los subdominos pulsamos sobre la nueva zona creada (barriosesamo) , y vemos que a la derecha nos aparecen los datos de este domino, pulsamos con el botón derecho sobre el nombre de dominio y seleccionamos #Host nuevo (A), ahí pondremos el nombre de subdominio, es el ejemplo “w1″, y la IP que tiene asignada, normalmente la de la maquina y lo añadimos, si ahora abrimos una consola (cmd.exe) y probamos hacer ping a w1.tudominio (nuestro dominio de intranet) que acabamos de crear veremos que nos responde afirmativamente . Si queremos crear más solo tenemos que repetir los pasos. Éstos serán los nombres que utilizaré para acceder a los webs de la siguiente forma:
    http://w1.tudominio
    Ahora queda enlazar estos dominios con el IIS, pasos que veremos a continuación.
    Un paso previo que hay que realizar antes de poner los dominios en el IIS es hacer accesible nuestro DNS a nuestro ordenador, es decir, en las opciones de red tenemos que poner nuestro DNS para que resuelva los nombres. Para realizar esta acción vamos a Inicio > panel de control > conexión de red > conexión de área local y pulsamos el boton propiedades de la ventana que aparece, seleccionamos Protocolo de Internet (TCP/IP) y donde pone Servidor DNS preferido ponemos la IP de nuestro DNS, que suele ser la IP de la máquina, en el ejemplo seria 192.168.0.2

    SERVIDOR DNS EN UBUNTU

    BIND (Berkeley Internet Name Server)

    BIND es el servidor DNS mas comúnmente implementado en Sistemas Operativos Linux, y actualmente el mas usando en Internet. Originalmente BIND nació a principios de los años 80 bajo el patrocinio de DARPA (Agencia de Investigación de Proyectos Avanzados de Defensa) agencia del Departamento de Defensa de los Estados Unidos, el cual fue desarrollado en la Universidad de California, Berkeley por cuatro estudiantes. A mediados de los años 80 su desarrollo paso a manos de los empleados de DEC (Digital Equipment Corporation, compañía que mas tarde seria adquirida por Compaq y esta a su vez comprada por HP) Paul Vixie,empleado de DEC continuó trabajando en BIND luego de desvincularse de DEC. Más adelante ayudaría a fundar la ISC (Internet Systems Consortium), la cual se convirtió en la responsable del mantenimiento de BIND. El desarrollo de BIND 9 fue realizado con el auspicio conjunto del área comercial y militar. La mayoría de las funcionalidades de BIND 9 fueron impulsadas por proveedores de UNIX quienes querían asegurar que BIND se mantuviera competente con la oferta de Microsoft en el sector de soluciones DNS. La versión mas actual de BIND, en particular la versión 9.0 fue reescrita desde cero, esto con el fin de reparar algunas de sus funcionalidades arquitectónicas de la misma (problemas en la programación de Bajo Nivel) que agrega características importantes como: TSIG, notificación DNS, nsupdate, IPv6, rndc flush, vistas, procesamiento en paralelo, y una arquitectura mejorada en cuanto a portabilidad.

    Proceso de instalación del servidor DNS


    Para instalar el servicio DNS Bind9, se puede abrir el gestor de paquetes Synaptic (Sistema > Administración) y buscar Bind9. A continuación, se selecciona la instalación pulsando el botón derecho sobre la línea del paquete Bind9 y luego se pulsa en Aplicar los cambios.
     
    Inicialmente lo haremos desde la consola o terminal:
    sudo apt-get update
    sudo apt-get upgrade
    apt-get install bind9 bind9-doc dnsutils
    El servicio DNS está compuesto por dos programas:

    El dominio named(demonio servidor): servidor de nombres de dominio que contiene la base de datos con información relativa a un segmento de la red y que responde a las peticiones.

    El resolver (cliente): genera las peticiones. Se trata de un conjunto de rutinas que permiten que los clientes accedan a los servidores de nombres para resolver la búsqueda de una dirección IP asociada a un nombre.

    Configuraciones previas que debe tener el servidor DNS

    Configurando el fichero /etc/hosts

    A este fichero deberemos agregar el nombre del equipo que desempeñara la función de servidor DNS asi como la dirección IP asignada a este equipo, al final este fichero deberá verse de una forma similar a esta.
    # Do not remove the following line, or various programs 
    # that require network functionality will fail. 
    127.0.0.1          localhost.localdomain localhost 
    192.168.1.10       dns1.tuDominio.com  dns1 
    ::1             localhost6.localdomain6 localhost6 
    Como ejemplo nosotros asignaremos al servidor DNS la dirección IP 192.168.1.10, usted deberá adecuar esta dirección IP según sea su caso. Configurando el fichero /etc/sysconfig/network A este fichero deberemos agregar igualmente el nombre del equipo que desempeñara la función de servidor DNS, al final este fichero deberá verse de una forma similar a esta. NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=dns1.tuDominio.com

    Configurando el fichero /etc/sysconfig/network-scripts/ifcfg-eth(N)

    A este fichero deberemos agregar igualmente el nombre del equipo que desempeñara la función de servidor DNS, al final este fichero deberá verse de una forma similar a esta. NOTA: La letra (N) indica el numero de la tarjeta de red sobre la cual escucha el DNS
    # nVidia Corporation MCP61 Ethernet 
    DEVICE=eth0 
    BOOTPROTO=dhcp 
    HWADDR=00:E0:4D:3F:C3:39 
    ONBOOT=yes 
    DHCP_HOSTNAME=dns1.tuDominio.com

    Ficheros de configuración del servidor DNS

    La configuración del servidor DNS dependerá en gran medida de los siguientes ficheros.
    /var/named/chroot/etc
    En esta ruta se deberá crear el fichero
    named.conf
    /var/named/chroot/var/named
    En esta ruta se crearan los ficheros de zona que serán invocados por named.conf

    Creación de los ficheros de zona

    Procederemos con la creación de nuestras zonas de dominio, para ello teclearemos en terminal lo siguiente:
    [BASH]# touch /var/named/chroot/var/named/tuDominio.com.zone
    [BASH]# touch /var/named/chroot/var/named/1.168.192.in-addr-arpa.zone
    Lo que hicimos fue crear dos ficheros vacíos a los cuales nombramos
    tuDominio.com.zone
    y
    1.168.192.in-addr-arpa.zone
    El siguiente paso ahora sera añadir las instrucciones para que puedan ser identificados como ficheros de zona y que a su vez puedan ser invocados por “named.conf”.
    Editando el fichero “tuDominio.com.zone”
    El siguiente paso sera editar el fichero “tuDominio.com.zone” al cual deberemos añadir el siguiente contenido.
    [BASH]# vi /var/named/chroot/var/named/tuDominio.com.zone
    ----------------------------------------------------------------------
    $TTL    86400 
    @       IN      SOA     dns1.tuDominio.com.com. admin.tuDominio.com. ( 
                    2008061001; Numero de Serie 
                    28800; Tiempo de Refresco 
                    7200; Tiempo de Reintentos 
                    604800; Expiracion 
                    86400; Tiempo Total de Vida 
                    ) 
    @       IN      NS      dns1
    @       IN      MX      10      correo 
    @       IN      A       192.168.1.10 
    dns1    IN      A       192.168.1.10
    correo  IN      A       192.168.1.11
    Los parámetros mas importantes del fichero anterior son descritos en la siguiente tabla:

    dns1La palabra dns1 se refiere al nombre del equipo que fungirá como servidor DNS, es este caso hacemos el supuesto que nuestro equipo tiene asignada la dirección IP 192.168.1.10
    adminEl nombre admin corresponde al usuario que administrara el servidor DNS.
    tuDominio.comÉste es nuestro dominio referencial con el que estamos trabajando,otros ejemplos de dominio son:
    * linuxparatodos.net
    * gmail.com
    PUNTO AL FINALRecuerde no olvidar poner el punto al final de las sentencias:
    dns1.tuDominio.com. <----------
    root.tuDominio.com. <----------
    correoEstamos haciendo el supuesto que ademas de un DNS contamos con un servidor de correo electrónico al cual hemos asignado la dirección Ip 192.168.1.11
    NS (Name Server)Asigna Nombre al DNS
    MX (Mail Exchanger)Registro de Mail Exchange, el cual indica a dónde debe ser dirigido el correo
    A (Address)Registro de dirección que especifica una dirección IP que se debe asignar a un nombre
    SOA (Start of Authority)Registro de recursos que declara información importante de autoridad relacionada con espacios de nombres al servidor de nombres

    Editando el fichero “1.168.192.in-addr.arpa.zone” A este fichero deberemos añadir el siguiente contenido.
    [BASH]# vi /var/named/chroot/var/named/ 1.168.192.in-addr.arpa.zone
    ------------------------------------------------------------------------
    $TTL    86400 
    @       IN      SOA     dns1.tuDominio.com. root.tuDominio.com. ( 
                    2008061002; Numero de Serie 
                    28800; Tiempo de Refresco 
                    7200; Tiempo de Reintentos 
                    604800; Expiracion 
                    86400; Tiempo Total de Vida 
                    ) 
    @       IN      NS      dns1.tuDominio.com. 
    10      IN      PTR     dns1.tuDominio.com. 
    El numero 10 hace referencia al ultimo octeto de la dirección IP asignada a nuestro DNS, nos referimos a la dirección IP 192.168.1.10. Por ejemplo si la dirección IP del servidor DNS fuera la 254.168.1.25, el numero que debiera ir colocado en la parte inferior de su izquierda debiera ser el numero [25]. Ejemplo:
    25      IN      PTR     dns1.tuDominio.com. 

    Creación y configuración del fichero “named.conf”

    Abra una terminal y genere el fichero “named.conf” dentro de la ruta “/var/named/chroot/etc/”
    [BASH]# touch /var/named/chroot/etc/named.conf
    Una vez creado asegúrese de agregarle los siguientes propietarios
    [BASH]# chown root:named named.conf
    Al terminar solo deberá añadir al fichero el siguiente contenido
    [BASH]# vi named.conf
    ----------------------------------------------------------------------
    options { 
     directory "/var/named/"; 
     dump-file "/var/named/data/cache_dump.db"; 
     statistics-file "/var/named/data/named_stats.txt"; 
     allow-recursion { 
      127.0.0.1; 
      192.168.1.0/24; 
     }; 
     forwarders { 
      200.33.146.209; 
      200.33.146.217; 
     }; 
     forward first; 
    }; 
    zone "." { 
     type hint; 
     file "named.ca"; 
    }; 
    zone "localhost" { 
     type master; 
     file "localhost.zone"; 
     allow-update { none; }; 
    }; 
    zone "tuDominio.com" { 
     type master; 
     file "tuDominio.com.zone"; 
     allow-update { none; }; 
    }; 
    zone "1.168.192.in-addr.arpa" { 
     type master; 
     file "1.1.192.in-addr.arpa.zone"; 
     allow-update { none; }; 
    }; 
    Los parámetros mas importantes del fichero anterior son descritos en la siguiente tabla
    zoneDefine las características de una zona, tal como la ubicación de su archivo de configuración y opciones especificas de la zona.
    "tuDominio.com"Aquí debe ir el nombre de nuestro dominio
    file "tuDominio.com.zone";Contiene los ficheros de configuración de tus zonas de tu dominio.
    allow-update{ none; }; Especifica los host que están autorizados para actualizar dinamicamente la información en sus zonas. Por defecto, no se autoriza la actualización dinámica de la información. Esto se logra añadiendo la palabra none.
    "1.168.192.in-addr.arpa"IP de resolución inversa. En este caso estamos usando nuestra IP referencial 192.168.1.10
    type master;Designa el servidor de nombres actual como el servidor autoritario para esa zona
    file "1.168.192.in-addr.arpa.zone";Contiene los ficheros de configuración de tus zonas de tu dominio.

    Iniciar , detener o reiniciar el servidor DNS

    Para iniciar el servidor FTP por primera vez solo deberá teclear en terminal el siguiente comando:
    [root@ localhost ~]# /etc/init.d/named start
    Igualmente existen opciones ya sea para reiniciar, detener, recargar o conocer el status en el que se encuentra el servidor DNS. Estas opciones pueden ser consultadas en la siguiente tabla:
    startInicia el servicio
    stopDetiene el servicio
    restartReinicia el servicio.-La diferencia con reload radica en que al ejecutar un restart este mata todos los procesos relacionado con el servicio y los vuelve a generar de nueva cuenta
    reloadRecarga el servicio.-La diferencia con restart radica en que al ejecutar un reload este solamente carga las actualizaciones hechas al fichero de configuración del servicio sin necesidad de matar los procesos relacionados con el mismo, por lo que podría entenderse que hace el cambio en caliente.
    condrestartReinicio Condicional.- Solamente se inicia si el servicio se encuentra ejecutándose.
    statusDa a conocer el estado en el que se encuentra el servicio
    Como alternativa también podemos ocupar el siguiente comando para iniciar el servidor FTP
    [root@ localhost ~]# service named start
    Y de igual manera podemos usar las opciones antes descritas en la tabla anterior. Recuerde que estos comandos se ejecutan como root. Para verificar que bind esta cargando las zonas, deberemos ejecutar el siguiente comando
    [BASH]#tail -80 /var/log/messages | grep named

    lunes, 1 de noviembre de 2010

    EL SERVICIO DNS. PRIMERAS NOCIONES

    DNS

    Cuando un cliente DNS necesita buscar un nombre que se utiliza en un programa, consulta los servidores DNS para resolver el nombre. Cada mensaje de consulta que envía el cliente contiene tres grupos de información, que especifican una pregunta que tiene que responder el servidor:
    • Un nombre de dominio DNS especificado, indicado como un nombre de dominio completo (FQDN)
    • Un tipo de consulta especificado, que puede establecer un registro de recursos por tipo o un tipo especializado de operación de consulta
    • Una clase especificada para el nombre de dominio DNS.
      Para servidores DNS de Windows, esto se debe especificar siempre como la clase Internet (IN).
    Por ejemplo, el nombre especificado puede ser el nombre completo de un equipo, como "host-a.ejemplo.microsoft.com.", y el tipo de consulta especificado para buscar un registro de recursos de dirección (A) por ese nombre. Considere una consulta DNS como una pregunta de un cliente a un servidor en dos partes, como "¿Tiene algún registro de recursos de dirección (A) de un equipo llamado 'nombrehost.ejemplo.microsoft.com'?". Cuando el cliente recibe una respuesta del servidor, lee e interpreta el registro de recursos A respondido, y aprende la dirección IP del equipo al que preguntó por el nombre.
    Las consultas DNS se resuelven de diferentes formas. A veces, un cliente responde a una consulta localmente mediante la información almacenada en la caché obtenida de una consulta anterior. El servidor DNS puede utilizar su propia caché de información de registros de recursos para responder a una consulta. Un servidor DNS también puede consultar o ponerse en contacto con otros servidores DNS en nombre del cliente solicitante para resolver el nombre por completo y, a continuación, enviar una respuesta al cliente. Este proceso se llama recursividad.
    Además, el mismo cliente puede intentar ponerse en contacto con servidores DNS adicionales para resolver un nombre. Cuando un cliente lo hace, utiliza consultas adicionales e independientes en función de respuestas de referencia de los servidores. Este proceso se llama iteración.
    En general, el proceso de consulta DNS se realiza en dos partes:
    • La consulta de un nombre comienza en un equipo cliente y se pasa al solucionador, el servicio Cliente DNS, para proceder a su resolución.
    • Cuando la consulta no se puede resolver localmente, se puede consultar a los servidores DNS según sea necesario para resolver el nombre.
    Estos dos procesos se detallan en las secciones siguientes.

    Parte 1: el solucionador local

    En la figura siguiente se muestra un resumen del proceso de consulta DNS completo.
    Funcionamiento de una consulta DNS Como se muestra en los pasos iniciales del proceso de consulta, en un programa del equipo local se utiliza un nombre de dominio DNS. A continuación, la solicitud se pasa al servicio Cliente DNS para proceder a su resolución mediante la información almacenada en la caché local. Si se puede resolver el nombre consultado, se responde a la consulta y el proceso finaliza.
    La caché del solucionador local puede incluir información de nombres obtenida de dos orígenes posibles:
    • Si un archivo Hosts está configurado localmente, las asignaciones de nombre a dirección de host de ese archivo se cargan previamente en la caché cuando se inicia el servicio Cliente DNS.
    • Los registros de recursos obtenidos en las respuestas de consultas DNS anteriores se agregan a la caché y se mantienen durante un período.
    Si la consulta no coincide con una entrada de la caché, el proceso de resolución continúa con la consulta del cliente al servidor DNS para resolver el nombre.

    Parte 2: consultar un servidor DNS

    Como se indicó en la figura anterior, el cliente consulta un servidor DNS preferido. El servidor real utilizado durante la parte de la consulta inicial cliente-servidor del proceso se selecciona de una lista global.
    Cuando el servidor DNS recibe una consulta, primero comprueba si puede responder la consulta con autoridad en función de la información de registro de recursos contenida en una zona configurada localmente en el servidor. Si el nombre consultado coincide con un registro de recursos correspondiente en la información de zona local, el servidor responde con autoridad y usa esta información para resolver el nombre consultado.
    Si no existe ninguna información de zona para el nombre consultado, a continuación el servidor comprueba si puede resolver el nombre mediante la información almacenada en la caché local de consultas anteriores. Si aquí se encuentra una coincidencia, el servidor responde con esta información. De nuevo, si el servidor preferido puede responder al cliente solicitante con una respuesta coincidente de su caché, finaliza la consulta.
    Si el nombre consultado no encuentra una respuesta coincidente en su servidor preferido, ya sea en su caché o en su información de zona, el proceso de consulta puede continuar y se usa la recursividad para resolver completamente el nombre. Esto implica la asistencia de otros servidores DNS para ayudar a resolver el nombre. De forma predeterminada, el servicio Cliente DNS solicita al servidor que utilice un proceso de recursividad para resolver completamente los nombres en nombre del cliente antes de devolver una respuesta. En la mayor parte de los casos, el servidor DNS se configura, de forma predeterminada, para admitir el proceso de recursividad como se muestra en el gráfico siguiente.
    Cómo funciona la recursividad Para que el servidor DNS realice la recursividad correctamente, primero necesita información de contacto útil acerca de los otros servidores DNS del espacio de nombres de dominio DNS. Esta información se proporciona en forma de sugerencias de raíz, una lista de los registros de recursos preliminares que puede utilizar el servicio DNS para localizar otros servidores DNS que tienen autoridad para la raíz del árbol del espacio de nombres de dominio DNS. Los servidores raíz tienen autoridad para el dominio raíz y los dominios de nivel superior en el árbol del espacio de nombres de dominio DNS. Para obtener más información, vea Actualizar sugerencias de raíz.
    Un servidor DNS puede completar el uso de la recursividad utilizando las sugerencias de raíz para encontrar los servidores raíz. En teoría, este proceso permite a un servidor DNS localizar los servidores que tienen autoridad para cualquier otro nombre de dominio DNS que se utiliza en cualquier nivel del árbol del espacio de nombres.
    Por ejemplo, piense en la posibilidad de usar el proceso de recursividad para localizar el nombre "host-b.ejemplo.microsoft.com." cuando el cliente consulte un único servidor DNS. El proceso ocurre cuando un servidor y un cliente DNS se inician y no tienen información almacenada en la caché local disponible para ayudar a resolver la consulta de un nombre. El servidor supone que el nombre consultado por el cliente es para un nombre de dominio del que el servidor no tiene conocimiento local, según sus zonas configuradas.
    Primero, el servidor preferido analiza el nombre completo y determina que necesita la ubicación del servidor con autoridad para el dominio de nivel superior, "com". A continuación, utiliza una consulta iterativa al servidor DNS "com" para obtener una referencia al servidor "microsoft.com". Después, desde el servidor "microsoft.com" se proporciona una respuesta de referencia al servidor DNS para "ejemplo.microsoft.com".
    Finalmente, se entra en contacto con el servidor "ejemplo.microsoft.com.". Ya que este servidor contiene el nombre consultado como parte de sus zonas configuradas, responde con autoridad al servidor original que inició la recursividad. Cuando el servidor original recibe la respuesta que indica que se obtuvo una respuesta con autoridad a la consulta solicitada, reenvía esta respuesta al cliente solicitante y se completa el proceso de consulta recursiva.
    Aunque el proceso de consulta recursiva puede usar muchos recursos cuando se realiza como se describe anteriormente, tiene algunas ventajas en el rendimiento para el servidor DNS. Por ejemplo, durante el proceso de recursividad, el servidor DNS que realiza la búsqueda recursiva obtiene información acerca del espacio de nombres de dominio DNS. Esta información se almacena en la caché del servidor y se puede utilizar de nuevo para ayudar a acelerar la obtención de respuestas a consultas subsiguientes que la utilizan o concuerdan con ella. Con el tiempo, esta información almacenada en caché puede crecer hasta ocupar una parte significativa de los recursos de memoria del servidor, aunque se limpia siempre que el servicio DNS se activa y desactiva.

    Respuestas de consultas alternativas

    En las afirmaciones anteriores acerca de las consultas DNS se supone que el proceso finaliza con una respuesta positiva devuelta al cliente. Sin embargo, las consultas también pueden devolver otras respuestas. Las más habituales son:
    • Una respuesta con autoridad
    • Una respuesta positiva
    • Una respuesta de referencia
    • Una respuesta negativa
    Una respuesta con autoridad es una respuesta positiva devuelta al cliente y entregada con el bit de autoridad activado en el mensaje DNS para indicar que la respuesta se obtuvo de un servidor con autoridad directa para el nombre consultado.
    Una respuesta positiva puede estar formada por el registro de recursos consultado o por una lista de registros de recursos (también llamada RRset) que se ajusta al nombre de dominio DNS consultado y el tipo de registro especificado en el mensaje de la consulta.
    Una respuesta de referencia contiene registros de recursos adicionales no especificados por el nombre o el tipo de la consulta. Si el proceso de recursividad no se admite, se devuelve al cliente este tipo de respuesta. Los registros deben actuar como respuestas de referencia útiles que el cliente puede utilizar para continuar la consulta mediante la iteración.
    Una respuesta de referencia contiene datos adicionales como registros de recursos (RR) distintos de los del tipo consultado. Por ejemplo, si el nombre de host consultado era "www" y no se encontró ningún registro de recursos de dirección (A) para este nombre en esta zona pero, en su lugar, se encontró un registro de recursos de CNAME para "www", el servidor DNS puede incluir esa información cuando responda al cliente.
    Si el cliente puede utilizar la iteración, puede hacer consultas adicionales con la información de referencia en un intento de resolver completamente el nombre por sí mismo.
    Una respuesta negativa del servidor puede indicar que se encontró uno de los dos resultados posibles mientras el servidor intentaba procesar y resolver de forma recursiva la consulta completamente y con autoridad:
    • Un servidor con autoridad informó de que el nombre consultado no existe en el espacio de nombres DNS.
    • Un servidor con autoridad informó de que el nombre consultado existe, pero no existen registros del tipo especificado para ese nombre.
    El solucionador devuelve el resultado de la consulta, en forma de respuesta positiva o negativa, al programa solicitante y almacena en caché la respuesta.


    • Si la respuesta resultante de una consulta es demasiado larga para poderla enviar y resolver en un sólo paquete de mensaje UDP, el servidor DNS puede iniciar una respuesta de conmutación por error a través del puerto 53 de TCP para responder al cliente completamente en una sesión conectada de TCP.
    • Generalmente, se deshabilita el uso de la recursividad en un servidor DNS cuando los clientes DNS se limitan a la resolución de nombres en un servidor DNS específico, como el que se encuentra en una intranet. También se puede deshabilitar la recursividad cuando el servidor DNS no puede resolver nombres DNS externos y se espera que los clientes conmuten por error a otro servidor DNS para la resolución de estos nombres.
      Puede deshabilitar el uso de la recursividad mediante la configuración de las propiedades Avanzadas en la consola DNS del servidor correspondiente. Para obtener más información, vea Deshabilitar la recursividad en el servidor DNS.
    • Si deshabilita la recursividad en el servidor DNS, no podrá utilizar reenviadores en el mismo servidor.
    • De forma predeterminada, los servidores DNS utilizan varios tiempos predeterminados cuando realizan una consulta recursiva y se ponen en contacto con otros servidores DNS. Son los siguientes:
      • Un intervalo de reintento de recursividad de tres segundos. Éste es el tiempo que espera el servicio DNS antes de reintentar una consulta realizada durante una búsqueda recursiva.
      • Un intervalo de tiempo de espera de recursividad de quince segundos. Se trata del tiempo que espera el servicio DNS antes de dar como errónea una búsqueda recursiva que se ha reintentado.
      En la mayor parte de los casos, no es necesario ajustar estos parámetros. Sin embargo, si utiliza búsquedas recursivas en un vínculo WAN de baja velocidad, es posible que pueda mejorar el rendimiento del servidor y la resolución de la consulta realizando pequeños ajustes en estos valores.

    Cómo funciona la iteración

    La iteración es el tipo de resolución de nombres que se utiliza entre clientes y servidores DNS cuando se dan las condiciones siguientes:
    • El cliente solicita el uso de la recursividad, pero ésta se encuentra deshabilitada en el servidor DNS.
    • El cliente no solicita el uso de la recursividad cuando consulta el servidor DNS.
    Una solicitud iterativa de un cliente informa al servidor DNS de que el cliente espera la mejor respuesta que el servidor DNS pueda proporcionar inmediatamente, sin entrar en contacto con otros servidores DNS.
    Cuando se utiliza la iteración, un servidor DNS responde al cliente en función de su propio conocimiento específico acerca del espacio de nombres, sin tener en cuenta los datos de los nombres que se están consultando. Por ejemplo, si un servidor DNS de una intranet recibe una consulta de un cliente local para "www.microsoft.com", es posible que devuelva una respuesta de su caché de nombres. Si el nombre consultado no está almacenado actualmente en la caché de nombres del servidor, puede que, para responder, el servidor proporcione una referencia, es decir, una lista de registros de recursos de dirección (A) y de servidor de nombres (NS) para otros servidores DNS que estén más cerca del nombre consultado por el cliente.
    Cuando se proporciona una referencia, el cliente DNS asume la responsabilidad de continuar efectuando consultas iterativas a otros servidores DNS configurados para resolver el nombre. Por ejemplo, en el caso más complicado, el cliente DNS puede expandir su búsqueda a los servidores de dominio raíz en Internet en un esfuerzo por localizar los servidores DNS que tienen autoridad para el dominio "com". Una vez en contacto con los servidores raíz de Internet, puede recibir más respuestas iterativas de estos servidores DNS que señalan a los servidores DNS de Internet reales para el dominio "microsoft.com". Cuando se proporcionan registros de estos servidores DNS al cliente, éste puede enviar otra consulta iterativa a los servidores DNS externos de Microsoft en Internet, que pueden responder con una respuesta definitiva y con autoridad.
    Cuando se utiliza la iteración, un servidor DNS puede ayudar en la resolución de la consulta de un nombre además de devolver su mejor respuesta propia al cliente. En la mayor parte de las consultas iterativas, un cliente utiliza su lista de servidores DNS configurada localmente para entrar en contacto con otros servidores de nombres a través del espacio de nombres DNS si su servidor DNS principal no puede resolver la consulta.

    Cómo funciona el almacenamiento en caché

    Cuando los servidores DNS procesan las consultas de los clientes mediante la recursividad o la iteración, descubren y adquieren un almacén significativo de información acerca del espacio de nombres DNS. A continuación, el servidor almacena en caché esta información.
    El almacenamiento en caché aumenta el rendimiento de la resolución DNS para las consultas subsiguientes de nombres muy utilizados, al tiempo que reduce sustancialmente el tráfico de las consultas relativas a DNS en la red.
    Cuando los servidores DNS realizan consultas recursivas en nombre de clientes, almacenan temporalmente en caché los registros de recursos. Los registros de recursos almacenados en caché contienen información obtenida de los servidores DNS que tienen autoridad para los nombres de dominio DNS aprendidos durante las consultas iterativas para buscar y responder por completo una consulta recursiva realizada en nombre de un cliente. Posteriormente, cuando otros clientes realizan consultas nuevas que solicitan información de un registro de recursos que coincide con los registros de recursos almacenados en la caché, el servidor DNS puede utilizar la información de registro de recursos almacenada en la caché para responderlas.
    Cuando la información se almacena en la caché, se aplica el valor Tiempo de vida (TTL) a todos los registros de recursos almacenados en la caché. Mientras el tiempo de vida de un registro de recursos almacenado en la caché no caduque, un servidor DNS puede seguir almacenando el registro de recursos en la caché y utilizándolo de nuevo al responder a consultas de sus clientes que coincidan con estos registros de recursos. Al valor de los TTL del almacenamiento en caché usados por los registros de recursos en la mayor parte de las configuraciones de zona se le asigna el TTL mínimo (predeterminado) que se utiliza en el registro de recursos de inicio de autoridad (SOA) de la zona. De forma predeterminada, el tiempo de vida mínimo es de 3.600 segundos (1 hora), pero se puede ajustar o, si es necesario, se pueden establecer tiempos de vida individuales de almacenamiento en caché para cada registro de recursos.

    Zonas de Autoridad

    Las zonas de autoridad contienen las características sobre las cuales nuestro dominio actuara, en ella se configuran los aspectos importantes así como las opciones especificas de cada zona, estas configuraciones hechas a las zonas son cargadas desde el servidor maestro. La información de cada Zona de Autoridad es almacenada de forma local en un fichero en el Servidor DNS. Este fichero puede incluir varios tipos de registros como pueden ser:
    CNAMECanonical Name – (Nombre Canónico) Se usa para crear nombres de hosts adicionales, o alias, para los hosts de un dominio.
    AAddress – (Dirección) Este registro se usa para traducir nombres de hosts a direcciones IP.
    NSName Server – (Servidor de Nombres) Define la asociación que existe entre un nombre de dominio y los servidores de nombres que almacenan la información de dicho dominio. Cada dominio se puede asociar a una cantidad cualquiera de servidores de nombres.
    MXMail Exchange – (Intercambiador de Correo) Define el lugar donde se aloja el correo que recibe el dominio.
    PTRPointer – (Indicador) También conocido como 'registro inverso', funciona a la inversa del registro A, traduciendo IPs en nombres de dominio.
    SOAStart of authority – (Autoridad de la zona) Proporciona información sobre la zona.
    HINFOHost Information – (Información del sistema informático) Descripción del host, permite que la gente conozca el tipo de máquina y sistema operativo al que corresponde un dominio.
    TXTText - ( Información textual) Permite a los dominios identificarse de modos arbitrarios.
    LOCLocalización - Permite indicar las coordenadas del dominio.
    WKSGeneralización del registro MX para indicar los servicios que ofrece el dominio. Obsoleto en favor de SRV.
    SRV Servicios - Permite indicar los servicios que ofrece el dominio.