Indicadores de Logros
- Puede configurar talk, finger, ftp y telnet en cada computador de la red.
- Puede configurar un servidor DNS y usarlo en los clientes.
- Puede distribuir utilización de discos duros usando NFS, de acuerdo a las sugerencias de la plataforma de referencia.
- Puede instalar y configurar el servicios NIS en la plataforma de referencia S-Helio 1.1.
- Configura el servicio de correo de acuerdo a la plataforma de referencia.
- Configura el servicio de ssh de acuerdo a la plataforma de referencia.
- Configura el servicio de CVS de acuerdo a la plataforma de referencia.
- Configura el servicio de ftp de acuerdo a la plataforma de referencia.
- Configura el servicio de web de acuerdo a la plataforma de referencia.
- Configura una impresora en red.
- Puede instalar y configurar el servidor Apache en la plataforma de referencia.
Cómo se presentó en la lectura de la sección
Redes, protocolos e Internet∞ cada servicio que su sistema ofrezca requiere un proceso
daemon que esté pendiente de atender conexiones. Para disminuir el número de procesos que deberían estar activos esperando conexiones por cada servicio, el programa inetd que se inicia durante el arranque de su sistema (con
/etc/init.d/inetd, ver
Inicialización del sistema∞) espera conexiones en diversos puertos y cuando recibe una inicia el
daemon apropiado.
Nombre que recibe un proceso que actua como servidor de un protocolo y espera conexiones de clientes.
Este programa atiende diversos puertos TCP/IP y ejecuta el daemon apropiado.
inetd se configura en el archivo
/etc/inetd.conf que puede referenciar servicios por nombres si estos están listados en
/etc/services o en
/etc/rpc y protocolos listados en
/etc/protocols. Debian inlcuye versiones de estos archivos listas para servir
telnet,
talk,
finger, hora local y correo (
smtp).
Archivo de configuración de
inetd
Cada línea del archivo
/etc/inetd.conf puede ser un comentario (si comienza con el caracter "#") o puede ser análoga a:
smtp stream tcp nowait mail /usr/sbin/exim exim -bs que indica que el servicio
smtp, se maneja con conexiones[1] tipo
stream del protocolo
tcp, sin espera. Cada vez que haya una conexión para este servicio se iniciará el programa
/usr/sbin/exim con argumentos[2]
exim -bs desde la cuenta
mail. Otras posibilidades para cada parte son:
servicio
El servicio es uno de los especificados en
/etc/services o puede ser una dirección precedida por un puerto, o uno de los servicios RPC especificados en
/etc/rpc.
Tipo de conexión
stream,
dgram para datagramas,
raw para conexiones puras,
rdm para
reliable delivered messages o
seqpacket para paquetes secuenciados.
Protocolo
Debe ser uno de los disponibles en el archivo
/etc/protocols, por ejemplo
tcp o
udp.
Espera
Puede ser
wait o
nowait, indica si
inetd debe esperar a que el proceso termine para recibir nuevas conexiones en el mismo puerto o no. Esto depende del tipo de servicio, la mayoría no requiere espera (porque emplean varios hilos [3] que emplean otro puerto por cada conexión), aunque son excepciones
talkd,
biff y
tftp. Después de
wait o
nowait puede venir separado por un punto el máximo número de conexiones que inetd debe aceptar para el servicio en 1 minuto (por defecto 256).
Usuario
Usuario a nombre del cual se iniciará el proceso.
||
Aviso ||
|| Por seguridad, es recomendable ejecutar
daemons desde cuentas diferentes a root ||
Puede especificarse un grupo primario poniendolo a continuación del nombre separado por el caracter "."
Programa
Ruta del programa que atenderá la conexión. Si se trata de un servicio interno se usa
internal. Los servicios internos son
echo que responde con los mensajes que recibe (útil para medir y probar como se especifica en el RFC 862);
discard que descarta todo dato que recibe (también útil para probar y medir como se describe en el RFC 863);
chargen definido en el RFC 864 responde generando caracteres hasta que la conexión sea cerrada;
daytime que de acuerdo al RFC 867 informa fecha y hora en formato entendible para humanos
time hora actual en formato para máquinas de acuerdo al RFC 868.
El archivo
/etc/inetd.conf, en una LAN como la especificada en nuestra plataforma de referencia (sin conexión a Internet) incluye:
telnet stream tcp nowait telnetd.telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
talk dgram udp wait nobody.tty /usr/sbin/tcpd /usr/sbin/in.talkd
finger stream tcp nowait nobody /usr/sbin/tcpd /usr/sbin/in.fingerd
smtp stream tcp nowait mail /usr/sbin/exim exim -bs
Después de modificar este archivo puede reiniciar
inetd, tal como haría con otros servicios que se inician al arranque del sistema (ver
Inicialización del sistema∞):
/etc/init.d/inetd restart
o envíando la señal SIGHUP al proceso. (ver
Señales∞).
En este archivo se configuran las máquinas a las que
tcpd no les da acceso.
Note que la ejecución de
telnet,
finger y
talk se hace con el programa
tcpd. Este programa puede manejar conexiones de diversos servicios, registrar las conexiones en la bitácora y agregar un mínimo de seguridad incluyendo listas de control configurables en los archivos
hosts.allow y
hosts.deny. En estos archivos se configuran con patrones los servicios, computadores y/o usuarios pueden iniciar conexiones, y los que no. Cuando recibe una solicitud de conexión
tcpd primero lee los patrones de
/etc/hosts.allow si ninguno concuerda con la conexión intenta con los de
/etc/hosts.deny y si ninguno concuerda permite la conexión. Para permitir acceso a estos servicios sólo a computadores en la red privada
/etc/hosts.deny podría ser:
ALL: ALL
y
/etc/hosts.allow:
ALL: 192.168.0.0/255.255.0.0
Con este protocolo de soporte pueden asociarse a direcciones IP nombres dentro de un árbol de nombres.
DNS permite asociar nombres a direcciones IP, esto es importante para facilitarnos la identificación de computadores en una red.
Como se describe en el RFC 1034, DNS puede verse desde 3 puntos de vista:
Usuario
Un usuario emplea nombres de dominios DNS al solicitar conexiones con máquinas cuyos nombres describen posiciones en un árbol de nombres. Por ejemplo
structio.sourceforge.net.
Resolvedor de nombres
Los programas emplean un resolvedor de nombres. Este resolvedor recibe nombres con la estructura antes descrita, busca en un depósito [4] de nombres, de requerirlo trata de conectarse con uno o más servidores de nombres que puedan responder la consulta, envia la consulta y analiza la respuesta.
Se trata de uno de los componentes del servicio DNS, que recibe consultas de programas y trata de resolverlas acudiendo a un deposito de nombres local o contactando servidores.
Servidor de nombres
Un servidor de nombres, es un programa que además de atender solicitudes de resolvedores, mantiene tablas donde asocia nombres con direcciones IP de algunas zonas del árbol de nombres. También mantiene direcciones de otros servidores de nombres que puede emplear para actualizar las tablas de las zonas que mantiene y para obtener información de otras zonas.
Los nombres son independientes de las IPs, estos conforman un árbol dividido en zonas manejadas por diversos servidores de nombres distribuidos en todo el mundo y conectados a Internet [5], la raíz de este árbol se denota con el carácter '.'. Un nombre se compone de partes separadas por el caracter '.', cada parte se compone de letras mayúsculas o minúsculas sin distinción (preferiblemente menos de 12), eventualmente números y eventualmente guiones. Las partes del nombre indican la ruta entre el nodo y la raíz, de forma análoga a la ruta de un archivo del sistema de archivos, sólo que un nombre DNS completo comienza por la parte que corresponde a la hoja y termina en la parte que corresponde a un hijo de la raíz. Por ejemplo en la dirección
structio.sourceforge.net la parte
net es un nodo descendiente de la raíz del árbol de nombres. A la parte descendiente de la raiz se le llama dominio de nivel superior (TLD -
Top Level Domain) y puede ser dos letras que identifiquen uno de los 244 paises registrados de acuerdo a ISO 3166 (por ejemplo .co en el caso de Colombia) o por ejemplo una de las siguientes:
.aero
Industria de transporte aéreo
.biz
Miscelánea
.com
Comercial
.coop
Cooperativas
.edu
Educativo
.gov
Gubernamental de EUA
.info
Información
.int
Organizaciones internacionales
.mil
Militar de EUA
.museum
Museos
.name
Individuos
.net
Redes
.org
Organizaciones
El resolvedor de nombre es un conjunto de funciones, que los diferentes programas emplean cuando requieren determinar la IP asociado con un nombre (resolución de nombres) o el nombre asociado con una IP (resolución inversa).
Puede emplear el resolvedor de nombres desde la línea de comandos, por ejemplo con el programa
dig (incluido en el paquete
dnsutils). Algunos de sus usos se ejemplifican a continuación:
dig structio.sourceforge.net
Consulta todos los registros disponibles para el nombre structio.sourceforge.net usando el servidor configurado en
/etc/resolv.conf
dig @ns1.valinux.com structio.sourceforge.net
La misma consulta anterior pero en el servidor de nombres
ns1.valinux.com (usa el resolvedor local para determinar la IP de ese servidor)
dig structio.sourceforge.net txt
Busca sólo registros tipo T_TXT, es decir con texto arbitrario. Otras posibilidades son a (T_A) dirección; any (T_ANY) todo tipo de información; mx (T_MX) intercambiadores de correo; ns (T_NS) servidores de nombres; soa (T_SOA) zona de autoridad; hinfo (T_HINFO) información de la máquina; axfr (T_AXFR) zona de transferencia.
dig -x 192.25.206.10
Para especificar resolución inversa. También podría emplearse
dig 10.206.25.192.in-addr.arpa
En Internet puede consultarse información sobre el registro de un dominio (incluyendo datos de quien lo registro) empleando
whois, o información sobre el nombre de máquina y dominio del computador que usa con
hostname (ver
Comandos y programas útiles al hacer scripts∞).
Archivo de configuración del resolvedor de nombres, donde pueden especificarse direcciones IP de servidores DNS.
El resolvedor de nombres incluido en Debian puede resolver nombres empleando el archivo
/etc/hosts, servidores de nombres o NIS. Se configura en los archivos
/etc/resolv.conf,
/etc/host.conf y si se usa NIS también en
/etc/nsswitch.conf. El primero (
/etc/resolv.conf) contiene direcciones de servidores de nombres y configuración para buscar en ellos. Por ejemplo en nuestra plataforma de referencia si el servidor tiene IP 192.168.1.1 y en este se configura un servidor de nombres, en todos los computadores de la red el archivo
/etc/resolv.conf debe incluir:
search micolegio.edu.co
nameserver 192.168.1.1
Si conectará su sistema a Internet podría incluir más servidores de nombres especificando cada uno con líneas iniciadas con la palabra
nameserver (podría especificarlos a continuación de su propio servidor para que la información de su servidor tenga prelación dentro de la LAN). La línea
search indica dominios con los cuales completar direcciones (por ejemplo
purpura será completado como
purpura.micolegio.edu.co). El archivo
/etc/host.conf de todos los computadores puede ser:
order hosts,bind
multi on
que indica en la primera línea el orden para resolver nombres, en este caso como
hosts está primero, resolverá nombres primero revisando el archivo
/etc/hosts y en segundo lugar empleará los servidores de nombres configurados en
/etc/resolv.conf (también podría especificarse
nis en caso de que se resolvieran dominios usando NIS). La línea
multi on indica que el resolvedor debe retornar todas las direcciones IP que pueda encontrar para un nombre en el archivo
/etc/hosts y no sólo la primera (útil en una red
multihomed con varios IPs para una misma máquina). Cómo en nuestra plataforma de referencia empleamos DNS para resolver nombres de dominios, el archivo de configuración de NIS (
/etc/nsswitch.conf) debe incluir la línea (ver
Servicio NIS∞):
hosts: files dns
que de forma análoga a las líneas en
/etc/hosts.conf indica buscar primero en
/etc/hosts y después usar los servidores de nombres DNS.
Los resultados de las consultas que un resolvedor de nombres hace a un servidor de nombres, son registros de recursos (RR del inglés
Resource Records). Este mismo tipo de registros se usa para configurar un servidor de nombres. Un ejemplo es:
servidor.micolegio.edu.co. IN A 192.168.1.1
A 128.9.0.32
micolegio.edu.co. MX 10 servidor.micolegio.edu.co
que describe información de nombres Internet (indicado por la sigla
IN de la primera línea y asumida por defecto en las demas). Las dos primeras líneas son tipo dirección (el tipo
A --de
Address-- lo indica), mientras que la tercera identifica un intercambiador de correo para el dominio
micolegio.edu.co (tipo
MX --de
Mail Exchange). Los dos primeros registros presentan información sobre servidor.micolegio.edu.co, la ausencia de otro nombre al comienzo de la segunda línea indica que es una segunda dirección para servidor.micolegio.edu.co. Los registros tipo dirección permiten asociar una IP con un nombre, así en el ejemplo anterior el nombre servidor.micolegio.edu.co se referirá a dos direcciones IP. Los registros tipo
MX identifican computadores que pueden resolver direcciones de correo para un dominio, cada uno con un valor de preferencia (empleando para determinar que servidor se emplea primero si hay varios intercambiadores de correo para un mismo dominio). Note que los nombres de dominios completos terminan con un punto, esto es un requerimiento propio de la configuración como se explica más adelante.
Los registros DNS de este tipo permiten identificar computadores que pueden resolver direcciones de correo para un dominio (es la abreviación de Mail exchanger).
Otros tipos pueden ser:
CNAME que identifica el nombre principal de un alias,
HINFO que identifica CPU y sistema operativo de un computador,
NS que marca un servidor de nombres autoritario para un dominio (autoritario quiere decir que su respuesta es la que se considera más acertada en caso de que otros servidores den otras respuestas);
PTR para referenciar otra parte del espacio de nombres de dominio;
SOA (
start of authority) para marcar el comienzo de una zona de autoridad.
Los registros DNS de tipo PTR permiten hacer resolución inversa, toda dirección IP debe especificarse invertida y terminar con el postfijo ...
Además de asociar nombres a IPs, pueden asociarse IPs a nombres para permitir hacer resolución inversa (dada la IP encontrar el nombre). Para lograrlo se emplean registrros PTR, usando como nombre de máquina la IP tras invertir el orden de los 4 bytes que la conforman y seguida de IN-ADDR.ARPA. Por ejemplo:
1.2.168.192.IN-ADDR.ARPA. IN PTR servidor.micolegio.edu.co