You are on page 1of 406

LINUX

Mayo 2004

TESIS DE LINUX
Moiss
Mayo 2004

LINUX

Mayo 2004

OBJETIVOS
Brindar una visin mas amplia del sistema operativo Linux.
Conocer cuales son las ventajas y desventajas que implica su uso.
Desarrollar el procedimiento de configuracin e instalacin del sistema
operativo y algunas utilidades.

JUSTIFICACIN
Como sabemos en la actualidad la conexin de ordenadores para formar una red
local viene siendo habitual para pequeas instalaciones o para grandes empresas
que necesitan intercomunicar sus redes locales utilizando lneas telefnicas o el
Internet por lo cual esto implica hablar de Linux; por supuesto este no es el nico
sistema operativo con capacidad para la administracin o creacin de redes pero
durante muchos aos esta ha sido una de las mejores opciones y seguramente lo
seguir siendo durante mucho tiempo.
Tambin podemos decir que gracias a que Linux es un software libre permite el
crecimiento de las redes y creacin de nuevas implementaciones sin ningn
costo.

LINUX

Mayo 2004

Captulo 1
Conceptos Generales
El desarrollo de sistemas operativos tiene como objetivo el proporcionar una
opcin que se adecue a las necesidades del individuo o empresa. El saber como
funciona, sus ventajas y desventajas ayuda e induce a estar en constante
actualizacin en relacin a las innovaciones que el mismo ser humano desarrolla
para facilitar el trabajo. As mismo el conocer los conceptos fundamentales de
cualquier tpico ayuda a comprender el funcionamiento de cualquier proceso,
sistema o programa.
1.1 Sistemas Operativos
El sistema operativo es el instrumento indispensable para hacer de la computadora
un objeto til. Bajo este nombre se agrupan todos aquellos programas que
permiten a los usuarios la utilizacin de hardware, que de otra manera serian
difciles de controlar. Un sistema operativo se define

como un conjunto de

procedimientos manuales y automticos, que permiten a un grupo de usuarios


compartir

una instalacin de computadora eficazmente, es el encargado de

brindar al usuario una forma amigable y sencilla de operar , interpretar, codificar y


emitir las ordenes al procesador

central para que este realice

las tareas

necesarias y especificas para completar una orden, adems es en si mismo un


programa de computadora. Sin embargo, es un programa muy especial, quiz el
mas complejo e importante en una computadora. El sistema operativo despierta a
la computadora y hace que reconozca al CPU, la memoria, el teclado, el sistema
de video y las unidades de disco . Adems proporciona la facilidad para que los
usuarios se comuniquen con la computadora y sirve de plataforma a partir de la
cual se corran programas de aplicacin.
Cuando se prende una computadora, lo primero que esta hace es llevar a cabo un
autodiagnstico llamado auto prueba de encendido (Power On Self Test., POST).
Durante la POST, la computadora identifica su memoria, sus discos, su teclado, su
3

LINUX

Mayo 2004

sistema de video y cualquier otro dispositivo conectado a ella. Lo siguiente que la


computadora hace es buscar un SO para arrancar (boot).
Estas son algunas de las funciones que el sistema operativo desempea en una
computadora:
Interpreta los comandos que permiten al usuario comunicarse con la
computadora.
Coordina y manipula el hardware de la computadora, como la memoria, las
impresoras, las unidades de disco, el teclado o el mouse.
Organiza los archivos en diversos dispositivos de almacenamiento, como
discos flexibles, discos duros, discos compactos o cintas magnticas.
Gestiona los errores de hardware y la perdida de datos.
Servir de base para la creacin del software

logrando que equipos de

marcas distintas funcionen de manera anloga, salvando las diferencias


existentes entre ambos.
Configura el entorno para el uso del software y los perifricos dependiendo
del tipo de maquina que se emplea, debe establecerse en forma lgica la
disposicin

y caractersticas del equipo. Como por ejemplo,

una

microcomputadora tiene fsicamente dos unidades de disco, puede simular


el uso de otras unidades de disco, que pueden ser virtuales utilizando
parte de la memoria principal para tal fin. En caso de estar conectado a
una red, el sistema operativo se convierte en la plataforma de trabajo de los
usuarios y este quien controla los elementos o recursos que comparten.
De igual forma provee de proteccin a la informacin que almacena.

LINUX

Mayo 2004

1.2 Sistema Operativo Linux


LINUX es un sistema operativo, compatible Unix. Dos caractersticas muy
peculiares lo diferencian del resto de los sistemas que podemos encontrar en el
mercado, la primera, es que es libre, esto significa que no tenemos que pagar
ningn tipo de licencia a ninguna casa desarrolladora de software por el uso del
mismo, la segunda, es que el sistema viene acompaado del cdigo fuente. El
sistema lo forman el ncleo del sistema (kernel) mas un gran numero de
programas / libreras que hacen posible su utilizacin.
LINUX se distribuye bajo la GNU Public License: Ingles , por lo tanto, el cdigo
fuente tiene que estar siempre accesible.
El sistema ha sido diseado y programado por multitud de programadores
alrededor del mundo. El ncleo del sistema sigue en continuo desarrollo bajo la
coordinacin de Linus Torvalds, la persona de la que parti la idea de este
proyecto, a principios de la dcada de los noventa.
Da a da, mas y mas programas / aplicaciones estn disponibles para este
sistema, y la calidad de los mismos aumenta de versin a versin. La gran mayora
de los mismos vienen acompaados del cdigo fuente y se distribuyen
gratuitamente bajo los trminos de licencia de la GNU Public License.
En los ltimos tiempos, ciertas casas de software comercial han empezado a
distribuir sus productos para Linux y la presencia del mismo en empresas aumenta
rpidamente por la excelente relacin calidad-precio que se consigue con Linux.
Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-.
Pentium, Pentium Pro, Pentium II/III/IV, Amiga y Atari, tambin existen versiones
para su utilizacin en otras plataformas, como Alpha, ARM, MIPS, PowerPC y
SPARC.

LINUX

Mayo 2004

1.2.2 Caractersticas Principales De Linux


Multitarea: La palabra multitarea describe la habilidad de ejecutar varios
programas al mismo tiempo.
LINUX utiliza la llamada multitarea preventiva, la cual asegura que todos los
programas que se estn utilizando en un momento dado sern ejecutados,
siendo

el

sistema

operativo

el

encargado

de

ceder

tiempo

de

microprocesador a cada programa.


Multiusuario: Muchos usuarios usando la misma maquina al mismo tiempo.
Multiplataforma: Las plataformas en las que en un principio se puede utilizar
Linux son 386, 486, Pentium, Pentium Pro, Pentium II, Amiga y Atari,
tambin existen versiones para su utilizacin en otras plataformas, como
Alpha, ARM, MIPS, PowerPC y SPARC.
Multiprocesador: Soporte para sistemas con mas de un procesador esta
disponible para Intel y SPARC.
Funciona en modo protegido 386.
Proteccin de la memoria entre procesos, de manera que uno de ellos no
pueda colgar el sistema.
Carga de ejecutables por demanda: Linux slo lee del disco aquellas partes
de un programa que estn siendo usadas actualmente.
Poltica de copia en escritura para la comparicin de pginas entre
ejecutables: esto significa que varios procesos pueden usar la misma zona
de memoria para ejecutarse. Cuando alguno intenta escribir en esa
memoria, la pgina (4Kb de memoria) se copia a otro lugar. Esta poltica de
6

LINUX

Mayo 2004

copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el


uso de memoria..
Memoria virtual usando paginacin (sin intercambio de procesos completos)
a disco: A una particin o un archivo en el sistema de archivos, o ambos,
con la posibilidad de aadir ms reas de intercambio sobre la marcha Un
total de 16 zonas de intercambio de 128Mb de tamao mximo pueden ser
usadas en un momento dado con un lmite terico de 2Gb para intercambio.
Este limite se puede aumentar fcilmente con el cambio de unas cuantas
lneas en el cdigo fuente.
La memoria se gestiona como un recurso unificado para los programas de
usuario y para el cach de disco, de tal forma que toda la memoria libre
puede ser usada para cach y sta puede a su vez ser reducida cuando se
ejecuten grandes programas.
Libreras compartidas de carga dinmica (DLL's) y libreras estticas.
Se realizan volcados de estado (core dumps) para posibilitar los anlisis
post-mortem, permitiendo el uso de depuradores sobre los programas no
slo en ejecucin sino tambin tras abortar stos por cualquier motivo.
Compatible con POSIX, System V y BSD a nivel fuente.
Emulacin de iBCS2, casi completamente compatible con SCO, SVR3 y
SVR4 a nivel binario.
Todo el cdigo fuente est disponible, incluyendo el ncleo completo y todos
los drivers, las herramientas de desarrollo y todos los programas de usuario;
adems todo ello se puede distribuir libremente. Hay algunos programas
comerciales que estn siendo ofrecidos para Linux actualmente sin cdigo
fuente, pero todo lo que ha sido gratuito sigue siendo gratuito.
7

LINUX

Mayo 2004

Control de tareas POSIX.


Pseudo-terminales (pty's).
Emulacin de 387 en el ncleo, de tal forma que los programas no tengan
que hacer su propia emulacin matemtica. Cualquier mquina que ejecute
Linux parecer dotada de coprocesador matemtico. Por supuesto, si el
ordenador ya tiene una FPU (unidad de coma flotante), esta ser usada en
lugar de la emulacin, pudiendo incluso compilar tu propio kernel sin la
emulacin matemtica y conseguir un pequeo ahorro de memoria.
Soporte para muchos teclados nacionales o adaptados y es bastante fcil
aadir nuevos dinmicamente.
Consolas virtuales mltiples: varias sesiones de login a travs de la consola
entre las que se puede cambiar con las combinaciones adecuadas de teclas
(totalmente independiente del hardware de video). Se crean dinmicamente
y puedes tener hasta 64.
Soporte para varios sistemas de archivo comunes, incluyendo minix-1,
Xenix y todos los sistemas de archivo tpicos de System V, y tiene un
avanzado sistema de archivos propio con una capacidad de hasta 4 Tb y
nombres de archivos de hasta 255 caracteres de longitud.
Acceso transparente a particiones MS-DOS (o a particiones OS/2 FAT)
mediante un sistema de archivos especial: no es necesario ningn comando
especial para usar la particin MS-DOS, esta parece un sistema de archivos
normal de Unix (excepto por algunas restricciones en los nombres de
archivo, permisos, y esas cosas). Las particiones comprimidas de MS-DOS
6 no son accesibles en este momento, y no se espera que lo sean en el
futuro. El soporte para VFAT, FAT32 (WNT, Windows 95/98) se encuentra
8

LINUX

Mayo 2004

soportado desde la versin 2.0 del ncleo y el NTFS de WNT desde la


versin 2.2 (Este ultimo solo en modo lectura).
Un sistema de archivos especial llamado UMSDOS que permite que Linux
sea instalado en un sistema de archivos DOS.
Soporte en slo lectura de HPFS-2 del OS/2 2.1
Sistema de archivos de CD-ROM que lee todos los formatos estndar de
CD-ROM.
TCP/IP, incluyendo ftp, telnet, NFS, etc.
Appletalk.
Software cliente y servidor Netware.
Lan Manager / Windows Native (SMB), software cliente / servidor.
Diversos protocolos de red incluidos en el kernel: TCP, IPv4, IPv6, AX.25,
X.25, IPX, DDP, Netrom, etc.

LINUX

Mayo 2004

1.2.3 Comparativa con sistemas de sobremesa


Si comparamos Linux con Macintosh Windows 95/98 para uso como sistema de
sobremesa encontramos las siguientes ventajas e inconvenientes:
Ventajas
Es gratis
Es ms flexible y
configurable
Es ms eficiente

Inconvenientes
Requiere ms conocimientos
de informtica
No hay sustituto directo para
todas las aplicaciones

No requiere hardware caro


No obliga a cambiar

Algunos dispositivos de

continuamente de versiones

ltima generacin no estn

de aplicaciones

soportados

Comparativa con servidores NT


Linux puede competir con NT como servidor de aplicaciones, web, impresin y
ficheros:
Ventajas

Inconvenientes

Es gratis
Es ms flexible y configurable
Es ms eficiente
No requiere hardware caro
No obliga a cambiar

NT est ms extendido en
la empresa

continuamente de versiones
de aplicaciones
Existen sustitutos para todos
los servicios tpicos

Hay ms driver para


impresoras en NT que en
Unix/Linux

Puede leer sin problemas


discos Windows en formato
FAT32
10

LINUX

Mayo 2004

Comparativa con servidores Unix


Linux es una versin de Unix. De este modo, no se trata tanto de competir con
otros Unix como de decidir qu versin de Unix nos satisface ms.
Ventajas

Inconvenientes

Es gratis
No requiere hardware
caro
Est mejor integrado
que otros Unix con

En general, las distintas versiones


Unix disponen de buenas
herramientas de administracin
(propietarias)

los entornos
Windows
Linux est disponible
para mltiples

La gestin de volmenes lgicos es


ms cmoda en los Unix
comerciales que en Linux

plataformas hardware
Qu ventajas tiene Linux sobre Windows?
Es ms seguro
La que la gran mayora de los ataques de hackers son dirigidos a servidores
Windows al igual que los virus los cuales se enfocan principalmente a
servidores con ste sistema operativo.
La plataforma Linux es ms robusta lo cual hace ms difcil que algn
intruso pueda violar el sistema de seguridad de Linux.
Es ms rpido
Al tener una plataforma ms estable, esto favorece el desempeo de
aplicaciones de todo tipo tales como: bases de datos, aplicaciones XML,
multimedia, etc.
11

LINUX

Mayo 2004

La eficiencia de su cdigo fuente hace que la velocidad de las aplicaciones


Linux sean superiores a las que corren sobre Windows lo cual se traduce en
velocidad de su pgina.
Es ms econmico
Ya que requieren menor mantenimiento. En servidores windows es ms
costoso debido a que es necesaria una frecuente atencin y monitoreo
contra ataques de virus, hackers y errores de cdigo.
El software Linux es gratuito, lo cual lo hace ms econmico.
No

requieren

supervisin

tan

estrecha

ni

pagos

de

plizas

de

mantenimiento necesarias para obtener los Service Packs.


1.3 Qu es una red de datos?
Una red de datos es un conjunto de dispositivos tales como: computadoras
(personales, microcomputadoras, mainframes), terminales interactivas, elementos
de memoria, impresoras, dispositivos de comunicaciones, etc., conectadas entre
si, que permiten a los usuarios tener transferencia de datos y compartir recursos
de hardware y de software.
1.3.1 Hardware
Se denomina as al conjunto fsico de elementos que se pueden interconectar
entre si dentro de una red.
Dentro del hardware se encuentran:
SERVIDORES: Son equipos de computo que generalmente
funciona de compartir

tienen la

recursos fsicos y/o lgicos, generalmente tienen

cargado el sistema operativo de red y su plataforma tecnolgica es de alto


rendimiento los hay de tipo dedicado y no dedicado.

12

LINUX

Mayo 2004

ESTACIONES DE TRABAJO: Son los equipos de computo con los cuales


los usuarios de red hacen sus tareas

cotidianas como redactar

documentos, enviar correos, diseo grafico, etc.


PERIFRICOS: Dispositivos que se pueden integrar a la red y que tienen
funciones particulares, como son las impresoras, plotters, scanners,
servidores de impresin, torres de CD, unidades de respaldo, etc.
MEDIOS DE COMUNICACIN: Es el canal fsico o no fsico, por el cual se
transmite la informacin entre las redes.

ELEMENTOS DE CONECTIVIDAD: Dispositivos que envan y reciben la


informacin que los medios de comunicacin transmiten, ej.: Routers,
Switches, etc.
1.3.2 Software
Son los elementos de tipo lgico que hacen interactuar al hardware:
SISTEMA OPERATIVO DE RED: Es el conjunto de programas que residen
en el equipo central o servidor y que llevan a cabo la gestin de recursos
fsicos y lgicos de la red. Comercialmente predominan en el mercado los
sistemas Microsoft, Novell y los diferentes sistemas operativos Unix.
CONTROLADOR/DRIVER: Programa que contiene

las instrucciones

necesarias para que un elemento de hardware sea reconocido y pueda


interactuar con otro elemento de hardware y los sistema operativos.
PROTOCOLO LGICO: Es el conjunto de normas que regulan la
comunicacin entre los elementos de software de la red. El protocolo lgico
es dependiente del sistema operativo. Dentro de los protocolos lgicos,

13

LINUX

Mayo 2004

podemos mencionar a TCP/IP, IPX/SPX, NetBios, NETBEIU, DECNet,


APPLETALK, etc.
SOFTWARE CLIENTE: Es el sistema operativo de red que reside en las
estaciones de trabajo (Clientes) y que permite la comunicacin

con el

sistema operativo de la red.


APLICACIONES: Son todos los programas que el usuario utiliza directa o
indirectamente para el procesamiento de la informacin.
1.4 Tipos de Redes
Para estructurar los conceptos de las redes de computadora se ha desarrollado
una amplia gama de doctrinas que cubren desde la abstraccin de la arquitectura
hasta la visin sistemtica pasando por los fundamentos tecnolgicos y la
modelacin matemtica.
Las redes pueden analizarse desde los siguientes puntos de vista:
Transmisin.
Escala.
Topologa.

1.4.1 Por Transmisin


En trminos generales, hay dos tipos de tecnologas de transmisin:
Redes de difusin (Broadcast).
Redes de punto a punto (Point to Point).
Tipos de Difusin
Las redes de difusin tienen un solo canal de comunicacin compartido por todas
las mquinas de la red. Los paquetes cortos ( llamados paquetes ) que enva una
14

LINUX

Mayo 2004

mquina son recibidos por todas las dems. Un campo de direccin dentro del
paquete especifica a quin se dirige. Al recibir el paquete, la mquina verifica el
campo de direccin, si el paquete esta dirigido a ella, lo procesa; si esta dirigido a
otra mquina lo ignora.
Los sistemas de difusin generalmente tambin ofrecen la posibilidad de dirigir un
paquete a todos los destinos colocando un cdigo especial en el campo de
direccin. Cuando se transmite un paquete con este cdigo, cada mquina en la
red lo recibe y lo procesa. Este modo de operacin se llama difusin
( Broadcasting ).
Multicast (Multidifusion): Una forma de broadcast en el cual e l paquete es
liberado en base a un conjunto predefinidote posibles direcciones destino.

Figura 1-3 Red Tipo Difusin

Unicast (Unidifusion): En este caso un frame es enviado de una estacin a


otra. El unicast contiene una direccin MAC especifica de los dispositivos
origen y destino.
Redes Punto a Punto
Las redes Punto a Punto consisten en muchas conexiones entre pares individuales
de maquinas. Para ir del origen al destino es posible que el paquete tenga que
pasar por maquinas intermedias y que tenga que viajar por varias posibles rutas
de diferente longitud, por lo que los algoritmos de ruteo desempean un papel
importante en este tipo de redes. En el caso de redes punto a punto podemos
15

LINUX

Mayo 2004

considerar que el ejemplo mas comn son las redes en base a la conmutacin de
circuitos, como lo son las redes telefnicas publicas. Como regla general las redes
pequeas, geogrficamente localizadas tienden a usar la difusin y las redes mas
grandes suelen ser punto a punto.

Figura 1-4. Red Punto a Punto

1.4.2 Por Escala


De acuerdo a su cobertura geogrfica las redes se pueden clasificar en :
Campus, LAN, MAN, WAN, GAN Y PAN.
Inicialmente esta clasificacin se determino en base a las distancias que cubra
cada tipo de red, sin embargo en la actualidad podemos definir a cada tipo de red
en base a la ubicacin geogrfica y no a la distancia.
Campus. Un conjunto de edificios ubicado en la misma rea.
Red de rea Local (LAN). Ubicada principalmente en un edificio.
16

LINUX

Mayo 2004

Red de rea Metropolitana (MAN). Abarca principalmente una red


metropolitana, es decir en una ciudad.
Red de rea Extensa (WAN). Se puede considerar WAN a todas aquellas
redes que salen del rea de la MAN, es decir fuera de una ciudad, ya sea
en un estado o en un pas diferente.
Red de rea Global (GAN). Abarca varios pases. Por ejemplo Internet.
Red Personal (PAN). Es una red personal con por lo menos dos
computadoras y un equipo de conectividad.
1.5 Elementos de Conectividad
Son los elementos que permiten la intercomunicacin entre el hardware.
INTERFACES DE RED: Estos dispositivos son los que se instalan en las
estaciones de trabajo y servidores, su funcin principal es proporcionar el
puerto de interfaz fsico adecuado, enviar y recibir la seal de comunicacin
desde y hacia el medio, y procesarla para adaptar la informacin a trasmitir
o detectar, entre otras funciones, la informacin recibida. La interfaz de red
tienen dentro de su circuiteria el cdigo o algoritmo dentro del protocolo
fsico de la red y que es dependiente de la tecnologa que se esta usando.
HUBS(Concentradores): Son dispositivos que permiten la comunicacin
entre diversos elementos de hardware a travs de sus mltiples puertos, la
seal que recibe a travs de un puerto, la reproduce por todos sus puertos.
Una ventaje es concentrar a los usuarios facilitando las tareas de
administracin y diseo de la red. Trabaja en capa 1 del modelo OSI.

17

LINUX

Mayo 2004

Figura 1-1. HUB

REPETIDORES: Dispositivos cuya funcin es reproducir y amplificar los


mas fielmente posible la seal que detectan a su entrada con el fin de
aumentar la distancia de alcance. Es capaz de conectar diferentes medios
fsicos de transmisin. Sin embargo, o suele utilizarse para conectar redes
de banda base con redes de banda ancha, ya que los mtodos
decodificacin

de

de la informacin son muy diferentes. Opera en el nivel

fsico del modelo de referencia OSI.


BRIDGES (Puentes): Estos dispositivos tienen la caracterstica de identificar
la direccin fsica dentro de los paquetes que entran y salen a travs de sus
puertos, y en base a una tabla de asociacin Direccin/Puerto puede tomar
decisiones sobre segmentacin de trafico y redundancia en enlaces, estos
equipos permiten interconectar LANS separando el trafico entre estas o si
estas utilizan tecnologas diferentes.

A diferencia de un repetidor , un

puente acta sobre los paquetes de datos o tramas que se transfieren en


los niveles de enlace de datos, particularmente sobre el nivel de control de
acceso

al medio (MAC). Sus funciones bsicas son las de auto-

aprendizaje, filtrado y reenvi. Es decir, si necesita enviar un paquete de


datos a una direccin de red que no esta incluida en su tabla de destinos,
examina los campos de direccin de paquete (filtrado) y las dirige a la
direccin que ha localizado (reenvi). La utilizacin de puentes para unir
redes es mas aconsejable que la configuracin de una red grande que
englobe a las dos. La razn es que las redes van perdiendo rendimiento al
18

LINUX

Mayo 2004

aumentar el trafico y se va perdiendo el tiempo de respuesta, de este


modo, al estar dividida la red se reduce el trafico y el tiempo de respuesta.
Trabaja en la capa 2 del modelo OSI.
SWITCHES (Conmutadores): Dispositivo cuyo principio de operacin esta
basado en una matriz de conmutacin, tambin maneja una tabla llamada
SAT (Source Address Table) similar a la de un Bridge, cuando recibe un
paquete por un puerto el switch determina en la tabla la direccin destino
fsica del paquete y establece una direccin dedicada por unos instantes
de segundo entre las dos entidades que quieren comunicarse, esto ocurre
de manera simultanea y muchos miles de veces por segundo. Trabaja en la
capa 2 del modelo OSI y algunos trabajan en la capa 3.
ROUTERS (Ruteadores): Estos equipos son bridges que tienen la
capacidad de entender las direcciones lgicas de los paquetes que llegan a
sus puertos, pueden interpretar los protocolos lgicos que la red esta
usando y en base a ello tomar decisiones sobre la ruta que debe llevar el
paquete. Los ruteadores se diferencian de los puertos en dos aspectos:
o Actan sobre los paquetes transferidos entre los niveles de red de
las estaciones a diferencia de los puentes que lo hacen sobre los
niveles de enlace de datos.
o Ambos equipos son tericamente transparentes

a las estaciones

finales que comunican. Sin embargo normalmente las estaciones


tienen definido el ruteador al que deben dirigirse.
o Trabaja en la capa 3 del modelo OSI. Los ruteadores generalmente
estn en las orillas de las redes LAN y funcionan como enlaces hacia
otras redes LAN o hacia redes WAN.
GATEWAY(Puertas de enlace): Pueden ser implementaciones en hardware
o software

o un modelo combinado, esta entidades proporcionan

la

conectividad fsica y lgica entre una LAN y un sistema o red de diferente


arquitectura como puede ser un enlace o un mainframe o una aplicacin
de salida a Internet. El gateway realiza la traduccin completa entre las
19

LINUX

Mayo 2004

familias de los protocolos, proporcionando una conectividad completa entre


redes de distinta naturaleza. Trabaja en la capa 2 del modelo OSI.
TARJETAS DE RED: Un adaptador o tarjeta de red es el elemento
fundamental en la composicin de la parte fsica de una red de rea local.
Cada tarjeta de red es una interface
informatico

entre la plataforma o sistema

y el medio de transmisin fsico por el que se trasporta la

informacin de un lugar a otro. El adaptador puede venir incorporado o no


con la plataforma del sistema . En gran parte d las computadoras
personales hay

que aadir una tarjeta separada, independiente del

sistema, para realizar la

funcin de adaptador

inserta en el bus de comunicaciones

de red. Esta tarjeta se

de la computadora personal

convenientemente configurada. En otros sistemas el hardware propio del


equipo ya incorpora el adaptador de red.
MODEM: La funcin bsica que desarrolla un MODEM es aceptar datos de
una computadora

y convertir las seales digitales

en seales analgicas

para que se transmitan a travs de la lnea telefnica. Cuando los datos


llegan al punto destino, el MODEM receptor realiza la funcin inversa, es
decir, vuelven a transformar las seales analgicas en seales digitales para
que la computadora las pueda entender. La comunicacin se puede
establecer en ambos sentidos (semiduplex) pero no simultneamente o en
ambos sentidos simultneamente (duplex). Es independiente el numero de
hilos de que consta el cableado de la forma de establecer la comunicacin.
Entre las caractersticas mas importantes esta la de poseer memoria
telefnica donde almacena los nmeros de telfono y puede marcarlos
automticamente en el momento

o bien hacerlo en una fecha

y hora

programada. Tambin cuenta con respuesta automtica a una llamada y la


posibilidad

de que se devuelva la llamada

una vez comprobado que el

emisor esta autorizado para hacerlo. Su mayo utilidad esta para la expansin
de una red es que permite el acceso remoto de una estacin de trabajo
mvil.
20

LINUX

Mayo 2004

1.6 Que es una topologa?


Una topologa de red es una representacin pictrica de una capa de red. Alguna
vez se ha realizado un mapa para decirle a alguien como ir algn lugar, o creado
un plano de una casa de tal manera que se pueda conseguir una mejor idea de
cmo el espacio es usado.

1.7 Topologa Fsicas de Red


Una topologa fsica de red define como los dispositivos estn conectados. Para
entender esto se necesitara los siguientes conceptos:
Especificaciones de Hardware para las topologas de red
Topologa fsica bus
Topologa fsica estrella
Topologa fsica anillo
1.7.1 Topologa Bus
Una topologa fsica de red en bus es una simple topologa que usa cable largo
cable llamado backbone. Cables cortos llamados drop pueden ser conectados al
backbone usando conectores tipo T.

21

LINUX

Mayo 2004

Figura 1-6. Topologa Bus

El trmino de bus es usado en electrnica, tiene que ver con el transporte


(bussing) de seales desde un punto a otro. Usted puede recordar el concepto de
tecnologa bus porque realmente este transporta la data como si fuera un bus.
El cable backbone necesita en los extremos unos elementos que le indiquen el
inicio y el fin de la red, as como tambin evita que la seal siga buscando otro
dispositivo. Este dispositivo se llama terminador y esta conectado a un punto de
tierra. En la topologa bus se permite que la seal electromagntica viaje en
diferentes direcciones.
Puntos a considerar
Instalacin. Una topologa bus es relativamente fcil de instalar. Usted estira el
cable desde un sitio a otro.
Reconfiguracin. La topologa bus estn construidas para minimizar la cantidad
de cable requerido y mantener una distancia mediana entre los nodos, la
reconfiguracin tiende a ser moderadamente difcil.
1.7.2 Topologa Anillo
Una topologa anillo es igual a un crculo (un enlace cerrado entre puntos). Cada
dispositivo se conecta al anillo a travs de un dispositivo similar a un hub que
tambin provee un cable de conexin especial.
22

LINUX

Mayo 2004

El siguiente es un ejemplo de topologa anillo:

Figura 1-7. Topologa Anillo

Puntos a considerar
Instalacin. La topologa anillo es moderadamente simple de instalar. Porque el
anillo requiere un enlace cerrado, mas cable es requerido que la topologa tipo de
bus. De igual forma que la topologa bus usted no debe acceder una capacidad
mxima entre dispositivos repetidores.
Reconfiguracin. La topologa anillo viene a ser difcil de configurar. Los
segmentos de anillo deben ser divididos o reemplazados con dos nuevos
segmentos cada vez que un segmento es cambiado.
El anillo esta limitado a un nmero mximo de dispositivos.
1.7.3 Topologa Estrella

23

LINUX

Mayo 2004

La topologa estrella usa un dispositivo central con cables extendindose en todas


direcciones. Cada dispositivo es conectado al hub a travs de una conexin punto
a punto.

Figura 1-8. Topologa Estrella

En la topologa estrella, las seales elctricas y electromagnticas viajan desde el


dispositivo conectado por cable hasta el hub. Desde ah la seal es enviada a los
otros dispositivos de red.

Puntos a considerar: Topologa estrella


Instalacin. La topologa estrella es moderadamente difcil de instalar. El diseo
de una red es simple pero usted debe instalar un segmento de medio de
transmisin por cada conexin que se desee hacer. El cableado de la topologa
estrella requiere mas cableado que otras topologas.
Reconfiguracin. La topologa estrella es relativamente fcil de instalar y
reconfigurar. Mover, agregar y cambiar no involucran mas que la conexin entre el
dispositivo cambiado y un puerto de un hub.
1.4 Topologas Lgicas de Red
Despus de planear el esquema fsico de la red. Usted debe considerar el
esquema lgico. Hay dos topologa lgicas ms comunes:
24

LINUX

Mayo 2004

Bus
Anillo
Las diferentes formas de cmo l trfico puede fluir en un sistemas de calles, es
un ejemplo de topologa lgica. La topologa lgica de red es, en esencia, una
estrategia para direccional el flujo de la seal.
Esta metfora de trfico es una manera muy valida para entender una topologa
lgica. Como se puede ver, el trmino Trfico de red y Colisiones son comnmente
usadas en la terminologa de red.
Las topologas lgicas son una parte fundamental de una red, porque las seales
elctricas deben mantenerse separadas y diferenciadas de las otras, para evitar
choques y distorsiones.
Los dispositivos que envan la seal tambin deben mantener un orden. Los
dispositivos deben hablar para tomar turnos, o mirar el trfico de la red antes de
enviar sus mensajes.

1.8.1 Topologa Lgica Bus


En una topologa lgica Bus, los dispositivos generan seales y las envan a travs
de la red. Independientemente de la ubicacin del receptor. Una topologa lgica
bus, puede ser solo usada con la topologa fsica bus y estrella.

25

LINUX

Mayo 2004

Figura 1-9. Topologa Lgica Bus

El mensaje enviados a todos los dispositivos en una topologa lgica bus contiene
informacin que dice cul dispositivo debe de recibir el mensaje. El dispositivo que
supuestamente recibi el mensaje, lo recibir. Otros lo ignoran. Una topologa bus
es una buena porque los dispositivos de red no estn enterados de las ubicaciones
fsicas de los otros dispositivos. No se puede dar a un dispositivo instrucciones
para enviar mensajes directamente a otro dispositivo. Por ejemplo un dispositivo
no puede conocer que otro dispositivo esta localizado a tres nodos al sur sobre el
lado derecho. Por tanto, un dispositivo debe enviar el mensaje a todas las
direcciones. Entonces cada dispositivo determina si el mensaje fue precisamente
para ese dispositivo.

1.8.2 Topologa lgica Anillo


En una topologa lgica anillo, la seal es generada y viaja a travs de una ruta ya
especificada en una simple direccin.

26

LINUX

Mayo 2004

Figura 1-10.Topologa Lgica Anillo

La topologa lgica anillo puede ser usada con la topologa fsica anillo y con la
topologa fsica estrella. La diferencia entre el anillo lgico y bus lgico esta en que
la seal enviada en una lgica bus va en todas direcciones. Las seales enviadas
en un anillo lgico pueden solo ir en una direccin. Una topologa fsica estrella
puede manipular una topologa lgica anillo, por que las seales entran en el hub y
son enviados de regreso a los dispositivos de red en un orden predeterminado.

Figura 1-11. Topologa Fsica Token Ring

27

LINUX

Mayo 2004

La topologa fsica puede ser usada con cualquiera de las dos topologa. La
estrella fsica es tambin relativamente fcil de instalar y fcil de reconfigurar. La
topologa fsica estrella es muy comn.
1.9 Redes Token Ring
Las redes token ring combinan una topologa fsica estrella y topologa lgica anillo
con el esquema de acceso al medio de token passing. Esta es una configuracin
popular de red.

Figura 1-12. Red Token Ring

Cuando una estacin quiere transmitir al anillo, este espera por el Token libre para
comunicar. Cuando se hace eso, la estacin fuente toma el token libre y agrega
data a l. La estacin entonces enva el Token hacia el anillo. Desde ese momento
el Token ocupado es pasado por cada estacin alrededor del anillo, cada estacin
comprueba si la comunicacin esta dirigida hacia l. Si una estacin no es la
receptora del Token, ste la reenva al anillo; si una estacin es la receptora, ste
copia la data de la estacin origen agregada al token.
Finalmente ste agrega data al Token para indicar que ha reconocido la direccin y
que ha copiado la data, entonces la estacin enva el token alterando a anillo.

28

LINUX

Mayo 2004

Figura 1-13. Red Token Ring Tipo Anillo

El Token continua alrededor del anillo hasta que este alcanza la estacin origen,
cuando la estacin ve que el token ha sido recibido y la data ha sido copiada, esta
genera un nuevo Token libre, el cual buscar una siguiente estacin que desea
transmitir datos para repetir el proceso.

1.10 Redes Ethernet


Las redes Ethernet es el estndar de red ms popular que usa una topologa
lgica bus y puede ser conectada usando una topologa fsica bus o estrella.

29

LINUX

Mayo 2004

Figura 1-14. Redes Ethernet

Las redes Ethernet usan un esquema de acceso basado en contencin. Las redes
Ethernet mueven mensajes alrededor de la red en paquetes de informacin que
incluyen la direccin de la estacin origen, estacin destino, seales de control y la
data misma. Para enviar paquetes, un dispositivo en la red debe primero escuchar
y ver si algn otro dispositivo esta usando el cable.
30

LINUX

Mayo 2004

Cuando el cable (medio de transmisin) est libre de trfico, el dispositivo enva


sus paquetes. Si dos dispositivos estn intentando transmitir sobre el cable al
mismo tiempo, el paquete puede colisionar fsicamente con otro. El resultado
puede ser el dao de los paquetes o paquetes no confiables. Cuando la colisin
ocurre, una seal es enviada para asegurar que la colisin ha sido reconocida
alrededor de la red. Los dispositivos compiten por el ancho de banda del cable
para hacer sus transmisiones por una cantidad al azar de tiempo para asegurar
que las colisiones sean eliminadas.
Cuando los dispositivos se enteran de la presencia de una seal en el cable, ellos
revisan para asegurarse que el paquete no es un fragmento de otro paquete que
ha sido daado por una colisin.

CONCLUSIONES
Es bien sabido que el tener lo conocimientos bsicos de cualquier tema da como
pauta es comprender

el funcionamiento, proceso, etc de los elementos que

conforman

31

LINUX

Mayo 2004

32

LINUX

Mayo 2004

Capitulo 2
Instalacin de Linux
El contar con uno o mas sistemas operativos en una PC da como resultado el
tener una visin mucho mas amplia de cmo poder desarrollar trabajos y mas aun
si se puede tener un contacto entre los dos, para esto es necesario conocer las
capacidades o compatibilidades de la PC con la cual se esta trabajando. Por otro
lado el solo conocer el procedimiento de cualquier sistema operativo o software
en general es de gran ayuda para as lograr un correcto funcionamiento del
mismo posterior a la instalacin.
2.1 Instalacin de Linux
2.1.1 Configuracin Hardware Bsica
Se debera tener un conocimiento bsico del hardware instalado en tu ordenador,
incluyendo:

Disco(s) duro(s): Especialmente, el numero, tamao, y tipo. Si se tiene


ms de uno, es de mucha ayuda saber cual es el primero, el segundo, etc.
Tambin es bueno saber si tus discos son IDE o SCSI. As mismo
deberemos de saber el nmero de particiones realizadas por instalaciones
anteriores de Windows 9x NT.

Memoria: La cantidad de RAM instalada en el ordenador.

CD-ROM: Sobre todo, el tipo de interfaz (IDE, SCSI, u otro interfaz), y, para
los CD-ROMs no IDE, no SCSI, la marca y numero de modelo.

Adaptador SCSI (si hay alguno):El fabricante y nmero de modelo.

33

LINUX

Mayo 2004

Tarjeta de red (si hay alguna) o mdem: El fabricante y nmero de


modelo. Para el MODEM adems hay que saber los puertos.

Ratn: El tipo de ratn (serie, PS/2, o 'bus mouse'), protocolo (Microsoft,


Logitech, MouseMan, etc.), y nmero de botones; tambin, para los ratones
serie, el puerto com al que estn conectados.

Tarjeta de grfica: El fabricante y nmero de modelo ( o el juego de


integrados para video que usa), y la cantidad de RAM grfica que tiene.

Tarjeta de sonido: Nombre y modelo de tarjeta. Si se saben las


interrupciones DMA y IRQ mejor por si acaso tuviese que hacer falta.

Monitor: El fabricante y nmero de modelo, resolucin mxima permitida,


as como el rango permitido de frecuencias de refresco horizontal .

2.1.2 Informacin relacionada con la red


Si se va a estar conectado a un red, hay que asegurarse de conocer lo siguiente:

Direccin IP: Normalmente representada por un conjunto de cuatro


nmeros separados por puntos, tal que 138.100.101.84

Mscara de Red: Otro conjunto de cuatro nmeros separados por puntos.


Un ejemplo de mascara podra ser 255.255.254.0.

Direccin IP del gateway: Otro conjunto mas de cuatro nmeros


separados por puntos. Por ejemplo, 138.100.100.1.

Una o ms direcciones IP de servidores de nombres: Uno o ms


conjuntos de nmeros separados por comas. 138.100.4.8 puede ser una
direccin de un servidor de nombres.

34

LINUX

Mayo 2004

Nombre de dominio: El nombre dado a tu organizacin. Por ejemplo, la


del departamento de fsica aplicada e ingeniera de sistemas de la escuela
universitaria de ingeniera tcnica industrial es fais.upm.es

Hostname: El nombre del ordenador. Un ordenador puede llamarse


faugeras, por ejemplo.

2.1.3 Un paseo por la BIOS del ordenador


Al arrancar por primera vez nuestra mquina hay que entrar en la llamada BIOS,
que no es ni ms ni menos que el sistema principal de configuracin de nuestro
PC.
Para ello teclear el botn Supr del teclado al arrancar
Una vez hecho esto entrar en Advanced CMOS Setup y cambiar la secuencia de
arranque del PC.
La secuencia de arranque deseada es la siguiente :
1.- CD-ROM
2.- Floppy
3.- Disco duro.
Si el ordenador no tiene la posibilidad de arrancar desde CD-ROM tampoco hay
que preocuparse demasiado, ya que se puede recurrir a iniciar la instalacin con
un simple disquete de inicio.
Para crear este disco de inicio se har lo siguiente :
Lo primero es entrar en MI-PC y seleccionar la unidad de CD ROM etiquetada
como bin-rh60es

35

LINUX

Mayo 2004

Figura 2-1. Creacin de disco de Arranque

Una vez hecho esto entrar en la carpeta dosutils

Figura 2-2. Creacin de disco de Arranque

Una vez realizada la operacin de entre todos los archivos de esta carpeta
deberemos seleccionar el archivo flop1440.bat al seleccionarlo lo que se hace

36

LINUX

Mayo 2004

es ejecutar un archivo de procesamiento por lotes de MS-DOS que nos crea el


disco de arranque.

Figura 2-3 Seleccin de Archivo de Disco de Arranque

Al ejecutar el programa aparecen las instrucciones en francs con las siguientes


opciones :
A: Instalacin desde CDROM
B: Instalacin desde red
C: Instalacin en modo seguro.

Figura 2-4 Opciones Para Seleccin de Instalacin.

Presionar la opcin A para el arranque desde CD-ROM


37

LINUX

Mayo 2004

2.2 Tipos de Instalacin


2.2.1 Instalacin en modo experto
Tecleando expert en el smbolo inicial boot: se ejecuta la instalacin en modo
experto. El modo experto convierte la instalacin en un estilo muy similar al usado
en Red Hat Linux 5.2. Esto significa que la mayora del nuevo cdigo de auto
chequeo se sustituye por cajas de dilogo que obliga al usuario a introducir
manualmente la informacin de los dispositivos. Estas cajas de dilogo tambin
incluyen un campo que permite al usuario introducir opciones para ser pasadas al
mdulo controlador (driver) al cargarse. Por lo tanto, si una configuracin del
hardware requiere opciones en un mdulo determinado, se debe usar la
instalacin en modo experto.
2.2.2 Instalacin en modo normal
Es posible automatizar la instalacin de Linux Red Hat usando el modo normal.
Se
pregunta al usuario a lo largo de la instalacin, pero para determinadas cosas
muy
puntuales.
Este modo principiante lee un fichero que contiene toda la informacin necesaria
para instalar Linux Red Hat. Esto es bastante prctico cuando se instalan muchos
sistemas con similar configuracin. Lo ms aconsejable es utilizar este tipo de
instalacin, para ello nada ms arrancar basta con pulsar <entrar> para empezar
a ejecutar la instalacin.
2.3 Empezando la Instalacin
Una vez realizados los pasos anteriores entraremos en la pantalla de bienvenida
de Linux Red Hat.
Primeramente se empieza con una serie de pantallas de fcil configuracin:
a) Seleccin de lenguaje: Seleccionar el espaol.
38

LINUX

Mayo 2004

b) Seleccin de teclado:
Despus de seleccionar el tipo de teclado apropiado normalmente <es> , pulsar
[Enter]; el tipo de teclado seleccionado ser cargado automticamente tanto para
el resto del proceso de instalacin como cada vez que arranque el sistema Red
Hat Linux.

Figura 2-5. Seleccionando el tipo de teclado

c) Seleccionando mtodo de instalacin :


A continuacin, se pregunta al usuario por el mtodo de instalacin que desea
usar
Marcar la opcin apropiada y selecciona OK, o pulsa [Enter]. Se puede instalar
Red Hat Linux mediante cualquiera de los cuatro mtodos bsicos, alguno de los
cuales requiere el uso de un disquete suplementario.

39

LINUX

Mayo 2004

Figura 2-6. Seleccionando el mtodo de instalacin

Resumiendo, es posible instalar Red Hat Linux desde:

CD-ROM

Si se dispone de una unidad CD-ROM y el CD-ROM de Red Hat Linux. No


requiere un disquete suplementario.

NFS

Si se instala desde un servidor NFS que est exportando el CD-ROM de Red


Hat Linux o un 'mirror' de Red Hat Linux desde el sitio FTP de Red Hat.

FTP

Si se est instalando directamente desde un servidor FTP. Requiere un


disquete suplementario.
d) Deteccin de ratn :
Normalmente el propio programa de instalacin va a detectar que ratn est
disponible . La nica opcin posible que tenemos para decidir es la emulacin de
2 3 botones.
e) Actualizando o Instalando :
Despus de elegir el mtodo de instalacin (y, si se instala desde red, despus de
configurar la informacin de red), el programa de instalacin pide elegir entre
Instalar o actualizar
40

LINUX

Mayo 2004

Figura 7. Actualizando o instalando

Instalando
El sistema Red Hat Linux se instala normalmente en una o varias
particiones de disco vacas, o bien, sobre otra instalacin de Linux.
Nota: Al instalar Red Hat Linux sobre otra instalacin de Linux (incluyendo
Red Hat Linux) no se guarda ninguna informacin de la instalacin anterior.
Es necesario salvar cualquier fichero considerado importante! Si se va a
realizar una instalacin completa, elegir Install.

Actualizando
El proceso de instalacin de Red Hat Linux 6.0 incluye la posibilidad de
actualizar desde versiones anteriores de Red Hat Linux (versin 2.0 y
posteriores) que estn basadas en la tecnologa RPM. Al actualizar el
sistema se instala el kernel modular 2.0.x as como las versiones
actualizadas de los paquetes que estn instalados en la mquina. El
proceso de actualizacin mantiene los ficheros de configuracin existentes
al

renombrarlos

usando

la

extensin

.rpmsave

(por

ejemplo,

sendmail.cf.rpmsave) y deja un registro, indicando las acciones que tom,


en el fichero /tmp/upgradelog. Como el software evoluciona, los formatos
41

LINUX

Mayo 2004

de los ficheros de configuracin pueden cambiar, por ello, se deben


comparar cuidadosamente los ficheros de configuracin originales con los
nuevos antes de integrar los cambios.
f) Soporte SCSI
Despus de elegir entre realizar una actualizacin o una instalacin completa, el
programa de instalacin explorar el sistema para ver si dispone de alguna tarjeta
SCSI. En algunos casos, el programa de instalacin preguntar si se dispone de
alguna. Si se elige Yes, la siguiente ventana de dilogo presenta una lista de
controladores SCSI. Elegir el controlador correspondiente a la tarjeta SCSI, o el
que ms se parezca. El programa de instalacin permite entonces especificar
opciones del controlador SCSI seleccionado; no obstante, la mayora de los
controladores SCSI detectan el hardware automticamente.
2.4 Creacin de particiones en Red Hat Linux
Llegado a este punto, es necesario indicar al programa de instalacin de donde
deber instalar Red Hat Linux. Esto se hace al definir puntos de montaje en una o
ms particiones de disco en las que ser instalado Red Hat Linux. Es posible
tambin crear y/o borrar particiones en este momento.
El programa de instalacin presenta una ventana de dilogo que permite elegir
entre dos herramientas de particin de disco. Las dos opciones son:

Disk Druid: Esta es la nueva utilidad de gestin de particin de disco de


Red Hat Linux. Puede crear y borrar particiones de disco de acuerdo a los
requerimientos del usuario, adems maneja puntos de montaje para cada
particin.

Fdisk: Esta es la herramienta tradicional de particin de disco de Linux.


Aunque es algo ms flexible que el Disk Druid, su inconveniente radica en
que el fdisk asume que tienes cierta experiencia con el particionamiento de
discos, y que te encuentras cmodo con su algo escueta interfaz de
usuario. Dado que Disk Druid es igual de potente y la ms utilizada, por su
42

LINUX

Mayo 2004

facilidad de manejo en esta instalacin en este manual se explica la


utilizacin de Disk Druid.
Con la excepcin de ciertas situaciones esotricas, Disk Druid puede manejar los
requisitos de particin para una instalacin tpica de Red Hat Linux.

Figura 2-8. Seleccionando mtodo de inicializacin de particiones.

Seleccionar la herramienta de particin de disco que se vaya a utilizar, y pulsar


[Enter].
2.5 Usando Disk Druid
Si se ha seleccionado Disk Druid, aparecer una pantalla como. Aunque pudiera
parecer abrumador en un principio, en realidad no es as. Vamos a ver cada una
de las tres secciones de Disk Druid, y se ver que no hay nada que temer.

43

LINUX

Mayo 2004

Figura 2-9. Pantalla principal de Disk Druid

Cada lnea de la seccin Particiones Actuales del Disco representa una particin
de disco. Esta seccin tiene una barra de desplazamiento a la derecha, lo cual
significa que podran haber ms particiones que las que pueden estar
presentadas en la pantalla en ese momento. Usando las teclas [\flecha arriba] y
[\flecha abajo], se ve si hay ms particiones.
Cada lnea de esta seccin tiene cinco campos diferentes:

Punto de montaje: Este campo indica donde ser montada la particin


cuando Red Hat Linux sea instalado y ejecutado.

Dispositivo: Este campo presenta el nombre del unidad donde est


creada la particin.

Requerido: El campo "requerido" muestra la cantidad mnima de espacio


de disco solicitada cuando la particin fue definida.

Actual: El campo "Actual" muestra el espacio actual asignado a la


particin.

Tipo: Este campo muestra el tipo de particin.

44

LINUX

Mayo 2004

Otro tipo de particin


Al moverse a travs de la seccin "Particiones actuales del disco", se ve una
barra con el ttulo "Particiones no localizadas", seguida de una o ms particiones.
Como el ttulo indica, estas son particiones que han sido solicitadas pero, por una
u otra razn, no han sido asignadas. Una razn comn para tener una particin no
asignada es una falta de suficiente espacio libre para la particin. En cualquier
caso, la razn de que una particin no est asignada ser presentada despus
del punto de montaje.
2.6 La seccin "Drive Summaries"
Cada lnea en la seccin "Drive Summaries" representa una unidad de disco del
sistema. Cada lnea tiene los siguientes campos:

Drive: Este campo muestra el nombre del disco.

Geom [C/H/S]: Este campo muestra la geometra del disco. La geometra


consta de tres nmeros que representan el nmero de cilindros, cabezas, y
sectores reportado por el disco.

Total: El campo "Total" muestra el espacio total disponible en el disco.

Used: Este campo muestra cuanto espacio de disco est asignado


actualmente a las particiones.

Free: El campo "Free" muestra cuanto espacio de disco est todava sin
asignar. Bar Graph: Este campo presenta una representacin visual del
espacio actualmente usado. Los asteriscos que hay entre corchetes
representan el espacio ocupado, el resto es el espacio libre. En la Figura 4,
la barra grfica muestra que no hay espacio libre.

2.7 Botones de Disk Druid


Estos botones controlan las acciones de Disk Druid. Son usados para aadir y
borrar particiones, y cambiar los atributos de una particin. Adems, hay botones
que son usados para aceptar los cambios, desechar esos cambios, o salir
totalmente de Disk Druid.
La descripcin de los botones es la siguiente:

45

LINUX

Mayo 2004

Aadir: El botn "Aadir" se usa para crear una nueva particin. Cuando es
seleccionado, aparece una ventana de dilogo conteniendo los campos que
deben ser rellenados.
Editar: El botn "Editar" es usado para modificar los atributos de la particin
seleccionada en ese momento en la seccin ``Particiones actuales del disco''.
Seleccionando este botn aparecer una ventana de dilogo. Alguno o todos los
campos de la ventana de dilogo ``Edit Partition'' pueden ser modificado,
dependiendo de si la informacin de la particin ha sido ya escrita al disco o no.
Borrar: El botn "Borrar" es usado para borrar la particin seleccionada en ese
momento en la seccin ``Current Disk Partitions''. Al seleccionar este botn
aparecer una ventana de dilogo preguntando si confirmamos la supresin.
Aceptar: El botn "Aceptar" da lugar a que cualquier cambio hecho en tu tabla de
particiones sea escrito en el disco. Te ser preguntado si deseas confirmar los
cambios antes de que Disk Druid reescriba la(s) tabla(s) de particiones de tu(s)
disco(s). Adems, cualquier punto de montaje que hayas definido ser pasado al
programa de instalacin, y ser usado al final por tu sistema Red Hat Linux para
definir la distribucin del sistema de ficheros.
Cancelar: Este botn causa la salida de Disk Druid sin salvar los cambios
realizados. Cuando este botn es seleccionado, el programa de instalacin
presentar una ventana de dilogo que permite elegir la accin que quieres tomar
a continuacin.
Ahora se ver como se usa Disk Druid para establecer las particiones del sistema
Red Hat Linux.
2.8 Aadiendo una particin
Para aadir una nueva particin, seleccionar el botn Aadir, y pulsar [Espacio] o
[Enter]. Aparecer una ventana titulada ``Editar Nueva Particin''. Esta contiene
los siguientes campos:

46

LINUX

Mayo 2004

Figura 2-10. Creando una nueva particin

Punto de montaje: Selecciona este campo, e introduce el punto de


montaje. Por ejemplo, si sta ser la particin root, introducir / .

Tamao: En este campo, se introduce el tamao (en megabytes) de la


particin. Observar que este campo se inicializa con "1", que significa que a
menos que se cambien, terminarn con una particin de 1 MB. Brrarlo
usando la tecla [Backspace], e introducir el tamao deseado de la particin.

Extensible?: Este botn indica si el tamao introducido en el campo


anterior es considerado el tamao exacto de la particin, o su tamao
mnimo. Pulsar [Espacio] para activarlo o desactivarlo. Cuando lo
activamos, la particin crecer para llenar todo el espacio disponible del
disco. En ese caso, el tamao de la particin se ampliar y contraer
cuando otras particiones sean modificadas.

Tipo: Este campo contiene una lista de los diferentes tipos de particin.
Seleccionar el tipo apropiado usando las teclas [flecha arriba] y [flecha
abajo]. Lo ms comn y lo que abremos usado en la Demo, ser una
particin tipo Linux Native con un punto de montaje / y una particin
linux swap. Hay que tener en cuenta que el tamao de la particin swap

47

LINUX

Mayo 2004

debe ser como mnimo la cantidad de memoria RAM que se disponga en el


equipo.

Unidades instaladas: Este campo contiene una lista de los discos


instalados en el sistema, con un botn cada uno. Si el botn de un disco no
est activado, entonces esta particin nunca ser creada en este disco. Al
usar diferentes botones para cada disco, puedes dirigir Disk Druid para
colocar las particiones como se vean mejor, o dejar que Disk Druid decida
donde deberan ir las particiones.

Ok: Seleccionar este botn y pulsar [Espacio] cuando se est de acuerdo


con los parmetros de la particin, y se desee crearla.

Cancelar: Seleccionar este botn y pulsar [Espacio] cuando no se quiera


crear la particin.

2.9 Problemas al aadir una particin


Si se intenta aadir una particin y Disk Druid no puede llevar a cabo la solicitud,
aparecer una ventana de dilogo. En la ventana aparece una lista de las
particiones sin asignar, seguido de la razn por la que no han podido asignarse.
Seleccionar el botn Ok, y pulsar [Espacio] para continuar. Se observa que una(s)
particin(es) sin asignar son tambin presentadas en la pantalla principal de Disk
Druid (es posible que haya que recorrer la seccin "Particiones actuales del disco''
para verlas).

48

LINUX

Mayo 2004

Figura 2-11. Aviso de particiones no asignadas

Borrando una particin

Para borrar una particin, selarla en la seccin " Particiones actuales del
disco", seleccionar el botn Borrar,. Se ser preguntado para confirmar la
supresin.

Editando una particin

Para cambiar los parmetros de una particin, seleccionar la particin en la


seccin " Particiones actuales del disco ", seleccionar el botn Editar. Hacer
los cambios necesarios, seleccionar Ok.
Si la particin ya existe en el disco, solo se puede cambiar el punto de montaje de
la particin. Para hacer cualquier otro cambio, se necesita borrar la particin y
volver a crearla.

Cancelando

Para usar fdisk, seleccionar Cancelar. Puedes seleccionar entonces fdisk


desde la ventana "Disk Setup".
2.10 Cuando se ha terminado...
49

LINUX

Mayo 2004

Una vez que se ha terminado de configurar las particiones e introducir los puntos
de montaje, en la pantalla deber aparecer algo como lo que se muestra en la
siguiente figura, selecciona Aceptar

Figura 2-12. Particiones y puntos de montaje definidos

2.11 Configuracin del sistema de ficheros


Desde que Red Hat Linux tiene creadas las particiones de disco, se necesita
elegir
que particin va a ir con cada sistema de ficheros.
Si se est realizando una instalacin completa, el programa de instalacin
presenta una lista de particiones de Linux y pide que elegir una particin root. La
particin root (o sistema de ficheros root) es la que contiene todo lo necesario
para iniciar tu sistema Red Hat Linux; se monta en / (el directorio root) cuando tu
sistema se inicia.

50

LINUX

Mayo 2004

Figura 2-13. Seleccionando la particin Root

Si se realiza una actualizacin, el programa de instalacin trata de encontrar la


particin root automticamente; si encuentra una, pasa al siguiente paso.
2.12 Otras particiones
Aunque lo normal es realizar slo dos particiones, es decir, una particin linux
native con el punto de montaje / y una particin de intercambio swap, se pueden
crear ms particiones donde almacenar datos de tal forma que si algn da se
tuviese que realizar una nueva instalacin de linux, se podra realizar
conservando por ejemplo los datos del directorio /usr ya que la nueva
instalacin slo formateara la paricin raz o de root.
La siguiente ventana de dilogo contiene una lista de todas las particiones de
disco con sistemas de archivos legibles por Red Hat Linux, incluyendo las
particiones de MSDOS o Windows. Esto da la oportunidad de asignar estas
particiones a diferentes partes del sistema de ficheros Red Hat Linux. Las
particiones que se asignen sern automticamente montadas cuando el sistema
Red Hat Linux se inicie. Seleccionar la particin que se desee asignar y pulsar

51

LINUX

Mayo 2004

[Enter] (o elegir Edit); entonces insertar el punto de montaje para la particin, por
ejemplo, /usr.

Figura 14. Configuracin del sistema de ficheros

2.13 Inicializando la particin de intercambio (Swap)


Despus de haber creado las particiones de Red Hat Linux, el programa de
instalacin comprueba si existen particiones de intercambio (swap). Si encuentra
alguna, pregunta para su inicializacin. Seleccionar la(s) particin(es) que se
inicializar como particiones de intercambio (swap) usando [Espacio]; para
chequear las particiones para detectar bloques defectuosos, activar el botn con
el mismo nombre.

52

LINUX

Mayo 2004

Figura 2-15. Inicializando la particin de intercambio (Swap)

Si el programa de instalacin no encuentra una particin de intercambio y ests


seguro de que existe una, comprueba si has puesto el tipo de particin a Linux
swap.
2.14 Formateando particiones
La siguiente ventana de dilogo presenta una lista de particiones a formatear.
Todas las particiones nuevas creadas deberan ser formateadas. Adems,
cualquier particin ya existente que contiene datos que no vas a necesitar debera
ser formateada tambin. Sin embargo, cuando ha habido una instalacin anterior
de linux que hubiese tenido particiones tales como /home o /usr/local no deben
ser formateadas por si contienen datos que se desean mantener. Seleccionar
cada particin a formatear y pulsa [Espacio]. Normalmente la particin que se
formatea es la de root, ya que se est realizando una instalacin nueva. Si se
desea chequear si existen bloques defectuosos mientras se formatea cada
sistema de ficheros, seleccinarlo pulsando [Espacio].

53

LINUX

Mayo 2004

Figura 2-16. Formateando particiones

2.15 Seleccionando e instalando paquetes

Despus de que tus particiones han sido configuradas y formateadas, se debern


seleccionar los paquetes de la instalacin. Se pueden seleccionar componentes,
que agrupa los paquetes de acuerdo a su funcin, paquetes individuales, o una
combinacin de los dos.
2.16 Seleccionando componentes
Los grupos de componentes se empaquetan juntos de acuerdo con la
funcionalidad que proporcionan. Por ejemplo, C Development (Desarrollo en
C),Networked Workstation (Estacin de trabajo en red), o Web Server
(Servidor web). Seleccionar cada componente a instalar y pulsar [Espacio].
Seleccionando Everything (que puede ser encontrado al final de la lista de
componentes) se instalan todos los paquetes incluidos con Red Hat Linux. Si se
quiere seleccionar o deseleccionar paquetes individuales, activar Seleccionar los
paquetes individualmente.

54

LINUX

Mayo 2004

Figura 2-17. Seleccionando componentes del sistema

2.17 Seleccionando paquetes individuales


Despus de seleccionar los componentes que se van a instalar, se seleccionan o
deseleccionan paquetes individuales. El programa de instalacin presenta una
lista de grupos de paquetes disponibles; seleccionar un grupo a examinar y pulsar
[Enter]. El programa de instalacin presenta una lista de los paquetes en el grupo,
que pueden seleccionarse o deseleccionarse usando [Espacio] (ver Figura 11).
Para ver la descripcin detallada de un paquete al pulsar [F1]. Cuando se ha
terminado de seleccionar los paquetes individuales, pulsar OK en el cuadro de
dilogo Select Group.
Algunos paquetes (tales como el kernel y ciertas libreras) son necesarios para
cualquier sistema Red Hat Linux y no estn disponibles para seleccionar o
deseleccionar.

55

LINUX

Mayo 2004

Figura 2-18. Seleccionando paquetes

2.18Lista de paquetes de instalacin :

Soporte de Impresora

X Windows

GNOME

KDE

Suit de ofimtica

Herramientas

Acceso Dos/Windows

Gestores de ficheros

Tratamientos grficos

Juegos (modo texto, y X Windows)

Multimedia

Puesto de trabajo en Red

Conexiones telefnicas

News

Servidor NFS
56

LINUX

Mayo 2004

Samba

IPX

Servidor FTP

Servidor Web

Servidor DNS

Servidor SQL

Formateo de docs TeX

Emacs

Xemacs

Programacin en C

Libreras

Programacin en C ++

Prog X

Prog. GNOME

Prog KERNEL.

Tras un periodo de copia de los paquetes se procede a la instalacin de la RED.


2.19 Configuracin de Red Local :
Primeramente se realiza automticamente la deteccin de la tarjeta de Red.
Una vez est detectada habr que pasar los siguientes parmetros:

Direccin IP: Normalmente representada por un conjunto de cuatro


nmeros separados por puntos, tal que 138.100.101.84.

Mscara de subRed: Otro conjunto de cuatro nmeros separados por


puntos. Un ejemplo de mascara podra ser 255.255.254.0.

Direccin IP del gateway: Otro conjunto mas de cuatro nmeros


separados por puntos. Por ejemplo, 138.100.100.1.

Una o ms direcciones IP de servidores de nombres: Uno o ms


conjuntos de nmeros separados por comas. 138.100.4.8 puede ser una
direccin de un servidor de nombres.

Nombre de dominio: El nombre dado a tu organizacin. Por ejemplo, el


del laboratorio de clculo automtico que se llama ISA.
57

LINUX

Mayo 2004

Nombre del sistema: El nombre del ordenador. Un ordenador puede


llamarse servos05, por ejemplo.

Una o ms direcciones IP de servidores de nombres (DNS)


secundarios y terciarios: Uno o ms conjuntos de nmeros separados
por comas. 138.100.4.4 puede ser una direccin de un servidor de
nombres.

2.20 Configurando el reloj


A continuacin, el programa de instalacin presentar un dilogo para ayudar a la
instalacin. Si quiere poner el reloj de hardware del CMOS al GMT (Hora
Estndar de Greenwich, tambin conocida como UTC u Horario Universal
Coordinado), seleccione Seleccionar reloj con GMT. Poner el reloj de hardware
al GMT quiere decir que el sistema podr manejar apropiadamente el horario de
verano si la zona horaria de residencia lo utiliza. Muchas redes utilizan GMT.

Figura 2-19. Configuracin de la Zona Horaria

Se selecciona la zona horaria en donde el sistema estar operando de la lista y se


presiona [Intro].

58

LINUX

Mayo 2004

2.21 Seleccionando los servicios de arranque :


En esta pantalla lo que se realiza es bsicamente es la seleccin de los demonios
que se van a poner en funcionamiento cada vez que arranquemos linux.

Figura 2-20. Seleccin de servicios de arranque

Obsrvese que se puede correr /usr/sbin/ntsysv o /sbin/chkconfig despus de la


instalacin para cambiar que servicios se inician automticamente durante el
arranque del sistema. Para ordenadores que no vayan a funcionar en red o
conectados a Internet es aconsejable que se deseleccionen los demonios que
tengan que ver con la red. Independientemente de tener o no tener red es
aconsejable, si no se tiene un servidor de correo electrnico configurado, eliminar
el demonio sendmail ya que ste da problemas al arrancar con el LILO y
ralentiza el arranque de manera considerable.
2.22 Configuracin de la Impresora

59

LINUX

Mayo 2004

Una vez seleccionada la configuracin de red, el programa de instalacin


preguntar si se quiere configurar una impresora. Si se selecciona Yes (si), una
caja de dilogo preguntar cmo est conectada la impresora a la computadora

Figura 2-21. Seleccionando el tipo de la impresora

A continuacin se har una breve descripcin de los tres tipos de conexiones de


impresora disponibles:

Local: Esta impresora est directamente conectada a la computadora.

Remote lpd:. Esta impresora est conectada a una red de rea local (ya
sea a travs de otra computadora o directamente), y es capaz de
comunicarse va lpr/lpd.

LAN Manager: Esta impresora est conectada a otra computadora que


comparte a la impresora va LAN Manager (o SMB) que es lo que Windows
3.11 o Windows 95 normalmente utilizan.

Una vez seleccionado un tipo de impresora, se presentar una caja de dilogo


titulada Standard Printer Options u Opciones de impresin estndar. Escriba el
nombre de la cola de impresin y el directorio de intercambio (spool) que se
quiera usar, o simplemente aceptar la informacin mostrada all.

60

LINUX

Mayo 2004

Figura 2-22. Opciones de impresin estndar

La caja de dilogo que se ver a continuacin depende del tipo de conexin a la


impresora que se haya seleccionado. Seleccione la seccin que corresponda a su
tipo de conexin.

Local

Remote lpd

LAN Manager

61

LINUX

Mayo 2004

2.22.1 Impresoras conectadas localmente


Si se ha seleccionado Local como el tipo de conexin a la impresora, se ver
una caja de dilogo.

Figura 2-23. Dispositivo de impresora local

Escoja el nombre del dispositivo de impresora local en el campo provisto. Por


conveniencia, el programa intenta determinar cuales puertos de impresora estn
disponibles en la computadora. Seleccione Next, y presione [Espacio].

62

LINUX

Mayo 2004

2.22.2 Impresoras lpd remotas


Si se seleccion Remote lpd como la forma de conexin a la impresora, se ver
una caja de dilogo.

Figura 2-24. Opciones de la impresora lpd remota

Escriba el nombre de la computadora a la cual la impresora est directamente


conectada en el campo Remote hostname. El nombre de la cola en la
computadora remota que est asociada con la impresora remota va en el campo
remote queue. Seleccionar Next, y presionar [Espacio].

63

LINUX

Mayo 2004

2.22.3 Impresoras con LAN Manager


Si se ha seleccionado LAN Manager como la conexin a la impresora, se ver
una caja de dilogo y presione [Espacio].

Figura 2-25 Opciones de la impresora LAN Manager

Concluya la configuracin de la impresora


Ahora se ver una caja de dilogos titulada Configure Printer. Seleccione el tipo
de impresora que ms se acerque a la suya. Seleccionar Next, y presionar
[Espacio] para continuar.

64

LINUX

Mayo 2004

Figura 2-26 Configuracin de la impresora

Despus de seleccionar el tipo de impresora, se ver una caja de dilogo. Ajuste


el tamao del papel y la resolucin. La opcin Fix stair-stepping of text (arreglar
la impresin en escalera del texto) debe ser puesta si la impresora no hace un
retorno de carro automtico despus de cada lnea.

Figura 2-27 Ajustes de la impresora

Finalmente, se ver una caja de dilogo que contiene toda la informacin


pertinente sobre la impresora Verificar que la informacin sea correcta.
65

LINUX

Mayo 2004

Si todo est bien, seleccionar Done (Hecho). Si necesita hacer cambios,


seleccionar Edit (Editar). Tambin se puede seleccionar Cancel (Cancelar) si se
prefiere no configurar una impresora en este momento.

Figura 2-28 Verificando la informacin de la impresora

Si se selecciona Done, se dar opcin para configura otra impresora, o puede


continuar con otra etapa de la instalacin.
2.23 Poniendo la clave de root
A continuacin, el programa de instalacin pedir que se ponga la clave de root
del sistema. La clave de root se utilizar para ingresar al sistema Red Hat Linux la
primera vez

66

LINUX

Mayo 2004

Figura 2-29 Clave de root

2.24 Creacin de cuentas sin privilegios :


Esta versin de Red Hat nos da la posibilidad durante la instalacin de crear
cuentas de usuarios sin privilegios. Esta etapa es completamente opcional, En
caso de realizarla rellenar los siguientes pasos:

Figura 2-30. Creacin de cuentas sin privilegios

2.25 Creacin de disquete de arranque LILO


El sistema nos pide un disquete para utilizarlo para arrancar la mquina en Linux.
Esta opcin es imprescindible sobre todo si la mquina est compartida con
Windows.
67

LINUX

Mayo 2004

Despus de presionar SI, el sistema pide la insercin de un disquete en la


disquetera, que la llama /dev/fd0. Una vez insertado el disquete en la disquetera
presionar aceptar para la creacin del disquete de arranque con el LILO.
Una vez realizada la copia del disquete, se dejar en la disquetera ya que cuando
el sistema vuelva a reiniciarse en posteriores fases de la instalacin se deber
arrancar con el disquete de arranque.
2.26 Instalacin de LILO
Para que el sistema Red Hat Linux pueda arrancar, es necesario instalar el LILO
(the LInux Loader, o el cargador de linux por su significado del ingls). Se puede
instalar el LILO en dos sitios:

El Master Boot Record (MBR) o registro de arranque maestro:


Es el lugar recomendado para instalar LILO, a menos que otro cargador de
sistema operativo (p.ej., System Commander o el Boot Manager del OS/2)
ya est instalado all. Cuando su mquina arranca, LILO inicia y presenta el
indicador boot:; se puede arrancar Red Hat Linux u otro sistema operativo
que se haya configurado dentro del LILO para su arranque. No es el sitio
apropiado si en la mquina se dispone de otros sistemas operativos.

El primer sector de la particin raz:


Esto se recomienda si ya se est utilizando otro arrancador de inicio en su
sistema o lo que es lo mismo si se dispone de otro sistema operativo como
pueda ser Windows NT o Windows 95 y 98; entonces se le puede indicar la
cargador que inicie LILO y arranque al Red Hat Linux.
Aparecer una caja de dilogo que permitir seleccionar el tipo de
instalacin LILO que se desee. Seleccione el lugar en el que desee instalar
el LILO y presione

OK. Si no quiere instalar LILO, presione Skip

68

LINUX

Mayo 2004

Figura 2-31 Instalacin del sector de arranque.

Si se selecciona Skip, no se podr arrancar el sistema Red Hat Linux


directamente y se necesitar utilizar otro mtodo de arranque (como por ejemplo
un disquete de arranque).
Aadiendo opciones a la lnea de arranque del LILO
Finalmente, el programa de instalacin preguntar si se quiere agregar opciones
por defecto a la lnea de comandos del LILO.
Cualesquiera opciones que se escriban all sern transmitidas al ncleo de Linux
cada vez que se arranque el sistema. Si tiene un drive LBA, marque Use linear
mode (use el modo lineal). Seleccione OK y presione [Espacio] cuando se
termine.

69

LINUX

Mayo 2004

Figura 2-32 Las opciones del LILO

Particiones de Arranque :
Se nos pregunta simplemente por la particin donde va a arrancar linux.
Simplemente habr que poner la Linux Native principal.
2.27 Configuracin de la tarjeta de video y monitor; Las X Windows :
Esta versin de instalacin de Red Hat obliga a hacer una configuracin de la
tarjeta de video. Normalmente sta ser detectada automticamente, pero puede
ocurrir que no sea as y por tanto habr que saber cules son los parmetros de
la tarjeta y seleccionarla de una lista.

2.27.1 Configuracin del monitor


Monitor: El fabricante y nmero de modelo, resolucin mxima permitida, as
como el rango permitido de frecuencias de refresco horizontal. En caso de no
venir el monitor en la lista habr que elegir el monitor tipo Custom

70

LINUX

Mayo 2004

2.28 Xconfigurator
Lo primero que hay que hacer para configurar X Windows es escoger la tarjeta de
vdeo. Hay que recorrer la lista de las tarjetas soportadas hasta que se encuentre
la de la mquina. Si la tarjeta no est en la lista, podra no estar soportada por
XFree86. En ese caso se puede intentar con la ltima opcin de la lista (Unlisted
Card) o con un servidor comercial XWindows, como Metro X.
El siguiente paso es seleccionar el monitor. En caso de que el monitor no est en
la lista, se puede escoger uno de los monitores genricos o hacerlo a medida e
introducir sus propios parmetros. La configuracin hecha a medida se
recomienda nicamente a aquellas personas que tengan conocimientos del
funcionamiento interno de los monitores CRT. El usuario medio debera usar una
de las selecciones genricas de la lista. Una vez seleccionado el monitor, debe
indicar a Xconfigurator cunta memoria de vdeo se tiene.
Mueva el cursor sobre la opcin adecuada y pulsar [Enter] o [F12] para continuar.
Para el siguiente paso, se recomienda que seleccione la opcin por defecto (No
Clock chip Setting). Aquellos usuarios con experiencia podran querer seleccionar
un chip de chip especfico. Si no se est seguro del chip que tiene, la mejor forma
de averiguarlo es mirando en la tarjeta.
Tras una serie de pruebas una vez visto el mensaje de prueba se encontrar
finalizada la primera parte de la instalacin.
Reiniciando el sistema :
Despus de la configuracin anterior se reinicia el sistema. Para ello hay que
asegurar el no tener insertado el CD de Red Hat en el CD- ROM y de arrancar
con el disco de LILO metido en la disquetera.
Nada ms arrancar la primera configuracin que se realiza es :

Instalacin de MODEM.

Instalacin de la tarjeta de sonido.

Dado que se tienen todos los datos de la tarjeta y el MODEM es cuestin de


ponerlos ya que ambos son detectados automticamente.
En caso de no tener alguno de los componentes cuando vaya a comenzar su
configuracin habr de elegirse la opcin de cancelar.
71

LINUX

Mayo 2004

Fin de la instalacin.
Ya se tiene Red Hat 6.0 en castellano instalado y listo para funcionar.
CONCLUSIONES
Es bien sabido que cuando se conoce el procedimiento para la instalacin de
cualquier tipo de dispositivo, programa, etc el ahorro de tiempo es mayor. Por otra
parte se espera que el funcionamiento del mismo sea optimo y por lo tanto la
interaccin. En el siguiente capitulo se hablara de la configuracin de un DNS.

72

LINUX

Mayo 2004

Captulo 3
Configuracin de Hardware y Software de Red
Dentro

de

este

capitulo

abordaremos

cuestiones

importantes

de

configuracin tanto del hardware como del software de los usuarios y del servidor
dentro de nuestra red ; abordaremos temas importantes sobre la configuracin
para redes TCP/IP, conexiones SLIP y Protocolo punto a punto. Se revisara de
forma amplia la configuracin e implementacin del servidor de nombres de
dominio (DNS). Adems se abordaremos una de las partes mas importantes
dentro de la seguridad de redes administradas con Linux que son cuestiones
bsicas sobre la creacin y configuracin de un contrafuegos.
3.1. Configuracin del hardware de red
Explicaremos en esta seccin qu es lo que pasa cuando el cdigo de red del
ncleo accede a una parte del hardware. Para ello, y antes que nada, tenemos
que hablar un poco sobre los conceptos de interfaz y controladores.
Primero, evidentemente, est el hardware por s mismo; por ejemplo, una tarjeta
Ethernet, FDDI o Token Ring: es una oblea de silicio, atiborrada de montones de
pequeos chips con extraos nmeros encima e insertada en una ranura de su
PC. Esto es lo que por lo general denominamos un dispositivo fsico.
Para poder utilizar una tarjeta de red son necesarias una serie de funciones
especiales definidas en el ncleo de Linux que seran capaces de entender la
forma particular de acceso al dispositivo. Al software que implementa estas
funciones se le llama controlador. Linux tiene controladores para muchos tipos de
tarjetas de red: ISA, PCI, MCA, EISA, puerto paralelo, PCMCIA, y ms
recientemente, USB.
Pero qu es lo que queremos decir con que un controlador gestione un
dispositivo? Vamos a tratar sobre esto con una tarjeta Ethernet. El controlador
tiene que ser capaz de comunicarse de alguna forma con la lgica interna de la
tarjeta: tiene que enviar rdenes y datos a la tarjeta, mientras que la tarjeta debe
transmitir al controlador cualquier dato recibido.
En un PC compatible, esta comunicacin se establece por medio de una serie de
direcciones de E/S que son mapeadas a los registros de la tarjeta y/o a travs de
73

LINUX

Mayo 2004

transferencias directas o compartidas a memoria. Todos las rdenes y datos que


el ncleo enva a la tarjeta tienen que ir a estas direcciones. Las direcciones de
memoria y E/S son obtenidas generalmente por medio del arranque o de las
direcciones base. Las direcciones base tpicas para las tarjetas Ethernet por bus
ISA son 0x280 o 0x300. Las tarjetas de red por bus PCI generalmente ya tienen
asignada automticamente su direccin de E/S.
Normalmente no hay que preocuparse por asuntos de hardware como las
direcciones base porque al arrancar el ncleo intenta detectar la localizacin de la
tarjeta. Esto es llamado autoverificacin , que significa que el ncleo lee varias
posiciones de memoria y compara los datos que ha encontrado con los que
esperara ver si una tarjeta de red en concreto estuviese instalada en esa
posicin. Por otro lado, el ncleo intentar detectar solamente un nico dispositivo
de red al arrancar. Si est usando ms de una tarjeta, tendr que informar al
ncleo de las otras tarjetas explcitamente.
Otro de los parmetros del que puede tener que informar al ncleo es la lnea de
peticin de interrupcin. Los componentes hardware normalmente interrumpen al
ncleo cuando tienen la necesidad de que ste se ocupe de ellos, por ejemplo,
cuando han llegado datos o se presenta una condicin especial. En un bus ISA,
las interrupciones pueden ocurrir en uno de los 15 canales de interrupcin
numerados asi: 0, 1, y del 3 al 15. Al nmero de interrupcin asignado a un
componente hardware se le denomina nmero de peticin de interrupcin (IRQ).
Nota: el ncleo accede a un dispositivo mediante lo que llamamos un interfaz.
Los interfaces ofrecen un conjunto abstracto de funciones que es el mismo para
todo tipo de hardware. Los interfaces se identifican por medio de nombres. En
muchos sistemas operativos tipo Unix, el interfaz de red se implementa como un
archivo de dispositivo especial en el directorio /dev/. Si usted teclea la orden ls-las
/dev/, ver como aparecen sus archivos de dispositivos. En la columna de
permisos de los archivos (segunda) ver que los archivos de dispositivos
comienzan con una letra en vez del guin visto con los archivos normales. Este
carcter indica el tipo de dispositivo. Los tipos de dispositivos ms comunes son
los b, que indica que es un dispositivo de bloque y maneja grandes bloques de
datos cada vez que lee y escribe, y que indica que el dispositivo es un dispositvo
de carcter y maneja datos de un solo carcter cada vez.
74

LINUX

Mayo 2004

Donde normalmente deseara ver el tamao del archivo en la salida de ls, en vez
de eso ver dos nmeros, llamados los nmeros de dispositivo "major" y "minor"
(primario y secundario). Estos nmeros indican el dispositivo actual al que est
asociado el archivo de dispositivo.
Cada controlador de dispositivo registra un nico nmero primario para el ncleo.
En cada caso los registros de dispositivos tienen un nico nmero secundario
para dicho dispositivo primario. Los interfaces tty,/dev/tty*, son unos dispositivos
de modo carcter por lo que indica la c, y tienen un maximo nmero de 4, pero
/dev/tty1 tiene un nmero menor de 1, y /dev/tty2 tiene un nmero menor de 2.
Los nombres de las interfaces de Linux son definidos internamente en el ncleo y
no son ficheros de dispositivos del directorio /dev. Algunos nombres de
dispositivos tpicos sern listados despus en Seccin 3.1.2. La asignacin de
interfaces a los dispositivos depende normalmente del orden en que los
dispositivos son configurados. Las interfaces SLIP son manejadas de forma
diferente a otras porque stas son asignadas dinmicamente. Cuando se
establece una conexin SLIP, una interfaz es asignada al puerto serie.
Figura 3-1 Ilustra la relacin entre el hardware, los controladores de dispositivos, y
las interfaces.

Figura 3-1. Relacin entre controladores, interfaces, y hardware

Al arrancar, el ncleo muestra los dispositivos detectados y las interfaces que


instala. Lo siguiente es un extracto de la pantalla de arranque:
.
.ThisprocessorhonorstheWPbitevenwheninsupervisormode./

75

LINUX

Mayo 2004

Good.
SwanseaUniversityComputerSocietyNET3.035forLinux2.0
NET3:Unixdomainsockets0.13forLinuxNET3.035.
SwanseaUniversityComputerSocietyTCP/IPforNET3.034
IPProtocols:IGMP,ICMP,UDP,TCP
SwanseaUniversityComputerSocietyIPX0.34forNET3.035
IPXPortionsCopyright(c)1995Caldera,Inc.
Serialdriverversion4.13withnoserialoptionsenabled
tty00at0x03f8(irq=4)isa16550A
tty01at0x02f8(irq=3)isa16550A
CSLIP:codecopyright1989RegentsoftheUniversityofCalifornia
PPP:Version2.2.0(dynamicchannelallocation)
PPPDynamicchannelallocationcodecopyright1995Caldera,Inc.
PPPlinedisciplineregistered.
eth0:3c509at0x300tag1,10baseTport,address00a0240ee4e0,/
IRQ10.
3c509.c:1.126/4/97becker@cesdis.gsfc.nasa.gov
LinuxVersion2.0.32(root@perf)(gccVersion2.7.2.1)
#1TueOct2115:30:44EST1997
.

Este ejemplo muestra que el ncleo ha sido compilado con el TCP/IP activado e
incluyendo controladores para SLIP, CSLIP, y PPP. La tercera lnea empezando
desde abajo muestra que una tarjeta Ethernet 3C509 ha sido detectada e
instalada como la interfaz eth0. Si tiene una tarjeta de red instalada pero no
aparece ningn mensaje similar significa que el ncleo es incapaz de detectar su
tarjeta correctamente. Esta situacin ser tratada ms adelante en la seccin
Ethernet Autoprobing.
3.1.1. Configuracin del ncleo
Muchas distribuciones de Linux vienen con discos de arranque que funcionan con
el hardware para PC ms comn. Normalmente, el ncleo suministrado es
altamente modulable e incluye casi cualquier controlador que pueda necesitar. No
es un buen sistema tener almacenados controladores en su disco que nunca va a
usar. Por lo tanto, ser conveniente crear su propio ncleo e incluir slo aquellos
controladores que realmente necesite o desee; de esta forma ahorrar un poco de
espacio en disco y reduce el tiempo que lleva compilar un ncleo nuevo.

76

LINUX

Mayo 2004

En cualquier caso, al trabajar con un sistema Linux, le deber ser familiar la


compilacin de un ncleo.
Piense en esto como si fuera un trnsito, una afirmacin de una de las cosas que
hace al software libre ms poderoso de lo que ya es usted tiene las fuentes. Este
no es un caso de, tengo que compilar un ncleo, ms bien es el caso de, puedo
compilar un ncleo. En esta seccin solo trataremos las opciones de
configuracin que afectan a la red.
Un punto importante que vamos a ver aqu es la forma en que funciona el
esquema de numeracin de la versin del ncleo. Los ncleos Linux son
numerados en el siguiente formato: 2.2.14. El primer dgito indica el nmero de
versin primario. Este dgito cambia cuando hay cambios numerosos y
significativos en el diseo del ncleo. Por ejemplo, el ncleo cambio del 1 al 2
cuando obtuvo soporte para mquinas de diferente arquitectura a la Intel x86 (la
del PC). El segundo nmero es el nmero de versin secundario. En muchos
aspectos, este nmero es el ms importante a tener en cuenta. Se ha adoptado
un estndar en el cual un nmero de versin secundario par indica que el ncleo
est en produccin, o es estable, y un nmero de versin secundario impar indica
que el ncleo esta en desarrollo, o es inestable. Debe usar los ncleos estables
para los equipos importantes, ya que han sido comprobados ms a fondo. Los
ncleos en desarrollo son los que debe de usar si est interesado en
experimentar con las ltimas caractersticas de Linux. El tercer nmero es
simplemente un incremento por cada liberacin de una versin secundaria.
Se ejecutar make menuconfig, aparecer un men de texto que le mostrar
una lista de cuestiones sobre la configuracin, como por ejemplo, si desea usar la
emulacin del coprocesador matemtico en el ncleo. Una de esas cuestiones
pregunta si desea soporte para redes TCP/IP. Debe contestar con y para que el
ncleo sea capaz de trabajar con redes TCP/IP.
Opciones del Ncleo Linux 2.0 y superiores
Despus de completar la seccin de opciones generales, se le preguntar si
quiere incluir soporte para varios tipos de dispositivos, como controladoras SCSI o
tarjetas de sonido. Siempre tiene la opcin de s (y) para incluir dicho componente
de forma esttica en el ncleo, o no (n) para excluir un componente
77

LINUX

Mayo 2004

completamente. Aparte puede ver la opcin de mdulo (m) para que dicho
componente sea compilado como un mdulo cargable. Los mdulos necesitan ser
cargados antes para que puedan ser usados.
La siguiente lista de preguntas trata sobre el soporte de red. El juego exacto de
opciones de configuracin cambia constantemente debido al continuo desarrollo.
Una lista tpica de las opciones ofrecidas por la mayora de las versiones del
ncleo puede ser sta:
*
*Networkdevicesupport
*
Networkdevicesupport(CONFIG_NETDEVICES)[Y/n/?]

Debe responder a esta cuestin con ysi quiere usar cualquier tipo de dispositivo de red, ya sea
Ethernet, SLIP, PPP, o el que sea. Cuando conteste a la pregunta con y, el soporte para los
dispositivos Ethernet ser activado automticamente. Deber responder a otras preguntas si quiere
habilitar el soporte de otros tipos de controladores de red:
PLIP(parallelport)support(CONFIG_PLIP)[N/y/m/?]y
PPP(pointtopoint)support(CONFIG_PPP)[N/y/m/?]y
*
*CCPcompressorsforPPPareonlybuiltasmodules.
*
SLIP(serialline)support(CONFIG_SLIP)[N/y/m/?]m
CSLIPcompressedheaders(CONFIG_SLIP_COMPRESSED)[N/y/?](NEW)y
Keepaliveandlinefill(CONFIG_SLIP_SMART)[N/y/?](NEW)y
SixbitSLIPencapsulation(CONFIG_SLIP_MODE_SLIP6)[N/y/?](NEW)y

Estas cuestiones conciernen a varios protocolos de la capa de enlace que Linux


soporta. PPP y SLIP le permiten transportar datagramas IP a travs de lneas
serie. PPP es usado actualmente por un grupo de protocolos para enviar el trfico
de la red a travs de lneas serie. Algunos de los protocolos que forman PPP
gestionan la manera de poderse autentificar en el servidor, mientras otros
gestionan el modo en que ciertos protocolos son transportados por el enlace PPP
no esta limitado a transportar solo datagramas TCP/IP; adems de este protocolo
tambin puede transportar otros como el IPX. La opcin de comprimir las
cabeceras permite el soporte para CSLIP, una tcnica que comprime las
cabeceras TCP/IP a solo 3 pequeos bytes. Recuerde que esta opcin del ncleo
no activa automticamente el CSLIP; simplemente provee las funciones
78

LINUX

Mayo 2004

necesarias al ncleo para ello. La opcin Keepalive and linefill causa que el
soporte de SLIP genere peridicamente actividad en la lnea para prevenir que
sta sea desconectada por inactividad. La opcin Six bit SLIP encapsulation le
permite ejecutar SLIP sobre lneas y circuitos que no son capaces de transmitir el
grupo de 8-bit de datos correctamente. Esto es similar al uuencoding o la tcnica
binhex usada para enviar archivos binarios por e-mail. PLIP proporciona una
forma de enviar datagramas IP a travs de una conexin por puerto paralelo. Esto
es usado comnmente para comunicarse con PCs que usan DOS. En el hardware
tpico de PC, PLIP puede ser ms rpido que PPP o SLIP, pero requiere mucha
ms capacidad en el CPU para funcionar, adems cuando la tasa de transferencia
sea buena, otras tareas en la mquina podran volverse ms lentas.
A medida que se desarrollan ms controladores, la lista de preguntas en esta
seccin se hace mayor. Si desea compilar un ncleo que se pueda usar en varias
mquinas, o si su mquina tiene ms de un tipo de tarjeta de red instalada, puede
activar ms de un controlador:
.
.
Ethernet(10or100Mbit)(CONFIG_NET_ETHERNET)[Y/n/?]
3COMcards(CONFIG_NET_VENDOR_3COM)[Y/n/?]
3c501support(CONFIG_EL1)[N/y/m/?]
3c503support(CONFIG_EL2)[N/y/m/?]

.3c509/3c579support(CONFIG_EL3)[Y/m/n/?]
3c590/3c900series(592/595/597/900/905)"Vortex/Boomerang"support/
(CONFIG_VORTEX)[N/y/m/?]
AMDLANCEandPCnet(AT1500andNE2100)support(CONFIG_LANCE)[N/y/?]
AMDPCInet32(VLBandPCI)support(CONFIG_LANCE32)[N/y/?](NEW)
WesternDigital/SMCcards(CONFIG_NET_VENDOR_SMC)[N/y/?]
WD80*3support(CONFIG_WD80x3)[N/y/m/?](NEW)
SMCUltrasupport(CONFIG_ULTRA)[N/y/m/?](NEW)
SMCUltra32support(CONFIG_ULTRA32)[N/y/m/?](NEW)
SMC9194support(CONFIG_SMC9194)[N/y/m/?](NEW)
OtherISAcards(CONFIG_NET_ISA)[N/y/?]
CabletronE21xxsupport(CONFIG_E2100)[N/y/m/?](NEW)
DEPCA,DE10x,DE200,DE201,DE202,DE422support(CONFIG_DEPCA)[N/y/m/?]/
(NEW)
EtherWORKS3(DE203,DE204,DE205)support(CONFIG_EWRK3)[N/y/m/?](NEW)
EtherExpress16support(CONFIG_EEXPRESS)[N/y/m/?](NEW)
HPPCLAN+(27247Band27252A)support(CONFIG_HPLAN_PLUS)[N/y/m/?](NEW)

79

LINUX

Mayo 2004

HPPCLAN(27245andother27xxxseries)support(CONFIG_HPLAN)[N/y/m/?]/
(NEW)
HP10/100VGPCLAN(ISA,EISA,PCI)support(CONFIG_HP100)[N/y/m/?](NEW)
NE2000/NE1000support(CONFIG_NE2000)[N/y/m/?](NEW)
SK_G16support(CONFIG_SK_G16)[N/y/?](NEW)
EISA,VLB,PCIandoncardcontrollers(CONFIG_NET_EISA)[N/y/?]
ApricotXenIIoncardethernet(CONFIG_APRICOT)[N/y/m/?](NEW)
IntelEtherExpress/Pro100Bsupport(CONFIG_EEXPRESS_PRO100B)[N/y/m/?]/
(NEW)
DE425,DE434,DE435,DE450,DE500support(CONFIG_DE4X5)[N/y/m/?](NEW)
DECchipTulip(dc21x4x)PCIsupport(CONFIG_DEC_ELCP)[N/y/m/?](NEW)
DigiIntl.RightSwitchSEXsupport(CONFIG_DGRS)[N/y/m/?](NEW)
Pocketandportableadaptors(CONFIG_NET_POCKET)[N/y/?]
ATLANTEC/RealTekpocketadaptorsupport(CONFIG_ATP)[N/y/?](NEW)
DLinkDE600pocketadaptorsupport(CONFIG_DE600)[N/y/m/?](NEW)
DLinkDE620pocketadaptorsupport(CONFIG_DE620)[N/y/m/?](NEW)
TokenRingcontroladorsupport(CONFIG_TR)[N/y/?]
IBMTropicchipsetbasedadaptorsupport(CONFIG_IBMTR)[N/y/m/?](NEW)
FDDIcontroladorsupport(CONFIG_FDDI)[N/y/?]
DigitalDEFEAandDEFPAadaptersupport(CONFIG_DEFXX)[N/y/?](NEW)
ARCnetsupport(CONFIG_ARCNET)[N/y/m/?]
Enablearc0e(ARCnet"EtherEncap"packetformat)(CONFIG_ARCNET_ETH)/
[N/y/?](NEW)
Enablearc0s(ARCnetRFC1051packetformat)(CONFIG_ARCNET_1051)/
[N/y/?](NEW)
.
.

Finalmente, en la seccin de los sistemas de ficheros, el script de configuracin le


preguntar si desea soporte para NFS (networking file system), el sistema de
ficheros en red. NFS le permite exportar sistemas de ficheros en varios hosts,
haciendo que los ficheros aparezcan como si estuvieran en un disco duro normal
y corriente conectado al host.
NFS file system support (CONFIG_NFS_FS) [y]

Describiremos el NFS con detalle en Captulo 4.


Opcines de red del ncleo de GNU/Linux 2.0.0 and Higher
Linux 2.0.0 marc un cambio significativo en el trabajo en red de Linux. Muchas
caractersticas formaron parte estndar del ncleo, como el soporte para IPX.
Tambin fueron aadidas y hechas configurables un buen nmero de opciones.
80

LINUX

Mayo 2004

Vamos a listar unas cuantas opciones tiles en esta seccin, y explicaremos


cuando debe usar cada una.
Basics
Para trabajar en redes TCP/IP, debe contestar a esta cuestin con y. Aun
contestando con n podra compilar el ncleo con soporte para IPX.
Networkingoptions>
[*]TCP/IPnetworking

Ruteadores
Tiene que activar esta opcin si su sistema va a actuar como un ruteador entre
dos redes, entre una red y un enlace SLIP, etc.. Podra querer desactivarla para
configurar el nodo como un cortafuegos. Los cortafuegos (o firewalls) son nodos
que estn conectados a dos o ms redes, pero que no enrutan el trfico entre
ellas.
[*]IP:forwarding/gatewaying

Virtual hosting
Estas opciones permiten configurar ms de una direccin IP para una nica
interfaz. Esto es til si quiere hacer virtual hosting, (alojamiento virtual), con una
sola mquina que puede ser configurada para escuchar y actuar como si esta
fuera varias mquinas separadas entre s, cada una con su propia configuracin
de red. Ms adelante hablaremos acerca del IP aliasing:
[*]Networkaliasing
<*>IP:aliasingsupport

Accounting
Esta opcin le permite recolectar los datos en el caudal del trfico IP enviados o
recibidos en su mquina:
[*]IP:accounting

81

LINUX

Mayo 2004

PC hug
Esta opcin evita incompatibilidades con algunas versiones de PC/TCP, una
implementacin comercial de TCP/IP basada en DOS para PCs.
(itissafetoleavetheseuntouched)
[*]IP:PC/TCPcompatibilitymode

Diskless booting
Esta funcin activa el Protocolo de Resolucin de Direcciones Inverso (RARP).
RARP se utiliza en clientes sin disco y terminales X para pedir su direccin IP al
arrancar. Deber activar RARP si planea ofrecer este tipo de servicios:
<*>IP:ReverseARP

MTU
Cuando enviamos datos sobre TCP, el ncleo tiene que dividir stos en varios
bloques de datos para pasarlos al nivel IP. El tamao de estos bloques es llamado
la Unidad Maxima de Transmisin (Maximum Transmission Unit), o MTU. Para los
nodos accesibles a travs de una red local como una Ethernet, se usa un MTU
tan alto como la mxima longitud permitida para los paquetes Ethernet 1,500
bytes. Cuando enrutamos IP sobre una WAN como Internet, es preferible usar
datagramas de menor tamao para asegurarnos de que no necesitan ser partidos
de nuevo a lo largo de la ruta mediante el proceso llamado fragmentacin IP. El
ncleo es capaz de determinar automticamente el MTU ms bajo de una ruta IP
y configurar automticamente una conexin TCP para usar ste. Este
comportamiento es activado por defecto. Si contesta con y a esta opcin, esta
caracterstica ser deshabilitada.
[]IP:DisablePathMTUDiscovery(normallyenabled)

Security feature
El protocolo IP soporta una caracterstica llamada Source Routing Source Routing
le permite especificar la ruta que un datagrama debe seguir mediante la grabacin
por usted mismo de la ruta dentro del datagrama. Esto fue alguna vez til antes
de que los protocolos de enrutamiento como RIP y OSPF se hicieran usuales.
82

LINUX

Mayo 2004

Pero hoy da es considerado una amenaza de seguridad debido a que puede


facilitar a los atacantes inteligentes una forma de rodear ciertos tipos de
cortafuegos evitando la tabla de enrutamiento de un enrutador. Normalmente
desear filtrar la procedencia de los datagramas externos enrutados, por lo que
esta opcin est activada normalmente.
[*]IP:Dropsourceroutedframes

Novell support
Esta opcin activa el soporte para IPX, el protocolo de transmisin para redes que
usa Novell. Linux podra funcionar fcilmente como un enrutador IPX y su soporte
es til en entornos donde tiene servidores de ficheros Novell.
<*>TheIPXprotocol

Amateur radio
Estas tres opciones seleccionadas dan soporte para los tres protocolos de Radio
soportados por Linux: AX.25, NetRom y Rose:
<*>AmateurRadioAX.25Level2
<*>AmateurRadioNET/ROM
<*>AmateurRadioX.25PLP(Rose)

3.1.2. Un vistazo a los dispositivos de red de Linux


El ncleo Linux soporta multitud de controladores para varios tipos de hardware.
Hay un conjunto de nombres estndares para los interfaces en Linux que se
enumeraran a continuacin. La mayora de los controladores soportan ms de un
interfaz, en cuyo caso los interfaces son numeradas, como en eth0 y eth1:
lo ste es el interfaz de bucle local (loopback). Es usado para realizar tests, y
para un par de aplicaciones de red.
eth0, eth1, stos son los interfaces de las tarjetas Ethernet.
tr0, tr1, stos son las interfaces de las tarjetas Token Ring.
sl0, sl1, stos son los interfaces SLIP.
ppp0, ppp1, stos son los interfaces PPP.
83

LINUX

Mayo 2004

plip0, plip1, stas son los interfaces PLIP. PLIP transporta datagramas IP sobre
lneas paralelas.
ax0, ax1, Estas son las interfaces AX.25. AX.25 es el principal protocolo usado por
los radioaficionados.
En las siguientes secciones, se tratara en detalle el uso de los controladores
descritos anteriormente.
3.1.3. Instalacin de una Ethernet
Las versiones actuales de Linux soportan una gran variedad de tarjetas Ethernet.
Actualmente hay algunas tarjetas Ethernet comunes que no estn soportadas por
Linux poro seguramente pronto lo estarn gracias a los desarrolladores.
Para usar cualquiera de las tarjetas Ethernet soportadas con Linux, debe usar un
ncleo precompilado procedente de alguna de las principales distribuciones de
Linux.

Estos

generalmente

tienen

modulos

disponibles

para

todos

los

controladores soportados, y el proceso de instalacin normalmente permite


seleccionar qu controladores quiere cargar. A largo plazo, sin embargo, es mejor
construirse su propio ncleo y compilarlo slo con los controladores que necesita;
esto ahorra espacio y memoria.
Ethernet Autoprobing
Muchos de los controladores Ethernet de Linux son lo suficientemente listos para
saber como encontrar a su tarjeta Ethernet. Esto le ahorra tener que decirle al
ncleo dnde est.
Hay tres limitaciones en el cdigo de autoverificacin. Primero, ste no reconoce
bien todas las tarjetas. Segundo, el ncleo no autocomprobar para buscar ms
de una tarjeta a no ser que se le ordene. La mejor manera de hacer esto con
seguridad es configurar manualmente cada tarjeta Ethernet en su mquina.
Tercero, el controlador puede que no busque en las direcciones en que su tarjeta
est configurada.
Las tarjetas de red PCI suelen ser detectadas correctamente. Pero si est usando
ms de una tarjeta, o si la autodeteccin falla, tiene una forma de decirle al ncleo
la direccin base y el nombre de la tarjeta.
84

LINUX

Mayo 2004

En el arranque puede dar al ncleo informacin y mandatos que cualquiera de los


componentes de ste leern. Este mecanismo le permite enviar informacin al
ncleo que el controlador Ethernet pueda usar para localizar a su tarjeta Ethernet
o hacer que la detecte.
Si usa lilo para arrancar, puede enviarle al ncleo parmetros especificndolos a
travs de la opcin append en el fichero lilo.conf. Para informar al ncleo acerca
de un dispositivo Ethernet puede escribir los siguientes parmetros:
ether=irq,base_addr,[param1,][param2,]name

Los primeros cuatro parmetros son numricos, mientras que el ltimo es el


nombre del dispositivo. Los parmetros irq, base_addr, y name son necesarios,
pero los dos parmetros param son opcionales. Si cualquiera de los valores
numricos es puesto a cero, el ncleo determinar el valor por medio de la
autoverificacin.
El primer parmetro especifica el IRQ asignado al dispositivo. Por defecto, el
ncleo intentar autocomprobar el canal IRQ del dispositivo. El parmetro
base_addr proporciona la direccin base de E/S de la tarjeta, un valor de 0 le dir
al ncleo que pruebe las direcciones listadas arriba.
Varios controladores usan los dos parmetros siguentes de forma diferentes. Para
tarjetas de memoria-compartida, como la WD80x3, stos especificarn las
direcciones de principio y final del rea de memoria compartida. Otras tarjetas
normalmente usan el param1 para especificar el nivel de informacin para
debuging que es mostrada. Con valores del 1 al 7 variar la cantidad de
informacin mostrada, con 8 no se mostrar nada; con 0 se usar el valor por
omisin. El controlador 3c503 usa el param2 para elegir entre el transceptor
(transceiver) interno (por defecto) o el transceptor externo (el valor de 1). El
anterior usa el conector BNC de la tarjeta, el posterior usa el puerto AUI. Los
argumentos de param no son necesarios en todo si no tiene nada especial que
configurar.
El primer argumento no numerico es interpretado por el ncleo como el nombre
del dispositivo. Debe especificar un nombre de dispositivo para cada tarjeta
Ethernet. Si tiene dos tarjetas Ethernet, puede dejar que Linux autodetecte una e
85

LINUX

Mayo 2004

indicarle los parmetros de la segunda con lilo, pero probablemente querr


configurar manualmente las dos. Si decide que el ncleo busque la primera y
configurar manualmente la segunda, tendr que asegurarse de que el ncleo no
ha encontrado accidentalmente la segunda tarjeta primero, o cualquiera que no
quiera que sea registrada. Haga esto:
introduciendo en lilo la opcin reserve, con esto le dice al ncleo que evite la
comprobacin de la direccin base E/S que usa la segunda tarjeta. Para hacer
que Linux instale una segunda tarjeta Ethernet en 0x300 como eth1, tendr que
usar los siguientes argumentos en el ncleo:
reserve=0x300,32ether=0,0x300,eth1

La opcin reserve asegura que ningn controlador acceder a la direccin E/S de


la segunda tarjeta cuando compruebe algn dispositivo. Tambin puede usar los
parmetros del ncleo para evitar la autoverificacin para eth0:
reserve=0x340,32ether=0,0x340,eth0

Tambin puede desactivar la autoverificacin. Debe de hacer esto, por ejemlo,


para detener la bsqueda de una tarjeta Ethernet que ha quitado temporalmente.
Deshabilitar la autoverificacin es tan simple como especificar el base_addr con
un 1:
ether=0,1,eth0

Para indicar al ncleo stos parmetros antes de arrancar, introducir los


parmetros en el indicador "boot:" del lilo. Para que lilo muestre el indicador
"boot:", tiene que pulsar una de las siguientes teclas: Control, Alt o Shift, mientras
lilo est arrancando. Si pulsa la tecla del tabulador en el indicador, le aparecer la
lista de ncleos que puede arrancar. Para arrancar un ncleo con los parmetos
suministrados escriba el nombre del ncleo que desea que arranque, seguido de
un espacio, acompandolo con el parmetro que desea. Cuando pulse la tecla
Enter, lilo cargar ese ncleo y lo iniciar con el parmetro que ha escrito.
Para que este cambio ocurra automticamente en cada arranque, introduzca los
parmetros en el fichero /etc/lilo.conf usando la palabra append=. Quedando algo
parecido a esto por ejemplo:
boot=/dev/hda

86

LINUX

Mayo 2004

root=/dev/hda2
install=/boot/boot.b
map=/boot/map
vga=normal
delay=20
append="ether=10,300,eth0"
image=/boot/vmlinuz2.2.14
label=2.2.14
readonly

Nota: Despus de que haya editado lilo.conf, debe ejecutar lilo para activar el
cambio.
3.1.4. El controlador PLIP
Parallel Line IP (PLIP) es una forma barata de trabajar en red cuando slo quiere
conectar dos mquinas. Esta usa un puerto paralelo y un cable especial y llega a
alcanzar velocidades desde los 10KB/s hasta los 20KB/s.
Los ncleos Linux version 2.0 e inferiores slo soportan PLIP mode 0, y existe un
controlador para puerto paralelo mejorado en forma de parche para el ncleo 2.0,
y como parte estndar del codigo del ncleo 2.2, para realizar operaciones en
PLIP mode 1. Para conectar dos mquinas usando PLIP, necesitas un cable
especial que se vende en las tiendas como Cable de Impresora Nulor o cable
Laplink Turbo. Puede, adems, hacer usted mismo uno fcilmente; en la ultima
seccin de este trabajo se le muestra como.
El controlador PLIP para Linux es el resultado del trabajo de muchas personas. Si
es compilado dentro del ncleo, ste creara una interfaz de red para cada uno de
los posibles puertos de impresora, plip0 corresponder al puerto paralelo lp0,
plip1, corresponder al lp1, etc. El mapeado de interfaces a puertos cambia de los
ncleos 2.0 a los ncleos 2.2.
En los 2.0, el mapeado estaba especificado en el fichero drivers/net/Spacd.c del
cdigo fuente del ncleo. El mapeado por defecto en este fichero es:
Interface I/O

Port IRQ

plip0

0x3BC 7

plip1

0x378 7

plip2

0x278 5

87

LINUX

Mayo 2004

Si configur su puerto de impresora de una forma diferente, tiene que cambiar


estos valores en drivers/net/Space.c dentro del cdigo fuente del ncleo Linux y
compilar un ncleo nuevo.
En los ncleos 2.2, el controlador PLIP usa el controlador compartido de puerto
paralelo parport desarrollado por Philip Blundell. El controlador nuevo asigna en
serie los nombres a los dispostivos de red PLIP, como pasa con los controladores
Ethernet o PPP, por lo tanto el primer dispositivo PLIP creado es plip0, el segundo
es plip1, etc... Los puertos paralelos hardware son tambin asignados en serie.
Puede hacer sto introduciendo la informacin en el mdulo parport_pc.o cuando
lo carga, o si tiene compilado el controlador dentro del ncleo, usando lilo como
hemos explicado antes La IRQ de cada dispositivo puede cambiarse despus
escribiendo un nuevo valor en el fichero que le corresponda:
/proc/parport/*/irq.

Cuando el controlador PLIP es inicializado, cada arranque, si ste esta dentro del
ncleo, o cuando el mdulo plip.o es cargado, cada puerto paralelo tendr un
dispositivo de red plip asociado. El plip0 ser asignado al primer dispositivo de
puerto paralelo, plip1 al segundo, etc... Puede evitar manualmente la asignacion
automtica enviando otro parmetro al ncleo. Por ejemplo, para asignar el
parport0 al dispositivo de red plip0, y el parport1 al dispositivo de red plip1, usar
los argumentos del ncleo:
plip=parport1plip=parport0

Este mapeado no significa que aparte no pueda usar esos puertos paralelos para
imprimir u otros propsitos.
El controlador PLIP slo usa el dispositivo de puerto paralelo cuando la
correspondiente interfaz est activada.
3.1.5. Los controladores PPP y SLIP
El Point-to-Point Protocol (PPP) y Serial Line IP (SLIP) son protocolos muy
usados para transportar paquetes IP sobre un enlace serie. Un gran nmero de
88

LINUX

instituciones

Mayo 2004

ofrecen

acceso

Internet

por

conexiones

PPP

SLIP

proporcionando conectividad IP a personas privadas.


No son necesarias modificaciones de hardware para ejecutar PPP o SLIP, puede
usar cualquier puerto serie.
Desde que la configuracin del puerto serie no es especifica para el trabajo en red
con TCP/IP, hemos dedicado un captulo a parte para esto. Acuda a Seccin 3.2
para ms informacin. Tratamos el PPP en detalle en Seccin 3.6 , y SLIP en
Seccin 3.5.

3.1.6. Otros tipos de redes


Muchos otros tipos de redes se configuran de forma similar a una Ethernet. Los
argumentos que pueden llevar los mdulos sern diferentes y algunos
controladores puede que no soporten ms de una tarjeta, pero en cuanto a lo
dems son iguales. Normalmente hay documentacion disponible sobre estas
tarjetas en el directorio /usr/src/linux/Documentation/networking/ del cdigo fuente
del ncleo Linux.
3.2.Configuracin del Hardware Serie
Internet est creciendo en una proporcin increble. Gran parte de este
crecimiento se atribuye a usuarios que no pueden permitirse conexiones
permanentes a la red, y que usan protocolos como SLIP, PPP, o UUCP para
conectar por telfono con un proveedor de red y recoger su racin diaria de correo
electrnico y noticias (news).
Esta seccin va dedicado a aquellos que emplean mdems para mantener su
vnculo con el resto del mundo. Nos centraremos en la mayor parte de los
aspectos especficos de Linux relativos al uso de dispositivos que emplean
puertos serie. Incluiremos temas sobre aplicaciones para comunicacin serie,
creacin de ficheros de dispositivos serie, hardware serie y configuracin de
dispositivos con las rdenes setserial y stty.
3.2.1. Introduccin a los Dispositivos Serie
89

LINUX

Mayo 2004

El ncleo de Unix proporciona dispositivos para acceder a hardware serie,


tpicamente conocidos como dispositivos tty. Se trata de una abreviatura de
dispositivos Teletype. Esta terminologa se usa actualmente para cualquier
terminal basado en caracteres. En esta seccin emplearemos este trmino para
referirnos exclusivamente a los ficheros de dispositivo de Linux, no para el teminal
fsico. Linux proporciona tres tipos de dispositivos tty: dispositivos serie,
terminales virtuales (accesibles por orden con las pulsaciones Alt-F1 a Alt-Fnn en
la consola local), y pseudo-terminales (similares a una tubera de dos direcciones,
empleados por aplicaciones como X11). Los primeros recibieron el nombre de
dispositivos tty porque originalmente los terminales basados en caracteres se
conectaban a la mquina Uns mediante un cable serie o con un mdem y una
lnea de telfono. Los otros dos recibieron la misma denominacin debido a que
tratan de comportarse de manera similar, desde el punto de vista del
programador. SLIP y PPP se implementan en la mayora de casos en el ncleo.
3.2.2. Acceso a Dispositivos Serie
Como todo dispositivo en un sistema Unix, los puertos serie son accesibles a
travs de archivos especiales de dispositivo, localizados en el directorio /dev. Hay
dos tipos de archivos de dispositivo relacionados con manejadores serie, y hay un
archivo de dispositivo de cada tipo para cada puerto.
La ms importante de las dos clases de dispositivos serie tiene un nmero mayor
de 4, y sus archivos especiales de dispositivo se llaman ttyS0, ttyS1, etc. La otra
variedad tiene un nmero mayor de 5, y fue diseada para emplearse en llamadas
salientes a travs de un puerto; sus archivos especiales de dispositivo son cua0,
cua1, etc. En el mundo Unix, las cuentas comienzan generalmente en cero,
mientras que los profanos tienden a comenzar por uno. Esto genera una pequea
confusin ya que COM1: se representa por /dev/ttyS0, COM2: por /dev/ttyS1, etc.
Los dispositivos cua, o llamada salientes, fueron creados para solucionar el
problema de evitar conflictos en dispositivos serie para mdems que tienen que
aceptar tanto conexiones entrantes como conexiones salientes.
Los dispositivos cua seguirn existiendo por un tiempo, para conservar la
compatibilidad con software antiguo, pero con el tiempo sern retirados. Si usted
se pregunta cules debe usar, qudese con los dispositivos ttyS, y asegrese de
90

LINUX

Mayo 2004

que su sistema cumpla con el estndar Linux FSSTND (Estndar de Sistema de


Ficheros de Linux), o, como mnimo, que todos los programas que accedan a
dispositivos serie estn de acuerdo en la localizacin de los archivos de bloqueo.
Gran parte del software que trata con dispositivos tty serie proporciona opciones
de compilacin para especificar la localizacin de archivos de bloqueo. Es
probable que aparecer como una variable llamada LOCKDIR en el Makefile o en
algn archivo de configuracin de cabecera. Si usted mismo compila el software,
la mejor opcin es modificar esto de acuerdo al lugar definido en el FSSTND. Si
usa usted binarios precompilados y no est seguro de dnde escribir el
programa sus archivos de bloqueo, quiz esta orden pueda proporcionarle alguna
pista:
strings binaryfile|grep lock

Si el lugar encontrado no es compatible con el resto de su sistema, puede tratar


de crear un enlace simblico desde el directorio de bloqueo que pretende usar el
binario hacia /var/lock. No es una solucin muy elegante, pero funcionar.
Los Archivos Especiales De Dispositivos Serie
Los nmeros menores son idnticos para ambos tipos de dispositivos serie. Si
tiene usted su mdem conectado en un puerto desde COM1: a COM4:, su
nmero menor ser el nmero de puerto COM ms 63. Si emplea usted hardware
serie especial, como controladores de mltiples puertos serie de gran rendimiento,
probablemente necesite crear ficheros especiales de dispositivo para l;
probablemente no emplee el manejador estndar de dispositivo. El SerialHOWTO debe poder ayudarle a encontrar los detalles especficos.
Supongamos que su mdem est en COM2:. Su nmero menor ser 65, y su
nmero mayor ser 4 para usos normales. Debera existir un dispositivo llamado
ttyS1 que tiene estos nmeros. Liste los ttys serie del directorio /dev. La quinta y
sexta columna muestran respectivamente el nmero mayor y el nmero menor:
$ls -l /dev/ttyS*
0crwrw1uucpdialout4,64Oct131997/dev/ttyS0
0crwrw1uucpdialout4,65Jan2621:55/dev/ttyS1
0crwrw1uucpdialout4,66Oct131997/dev/ttyS2
0crwrw1uucpdialout4,67Oct131997/dev/ttyS3

91

LINUX

Mayo 2004

Si no hay ningn dispositivo con nmero mayor 4 y nmero menor 65, necesitar
crear uno. Pase a modo superusuario y escriba:
#mknod -m 666 /dev/ttyS1 c 4 65
#chown uucp.dialout /dev/ttyS1

Segn la distribucin de Linux, se emplean estrategias sutilmente distintas para


determinar quin debe ser propietario de los dispositivos serie. A veces son
propiedad de root, y en otros casos pertenecen a otro usuario, como uucp en
nuestro ejemplo. Las distribuciones ms modernas tienen un grupo especial para
dispositivos que realizan llamadas salientes, y todo usuario que pueda emplearlos
estar aadido a este grupo.
Hay quien sugiere crear /dev/modem como un enlace simblico al dispositivo de
mdem para que los usuarios ocasionales no tengan que recordar el menos
intuitivo ttyS1. Pero no se puede utilizar modem en un programa y el archivo real
de dispositivo en otro. Sus archivos de bloqueo tendran nombres diferentes, y
esto hara fallar al mecanismo de bloqueo.
3.2.3. Hardware Serie
RS-232 es actualmente el estndar ms comn para comunicaciones serie en el
mundo de los PC. Emplea una serie de circuitos para transmitir bits de uno en
uno, as como para sincronizacin. Otras lneas adicionales pueden ser
empleadas para sealar la presencia de un portador (empleadas por mdems) y
para negociacin (handshaking). Linux acepta una amplia variedad de tarjetas
serie que usan el estndar RS-232.
La negociacin por hardware es opcional, pero muy til. Permite a cualquiera de
las dos estaciones avisar si est preparada para recibir ms datos, o si la otra
estacin debera esperar mientras se procesan los datos recibidos. Las lneas
usadas para esto se llaman Clear to Send (CTS) y Ready to Send (RTS),
respectivamente, lo que explica el nombre coloquial para negociacin por
hardware: RTS/CTS. El otro tipo de negociacin con el que quiz est usted
familiarizado es la negociacin XON/XOFF XON/XOFF utiliza dos caracteres
concretos, convencionalmente Ctrl-S y Ctrl-Q, para indicar al extremo remoto que
92

LINUX

Mayo 2004

debera parar o comenzar la transmisin de datos, respectivamente. A la par que


este mtodo es simple de implementar y vlido para uso con terminales sin
procesamiento, tambin es cierto que crea una gran confusin cuando los datos
son binarios, ya que probablemente se quisieran transmitir esos caracteres como
parte del flujo de datos que enviamos, en lugar de que fueran interpretados como
caracteres de control del flujo. Por otra parte, la rapidez con que toman efecto es
menor que con negociacin por hardware. La negociacin hardware es limpia,
rpida y se recomienda sobre XON/XOFF si existe la posibilidad de elegir.
En su configuracin por defecto, el ncleo comprueba los cuatro puertos serie
estndar, desde COM1: a COM4:. El ncleo tambin puede detectar qu tipo de
UART se emplea en cada uno de los puertos serie estndar.
3.2.4. Uso de las Utilidades de Configuracin
Dediquemos algo de tiempo a examinar las dos utilidades ms comunes:
setserial y stty.
La orden setserial
El ncleo har su mayor esfuerzo en determinar cmo est configurado su
hardware serie, pero las diversas variantes en la configuracin de dispositivos
serie hace difcil obtener una determinacin fiable al 100%. setserial fue creado
para configurar el manejador serie en tiempo de ejecucin. La orden setserial se
ejecuta por lo comn al arrancar, desde un script llamado 0setserial en unas
distribuciones, y rc.serial en otras. Este script est al cargo de iniciar
adecuadamente el manejador de puerto serie para dar cabida a cualquier
hardware no estndar o inusual que haya en la mquina.
La sintaxis general para la orden setserial es:
setserialdispositivo [parmetos]

donde el dispositivo es uno de los dispositivos serie, como ttyS0.


La orden setserial tiene un gran nmero de parmetros. Los ms comunes
vienen descritos en Tabla 3-1.

93

LINUX

Mayo 2004

Tabla 3-1. Parmetros de Lnea de rdenes de setserial

Un fichero rc tpico y sencillo para configurar sus puertos serie al arrancar puede
parecerse a lo mostrado en Ejemplo 3-1. Una mayora de distribuciones de Linux
incluirn algo ms sofisticado que este ejemplo
.
Ejemplo 3-1. Ejemplo de rdenes setserial en rc.serial
#/etc/rc.serialscriptdeconfiguracindelneasserie.
#
#Configurardispositivosserie.
/sbin/setserial/dev/ttyS0auto_irqskip_testautoconfig
/sbin/setserial/dev/ttyS1auto_irqskip_testautoconfig
/sbin/setserial/dev/ttyS2auto_irqskip_testautoconfig

94

LINUX

Mayo 2004

/sbin/setserial/dev/ttyS3auto_irqskip_testautoconfig
#
#Mostrarlaconfiguracindedispositivosserie.
/sbin/setserialbg/dev/ttyS*

El argumento -bg /dev/ttyS* en la ltima orden mostrar un pulcro sumario de la


configuracin hardware de todos los dispositivos serie activos. Esta salida se
parecer a la mostrada en Ejemplo 3-2.
Ejemplo 3-2. Salida de la orden setserial -bg /dev/ttyS*
/dev/ttyS0at0x03f8(irq=4)isa16550A
/dev/ttyS1at0x02f8(irq=3)isa16550A

La Orden stty
El nombre stty probablemente signifique set tty, pero la orden stty tambin puede
ser empleada para mostrar la configuracin de un terminal. Quizs an ms que
setserial, la orden stty proporciona un desconcertante nmero de caractersticas
configurables. Cubriremos las ms importantes en breve.
La orden stty se utiliza principalmente para configurar parmetros del terminal,
tales como qu caracteres sern mostrados, o qu tecla deber generar una
seal de parada. Explicamos anteriormente que los dispositivos serie son
dispositivos tty, y por tanto la orden stty es igualmente aplicable a ellos.
Uno de los usos ms importantes de stty para dispositivos serie es habilitar la
negociacin por hardware en ellos. Esta disposicin permite que los cables serie
de tres hilos funcionen; estos cables no aceptan las seales necesarias para la
negociacin por hardware, y si estuviera activada por defecto, seran incapaces
de transmitir ningn carcter para desactivarla. Sorprendentemente, algunos
programas de comunicacin serie no habilitan la negociacin por hardware, as
que si su mdem la permite, deber configurar el mdem para emplearla (dirjase
al manual de su mdem para averiguar qu orden usar), y tambin deber
configurar el dispositivo serie para utilizar negociacin por hardware. La orden
stty tiene una bandera crtscts que habilita la negociacin por hardware en un
dispositivo; tendr que utilizar esto. El lugar ms apropiado para ejecutar esta
orden probablemente sea el archivo rc.serial (o equivalente) al arrancar, utilizando
sentencias como las mostradas en Ejemplo 3-3.
95

LINUX

Mayo 2004

Ejemplo 3-3. rdenes stty de Ejemplo en rc.serial


#
sttycrtscts</dev/ttyS0
sttycrtscts</dev/ttyS1
sttycrtscts</dev/ttyS2
sttycrtscts</dev/ttyS3
#

La orden stty trabaja en el terminal en uso de forma predefinida, pero mediante la


redireccin de entrada (<) facilitada por el intrprete de rdenes, podemos hacer
que stty maneje cualquier dispositivo tty. Es un error comn olvidar si se ha de
emplear < o >; las versiones ms modernas de stty tienen una sintaxis ms clara
de especificarlo. Con esta nueva sintaxis, nuestro ejemplo quedara como en
Ejemplo 3-4.
Ejemplo 3-4. rdenes stty de Ejemplo en rc.serial Empleando Sintaxis Moderna
#
sttycrtsctsF/dev/ttyS0
sttycrtsctsF/dev/ttyS1
sttycrtsctsF/dev/ttyS2
sttycrtsctsF/dev/ttyS3
#

Antes mencionamos que la orden stty puede ser usada para mostrar los
parmetros de configuracin de un dispositivo tty. Para mostrar todos los
parmetros activos de un dispositivo tty se hace:
stty -a -F /dev/ttyS1

La salida de esta orden, mostrada en Ejemplo 3-5, le muestra el estado de todas


las banderas para ese dispositivo; una bandera precedida por un signo menos,
como en crtscts, significa que la bandera ha sido desactivada.
Ejemplo 3-5. Salida de una Orden stty a
speed19200baud;rows0;columns0;line=0;

96

LINUX

Mayo 2004

intr=^C;quit=^\;erase=^?;kill=^U;eof=^D;eol=<undef>;
eol2=<undef>;start=^Q;stop=^S;susp=^Z;rprnt=^R;
werase=^W;lnext=^V;flush=^O;min=1;time=0;
parenbparoddcs8hupclcstopbcreadclocalcrtscts
ignbrkbrkintignparparmrkinpckistripinlcrigncricrnlixon
ixoffiuclcixanyimaxbel
opostolcucocrnlonlcronocronlretofillofdelnl0cr0tab0
bs0vt0ff0
isigicanoniextenechoechoeechokechonlnoflshxcasetostop
echoprtechoctlechoke

Una descripcin de las banderas ms importantes se da en Tabla 3-2. Cada una


de ellas se habilita suministrndola a stty, y se deshabilita de la misma forma,
pero precedida por un carcter delante. As, para deshabilitar la negociacin
hardware, se hara:
$ stty -crtscts -F /dev/ttyS0

Tabla 3-2. Banderas de stty Ms Relevantes Para Configurar Dispositivos Serie

El siguiente ejemplo combina algunas de estas banderas y configura el dispositivo


ttyS0 a 19.200 bps, 8 bits de datos, sin paridad, con negociacin por hardware y
eco deshabilitado:
$stty 19200 cs8 -parenb crtscts -echo -F /dev/ttyS0

3.2.5. Dispositivos Serie y el Indicador login: (ingreso)

97

LINUX

Mayo 2004

Lleg a ser muy comn que una instalacin basada en Unix incluyera una
mquina servidor y muchos terminales tontas (sin procesamiento) de caracteres o
mdems para acceso telefnico. Hoy en da este tipo de configuraciones son
menos comunes, lo que supone una buena noticia para mucha gente interesada
en trabajar as, ya que estos terminales sin procesamiento son muy baratos
actualmente. Las configuraciones con mdems de acceso telefnico no han
dejado de ser comunes, pero en estos tiempos probablemente se utilicen como
soporte para ingresos mediante SLIP o PPP ms que para un simple ingreso. En
cualquier caso, cada uno de estos mtodos puede hacer uso de un programa
sencillo llamado programa getty.
El trmino getty es probablemente una abreviatura de get tty (conseguir tty). Un
programa getty abre un dispositivo serie, lo configura apropiadamente, configura
opcionalmente un mdem, y espera a que se realice una conexin. Una conexin
activa en un dispositivo serie se indica normalmente mediante la patilla Data
Carrier Detect (DCD) en el dispositivo serie que ha sido activado. Cuando se
produce esta deteccin, el programa getty llama a un programa que muestra el
punto indicativo login:, y es el que maneja realmente el ingreso al sistema. Cada
uno de los terminales virtuales (por ejemplo, /dev/tty1) en Linux tiene un getty
ejecutndose para l.
Hay varias implementaciones distintas de getty, cada una diseada para
adaptarse a ciertas configuraciones mejor que a otras. El getty que describiremos
aqu se llama mgetty. Es bastante conocido porque proporciona todo tipo de
caractersticas que lo hacen especialmente indicado para uso con mdems,
aceptando incluso programas automticos para fax y mdems de voz. Nos
concentraremos

en

configurar

mgetty

para

responder

las

llamadas

convencionales de datos.
Configuracin del Demonio mgetty
El

demonio

mgetty

est

disponible

en

ftp://alpha.greenie.net/pub/mgetty/source/,

forma

de

cdigo

prcticamente

fuente
todas

en
las

distribuciones de Linux lo incluyen como paquete. Admite an conexiones directas


de terminales, pero se adapta de forma especialmente buena a aplicaciones de
llamadas telefnicas. En lugar de emplear la seal DCD para detectar una
98

LINUX

Mayo 2004

llamada entrante, espera a la escucha del mensaje RING generado por la mayora
de mdems modernos cuando detectan una llamada entrante y no estn
configurados para responder automticamente.
El ejecutable principal es /usr/sbin/mgetty, y su archivo de configuracin se
llama /etc/mgetty/mgetty.config. Hay otros programas y archivos de configuracin
que cubrirn otros rasgos concretos de mgetty.
La configuracin, en gran parte de los sistemas, es cuestin nicamente de editar
el archivo /etc/mgetty/mgetty.config y aadir las entradas apropiadas a /etc/inittab
para que mgetty se ejecute automticamente.
Ejemplo 3-6 muestra un archivo muy simple de configuracin de mgetty. Este
ejemplo configura dos dispositivos serie. El primero, /dev/ttyS0, se refiere a un
mdem compatible con Hayes a 38.400 bps. El segundo, /dev/ttyS1, se
corresponde con un terminal VT100 conectado directamente, a 19.200 bps.
Ejemplo 3-6. Archivo /etc/mgetty/mgetty.config de ejemplo
#
#archivodeconfiguracindemgetty
#
#esteesunarchivodeejemplodeconfiguracin,veamgetty.infoparaobtener
detalles
#
#laslneasdecomentariocomienzancon"#",laslneasvacassondeshechadas
#
#seccinglobal
#
# En esta seccin van los valores globales por defecto, la configuracin por
puertosvadebajo
#
#accederalmdem(omdems)a38400bps
speed38400
#
#ajustarelnivelglobaldedepuracina"4"(valorpordefectodepolicy.h)
debug4
#
#seccinespecficadepuerto
#
#Aqusepondranlascosasqueseanvlidassloparaunalnea,nolasdems
#
#
#MdemHayesconectadoattyS0:nousarcomofax,menosregistrodeactividad
#
portttyS0
debug3
dataonlyy
#
#conexindirectadeunterminalVT100quenogustadebajadasenlasealDTR
#
portttyS1
directy

99

LINUX

Mayo 2004

speed19200
toggledtrn
#

El archivo de configuracin acepta opciones globales y especficas de cada


puerto. En nuesto ejemplo, empleamos una opcin global para fijar la velocidad a
38.400 bps. Este valor es heredado por el puerto ttyS0. Los puertos a los que
aplicamos mgetty emplean este ajuste de velocidad a no ser que sea
reemplazado por un ajuste de velocidad explcito para el puerto, tal y como hemos
hecho en la configuracin de ttyS1.
La palabra clave debug controla la cantidad de texto del registro de actividad de
mgetty. La palabra clave data-only en la configuracin de ttyS0 hace que mgetty
desprecie las caractersticas de fax del mdem, para que funcione nicamente
como mdem de datos. La palabra direct en la configuracin de ttyS1 avisa a
mgetty para que no lleve a cabo ninguna inicializacin para mdem en ese
puerto. Finalmente, con toggle-dtr se consigue que mgetty no trate de colgar la
lnea bajando la patilla DTR (Data Terminal Ready) en el interfaz serie; algunos
terminales no reaccionan bien ante esto.
Tambin puede usted elegir dejar vaco el archivo mgetty.config y emplear
argumentos en la lnea de rdenes para especificar la mayora de esos mismos
parmetros. La documentacin que acompaa a la aplicacin incluye una
completa descripcin de los parmetros del archivo de configuracin de mgetty y
los argumentos de lnea de rdenes. Observe el siguiente ejemplo.
Hemos de aadir dos entradas al archivo /etc/inittab para activar esta
configuracin. El archivo inittab es el archivo de configuracin de la orden init de
Unix System V. Esta orden es la encargada de la iniciacin del sistema;
proporciona un medio para ejecutar programas automticamente al iniciar la
mquina y volver a ejecutarlos cuando terminan. Es muy apropiada para los
objetivos de ejecutar un programa getty.
T0:23:respawn:/sbin/mgettyttyS0
T1:23:respawn:/sbin/mgettyttyS1

Cada lnea del archivo /etc/inittab contiene cuatro campos, separados por dos
puntos. El primero es un identificador que etiqueta de forma nica cada entrada
100

LINUX

Mayo 2004

del archivo; tradicionalmente se utilizan dos caracteres, pero las versiones ms


modernas permiten cuatro. El segundo campo es la lista de niveles de ejecucin
en los que deber estar activa. Un nivel de ejecucin es un mecanismo para
proporcionar distintas configuraciones del equipo y se implementa mediante el
uso de rboles de scripts de inicio, almacenados en directorios llamados
/etc/rc1.d, /etc/rc2.d, etc. Esta caracterstica es implementada tpicamente de
forma muy simple, por lo que usted debe modelar sus entradas en el archivo
basndose en otras del mismo, o bien consultar la documentacion de su sistema
para obtener ms informacin. El tercer campo describe cundo hay que llevar a
cabo la accin. Para los propsitos de ejecutar un programa getty, este campo
debe ser ajustado a respawn, lo que significa que la orden se re-ejecutar
automticamente cuando muera. Hay otras opciones tambin, pero no son tiles
para nuestros propsitos aqu. El cuarto campo es la orden real que ha de
ejecutarse; aqu es donde especificamos la orden mgetty y cualquier argumento
que queramos pasarle. En nuestro ejemplo simple, ejecutamos y reiniciamos
mgetty siempre que el sistema est operando en los niveles de ejecucin dos o
tres, y le suministramos como argumento el nombre del dispositivo que queremos
utilizar.
La orden mgetty asume /dev/, as que no hemos de proporcionarlo.
Una vez que haya editado los archivos de configuracin ha de recargar init para
hacer efectivos los cambios. Simplemente enve una seal hangup al proceso init;
siempre tiene un identificador de proceso 1, as que puede usar sin problemas:
#kill -HUP 1

3.3. Configuracin del Protocolo TCP/IP


En esta seccin recorreremos todos los pasos necesarios para configurar el
protocolo TCP/IP en su mquina. Empezando en la asignacin de direcciones IP,
iremos describiendo la configuracin de las interfaces TCP/IP e introduciremos
unas cuantas herramientas que resultan bastante tiles a la hora de resolver
problemas surgidos durante la instalacin de la red.
Esta seccin explica partes del script que configura las interfaces de su red,
mientras que las aplicaciones se vern en prximas secciones. Al finalizar esta
101

LINUX

Mayo 2004

seccin, debera usted haber establecido la secuencia de rdenes que configuran


correctamente el protocolo TCP/IP en su ordenador. Sustituya las rdenes de
ejemplo en los scripts de configuracin por los suyos propios; asegrese de que el
script bsico rc es ejecutado en el arranque y rearranque de su mquina.
3.3.1. Montando el Sistema de Ficheros /proc
Algunas de las herramientas de configuracin de NET-2 y NET-3 utilizan el
sistema de archivos proc para comunicarse con el ncleo. Se trata de una interfaz
que permite el acceso a la informacin del kernel en funcionamiento a travs de
un mecanismo que imita un sistema de archivos. Una vez que ha sido montado,
se pueden listar los archivos y ver su contenido como en cualquier otro sistema de
archivos. Normalmente aparecen archivos como loadavg, que contiene la carga
media del sistema, o meminfo, que contiene informacin sobre la memoria fsica y
virtual.
El sistema de archivos proc (tambin llamado procfs) se monta generalmente
en /proc durante el arranque. El mejor mtodo consiste en aadir la siguiente
lnea al fichero /etc/fstab:
#Puntodemontajedeprocfs
none/procprocdefaults

Y ejecutar mount /proc desde alguno de los scripts /etc/rc. El procfs viene
configurado actualmente en la mayora de los ncleos por omisin. Si no tiene el
procfs en su ncleo, al intentar montarlo obtendr un mensaje como este: mount:
fs type procfs not supported by kernel. De ser as tiene que recompilar el ncleo
asegurndose de configurarlo incluyendo el soporte para procfs.

3.3.2. Establecimiento del Nombre de la Mquina


La mayora de las aplicaciones de red, si no todas, asumen que el nombre dado a
la mquina local tiene un valor razonable. Este proceso tiene lugar durante el

102

LINUX

Mayo 2004

arranque cuando se ejecuta el comando hostname. Para llamar nombre haga lo


siguiente:
# hostname nombre
Es una prctica comn usar el nombre sin cualificarlo con el dominio de red. As
pues, supongamos que las mquinas de la Cervecera se llamarn vale.vbrew.com
o vlager.vbrew.com. Estos son los nombres oficiales, los nombres completamente
cualificados de dominio (FQDN1). Los nombres locales seran, por tanto,
nicamente el primer componente del nombre, como por ejemplo vale. Sin
embargo, dado que el nombre local se usa frecuentemente para buscar la
direccin IP correspondiente, debe asegurarse de que la tabla que contiene esa
informacin sea capaz de encontrar dicha IP. Esto generalmente equivale a aadir
el nombre local al archivo /etc/hosts.
Algunas personas sugieren la utilizacin de la orden domainname para fijar el
valor del dominio para el ncleo. As, para obtener el FQDN combinaramos la
salida de hostname y domainname. Sin embargo, esto es, en el mejor de los
casos, una verdad a medias. domainname se usa por lo general para establecer
el domino NIS al que pertenece la mquina, que puede ser completamente
diferente al del servidor de nombres (DNS). En lugar de ello, para asegurarse de
que la forma corta del nombre de su mquina es resoluble por todas las versiones
recientes de la orden hostname, adalo como una entrada en su Servidor de
Nombres de Dominio (DNS) local, o ponga el FQDN en el archivo /etc/hosts.
Puede usar entonces el parmetro --fqdn de la orden hostname, y se imprimir el
FQDN.
3.3.3. Asignacin de una direccin IP
Si configura su software de red para operar su mquina de forma aislada (por
ejemplo con el objeto de utilizar el software de noticias de red INN) puede saltarse
esta seccin pues slo necesita la direccin de la interfaz de bucle local o
loopback, que es siempre 127.0.0.1.
Las cosas son algo ms complicadas en redes reales como las Ethernets. Si
quiere conectar su computadora a una red, tiene que pedir a los administradores
de la misma que le asignen una direccin IP para esa red. Cuando es usted
103

LINUX

Mayo 2004

mismo el que est estableciendo la red, tendr que ser usted quien asigne las
direcciones IP.
Las mquinas de una red local deben generalmente compartir direcciones de una
subred lgica. Por ello lo primero es asignar una direccin IP para la red. Si tiene
varias redes fsicas, deber asignar nmeros de red diferentes a cada una o
dividir el rango de direcciones IP disponibles en varias subredes.
Cuando se est seleccionando un nmero de red IP, la eleccin depender de si
tiene intencin de conectarse a Internet en un futuro prximo. Si es as, debera
conseguir una direccin IP oficial ahora.
Si su red no est conectada a Internet, y no lo va a estar en un futuro cercano,
usted es libre de elegir cualquier direccin de red legal. nicamente asegrese de
que no haya paquetes de su red interna que escapen a la Internet real. Para
asegurarse de que no haya perjuicio aunque se escapen paquetes, debera usar
uno de los nmeros de red reservados para uso privado.
Seleccionar sus direcciones de una de estos nmeros de red no es slo til para
redes completamente desconectadas de Internet; todava puede implementar un
acceso algo ms restringido usando un ordenador como ruteador o gateway.
Desde la red local, el ruteador es accesible por su direccin IP interna, pero el
mundo exterior la conoce por una direccin oficial (asignada por su proveedor).
Volveremos sobre este concepto en la conexin con IP masquerade en Seccin
3.9.
Durante el resto del trabajo, asumiremos que el administrador de red de la
cervecera usa un nmero de red de tipo B, por ejemplo 172.16.0.0. Usaremos
aqu una red de clase B para simplificar; esto har que los ejemplos de subredes
de la siguiente seccin del captulo sean algo ms sencillos.

3.3.4. Creacin de Subredes


Para operar varias redes Ethernet (o de otro tipo una vez que el controlador
correspondiente est disponible), debe dividir su red en subredes. Es importante
darse cuenta de que esto es nicamente necesario si tiene mas de una direccin
de "difusin" (broadcast) en la red; las conexiones punto-a-punto no cuentan. As,
104

LINUX

Mayo 2004

por ejemplo, si tiene una red Ethernet y uno o mas enlaces SLIP con el exterior no
hace falta que divida su red. La razn se explica en Seccin 3.5.
Para ajustar las dos Ethernets, el administrador de red de la cervecera decide
usar ocho bytes la parte de la direccin correspondiente a los ordenadores como
direccin de subred. Eso deja otros ocho bytes para las mquinas lo que equivale
a 254 por cada subred. Asigna entonces el nmero de subred 1 a la cervecera, y
le da a la vinatera el nmero 2. Las direcciones de red sern por tanto 172.16.1.0
y 172.16.2.0. La mscara de subred es 255.255.255.0.
A vlager, que acta de ruteador entre las redes, se le asigna el nmero de
mquina 1 en ambas redes, lo que significa que tiene las direcciones IP
191.72.1.1 y 191.72.2.1, respectivamente. Es importante notar que en este
ejemplo estamos usando una red de clase B para simplificar; una red de tipo C
sera ms realista. Con el nuevo cdigo de red, la divisin en subredes no est
limitada a nivel de byte, de forma que incluso una red de clase C puede dividirse
en varias subredes. Por ejemplo, podra usar 2 bits del byte de los nodos para
designar la subred lo que permite implementar cuatro subredes de 64 mquinas
cada una.
3.3.5. Preparacin de los archivos hosts y networks
Una vez ha dividido su red en subredes, debe habilitar un mecanismo simple de
resolucin de nombres usando el archivo /etc/hosts. Si no va a usar los sistemas
DNS o NIS para la resolucin de nombres, debe poner todos los nombres de las
diferentes mquinas en el archivo hosts. Debe tener algn tipo de resolucin de
nombres, incluso cuando no hay servicios de red ejecutndose. Este es el caso
del arranque. Se trata, no slo de una cuestin de conveniencia, sino que permite
el uso de nombres simblicos para las mquinas citadas en los scripts de red rc.
De esta forma, para cambiar las direcciones IP, slo tiene que copiar el archivo
hosts actualizado a todas las mquinas y rearrancar, en vez de tener que
modificar un gran nmero de archivos rc por separado.
Generalmente, tambin debe incluir los nombres y direcciones locales en hosts,
aadiendo todas las pasarelas y servidores NIS usados.
Debera asegurarse de que el subsistema de resolucin utiliza la informacin del
archivo hosts nicamente.
105

LINUX

Mayo 2004

Los archivos de ejemplo que vienen con su software DNS o NIS pueden producir
resultados extraos. Para forzar a que todas las aplicaciones utilicen /etc/hosts de
forma exclusiva cuando buscan una direccin IP, debe editar el archivo
/etc/host.conf. Desactive con comentarios cualquier lnea que comience por order
aadiendo una almohadilla (#) e incluya la siguiente lnea
orderhosts

El archivo hosts contiene un registro por lnea, consistente en una direccin IP, un
nombre de mquina y de forma opcional, una lista de alias para esa mquina. Los
campos se separan por tabuladores o espacios y el campo con la direccin debe
empezar en la primera columna. Cualquier cosa a continuacin de una
almohadilla (#) es interpretada como un comentario y es consecuentemente
ignorado.
Los nombres de las mquinas pueden ser con cualificacin completa, o relativos
al dominio local. Para la mquina vale, el registro generalmente incluira el
nombre con cualificacin completa, vale.vbrew.com, y vale en el archivo hosts, de
forma que pueda ser referido usando el nombre oficial y el nombre local que es
ms corto.
Este es un ejemplo del aspecto que el archivo hosts vlager-if1 y vlager-if2,
correspondientes a las direcciones de ambas interfaces de la mquina existentes
en vlager:
#
#ArchivoHostsdelaCerveceraVirtual/VinateraVirtual
#
#IPFQDNaliases
#
127.0.0.1localhost
#
172.16.1.1vlager.vbrew.comvlagervlagerif1
172.16.1.2vstout.vbrew.comvstout
172.16.1.3vale.vbrew.comvale
#
172.16.2.1vlagerif2
172.16.2.2vbeaujolais.vbrew.comvbeaujolais
172.16.2.3vbardolino.vbrew.comvbardolino
172.16.2.4vchianti.vbrew.comvchianti

Del mismo modo que con las direcciones IP, a veces tambin puede interesarle
usar nombres simblicos para los nmeros de red. Con este objeto, el archivo
hosts tiene un compaero llamado /etc/networks, que asocia nombres de red con
106

LINUX

Mayo 2004

los nmeros correspondientes y viceversa. En la Cervecera Virtual, podramos


instalar un archivo networks como ste:
# /etc/networks para la cervecera virtual.
brewnet172.16.1.0
winenet172.16.2.0

3.3.6. Interfaz Configuracin de la Interfaz para IP


Una vez que ha configurado su hardware, debe asegurarse de que el software de
red del ncleo conoce esos dispositivos. Hay una serie de rdenes que se usan
con objeto de configurar las interfaces de red e inicializar la tabla de enrutamiento.
Esas tareas son ejecutadas generalmente por el script de inicializacin de red
cada vez que el sistema es arrancado. Las herramientas bsicas son ifconfig
(donde if significa interfaz), y route.
ifconfig se usa para dar acceso al ncleo a una interfaz. Esto incluye la
asignacin de una direccin IP y otros parmetros, as como la activacin de la
interfaz. Por activacin nos referimos a permitir que el ncleo enva y recibe
datagramas IP a travs de la interfaz. El modo ms sencillo de invocar esta
herramienta es:
ifconfiginterfaz direccin-ip

Esta orden asigna direccin-ip a interfaz y la activa. Los otros parmetros toman
valores asignados por omisin. Por ejemplo, la mscara de subred por omisin
toma el valor correspondiente al tipo de red al que pertenece la direccin IP. As,
tendramos 255.255.0.0 para una direccin de clase B.
route permite aadir o quitar rutas de la tabla de enrytamiento del ncleo. Se
puede invocar como:
route[add|del][net|host]destino [if]

Los argumentos add y del determinan, respectivamente si se debe aadir o borrar


la ruta hacia destino.
Los argumentos -net y -host sealan al comando si el destino es una red o una
mquina (que es lo que se supone si no se especifica). El argumento if es

107

LINUX

Mayo 2004

opcional tambin, y permite especificar a qu interfaz de red se dirige la ruta el


ncleo de Linux har una conjetura si no se aporta este dato.
a) La interfaz de bucle local
La primera interfaz en ser activada es la interfaz de bucle local o loopback:
#ifconfig lo 127.0.0.1

Ocasionalmente, tambin vera que el nombre comodn localhost es usado en vez


de la direccin de IP.
ifconfig buscar el nombre en el archivo hosts que debe contener un registro
declarando localhost como nombre vlido para la direccin 127.0.0.1:
#Registrodeejemploparalocalhosten/etc/hosts
localhost127.0.0.1

Para ver la configuracin de una interfaz, use ifconfig, pasndole como


argumento nicamente el nombre de la interfaz:
$ifconfig lo
loLinkencap:LocalLoopback
inetaddr:127.0.0.1Mask:255.0.0.0
UPLOOPBACKRUNNINGMTU:3924Metric:1
RXpackets:0errors:0dropped:0overruns:0frame:0
TXpackets:0errors:0dropped:0overruns:0carrier:0
Collisions:0

Como podr observar, la mscara asignada a la interfaz del bucle local es


255.0.0.0, debido a que 127.0.0.1 es una direccin de clase A.
Ahora, ya casi puede empezar a jugar con su "mini-red". Slo queda aadir una
entrada en la tabla de enrutamiento que comunique al IP que puede usar esa
interfaz como ruta hacia 127.0.0.1. Para llevar esto a cabo, basta escribir:
#routeadd127.0.0.1

108

LINUX

Mayo 2004

Tambin aqu puede usar localhost en lugar de la direccin IP, suponiendo que lo
haya introducido en su /etc/hosts.
Lo siguiente es comprobar que todo funciona como es debido, por ejemplo
usando ping. ping es el equivalente a un sonar en una red. Esta orden se usa
para verificar que una direccin dada es accesible y para medir el retraso entre el
envo de un datagrama y su recepcin de vuelta. Este tiempo es conocido como
tiempo de ida y vuelta.
#ping localhost
PINGlocalhost(127.0.0.1):56databytes
64bytesfrom127.0.0.1:icmp_seq=0ttl=255time=0.4ms
64bytesfrom127.0.0.1:icmp_seq=1ttl=255time=0.4ms
64bytesfrom127.0.0.1:icmp_seq=2ttl=255time=0.4ms
^C
localhostpingstatistics
3packetstransmitted,3packetsreceived,0%packetloss
roundtripmin/avg/max=0.4/0.4/0.4ms
#

Cuando se ejecuta ping segn se muestra aqu, la emisin de paquetes contina


a menos que sea interrumpida por el usuario. El ^C marca el momento en el que
se apret Ctrl-C.
Si la salida de ping no se parece a la de ms arriba, usted tiene problemas.
Compruebe la posibilidad de que algn archivo no haya sido instalado
correctamente. Compruebe que los ejecutables ifconfig y route son compatibles
con la versin del ncleo que usa y sobre todo que ste ha sido compilado con la
opcin de red activada (esto se puede ver comprobando que existe el directorio
/proc/net). Si el mensaje de error es network unreachable(red inaccesible),
seguramente ejecut la orden route incorrectamente. Asegrese de que es la
misma direccin que la que us con ifconfig.
Los pasos descritos arriba son suficientes para poder ejecutar aplicaciones de red
en una mquina aislada.

b) Interfaces Ethernet
La configuracin de una interfaz Ethernet es ms o menos igual que la de la
interfaz de bucle local. Slo requiere algunos parmetros ms cuando est
usando varias subredes.

109

LINUX

Mayo 2004

En la Cervecera Virtual, hemos dividido la red IP, originalmente de clase B, en


subredes de clase C. Para que la interfaz reconozca esto, usamos la orden
ifconfig
#ifconfig eth0 vstout netmask 255.255.255.0

Esto asigna a la interfaz eth0 la direccin IP de la mquina vstout (191.72.1.2). Si


hubisemos omitido la mscara de red, ifconfig habra deducido la mscara de la
clase de la red IP, tomando por tanto 255.255.0.0, que es incorrecto. Una
comprobacin rpida nos da:
#ifconfig eth0
eth0Linkencap10MpsEthernetHWaddr00:00:C0:90:B3:42
inetaddr172.16.1.2Bcast172.16.1.255Mask255.255.255.0
UPBROADCASTRUNNINGMTU1500Metric1
RXpackets0errors0dropped0overrun0
TXpackets0errors0dropped0overrun0

Puede ver que ifconfig ha fijado la direccin de difusin automticamente (el


campo Bcast de arriba) a su valor usual, que es el de la red con todos los bits de
la mquina activados. Adems se fija la unidad de transferencia de mensajes
(tamao mximo que el ncleo va a generar para esa interfaz) a un mximo de
1500 bytes.
De forma semejante al caso de la interfaz de bucle local, debe tambin establecer
ahora una entrada en la tabla de enrutamiento que informe al ncleo de que la red
es accesible mediante eth0. Para la Cervecera Virtual, ejecutara:
#route add -net 172.16.1.0

Veamos, qu significa la opcin net. Esta opcin es necesaria porque el programa


route es capaz de trabajar con rutas a redes o a mquinas concretas. Cuando la
direccin es dada en notacin de cuaterna, intenta adivinar si se trata de una red
o una mquina fijndose en los bits de mquina de la direccin. Si esa parte es
nula, route asume que se trata de una red, y de otro modo lo toma como
direccin de una mquina. Por tanto, route supondra que 191.72.1.0 es la
direccin de una mquina en vez de una red, debido a que no sabe que hemos
110

LINUX

Mayo 2004

dividido el espacio de direcciones en subredes. Por tanto hemos de decrselo de


forma explcita utilizando el indicador net.
Por supuesto, escribir el comando route es tedioso y susceptible de muchos
errores de escritura. Un mtodo ms conveniente es usar los nombres definidos
en /etc/networks como vimos ms arriba. Esto hace el comando ms inteligible;
de este modo incluso podemos evitar escribir el indicador net, porque route sabe
que 191.72.1.0 representa una red:
#route add brew-net

Una vez finalizados los pasos bsicos de configuracin, debemos asegurarnos de


que la interfaz Ethernet est funcionando correctamente. Elija una mquina de su
red, por ejemplo vlager, y escriba:
#ping vlager
PINGvlager:64bytepackets
64bytesfrom172.16.1.1:icmp_seq=0.time=11.ms
64bytesfrom172.16.1.1:icmp_seq=1.time=7.ms
64bytesfrom172.16.1.1:icmp_seq=2.time=12.ms
64bytesfrom172.16.1.1:icmp_seq=3.time=3.ms
^C
vstout.vbrew.comPINGStatistics
4packetstransmitted,4packetsreceived,0
roundtrip(ms)min/avg/max=3/8/12

Si el resultado no es similar a ste, algo va mal, obviamente. Una tasa de prdida


de paquetes inusualmente alta, sugiere un problema de hardware, como
terminaciones en mal estado o incluso la ausencia de las mismas, etc. Si no
recibe ningn paquete, debe comprobar la configuracin de la interfaz mediante
netstat, que describiremos despus. Las estadsticas de paquetes producidas por
ifconfig le indican si algn paquete ha sido enviado mediante esa interfaz. Si
tiene acceso a una mquina remota, tambin debera dirigirse a esa mquina y
comprobar las estadsticas de la interfaz. De este modo puede determinar
exactamente en qu momento se han descartado los paquetes. Adems, debe
consultar la informacin de encaminamiento con route para ver si ambas
mquinas han registrado sta correctamente en sus tablas. Route imprime la
tabla de encaminamiento del ncleo completa si se ejecuta sin argumentos (la
opcin n hace que utilice la notacin de cuaternas en vez de los nombres de las
mquinas):
111

LINUX

Mayo 2004

#route -n
Kernelroutingtable
DestinationGatewayGenmaskFlagsMetricRefUseIface
127.0.0.1*255.255.255.255UH10112lo
172.16.1.0*255.255.255.0U1010eth0

El significado de cada uno de los campos se detalla ms adelante. La columna


Flags contiene una lista de los indicadores activos en cada interfaz. U indica que
la interfaz est activa y H indica que la direccin de destino es una mquina. Si
encuentra que el indicador H se ha activado para una ruta que pretenda usar
para una red, entonces debe usar la opcin net con el comando route. Para
comprobar si alguna ruta esta siendo usada o no, debe mirar si el campo U en la
penltima columna se incrementa entre dos ejecuciones sucesivas de ping.
c) Enrutamiento a travs de un ruteador
En la seccin anterior, cubrimos slo el caso en el que la mquina slo tiene una
nica Ethernet. Frecuentemente, es posible encontrar redes conectadas unas a
otras a travs de ruteadores o mquinas de enlace. Estos ruteadores pueden
simplemente unir dos o ms Ethernets, pero pueden tambin servir de enlace con
el exterior, con Internet. Para usar un ruteador, es necesario aadir informacin
adicional a la capa de red.
Por ejemplo, las Ethernets de la Cervecera Virtual y de la Vinatera Virtual estn
unidas a travs de un ruteador, vlager. Suponiendo que la mquina vlager ha sido
configurada ya, slo tenemos que aadir otro registro a la tabla de enrutamiento
de la mquina vstout que le comunique al ncleo que puede acceder a todos los
nodos de la red de la Vinatera a travs de vlager. La orden apropiada usando
route se muestra a continuacin; la palabra clave gw indica que el argumento
siguiente es un ruteador:
#route add wine-net gw vlager

Por supuesto, cualquier nodo en la red de la Vinatera al que quiera dirigirse debe
tener un registro anlogo referido a la red de la Cervecera, o de otro modo slo
podra enviar datos a la red de la Vinatera desde la Cervecera, pero las mquinas
de la Vinatera seran incapaces de responder.

112

LINUX

Mayo 2004

Este ejemplo describe nicamente un ruteador que conmuta paquetes entre dos
redes Ethernet aisladas.
Supongamos ahora que vlager tambin tiene una conexin a la Internet (digamos
que a travs de un enlace SLIP). Nos gustara que los datagramas destinados a
cualquier direccin fuera de la red de la Cervecera fueran entregados a vlager.
Esto se puede conseguir convirtindolo en el ruteador por omisin para vstout:
#route add default gw vlager

El nombre de red default es una abreviatura que representa la red 0.0.0.0, o ruta
por omisin. La ruta por omisin analiza cada destino, y es la que ser usada si
no se encuentra ninguna ruta ms especfica. No es necesario aadir este
nombre a /etc/networks, porque esta informacin esta contenida en el cdigo de
route.

d) Configuracin de un Ruteador
Configurar una mquina para conmutar paquetes entre dos Ethernets es bastante
sencillo. Suponga que nos encontramos en vlager, que contiene dos tarjetas
Ethernet, respectivamente conectadas a cada una de las dos redes. Todo lo que
necesitar hacer es configurar ambas interfaces de forma separada, dndole a
cada una su direccin IP correspondiente, y eso es todo.
Es bastante til incluir la informacin de ambas interfaces en el archivo hosts del
modo indicado a continuacin, de forma que tengamos nombres para referirnos a
ellas tambin:
172.16.1.1vlager.vbrew.comvlagervlagerif1
172.16.2.1vlagerif2

La secuencia de comandos para establecer las dos intefaces es por tanto:


#ifconfig eth0 vlager-if1
#route add brew-net
#ifconfig eth1 vlager-if2
#route add wine-net

113

LINUX

Mayo 2004

Si esta secuencia no funciona, asegrese de que el ncleo ha sido compilado con


el soporte para transmisin IP (IP forwarding). Una buena forma de hacerlo es
comprobar que el primer nmero de la segunda lnea de /proc/net/snmp es un 1.

e) La interfaz PLIP
Si usa un enlace PLIP para conectar dos mquinas, las cosas son un poco
diferentes de lo visto para una Ethernet. En caso de PLIP se trata de un enlace
conocido como punto-a-punto, lo que significa que slo hay una mquina a cada
extremo del enlace. A las redes como Ethernet se les llama redes de difusin. La
configuracin de enlaces punto a punto es diferente porque a diferencia de las
redes de difusin, los enlaces punto a punto no son una red por s mismos.
PLIP ofrece conexin muy barata y potable entre ordenadores. A modo de
ejemplo, consideremos un ordenador porttil de un empleado en la Cervecera
Virtual que se conecta a vlager mediante PLIP. El porttil se llama vlite, y tiene un
nico puerto paralelo. Durante el arranque, este puerto ser registrado como
plip1. Para activar el enlace, ha de configurar la interfaz plip1 mediante las
rdenes siguientes:
#ifconfig plip1 vlite pointopoint vlager
#route add default gw vlager

La primera orden configura la interfaz, dicindole al ncleo que se trata de un


enlace punto-a-punto, donde la parte remota tiene la direccin de vlager. El
segundo instala la ruta por omisin que usa a vlager como ruteador. En vlager se
necesita ejecutar ifconfig con argumentos similares para activar el enlace (en
este caso no es necesario usar route):
#ifconfig plip1 vlager pointopoint vlite

Es interesante notar que la interfaz plip1 en vlager no necesita tener una direccin
IP diferente, sino que puede usar la misma direccin 172.16.1.1.
Una vez que hemos configurado el enrutamiento desde el porttil a la red de la
Cervecera, slo resta arbitrar un modo para que cualquier mquina en esa red
pueda acceder a vlite. Un modo particularmente enrevesado sera aadir una ruta
114

LINUX

Mayo 2004

a las tablas de enrutamiento de cada una de las mquinas de la red para usar
vlager como ruteador hacia vlite:
#route add vlite gw vlager

Una opcin mejor cuando tenemos que trabajar con rutas temporales es usar
enrutamiento dinmico.
Una forma de conseguirlo es usando gated, un demonio de enrutamiento, que
deber instalar en cada una de las mquinas de la red de modo que distribuya la
informacin de enrutamiento de forma dinmica. La forma ms sencilla, sin
embargo, consiste en usar proxy ARP. Con la sustitucin ARP, vlager responde a
cualquier pregunta ARP dirigida a vlite enviando su propia direccin Ethernet. El
efecto conseguido es que todos los paquetes dirigidos a vlite terminan yendo a
vlager, que se encarga de reenvirselos al porttil.
f) Las interfaces SLIP y PPP
A pesar de que los enlaces SLIP y PPP son simples enlaces punto-a-punto igual
que las conexiones PLIP, hay mucho ms que decir de ellas. Generalmente, el
establecimiento de un enlace SLIP incluye una llamada a un lugar de conexin
remoto a travs de un mdem y el establecimiento del modo SLIP en la lnea de
comunicaciones serie. El uso de PPP es similar. Las herramientas necesarias
para establecer un enlace SLIP o PPP se describen en secciones 3.5. y 3.6..
g) La Interfaz Comodn
La interfaz comodn (dummy) parece un tanto extica y sin embargo es bastante
til. Resulta especialmente ventajosa para mquinas aisladas y para las que se
conectan a una red IP mediante un enlace telefnico. Se trata en realidad de
mquinas que trabajan de forma aislada la mayor parte del tiempo.
El dilema con las mquinas aisladas es que el nico dispositivo activo es el de
bucle local, al que generalmente se le asigna la direccin 127.0.0.1. En
ocasiones, sin embargo, le resultar necesario enviar datos a la direccin IP
oficial de la mquina. Supongamos, por ejemplo, el caso del porttil vlite cuando
no esta conectado a ninguna red. Una aplicacin en vlite puede querer enviar
115

LINUX

Mayo 2004

datos a otra aplicacin en la misma mquina. Buscar vlite en /etc/hosts dar como
resultado 172.16.1.65, y por tanto intentar enviar los datos a esa direccin.
Como la nica interfaz activa en ese momento es la de bucle local, el ncleo no
sabe que la direccin se refiere a la misma mquina. En consecuencia el ncleo
descarta el datagrama y genera un error en la aplicacin.
En esta situacin es cuando la interfaz comodn es til, resolviendo el dilema
actuando como alter ego de la interfaz de bucle local. En el caso de vlite,
simplemente debe asignarle la direccin 172.16.1.65 y aadir una ruta que apunte
a ella. Cada datagrama para 172.16.1.65 es enviado entonces localmente. La
forma correcta es pues:
#ifconfig dummy vlite
#route add vlite

h) Alias de IP
Los nuevos ncleos llevan una funcionalidad que puede sustituir por completo a la
interfaz comodn, y que tiene otras tiles funciones. IP Alias permite configurar
mltiples direcciones IP en un slo dispositivo fsico.
En el caso ms simple, usted puede reproducir la funcin de la interfaz comodn
configurando la direccin del nodo como un alias de la interfaz de bucle local, y
evitar por completo usar la intefaz comodn. Para usos ms complejos, usted
puede configurar su mquina para simular ser varias mquinas, cada una con su
propia direccin IP. Esta configuracin es llamaba a veces Hosting Virtual, aunque
tcnicamente se usa tambin para otras muchas tcnicas.
Para configurar un alias para una interfaz, primero debe asegurarse de que su
ncleo ha sido compilado con soporte para Alias de IP (compruebe que tiene un
fichero /proc/net/ip_alias; si no es as, debe recompilar el ncleo). La
configuracin de un alias de IP es virtualmente idntica a la configuracin de un
dispositivo de red real; se usa un nombre especial para indicar que lo que usted
quiere es un alias. Por ejemplo:
#ifconfig lo:0 172.16.1.1

116

LINUX

Mayo 2004

Esta orden crear un alias para la interfaz de bucle local con la direccin
172.16.1.1. Los alias de IP se sealan anteponiendo :n al dispositivo actual de
red, donde n es un entero. En nuestro ejemplo, el dispositivo de red donde
estamos creando el alias es lo, y estamos creando un alias numerado como cero
para l. De esta forma, un nico dispositivo fsico puede soportar varios alias.
Cada alias debe ser tratado como si fuera un dispositivo diferente, y en lo
referente al software de IP del ncleo, as es; por ms que est compartiendo su
hardware con otro interfaz.
3.3.7. Todo sobre ifconfig
El programa ifconfig tiene muchos ms parmetros que los descritos hasta
ahora. Generalmente se ejecuta en la forma:
ifconfiginterfaz [direccin [parmetros]]

interfaz es el nombre de la interfaz y direccin es la direccin IP que se asigna a


dicha interfaz. La direccin puede estar en forma de cuaterna o usando un
nombre que ifconfig buscar en /etc/hosts.
Si ifconfig es ejecutado aadiendo nicamente el nombre de la interfaz,
presentar la informacin de la configuracin de dicha interfaz. Si se ejecuta sin
parmetros, presenta todas las interfaces configuradas hasta el momento; usando
la opcin a fuerza a ifconfig a incluir la informacin de las interfaces inactivas. A
modo de ejemplo, la consulta de la configuracin de la interfaz Ethernet eth0
sera:
#ifconfig eth0
eth0Linkencap10MbpsEthernetHWaddr00:00:C0:90:B3:42
inetaddr172.16.1.2Bcast172.16.1.255Mask255.255.255.0
UPBROADCASTRUNNINGMTU1500Metric0
RXpackets3136errors217dropped7overrun26
TXpackets1752errors25dropped0overrun0

Los campos MTU y Metric informan sobre los valores actuales de la MTU (Unidad
Mxima de Transferencia) y de la mtrica para una interfaz dada.
Las lneas RX y TX dan idea de los paquetes recibidos o transmitidos sin errores,
del nmero de errores ocurridos, de cuntos paquetes han sido descartados
117

LINUX

Mayo 2004

(seguramente por memoria insuficiente), y cuntos han sido perdidos por


desbordamiento, condicin que ocurre cuando la recepcin de paquetes es
demasiado rpida y el ncleo es incapaz de dar servicio al paquete anterior antes
de la llegada del nuevo paquete. Los nombres de los campos que genera ifconfig
coinciden ms o menos con los parmetros con los que se puede ejecutar, estos
parmetros son explicados en el apendice.
3.3.8. La orden netstat
netstat es una herramienta til para comprobar la configuracin y actividad de su
red. Se llama netstat, aunque se trata en realidad de una coleccin de
herramientas combinadas. Describiremos cada una de las funciones enseguida.
Consulta de la tabla de encaminamiento
Si ejecuta netstat usando el indicador r, puede ver la informacin de la tabla de
enrutamiento del ncleo igual que hemos venido haciendo hasta ahora con route.
Para vstout, tendramos:
#netstat -nr
KernelIProutingtable
DestinationGatewayGenmaskFlagsMSSWindowirttIface
127.0.0.1*255.255.255.255UH000lo
172.16.1.0*255.255.255.0U000eth0
172.16.2.0172.16.1.1255.255.255.0UG000eth0

La opcin -n hace que netstat imprima las direcciones IP en notacin de cuaterna


en vez de usar los nombres simblicos de las mquinas o las redes. Esto es
especialmente til si pretende evitar consultas para esos nombres a travs de la
red (por ejemplo consultas a un servidor DNS o NIS).
La segunda columna de la salida producida por netstat informa sobre los
ruteadores a las que apunta la informacin de enrutamiento. Si una ruta no usa
ruteador, el programa imprime un asterisco. La tercera columna imprime el nivel
de generalizacin de una ruta. Dada una direccin IP para la que encontrar una
ruta apropiada, el ncleo recorre la tabla registro a registro haciendo un "AND"
lgico de la direccin y la mscara de nivel de generalizacin antes de compararla
con el destino que muestra dicho registro.
La cuarta columna muestra varios indicadores que describen la ruta:
118

LINUX

Mayo 2004

La ruta utiliza una pasarela.

La interfaz est activa.

Esta interfaz permite el acceso a una sola mquina. Este es el caso de la


interfaz de bucle local 127.0.0.1.

Esta ruta es creada dinmicamente. Aparece si la entrada de la tabla ha


sido generada por un demonio de encaminamiento como gated o por un
mensaje de redireccin ICMP

Presente cuando este registro ha sido modificado por un mensaje de


redireccin ICMP.

La ruta es una ruta de rechazo, y los datagramas sern descartados.

Las siguientes tres columnas muestran el MSS, tamao de ventana y irtt que
sern aplicados a las conexiones TCP establecidas a travs de esta ruta. El MSS
es el Tamao Mximo de Segmento, y es el tamao del datagrama ms grande
que construir el ncleo para transmitir a travs de esta ruta. La Ventana es la
cantidad mxima de datos que el sistema aceptar de una sola vez desde una
mquina remota. El acrnimo irtt significa tiempo inicial de ida y vuelta, por sus
iniciales en ingls. El protocolo TCP se asegura de que los datos han sido
transmitidos de forma fiable entre mquinas retransmitiendo un datagrama si ste
ha sido perdido. El protocolo TCP mantiene un contador de cunto tarda un
datagrama en ser enviado a su destino, y el "recibo" que se recibe, de forma que
sabe cunto esperar antes de suponer que un datagrama necesita retransmitirse.
Este proceso se llama tiempo de ida y vuelta. El tiempo de ida y vuelta inicial es el
valor que el protocolo TCP usar cuando se establezca una conexin por primera
vez. Para la mayora de los tipos de redes, el valor por omisin es vlido, pero
para algunas redes lentas, especialmente ciertos tipos de redes de radiopaquetes
de aficionados, el tiempo es demasiado pequeo y causa retransmisiones
innecesarias. El valor de irtt puede ajustarse usando el comando route. Los
campos a 0 significan que se est usando el valor por omisin.
Para terminar, el ltimo campo muestra el interfaz de red que usar esta ruta.
Consulta de las estadsticas de una interfaz
Cuando se invoca con el indicador i netstat presenta las estadsticas para las
interfaces de red configuradas en ese momento. Si tambin se pasa la opcin a,
119

LINUX

Mayo 2004

mostrar todas las interfaces presentes en el ncleo, y no slo aquellas que


hayan sido configuradas. En vstout, la salida para netstat sera algo as:
#netstat -i
KernelInterfacetable
IfaceMTUMetRXOKRXERRRXDRPRXOVRTXOKTXERRTXDRPTXOVRFlags
lo0031850003185000BLRU
eth015000972633172012062871121700BRU

Los campos MTU y Met muestran los valores actuales de MTU y de mtrica para
esa interfaz. Las columnas RX y TX muestran cuntos paquetes han sido
recibidos o transmitidos sin errores (RX-OK/TX-OK) o daados (RX-ERR/TXERR); cuntos fueron descartados (RX-DRP/TX-DRP); y cuntos se perdieron por
un desbordamiento. (RX-OVR/TX-OVR).
La ltima columna muestra los indicadores activos para cada interfaz. Son
abreviaturas del nombre completo del indicador, que se muestran con la
configuracin de la interfaz que ofrece ifconfig:
B

Direccin de difusin activa.

La interfaz es un dispositivo de bucle local.

Se reciben todos los paquetes (modo promiscuo).

ARP no funciona para esta interfaz.

Conexin punto a punto.


R

La interfaz funciona.

La interfaz est activa.

Mostrar conexiones
netstat ofrece una serie de opciones para mostrar los puertos activos o pasivos.
Las opciones t, u, w, y x muestran conexiones activas a puertos TCP, UDP, RAW,
o Unix. Si incluye adems el indicador a, se mostrarn tambin los puertos que
estn esperando una conexin (es decir, que estn escuchando). Esto le dar una
lista de todos los servidores que estn corriendo actualmente en su sistema.
Llamar a netstat -ta en vlager produce esta salida:
$netstat -ta
ActiveInternetConnections

120

LINUX

Mayo 2004

ProtoRecvQSendQLocalAddressForeignAddress(State)
tcp00*:domain*:*LISTEN
tcp00*:time*:*LISTEN
tcp00*:smtp*:*LISTEN
tcp00vlager:smtpvstout:1040ESTABLISHED
tcp00*:telnet*:*LISTEN
tcp00localhost:1046vbardolino:telnetESTABLISHED
tcp00*:chargen*:*LISTEN
tcp00*:daytime*:*LISTEN
tcp00*:discard*:*LISTEN
tcp00*:echo*:*LISTEN
tcp00*:shell*:*LISTEN
tcp00*:login*:*LISTEN

Esta salida muestra que la mayora de los servidores estn simplemente


esperando una conexin externa. Sin embargo, la cuarta lnea muestra una
conexin SMTP desde vstout, y la sexta lnea le indica que usted est haciendo
una conexin telnet a vbardolino. El indicador a por s slo indicar todos los
sockets de todo tipo.
3.3.9. Comprobacin de las tablas ARP
En ciertas ocasiones, es til poder ver o alterar el contenido de las tablas ARP del
ncleo, por ejemplo, cuando usted sospecha que una direccin IP duplicada es la
casa de algn problema intermitente en su red. La herramienta arp se hizo para
situaciones como sta. Sus opciones son:
arp[v][ttipohw]a[hostname]
arp[v][ttipohw]shostname direccin hardware
arp[v]dmquina [hostname]

Todos los argumentos hostname pueden ser nombres simblicos, o direcciones IP


en notacin de cuaterna. El primer comando muestra el registro de la tabla
correspondiente a la direccin IP o mquina especificada, o si no se pasa
ninguna, se mostrarn todos los registros. Por ejemplo, al invocar arp en vlager
obtendramos:
#arp -a
IPaddressHWtypeHWaddress
172.16.1.310MbpsEthernet00:00:C0:5A:42:C1
172.16.1.210MbpsEthernet00:00:C0:90:B3:42
172.16.2.410MbpsEthernet00:00:C0:04:69:AA

121

LINUX

Mayo 2004

Que muestra las direcciones Ethernet de vlager, vstout y vale. Se puede limitar el
listado a un tipo de hardware especificado usando la opcin t. Los valores
posibles son ether, ax25, o pronet, y se refieren a Ethernet de 10Mbps, AMPR
AX.25, y equipos token ring IEEE 802.5, respectivamente.
La opcin s se usa para aadir permanentemente la direccin Ethernet de la
mquina especificada a las tablas ARP. El argumento direccin hawdware
especifica la direccin de hardware, que por omisin se supone que es una
direccin Ethernet especificada como seis bytes en hexadecimal separados por
dos puntos. Usted puede incluso definir las direcciones de hardware para otros
tipos de hardware, usando la opcin t. Por alguna razn, las peticiones ARP para
mquinas remotas fallan algunas veces, por ejemplo cuando el controlador ARP
no funciona, o cuando alguna otra mquina se identifica errneamente como si
ella misma tuviera esa direccin IP. Este problema requiere que usted aada
manualmente una direccin IP en la tabla ARP. Tambin es una forma (muy
drstica) de protegerse a s mismo de otras mquinas de su Ethernet que tratan
de hacerse pasar por otras.
El uso de arp con el modificador d borra todas las entradas ARP referentes a la
mquina dada. Este modificador puede ser usado para forzar a la interfaz a
intentar obtener la direccin Ethernet correspondiente a la direccin IP en
cuestin. Esto es til cuando un sistema mal configurado ha emitido una
informacin ARP errnea (por supuesto, usted debe reconfigurar la mquina
estropeada primero). La opcin s tambin puede usarse para implementar un
proxy ARP. Esta es una tcnica especial, en la que una mquina, llammosla
gate, acta como una pasarela a otra mquina llamada fnord simulando que las
dos direcciones hacen referencia a la misma mquina, en este caso gate. Esto se
consigue incluyendo una entrada ARP para fnord que apunte a su propia interfaz
Ethernet. Cuando una mquina enve una peticin ARP para fnord, gate devolver
una respuesta con su propia direccin Ethernet. La mquina que hizo la peticin
enviar entonces todos los datagramas a gate, que se los pasar a fnord.
Otra aplicacin til del proxy ARP es cuando una de sus mquinas acte como un
ruteador para otra mquina slo temporalmente, por ejemplo a travs de un
enlace telefnico. En un ejemplo anterior, ya nos encontramos con que el porttil
vlite se conectaba a vlager a travs de un enlace PLIP de vez en cuando. Por
122

LINUX

Mayo 2004

supuesto, esta aplicacin servir slo si la direccin de la mquina para la que


quiere actuar como proxy ARP est en la misma subred que su ruteador. vstout
podra hacer de proxy ARP para cualquier mquina de la red de la Cervecera
(172.16.1.0), pero nunca para una mquina de la red de la Vinatera (172.16.2.0).
La invocacin adecuada para hacer de proxy ARP para fnord se da abajo. Por
supuesto, la direccin Ethernet dada debe ser la de gate:
#arpsfnord00:00:c0:a1:42:e0pub

Para borrar el registro del proxy ARP:


#arpdfnord

3.4. El servicio de nombres y su configuracin


Como se ha mencionado, la red TCP/IP puede utilizar diferentes mtodos para
convertir nombres en direcciones IP. El mecanismo ms simple consiste en
almacenar los nombres en una tabla de mquinas en el archivo /etc/hosts.
Alternativamente, puede utilizarse BIND el servicio de nombres Internet de
Berkeley o ``Berkeley Internet Name Domain'', para traducir nombres de
mquinas a direcciones IP (cosa que tambin se conoce como resolucin).
Configurar BIND puede ser una laboriosa tarea pero, una vez hecho, los cambios
en la topologa de la red sern mucho ms fciles de hacer. En Linux, como en
muchos otros sistemas Unix, el servicio de nombres se realiza mediante un
programa llamado named. Al iniciarse, carga un conjunto de ficheros maestros en
su cach y espera peticiones de procesos locales o remotos.
Esta seccin le dar ideas generales acerca de cmo configurar y ejecutar un
servidor de nombres.
3.4.1. La biblioteca de resolucin
Cuando hablamos del sistema de resolucin, no nos referiremos a una aplicacin
en particular, sino a la biblioteca de resolucin: un conjunto de funciones que
pueden encontrarse en las bibliotecas estndar del lenguaje C. Las rutinas
principales son gethostbyname(2) y gethostbyaddr(2), que buscan la direccin IP
de una mquina a partir del nombre y viceversa. Es posible configurarlas para que
simplemente miren en el archivo hosts local (o remoto, si se usa NIS).
123

LINUX

Mayo 2004

Las funciones del sistema de resolucin leen archivos de configuracin cuando


son llamadas. Desde estos archivos, determinan qu bases de datos hay que
interrogar, en qu orden y otros detalles relevantes. En la antigua biblioteca libc
de Linux, se utilizaba el archivo /etc/host.conf como archivo maestro, pero en la
versin 2 de las bibliotecas, la glibc, se utiliza el archivo /etc/nsswitch.conf. Vamos
a describir ambas formas, puesto que son muy usuales.
El archivo host.conf
El archivo host.conf se encuentra en el directorio /etc e indica al sistema de
resolucin qu servicios debe usar y en qu orden.
Las opciones disponibles son las siguientes:
order
Determina el orden en el que los servicios de resolucin se usan. Opciones
vlidas son bind para usar el servidor de nombres, /etc/hosts para buscar en
/etc/hosts y nis para buscar con NIS.
Puede especificarse cualquiera de las anteriores, y el orden de aparicin
determina qu servicio se prueba en primer lugar para intentar resolver el nombre.
multi
Va con las opciones on u off. Determina si una mquina del fichero /etc/hosts
puede tener distintas direcciones IP o no. Esta opcin no tiene efecto en
peticiones via NIS o DNS.
nospoof
DNS le permite encontrar un nombre de mquina perteneciente a una direccin IP
utilizando el dominio in-addr.arpa. Los intentos de los servidores de nombres de
proporcionar un nombre falso se conocen en ingls como spoofing. Para evitar
esto, el sistema puede configurarse para comprobar si las direcciones IP
originales estn de hecho asociadas con el nombre obtenido. Si no, el nombre
ser rechazado y se retornar un error. Esta opcin se activa poniendo nospoof
on.
alert

124

LINUX

Mayo 2004

Esta opcin puede tomar el valor on u off como argumentos. Si se activa,


cualquier intento de spoof ser anotado con un mensaje enviado al sistema de
registros syslog.
trim
Esta opcin lleva un nombre de dominio como argumento, que se quitar a los
nombres antes de buscar su direccin. Es til para las entradas del fichero hosts,
que podrn as ir solos los nombres de mquinas, sin el dominio. Cuando se
busque una mquina con el nombre de dominio local ste ser eliminado,
haciendo que la bsqueda en el archivo /etc/hosts tenga xito. El dominio que
aada debe terminar en un punto (.) (por ejemplo, linux.org.au.).
Las opciones de trim se van acumulando; podemos considerar nuestra mquina
como local de diversos dominios. Veamos un archivo de ejemplo para vlager en
Ejemplo 3-7.
Ejemplo 3-7. Ejemplo de archivo host.conf
#/etc/host.conf
#Tenemosservidordenombres,peronoNIS(demomento)
orderbindhosts
#Permitirdireccionesmltiples
multion
#Contralosnombresfalsos
nospoofon
#Dominiolocalpordefecto(nonecesario).
trimvbrew.com.

Variables de entorno
Existen algunas variables de entorno que establecen opciones que tienen ms
prioridad sobre las puestas en el archivo host.conf. stas son:
RESOLV_HOST_CONF
Especifica un archivo alternativo a /etc/host.conf.
RESOLV_SERV_ORDER
Establece la opcin equivalente a la orden order del archivo anterior. Los servicios
pueden ser hosts, bind y/o nis, separados por comas, espacios, puntos o puntos y
coma.
125

LINUX

Mayo 2004

RESOLV_SPOOF_CHECK
Determina la poltica seguida frente a los nombres falsos. Estar completamente
desactivada con la opcin off. Con las opciones warn y warn off se realizarn
comprobaciones contra los nombres falsos, pero en el primer caso se mandarn
los avisos al registro. Un valor * activa las comprobaciones contra nombres falsos,
pero las anotaciones en el registro se dejan como diga el archivo host.conf.
RESOLV_MULTI
El valor on activa la opcin ``multi'', y el valor off la desactiva.
RESOLV_OVERRIDE_TRIM_DOMAINS
Esta variable lleva una lista de dominios por defecto, similar a la puesta en el
archivo host.conf con la opcin trim.
RESOLV_ADD_TRIM_DOMAINS
Esta variable lleva una lista de dominios por defecto que se aade a las que se
dan en el archivo host.conf.
El archivo nsswitch.conf
El archivo nsswitch.conf permite al administrador de sistemas configurar una
amplia variedad de diferentes bases de datos. Limitaremos nuestra discusin a
opciones que se refieran a la resolucin de nombres de mquina y direcciones IP.
Se puede encontrar fcilmente mucha ms informacin para aprovechar el resto
de las caractersticas de este archivo, sin ms que leer la documentacin de la
biblioteca estndar. Las opciones posibles se encuentran en el apndice
El orden en el que los servicios estn listados es el orden en el que sern
interrogados para buscar un nombre. Es decir, los servicios son interrogados
leyndolos de izquierda a derecha, hasta encontrar la respuesta. Un ejemplo del
archivo nsswitch.conf lo tenemos en Ejemplo 3-8.
Ejemplo 3-8. Ejemplo de archivo nsswitch.conf
#/etc/nsswitch.conf
#
#EjemplodeconfiguraciondelnsswitchdeGNU.
#Enelpaquete`libc6doc'sedocumentanestosficheros.
hosts:dnsfiles

126

LINUX

Mayo 2004

networks:files

Este ejemplo hace que el sistema busque los nodos, primero en el DNS y
despus en /etc/hosts, si no se encuentra. En cambio las redes se buscan
exclusivamente en /etc/networks. Podemos controlar el comportamiento ms
precisamente, usando items de accin que describen qu hacer tras el ltimo
intento de bsquedas. Los items de accin aparecen entre los servicios, y se
encierran entre corchetes, [. La sintaxis general es:
[[!]estado =accin ...]

Hay dos posibles acciones:


return
Hace que el control retorne al programa que hizo la peticin de resolucin. Si la
bsqueda tuvo xito, retornar los detalles. Si no, retornar un cero.
continue
El sistema seguir buscando a travs del siguiente servicio de la lista.
El carcter opcional (!) especifica que el valor de estado debe considerarse
invertido antes de comprobarlo, es decir, es un not. Los valores de estado posible
son:
success
La peticin se encontr sin errores. La accin por defecto aqu es return.
notfound
No hubo error en la bsqueda, pero no se encontr el nodo o la red. La accin
predeterminada aqu es continue.
unavail
El servicio solicitado no est disponible. Por ejemplo, que el archivo /etc/hosts no
est en su sitio, o que el servidor DNS o NIS requeridos no respondan. La accin
predeterminada es continue.
tryagain
Significa que el servicio estaba no disponible temporalmente. Por ejemplo, que el
archivo hosts est bloqueado por otro proceso, o que el DNS est muy cargado.
La accin predeterminada para este estado es continue. Un ejemplo de uso de
todo esto se muestra en Ejemplo 3-9.
127

LINUX

Mayo 2004

Ejemplo 3-9. Ejemplo de nsswitch.conf con acciones


#/etc/nsswitch.conf
#
#EjemplodeconfiguraciondelnsswitchdeGNU.
#Enelpaquete`libc6doc'sedocumentanestosficheros.
hosts:dns[!UNAVAIL=return]files
networks:files

Este ejemplo intentar resolver los nodos usando el DNS. Si se devuelve un error
que no sea UNAVAIL, el sistema devolver lo que ha encontrado. En otro caso
intentar buscarlo en /etc/hosts. Esto significa que este archivo solo se usar en
caso de que el DNS no funcione bien.

3.4.2. Cmo funciona el DNS


El DNS organiza los nombres de mquina (hostname) en una jerarqua de
dominios. Un dominio es una coleccin de nodos relacionados de alguna
formaporque estn en la misma red, tal como los nodos de una universidad. Este
nombre totalmente cualificado tambin se conoce por las siglas FQDN.
En Figura 3-2 vemos una parte del espacio de nombres. La raz del rbol, que se
identifica con un punto sencillo, es lo que se denomina dominio raz y es el origen
de todos los dominios. Para indicar que un nombre es FQDN, a veces se termina
su escritura en un punto. Este punto significa que el ltimo componente del
nombre es el dominio raz.

128

LINUX

Mayo 2004

Figura 3-2. Una parte del espacio de nombres de dominios

Dependiendiendo de su localizacin en la jerarqua, un dominio puede ser de


primer nivel (top-level), segundo nivel o tercer nivel. Se pueden aadir todos los
niveles que queramos, pero no son habituales. Los que siguen son los dominios
de primer nivel que veremos con frecuencia:
Dominio

Descripcin

edu

Instituciones universitarias, casi todas norteamericanas.

com

Organizaciones comerciales.

org

Organizaciones no comerciales. Las redes privadas UUCP


suelen estar en este dominio.

net

Ruteadores y otras redes administrativas.

mil

El ejrcito norteamericano.

gov

El gobierno norteamericano.

uucp

Dominio para redes UUCP.

La organizacin del espacio de nombres en una jerarqua de nombres de dominio


sirve para resolver fcilmente el problema de la unicidad de los nombres; adems
muchos nombres completamente cualificados son fciles de recordar. Bajo esta
premisa es conveniente dividir un dominio con gran nmero de mquinas en
subdominios.
El sistema DNS hace ms cosas. Permite delegar la autoridad de un subdominio
a sus administradores. Por ejemplo, los responsables del Centro de Clculo
129

LINUX

Mayo 2004

Groucho pueden crear un subdominio para cada departamento, y delegar su


control a stos. As, cada departamento puede definir libremente todos los nodos
que quiera dentro de su subdominio e incluso crear nuevos subdominios y
delegarlos.
Para esto, el espacio de nombres se divide en zonas, cada una asignada a un
dominio. Hay que ver la diferencia entre zona y dominio: por ejemplo, el dominio
groucho.edu incluye todas las mquinas y subdominios de ste. Mientras que la
zona groucho.edu solo incluye las mquinas del dominio, no los subdominios
delegados. Es decir, los nodos del subdominio physics.groucho.edu pertenecen a
una zona diferente. En Figura 3-2, el inicio de la zona se marca con un pequeo
crculo a la derecha del nombre de dominio.
Tipos de servidores de nombres
Los servidores de nombres que mantienen oficialmente la informacin de una
zona se conocen como autorizados de la zona, y a veces se conocen como
servidores principales o maestros. Cualquier peticin de nodos de esa zona ir a
parar a uno de estos servidores principales.
Los servidores principales deben estar bien sincronizados. Es decir, uno de ellos
ser llamado primario, que carga su informacin de un fichero, y hacer a los
dems secundarios, que obtienen su informacin pidindosela peridicamente al
primario.
El objetivo de tener varios servidores principales es distribuir la carga y dar cierta
tolerancia a fallos. Cuando uno de los servidores principales falla, todas las
peticiones acabarn en los dems. Por supuesto, este esquema no nos protege
de fallos del servidor que produzcan errores en todas las peticiones DNS, como
podran ser errores del software.
Tambin podemos instalar un servidor de nombres que no es maestro de ninguna
zona. Esto es til, para dar servicio de nombres a una red local aprovechando sus
caractersticas de ahorro de ancho de banda gracias a su cach. Estos servidores
se conocen como de slo-cach.

130

LINUX

Mayo 2004

La base de datos DNS


Hemos visto que el DNS no slo sabe de direcciones IP de mquinas, pero
tambin almacena otras informaciones.
Cada unidad de informacin del DNS se llama Registro de Recurso (RR). Cada
registro tiene un tipo asociado que describe el dato que contiene, y una clase que
especifica el tipo de red al que se aplica. Esto ltimo se adapta a diferentes
esquemas de direccin, como direcciones IP (la clase IN), direcciones Hesiod
(utilizadas por el sistema Kerberos del MIT) y algunas ms. El RR tpico es el
registro A, que asocia un nombre completamente cualificado con una direccin IP.
Un nodo puede ser conocido por ms de un nombre. Por ejemplo, podemos tener
un servidor que proporciona tanto servicio FTP como WWW, y tendr dos
nombres: ftp.maquinas.org y www.maquinas.org.
Sin embargo, uno de estos nombres debe ser identificado como oficial o cannico.
La diferencia es que el cannico es el nico registro A que debe existir apuntando
a esa direccin IP, mientras que el resto de los nombres deben ser alias (registros
CNAME), que apuntan al nombre cannico. No vamos a revisar todos los tipos de
RR aqu, pero veremos algn ejemplo ms amplio. En Ejemplo 3-10 vemos una
parte de la base de datos DNS que est cargada en los servidores de nombres
para la zona physics.groucho.edu.

Ejemplo 3-10. Extracto del fichero named.hosts del Departamento de Fsicas


;Informacionautoritativaphysics.groucho.edu.
@INSOAniels.physics.groucho.edu.janet.niels.physics.groucho.edu.{
1999090200;numerodeserie
360000;refresco
3600;reintento
3600000;caducidad
3600;TTLpredeterminado
}
;
;Servidoresdenombres
INNSniels
INNSgauss.maths.groucho.edu.
gauss.maths.groucho.edu.INA149.76.4.23;
;FisicaTeorica(subred12)
nielsINA149.76.12.1
INA149.76.1.12
nameserverINCNAMEniels
ottoINA149.76.12.2
quarkINA149.76.12.4
downINA149.76.12.5

131

LINUX

Mayo 2004

strangeINA149.76.12.6
...
;Laboratorio(subred14)
bosonINA149.76.14.1
muonINA149.76.14.7
bogonINA149.76.14.12
...

Aparte de los registros A y CNAME, vemos al principio un registro especial, de


varias lneas. Es el registro SOA, que sealiza el inicio de autoridad, que
almacena diversos parmetros de la zona de la que es autoritativo el servidor. El
registro SOA incluye, por ejemplo, el tiempo de vida predeterminado de los
registros (TTL).
Ntese que todos los nombres del archivo de ejemplo que no finalizan en un
punto deben interpretarse relativos al dominio physics.groucho.edu. El nombre
especial (@) utilizado en el registro SOA representa al propio nombre del dominio.
Hemos visto antes que los servidores de nombres para el dominio groucho.edu
tienen que saber acerca de la zona physics para poder realizar peticiones a sus
servidores de nombres. Esto normalmente se realiza mediante dos registros: los
registros DNS que proporcionan el FQDN del servidor de nombres, y el registro A
que asocia ese FQDN con una direccin IP. Puesto que estos registros son los
que mantienen el espacio de nombres, se conocen frecuentemente como
registros glue. Slo son instancias de registros para los que una zona padre
mantiene informacin sobre nodos de la zona subordinada. Los registros glue
apuntando a los servidores de nombres de physics.groucho.edu se muestran en
Ejemplo 3-11.
Ejemplo 3-11. Un extracto del fichero named.hosts
;Zonadedatosparalazonagroucho.edu
@INSOAvax12.gcc.groucho.edu.joe.vax12.gcc.groucho.edu.{
1999070100;serieno
360000;refresco
3600;reintento
3600000;expiracin
3600;ttlporomisin
}
....
;
;Registrosglueparalazonaphysics.groucho.edu
physicsINNSniels.physics.groucho.edu.
INNSgauss.maths.groucho.edu.
niels.physicsINA149.76.12.1
gauss.mathsINA149.76.4.23
...

132

LINUX

Mayo 2004

Resolucin inversa

La operacin ms habitual con el DNS es obtener la direccin IP correspondiente


a un nombre de nodo. Sin embargo, a veces queremos hacer la operacin
opuesta: encontrar el nombre a partir de la direccin IP. Esto se conoce como
resolucin inversa, y la usan diversas aplicaciones para comprobacin de
identidad del cliente. Cuando se utiliza el archivo hosts, la resolucin se realiza
mediante una bsqueda simple en el archivo. Con el DNS, una bsqueda
exhaustiva en el espacio de nombres carece de sentido. En su lugar, existe un
dominio especial, el in-addr.arpa, que contiene las direcciones IP de todos los
sistemas en una notacin de puntos invertida. Por ejemplo, a la direccin 1.2.3.4
le corresponde el nombre 4.3.2.1.in-addr.arpa. El registro de recurso (RR) que
define esto se llama registro PTR.
Cuando se crea una zona de autoridad, ello suele significar que sus
administradores tienen control total sobre cmo se asignan los nombres a las
direcciones. Puesto que normalmente tienen bajo su control una o ms redes o
subredes IP, se da una situacin de mapeo uno-a-varios entre zonas DNS y redes
IP. El Departamento de Fsica, por ejemplo, comprende las subredes 149.76.8.0,
149.76.12.0 y 149.76.14.0. En consecuencia, deben crearse nuevas zonas en el
dominio in-addr.arpa para la zona de Fsica, delegndose a sta las siguientes:
8.76.149.in-addr.arpa, 12.76.149.in-addr.arpa, y 14.76.149.in-addr.arpa. De otro
modo cada vez que instalsemos un nuevo nodo en el laboratorio Collider, habra
que contactar con el que gestiona la red padre para que actualizase su archivo de
zona in-addr.arpa.
En Ejemplo 3-12 se muestra la base de datos para la subred 12. Los registros
glue correspondientes a la base de datos de la zona padre se muestran en
Ejemplo 3-13.
Ejemplo 3-12. Extracto del archivo named.rev de la subred 12
;dominio12.76.149.inaddr.arpa
@INSOAniels.physics.groucho.edu.janet.niels.physics.groucho.edu.{
1999090200360000360036000003600
}
2INPTRotto.physics.groucho.edu.
4INPTRquark.physics.groucho.edu.
5INPTRdown.physics.groucho.edu.
6INPTRstrange.physics.groucho.edu.

133

LINUX

Mayo 2004

Ejemplo 3-13. Extracto del archivo named.rev de la Red 149.76


;dominio76.149.inaddr.arpa
@INSOAvax12.gcc.groucho.edu.joe.vax12.gcc.groucho.edu.{
1999070100360000360036000003600
}
...
;subnet4:MathematicsDept.
1.4INPTRsophus.maths.groucho.edu.
17.4INPTRerdos.maths.groucho.edu.
23.4INPTRgauss.maths.groucho.edu.
...
;subnet12:PhysicsDept,separatezone
12INNSniels.physics.groucho.edu.
INNSgauss.maths.groucho.edu.
niels.physics.groucho.edu.INA149.76.12.1
gauss.maths.groucho.edu.INA149.76.4.23
...

Las zonas de in-addr.arpa slo pueden ser creadas por superconjuntos de redes
IP. Hay una restriccin ms severa: las mscaras de estas redes deben contener
los octetos completos. Es decir, podemos crear una zona para una red con
mscara 255.255.255.0 pero no para una del tipo 255.255.255.128. El motivo es
que para especificar la red delegada 149.76.4.0 tenemos el dominio 4.76.149.inaddr.arpa, pero para la red 149.76.4.128 no tenemos forma de nombrar el dominio
in-addr correspondiente.

3.4.3. Ejecucin de named


named (pronnciese n'eim-di:) es el servidor DNS en casi todas las mquinas
Unix. Es un programa desarrollado originalmente para BSD. Tiene muchas
caractersticas nuevas, como el soporte de actualizacin dinmica del DNS,
notificaciones de cambios, mejoras importantes de rendimiento y una nueva
sintaxis de archivo de configuracin. Esta seccin requiere ideas acerca de cmo
funciona el Sistema de Nombres y Dominios (DNS).
named suele iniciarse al arrancar la mquina, y ejecutarse hasta que se apaga.
Las versiones anteriores de BIND hasta la 8 obtienen la informacin que
necesitan de un archivo llamado /etc/named.boot. Las nuevas versiones usan el
archivo /etc/named.conf. Adems, hay que configurar los archivos de zona. Para
ejecutar named, slo tiene que teclear:
#/usr/sbin/named

134

LINUX

Mayo 2004

El programa named se iniciar y leer el archivo named.boot y los archivos de


zona que se especifiquen en l. Su nmero de proceso ser anotado en ASCII en
el fichero /var/run/named.pid, recibir archivos de zona de los servidores
principales si es necesario y comenzar a escuchar las peticiones de DNS por el
puerto 53.
I.- El archivo named.boot
El archivo named.boot suele ser muy pequeo y contiene punteros a archivos
con informacin de zonas y a otros servidores de nombres. Los comentarios en
este archivo comienzan con un punto y coma y se extienden hasta el siguiente fin
de lnea. Antes de que veamos con ms detalle el formato de este archivo,
observaremos el ejemplo para la mquina vlager dado en Ejemplo 3-14.
Ejemplo 3-14. Archivo named.boot para vlager
;
;archivo/etc/named.bootparavlager.vbrew.com
;
directory/var/named
;
;domainfile
;
cach.named.ca
primaryvbrew.comnamed.hosts
primary0.0.127.inaddr.arpanamed.local
primary16.172.inaddr.arpanamed.rev

Veamos cmo es el archivo. La palabra directory indica a named el directorio


donde estn los dems archivos de configuracin (los archivos de zona).
Los comandos cach y primary sirven para cargar informacin en \prog{named}.
Esta informacin se obtiene de los archivos espeficados en el segundo
argumento. Contienen representaciones textuales de los registros DNS.
En este ejemplo, se configura named como el servidor de nombres principal para
tres dominios: los que se indican con la orden primary. La primera lnea dice que
named acte como servidor principal para vbrew.com, tomando la informacin de
zona del archivo named.hosts.
La entrada iniciada con la palabra cach es muy especial y debe estar presente
en casi todas las mquinas que ejecuten un servidor de nombres. Su funcin es
doble: indica a named que active su cach, y tambin que cargue la informacin
135

LINUX

Mayo 2004

de los servidores raz del fichero indicado (en este caso, named.ca). En el
apndice podemos encontrar una lista de las opciones ms importantes que
podemos poner en el archivo named.boot
II.- El fichero named.conf de BIND 8
En la versin 8 de BIND se han incluido nuevas caractersticas, lo cual ha
requerido una nueva sintaxis del fichero de configuracin principal. El archivo
named.boot ha sido reemplazado por otro, de nombre named.conf, que tiene una
sintaxis similar a la del programa gated y recuerda a la del lenguaje C.
La nueva sintaxis es ms compleja, pero por suerte disponemos de una utilidad
para convertir automticamente los ficheros named.boot de sintaxis antigua. Esta
utilidad es un script de PERL llamado named-bootconf.pl, que encontraremos en
el cdigo fuente de BIND 8; y lee un fichero en sintaxis antigua, devolviendo por
su salida estndar el archivo en sintaxis nueva. Naturalmente, para utilizarlo es
necesario tener correctamente instalado el intrprete de lenguaje PERL. Al script
lo invocaremos, por ejemplo, as:

#cd /etc
#named-bootconf.pl <named.boot >named.conf

El script produce entonces un fichero similar al que se muestra en Ejemplo 3-15,


donde hemos eliminado algunos comentarios que produce adicionalmente el
script.
Ejemplo 3-15. Archivo named.conf para usar BIND 8 con vlager
//
///etc/named.bootparavlager.vbrew.com
options{
directory"/var/named";
};
zone"."{
typehint;
file"named.ca";
};
zone"vbrew.com"{
typemaster;
file"named.hosts";
};

136

LINUX

Mayo 2004

zone"0.0.127.inaddr.arpa"{
typemaster;
file"named.local";
};
zone"16.172.inaddr.arpa"{
typemaster;
file"named.rev";
};

Si observamos el ejemplo, veremos que cada lnea de named.boot ha sido


convertida a un bloque en estilo C, encerrado entre llaves (signos { y }). Los
comentarios del fichero se escriben ahora en notacin similar a C++, es decir, dos
barras (signo //).
La sentencia directory va ahora dentro del bloque options, junto a otras posibles
opciones globales de configuracin.
Las sentencias cach y primary se convierten en bloques de zona, con sentencias
type especficas, de valor hint y master, respectivamente.
Los archivos de zona no necesitan modificarse, ya que su sintaxis sigue siendo la
de antes. La nueva sintaxis de configuracin se ha pensado para poder incluir
muchas ms opciones de configuracin, en las que no vamos a detenernos.
III.- Archivos de base de datos DNS
Los archivos incluidos con named, como named.hosts, siempre tienen un
dominio asociado a ellos llamado origen. Este es el nombre de dominio
especificado con los comandos cach y primary. En un archivo maestro, se
pueden especificar nombres de mquinas y dominios relativos a este dominio. Un
nombre dado en un archivo de configuracin se considera absoluto si termina con
un punto. En caso contrario se considera relativo al origen. Al origen en s mismo
nos podemos referir con @.
Todos los datos en un archivo principal se dividen en registros de recursos o RRs.
Son la unidad de informacin del DNS. Cada RR tiene un tipo. Los registros de
tipo A, por ejemplo, asocian un nombre a una direccin IP. Los registros de tipo
CNAME asocian un alias de una mquina con su nombre oficial. Como ejemplo,
obsrvese Ejemplo 3-17, que muestra el archivo named.hosts para nuestro
sistema.
La representacin de los RRs en los archivos utiliza el siguiente formato:

137

LINUX

Mayo 2004

[domain][ttl][class]type rdata

Este formato podemos verificarlo en el apndice para revisar el significado de


cada una de sus partes.
IV.- Configuracin de named slo para cach
Hay una clase especial de configuracin de named, que nos servir para
introducirnos en su funcionamiento. Se llama slo-cach. No sirve ningn dominio
propio, pero acta como repetidor de otros DNS para nuestra red local. Cuando
se repitan peticiones a un mismo nodo, el servidor responder con la informacin
que ya tiene, evitando peticiones repetidas que ocupen ancho de banda en
Internet. Esto es especialmente til cuando contamos con una conexin de banda
estrecha.
El archivo named.boot para un servidor slo de cach, es similar a ste:
;named.bootparaservidordeslocach
directory/var/named
primary0.0.127.inaddr.arpanamed.local;redlocal
cach.named.ca;servidoresraiz

Adems de este archivo, hay que tener el correspondiente named.ca, con una
lista vlida de servidores raz. Debemos copiar y usar Ejemplo 3-16 para esto. No
se requieren otros archivos para una configuracin de slo cach.
V.- Cmo hacer los archivos maestros
Ejemplo 3-16, Ejemplo 3-17, Ejemplo 3-18, y Ejemplo 3-19 muestran archivos de
ejemplo para un servidor de nombres de la Cervecera Virtual, localizada en
vlager. Debido a la naturaleza de la red propuesta (una simple LAN), el ejemplo es
muy simple tambin.
El archivo de cach named.ca mostrado en Ejemplo 3-16 contiene ejemplos de
registros de servidores raz. Un fichero tpico de cach contiene como una docena
de servidores de esta clase. Se puede obtener una lista de los servidores raz
usando la utilidad The named.ca cach file shown in nslookup mostrada en la
siguiente seccin.

138

LINUX

Mayo 2004

Ejemplo 3-16. El archivo named.ca


;
;/var/named/named.caarchivodecachparalacervecera.
;AlnoestarenInternetnonecesitamosservidores
;raiz.Sinofueraasi,descomentense.
;
;.3600000INNSA.ROOTSERVERS.NET.
;A.ROOTSERVERS.NET.3600000A198.41.0.4
;.3600000NSB.ROOTSERVERS.NET.
;B.ROOTSERVERS.NET.3600000A128.9.0.107
;.3600000NSC.ROOTSERVERS.NET.
;C.ROOTSERVERS.NET.3600000A192.33.4.12
;.3600000NSD.ROOTSERVERS.NET.
;D.ROOTSERVERS.NET.3600000A128.8.10.90
;.3600000NSE.ROOTSERVERS.NET.
;E.ROOTSERVERS.NET.3600000A192.203.230.10
;.3600000NSF.ROOTSERVERS.NET.
;F.ROOTSERVERS.NET.3600000A192.5.5.241
;.3600000NSG.ROOTSERVERS.NET.
;G.ROOTSERVERS.NET.3600000A192.112.36.4
;.3600000NSH.ROOTSERVERS.NET.
;H.ROOTSERVERS.NET.3600000A128.63.2.53
;.3600000NSI.ROOTSERVERS.NET.
;I.ROOTSERVERS.NET.3600000A192.36.148.17
;.3600000NSJ.ROOTSERVERS.NET.
;J.ROOTSERVERS.NET.3600000A198.41.0.10
;.3600000NSK.ROOTSERVERS.NET.
;K.ROOTSERVERS.NET.3600000A193.0.14.129
;.3600000NSL.ROOTSERVERS.NET.
;L.ROOTSERVERS.NET.3600000A198.32.64.12
;.3600000NSM.ROOTSERVERS.NET.
;M.ROOTSERVERS.NET.3600000A202.12.27.33
;

Ejemplo 3-17. El archivo named.hosts


;
;/var/named/named.hostsNodosdelacervecera
;Elorigenesvbrew.com
;
@INSOAvlager.vbrew.com.janet.vbrew.com.(
2000012601;serie
86400;refresco:unoaldia
3600;reintento:unahora
3600000;caducidad:42dias
604800;minimo:1semana
)
INNSvlager.vbrew.com.
;
;Correolocalseentregaavlager
INMX10vlager
;
;direccion`loopback'
localhost.INA127.0.0.1
;
;Laethernetdelacerveceravirtual
vlagerINA172.16.1.1
vlagerif1INCNAMEvlager
;vlagerestambienservidordenoticias
newsINCNAMEvlager
vstoutINA172.16.1.2
valeINA172.16.1.3
;

139

LINUX

Mayo 2004

;Ethernetdelavinateravirtual
vlagerif2INA172.16.2.1
vbardolinoINA172.16.2.2
vchiantiINA172.16.2.3
vbeaujolaisINA172.16.2.4;
;Ethernet(subsidiaria)delosEspiritusVirtuales
vbourbonINA172.16.3.1
vbourbonif1INCNAMEvbourbon

Ejemplo 3-18. archivo named.local


;
;/var/named/named.localResolucioninversade127.0.0
;Elorigenes0.0.127.inaddr.arpa.
;
@INSOAvlager.vbrew.com.joe.vbrew.com.(
1;serie
360000;refresco:100horas
3600;reintento:unahora
3600000;caducidad:42dias
360000;minimo:100horas
)
INNSvlager.vbrew.com.
1INPTRlocalhost.

Ejemplo 3-19. archivo named.rev


;
;/var/named/named.revResolucioninversadenuestrasIPs
;Elorigenes16.172.inaddr.arpa.
;
@INSOAvlager.vbrew.com.joe.vbrew.com.(
16;serie
86400;refresco:unavezdiaria
3600;reintento:unahora
3600000;caducidad:42dias
604800;minimo:1semana
)
INNSvlager.vbrew.com.
;cervecera
1.1INPTRvlager.vbrew.com.
2.1INPTRvstout.vbrew.com.
3.1INPTRvale.vbrew.com.
;vinatera
1.2INPTRvlagerif2.vbrew.com.
2.2INPTRvbardolino.vbrew.com.
3.2INPTRvchianti.vbrew.com.
4.2INPTRvbeaujolais.vbrew.com.

VI.- Cmo verificar la configuracin


nslookup es una estupenda utilidad para comprobar el funcionamiento de un
servidor de nombres. Se puede usar interactivamente o pasndole la pregunta por
la lnea de rdenes. En este ltimo caso podemos invocar la orden as:
$nslookup
nombre-de-host

140

LINUX

Mayo 2004

nslookup enva sus peticiones al servidor citado en resolv.conf. Si este archivo


tiene ms de un servidor, nslookup eligir uno al azar.
El modo interactivo es mucho ms interesante. No slo sirve para buscar la IP de
un nodo, sino que tambin podemos interrogar acerca de cualquier tipo de
registro DNS y transferirnos toda la informacin de una zona si queremos.
Si se invoca sin argumentos, nslookup muestra el nombre del servidor elegido y
entra en modo interactivo. En el prompt > podemos escribir cualquier nombre de
dominio. Al principio preguntar slo por registros A, es decir, obtencin de la IP
asociada. Podemos elegir un tipo de registro diferente con la orden:
set type=tipo

donde tipo es uno de los tipos de RR descritos antes, o ANY.


Veamos una posible sesin de nslookup:
$nslookup
DefaultServer:tao.linux.org.au
Address:203.41.101.121
>metalab.unc.edu
Server:tao.linux.org.au
Address:203.41.101.121
Name:metalab.unc.edu
Address:152.2.254.81
>

La salida muestra el servidor DNS interrogado y el resultado obtenido.


Si preguntamos por algo que no tiene IP asociada pero s otros registros de otra
clase, el programa nos devolver una advertencia del tipo No type A records
found. Sin embargo, podemos usar el citado comando set type para buscar
registros de otras clases. Por ejemplo, el registro SOA de un dominio puede ser
pedido as:
>unc.edu
Server:tao.linux.org.au
Address:203.41.101.121
***Noaddress(A)recordsavailableforunc.edu
>set type=SOA
>unc.edu
Server:tao.linux.org.au
Address:203.41.101.121
unc.edu
origin=ns.unc.edu

141

LINUX

Mayo 2004

mailaddr=hostreg.ns.unc.edu
serial=1998111011
refresh=14400(4H)
retry=3600(1H)
expire=1209600(2W)
minimumttl=86400(1D)
unc.edunameserver=ns2.unc.edu
unc.edunameserver=ncnoc.ncren.net
unc.edunameserver=ns.unc.edu
ns2.unc.eduinternetaddress=152.2.253.100
ncnoc.ncren.netinternetaddress=192.101.21.1
ncnoc.ncren.netinternetaddress=128.109.193.1
ns.unc.eduinternetaddress=152.2.21.1

De manera parecida, para preguntar por registros MX haremos:


>set type=MX
>unc.edu
Server:tao.linux.org.au
Address:203.41.101.121
unc.edupreference=0,mailexchanger=conga.oit.unc.edu
unc.edupreference=10,mailexchanger=imsety.oit.unc.edu
unc.edunameserver=ns.unc.edu
unc.edunameserver=ns2.unc.edu
unc.edunameserver=ncnoc.ncren.net
conga.oit.unc.eduinternetaddress=152.2.22.21
imsety.oit.unc.eduinternetaddress=152.2.21.99
ns.unc.eduinternetaddress=152.2.21.1
ns2.unc.eduinternetaddress=152.2.253.100
ncnoc.ncren.netinternetaddress=192.101.21.1
ncnoc.ncren.netinternetaddress=128.109.193.1

Con el tipo ANY obtendremos todos los registros existentes asociados al nombre
dado.
Una aplicacin prctica de nslookup, para depurar un servidor, es obtener la lista
de servidores raz. Para ello no hay ms que pedir los NS del registro raz (.):
>set type=NS
>.
Server:tao.linux.org.au
Address:203.41.101.121
Nonauthoritativeanswer:
(root)nameserver=A.ROOTSERVERS.NET
(root)nameserver=H.ROOTSERVERS.NET
(root)nameserver=B.ROOTSERVERS.NET
(root)nameserver=C.ROOTSERVERS.NET
(root)nameserver=D.ROOTSERVERS.NET
(root)nameserver=E.ROOTSERVERS.NET
(root)nameserver=I.ROOTSERVERS.NET
(root)nameserver=F.ROOTSERVERS.NET
(root)nameserver=G.ROOTSERVERS.NET
(root)nameserver=J.ROOTSERVERS.NET
(root)nameserver=K.ROOTSERVERS.NET
(root)nameserver=L.ROOTSERVERS.NET
(root)nameserver=M.ROOTSERVERS.NET
Authoritativeanswerscanbefoundfrom:
A.ROOTSERVERS.NETinternetaddress=198.41.0.4
H.ROOTSERVERS.NETinternetaddress=128.63.2.53
B.ROOTSERVERS.NETinternetaddress=128.9.0.107

142

LINUX

Mayo 2004

C.ROOTSERVERS.NETinternetaddress=192.33.4.12
D.ROOTSERVERS.NETinternetaddress=128.8.10.90
E.ROOTSERVERS.NETinternetaddress=192.203.230.10
I.ROOTSERVERS.NETinternetaddress=192.36.148.17
F.ROOTSERVERS.NETinternetaddress=192.5.5.241
G.ROOTSERVERS.NETinternetaddress=192.112.36.4
J.ROOTSERVERS.NETinternetaddress=198.41.0.10
K.ROOTSERVERS.NETinternetaddress=193.0.14.129
L.ROOTSERVERS.NETinternetaddress=198.32.64.12
M.ROOTSERVERS.NETinternetaddress=202.12.27.33

Para ver el conjunto completo de comandos, podemos usar help dentro de


nslookup.
3.5. SLIP: IP por lnea serie
Los servidores y terminales que manejan protocolos tales como IP o SLIP, en los
cuales los datos estn empaquetados, necesitan saber dnde empieza y dnde
termina cada uno de esos paquetes en la cadena de datos. El mecanismo para
marcar y detectar el comienzo y el fin de cada paquete, se denomina delimitacin
(delimitation). El protocolo Ethernet utiliza este mecanismo en entornos de redes
de rea local, y los protocolos SLIP y PPP lo utilizan en comunicaciones del tipo
serie.
El bajo costo de los modems y de las comunicaciones telefnicas, han hecho al
protocolo serial IP inmensamente popular, especialmente proveyendo a los
usuarios un acceso de bajo costo a Internet. El hardware requerido para utilizar
SLIP o PPP es de fcil instalacin y bajo costo. Lo nico que se requiere es un
mdem conectado a un puerto serie con bffer FIFO.
El protocolo SLIP es fcil de implementar y al mismo tiempo es el ms comn de
los dos, pero PPP viene ganando terreno rpidamente. El protocolo PPP agrega
muchas y sofisticadas opciones que contribuyen a su creciente popularidad en el
presente y que lo convertirn en un protocolo ms importante en el futuro.
El ncleo bsico Linux soporta SLIP y PPP de forma muy estable y segura. En
esta seccin y la 3.6, se discutirn ambos protocolos y cmo configurarlos.
3.5.1. Requerimientos Generales
Para utilizar SLIP o PPP, se requieren algunas configuraciones bsicas de red ya
descritas en secciones anteriores. Usted debe configurar la interfaz de bucle
(loopback) y el sistema de traduccin de nombres. Cuando se conecta a Internet,
querr utilizar el servidor DNS. Sus opciones aqu son las mismas que en PPP:
143

LINUX

Mayo 2004

Se puede interrogar a los servidores DNS de su proveedor de Internet, colocando


sus direcciones en el archivo /etc/resolv.conf, o instalar y configurar un servidor de
nombres slo con cach como se describe en Seccin 3.4.
3.5.2. Operacin de SLIP
Los servidores IP que ofrecen enlaces telefnicos va SLIP, por lo general, utilizan
cuentas de usuario especiales. Una vez iniciada exitosamente la sesin, el
servidor comienza a ejecutar un guin (script) para la activacin del manejador
SLIP y las interfaces de red apropiadas. Al mismo tiempo, en su terminal debe
ocurrir exactamente lo mismo.
En algunos sistemas operativos, el gestor SLIP es un programa de usuario. Bajo
Linux, es parte del ncleo del sistema, cosa que lo hace mucho ms rpido. Esta
ventaja, sin embargo, requiere que la lnea sea convertida a modo SLIP de forma
explcita. Esta conversin, es llevada a cabo mediante una disciplina de terminal
(tty) especial llamada SLIPDISC. Mientras que un terminal (tty) trabaja en forma
normal (DSIC0), los datos intercambiados entre los procesos del usuario, se
realizan mediante las llamadas read(2) y write(2) estndar, y el manejador SLIP
es incapaz de leer o escribir en este modo. En SLIPDISC se invierten los roles:
ahora ningn proceso de usuario podr escribir o leer desde un terminal (tty), ya
que son dirigidos desde el puerto serie al gestor de SLIP.
El gestor SLIP entiende por s mismo distintas variantes del protocolo SLIP.
Adems, de las variantes ordinarias, es capaz de interpretar una variante del
protocolo llamada CSLIP, cuya particularidad es la de utilizar el mtodo de
compresin de cabeceras de Van Jacobson(descritas en el RFC-1144) para los
paquetes IP salientes. Este mtodo aumenta el rendimiento de las sesiones
interactivas. Adems, existen versiones de seis bits de cada uno de estos
protocolos.
Una forma simple de convertir una lnea serie al modo SLIP es usando la
herramienta slattach. Suponiendo que su mdem est en /dev/ttyS3 y que ha
podido acceder correctamente al servidor SLIP de forma correcta, deber
ejecutar:
#slattach /dev/ttyS3 &

144

LINUX

Mayo 2004

Esta herramienta cambiar la disciplina de lnea de ttyS3 a SLIPDISC y lo


enlazar a una de las interfaces SLIP. Si este es el primer enlace activo SLIP, ser
enlazado a sl0; el segundo, ser enlazado a sl1 y as, sucesivamente. Los
ncleos

actuales

soportan

hasta

un

mximo

de

256

enlaces

SLIP

simultneamente.
Por omisin slattach usa CSLIP como mtodo de compresin de cabeceras. Con
el parmetro p, usted puede seleccionar cualquier otra disciplina de lnea. Para
utilizar SLIP de forma normal (sin compresin) se debe teclear:
#slattach -p slip /dev/ttyS3 &

Las disciplinas disponibles se muestran en la Tabla 3-3. Una seudo-disciplina


disponible llamada adaptive, (adaptativa) deja al ncleo averiguar que tipo de
encapsulado SLIP se est utilizando.

Tabla 3-3. Disciplinas de lnea SLIP bajo Linux

Observe que debe utilizarse el mismo sistema de encapsulacin que la mquina


remota. Si su conexin SLIP no funciona, lo primero que hay que saber es si en
los dos puntos de conexin, se est utilizando compresin de cabeceras o no. Si
no est seguro, intente configurar el gestor SLIP para que trabaje de forma
adaptativa y que el ncleo se tome el trabajo de averiguarlo por usted.
slattach no slamente configura el protocolo, sino tambin PPP o KISS (otro
protocolo utilizado en redes tipo ham radio). Hacer esto no es comn, ya que
existen mejores herramientas para gestionar estos protocolos.
Teniendo al gestor SLIP funcionando correctamente, se debe configurar la interfaz
de red. Nuevamente, puede utilizar las rdenes ifconfig y route para configurar la
145

LINUX

Mayo 2004

interfaz. Asumiendo que ya estableci una conexin telefnica con un servidor


llamado cowslip desde vlager. En vlager se debe ejecutar:
#ifconfig sl0 vlager-slip pointopoint cowslip
#route add cowslip
#route add default gw cowslip

La primera orden realiza un enlace punto a punto con cowslip, mientras que la
segunda y la tercera orden sirven para aadir la ruta correspondiente a cowslip
como ruta predeterminada y configurar a cowslip como ruteador (gateway).
Como referencia, siempre se usar vlager-slip para referirse a su interfase local
SLIP.
Cuando se quiera terminar el enlace SLIP, debe empezarse por eliminar todas las
rutas que pasan por cowslip usando la orden route con la opcin del, luego
desactivar la interfaz, y enviar al proceso slattach la seal de colgar. Despus se
podr colgar el mdem usando el terminal:
#route del default
#route del cowslip
#ifconfig sl0 down
#kill -HUP 516

Nota: el nmero 516 deber ser reemplazado por el correspondiente identificador


de proceso (como muestran las salidas de las rdenes ps ax) para el proceso
slattach que controla al gestor SLIP que se quiera desconectar.
3.5.3. Trabajando con direcciones de red IP privadas
Como usted recordar la Cervecera Virtual es una red Ethernet basada en
direcciones IP usando nmeros de red sin registrar que se usaban para uso
interno, los paquetes de o desde esa red no estaban encaminados hacia Internet;
si se quiere que vlager llame a travs de cowslip y acte como encaminador para
la red en la Cervecera Virtual, las mquinas pertenecientes a la red de la
cervecera no podrn acceder directamente a Internet ya que los paquetes sern
descartados por el encaminador principal. Para trabajar alrededor de este dilema,
se tendr que configurar a vlager para que acte como plataforma de lanzamiento
para el acceso a Internet. Para el resto del mundo, esta conexin se presenta
146

LINUX

Mayo 2004

como un enlace normal SLIP, accediendo a los servidores con una direccin IP
registrada (probablemente asignada por el proveedor de servicios corriendo
cowslip). Cualquier usuario conectado a vlager puede usar clientes basados en
texto como ftp, telnet, o incluso lynx para usarlos en Internet. Un usuario de la
Cervecera Virtual puede invocar a telnet y teclear a vlager para usar dichos
clientes de forma normal. Para algunas aplicaciones, existen algunas soluciones
para evitar el proceso de registro e identificacin de los usuarios que accedan a
vlager. Para usuarios de Web, por ejemplo, se puede activar un servidor llamado
proxy en vlager, que encaminar todas las peticiones de los usuarios hacia los
servidores respectivos.
Asumiendo que la cervecera ha sido asignada a la direccin IP 192.168.5.74 para
acceso a SLIP. Todo lo que usted debe realizar para la puesta en marcha
discutida anteriormente es teclear la direccin en el archivo /etc/hosts,
nombrndolo como vlager-slip. Este procedimiento no cambiar su enlace SLIP.
3.5.4. Usando dip
Lo visto anteriormente es simple. Sin embargo, se pueden automatizar estas
tareas. Es mucho ms prctico tener solamente una orden que realice los pasos
necesarios para activar la lnea serie, que el mdem llame al proveedor de
Internet, comenzar la sesin, activar la disciplina de lnea SLIP, y por ltimo,
configurar la interfaz de red. Para todo esto esta la orden dip.
dip significa Dialup IP (enlace IP telefnico). Es actualmente utilizado por todo el
mundo.
dip provee un intrprete para un lenguaje de guiones simple que puede manejar
el mdem , convertir la lnea a modo SLIP y configurar las interfaces.
Para poder configurar la interfaz SLIP, dip requiere privilegios de superusuario.
Puede hacerse cambiando al programa dip el bit setuid como root para que todos
los usuarios puedan conectarse a cualquier servidor SLIP sin tener privilegios de
superusuario. Esto es muy peligroso, ya que una configuracin incorrecta del
encaminamiento de dip puede estropear el enrutamiento en su red. Aun peor,
esto dar a los usuarios la posibilidad de conectarse a cualquier servidor SLIP y
lanzar desde all, peligrosos ataques a su red. Si desea que los usuarios puedan
activar conexiones SLIP, escriba pequeos programas empaquetados por cada
147

LINUX

Mayo 2004

perspectiva de conexin a los diferentes servidores SLIP y que esos pequeos


programas invoquen a dip con guiones (scripts) especficos para establecer las
conexiones. Bien escritos, estos programas pueden ser fcilmente habilitados con
el bit setuid de superusuario (root). Una alternativa un poco ms flexible, es darle
a los usuarios, acceso verdadero a dip como superusuario, utilizando alguna
herramienta como por ejemplo sudo.

Un guin de ejemplo
Asumiendo que el servidor al cual nos queremos conectar va SLIP se llama
cowslip, y que se ha escrito un guin para que dip lo interprete llamado
cowslip.dip, el cual har la conexin. Al programa dip, hay que pasarle como
argumento, el nombre del guin:
#dip cowslip.dip
DIP:DialupIPProtocolDriverversion3.3.7(12/13/93)
WrittenbyFredN.vanKempen,MicroWaltCorporation.
connectedtocowslip.moo.comwithaddr192.168.5.74
#

El codigo del guin es mostrado en el Ejemplo 3-20.


Ejemplo 3-20. Un ejemplo de guin para dip
#Ejemplodeguinendipparaconectarsealservidorcowslip
#Configurarlosnombreslocalesyremotosylasdirecciones
get$localvlagerslip
get$remotecowslip
portttyS3#Seleccindelpuertoserie
speed38400#Configurarlavelocidadmxima
modemHAYES#SeleccindelmodelodelMdem
reset#reiniciarelmdemylaterminal
flush#limpiarelbfferderespuestadelmdem
#Prepararseparamarcar.
sendATQ0V1E1X1\r
waitOK2
if$errlvl!=0gotoerror
dial41988
if$errlvl!=0gotoerror
waitCONNECT60
if$errlvl!=0gotoerror
#Bien,seestablecilaconexin
sleep3
send\r\n\r\n
waitogin:10

148

LINUX

Mayo 2004

if$errlvl!=0gotoerror
sendSvlager\n
waitssword:5
if$errlvl!=0gotoerror
sendknockknock\n
waitrunning30
if$errlvl!=0gotoerror
#Secomenzlasesin,ydelextremoremotoseactivSLIP.
printConectadoa$remotecondireccin$rmtip
default#hacerqueesteenlacesealarutapredeterminada
modeSLIP#PasemosamodoSLIP
#encasodeerrorseejecutalosiguiente
error:
printLaonexinSLIPa$remotehafallado.

Una vez conectado a cowslip y activo el SLIP, dip pasar a ejecutarse en


segundo plano. Ahora puede empezar a trabajar con sus los programas
habituales de red a travs del enlace SLIP. Para terminar la conexin,
simplemente invoque a dip con el parmetro k. Esto enva la seal de cortar
(hangup) a dip, junto con el identificador de proceso que dip escribi en el archivo
/etc/dip.pid al comenzar:
#dip k

En el lenguaje de guiones que dip interpreta, las palabras clave precedidas con el
signo de dlar significan nombre de variables. dip tiene un conjunto de variables
que estn listadas a continuacin. $remote y $local, por ejemplo, contienen los
nombres de los computadores remoto y local involucrados en la conexin SLIP.
Las dos primeras declaraciones en el ejemplo, son rdenes get, que es la forma
en que dip declara una variable. Aqu, los nombres de las computadoras local y
remota son vlager y cowslip, respectivamente. las cinco declaraciones siguientes
preparan la terminal de lnea y el mdem . la orden reset enva la cadena de
reinicio al mdem. La siguiente sentencia limpia el bffer de salida del mdem,
para conseguir que el dilogo de registro (login) en las siguientes lneas trabaje
correctamente. Este dialogo es extremadamente simple: simplemente marca
41988, el nmero telefnico de cowslip, y ae regiatra en la cuenta Svlager usando
la contrasea knockknock. La orden wait hace que dip espere una cadena dada
como primer argumento; el nmero dado como segundo argumento es el tiempo
(en segundos) que se debe esperar por esa cadena. La orden if ,en el proceso de
entrada, revisa que no se produzcan errores.
149

LINUX

Mayo 2004

Las rdenes finales, tras un correcto registro, son default, que hace que el enlace
SLIP sea la ruta predeterminada a todos los servidores, y mode, que activa el
modo SLIP en la lnea y configura la interfaz y la tabla de rutas.
Referencia de dip
En esta seccin, se har referencia a las rdenes de dip ms usadas. usted
puede obtener un vistazo de todos los rdenes reconocidos invocando a dip en
modo prueba e introduciendo la orden help. Para conocer ms sobre la sintaxis de
una orden, se debe teclear sin argumentos. Recuerde que esto no funcionar con
rdenes

que

no

aceptan

argumentos.

El

siguiente

ejemplo

ilustra

el

funcionamiento de la orden help:


#dip -t
DIP:DialupIPProtocolDriverversion3.3.7puri(25Dec96)
WrittenbyFredN.vanKempen,MicroWaltCorporation.
Debianversion3.3.7p2(debian).
DIP>help
DIPknowsaboutthefollowingcommands:
beepbootpbreakchatkeyconfig
databitsdecdefaultdialecho
flushgetgotohelpif
incinitmodemodemnetmask
onexitparitypasswordproxyarpprint
psendportquitresetsecuridfixed
securidsendshellskeysleep
speedstopbitstermtimeoutwait
DIP>echo
Usage:echoon|off
DIP>

En los prrafos siguientes, los ejemplos que muestran el cursor DIP> indican
como teclear un orden en modo prueba y cual ser su respuesta. Los ejemplos
mostrados sin el cursor, deben tomarse como trozos de guiones.
Dentro del apndice podemos encontrar las caractersticas de las ordenes dentro
de dip.
Despus de poner la lnea en modo SLIP, dip ejecuta ifconfig para configurar la
interfaz como enlace punto a punto, e invocar a route para cambiar el
enrutamiento hacia el servidor remoto.
3.5.5. Funcionamiento en modo Servidor

150

LINUX

Mayo 2004

Configurar su mquina para que acte como servidor SLIP, es mucho ms fcil;
existen dos formas de configurar al servidor SLIP. Las dos requieren que se cree
una cuenta de acceso por cada cliente SLIP. Asuma, por ejemplo, que le desea
conceder acceso al servicio SLIP a Arthur Dent en dent.beta.com. Debera
crearse una cuenta llamada dent aadiendo la siguiente lnea al archivo passwd:
dent:*:501:60:ArthurDent'sSLIPaccount:/tmp:/usr/sbin/diplogin

Luego, se puede establecer la contrasea de dent utilizando la herramienta


passwd.
La orden dip puede usarse en modo servidor invocando diplogin. Usualmente
diplogin es un enlace a dip. Su fichero de configuracin principal es /etc/diphosts,
donde se especifican las direcciones IP que sern asignadas a los usuarios
cuando se conecten va SLIP. Cuando dent se conecta usando SLIP va, dip
activa el servidor. Para saber si tiene acceso al uso de SLIP, el servidor se fija en
el archivo /etc/diphosts. En este fichero se detallan los derechos de acceso y
algunos parmetros de conexin por cada usuario que accede va SLIP. El
formato general para el archivo /etc/diphosts es el siguiente:
#/etc/diphosts
user:password:rem-addr:loc-addr:netmask:comments:protocol,MTU
#

Cada uno de los campos es descrito en la Tabla 3-4.

151

LINUX

Mayo 2004

Tabla 3-4. Descripcin de campos en /etc/diphosts

Cuando dent entra en su cuenta, diplogin extrae la informacin de l desde el


archivo diphosts. Si el segundo campo contiene algn valor, diplogin le
preguntar la segunda contrasea de seguridad. La cadena introducida por el
usuario, se encripta y se compara con la que existe en el archivo diphosts. Si
stas no coinciden, el intento de registro se rechazao. Si la cadena de contrasea
usa el mtodo s/key, y dip fue compilado para dar soporte a S/Key, el proceso de
autenticacin tendr lugar.
Tras un registro exitoso, diplogin procede a convertir la lnea serie en modo
CSLIP o SLIP y prepara la interfaz y el enrutamiento. Esta conexin permanecer
activa hasta que el usuario decida cortarla, con lo cual diplogin restaurar la
disciplina de lnea y terminar.
3.6. El Protocolo Punto-a-Punto
Como SLIP, PPP es un protocolo usado para mandar datagramas a travs de una
conexin serie. Primero, puede transportar un alto nmero de protocolos y no est
limitado al protocolo IP. Proporciona deteccin de errores en el mismo enlace,
mientras que SLIP acepta y reenva datagramas corruptos mientras que la
152

LINUX

Mayo 2004

corrupcin no se produzca en la cabecera. Igualmente importante, permite a los


extremos comunicantes negociar opciones, como la direccin IP y el tamao
mximo del datagrama, y provee autentificacin del cliente. Esta negociacin
interna, permite una automatizacin fiable del establecimiento de la conexin.
Mientras la autentificacin elimina la necesidad de cuentas de usuario que
requiere SLIP. Para cada una de estas capacidades, PPP tiene un protocolo
especfico.
En esta seccin cubrimos brevemente estos elementos bsicos que forman PPP.
En la parte ms baja de PPP est el protocolo de Control de Conexin de Datos
de Alto-Nivel (HDLC), que define los lmites de las tramas PPP individuales, y
proporciona un control de errores de 16 bits.
El Protocolo de Control de Enlace, es utilizado en la parte ms alta del HDLC para
negociar las opciones concernientes a la conexin de datos, tales como la Unidad
Mxima de Recepcin (MRU), que establece el tamao mximo del datagrama
que cada extremo de comunicacin acepta recibir.
Hay dos protocolos distintos, segn el tipo de autentificacin, los cuales
discutiremos ms adelante en este captulo: el Protocolo de Autentificacin por
Contrasea (PAP) y el Protocolo de Autentificacin por Reto (CHAP).
Cada protocolo de red que es enrutado a travs de la conexin de datos, como el
IP, el Appletalk, etc; se configura dinmicamente usando el correspondiente
Protocolo de Control de Red (NCP). El protocolo de control utilizado para esto es
el Protocolo de Control del IP (IPCP).
Aparte de enviar datagramas IP estndar a travs del enlace, el PPP tambin
permite la compresin Van Jacobson de las cabeceras en los datagramas IP. Es
una tcnica para reducir las cabeceras de los paquetes TCP a un espacio de tan
slo tres bytes. Tambin se utiliza en el CSLIP, y es conocida coloquialmente
como compresin de cabeceras VJ. La utilizacin de la compresin puede
negociarse tambin al comienzo de la conexin gracias al IPCP.
3.6.1. PPP en Linux
En Linux, la funcionalidad del PPP est dividida en dos partes: un componente del
ncleo que controla los protocolos de bajo nivel (HDLC, IPCP, IPXCP, etc.) y el
demonio pppd en espacio de usuario que controla varios protocolos de alto nivel,
153

LINUX

Mayo 2004

como PAP Y CHAP. La versin actual de PPP para Linux contiene el demonio
PPP pppd y un programa llamado chat utilizado para llamar al sistema remoto.
Al igual que SLIP, PPP est implementado a travs de una disciplina especial para
la utilizacin de las lneas. Para utilizar una lnea serie como enlace PPP, en
primer lugar tendr que establecer la conexin con su mdem, como es usual; y
posteriormente pasar la lnea al modo PPP. En este modo, todos los datos que
nos llegan son pasados al controlador PPP, que comprueba la validez de las
tramas HDLC que llegan (cada trama HDLC trae un cdigo de control de errores
de 16 bit), las descompone y las despacha.
El controlador del ncleo es ayudado por pppd, el demonio del PPP, que realiza
toda la fase de inicializacin y autentificacin necesaria antes de que el verdadero
trfico de red pueda ser enviado a travs del enlace. El comportamiento del pppd
puede ser ajustado utilizando varias opciones.
Probablemente en este trabajo no encuentre toda la informacin sobre PPP, pero
nos enfocaremos en las caractersticas mas importantes de este protocolo; para
encontrar mayor informacin se pueden consultar manuales o el howto de PPP.
3.6.2. Ejecutando pppd
Cuando quiere conectarse a Internet a travs de un enlace PPP, tiene que
configurar las capacidades bsicas de red como el dispositivo de bucle local
(loopback) y el sistema de resolucin de direcciones. Usted puede configurar
simplemente el servidor de nombres de su proveedor de servicios de Internet en
el fichero /etc/resolv.conf, pero esto supondr que cada consulta DNS ser
enviada a travs de su enlace serie. Esta situacin no es ptima; mientras ms
cerca se encuentre de su servidor de nombres, ms rpida ser la bsqueda.
Como ejemplo introductorio de como establecer una conexin PPP con pppd,
suponga que est de nuevo en vlager. Ya ha llamado al servidor PPP, c3po, y
entrado en la cuenta del usuario ppp. c3po ya ha lanzado su controlador PPP.
Despus de salir del programa de comunicaciones que utiliz para llamar, ejecute
la siguiente orden, sustituyendo el nombre del dispositivo serie que usted usa por
el ttyS3 mostrado aqu:
#pppd /dev/ttyS3 38400 crtscts defaultroute

154

LINUX

Mayo 2004

Esto cambiar la lnea serie ttyS3 al modo PPP y establecer un enlace IP con
c3po. La velocidad de transferencia utilizada en el puerto de serie ser de
38400bps. La opcin crtscts activa el control de flujo por hardware en el puerto,
que es una obligacin para velocidades superiores a los 9600 bps. Lo primero que
hace pppd tras ejecutarse es negociar varias caractersticas para el enlace con el
extremo remoto utilizando LCP.
Hasta ahora, tambin hemos asumido que c3po no necesita ninguna
autentificacin de nosotros, as que la fase de configuracin habr sido
completada con xito.
pppd negociar entonces los parmetros IP con su compaero usando IPCP, el
protocolo de control IP. Al no especificar direccin IP alguna, el pppd intentar
usar la direccin que se obtiene al resolver el nombre del ordenador local.
Decididas las direcciones, cada pppd comunicar su direccin al otro extremo.
Normalmente no habr ningn problema con esta configuracin predeterminada.
Incluso si su mquina esta en una Ethernet, puede utilizar la misma direccin IP
tanto para la Ethernet como para el interfaz PPP. No obstante, pppd le permite
utilizar una direccin diferente, o incluso pedir a su compaero que utilice alguna
direccin especfica. Tras pasar por la fase de configuracin IPCP, pppd
configurar la red de su ordenador para utilizar el enlace PPP. En primer lugar,
configurar el interfaz de red PPP como un enlace punto-a-punto, utilizando ppp0
para el primer enlace PPP que est activo, ppp1 para el segundo, y as
sucesivamente. A continuacin preparar una entrada de la tabla de
encaminamiento que apunte al ordenador del otro extremo del enlace.
3.6.3. Usando los Ficheros de Opciones
Antes de que el pppd procese los argumentos de su lnea de rdenes, echa un
vistazo a varios archivos para establecer sus opciones por omisin. Estos
archivos pueden contener cualquier argumento de lnea de rdenes vlido,
distribuidos a travs de un cierto nmero de lneas. Los comentarios se escriben
tras el smbolo de almohadillado (#).
El primer archivo de opciones es el /etc/ppp/options, que es ledo cada vez que el
pppd arranca.
155

LINUX

Mayo 2004

Utilizarlo para establecer algunas opciones globales por omisin es una buena
idea, pues le permite evitar que sus usuarios hagan ciertas cosas que podran
comprometer la seguridad del sistema. Por ejemplo, para hacer que el pppd
necesite algn tipo de autentificacin del otro sistema, aadira la opcin auth a
este archivo.
El otro archivo de opciones, que es ledo despus del /etc/ppp/options, es el
.ppprc situado en el directorio de inicio del usuario. Permite que cada usuario
especifique su propio conjunto de opciones predeterminadas.
Un archivo /etc/ppp/options de ejemplo puede parecerse a ste:

#Opcionesglobalesparaelpppddevlager.vbrew.com
lock#usarelbloqueodedispositivotipoUUCP
auth#obligaraautentificacin
usehostname#usarelnombredelordenadorlocalparaelCHAP
domainvbrew.com#nombredenuestrodominio

La expresin lock hace que pppd utilice el mtodo de bloqueo de dispositivos


estndar de UUCP. De esta manera, cada proceso que accede a un dispositivo
serie, por ejemplo el /dev/ttyS3, crea un archivo de bloqueo llamado LCK..ttyS3 en
el directorio de spool del UUCP para sealizar que ese dispositivo esta siendo
usado.
La tres opciones siguientes se refieren a la autentificacin y, por contrapartida, a
la seguridad del sistema. Las opciones de autentificacin estn mejor colocadas
en el fichero global de configuracin porque tienen privilegios y no pueden ser
sobreescritas por los archivos ~/.ppprcde los usuarios.
3.6.4. Opciones de Configuracin IP
El IPCP se utiliza para negociar varios parmetros IP a la hora de configurar la
conexin. Normalmente, cada extremo de comunicacin puede enviar un Paquete
de Peticin de Configuracin IPCP, indicando qu valores quiere cambiar de los
que vienen predeterminados, y a qu valor. Tras la recepcin, el extremo remoto
inspecciona cada opcin sucesivamente, y responde que la acepta, o la rechaza.
pppd le da gran control sobre qu opciones intentar negociar el IPCP. Puede
156

LINUX

Mayo 2004

ajustar esto a travs de varias opciones en la lnea de rdenes de las que


hablamos a continuacin.
Eligiendo Direcciones IP
Todos los interfaces IP requieren de direcciones IP asignadas a ellos; Un
dispositivo PPP siempre tiene una direccin IP. El conjunto de protocolos PPP
provee un mecanismo que permite la asignacin automtica de direcciones IP a
interfaces PPP. Es posible para el programa PPP en un extremo del enlace punto
a punto asignar una direccin IP al extremo opuesto para que la use, o que cada
uno use la suya. Algunos servidores PPP que sirven a muchos clientes asignan
direcciones dinmicamente: las direcciones son asignadas a los sistemas slo
cuando llaman, y son reclamadas de nuevo una vez que se desconecta. Esto
permite que el nmero de direcciones IP requeridas est limitado al nmero de
lneas conectadas. Mientras la limitacin es conveniente para quienes gestionan
los servidoresde marcado PPP, es a menudo menos conveniente para los
usuarios que estn intentando conectar. Para permitir que la gente se conecte a
su nodo, ellos deben saber su direccin IP o el nombre del nodo asociado a ella.
Miraremos hacia una situacin ms preferible, la cual implica que sea capaz de
utilizar la misma direccin IP cada vez que se establece su conexin de red.
En el ejemplo anterior, hacamos que pppd llamase a c3po y estableciera una
conexin IP. No nos preocupbamos de elegir una direccin IP particular en
ninguno de los extremos de la conexin. En vez de ello, tombamos la direccin
de vlager como la direccin IP local, y dejbamos a c3po darse su propia
direccin. El pppd soporta diferentes alternativas a esta aproximacin.
Para pedir direcciones particulares, normalmente d a pppd la siguiente opcin:
local_addr:remote_addr

local_addr y remote_addr pueden ser especificados tanto en notacin de


cuaternas numricas o como nombres de nodo. Esta opcin hace a pppd intentar
usar la primera direccin como su propia direccin IP, y la segunda como la de su
compaero. Si el compaero rechaza alguna de ellas durante la negociacin
IPCP, no se establecer ninguna conexin IP.
157

LINUX

Mayo 2004

Si usted est llamando a un servidor y espera que ste le asigne una direccin IP,
debe asegurarse de que pppd no intenta negociar una por s mismo. Para hacer
esto, use la opcin noipdefault y deje la opcin local_addr en blanco. La opcin
noipdefault evitar que pppd intente usar la direccin IP asociada al nombre de
ordenador como la direccin local.
Si slo quiere establecer la direccin local, y aceptar cualquier direccin que
utilice el compaero, simplemente deseche la parte remote_addr. Por ejemplo,
para hacer a vlager usar la direccin IP 130.83.4.27 en vez de la suya propia, le
escribira 130.83.4.27: en la lnea de orden. De forma similar, para establecer la
direccin remota nicamente, dejara el campo de la dir_local en blanco. Por
omisin, pppd utilizar entonces la direccin asociada al nombre de su
ordenador.
Enrutamiento a travs de un enlace PPP
Tras configurar el interfaz de red, pppd preparar un enrutamiento que solamente
le sirve para comunicarse con el otro extremo. Si el ordenador remoto est en una
red de rea local, seguramente usted desear conectar tambin con los
ordenadores que estn "detrs" de l; para eso, se ha de configurar un
enrutamiento de red adecuado.
Ya hemos visto antes que se puede pedir a pppd que configure el enrutamiento
predeterminado utilizando la opcin defaultroute. Esta opcin es muy til si el
servidor PPP al que llama va a actuar como su ruteador a Internet.
El caso contrario, cuando su sistema acta como una ruteador para un slo
ordenador, es tambin relativamente fcil de llevar a cabo. Por ejemplo, imagine a
algn empleado cuyo ordenador de casa se llama oneshot. Cuando est
conectando a vlager a travs de PPP, l utiliza una direccin de la subred de la
Cervecera. Podremos dar a pppd del ordenador vlager la opcin proxyarp, que
instalar una entrada proxy-ARP para el ordenador oneshot. Esto har que
oneshot sea automticamente accesible desde todos los ordenadores de la
Cervecera y la Vinatera.
De cualquier manera, las cosas no son siempre tan fciles como esto, por ejemplo
cuando intentamos unir dos redes de rea local. Esto requiere normalmente el
aadir una ruta de red especifica, porque estas redes tendrn ya sus propios
158

LINUX

Mayo 2004

enrutamientos por defecto. Por otra parte, el tener los dos extremos de
comunicacin utilizando la conexin PPP como enrutamiento por defecto
generara un ciclo sin fin, donde los paquetes con destinos desconocidos
rebotaran entre los dos ordenadores hasta que su tiempo de vida (TTL) expirase.
Pongamos un ejemplo: suponga que la Cervecera Virtual abre una sucursal en
alguna otra ciudad. La sucursal utiliza su propia red Ethernet utilizando el nmero
de red IP 172.16.3.0, que es la subred 3 de la red de clase B de la Cervecera.
Quieren conectarse a la red Ethernet principal de la Cervecera a travs de PPP
para actualizar las bases de datos de clientes, etc. De nuevo, vlager actuar como
pasarela; la otra mquina se llama vbourbon y tiene una direccin IP de
172.16.3.1.
Cuando vbourbon conecta a vlager, har que el punto de enrutamiento
predeterminado sea vlager, como es habitual. En vlager, de todas formas,
tendremos que instalar un enrutamiento de red para la subred 3 que vaya a travs
de vbourbon. Podriamos hacer esto manualmente usando la orden route despus
de que el enlace PPP sea establecido, pero esta no es una solucin muy prctica.
Afortunadamente, podemos configurar la ruta automticamente utilizando una
caracterstica de pppd de la que no hemos hablado hasta ahora la orden ip-up.
Es un script de shell situado en /etc/ppp que se ejecuta despus de que el interfaz
PPP ha sido configurado. Cuando est presente, se le llama con los siguientes
parmetros:
ipupinterface dispositivo velocidad dir_local dir_remota

La tabla siguiente resume el significado de cada uno de los argumentos (en la


primera columna, se muestra el nmero usado por el script de shell para referirse
a cada argumento):
Argumento Nombre

Propsito

interfaz

Interfaz de red usado, e.g., ppp0

dispositivo

Dispositivo es la ruta al dispositivo serie


utilizado,(/dev/tty si se utiliza la salida y entrada
estndar)
159

LINUX

Mayo 2004

velocidad

La velocidad del dispositivo en bits por segundo.

dir_local

La direccin IP del extremo local del enlace en


notacin de cuarteto.

dir_remota

La direccin IP del extremo remoto de la conexin

En nuestro caso, el script ip-up puede contener el siguiente fragmento de cdigo:


#!/bin/sh
case$5in
172.16.3.1)#esteesvbourbon
routeaddnet172.16.3.0gw172.16.3.1;;
...
esac
exit0

De una forma anloga,/etc/ppp/ip-down se utiliza para deshacer todas las


acciones de ip-up despus de que la conexin PPP ha sido cortada. Asi en
nuestro script /etc/ppp/ip-down tendremos una orden route que elimine la ruta
que creamos con el script /etc/ppp/ip-up.
A pesar de todo, la tabla de enrutamiento an no est completa. Hemos
configurado las entradas de la tabla de enrutamiento para los dos ordenadores
con PPP, pero hasta ahora, todos los dems ordenadores de las dos redes no
saben nada sobre la conexin PPP. Esto no es un gran problema si todos los
ordenadores de la sucursal tienen su enrutamiento predeterminado enrutado a
vbourbon, y todos los ordenadores de la Cervecera enrutan hacia vlager por
omisin. Si ste no fuera el caso, su nica posibilidad normalmente ser usar un
demonio de enrutamiento como gated. Tras crear el enrutamiento de la red en
vlager, el demonio de enrutamiento pasar el nuevo enrutamiento a todos los
ordenadores de las redes dependientes de sta.
3.6.5. Opciones de Control de Enlace
Anteriormente, ya hemos tratado sobre LCP, el protocolo de control de enlace
(Link Control Protocol), que se utiliza para negociar las caractersticas de la
conexin y comprobarla.
160

LINUX

Mayo 2004

Las dos opciones ms importantes que pueden ser negociadas por el LCP son la
unidad mxima de recepcin (MRU) y el mapa de caracteres de control
asncronos.
El mapa de caracteres de control asncronos, tambin conocido como el mapa
asncrono, se usa en enlaces asncronos, como las lneas telefnicas, para
identificar los caracteres de control que deben de ser reemplazados por una
secuencia especfica de dos caracteres, para evitar que sean interpretados por el
equipamiento utilizado para establecer el enlace. Por ejemplo, puede que quiera
evitar los caracteres XON y XOFF utilizados con el control de flujo hardware
activado, pues algn mdem mal configurado puede parar hasta que reciba un
XOFF. Otro candidato puede ser Ctrl-] (el carcter de escape del telnet). PPP le
permite obviar/rehuir de cualquiera de los caracteres con cdigos ASCII
comprendidos entre 0 y 31 especificndolos en el mapa asncrono.
El mapa asncrono (async map) es un mapa de bits de 32 bits de ancho, y cuyo
bit menos significativo corresponde al carcter ASCII NUL, y cuyo bit mas
significativo corresponde al ASCII 31. Estos 32 caracteres ASCII son los
caracteres de control. Si un bit se pone a 1, indica que el carcter correspondiente
debe de ser "escapado" antes de ser enviado a travs de la conexin.
Para decir al otro ordenador que no tiene que rehuir de todos los caracteres de
control sino slo de algunos, puede establecer un nuevo mapa asncrono al pppd
utilizando la opcin asyncmap. Por ejemplo, si slo ^S y ^Q (los cdigos ASCII 17
y 19, normalmente utilizados para XON y XOFF) deben de ser "escapados", utilice
la siguiente opcin:
asyncmap0x000A0000

En la mayoria de las circunstancias, un mapa asncrono de 0x0 funcionar


correctamente. No se producen caracteres de escape.
La unidad mxima de recepcin, o MRU, sealiza al otro extremo el tamao
mximo de las tramas DIC que queremos recibir. Aunque esto puede que le
recuerde al valor de la MTU (unidad mxima de transferencia), tienen poco en
comn. El MTU es un parmetro del dispositivo de red del ncleo, y describe el
tamao mximo de la trama que el interfaz es capaz de soportar. El MRU es ms
161

LINUX

Mayo 2004

bien un consejo al ordenador remoto para que no genere ninguna trama ms


grande que la MRU; no obstante, el interfaz ha de ser capaz de recibir tramas de
hasta 1500 bytes.
Por lo tanto, elegir un MRU no es tanto una cuestin de que es capaz de
transmitir la conexin, sino de cmo conseguir el mejor rendimiento. Si va a usar
la conexin para aplicaciones interactivas, el poner en el MRU valores tan bajos
como 296 es una buena idea, de forma que un paquete ocasional mayor
(digamos, de una sesin de FTP) no haga a su cursor saltar.. Para decir al pppd
que pida un MRU de 296, pondra la opcin mru 296. Las MRUs pequeas, de
todas maneras, slo tienen sentido si no tiene la compresin de cabecera VJ
desactivada (esta activada por omisin), de otra manera desaprovechar una
gran cantidad de su ancho de banda slo transportando la cavecera IP de cada
datagrama.
El pppd tambin entiende un par de opciones LCP que configuran el
comportamiento general del proceso de negociacin, como es el mximo nmero
de peticiones de configuracin que pueden ser intercambiadas antes de que se
corte la conexin. A menos que sepa exactamente lo que esta haciendo, deber
dejar este valor fijo. Finalmente, hay dos opciones que se aplican a los mensajes
de eco del LCP. El PPP define dos mensajes,Peticin de Eco y Respuesta de Eco.
El pppd usa esta caracterstica para comprobar si la conexin esta an operativa.
Puede habilitarla utilizando la opcin lcp-echo-interval junto con el tiempo en
segundos. Si no se reciben tramas del ordenador remoto en este intervalo, el
pppd genera una Peticin de Eco, y espera a que el compaero devuelva una
Respuesta de Eco. Si el compaero no produce una respuesta, la conexin es
cortada despus de que se hayan enviado un cierto nmero de peticiones. Este
nmero

puede

ser

establecido

utilizando

la

opcin

lcp-echo-failure.

predeterminado, esta caracterstica tambin esta desactivada.


3.6.6. Consideraciones de Seguridad General
Un demonio de PPP mal configurado puede ser un peligroso agujero en la
seguridad. Es equivalente a dejar a cualquiera enganchar su mquina a su red
Ethernet (y eso es muy malo). En esta seccin, discutiremos algunas medidas
que deberan hacer su configuracin de PPP segura.
162

LINUX

Mayo 2004

Para protegerse contra cualquier ataque que pueda lanzar algn usuario
manipulando estas opciones, se sugiere que establezca un par de valores
predeterminado en el archivo global /etc/ppp/options. Algunos de ellos, como los
de las opciones de autentificacin, no pueden ser despus modificados por el
usuario,

as

que

proporcionan

una

razonable

proteccin

contra

las

manipulaciones. Una opcin importante que proteger es la opcin connect. Si


pretende permitir a usuarios no root invocar pppd para conectar a Internet,
debera siempre aadir las opciones connect y noauth al fichero de opciones
globales /etc/ppp/options. Si no hace esto, los usuarios sern capaces de ejecutar
ordenes arbitrarias con privilegios de root especificndolas como argumento del
pppd en la orden de connect o en sus archivos de opciones personales.
Otra buena idea es restringir qu usuarios pueden ejecutar pppd creando un
grupo en /etc/group e introducir slo aquellos usuarios que usted desea que
tengan la habilidad de ejecutar el demonio PPP. Despus debera cambiar la
propiedad de grupo del demonio pppd a ese grupo y quitar los privilegios de
ejecucin globales. Para hacer esto, asumiendo que ha llamado a su grupo
dialout, podria usar algo como esto:
#chown root /usr/sbin/pppd
#chgrp dialout /usr/sbin/pppd
#chmod 4750 /usr/sbin/pppd

Por supuesto, tambin tiene que protegerse de los sistemas con los que habla
PPP. Para evitar que otros ordenadores puedan hacerse pasar por quien no son,
debe utilizar siempre algn tipo de autentificacin con el otro extremo de la
comunicacin. Adems, no debera permitir a ordenadores desconocidos usar
cualquier direccin IP que elijan, sino restringirlas a unas pocas. La siguiente
seccin tratar sobre estos asuntos.
3.6.7. Autentificacin con PPP
Con el PPP, cada sistema puede obligar al otro ordenador a identificarse usando
uno de los dos protocolos de autentificacin disponibles. Estos son el Protocolo
de Autentificacin por Contrasea (PAP), y el Protocolo de Autentificacin por
Reto (CHAP). Cuando se establece una conexin, cada extremo puede pedir al
163

LINUX

Mayo 2004

otro que se autentifique, independientemente de que sea el llamante o el llamado.


Ms adelante, se utilizara cliente y servidor cuando se quiera distinguir entre el
sistema autentificado y el autentificador. Un demonio PPP puede pedir a la otra
mquina autentificacin enviando otra peticin ms de configuracin de LCP
indicando el protocolo de autentificacin deseado.
El fichero de claves CHAP
Cuando tiene que autentificarse con algn servidor utilizando CHAP, pppd busca
en el archivo chap-secrets una entrada cuyo campo de cliente sea igual al nombre
del ordenador local, y cuyo campo de servidor sea igual al nombre del ordenador
remoto enviado en el reto del CHAP. Cuando solicita a la otra mquina que se
autentifique, los roles son simplemente al revs: el pppd entonces buscar una
entrada que tenga el campo de cliente igual al nombre del ordenador remoto
(enviado en la respuesta del CHAP del cliente), y el campo de servidor igual al
nombre del ordenador local. El siguiente es un archivo de ejemplo de chapsecrets para vlager:
#CHAPsecretsforvlager.vbrew.com
#
#clientserversecretaddrs
#
vlager.vbrew.comc3po.lucas.com"UseTheSourceLuke"vlager.vbrew.com
c3po.lucas.comvlager.vbrew.com"arttoo!arttoo!"c3po.lucas.com
*vlager.vbrew.com"TuXdrinksVicBitter"pub.vbrew.com

Cuando se intenta establecer una conexin PPP con c3po, c3po pide a vlager que
se autentifique usando el CHAP mediante el envo de un reto de CHAP. El
demonio pppd entonces examina chap-secrets buscando una entrada cuyo
campo de cliente sea igual a vlager.vbrew.com y el campo de servidor sea
c3po.lucas.com, y encuentra la primera lnea mostrada en el ejemplo. Entonces
produce la respuesta de CHAP a partir de la cadena del reto y la clave (Use The
Source Luke), y la enva de vuelta a c3po. Al mismo tiempo, pppd produce un reto
del CHAP para c3po, conteniendo una nica cadena de reto y su nombre de
ordenador completo vlager.vbrew.com. c3po construye una respuesta de CHAP
de la manera que acabamos de decir, y se la devuelve a vlager. pppd extrae
164

LINUX

Mayo 2004

ahora el nombre del cliente (c3po.vbrew.com) de la respuesta, y busca en el


archivo chap-secrets una lnea que tenga c3po como cliente y vlager como
servidor. La segunda lnea se corresponde con esto, as que el pppd combina el
reto del CHAP y la clave arttoo! arttoo!, las encripta, y compara el resultado con la
respuesta de CHAP de c3po.
El cuarto campo opcional lista las direcciones IP que son aceptables por los
clientes nombrados en el primer campo. Las direcciones pueden ser dadas en
notacin cuaternaria o como nombres de ordenador que son resueltos
posteriormente. Por ejemplo, si c3po solicita usar una direccin IP que no esta
en esta lista durante la negociacin IPCP, la peticin ser rechazada, e IPCP se
desconectar. En el archivo de ejemplo anterior, c3po est limitado a poder usar
slo su propia direccin. Si el campo de direccin est vaco, se permitir
cualquier direccin; un valor de - evita el uso de una cierta direccin IP con un
cliente. La tercera lnea del fichero chap-secrets de prueba, permite a cualquier
ordenador establecer un enlace PPP con vlager, pues si aparece la expresin * en
los campos de cliente o servidor, ser valido cualquier nombre. El nico requisito
es que sepa la clave, y utiliza la direccin de pub.vbrew.com. Pueden aparecer
perfectamente entradas con comodines en los nombres en cualquier lugar del
archivo de claves, pues el pppd siempre utilizar la entrada ms especfica que
pueda ser aplicada a un par cliente/servidor.
Hay algunas cosas que decir sobre la manera en que pppd encuentra los
nombres de ordenadores que busca en el fichero de claves. Como se explic
anteriormente, el nombre del ordenador remoto es siempre proporcionado por el
otro ordenador en el paquete de reto o respuesta del CHAP. El nombre del
ordenador local ser obtenido por omisin llamando a la funcin gethostname(2).
Si ha configurado el nombre del sistema como el nombre del ordenador sin
calificar, entonces tendr que dar al pppd el nombre del dominio a aadir usando
la opcin domain:
#pppd domain vbrew.com

Esto aadir el nombre del dominio de la Cervecera a vlager para todas las
actividades relacionadas con la autentificacin. Otras opciones que modifican la
165

LINUX

Mayo 2004

idea que tiene el pppd del nombre del ordenador local son usehostname y name.
Cuando da la direccin IP local en la lnea de comando usando local:remote y
local es un nombre en vez de un cuarteto numrico, el pppd utilizar ste como el
nombre local.
El archivo de claves PAP
El archivo de claves PAP es muy similar al utilizado por CHAP. Los dos primeros
campos siempre contienen un nombre de usuario y un nombre de servidor; el
tercero alberga la clave PAP. Cuando el sistema remoto enva una peticin de
autentificacin, pppd usa la entrada en la que el campo de servidor es igual al
nombre del ordenador local, y el campo de usuario igual al nombre de usuario
enviado en la peticin. Cuando se autentifica a s mismo al otro ordenador, pppd
toma la clave a enviar de la lnea con el nombre de usuario igual al nombre del
usuario local, y con el campo de servidor igual al nombre del ordenador remoto.
Un archivo de claves PAP sencillo puede parecerse a ste:
#/etc/ppp/papsecrets
#
#userserversecretaddrs
vlagerpapc3pocresspahlvlager.vbrew.com
c3povlagerDonaldGNUthc3po.lucas.com

La primera lnea se usa para autentificarnos a nosotros mismos cuando hablemos


con c3po. La segunda lnea describe como un usuario llamado c3po tiene que
autentificarse con nosotros.
El nombre vlager-pap de la primera columna es el nombre de usuario que
nosotros mandamos a c3po. Por omisin,pppd tomar el nombre del ordenador
local como el nombre de usuario, pero tambin se puede especificar un nombre
diferente usando la opcin user, seguida del nombre deseado.
Para escoger una de las entradas del fichero pap-secrets para la autentificacin
con el compaero, pppd tiene que saber el nombre del ordenador remoto. Como
no tiene manera de averiguarlo, tiene que especificarlo en la lnea de rdenes
usando la palabra remotename, seguida por el nombre del ordenador remoto. Por
ejemplo, para usar la entrada comentada anteriormente para la autentificacin con
c3po, tenemos que aadir la siguiente opcin a la lnea de rdenes del pppd:
166

LINUX

Mayo 2004

#pppd ... remotename c3po user vlager-pap

En el cuarto campo (y todos los siguientes), puede especificar qu direcciones IP


estn permitidas para ese ordenador particular, de la misma forma que en el
archivo de claves CHAP. El otro ordenador solo podr pedir direcciones de esa
lista. En el archivo de ejemplo, la entrada que c3po usar cuando llame a la linea
donde c3po es el cliente, le permitir usar su IP autntica y no otra.
3.6.8. Depurando su configuracin de PPP
Por omisin, pppd envia cualquier mensaje de advertencia o error al demonio
syslog. Tiene que aadir una entrada a syslog.conf que redirija estos mensajes a
un archivo o incluso a la consola; de lo contrario, syslog simplemente los
descarta. La entrada siguiente envia todos los mensajes a /var/log/ppp-log/:
daemon.*/var/log/ppplog

Si su configuracin de PPP no funciona bien, debera mirar en este archivo de log.


Si los mensajes no ayudan, tambin puede activar informacin de depuracin
extra usando la opcin debug. Esta salida fuerza al pppd a enviar a los archivos
de log los contenidos de todos los paquetes de control enviados o recibidos a
syslog.
Todos los mensajes van entonces al demonio Finalmente, la manera ms drstica
de localizar un problema es activar la depuracin a nivel de ncleo invocando al
pppd con la opcin kdebug. Es seguida de un argumento numrico que es la
suma de los valores siguientes: 1 para los mensajes de depuracin genricos, 2
para mostrar los contenidos de las tramas HDLC entrantes, y 4 para hacer que el
controlador muestre las tramas HDLC salientes. Para capturar mensajes de
depuracin del ncleo, puede ejecutar el demonio syslogd que lee el archivo
/proc/kmsg, o bien el demonio klogd. Cualquiera de ellos dirige los mensajes de
depuracin del ncleo al syslog del ncleo.
3.6.9. Configuraciones avanzadas de PPP
Mientras que configurar PPP para conectar a una red como Internet es la ms
comn de sus aplicaciones, hay algunos que necesitan requerimientos ms
avanzados. En esta seccin hablaremos sobre algunas de las configuraciones
ms avanzadas que son posibles con PPP bajo Linux.
167

LINUX

Mayo 2004

Servidor PPP
Hacer funcionar el pppd como servidor es solo cuestin de configurar un
dispositivo terminal serie para que invoque al pppd con las opciones apropiadas
cuando una llamada entrante es recibida. Una manera de hacer esto es crear una
cuenta especial, digamos ppp, y asociarle un script o programa como shell de
entrada que llame al pppd con esas opciones. De forma alternativa, si quiere
soportar autentificacion PAP o CHAP, puede usar el programa mgetty para
soportar su mdem y explotar su caracterstica /autoPPP/.
Para configurar un servidor usando el mtodo de registro (login), aada una lnea
similar a la siguiente a su archivo /etc/passwd:
ppp:x:500:200:PublicPPPAccount:/tmp:/etc/ppp/ppplogin

Si su sistema soporta shadow passwords, tambien necesita aadir una entrada al


fichero /etc/shadow:
ppp:!:10913:0:99999:7:::

Por supuesto, el UID y GID que utilice dependen de que usuario desea que sea
dueo de la conexin, y de cmo lo haya creado. Adems tiene que establecer la
contrasea para la cuenta mencionada usando la orden passwd.
El script ppplogin podra tener este aspecto:
#!/bin/sh
#ppploginscripttofireuppppdonlogin
mesgn
sttyecho
execpppddetachsilentmodemcrtscts

La orden mesg deshabilita la opcin que permite que otros usuarios puedan
escribir en el terminal (tty) usado utilizando, por ejemplo, la orden write. La orden
stty desactiva el eco de caracteres. Esto es necesario, pues de otra forma todo lo
168

LINUX

Mayo 2004

que el otro ordenador enve le ser devuelto a modo de eco. La opcin del pppd
ms importante de las incluidas en el script es detach, porque evita que el pppd
se separe de la terminal controlada. Si no especificsemos esta opcin, se ira a
segundo plano, haciendo que el script del shell terminase. Esto provocara que la
lnea serie colgase y se perdiera la conexin. La opcin silent hace que el pppd
espere hasta recibir un paquete del sistema llamante antes de comenzar a enviar.
Esto evita la aparicin de timeouts al transmitir cuando el sistema que nos llama
es lento en lanzar su cliente PPP. La opcin MODEM hace al pppd vigilar la lnea
DTR para ver si el otro sistema ha colgado. Siempre deberia activar esta opcin
cuando use pppd con un modem. La opcin crtscts activa el control de flujo por
hardware.
Adems de estas opciones, se puede forzar alguna clase de autentificacin, por
ejemplo especificando auth en la lnea de rdenes de pppd, o en el archivo de
opciones globales.
Si desea usar mgetty, todo lo que tiene que hacer es configurar mgetty para que
soporte el dispositivo serie al que su mdem est conectado, configurar pppd
bien para autentificacin PAP o CHAP con las opciones apropiadas en sus
archivos options, y finalmente, aadir una seccin similar a la siguiente a su
archivo /etc/mgetty/login.config:
#Configuramgettyparaautomaticamentedetectarllamandasentranteseinvocar
#aldemoniopppdparaquesehagacargodelaconexin.
#
/AutoPPP/ppp/usr/sbin/pppdauthchap+paplogin

El primer campo es una parte especial mgica usada para detectar que la llamada
entrante es una de tipo PPP.
No debe cambiar el aspecto de esta cadena; es sensitivo a minusculas y
mayusculas. La tercera columna en el nombre de usuario que aparece en en el
listado de who cuando alquien a entrado en el sistema. El resto de la lnea es el
comando a invocar. En nuestro ejemplo, nos hemos asegurado de que la
autentificacin por PAP es requerida, deshabilitado CHAP, y especificado que el
archivo del sistema passwd debe ser usado para autentificar usuarios. Esto es
probablemente parecido a lo que usted querr. Recuerde, puede especificar las
opciones en el archivo options o en la linea de comandos si lo prefiere.
169

LINUX

Mayo 2004

Esto es una pequea lista de comprobacin de los pasos que debe realizar y la
secuencia que debe seguir para tener funcionando en su mquina un servidor
PPP. Asegrese de que cada paso funciona correctamente antes de pasar al
siguiente:
1. Configure el mdem para que funcione en modo de auto-respuesta. En los
mdems compatibles Hayes, esto se realiza mediante la orden ATS0=3. Si va a
utilizar el demonio mgetty, esto no ser necesario.
2. Configure el dispositivo serie con una orden tipo getty para que responda a las
llamadas entrantes. Una variante comnmente usada de getty es mgetty.
3. Considere la autentificacin. Como se autentificarn con usted los clientes,
usando PAP, CHAP, o el registro del sistema?
4. Configure pppd como servidor tal como se describe en esta seccin.
5. Considere el encaminamiento. Necesitar proporcionar una ruta de red a los
clientes? El encaminamiento puede realizarse usando el script ip-up.
Llamada bajo demanda
Cuando hay trfico IP para ser transportado a travs del enlace, la llamada en
demanda provoca la llamada de su modem y el establecimiento de una conexin
con un host remoto. La llamada en demanda resulta til cuando no puede dejar su
lnea telefnica permanentemente conectada a su proveedor de Internet. Por
ejemplo, puede que tenga que pagar llamadas locales por tiempo de uso, as le
resultar ms barato tener la conexin establecida slo cuando lo necesite y
desconectada cuando no est usando Internet.
Para configurar pppd para llamada bajo demanda, todo lo que tiene que hacer es
aadir opciones a su archivo /etc/options o a la lnea de rdenes de pppd. La
tabla siguiente resume las opciones relacionadas a la llamada en demanda:

170

LINUX

Mayo 2004

Una configuracin simple de llamada bajo demanda podra ser algo como esto:
demand
holdoff60
idle180

Esta configuracin activar la llamada bajo demanda, esperar 60 segundos


antes de reestablecer un conexin fallida, y terminar el enlace si pasan 180
segundos sin ningn dato activo en el enlace.
Llamada persistente
La llamada persistente es lo que la gente que tiene conexiones permanentes a
una red querr usar. Hay una sutil diferencia entre llamada en demanda y llamada
persistente. Con la llamada persistente, la conexin es automticamente
establecida tan pronto como el demonio PPP es lanzado, y el aspecto de
persistencia viene a cuento siempre que la llamada telefnica que soporta el
enlace se interrumpa. La llamada persistente asegura que el enlace est siempre
disponible relanzando automticamete la conexin si sta se interrumpe.
Para activar la llamada persistente, debe incluir la opcin persist en uno de los
archivos de opciones de pppd. Incluir esta opcin es todo lo que necesita para
171

LINUX

Mayo 2004

tener al pppd invocando automticamente la orden especificada en la opcin


connect para restablecer la conexin cuando el enlace se interrumpe. Si est
preocupado por el remarcado demasiado rpido del mdem (en el caso de un
fallo del servidor o mdem del otro extremo de la conexin), puede usar la opcin
holdoff para establecer el tiempo mnimo que pppd deber esperar antes de
intentar reconectar. Esta opcin no resolver el problema de un fallo y su
consecuente gasto en llamadas de telfono, pero al menos le servir para reducir
el impacto de uno de ellos. Una configuracin tpica de llamada persistente podra
parecerse a sta:
persist
holdoff 600
El tiempo de espera es especificado en segundos. En nuestro ejemplo, el pppd
espera durante cinco minutos antes de rellamar cuando una llamada ha fallado.
3.7. Cortafuegos de TCP/IP
La seguridad resulta cada vez ms importante tanto para las compaas como
para los individuos. Intenet les ha proporcionado una poderosa herramienta para
distribuir informacin entre ellos y para obtener informacin de otros, pero tambin
les ha expuesto a peligros de los que haban estado exentos hasta entonces. La
criminalidad informtica, el robo de informacin y el dao malintencionado
constituyen peligros potenciales. Una persona no autorizada y sin escrpulos que
consiga el acceso al sistema de una computadora puede que averige
contraseas del sistema o que se aproveche de los errores y del comportamiento
particular de ciertos programas para obtener una cuenta funcional en dicha
mquina. Una vez que sea capaz de entrar en la mquina, puede que tenga
acceso a informacin que podra resultar daina, informacin tan sensible
comercialmente como los planes de negocio, detalles de nuevos proyectos o las
bases de datos con informacin de los clientes. Un dao a este tipo de datos o su
modificacin puede causar severos retrasos a la compaa.
La forma ms segura de evitar daos de tanto alcance consiste en impedir que las
personas no autorizadas puedan obtener el acceso a la mquina. Aqu es donde
intervienen los cortafuegos.
172

LINUX

Mayo 2004

Esta seccin se centrar en aspectos tcnicos especficos de Linux. Ms adelante


se presentar un ejemplo de configuracin del cortafuegos que debera servir
como punto de partida para una propia configuracin, pero, como con todos los
asuntos relacionados con la seguridad, no confe en nadie.
3.7.1. Mtodos de ataque
Como administrador de una red, es importante que usted entienda la naturaleza
de los posibles ataques a la seguridad informtica. Se describirn brevemente los
tipos de ataques ms importantes para que usted pueda comprender mejor y de
forma ms precisa de qu le proteger un cortafuegos sobre Linux. Aqu estn
algunos de los ms importantes mtodos de ataque y las maneras de protegerse
contra ellos:
Acceso no autorizado
Esto simplemente quiere decir que personas que no deberan utilizar los servicios
de su computadora son capaces de conectarse y utilizarlos.
Aprovechamiento de las debilidades conocidas de un programa
Algunos programas y servicios de red no fueron diseados originalmente teniendo
en cuenta una elevada seguridad y son inherentemente vulnerables a los ataques.
Los servicios remotos del tipo BSD (rlogin, rexec, etc) constituyen un ejemplo.
La mejor manera de protegerse contra este tipo de ataque consiste en deshabilitar
los servicios vulnerables o en encontrar alternativas.
Denegacin de servicio
Los ataques de denegacin de servicio causan que el servicio o programa deje de
funcionar o impide que otros hagan uso de ese servicio o programa. Estos
ataques pueden

ser realizados

al

nivel

de

red

enviando

datagramas

cuidadosamente preparados y malintencionados de tal forma que puedan causar


que las conexiones de red fallen. Tambin pueden realizarse a nivel de aplicacin,
donde rdenes cuidadosamente construidas se envan contra un programa para
tratar que se vuelva muy ocupado o que pare su funcionamiento.
Suplantacin de identidad
Este tipo de ataque causa que un 'host' o aplicacin simule las acciones de otro.
Tpicamente, el atacante se hace pasar por un 'host' inocente siguiendo el rastro
173

LINUX

Mayo 2004

de las direcciones IP contenidas en los paquetes de red. Para protegerse contra


este tipo de ataque, verifique la autenticidad de los datagramas y rdenes. Evite el
enrutamiento de datagramas con direcciones de origen no vlidas. Introduzca
impredicibilidad en los mecanismos de control de la conexin, como los nmeros
de secuencia de TCP y la asignacin dinmica de puertos.
'Eavesdropping'
ste es el mtodo de ataque ms simple. Un 'host' se configura para "escuchar" y
capturar los datos no destinados a l. Programas de fisgoneo cuidadosamente
escritos pueden obtener los nombres de usuario y sus contraseas a partir de las
conexiones de red con ingresos de usuarios en el sistema. Redes de difusin
como las de tipo Ethernet son especialmente vulnerables a este tipo de ataques.
Para protegerse contra este tipo de amenazas, evite el uso de tecnologas de red
con difusiones e imponga el uso de encriptacin de los datos.
3.7.2. Qu es un cortafuegos?
Un cortafuegos es una mquina segura y confiable que se asienta entre una red
privada y una red pblica. La mquina cortafuegos se configura con un conjunto
de reglas que determinan a qu trfico de red se le permitir pasar y cul ser
bloqueado o rechazado.
Se pueden construir cortafuegos en una variedad de maneras. La configuracin
ms sofisticada involucra un nmero de mquinas separadas y se conoce como
red perimetral . Dos mquinas, denominadas estranguladoras actan como
"filtros" para permitir pasar slo ciertos tipos de trfico de red, y entre estos
estranguladores residen servidores de red como una ruteador de correo o un
servidor intermediario de 'World Wide Web'. Esta configuracn puede resultar muy
segura y permite de forma fcil un amplio rango de control sobre quin puede
conectarse tanto desde dentro hacia fuera cmo desde fuera hacia dentro.
Sin embargo, tpicamente los cortafuegos son mquinas nicas que sirven todas
estas funciones. Esto es algo menos seguro, porque si hay alguna debilidad en la
propia mquina del cortafuegos que le permita a alguien conseguir el acceso al
mismo cortafuegos, la seguridad de toda la red habr sido comprometida. Sin
embargo, estos tipos de cortafuegos son ms baratos y fciles de mantener que
174

LINUX

Mayo 2004

la configuracin ms sofistificada descrita arriba. La Figura 3-3 ilustra los dos tipos
ms comunes de configuracin de cortafuegos.

Figura 3-3. Las dos clases ms importantes de diseo de cortafuegos

El ncleo de Linux proporciona un rango de caractersticas internas que le


permiten funcionar bastante bien como un cortafuegos de IP. La implementacin
de red incluye cdigo para realizar filtros a nivel de IP en numerosas formas, y
proporciona un mecanismo para configurar con precisin qu tipos de reglas le
gustara imponer. El cortafuegos en Linux es suficientemente flexible como para
convertirle en algo muy til en cualquiera de las configuraciones ilustradas en la
Figura 3-3. El 'software' de cortafuegos de Linux proporciona otras dos
caractersticas muy tiles que se discutirn en captulos por separado: auditora
de IP y enmascaramiento de IP.
3.7.3. Qu es el filtrado de IP?
El filtrado de IP es simplemente un mecanismo que decide qu tipos de
datagramas de IP sern procesados normalmente y cules sern descartados.
Por descartados se entiende que el datagrama se elimina y se ignora
completamente, como si nunca se hubiera recibido. Usted puede aplicar muchos
criterios , y en diferentes ordenamientos, para determinar qu datagramas desea
filtrar; algunos ejemplos de sto son:

175

LINUX

Mayo 2004

Tipo de protocolo: TCP, UDP, ICMP, etc.


Nmero de conector (para TCP/UDP)
Tipo de datagrama: SYN/ACK, datos, peticin de eco de ICMP, etc.
Direccin de origen del datagrama: de donde proviene
Direccin de destino del datagrama: a donde se dirige

Llegado este punto, resulta muy importante comprender que el filtrado de IP es


una utilidad en la capa de red. Esto significa que este mecanismo no entiende
nada acerca de la aplicacin que utiliza las conexiones de red, slo sabe acerca
de las conexiones mismas. Por ejemplo, usted puede denegar el acceso a
usuarios a su red interna por el puerto predeterminado de telnet, pero si se apoya
nicamente en el filtrado de IP, no podr evitar que se utilice el programa de telnet
en un puerto por el que usted permite el paso a travs de su cortafuegos. Puede
evitar este tipo de problemas haciendo uso de servidores intermediarios para
cada servicio que permita que cruce su cortafuegos. Los servidores intermediarios
comprenden la aplicacin para la que fueron diseados y por tanto evitan los
abusos, tales como utilizar el programa de telnet para pasar a travs de un
cortafuegos utilizando el puerto de 'World Wide Web'. Si su cortafuegos soporta
un servidor intermediario de 'World Wide Web', aquella conexin de telnet ser
siempre respondida por el servidor intermediario que slo permitar que pasen
peticiones HTTP. Existe un gran nmero de programas servidores intermediarios.
El conjunto de reglas de filtrado de IP se construye a partir de muchas
combinaciones de los criterios enumerados previamente. Por ejemplo, imagnese
que usted quiere que los usuarios del 'World Wide Web' dentro de la red de la
Cervecera Virtual no tengan acceso a ningn servicio de Internet excepto a los
servidores web. Entonces configurara su cortafuegos permitiendo el reenvo de:

datagramas con una direccin de origen dentro de la red de la Cervecera


Virtual, una direccin de destino cualquiera y con un puerto de destino igual
a 80 (el de WWW)

176

LINUX

Mayo 2004

datagramas con direccin de destino dentro de la red de la Cervecera


Virtual y un puerto de origen igual a 80 (WWW) siendo cualquiera la
direccin de origen.

3.7.4. Configuracin de Linux como cortafuegos


Para poder construir un cortafuegos IP con Linux, es necesario disponer de un
ncleo compilado con soporte de cortafuegos de IP y de la utilidad de
configuracin adecuada. En todos los ncleos anteriores a la serie 2.2 se usaba la
utilidad ipfwadm. Los ncleos 2.2.x supusieron el lanzamiento de la tercera
generacin de cortafuegos de IP para Linux que se denomin 'IP Chains'. 'IP
chains' utiliza un programa similar a ipfwadm que se llama ipchains. Los ncleos
de Linux 2.3.15 y siguientes soportan la cuarta generacin de cortafuegos de IP
de Linux que se denomina netfilter. El cdigo de netfilter es el resultado de un
gran rediseo del flujo en el manejo de paquetes en Linux. Netfilter es una criatura
con mltiples caras, pues proporciona un soporte compatible hacia atrs tanto con
ipfwadm como con ipchains adems de una nueva orden alternativa que se
llama iptables. En las prximas secciones se hablar de las diferencias entre los
tres.
Ncleo configurado con cortafuegos de IP
El ncleo de Linux debe configurarse para que d soporte a las funciones de
cortafuegos de IP. Slo hay que seleccionar las opciones adecuadas cuando se
realiza un make menuconfig del ncleo. En la seccin 3.1 se describe cmo
hacerlo. En los ncleos 2.2, las siguientes opciones deberan ser seleccionadas:
Networkingoptions>
[*]Networkfirewalls
[*]TCP/IPnetworking
[*]IP:firewalling
[*]IP:firewallpacketlogging

En cambio, en los ncleos 2.4.0 y posteriores se deberan seleccionar estas opciones:


Networkingoptions>
[*]Networkpacketfiltering(replacesipchains)
IP:NetfilterConfiguration>
.
<M>UserspacequeueingviaNETLINK(EXPERIMENTAL)
<M>IPtablessupport(requiredforfiltering/masq/NAT)
<M>limitmatchsupport
<M>MACaddressmatchsupport

177

LINUX

Mayo 2004

<M>netfilterMARKmatchsupport
<M>Multipleportmatchsupport
<M>TOSmatchsupport
<M>Connectionstatematchsupport
<M>Uncleanmatchsupport(EXPERIMENTAL)
<M>Ownermatchsupport(EXPERIMENTAL)
<M>Packetfiltering
<M>REJECTtargetsupport
<M>MIRRORtargetsupport(EXPERIMENTAL)
.
<M>Packetmangling
<M>TOStargetsupport
<M>MARKtargetsupport
<M>LOGtargetsupport
<M>ipchains(2.2style)support
<M>ipfwadm(2.0style)support

La utilidad ipfwadm
La utilidad ipfwadm (el administrador del cortafuegos de IP) es la herramienta
que se utiliza para construir las reglas del cortafuegos para todos los ncleos
anteriores al 2.2.0. La sintaxis de las rdenes puede resultar muy confusa porque
permite realizar un amplio espectro de cosas.
La utilidad ipfwadm se incluye en la mayora de las distribuciones modernas de
Linux, aunque quizs no por defecto. Puede que haya un paquete de 'software'
especfico que tenga que instalar. La utilidad ipchains
Al igual que la utilidad ipfwadm, la utilidad ipchains puede resultar algo
desconcertante al principio. Proporciona toda la flexibilidad de ipfwadm con una
sintaxis simplificada, y adems proporciona un mecanismo de encadenamiento
que

le

permite

gestionar

mltiples

conjuntos

de

reglas

enlazarlas

conjuntamente.
La orden ipchains aparece en la mayora de las distribuciones de Linux basadas
en los ncleos 2.2.
La migracin de una configuracin preexistente de cortafuegos resulta menos
costosa gracias a este complemento.

La utilidad iptables
La sintaxis de la utilidad iptables es bastante similar a la de ipchains. Los
cambios consisten en mejoras y en el resultado del rediseo de la herramienta
para que sea extensible a travs de bibliotecas dinmicas
178

LINUX

Mayo 2004

3.7.5. Las tres formas posibles de filtrado


Considrese cmo una mquina Unix, o de hecho cualquier mquina capaz de
realizar enrutamiento de IP, procesa los datagramas de IP. Los pasos bsicos,
mostrados en la Figura 3-4 son:

Figura 3-4. Las etapas del procesamiento de un datagrama de IP

Se recibe el datagrama de IP. (1)

Se examina el datagrama de IP entrante para determinar si est destinado


a un proceso de esta mquina.

Si el datagrama es para esta mquina, se procesa localmente.(2)

Si no est destinado a esta mquina, se realiza una bsqueda en la tabla


de enrutamiento de una ruta adecuada y el datagragama se reenva por la
interfaz adecuada o se elimina si no se puede encontrar una ruta. (3)

Los datagramas procedentes de procesos locales se envan hacia el


'software' de enrutamiento para ser reenviados hacia la interfaz apropiada.
(4)

Se examina el datagrama de IP saliente para determinar si existe una ruta


vlida que escoger, si no es as, se elimina.

Se transmite el datagrama de IP. (5)

En nuestro diagrama, el flujo 135 representa nuestra mquina enrutando datos


entre un 'host' sobre nuestra red Ethernet y un 'host' alcanzable va nuestro
enlace de PPP. Los flujos 12 y 45 representan los flujos de entrada y de salida de
datos de un programa de red ejecutndose en nuestro 'host' local. El flujo 432
179

LINUX

Mayo 2004

representara un flujo de datos va una conexin 'loopback'. Naturalmente, los


datos fluyen tanto hacia dentro como hacia fuera de los dispositivos de red. Los
smbolos de interrogacin del diagrama representan los puntos donde la capa de
IP realiza las decisiones de enrutamiento.
El cortafuegos de IP del ncleo de Linux es capaz de aplicar filtrados en varias
etapas de este proceso. Es decir, se pueden filtrar los datagramas de IP que
entren en su mquina, aquellos que estn siendo reenviados a travs de su
mquina y aquellos que estn preparados para ser transmitidos.
3.7.6. El cortafuegos original de IP (ncleos 2.0)
La primera generacin del soporte de cortafuegos de IP para Linux apareci en la
serie de ncleos 1.1.
Uso de ipfwadm
La orden ipfwadm era la herramienta de configuracin para la segunda
generacin de cortafuegos de IP de Linux. Quizs la forma ms simple de
describir el uso de la orden ipfwadm es con un ejemplo.
Un ejemplo trivial
Supngase que se dispone de una red en nuestra organizacin y que se utiliza
una mquina cortafuegos basada en Linux para conectar la red a Internet.
Adems, supngase que se desea que los usuarios de la red sean capaces de
acceder a servidores 'web' de Internet, pero que cualquier otro tipo de trfico no
sea permitido.
Se pondr una regla de tipo 'forwarding' para permitir que los datagramas con
direccin de origen en nuestra red y un conector de destino con puerto 80 sean
reenviados hacia fuera, y los correspondientes datagramas de respuesta sean
reenviados de vuelta va el cortafuegos.
Asmase que nuestra red tiene una mscara de 24 bits (clase C) y una direccin
de 172.16.1.0. La reglas que se podran utilizar seran:
#ipfwadm -F -f
#ipfwadm -F -p deny

180

LINUX

Mayo 2004

#ipfwadm -F -a accept -P tcp -S 172.16.1.0/24 -D 0/0 80


#ipfwadm -F -a accept -P tcp -S 0/0 80 -D 172.16.1.0/24

El argumento -F de la lnea de rdenes significa especifica a ipfwadm que es una


regla de tipo 'forwarding', es decir, de reenvo. La primera orden instruye a
ipfwadm que se "desprenda" de todas las reglas de tipo 'forwarding'. Esto
asegura que se trabajar con un estado conocido antes de que se aadan reglas
especficas. La segunda regla establece nuestra poltica predeterminada de
reenvo. Se le dice al ncleo que niegue o que no permita el reenvo de
datagramas de IP. Es muy importante establecer la poltica por omisin, porque
describe qu le pasar a cualquier datagrama que no est especficamente
controlado por cualquier otra regla. En la mayora de las configuraciones de
cortafuegos, usted querr establecer la poltica por defecto a 'deny' , como se
muestra en el ejemplo, para estar seguro de que slo el trfico que usted
especficamente permita pasar su cortafuegos sea reenviado.
La tercera y la cuarta reglas son las que implementan el requisito. La tercera
orden permite que nuestros datagramas salgan, y la cuarta permite las respuestas
de vuelta.
Vamos a revisar cada unos de los argumentos:
-F
Esta es una regla de tipo 'forwarding'.
-a accept
Aadir esta regla con la poltica establecida a "aceptar", lo que quiere decir que se
reenviar cualquier datagrama que se ajuste a esta regla
-P tcp
Esta regla se aplica a los datagramas de TCP (en lugar de UDP o ICMP).
-S 172.16.1.0/24
Los primeros 24 bits de la direccin de origen deben coincidir con los de la
direccin de red 172.16.1.0.
-D 0/0 80
La direccin de destino debe tener cero bits coincidentes con la direccin 0.0.0.0.
Esto en el fondo es una forma de decir "cualquier direccin". El 80 es el puerto de
destino, en este caso el de WWW.
181

LINUX

Mayo 2004

Tambin puede utilizarse cualquier entrada que aparezca en el fichero


/etc/services para describir el puerto, de tal forma que -D 0/0 www habra
funcionado igual de bien.
ipfwadm acepta las mscaras de red en una forma con la que puede no est
familiarizado. La notacin /nn es una forma de describir cuntos bits de la
direccin suministrada son significativos, es decir, es el tamao de la mscara de
red. Los bits se cuentan siempre de izquierda a derecha; algunos ejemplos
habituales se muestran en la Tabla 3-5.

Tabla 3-5. Valores habituales de mscaras de red y bits

Se mencion antes que ipfwadm implementa un pequeo truco que permite que
sea ms fcil aadir estos tipos de reglas. Este truco consiste en el uso de la
opcin -b, que convierte a la orden en una regla bidireccional.
El modificador de bidireccionalidad nos permite unir nuestras dos reglas en una
sola como sigue:
#ipfwadm -F -a accept -P tcp -S 172.16.1.0/24 -D 0/0 80 b

Un refinamiento importante
Eche una mirada ms atenta a nuestro conjunto de reglas. Puede apreciar que
todava existe un mtodo de ataque que alguien de fuera podra utilizar para
engaar a nuestro cortafuegos ? Nuestro conjunto de reglas permite que todos los
datagramas procedentes de fuera de nuestra red con un puerto de origen de 80
pasen. Esto incluira a aquellos datagramas cuyo bit de SYN valga 1 . El bit SYN
es lo que declara a un datagrama de TCP que sea una peticin de conexin. Si
una persona de fuera tuviera un acceso privilegiado a un 'host', podra realizar
182

LINUX

Mayo 2004

una conexin a travs de nuestro cortafuegos con cualquiera de nuestros 'hosts',


dado el supuesto de que utilizar el puerto 80 en su extremo. Esto no es lo que se
deseaba. Afortunadamente, existe una solucin a este problema. La orden
ipfwadm proporciona otro modificador que permite construir reglas que coincidan
con datagramas cuyo bit de SYN valga 1. Cambiemos nuestro ejemplo para incluir
una regla de este tipo:
#ipfwadm -F -a deny -P tcp -S 0/0 80 -D 172.16.10.0/24 -y
#ipfwadm -F -a accept -P tcp -S 172.16.1.0/24 -D 0/0 80 b

El modificador -y hace que la regla coincida slo si el bit SYN del datagrama vale
1. As nuestra nueva regla dice: "Deniega cualquier datagrama destinado a
nuestra regla procedente de cualquier sitio con un puerto de origen igual a 80 y bit
SYN igual a 1", o "deniega cualquier peticin de conexsin desde 'hosts' utilizando
el puerto 80"
Listado de nuestras reglas
Despus de haber introducido nuestras reglas, se puede pedir a ipfwadm que las
liste con la orden:
#ipfwadm -F l

Esta orden mostrar todas las reglas de reenvo configuradas. La salida debera
parecerse a algo como esto:
#ipfwadm -F -l
IPfirewallforwardrules,defaultpolicy:accept
typeprotsourcedestinationports
denytcpanywhere172.16.10.0/24www>any
acctcp172.16.1.0/24anywhereany>www

La orden ipfwadm intentar traducir el nmero de puerto en un nombre de


servicio utilizando el archivo /etc/services, si es que tiene alguna entrada
correspondiente.

183

LINUX

Mayo 2004

La salida por omisin carece de algunos detalles importantes para nosotros. En la


salida con el listado predeterminado no se puede ver el efecto del argumento -y.
La orden ipfwadm es capaz de producir un listado ms detallado si se especifica
adems el argumento -e (salida extendida). Aqu no se muestra la salida completa
porque es demasiado ancha para la pgina, pero s que incluye una columna para
las opciones de nombre opt que muestra la opcin -y que controlla los paquetes
de tipo SYN:
#ipfwadm -F -l -e
Pfirewallforwardrules,defaultpolicy:accept
pktsbytestypeprotopttosatosxifnameifaddresssource...
00denytcpy0xFF0x00anyanyanywhere...
00acctcpb0xFF0x00anyany172.16.1.0/24...

Un ejemplo ms complejo
El ejemplo anterior era un ejemplo simple. No todo los servicios de red son tan
simples de configurar como el servicio de WWW; en la prctica, la configuracin
de un cortafuegos tpico resultara ser mucho ms compleja. Vamos a examinar
otro ejemplo comn, esta vez FTP. Se quiere que los usuarios de la red interna
puedan entrar en servidores de FTP de Internet para leer y escribir archivos. Pero
no se desea que personas de Internet puedan entrar en nuestros servidores de
FTP.
Es sabido que FTP utiliza dos puertos de FTP: el puerto 20 (ftp-data) y el puerto
21 (ftp), por tanto:
#ipfwadm -a deny -P tcp -S 0/0 20 -D 172.16.1.0/24 -y
#ipfwadm -a accept -P tcp -S 172.16.1.0/24 -D 0/0 20 -b
#
#ipfwadm -a deny -P tcp -S 0/0 21 -D 172.16.1.0/24 -y
#ipfwadm -a accept -P tcp -S 172.16.1.0/24 -D 0/0 21 b

Los servidores de FTP pueden operar en dos modos diferentes: el modo pasivo y
el modo activo. En el modo pasivo, el servidor de FTP permanece escuchando en
espera de una conexin desde el cliente. En el modo activo, es el servidor el que
realmente realiza la conexin con el cliente. El modo activo es el habitual por
omisin. Las diferencias se ilustran en la Figura 3-5.
184

LINUX

Mayo 2004

Figura 3-5. Modos de un servidor de FTP

Muchos servidores de FTP realizan su conexin de datos desde el puerto 20


cuando operan en el modo activo, lo que simplifica las cosas un poco, pero,
degraciadamente, no todos proceden as.
Resumen de los argumentos de ipfwadm
La orden ipfwadm tiene muchos argumentos diferentes que estn relacionados
con la configuracin del cortafuegos de IP. La sintaxis general es:
ipfwadm categora orden parmetros [opciones]

Cdada uno de estos argumentos se pueden revisar en el apndice.


Tipos de datagrama de ICMP
Cada una de las rdenes de configuracin del cortafuegos le permite especificar
tipos de datagrama de ICMP. Al contario que los puertos de TCP y de UDP, no
existe un archivo de configuracin conveniente que liste los tipos de datagramas y
sus significados. Los tipos de datagrama de ICMP se definen en el RFC-1700, el
RFC de los nmeros asignados. Los tipos de datagrama de ICMP aparecen
tambin listados en uno de los archivos de cabecera de la biblioteca estndar de
C. El archivo /usr/include/netinet/ip_icmp.h, que pertenece al paquete con la
185

LINUX

Mayo 2004

biblioteca estndar de

linux, y que los programadores de C utilizan cuando

escriben 'software' de red que utilice el protocolo de ICMP, tambin define los
tipos de datagrama de ICMP.
Para su conveniencia, se incluyen aqu en la Tabla 3-6. La interfaz de la orden
iptables le permite especificar los tipos de ICMP por su nombre, por lo que
tambin se muestran los nombre nemotcnicos que utiliza.

Tabla 3-6. Tipos de datagramas de ICMP

3.7.7. Cortafuegos 'IP Chains' (ncleos 2.2)


La mayora de los aspectos de Linux evolucionan para satisfacer las cada vez
mayores demandas de sus usuarios; el cortafuegos de IP no es una excepcin.
La implementacin del cortafuegos de IP tradicional resulta suficiente para la
mayora de las aplicaciones, pero puede resultar engorroso y poco eficiente para
configurar en entornos complejos. Para resolver este problema, se desarroll un
nuevo mtodo de configuracin del cortafuegos de IP as como nuevas
caractersticas relacionadas. Este nuevo mtodo fue denominado Cortafuegos 'IP
Chains' y fue liberado por vez primera para uso general en el ncleo 2.2.0.
El cortafuegos 'IP Chains' le permite desarrollar clases de reglas de cortafuegos a
las que puede entonces aadir y quitar 'hosts' o redes. Una consecuencia
colateral del encadenamiento de reglas de cortafuegos es que puede mejorar el
rendiminento del cortafuegos en aquellas configuraciones en las que haya
montones de reglas.
186

LINUX

Mayo 2004

Uso de ipchains
Existen dos formas de emplear la utilidad ipchains. La primera forma consiste en
utilizar el guin de "shell" ipfwadm-wrapper, que es bsicamente un sustituto de
la orden ipfwadm y que llama por debajo al programa ipchains.
La segunda forma de utilizar ipchains consiste en aprender su nueva sintaxis y
modificar cualquier configuracin existente que exija utilizar la nueva sintaxis en
lugar de la antigua. Con algunas consideraciones cuidadosas, se dar cuenta de
que puede optimizar su configuracin a la vez que realiza la conversin. La
sintaxis de ipchains es ms fcil de aprender que la de ipfwadm, por lo que
resultar una buena opcin.
La orden ipfwadm manipulaba tres conjuntos de reglas para el propsito de
configurar el cortafuegos. Con el cortafuegos 'IP Chains', podr crear un nmero
arbitrario de conjuntos de reglas, cada una enlazada con otra, pero siguen
estando presentes siempre tres conjuntos de reglas relacionadas con la funcin
del cortafuegos.
Los conjuntos de reglas estndares son los directos equivalentes de los utilizados
con ipfwadm, exceptuando el hecho de que ahora tiene nombre: input, forward y
output.
Veamos primero la sintaxis general de la orden ipchains, despus se ver como
utilizar ipchains en lugar de ipfwadm sin preocuparse acerca de sus
caractersticas avanzadas de encadenamiento. Se har reutilizando nuestros
ejemplos anteriores
Sintaxis de la orden ipchains
La sintaxis de la orden ipchains es bastante directa. Se contemplarn los
ejemplos ms importantes. La sintaxis general de la mayora de las rdenes de
ipchains es:
ipchains orden especificacin_de_regla opciones

Las caractersticas de cada uno de los argumentos de ipchains se puede revisar


en el apndice
Uso avanzado de las cadenas
187

LINUX

Mayo 2004

Usted ya sabe que la orden ipchains sustituye a la orden ipfwadm con una
sintaxis de lnea de rdenes ms simple y con algunas mejoras interesantes, pero
sin duda alguna, usted desea saber dnde y por qu se deben utilizar las cadenas
de usuario.
Cadenas de usuario
Los tres conjuntos de reglas del cdigo del cortafuegos de IP tradicional
proporcionan un mecanismo para construir configuraciones de cortafuegos que
eran bastante simples de entender y de gestionar en el caso de pequeas redes
con requisitos simples en cuanto a funcionalidad de cortafuegos. Cuando los
requisitos de configuracin no son tan simples, aparecen numerosos problemas.
En primer lugar, las redes muy grandes requieren con frecuencia un nmero
mucho mayor de reglas de cortafuegos que el pequeo que hemos visto hasta
ahora; de forma inevitable, aparecen necesidades que requieren que se aadan
reglas de cortafuegos para cubrir escenarios con casos especiales. Cuando el
nmero de reglas empieza a crecer, el rendimiento del cortafuegos disminuye ms
y ms segn ms y ms comprobaciones tienen que realizarse sobre cada
datagrama y la facilidad de gestin se convierte en un asunto importante. En
segundo lugar, no es posible habilitar y deshabilitar conjuntos de reglas
atmicamente; en cambio, usted se encontrar inevitablemente expuesto a
ataques mientras se encuentre en medio de una reconstruccin de sus conjuntos
de reglas.
El diseo del cortafuegos 'IP Chains' ayuda a soliviantar estos problemas al
permitir al administrador de la red crear conjuntos arbitrarios de reglas de
cortafuegos que se pueden enlazar con los tres conjuntos de reglas predefinidas.
Se puede utilizar la opcin -N de ipchains para crear una nueva cadena con el
nombre de ocho caracteres o menos que nos plazca. (Probablemente sea buena
idea restringir el nombre a uno formado por minsculas solamente). La opcin -j
configura la accin que se tomar cuando el datagrama coincida con la
especificacin de la regla. La opcin -j especifica que si un datagrama coincide
con una regla, entonces deben realizarse ms comprobaciones contra una
cadena definida por usuario. Se ilustrar esto con un diagrama.
Considrese las siguientes rdenes de ipchains:
188

LINUX

Mayo 2004

ipchainsPinputDENY
ipchainsNtcpin
ipchainsAtcpins!172.16.0.0/16
ipchainsAtcpinptcpd172.16.0.0/16sshjACCEPT
ipchainsAtcpinptcpd172.16.0.0/16wwwjACCEPT
ipchainsAinputptcpjtcpin
ipchainsAinputpall

Se establece la poltica por defecto de la cadena de entrada a deny. La segunda


orden crea una cadena de usuario denominada tcpin. La tercera orden aade una
regla a la cadena tcpin que coincide con cualquier datagrama cuyo origen est
fuera de nuestra red; la regla no representa ninguna accin. Las dos reglas
siguientes coinciden con cualquier datagrama destinado a nuestra red local tanto
al puerto de ssh como al de www; los datagramas que coincidan con estas reglas
son aceptados. La magia de ipchains empieza en la regla siguiente. Obliga al
'software' del cortafuegos a que compruebe cualquier datagrama del protocolo de
TCP contra la cadena de usuario tcpin.
Por ltimo, se aade una regla a la cadena input que coincide con cualquier
datagrama; esto es otra regla de auditora. Todo esto producir la cadenas de
cortafuegos mostradas en la Figura 3-6.

Figura 3-6. Un conjunto simple de reglas de una cadena de IP

Nuestras cadenas input y tcpin estn pobladas con nuestras reglas. El


procesamiento de los datagramas siempre comienza por una de las cadenas
predefinidas. Veamos cmo entran en juego las cadenas de usuario siguiendo el
camino de procesamiento de los diferentes tipos de datagramas.

189

LINUX

Mayo 2004

Primero, veamos qu pasa cuando se recibe un datagrama de UDP para uno de


nuestros 'hosts'. La Figura 3-7 ilustra el flujo por las reglas.

Figura 3-7. La secuencia de reglas de comprobacin de un datagrama de UDP


recibido

El datagrama se recibe por la cadena input y cae dentro de las dos reglas porque
coinciden con los protocolos de ICMP y TCP, respectivamente. Coincide con la
tercera regla en la cadena, pero no se especifica ningn blanco por lo que los
contadores de datagramas y bytes se actualizan pero se toma ninguna otra
accin.
El datagrama alcanza el final de la cadena input, se encuentra con la poltica
predeterminada de la cadena input y no se acepta.
Para ver a nuestra cadena de usuario en accin, considrese qu pasa cuando se
recibe un datagrama de TCP destinado al puerto ssh de uno de nuestros 'hosts'.
La secuencia se muestra en la Figura 3-8.

Figura 3-8. Flujo de reglas para un datagrama de TCP recibido para ssh

190

LINUX

Mayo 2004

Esta vez, la segunda regla de la cadena input coincide y especifica como blanco
la cadena tcpin, nuestra cadena de usuario. Especificar una cadena de usuario
como blanco causa que se compruebe el datagrama contra las reglas de esa
cadena, por lo que la siguiente regla que se comprobar ser la primera regla de
la cadena tcpin. La primera regla coincide con cualquier datagrama que tenga una
direccin de origen fuera de nuestra red local y no especifica ningn blanco, por lo
que tambin es una regla de auditora y la comprobacin pasa a la siguiente
regla. La segunda regla de nuestra cadena tcpin s que coincide y especifica un
blanco de ACCEPT. Se ha llegado a un blanco tal que no se realiza ms
procesamiento. El datagrama se acepta.
Por ltimo, veamos lo que pasa cuando se alcanza el final de una cadena de
usuario. Para ver esto, se representar el flujo de un datagrama de TCP destinado
a un puerto distinto de los dos que estamos manejando especficamente, como se
muestra en la Figura 3-9.

Figura 3-9. Flujo de reglas para un datagra de TCP recibido para telnet

Las cadenas de usuario no tienen polticas por defecto. Cuando se han


comprobado todas las reglas de una cadena de usuario , y ninguna coincide, el
cdigo del cortafuegos acta como si estuviera presente una regla de RETURN,
por lo que si no es esto lo que usted desea, debe asegurarse de proporcionar una
regla al final de la cadena de usuario que tome la accin que desee. Un ejemplo
un poco ms sofisticado es el proporcionado con la siguiente lista de rdenes:
#
#EstablecelapolticadereenvopordefectoaREJECT
ipchainsPforwardREJECT

191

LINUX

Mayo 2004

#
#creanuestrascadenasdeusuario
ipchainsNsshin
ipchainsNsshout
ipchainsNwwwin
ipchainsNwwwout
#
# Se asegura de que se rechazarn las conexiones provenientes por el camino
incorrecto.
ipchainsAwwwinptcps172.16.0.0/16yjREJECT
ipchainsAwwwoutptcpd172.16.0.0/16yjREJECT
ipchainsAsshinptcps172.16.0.0/16yjREJECT
ipchainsAsshoutptcpd172.16.0.0/16yjREJECT
#
#seaseguraqueloquealcanceelfinaldeunacadenadeusuarioserechaza
ipchainsAsshinjREJECT
ipchainsAsshoutjREJECT
ipchainsAwwwinjREJECT
ipchainsAwwwoutjREJECT
#
#dirigelosserviciosdewwwysshalascadenasdeusuariorelevantes
ipchainsAforwardptcpd172.16.0.0/16sshbjsshin
ipchainsAforwardptcps172.16.0.0/16d0/0sshbjsshout
ipchainsAforwardptcpd172.16.0.0/16wwwbjwwwin
ipchainsAforwardptcps172.16.0.0/16d0/0wwwbjwwwout
#
#Insertanuestrasreglasparabuscarcoincidenciasconlos'hosts'enlasegunda
posicin
#nuestrascadenasdeusuario.
ipchainsIwwwin2d172.16.1.2bjACCEPT
ipchainsIwwwout2s172.16.1.0/24bjACCEPT
ipchainsIsshin2d172.16.1.4bjACCEPT
ipchainsIsshout2s172.16.1.4bjACCEPT
ipchainsIsshout2s172.16.1.6bjACCEPT
#

En este ejemplo, se ha utilizado una seleccin de cadenas de usuario tanto para


simplificar la gestin de la configuracin de nuestro cortafuegos como para
mejorar su eficiencia en comparacin a una solucin que involucrara slo las
cadenas predefinidas.
3.7.8. Netfilter e 'IP Tables' (Ncleos 2.4)
Mientras desarrollaba el cortafuegos 'IP Chains', Paul Russell decidi que realizar
funciones de cortafuegos de IP debera ser algo menos difcil; pronto asumi
como tarea simplificar los aspectos de procesamiento de datagramas en el cdigo
de cortafuegos del ncleo y produjo un esquema de filtrado que era mucho ms
claro y mucho ms flexible. Denomin este nuevo esquema netfilter.
Pero, qu era lo que no estaba bien con las cadenas de IP de ipchains ? Haban
aumentado de forma importante la eficiencia y la gestin de las reglas del
cortafuegos. Pero la forma que tenan de procesar los datagramas eran todava
192

LINUX

Mayo 2004

complejas, en especial en conjuncin con caractersticas relacionadas con las


funciones de cortafuegos como el enmascaramiento de IP y con otras formas de
traducciones de direcciones. Parte de esta complejidad era debida a que el
enmascaramiento de IP y la traduccin de direcciones de red fueron funciones
desarrolladas independientemente del cdigo de cortafuegos e integradas ms
tarde, en vez de haber sido diseadas como partes mismas del cdigo del
cortafuegos desde el principio. Si un desarrollador deseara aadir todava ms
caractersticas a la secuencia de procesamiento de datagramas, entonces se
encontrara con dificultades para encontrar el lugar donde insertar el cdigo y se
habra visto obligado a realizar cambios en el ncleo.
Adems, haba otros problemas. En concreto, la cadena input describa la entrada
a la capa de red de IP tomada en conjunto. La cadena input afectaba tanto a los
datagramas que estaban destinados a este 'host' as como los datagramas que
iban a ser encaminados. Esto resulta contrario a la intuicin porque se confunda
la funcin de la cadena 'input' con la de la cadena 'forward', que se aplicaba slo a
los datagramas que iban a ser reenviados, pero que siempre segua a la cadena
'input'. Se se quera tratar de forma diferente los datagramas para el propio 'host'
de los que iban a ser reenviados, era necesario construir reglas complejas que
excluan a unos o a otros. El mismo problema apareca con la cadena output de
salida.
Esta complejidad influa de forma inevitable en el trabajo del administrador de
sistemas porque se vea reflejada en la forma en que se deban disear los
conjuntos de reglas. Adems, cualquier extensin al proceso de filtrado exiga la
modificacin directa del ncleo, porque todas las polticas de filtrados estaban
implementadas all y no haba forma de proporcionar una interfaz transparente.
netfilter aborda tanto la complejidad como la rigidez de las soluciones antiguas
implementando un esquema genrico en el ncleo que simplifica la forma en que
se procesan los datagramas y proporciona la posibilidad de extender las polticas
de filtrado sin tener que modificar el ncleo.
Veamos dos de los cambios claves realizados. La Figura 3-10 ilustra cmo se
procesan los datagramas en la implementacin de 'IP Chains', mientras que
Figura 3-11 ilustra cmo se procesan en la implementacin de netfilter. La
diferencias claves consisten en la eliminacin de la funcin de enmascaramiento
193

LINUX

Mayo 2004

del cdigo central y de un cambio en la localizacin de las cadenas de entrada y


de salida. En acompaamiento a estos cambios, se cre una herramienta de
configuracin nueva y extensible que se denomin iptables.
En 'IP Chains' la cadena de entrada se aplica a todos los datagramas recibidos
por el 'host', independientemente de si estn destinados al 'host' local o de si
sern encaminados a otro 'host'. En netfilter, la cadena 'input' de entrada se aplica
slamente a los datagramas destinados al 'host' local, y la cadena 'forward' de
reenvo se aplica slo a los datagramas destinados a otro 'host'. De forma similar,
en 'IP chains', la cadena 'output' de salida se aplica a todos los datagramas que
abadonen el 'host' local, independientemente de si el datagrama se genera en el
'host' local o ha sido encaminado desde otro 'host'. En netfilter, la cadena 'output'
de salida se aplica slamente a los datagramas generados en este 'host' y no se
aplica a los datagramas que estn siendo enrutados provenientes de otro 'host'.
Este cambio por s solo ofrece una enorme simplificacin de muchas
configuraciones de cortafuegos.

Figura 3-10. Procesamiento de datagramas en 'IP Chains'

En la Figura 3-10, los componentes etiquetados como demasq y masq son


componentes separados del ncleo que son responsables del procesamiento de
los datagramas enmascarados entrantes y salientes. Estos componentes han sido
reimplementados como mdulos de netfilter.
Considrese el caso de una configuracin para la que la poltica por defecto para
cada una de las cadenas 'input', 'forward' y 'output' es deny. En 'IP Chains', se
necesitaran seis reglas para permitir cualquier sesin a travs del 'host'
194

LINUX

Mayo 2004

cortafuegos; dos para cada una de las cadenas 'input, 'forward' y 'output' (una
cubrira el camino en un sentido y la otra en el sentido contrario). Puede
imaginarse cmo esto puede llegar a resultar extremadamente complejo y difcil
de gestionar cuando se mezclan sesiones que pueden ser enrutadas y sesiones
que podran conectarse al 'host' local sin que deban ser enrutadas. 'IP chains' le
permite crear cadenas que le simplificaran esta tarea un poco, pero su diseo no
resulta evidente y requiere de un cierto nivel de experiencia.
En la implementacin de netfilter con iptables, esta complejidad desaparece
completamente. Para que se pueda encaminar por un 'host' cortafuegos un
servicio que se desea prohibir que termine en el propio 'host', slo se necesitan
dos reglas: una para un sentido y otra para el contrario ambas en la cadena
'forward'. Esto es la forma obvia de disear reglas de cortafuegos, y servir para
simplificar enormemente el diseo de las configuraciones del cortafuegos .

Figura 3-11. Cadena de procesamientos de datagramas en 'netfilter'

Uso de iptables
La utilidad iptables se utiliza para configurar las reglas de filtrado de netfilter. Su
sintaxis se apoya fuertemente en la de la orden ipchains, pero difiere en un
aspecto muy importante: es extensible. Esto quiere decir que su funcionalidad
puede extenderse sin tener que recompilar. Consigue este truco utilizando

195

LINUX

Mayo 2004

bibliotecas compartidas. Hay extensiones estndares de las que se explorarn


algunas dentro de un momento.
Antes de que se pueda utilizar la orden iptables, se debe cargar el mdulo del
ncleo de netfilter que proporciona el soporte para ello. La forma ms fcil de
hacerlo es con la orden modprobe:
modprobeip_tables

La orden iptables se utiliza para configurar tanto el filtrado de IP como la


traduccin de direcciones de red.
Para facilitar esto, existen dos tablas de reglas denominadas filter y nat. Por
defecto, se asume la tabla 'filter' salvo que se especifique la opcin -t. Tambin se
proporciona cinco cadenas predefinidas. Las cadenas INPUT y FORWARD estn
disponibles para la tabla filter, las cadenas PREROUTING y POSTROUTING
estn disponbiles para la tabla nat , y la cadena OUTPUT est disponible para
ambas tablas. La sintaxis general de la mayora de las rdenes de iptables es:
iptables orden especificacin_de_regla extensiones

Las opciones se pueden ver en el apndice, y a continuacin se revisarn algunos


ejemplos.
3.7.9. Comprobacin de una configuracin del cortafuegos
Despus de haber diseado una configuracin de cortafuegos adecuada, es
importante comprobar que efectivamente se obtiene lo que se deseaba. Una
forma de hacerlo consiste en utilizar un 'host' de prueba fuera de nuestra red para
que intente atravesar su cortafuegos.
Un mtodo ms rpido y sencillo est disponible con la implementacin del
cortafuegos de Linux. Permite generar pruebas y ejecutarlas contra el cortafuegos
como si se estuviera haciendo la prueba con datagramas reales. Todas las
variedades de software del cortafuegos del ncleo de Linux, ipfwadm, ipchains,
e iptables, dan soporte a este tipo de comprobaciones. La implementacin
involucra el uso de la orden de comprobacin relevante.
El procedimiento general de comprobacin es como sigue:
196

LINUX

Mayo 2004

1. Disee y configure su cortafuegos utilizando ipfwadm, ipchains, o iptables.


2. Disee una serie de comprobaciones que determinen si su cortafuegos est
realmente funcionando como deseaba. Puede utilizar cualquier direccin de
origen o destino para realizar estas comprobaciones, por lo que escoja algunas
combinaciones de direcciones que deberan ser aceptadas y otras que deberan
ser rechazadas.
3. Desarrolle reglas de ipfwadm, ipchains, o iptables para implementar cada
comprobacin. Probablemente merezca la pena escribir todas estas reglas en un
guin de tal forma que pueda hacer y rehacer la comprobacin fcilmente a la vez
que va corrigiendo los errores o cambiando el diseo. Las comprobaciones
utilizan casi la misma sintaxis que las especificaciones de reglas, pero los
argumentos tiene significados ligeramente diferentes.
4. Ejecute cada orden de comprobacin y anote el resultado. El resultado de cata
comprobacin consistir en una nica palabra que indicar el blanco final del
datagrama despus de haber cruzado la configuracin del cortafuegos; es decir,
dnde terminar el proceso. Para el caso de ipchains e iptables, pueden
comprobarse las cadenas de usuario adems de las predefinidas.
5. Compare la salida de cada comprobacin contra el resultado deseado. Si
encuentra alguna discrepancia, necesitar analizar su conjunto de reglas para
determinar dnde cometi el error. Si escribi sus rdenes de pruebas en un
fichero de guin, entonces podr reejecutar la comprobacin de forma fcil
despus de haber corregido cualquier error de la configuracin del cortafuegos.
Se
considera buena prctica borrar por completo sus conjuntos de reglas y
reconstruirlas desde cero, en vez de estar realizando cambios dinmicamente.
3.7.10. Un ejemplo de configuracin del cortafuegos
Se han discutido los fundamentos de la configuracin del cortafuegos. Veamos
ahora qu aspecto tendra una configuracin real del cortafuegos.
Se ha diseado la configuracin de este ejemplo con vistas a que sea fcilmente
extensible y personalizable. Se proporcionan tres versiones. la primera se
implementa con la orden ipfwadm (o el guin ipfwadm-wrapper), la segunda
utiliza ipchains, y la tercera iptables. En el ejemplo no se intenta aprovechar las
197

LINUX

Mayo 2004

posibilidades de las cadenas de usuario, pero le mostrar las similitudes y


diferencias entre las sintaxis de las viejas y las nuevas herramientas de
configuracin:
#!/bin/bash
##########################################################################
#VERSINPARAIPFWADM
#Estaconfiguracinestpensadacomoejemplodeconfiguracinde
#uncortafuegossobreun'host'nicoquenohospedelmismoningn
#servicio
#SECCINCONFIGURABLEPORELUSUARIO
#Elnombreylalocalizacindelautilidadipfwadm.Utilice
#ipfwadmwrapperparalosncleos2.2.*.
IPFWADM=ipfwadm
#Rutadelejecutabledeipfwadm.
PATH="/sbin"
#Elespaciodedireccionesdenuestraredinternayeldispositivo
#deredquelasoporta.
OURNET="172.29.16.0/24"
OURBCAST="172.29.16.255"
OURDEV="eth0"
#Lasdireccionesdefuerayeldispositivoderedquelasoporta.
ANYADDR="0/0"
ANYDEV="eth1"
#LosserviciosdeTCPquedeseamospermitirquepasenun""vaco
#significatodoslospuertos
#nota:separadosporespacios
TCPIN="smtpwww"
TCPOUT="smtpwwwftpftpdatairc"
#LosserviciosdeUDPquedeseamospermitirquepasenun""vaco
#significatodoslospuertos
#nota:separadosporespacios
UDPIN="domain"
UDPOUT="domain"
#LosserviciosdeICMPquedeseamospermitirquepasenun""vaco
#significatodoslostipos
#referenciaparalosnmerosdelostipos:/usr/include/netinet/ip_icmp.h
#nota:separadosporespacios
ICMPIN="0311"
ICMPOUT="8311"
#Registro;descomentelasiguientelneaparahabilitarelregistro
#delosdatagramasrechazadosporelcortafuegos
#LOGGING=1
#FINDELASECCINCONFIGURABLEPORELUSUARIO
###########################################################################
#Borralasreglasdelacadenadeentrada
$IPFWADMIf
#Pordefecto,queremosdenegarelaccesoalosintentosdeentrada
$IPFWADMIpdeny
#SUPLANTACINDEIDENTIDAD
#Nosedeberaaceptarningndatagramaprovenientedefueraconuna
#direcccindeorigencoincidenteconunadelasnuestras,por
#esolasrechazamos.
$IPFWADMIadenyS$OURNETW$ANYDEV
#'SMURF'
#NosepermitendifusionesdirigidasdeICMPanuestraredparaevitar
#losataquesdelestilodenominado'Smurf'.
$IPFWADMIadenyPicmpW$ANYDEVD$OURBCAST

198

LINUX

Mayo 2004

#TCP
#AceptaremostodoslosdatagramasdeTCPquepertenezcanauna
conexinyaexistente(i.e.cuyobitdeACKvalga1)
#enelcasodelospuertosdeTCPqueestamospermitiendo.
#Estodeberacapturarmsdel95%detodoslospaquetesvlidosdeTCP.
$IPFWADMIaacceptPtcpD$OURNET$TCPINkb
#TCPCONEXIONESENTRANTES
#Aceptaremosnicamentelassolicitudesdeconexindesde
#fueraslamenteenlospuertosdeTCPpermitidos.
$IPFWADMIaacceptPtcpW$ANYDEVD$OURNET$TCPINy
#TCPCONEXIONESSALIENTES
#AceptaremostodaslasconexionessalientesdeTCPhacialospuertos
#deTCPpermitidos.
$IPFWADMIaacceptPtcpW$OURDEVD$ANYADDR$TCPOUTy
#UDPENTRADA
#AceptaremoslaentradadedatagramasUDPporpuertospermitidos
$IPFWADMIaacceptPudpW$ANYDEVD$OURNET$UDPIN
#UDPSALIDA
#Aceptaremoslasalidadedatagramashacialospuertospermitidos.
$IPFWADMIaacceptPudpW$OURDEVD$ANYADDR$UDPOUT
#ICMPENTRADA
#AceptaremoslaentradadelosdatagramasdeICMPdelostipospermitidos.
$IPFWADMIaacceptPicmpW$ANYDEVD$OURNET$ICMPIN
#ICMPSALIDA
#AceptaremoslasalidadelosdatagramasdeICMPdelostipospermitidos.
$IPFWADMIaacceptPicmpW$OURDEVD$ANYADDR$ICMPOUT
#CASOPORDEFECTOyREGISTRO
#Todoslosrestantesdatagramascaendentrodelareglapordefecto
#ysoneliminados.Sernregistradossimsarrribasehaconfigurado
#lavariableLOGGING.
#
if["$LOGGING"]
then
#RegistralospaquetesdeTCPdescartados
$IPFWADMIarejectPtcpo
#RegistralospaquetesdeUDPdescartados
$IPFWADMIarejectPudpo
#RegistralospaquetesdeICMPdescartados
$IPFWADMIarejectPicmpo
fi
#
#fin.

Ahora se vuelve a implementar el ejemplo con la orden ipchains:


#!/bin/bash
##########################################################################
#VERSINPARAIPCHAINS
#Esteconfiguracinestpensadacomoejemplodeconfiguracinde
#uncortafuegossobreun'host'nicoquenohospedelmismoningn
#servicio
##########################################################################
#SECCINCONFIGURABLEPORELUSUARIO
#Elnombreylalocalizacindelautilidadipchains.
IPCHAINS=ipchains
#Rutadelejecutabledeipchains.
PATH="/sbin"
#Elespaciodedireccionesdenuestraredinternayeldispositivo
#deredquelasoporta.
OURNET="172.29.16.0/24"
OURBCAST="172.29.16.255"
OURDEV="eth0"
#Lasdireccionesdefuerayeldispositivoderedquelasoporta.
ANYADDR="0/0"

199

LINUX

Mayo 2004

ANYDEV="eth1"
#LosserviciosdeTCPquedeseamospermitirquepasenun""vaco
#significatodoslospuertos
#nota:separadosporespacios
TCPIN="smtpwww"
TCPOUT="smtpwwwftpftpdatairc"
#LosserviciosdeUDPquedeseamospermitirquepasenun""vaco
#significatodoslospuertos
#nota:separadosporespacios
UDPIN="domain"
UDPOUT="domain"
#LosserviciosdeICMPquedeseamospermitirquepasenun""vaco
#significatodoslostipos
#referenciaparalosnmerosdelostipos:/usr/include/netinet/ip_icmp.h
#nota:separadosporespacios
ICMPIN="0311"
ICMPOUT="8311"
#Registro;descomentelasiguientelneaparahabilitarelregistro
#delosdatagramasrechazadosporelcortafuegos
#LOGGING=1
#FINDELASECCINCONFIGURABLEPORELUSUARIO
##########################################################################
#Borralasreglasdelacadenadeentrada
$IPCHAINSFinput
#Pordefecto,queremosdenegarelaccesoalosintentosdeentrada
$IPCHAINSPinputdeny
#SUPLANTACINDEIDENTIDAD
#Nosedeberaaceptarningndatagramaprovenientedefueraconuna
#direcccindeorigencoincidenteconunadelasnuestras,por
#esolasrechazamos.
$IPCHAINSAinputs$OURNETi$ANYDEVjdeny
#'SMURF'
#NosepermitendifusionesdirigidasdeICMPanuestraredparaevitar
#losataquesdelestilodenominado'Smurf'.
$IPCHAINSAinputpicmpw$ANYDEVd$OURBCASTjdeny
#Deberamosaceptarfragmentos,estosedebeexplicitarenipchains.
$IPCHAINSAinputfjaccept
#TCP
#AceptaremostodoslosdatagramasdeTCPquepertenezcanauna
#conexinyaexistente(i.e.cuyobitdeACKvalga1)
#enelcasodelospuertosdeTCPqueestamospermitiendo.
#Estodeberacapturarmsdel95%detodoslospaquetesvlidosdeTCP.
$IPCHAINSAinputptcpd$OURNET$TCPIN!ybjaccept
#TCPCONEXIONESENTRANTES
Aceptaremosnicamentelassolicitudesdeconexindesde
#fueraenlospuertosdeTCPpermitidos.
$IPCHAINSAinputptcpi$ANYDEVd$OURNET$TCPINyjaccept
#TCPCONEXIONESSALIENTES
#AceptaremostodaslasconexionessalientesdeTCPhacialospuertos
#deTCPpermitidos.
$IPCHAINSAinputptcpi$OURDEVd$ANYADDR$TCPOUTyjaccept
#UDPENTRADA
#AceptaremoslaentradadelosdatagramasdeUDPporpuertospermitidos
$IPCHAINSAinputpudpi$ANYDEVd$OURNET$UDPINjaccept
#UDPSALIDA
#Aceptaremoslasalidadedatagramashacialospuertospermitidos.
$IPCHAINSAinputpudpi$OURDEVd$ANYADDR$UDPOUTjaccept
#ICMPENTRADA
#AceptaremoslaentradadelosdatagramasdeICMPdelostipospermitidos
$IPCHAINSAinputpicmpw$ANYDEVd$OURNET$ICMPINjaccept
#ICMPSALIDA
#AceptaremoslasalidadelosdatagramasdeICMPdelostipospermitidos.

200

LINUX

Mayo 2004

$IPCHAINSAinputpicmpi$OURDEVd$ANYADDR$ICMPOUTjaccept
#CASOPORDEFECTOyREGISTRO
#Todoslosrestantesdatagramascaendentrodelareglapordefecto
#ysoneliminados.Sernregistradossimsarribasehaconfigurado
#lavariableLOGGING.
#
if["$LOGGING"]
then
#RegistralospaquetesdeTCPdescartados
$IPCHAINSAinputptcpljreject
#RegistralospaquetesdeUDPdescartados
$IPCHAINSAinputpudpljreject
#RegistralospaquetesdeICMPdescartados
$IPCHAINSAinputpicmpljreject
fi
#
#fin.

En el ejemplo con iptables, se ha utilizado el conjunto de reglas FORWARD por


la diferencia de significado del conjunto de reglas INPUT en la implementacin de
netfilter. Esto tiene implicaciones; significa que ninguna de las reglas protege el
'host' mismo del cortafuegos. Para imitar con precisin el ejemplo con ipchains,
se replicara cada una de las reglas de la cadena INPUT. En aras de la claridad,
en su lugar se ha decidido eliminar todos los datagramas entrantes provenientes
desde el lado de fuera de la interfaz
#!/bin/bash
##########################################################################
#VERSINPARAIPTABLES
#Esteconfiguracinestpensadacomoejemplodeconfiguracinde
#uncortafuegossobreun'host'nicoquenohospedelmismoningn
#servicio
##########################################################################
#SECCINCONFIGURABLEPORELUSUARIO
#Elnombreylalocalizacindelautilidadiptables.
IPTABLES=iptables
#Rutadelejecutabledeiptables.
PATH="/sbin"
Elespaciodedireccionesdenuestraredinternayeldispositivo
#deredquelasoporta.
OURNET="172.29.16.0/24"
OURBCAST="172.29.16.255"
OURDEV="eth0"
#Lasdireccionesdefuerayeldispositivoderedquelasoporta.
ANYADDR="0/0"
ANYDEV="eth1"
#LosserviciosdeTCPquedeseamospermitirquepasenun""vaco
#significatodoslospuertos
#nota:separadosporespacios
TCPIN="smtp,www"
TCPOUT="smtp,www,ftp,ftpdata,irc"
#LosserviciosdeUDPquedeseamospermitirquepasenun""vaco
#significatodoslospuertos
#nota:separadosporespacios
UDPIN="domain"

201

LINUX

Mayo 2004

UDPOUT="domain"
#LosserviciosdeICMPquedeseamospermitirquepasenun""vaco
#significatodoslostipos
#referenciaparalosnmerosdelostipos:/usr/include/netinet/ip_icmp.h
#nota:separadosporespacios
ICMPIN="0,3,11"
ICMPOUT="8,3,11"
#Registro;descomentelasiguientelneaparahabilitarelregistro
#delosdatagramasrechazadosporelcortafuegos
#LOGGING=1
#FINDELASECCINCONFIGURABLEPORELUSUARIO
###########################################################################
#Borralasreglasdelacadenadeentrada
$IPTABLESFFORWARD
##Pordefecto,queremosdenegarelaccesoalosintentosdeentrada
$IPTABLESPFORWARDdeny
#Rechazatodoslosdatagramasdestinadosaestehostyrecibidos
#desdefuera.
$IPTABLESAINPUTi$ANYDEVjDROP
#SUPLANTACINDEIDENTIDAD
#Nosedeberaaceptarningndatagramaprovenientedefueraconuna
#direcccindeorigencoincidenteconunadelasnuestras,por
#esolasrechazamos.
$IPTABLESAFORWARDs$OURNETi$ANYDEVjDROP
#'SMURF'
#NosepermitendifusionesdirigidasdeICMPanuestraredparaevitar
#losataquesdelestilodenominado'Smurf'.
$IPTABLESAFORWARDmmultiportpicmpi$ANYDEVd$OURNETjDENY
#Deberamosaceptarfragmentos,estosedebeexplicitareniptables.
$IPTABLESAFORWARDfjACCEPT
#TCP
#AceptaremostodoslosdatagramasdeTCPquepertenezcanauna
#conexinyaexistente(i.e.cuyobitdeACKvalga1)
#enelcasodelospuertosdeTCPqueestamospermitiendo.
#Estodeberacapturarmsdel95%detodoslospaquetesvlidosdeTCP.
IPTABLESAFORWARDmmultiportptcpd$OURNETdports$TCPIN/
!tcpflagsSYN,ACKACKjACCEPT
$IPTABLESAFORWARDmmultiportptcps$OURNETsports$TCPIN/
!tcpflagsSYN,ACKACKjACCEPT
#TCPCONEXIONESENTRANTES
#Aceptaremosnicamentelassolicitudesdeconexindesde
#fueraenlospuertosdeTCPpermitidos.
$IPTABLESAFORWARDmmultiportptcpi$ANYDEVd$OURNET$TCPIN/
synjACCEPT
##TCPCONEXIONESSALIENTES
#AceptaremostodaslasconexionessalientesdeTCPhacialospuertos
#deTCPpermitidos
$IPTABLESAFORWARDmmultiportptcpi$OURDEVd$ANYADDR/
dports$TCPOUTsynjACCEPT
#UDPENTRADA
##AceptaremoslaentradayvueltadelosdatagramasdeUDPporpuertos
#permitidos.
$IPTABLESAFORWARDmmultiportpudpi$ANYDEVd$OURNET/
dports$UDPINjACCEPT
$IPTABLESAFORWARDmmultiportpudpi$ANYDEVs$OURNET/
sports$UDPINjACCEPT
#UDPSALIDA
#SeaceptarnlasalidadelosdatagramasdeUDPhacialospuertos
permitidosysuvuelta.
$IPTABLESAFORWARDmmultiportpudpi$OURDEVd$ANYADDR/
dports$UDPOUTjACCEPT
$IPTABLESAFORWARDmmultiportpudpi$OURDEVs$ANYADDR/

202

LINUX

Mayo 2004

sports$UDPOUTjACCEPT
#ICMPENTRADA
#AceptaremoslaentradadelosdatagramasdeICMPdelostipospermitidos
$IPTABLESAFORWARDmmultiportpicmpi$ANYDEVd$OURNET/
dports$ICMPINjACCEPT
#ICMPSALIDA
#AceptaremoslasalidadelosdatagramasdeICMPdelostipospermitidos.
$IPTABLESAFORWARDmmultiportpicmpi$OURDEVd$ANYADDR/
dports$ICMPOUTjACCEPT
#CASOPORDEFECTOyREGISTRO
#Todoslosrestantesdatagramascaendentrodelareglapordefecto
#ysoneliminados.Sernregistradossimsarribasehaconfigurado
#lavariableLOGGING.
#
if["$LOGGING"]
then
#RegistralospaquetesdeTCPdescartados
$IPTABLESAFORWARDmtcpptcpjLOG
#RegistralospaquetesdeUDPdescartados
$IPTABLESAFORWARDmudppudpjLOG
#RegistralospaquetesdeICMPdescartados
$IPTABLESAFORWARDmudppicmpjLOG
fi
#
#fin.

En muchas situaciones simples, para utilizar el ejemplo todo lo que necesitar


ser

editar

la

seccin

superior

del

fichero

denominado

SECCIN

CONFIGURABLE POR EL USUARIO para especificar qu protocolos y tipos de


datagramas desea que se les permita su entrada y su salida. Para el caso de
configuraciones ms complejas, se necesitar tambin editar la seccin inferior.
Recuerde que el ejemplo es simple, por tanto examnelo cuidadosamente para
asegurarse de que hace lo que usted desea cuando lo implemente.
CONCLUSIONES DEL CAPTULO
Si hemos terminado de estudir y de aplicar en su mayoria todas las opciones de
configuracin dentro de este captulo entonces podemos decir que nuestra red se
encuentra en un estado de comunicacin optima con las demas mquinas de la
red y con un sistema de seguridad que en general le permite funcionar de manera
eficiente. No decimos que la confuguracin de este captulo sea toda la existente
y no negamos que en ocasiones tenga problemas para funcionar, hemos tratado
de detallar de manera general todas las caractersticas importantes de cada
funcin y por lo tanto estamos seguros que con los temas anteriores podemos
continuar con la configuracin de servicios para darle a nuestra red de ejemplo un
uso prctico en la vida diaria como lo veremos en los dos captulos siguientes.
203

LINUX

Mayo 2004

Captulo 4
Configuracin de Servicios
En este capitulo veremos cuestiones importantes sobre la configuracin de
servicios dentro de una red como son: aplicaciones de red mediante el
superservidor inetd, el sistema de informacin de red (NIS),y el sistema de
ficheros de red (NFS). Ademas encontraremos informacin sobre como compartir
sistemas Linux con Novell Netware y Windows, esto con la finalidad de compartir
servicios como internet o impresoras y por ltimo revisaremos una pequea
introduccin a la administracin de Taylor UUCP y su implementacin para con
nuestra red.
4.1. Caractersticas Importantes de Redes
Esta seccin cubre la configuracin de unas sencillas aplicaciones de red,
incluyendo el servido rinetd y los programas de la familia rlogin. Tambin
trataremos brevemente el interfaz de Llamada a Procedimiento Remoto (Remote
Procedure Call), sobre el cul servicios como Network File System (NFS) y
Network Information System (NIS) se basan. Las configuraciones de NFS y NIS,
sin embargo, som ms complejas y estn descritas en otras secciones de este
captulo, as como lo estn tanto el correo electrnico y las noticias de red en el
captulo 5.
4.1.1. El Super Servidor inetd
Los programas que proporcionan servicios de aplicacin a travs de la red se
llaman demonio. Un demonio es un programa que abre un puerto, comnmente
un puerto de algn servicio bien conocido, y espera conexiones entrantes en l. Si
ocurre una, el demonio crea un proceso hijo que acepta la conexin, mientras que
el proceso padre contina escuchando ms peticiones. Este mecanismo funciona
bien, pero tiene unas pocas desventajas; al menos una instancia de cada posible
servicio que se quiera proporcionar, debe estar activa en memoria a todas horas.
Adems, la rutina software que hacen la escucha y la gestin del puerto tiene que
ser replicada en cada uno de los demonios de red.
Para superar estas ineficiencias, muchas instalaciones Unix ejecutan un demonio
de red especial, el cual debe ser considerado como un super servidor. Este
204

LINUX

Mayo 2004

demonio crea sockets en nombre de cada uno de los servicios y escucha en todos
ellos simultneamente. Cuando una conexin entrante es recibida en cualquiera
de esos sockets, el super servidor acepta la conexin y replica el servicio
especificado para ese puerto, pasando el socket a gestionarse a travs del
proceso hijo. El servidor entonces, vuelve a la escucha. startup El super servidor
ms comn se llama inetd, el Demonio de Internet. Se inicia en tiempo de
arranque del sistema y toma la lista de servicios que ha de gestionar de un fichero
de inicializacin llamado /etc/inetd.conf. Adems de estos servidores, hay un
nmero de servicios triviales realizados por inetd llamados servicios internos. Se
incluyen chargen, el cul simplemente genera una cadena de caracteres, y
daytime, el cul devuelve la idea del sistema de la hora del da.
Un ejemplo del archivo inetd.conf se expone en Ejemplo 4-1. El servicio finger
est comentado as que no est disponible. Esto se hace a menudo por razones
de seguridad, porque puede ser usado por atacantes para obtener nombres y
otros detalles de los usuarios de su sistema.
Ejemplo 4-1. Un ejemplo del archivo /etc/inetd.conf
#
#inetdservices
ftpstreamtcpnowaitroot/usr/sbin/ftpdin.ftpdl
telnetstreamtcpnowaitroot/usr/sbin/telnetdin.telnetdb/etc/issue
#fingerstreamtcpnowaitbin/usr/sbin/fingerdin.fingerd
#tftpdgramudpwaitnobody/usr/sbin/tftpdin.tftpd
#tftpdgramudpwaitnobody/usr/sbin/tftpdin.tftpd/boot/diskless
#loginstreamtcpnowaitroot/usr/sbin/rlogindin.rlogind
#shellstreamtcpnowaitroot/usr/sbin/rshdin.rshd
#execstreamtcpnowaitroot/usr/sbin/rexecdin.rexecd
#
#inetdinternalservices
#
daytimestreamtcpnowaitrootinternal
daytimedgramudpnowaitrootinternal
timestreamtcpnowaitrootinternal
timedgramudpnowaitrootinternal
echostreamtcpnowaitrootinternal
echodgramudpnowaitrootinternal
discardstreamtcpnowaitrootinternal
discarddgramudpnowaitrootinternal
chargenstreamtcpnowaitrootinternal
chargendgramudpnowaitrootinternal

El demonio tftp se muestra comentado tambin. tftp implementa el Trivial File


Transfer Protocol (TFTP), el cual permite transferir cualquier archivo con permisos
205

LINUX

Mayo 2004

de lectura globales desde su sistema sin verificacin de contrasea. Esto es


especialmente perjudicial para el archivo /etc/passwd, e incluso ms cuando no
usan claves shadow.
TFTP se usa normalmente por clientes sin disco duro y por Terminales X para
descargar su cdigo desde un servidor de arranque. Si necesita ejecutar tftpd por
esta razn, asegrese de limitar su alcance a aquellos directorios desde los
cules los clientes obtendrn los archivos; deber aadir esos nombres de
directorio a la lnea de rdenes de tftpd. Esto se muestra en la segunda lnea de
tftp en el ejemplo.
4.1.2. La Facilidad de Control de Acceso tcpd
Debido a que abrir un computador al acceso de red implica muchos riesgos de
seguridad, las aplicaciones estn diseadas para protegerse contra algunos tipos
de ataques. Algunas caractersticas de seguridad, sin embargo, pueden tener
fallos, o no distinguen entre hosts seguros cuyas peticiones de un servicio
particular debern ser aceptadas y hosts inseguros cuyas peticiones debern ser
rechazadas.
Los administradores de red deberan querer limitar el acceso de estos servicios a
hosts de confianza nicamente, lo que es imposible con la configuracin usual,
por la que inetd ofrece este servicio o a todos los clientes o a ninguno.
Una herramienta til para gestionar el acceso de hosts especficos es tcpd, a
menudo llamado el demonio encapsulador. Para los servicios TCP quiera
monitorizar o proteger, se invoca en vez del programa servidor. tcpd verifica si el
host remoto tiene permitido usar ese servicio, y slo si esto tiene xito ejecutar el
programa servidor real. tcpd tambin deja registradas las peticiones en el
demonio syslog . Ntese que no funciona para servicios basados en UDP.
Por ejemplo, para encapsular el demonio finger, debe cambiar la correspondiente
lnea en inetd.conf de esta forma:
#demoniofingerdesencapsulado
fingerstreamtcpnowaitbin/usr/sbin/fingerdin.fingerd

a esta:
#demoniofingerencapsulado
fingerstreamtcpnowaitroot/usr/sbin/tcpdin.fingerd

206

LINUX

Mayo 2004

Sin aadir ningn control de acceso, al cliente le parecer como la configuracin


usual de finger, excepto que todas las peticiones son registradas en la facilidad
auth de syslog.
Dos archivos llamados /etc/hosts.allow y /etc/hosts.deny implementan el control
de acceso. Contienen entradas que permiten y deniegan acceso a ciertos
servicios y hosts. Cuando tcpd gestiona una peticin para un servicio como
finger desde un host cliente llamado biff.foobar.com, se busca en hosts.allow y
hosts.deny (en este orden) una entrada que coincida tanto con el servicio como
con el host cliente. Si se encuentra la entrada correspondiente en hosts.allow, se
autoriza el acceso y tcpd no consulta el fichero hosts.deny. Si no se encuentra
una coincidencia en el fichero hosts.allow, pero se encuentra en el hosts.deny, la
peticin es rechazada cerrando la conexin. La peticin es aceptada si no hay
correspondencias en ninguno de los archivos. Las entradas en los archivos de
acceso tienen un aspecto como este:
lista_de_servicios:lista_de_hosts [:rdenes_de_shell]

De los campos anteriores sus caractersticas se describen en el apndice.


4.1.3. Los Archivos de Servicios Y Protocolos
Los nmeros de puerto en los que ciertos servicios estndar se ofrecen se definen
en el RFC Assigned Numbers. Para permitir a los programas servidores y clientes
convertir nombres de servicio a estos nmeros, al menos parte del listado se
mantiene en cada host; esto se almacena en un archivo llamado /etc/services.
Una entrada se crea del siguiente modo:
servicio puerto/protocolo [alias]

Aqu, servicio especifica el nombre de servicio, puerto define el puerto en el que el


servicio se ofrece y protocolo define qu protocolo de transporte se usa.
Comnmente, el ltimo campo es o udp o tcp. Es posible que un servicio sea
ofrecido para ms de un protocolo, as como ofrecer diferentes servicios en el
mismo puerto mientras que los protocolos son diferentes. El campo alias le
permite especificar nombres alternativos para el mismo servicio.

207

LINUX

Mayo 2004

Normalmente, usted no tiene que cambiar el archivo de servicios que viene junto
con el software de red de su sistema Linux. Sin embargo, le damos un pequeo
extracto de ese archivo en Ejemplo 4-2.
Ejemplo 4-2. Un archivo /etc/services de ejemplo
#Elarchivodeservicios:
#
#serviciosbienconocidos
echo7/tcp#Eco
echo7/udp#
discard9/tcpsinknull#Descartar
discard9/udpsinknull#
daytime13/tcp#Hora
daytime13/udp#
chargen19/tcpttytstsource#Generadordecaracteres
chargen19/udpttytstsource#
ftpdata20/tcp#ProtocoloFTP(Datos)
ftp21/tcp#ProtocoloFTP(Control)
telnet23/tcp#ProtocolodeTerminalesVirtuales
smtp25/tcp#ProtocolodeCorreoSMTP
nntp119/tcpreadnews#ProtocolodeNoticiasNNTP
#
#UNIXservices
exec512/tcp#BSDrexecd
biff512/udpcomsat#notificacindecorreo
login513/tcp#registroremoto(remotelogin)
who513/udpwhod#whoyuptimeremotos
shell514/tcpcmd#rdenremota,sinusodecontrasea
syslog514/udp#sistemaremotoderegistrosdelsistema
printer515/tcpspooler#colasdeimpresinremotas
route520/udprouterrouted#protocoodeinformacindeencaminamiento

Fjese que el servicio echo se ofrece en el puerto 7 para TCP y UDP, y que el
puerto 512 se usa para 2 servicios diferentes: ejecucin remota (rexEC) usando
TCP, y el demonio COMSAT, el cual notifica a los usuarios que tienen correo
nuevo, sobre UDP.
Como el archivo de servicios, la biblioteca de red necesita una manera de traducir
nombres de protocolo. Esto se hace mirando el nombre en el archivo
/etc/protocols. ste contiene una entrada por lnea, cada una conteniendo el
nombre del protocolo y el nmero asociado. Tener que tocar este archivo es
incluso ms inverosmil que hacerlo con /etc/services. Un ejemplo del archivo se
proporciona en Ejemplo 4-3.
Ejemplo 4-3. Un archivo /etc/protocols de ejemplo
#
#ProtocolosdeInternet(IP)

208

LINUX

Mayo 2004

#
ip0IP#protocolodeinternet,nmerodepseudoprotocolo
icmp1ICMP#protocoloICMP
igmp2IGMP#ProtocoloIGMP
tcp6TCP#Protocolodecontroldetransmisin(TCP)
udp17UDP#ProtocoloUDP
raw255RAW#InterfazRAWIP

4.1.4. Llamada a Procedimiento Remoto


El mecanismo general para las aplicaciones cliente-servidor se proporciona por el
paquete Remote Procedure Call (RPC). RPC fue desarrollado por Sun
Microsystems y es una coleccin de herramientas y funciones de biblioteca.
Aplicaciones importantes construidas sobre RPC son NIS, Sistema de Informacin
de Red, y NFS, Sistema de Ficheros de Red.
Un servidor RPC consiste en una coleccin de procedimientos que un cliente
puede solicitar por el envo de una peticin RPC al servidor junto con los
parmetros del procedimiento. El servidor invocar el procedimiento indicado en
nombre del cliente, entregando el valor de retorno, si hay alguno. Para ser
independiente de la mquina, todos los datos intercambiados entre el cliente y el
servidor se convierten al formato External Data Representation (XDR) por el
emisor, y son reconvertidos a la representacin local por el receptor. RPC confa
en sockets estandard UDP y TCP para transportar los datos en formato XDR
hacia el host remoto.
Un servidor RPC ofrece una o ms colecciones de procedimientos; cada conjunto
se llama un programa y es idenficado de forma nica por un nmero de programa.
Una lista que relaciona nombres de servicio con nmeros de programa se
mantiene usualmente en /etc/rpc, un extracto del cual se ve en Ejemplo 4-4.
Ejemplo 4-4. Una muestra de archivo /etc/rpc
#
#/etc/rpcservicinmiscalneosbasadosenRPC
#
portmapper100000portmapsunrpc
rstatd100001rstatrstat_svcrupperfmeter
rusersd100002rusers
nfs100003nfsprog
ypserv100004ypprog
mountd100005mountshowmount
ypbind100007
walld100008rwallshutdown
yppasswdd100009yppasswd

209

LINUX

Mayo 2004

bootparam100026
ypupdated100028ypupdate

En redes TCP/IP , los autores de RPC se enfrentan al problema del mapeo de


nmeros de programa con servicios genricos de red. Disearon cada servidor
para proveer ambos puertos TCP y UDP para cada programa y cada versin.
Generalmente, las aplicaciones RPC usan UDP cuando envan datos, y vuelven a
TCP slo cuando los datos a transferir no caben en un solo datagrama UDP.
Por supuesto, los programas cliente necesitan averiguar a qu puerto se refiere
un nmero de programa. Usar un fichero de configuracin para esto podra ser
demasiado inflexible; debido a que las aplicaciones RPC no usan puertos
reservados, no hay garanta de que un puerto originalmente usado por nuestra
aplicacin de base de datos, no haya sido tomado por cualquier otro proceso. Por
lo tanto, las aplicaciones RPC toman cualquier puerto que puedan obtener y lo
registran con un programa especial llamado el demonio portmapper. El mapeador
de puertos acta como un intermediario para todos los servidores RPC
ejecutndose en su mquina. Un cliente que desea contactar con un servicio con
un nmero de programa dado primero pregunta al mapeador de puertos en el host
del servidor, el cul devuelve el nmero de puerto TCP y UDP en donde el
servicio puede ser alcanzado.
En Linux, el mapeador de puertos se llama /sbin/portmap, o a veces
/usr/sbin/rpc.portmap.
Una vez que se cerciora de que se inicia desde sus guiones de inicio de red, el
mapeador de puertos no requiere ninguna configuracin.
4.1.5. Configurando el Registro y Ejecucin Remotos
Es a menudo muy til ejecutar una orden en un host remoto y que la entrada o la
salida de esa orden pueda leerse o escribirse a travs de una conexin de red.
Los programas tradicionales para ejecutar rdenes en hosts remotos son rlogin,
rsh y rcp. El paquete ssh proporciona unos reemplazos llamados slogin, ssh, y
scp.
Cada una de estas rdenes genera un intrprete de rdenes en el host remoto y
permite al usuario ejecutar rdenes. Por supuesto, el cliente necesita tener una
cuenta en el host remoto donde la orden va a ser ejecutada. As, todas estas
210

LINUX

Mayo 2004

rdenes usan un proceso de autentificacin. Las rdenes r usan un simple


intercambio de nombre de usuario y contrasea entre los hosts sin encriptacin,
de este modo cualquiera que est escuchando puede fcilmente interceptar las
contraseas. El conjunto de rdenes ssh proporcionan un nivel de seguridad ms
alto: usan una tcnica llamada Criptografa de Clave Pblica, la cual
proporciona autentificacin y encriptacin entre los hosts para asegurar que tanto
contraseas como datos de la sesin sean interceptados por otros hosts.
Es posible relajar la comprobacin de la autentificacin para ciertos usuarios
todava ms. Por ejemplo, si usted tiene que registrarse en otras mquinas de su
red frecuentemente, usted puede querer ser admitido sin tener que teclear su
contrasea cada vez. Esto era posible con las rdenes r, pero las rdenes ssh le
permiten hacer esto algo ms sencillo. Esto no es una gran idea porque significa
que si una cuenta de una mquina es violada, se puede ganar el acceso a otras
cuentas que el usuario ha configurado para registrarse sin password, pero esto es
muy conveniente y la gente quiere usarlo. Hablemos acerca de quitar las rdenes
r y usar ssh para trabajar en su lugar.
Desactivando las rdenes r
Comencemos retirando las rdenes r si estn instaladas. La forma ms fcil de
desactivar las rdenes r antiguas es comentando (o borrando) sus entradas en el
archivo /etc/inetd.conf. Las entradas relevantes se parecen a algo como esto:
#Shell,login,execytalkcomoprotocolosBSD.
shellstreamtcpnowaitroot/usr/sbin/tcpd/usr/sbin/in.rshd
loginstreamtcpnowaitroot/usr/sbin/tcpd/usr/sbin/in.rlogind
execstreamtcpnowaitroot/usr/sbin/tcpd/usr/sbin/in.rexecd

Puede comentarlas anteponiendo el carcter # al principio de cada lnea, o


borrando las lneas completamente. Recuerde, necesitar reiniciar el demonio
inetd para que este cambio tenga efecto. Idealmente, debera retirar los mismos
ejecutables tambin.
Instalando y Configurando ssh
OpenSSH es una versin libre del conjunto de programas ssh. Hay un cliente ssh
que usted necesita configurar y ejecutar en el host local y un demonio ssh que
debe ejecutarse en el host remoto.
211

LINUX

Mayo 2004

I.- El Demonio ssh


El demonio sshd es el programa que escucha conexiones de red desde clientes
ssh, gestiona la autentificacin, y ejecuta las rdenes requeridas por el cliente.
Hay un archivo de configuracin principal llamado /etc/ssh/sshd_config y un
archivo especial que contiene una clave usada por los procesos de autentificacin
y encriptacin para representar la parte del host. Cada host y cada cliente tienen
su propia clave.
Una utilidad llamada ssh-keygen se proporciona para generar un clave aleatoria.
Esto comnmente se usa una vez en la instalacin para generar la clave del host,
la

cual

el

administrador

de

sistema

guarda

en

un

archivo

llamado

/etc/ssh/ssh_host_key. Las claves pueden ser de cualquier longitud de 512 bits o


mayores. Por omisin, ssh-keygen genera claves de 1024 bits de longitud, y la
mayora de la gente usa lo predeterminado. Para generar una clave aleatoria,
debe invocar la orden ssh-keygen as:
#ssh-keygen -f /etc/ssh/ssh_host_key

Se le pedir que introduzca una frase de paso. Sin embargo, las claves host no
deben usar frase de paso, en este caso pulse la tecla return para dejarla en
blanco. La salida del programa ser algo as:
GeneratingRSAkeys:......oooooO...............................oooooO
Keygenerationcomplete.
Enterpassphrase(emptyfornopassphrase):
Entersamepassphraseagain:
Youridentificationhasbeensavedin/etc/ssh/ssh_host_key
Yourpublickeyhasbeensavedin/etc/ssh/ssh_host_key.pub
Thekeyfingerprintis:
10243a:14:78:8e:5a:a3:6b:bc:b0:69:10:23:b7:d8:56:82root@moria

Puede encontrar al final que los dos archivos han sido creados. El primero se
llama la clave privada, el cual debe mantenerse en secreto y estar en
/etc/ssh/ssh_host_key. El segundo se llama la clave pblica y es el que puede
compartir; estar en /etc/ssh/ssh_host_key.pub.
Armados con las claves para la comunicacin ssh, necesita crear un archivo de
configuracin. las rdenes ssh son muy potentes y el archivo de configuracin
puede contener muchas opciones. Expondremos un ejemplo sencillo para que
empiece; debe dirigirse a la documentacin de ssh para activar otras
212

LINUX

Mayo 2004

caractersticas. El siguiente cdigo muestra un fichero de configuracin seguro y


mnimo de sshd .
#/etc/ssh/sshd_config
#
#LasdireccionesIPqueescuchanconexionesentrantes.0.0.0.0significatodas
las
#direccioneslocales
ListenAddress0.0.0.0
#ElpuertoTCPqueescuchaconexionesentrantes.Poromisinel22.
Port22
#Elnombredelficheroclavedelhost.
HostKey/etc/ssh/ssh_host_key
#Lalongituddelaclaveenbits.
ServerKeyBits1024
#Debemospermitirregistros(login)delrootporssh?
PermitRootLoginno
#Debeeldemoniosshverificarqueeldirectorioinicial(home)delusuarioy
lospermisos
#seansegurosantesdepermitirelregistro(login)?
StrictModesyes
# Debemos permitir el mtodo antiguo de autentificacin ~/.rhosts y
/etc/hosts.equiv?
RhostsAuthenticationno
#DebemospermitirautenticacinpuraRSA?
RSAAuthenticationyes
#Debemospermitirautenticacinporcontrasea?
PasswordAuthenticationyes
#Debemospermitir/etc/hosts.equivcombinadoconautentificacinhostporRSA?
RhostsRSAAuthenticationno
#Ignorarlosficheros~/.rhosts?
IgnoreRhostsyes
#Permitimosregistros(logins)acuentasconcontraseasvacas?
PermitEmptyPasswordsno

Es importante estar seguro de que los permisos de los archivos de configuracin


son correctos para asegurar que se mantiene el sistema de seguridad. Use las
siguientes rdenes:
#chown -R root:root /etc/ssh
#chmod 755 /etc/ssh
#chmod 600 /etc/ssh/ssh_host_key
#chmod 644 /etc/ssh/ssh_host_key.pub
#chmod 644 /etc/ssh/sshd_config

La etapa final de la administracin del demonio sshd es ejecutarlo. Normalmente


necesitar crear un archivo rc para ello o aadirlo a uno existente, de este modo
se ejecutar automticamente en el arranque. El demonio corre solo y no necesita
ninguna entrada en el archivo /etc/inetd.conf. El demonio debe correr como
usuario root . La sintaxis es simple: /usr/sbin/sshd
El demonio sshd automticamente se ejecutar en segundo plano. Ahora esta
listo para aceptar conexiones ssh.
213

LINUX

Mayo 2004

II.- El cliente ssh


Existen variedad de programas clientes ssh: slogin, scp y ssh. Cada uno lee el
mismo archivo de configuracin, normalmente llamado /etc/ssh/ssh_config. Cada
uno de ellos tambin lee archivos de configuracin desde el directorio .ssh en el
directorio inicial (home) del usuario que lo est ejecutando. El ms importante de
estos archivos es el .ssh/config, el cual puede contener opciones que sustituirn a
las especificadas en el fichero /etc/ssh/ssh_config, el archivo .ssh/identity, el cual
contiene la propia clave privada del usuario, y el correspondiente archivo
.ssh/identity.pub, conteniendo la clave pblica propia del usuario. Otros archivos
importantes son .ssh/known_hosts y .ssh/authorized_keys. Primero, vamos a
crear el archivo de configuracin global y el archivo de claves de usuario.
El archivo /etc/ssh/ssh_config es muy similar al de configuracin del servidor. Otra
vez, tenemos muchas caractersticas que usted puede configurar, pero una
configuracin minima puede ser como la expuesta en Ejemplo 4-5. Puede aadir
secciones que coincidan con hosts especficos o grupos de hosts. El parmetro a
la declaracin Host puede ser cualquiera de los nombres completos de un host o
una especificacin de carcter comodn, como hemos usado en nuestro ejemplo,
para que coincidan todos los hosts. Podemos crear una entrada que usada, por
ejemplo, Host *.vbrew.com haga coincidir cualquier host en el dominio vbrew.com.
Ejemplo 4-5. Ejemplo De archivo de Configuracin del Cliente ssh
#/etc/ssh/ssh_config
#Opcionespredeterminadsausarcuandoseconecteaunhostremoto
Host*
#Comprimirlosdatosdesesin?
Compressionyes
#..usandoquniveldecompresin?(1rpida/escasa,9lenta/mucha)
CompressionLevel6
#Usarrshsilaconexinsegurafalla?
FallBackToRshno
#Debemosmandarmensajesparamantenerlaconexin(keepalive)?Utilsiseusa
enmascaramiento
KeepAliveyes
#IntentarautentificacinRSA?
RSAAuthenticationyes
#IntentarautentificacinRSAencombinacinconautentificacin.rhosts?
RhostsRSAAuthenticationyes

Mencionamos en la seccin de configuracin de servidor que cada host y cada


usario tiene una clave. La clave de usuario se guarda en su archivo
214

LINUX

Mayo 2004

~/.ssh/indentity . Para generar la clave, se usa la misma orden ssh-keygen que


usamos para generar la clave de host, excepto que esta vez no necesita
especificar el nombre del archivo donde usted guarda la clave. ssh-keygen tiene
predeterminada la localizacin correcta, pero le pregunta que introduzca un
nombre de archivo en el caso que usted no quiera ste. Es til algunas veces
para tener archivos de identidad diferentes, as que ssh permite esto. Como
antes, ssh-keygen le preguntar que introduzca una frase de paso. Las frases de
paso aaden otro nivel de seguridad y son una buena idea. Su frase de paso no
ser impresa en pantalla cuando usted la teclee.
Aviso
No hay forma de recuperar una frase de paso si la olvida. Cercirese de que ser
algo que usted recordar, pero como toda contrasea, elija algo que no sea obvio,
como nombres propios o su nombre.
Debera preguntar a cada uno de sus usuarios si han ejecutado la orden sshkeygen para asegurarse de que sus archivos de claves se han generado
correctamente. El ssh-keygen crear sus directorios ~/.ssh/ para ellos con los
permisos apropiados y crear su clave privada y pblica en .ssh/identity y
.ssh/identity.pub, respectivamente. Un ejemplo de sesin se muestra aqu:
$ssh-keygen
GeneratingRSAkeys:.......oooooO..............................
Keygenerationcomplete.
Enterfileinwhichtosavethekey(/home/maggie/.ssh/identity):
Enterpassphrase(emptyfornopassphrase):
Entersamepassphraseagain:
Youridentificationhasbeensavedin/home/maggie/.ssh/identity.
Yourpublickeyhasbeensavedin/home/maggie/.ssh/identity.pub.
Thekeyfingerprintis:
102485:49:53:f4:8a:d6:d9:05:d0:1f:23:c4:d7:2a:11:67maggie@moria
$

Ahora ssh esta listo para ejecutarse.


III.- Utilizacin de ssh
Ahora tenemos la orden ssh y sus programas asociados instalados y listos para
ejecutarse. Veamos rpidamente como se ejecutan. Primero, probaremos un
registro (login) remoto a un host. Podemos usar el programa slogin de la misma
forma que usamos el programa rlogin en nuestro ejemplo anterior en elste
215

LINUX

Mayo 2004

trabajo. La primera vez que esperamos conectarnos a un host, el cliente ssh


recuperar la clave publica del host y le preguntar si confirma esta identidad
instndole con una versin reducida de la clave pblica llamada huella dactilar..
El administrador del host remoto le debera haber proporcionado previamente
estas huellas

dactilares,

las

cules usted

debe

aadir a

su

archivo

.ssh/known_hosts . Si el administrador remoto no le ha dado las claves


apropiadas, usted puede conectarse al host remoto, pero ssh le advertir que no
tiene una clave y le pedir que acepte una ofrecida por el host remoto. Asumiendo
que usted est seguro que nadie le engaa con DNS spoofing y que usted de
hecho est hablando con el host correcto, conteste yes. La clave se guarda
automticamente en su .ssh/known_hosts y no se le preguntar otra vez. Si, en
un futuro intento de conexin, la clave pblica recuperada desde este host no
coincide con la que hay guardada, se le advertir, porque esto representa un
agujero de seguridad potencial.
La primera vez que conectamos con un host remoto veremos algo como esto:
$slogin vchianti.vbrew.com
Theauthenticityofhost'vchianti.vbrew.com'can'tbeestablished.
Keyfingerprintis10247b:d4:a8:28:c5:19:52:53:3a:fe:8d:95:dd:14:93:f5.
Areyousureyouwanttocontinueconnecting(yes/no)?yes
Warning:Permanentlyadded'vchianti.vbrew.com,172.16.2.3'tothelistof/
knownhosts.
maggie@vchianti.vbrew.com'spassword:
Lastlogin:TueFeb123:28:582000fromvstout.vbrew.com

Se le pedir una clave, debe contestar con la clave de la cuenta remota, no con la
local. Esta clave no tendr eco por pantalla cuando la introduzca.
Sin ningn argumento especial, slogin intentar utilizar el mismo identificador de
usuario que en la mquina local. Puede cambiar esto usando el argumento -l ,
dando un nombre de registro alternativo en el host remoto.
Podemos copiar archivos hacia y desde un host remoto usando el programa scp.
Su sintaxis es similar al convencional cp con la excepcin que debe especificar un
nombre de host antes del archivo, significando que el camino del archivo est en
el host especificado. El siguiente ejemplo ilustra la sintaxis de scp copiando un
archivo

local

llamado

/tmp/fred

al

/home/maggie/

del

host

remoto

chianti.vbrew.com:
216

LINUX

Mayo 2004

$scp /tmp/fred vchianti.vbrew.com:/home/maggie/


maggie@vchianti.vbrew.com'spassword:
fred100%|*****************************|5016500:01ETA

De nuevo, se le pedir una clave. La orden scp muestra el progreso de la copia


por omisin. Puede copiar un archivo desde un host remoto con la misma
facilidad; simplemente especificando su nombre de host y ruta como origen y la
ruta local como destino. Tambin se puede copiar un archivo desde un host
remoto a otro host remoto, pero habitualmente no necesitar hacer eso, porque
todos los datos viajan a travs de su host.
Puede ejecutar rdenes en host remotos usando la orden ssh. De nuevo, su
sintaxis es muy simple. Tengamos nuestro usuario maggie recuperando el
directorio raz del host remoto vchianti.vbrew.com. Ella har algo como esto:
$ssh vchianti.vbrew.com ls -CF /
maggie@vchianti.vbrew.com'spassword:
bin/console@dos/home/lost+found/pub@tmp/vmlinuz@
boot/dev/etc/initrd/mnt/root/usr/vmlinuz.old@
cdrom/disk/floppy/lib/proc/sbin/var/

Aqu tenemos un ejemplo de como puede utilizar esta caracterstica en


combinacin con la orden tar para copiar un directorio entero con subdirectorios y
ficheros desde un host remoto al host local:
$ssh vchianti.vbrew.com "tar cf - /etc/" | tar xvf maggie@vchianti.vbrew.com'spassword:
etc/GNUstep
etc/Muttrc
etc/Net
etc/X11
etc/adduser.conf

Hacemos notar que la orden se debe ejecutar con comillas para clarificar qu se
est pasando como un argumento a la orden ssh y qu debe usar el intrprete de
rdenes local. Esta orden ejecuta la orden tar en el host remoto para archivar el
directorio /etc/ y escribir en la salida estndar. Hemos entubado una instancia de
la orden tar ejecutando en nuestro host local en modo extraccin leyendo desde
la entrada estndar.
De nuevo, se pide una clave. Ahora puede ver por qu le animamos a configurar
ssh para que no se le pida las claves todo el tiempo. Vamos ahora a configurar
217

LINUX

Mayo 2004

nuestro cliente local ssh de modo que no nos pida la clave cuando conectemos al
host vchianti.vbrew.com. Mencionamos antes el archivo .ssh/authorized_keys;
aqu es donde se va a usar. El archivo .ssh/authorized_keys contiene las claves
pblicas

de

cada

cuenta

de

usuario

remota

que

queremos

registrar

automticamente. Puede establecer registros automticos copiando el contenido


del .ssh/identity.pub desde la cuenta

remota en nuestro archivo local

.ssh/authorized_keys.

los

Es

vital

que

permisos

de

archivo

de

.ssh/authorized_keys permitan slo que usted pueda leer y escribir; cualquiera


puede robar y usar las claves para registrarse en esas cuentas remotas. Para
asegurar que los permisos sean correctos, cambie .ssh/authorized_keys, como
sigue:
$chmod 600 ~/.ssh/authorized_keys

Las claves pblicas son una larga sencilla lnea de texto plano. Si usa copiar y
pegar para duplicar la clave en su fichero local, asegrese de borrar cualquier
carcter de final de lnea que se pueden haber introducido de esta manera. El
archivo .shh/uathorized_keys puede contener muchas de estas claves, cada una
en una lnea propia.
4.2. El Sistema de Informacin de Red (NIS)
Cuando se usa una red de rea local, la meta final suele ser proporcionar un
entorno que haga la red transparente a los usuarios. Un paso importante es
mantener los datos vitales, como la informacin de las cuentas de usuario,
sincronizados a lo largo de todas las mquinas. Esto proporciona a los usuarios la
libertad de moverse de mquina en mquina sin el inconveniente de tener que
recordar contraseas diferentes y copiar datos de una mquina a otra. Los datos
que estn almacenados centralmente no necesitan ser replicados mientras exista
un medio de acceder a ellos desde un nodo conectado a la red. Al almacenar
centralmente la informacin administrativa importante, se consigue asegurar la
consistencia de esos datos, aumentar la flexibilidad a los usuarios permitindoles
moverse de nodo a nodo de manera transparente, y hacerle la vida mucho ms

218

LINUX

Mayo 2004

fcil al administrador, al tener que mantener slo una copia individual de la


informacin.
Anteriormente hemos discutido un ejemplo importante de este concepto que se
utiliza en Internet el Sistema de Nombres de Dominio (DNS). DNS sirve un rango
limitado de informacin, siendo la ms importante la correspondencia entre el
nombre de nodo y la direccin IP. Para otros tipos de informacin, no existe un
servicio especializado as.
sta es la razn por la que Sun desarroll el Sistema de Informacin de Red
(NIS). NIS proporciona prestaciones de acceso a bases de datos genricas que
pueden utilizarse para distribur, por ejemplo, la informacin contenida en los
ficheros passwd y groups a todos los nodos de su red. Esto hace que la red
parezca un sistema individual, con las mismas cuentas en todos los nodos. De
manera similar, usted puede usar NIS para distribur la informacin de nombres de
nodo contenida en /etc/hosts a todas las mquinas de la red.
NIS est basado en RPC, y consta de un servidor, una biblioteca de la parte
cliente, y varias herramientas de administracin. Originalmente NIS se llamaba
Pginas Amarillas (Yellow Pages), o YP, que todava se utiliza para referirse a l.
Desafortunadamente, ese nombre es una marca registrada de British Telecom,
que exigi a Sun abandonar ese nombre. Al pasar el tiempo, algunos nombres se
aferran en la mente de la gente, y as YP permanece como prefijo en los nombres
de la mayora de laso rdenes relacionadas con NIS, como ypserv y ypbind.
4.2.1. Familiarizndose con NIS
NIS guarda la informacin de la base de datos en archivos llamados mapas, que
contienen pares clave-valor. Un ejemplo de par clave-valor es el identificativo de
un usuario (username) y la forma encriptada de su contrasea. Los mapas se
almacenan en un nodo central que corre el servidor NIS, desde el que los clientes
deben obtener la informacin mediante varias llamadas RPC. Con bastante
frecuencia, los mapas se almacenan en ficheros DBM.
Los mapas suelen generarse a partir de archivos de texto maestros como el
/etc/hosts o el /etc/passwd. Para algunos archivos se crean varios mapas, uno
para cada tipo de clave de bsqueda. Por ejemplo, usted puede buscar en el
archivo hosts tanto nombres de nodo como direcciones IP. As pues, de l se
219

LINUX

Mayo 2004

derivan dos mapas NIS, llamados hosts.byname y hosts.baddr. La Tabla 41


muestra una lista de mapas comunes y los archivos a partir de los que se
generan.

Tabla 41. Algunos Mapas NIS Estndar y sus Correspondientes Ficheros

Puede encontrar soporte para otros archivos y mapas en otros paquetes NIS.
Normalmente contienen informacin sobre aplicaciones que no se discuten en
este trabajo el mapa bootparams utilizado por el servidor bootparamd de Sun. Hay
mapas para los que la gente usa normalmente apodos, que son ms cortos y por
tanto ms fciles de escribir. Tenga en cuenta que estos apodos slo los
entienden ypcat e ypmatch, dos herramientas para comprobar su configuracin
NIS. Para obtener una lista completa de los apodos que entienden estas
herramientas, ejecute la siguiente orden:
$ypcat -x
Use"passwd"for"passwd.byname"
Use"group"for"group.byname"
Use"networks"for"networks.byaddr"
Use"hosts"for"hosts.byaddr"
Use"protocols"for"protocols.bynumber"
Use"services"for"services.byname"
Use"aliases"for"mail.aliases"
Use"ethers"for"ethers.byname"

..
El servidor NIS se llama tradicionalmente ypserv. Para una red mediana,
normalmente un solo servidor es suficiente; las redes grandes pueden elegir
ejecutar varios de estos servidores en mquinas diferentes y en segmentos de red
diferentes para reducir la carga en las mquinas servidor y en los enrutadores.
220

LINUX

Mayo 2004

Estos servidores se sincronizan haciendo a uno de ellos el servidor maestro, y a


los otros servidores esclavos. Los mapas se crean slo en el nodo del servidor
maestro. Desde l se distribuyen a todos los esclavos.
Los dominios NIS tienen una funcin puramente administrativa. En general son
transparentes a los usuarios, excepto al compartir contraseas entre todas las
mquinas del dominio. Por tanto, el nombre que se le da a un dominio NIS es
relevante slo para los administradores. Normalmente, cualquier nombre servir,
mientras sea distinto a cualquier otro dominio NIS de su red local. Por ejemplo, la
administradora de la Cervecera Virtual puede querer crear dos dominios NIS, uno
para la propia Cervecera, y otro para la Vinatera, a los que llamar cervecera y
vinatera respectivamente. Otro proceder comn es usar simplemente el dominio
DNS como dominio NIS.
Para establecer y mostrar el dominio NIS de su nodo, puede usar la orden
domainname. Cuando se invoca sin argumentos, imprime el dominio NIS actual;
para establecer el dominio, hace falta ser superusuario:
#domainname cervecera

Los dominios NIS determinan a qu servidor NIS consultar una aplicacin.


Queda un misterio por resolver: cmo averigua un cliente a qu servidor
conectarse? La solucin ms simple sera utilizar un archivo de configuracin que
diga el nombre del nodo que hace de servidor. Sin embargo, esta solucin es algo
inflexible porque no permite a los clientes utilizar diferentes servidores (del mismo
dominio, claro) dependiendo de su disponibilidad. Por tanto, las implementaciones
de NIS cuentan con un demonio especial llamado ypbind para detectar un
servidor NIS adecuado dentro del dominio NIS. Antes de realizar una consulta
NIS, una aplicacin averigua primero qu servidor usar mediante ypbind. ypbind
busca servidores haciendo un broadcast a la red IP local; se asume que el
primero en responder es el ms rpido, y es el utilizado en todas las consultas
NIS subsiguientes. Despus de que ha transcurrido un cierto intervalo de tiempo,
o si el servidor deja de estar disponible, ypbind busca de nuevo servidores
activos.
La ligadura dinmica es til slo cuando su red proporciona ms de un servidor
NIS. Adems, la ligadura dinmica introduce un problema de seguridad. ypbind
cree ciegamente en cualquiera que responda, sea un humilde servidor NIS o un
221

LINUX

Mayo 2004

intruso malicioso. No es necesario decir que esto es especialmente problemtico


si usted maneja sus bases de datos de contraseas a travs de NIS. Para
protegerse de esto, el programa ypbind de Linux le proporciona la opcin de
buscar un servidor NIS en la red local o configurar el nombre de nodo del servidor
NIS en un archivo de configuracin.
4.2.2. Ejecutando un Servidor NIS
Despus de tanta palabrera tcnica, es hora de poner las manos en la masa con
el verdadero trabajo de configuracin. En esta seccin cubriremos la
configuracin de un servidor NIS. Si ya hay un servidor NIS ejecutndose en su
red, no necesitar configurarlo por usted mismo; en ese caso, puede saltarse esta
seccin sin problema.
Tenga en cuenta que si slo quiere experimentar con el servidor, asegrese de
que no le asigna un nombre de dominio NIS que ya est en uso en su red. Esto
puede desbaratar todo el servicio de red y provocar infelicidad y enfado a mucha
gente.
Existen dos configuraciones posibles del servidor NIS: maestra y esclava. La
configuracin esclava es una mquina que proporciona una copia de seguridad,
por si el servidor maestro falla. Aqu slo cubriremos la configuracin de un
servidor maestro.
Actualmente existen dos servidores NIS disponibles para Linux: uno contenido en
el paquete yps de Tobias Reber, y otro en el paquete ypserv de Peter Eriksson.
No importa cul ejecute.
Despus de instalar el programa (ypserv) en /usr/sbin, debe crear el directorio
que contendr los ficheros de mapas que va a distribuir su servidor. Al configurar
un dominio NIS para el dominio cervecera, los mapas iran en /var/yp/cervecera.
El servidor determina si est sirviendo un dominio NIS particular comprobando si
existe el directorio de los mapas. Si quiere deshabilitar el servicio para algn
dominio NIS, asegrese de eliminar el directorio.
Normalmente los mapas se almacenan en ficheros DBM para agilizar las
bsquedas. Se crean a partir de los ficheros maestro utilizando un programa
llamado makedbm (del servidor de Tobias) o dbmload (del servidor de Peter).
222

LINUX

Mayo 2004

Transformar un archivo maestro en una forma que dbmload pueda entender


requiere normalmente de algo de magia awk o sed, que tiende a ser algo aburrido
de escribir y de recordar. Es por esto que el paquete ypserv de Peter Eriksson
contiene un Makefile (llamado ypMakefile) que se encarga por usted de la
conversin de la mayora de los ficheros maestros. Debe instalarlo como Makefile
en su directorio de mapas y editarlo para reflejar los mapas que quiere que el
servidor NIS comparta. Al principio del fichero encontrar el objetivo all que lista
los servicios que ofrece ypserv. Por defecto la lnea se parecer a esto:
all:ethershostsnetworksprotocolsrpcservicespasswdgroupnetid

Si no quiere producir, por ejemplo, los mapas ethers.byname y ethers.byaddr,


simplemente borre el prerrequisito ethers de esta regla. Para comprobar su
configuracin, puede empezar con slo uno o dos mapas, como los mapas
services.*.
Despus de editar el Makefile, estando en el directorio de mapas, teclee make.
Esto generar automticamente los mapas y los instalar. Debe asegurarse de
actualizar los mapas cada vez que cambie los archivos maestro, o de otra manera
los cambios permanecern invisibles a la red.
4.2.3. Seguridad en el Servidor NIS
NIS sola tener un defecto grave de seguridad: dejaba su archivo de contraseas
legible por prcticamente cualquier persona en toda Internet, lo que supona un
gran nmero de posibles intrusos. Si un intruso saba su (de usted) dominio NIS y
la direccin de su servidor, simplemente tena que enviar una consulta al mapa
passwd.byname y recibir al instante todas las contraseas encriptadas del
sistema. Con un programa rpido para crackear contraseas como el crack, y un
buen diccionario, averiguar unas cuantas contraseas de usuario no es problema.
De todo esto trata la opcin securenets. Esta opcin simplemente restringe el
acceso a su servidor NIS a ciertos nodos, basndose en su direccin IP o
nmeros de red. La ltima versin de ypserv implementa esta caracterstica de
dos maneras. La primera consta de un archivo de configuracin especial
llamado /etc/ypserv.securenets y la segunda utiliza convenientemente los archivos
/etc/hosts.allow y /etc/hosts.deny . As, para restringir el acceso a los nodos de
dentro de la Cervecera, su administrador de red aadira esta lnea al hosts.allow:
223

LINUX

Mayo 2004

ypserv:172.16.2.

Esto permitira a todos los nodos de la red 172.16.2.0 acceder al servidor NIS.
Para denegar el acceso al resto de nodos, la correspondiente lnea en el
hosts.deny sera:
ypserv:ALL

Las direcciones IP no son la nica manera de especificar nodos y redes en


hosts.allow y hosts.deny.
Para

configurar

la

/etc/ypserv.securenets,

seguridad
necesita

securenets
crear

el

utilizando

archivo

de

el

mtodo

configuracin,

/etc/ypserv.securenets. Este archivo de configuracin es simple en su estructura.


Cada lnea describe un nodo o red de nodos que tendrn permiso de acceso al
servidor. Cualquier direccin no descrita con una entrada en este archivo tendr
denegado el acceso. Una lnea que comience por # ser tratada como
comentario.

El

ejemplo

4-6

muestra

cmo

sera

un

sencillo

archivo

/etc/ypserv.securenets:
Ejemplo 4-6. archivo ypserv.securenets de Ejemplo
#permitirconexionesdesdeelnodolocalnecesario
host127.0.0.1
#lomismopara255.255.255.255127.0.0.1
#
#permitirconexionesdesdecualquiernododelareddelaCerveceraVirtual
255.255.255.0172.16.1.0
#

La primera entrada de cada lnea es la mscara de red a utilizar, siendo host una
palabra clave especial que significa mscara de red 255.255.255.255. La segunda
entrada de cada lnea es la direccin IP a la que aplicar la mscara de red.
Una tercera opcin es utilizar el mapeador de puertos (portmapper) seguro en
lugar de la opcin securenets de ypserv. El mapeador de puertos seguro
(portmap-5.0) utiliza tambin el esquema de hosts.allow, pero ofrece esto a todos
los servidores RPC, no slo a ypserv. Sin embargo, no se debe utilizar la opcin
securenets y el mapeador de puertos seguro al mismo tiempo, por la sobrecarga
que esto supondra.
224

LINUX

Mayo 2004

4.2.4. Configurando un Cliente NIS con la libc de Linux


Ahora describiremos y discutiremos la configuracin de un cliente NIS utilizando el
soporte de la biblioteca libc de Linux.
Su primer paso debe ser decirle al cliente NIS de la libc de GNU qu servidor usar
para el servicio NIS. Anteriormente mencionamos que el ypbind de Linux permite
configurar el servidor NIS a utilizar. El comportamiento predeterminado es
consultar al servidor de la red local. Si es probable que el nodo que est
configurando se vaya a mover de un dominio a otro, como un porttil, debera
dejar el archivo /etc/yp.conf vaco, y el nodo consultar en la red local qu
servidor NIS es el que procede. Una configuracin ms segura para la mayora de
nodos es especificar el nombre del servidor en el archivo de configuracin
/etc/yp.conf. Un archivo muy sencillo para un nodo de la red de la Vinatera sera
as:

#yp.confconfiguracindeYPparalabibliotecaGNUlibc.
#
ypservervbardolino

La sentencia ypserver le dice a su nodo que use el nodo especificado como


servidor NIS para el dominio local.
En este ejemplo hemos especificado vbardolino como servidor NIS. Por supuesto,
la direccin IP correspondiente a vbardolino debe especificarse en el archivo
hosts; alternativamente, puede usar la propia direccin IP con el argumento
server.
En la forma que se muestra en el ejemplo, la orden ypserver le dice a ypbind
que use el servidor nombrado sin tener en cuenta cul es el dominio NIS actual.
Sin embargo, si usted quiere mover su mquina frecuentemente por varios
dominios NIS, querr tener la informacin de varios dominios en el archivo
yp.conf. Puede tener informacin de los servidores de varios dominios NIS en
yp.conf especificando la informacin mediante la sentencia domain. Por ejemplo,
puede cambiar el ejemplo anterior en un porttil por esto:

225

LINUX

Mayo 2004

#yp.confconfiguracindeYPparalabibliotecalibcdeGNU.
#
domainvinateraservervbardolino
domaincerveceraservervstout

Esto le permite levantar el porttil en cualquiera de los dos dominios simplemente


especificando el dominio NIS deseado en tiempo de ejecucin utilizando la orden
domainname. Luego el cliente NIS utilizar el servidor que proceda para el
dominio actual.
Hay una tercera opcin que puede querer usar. Cubre el caso en el que usted no
sabe el nombre o la direccin IP del servidor a utilizar en un dominio particular,
pero quiere usar servidores fijos para ciertos dominios. Imagine que queremos
insistir en utilizar un servidor especificado cuando trabajamos dentro del dominio
de la Vinatera, pero queremos buscar un servidor cuando estamos dentro del
dominio de la Cervecera. Tendramos que modificar nuestro archivo yp.conf de
nuevo para que quedara as:
#yp.confconfiguracinYPparalabibliotecalibcdeGNU.
#
domainvinateraservervbardolino
domaincervecerabroadcast

La palabra clave broadcast le dice a ypbind que use el servidor NIS que
encuentre en el dominio.
Tras crear este archivo bsico de configuracin y asegurarse de que es legible por
todo el mundo, debe realizar la primera comprobacin para conectar con su
servidor. Asegrese de elegir un mapa que su servidor distribuya, como el
hosts.byname, e intente obtenerlo utilizando la utilidad ypcat:
#ypcat hosts.byname
172.16.2.2vbeaujolais.vbrew.comvbeaujolais
172.16.2.3vbardolino.vbrew.comvbardolino
172.16.1.1vlager.vbrew.comvlager
172.16.2.1vlager.vbrew.comvlager
172.16.1.2vstout.vbrew.comvstout
172.16.1.3vale.vbrew.comvale
172.16.2.4vchianti.vbrew.comvchianti

La salida que obtenga debe parecerse a la que se muestra arriba. Si obtiene un


mensaje de error que diga: Can't bind to server which serves domain, entonces o
el dominio NIS que ha especificado no tiene un servidor concordante definido en
yp.conf, o el servidor es inaccesible por alguna razn. En el ltimo caso,
226

LINUX

Mayo 2004

asegrese de que un ping al nodo arroja un resultado positivo, y de que de hecho


est corriendo un servidor NIS. Puede verificar esto ltimo utilizando la orden
rpcinfo, que tendra que producir la siguiente salida:
#rpcinfo -u serverhost ypserv
program100004version1readyandwaiting
program100004version2readyandwaiting

4.2.5. Escogiendo los Mapas Correctos


Habindose asegurado de que puede acceder al servidor NIS, debe decidir qu
archivos de configuracin reemplazar o aumentar con los mapas NIS.
Normalmente querr usar mapas NIS para las funciones de bsqueda de nodo y
de contrasea. La bsqueda de contrasea permite a todos los usuarios ingresar
en sus cuentas desde cualquier sistema del dominio NIS; normalmente esto
implica compartir un directorio /home central entre todos los nodos va NFS. El
mapa de contraseas se explica con detalle en la siguiente seccin.
Otros mapas, como el services.byname, no proporcionan ganancias tan
dramticas, pero s le ahorran algo de trabajo de edicin. El mapa
services.byname cobra valor si instala alguna aplicacin de red que utilice un
servicio que no est en el archivo estndar services.
Generalmente querr tener donde elegir cuando una funcin de bsqueda utilice
los archivos locales, cuando consulte a un servidor NIS y cuando utilice otros
servidores como el DNS. La libc de Linux le permite configurar el orden en el que
una funcin accede a estos servicios. Esto se controla a travs del archivo
/etc/nsswitch.conf, que quiere decir Conmutador de Servicio de Nombres (Name
Service Switch), aunque por supuesto no est limitado al servicio de nombres. El
archivo contiene una lnea nombrando el servicio a usar para cada una de las
funciones de bsqueda de datos soportadas por la libc de Linux.
El orden correcto de los servicios depende del tipo de datos que ofrece cada
servicio. No es probable que el mapa services.byname contenga entradas
diferentes a las del archivo local services; slo contendr entradas adicionales.
Por tanto, parece razonable consultar primero a los archivos locales y usar NIS
slo si el nombre del servicio no se encuentra. Por otra parte, la informacin del
227

LINUX

Mayo 2004

nombre de nodo puede cambiar frecuentemente, por lo que el servidor DNS o NIS
siempre debe tener la informacin ms precisa posible, mientras que el archivo
local hosts slo se conserva como copia de seguridad por si DNS o NIS fallan.
Por tanto, para los nombres de nodo, normalmente querr que el archivo local se
lea en ltimo lugar.
El siguiente ejemplo muestra cmo forzar a gethostbyname y gethostbyaddr que
busquen en NIS y DNS antes de buscar en el archivo hosts, y cmo hacer que la
funcin getservbyname busque en los archivos locales antes de consultar a NIS.
Estas funciones de resolucin probarn con cada uno de los servicios listados en
orden; si una bsqueda tiene xito, se devuelve el resultado; si no, probarn con
el siguiente servicio de la lista. La configuracin para estas prioridades es:
#pequeoejemplode/etc/nsswitch.conf
#
hosts:nisdnsfiles
services:filesnis

Lo siguiente es una lista completa de los servicios y lugares que pueden utilizarse
en una entrada del archivo nsswitch.conf. Los verdaderos mapas, ficheros,
servidores y objetos consultados dependen del nombre de la entrada. Lo siguiente
puede aparecer a la derecha de los dos puntos:
nis
Utilizar el servidor NIS del dominio actual. La situacin del servidor consultado se
configura en el archivo yp.conf. Para la entrada hosts, se consultan los mapas
hosts.byname y hosts.byaddr. nisplus o nis+ .
dns
Utilizar el servidor de nombres DNS. Este tipo de servicio slo es til con la
entrada

hosts.

Los

servidores

de

nombres

consultados

todava

estn

determinados por el archivo estndar resolv.conf.


files
Utilizar el archivo local, como el fichero /etc/hosts para la entrada hosts.
compat
Ser compatible con formatos de archivo antiguos. Esta opcin puede utilizarse
cuando se use NYS o la glibc 2.x para hacer bsquedas NIS o NIS+. Como estas
versiones normalmente no saben interpretar las entradas antiguas de NIS en los
228

LINUX

Mayo 2004

ficheros passwd y group, la opcin compat les permite funcionar con esos
formatos.
db
Buscar la informacin en los archivos DBM situados en el directorio /var/db. Para
ese archivo se utiliza el nombre de mapa NIS correspondiente.
Actualmente, el soporte de NIS de la libc de Linux proporciona las siguientes
bases de datos de nsswitch.conf: aliases, ethers.group, hosts, netgroup, network,
passwd, protocols, publickey, rpc, services, y shadow. Es probable que se
aandan ms entradas.
El Ejemplo 4-7 muestra un ejemplo ms completo que introduce otra
caracterstica del archivo nsswitch.conf. La palabra clave [NOTFOUND=return]
especificada en la entrada hosts le dice al cliente NIS que devuelva si el elemento
deseado no pudo encontrarse en la base de datos de NIS o DNS. Esto es, el
cliente NIS continuar buscando en los archivos locales slo si las llamadas a los
servidores NIS y DNS fallan por alguna razn. Por tanto, cuando el servidor NIS
no responda se utilizarn los archivos locales slo en tiempo de ejecucin y como
copia de seguridad.
Ejemplo 4-7. Archivo nsswitch.conf de Ejemplo
#/etc/nsswitch.conf
#
hosts:nisdns[NOTFOUND=return]files
networks:nis[NOTFOUND=return]files
services:filesnis
protocols:filesnis
rpc:filesnis

4.2.6. Utilizando los Mapas passwd y group


Una de las aplicaciones ms importantes de NIS es sincronizar la informacin del
usuario y de su cuenta en todos los nodos de un dominio NIS. Por consiguiente,
normalmente usted slo mantendr un archivo /etc/passwd pequeo, al cual se
aade la informacin global de los mapas NIS. Sin embargo, no es suficiente con
habilitar las bsquedas NIS para este servicio en el archivo nsswitch.conf. Antes
de fiarse de la informacin de contraseas distribuida por NIS, debe asegurarse
de que todos los nmeros ID de usuario que haya en el archivo local passwd
concuerdan con los del servidor NIS. La consistencia de los IDs tambin es
229

LINUX

Mayo 2004

importante para otros propsitos, como montar particiones NFS desde otros
nodos de su red.
Si alguno de los IDs numricos de /etc/passwd o group difiere de los de los
mapas, debe ajustar el dueo de todos los archivos que pertenezcan a ese
usuario. Primero, debe cambiar todos los uids y gids de passwd y group a los
nuevos valores, luego mirar que todos los archivos que pertenecen a los usuarios
han cambiado, y cambiar su dueo. Suponga que news tena un ID de usuario de
9 y que okir tena un ID de usuario de 103, y que fueron cambiados a otro valor;
luego puede ejecutar las siguientes rdenes como root:
#find / -uid 9 -print >/tmp/uid.9
#find / -uid 103 -print >/tmp/uid.103
#cat /tmp/uid.9 | xargs chown news
#cat /tmp/uid.103 | xargs chown okir

Es importante que ejecute estas ordenes con el nuevo archivo passwd instalado,
y que rena todos los archivos antes de cambiar el dueo de alguno de ellos.
Para actualizar los grupos dueos de los archivos, utilice un mtodo similar con
gid en vez de uid y chgrp en vez de chown.
Una vez que haya hecho esto, los uids y gids de su sistema concordarn con los
de todos los nodos de su dominio NIS. El siguiente paso ser aadir a
nsswitch.conf las lneas de configuracin que habilitan la bsqueda NIS de la
informacin de usuario y grupo:
#/etc/nsswitch.conftratamientodepasswdygroup
passwd:nisfiles
group:nisfiles

Esto afecta a qu lugar buscarn la informacin de usuario la orden login y todos


sus amigos. Cuando un usuario intente registrarse en el sistema, login consultar
primero los mapas NIS, y si esta bsqueda falla, recurrir a los archivos locales.
Normalmente, usted eliminar a casi todos los usuarios de sus archivos locales, y
slo dejar las entradas de root y otras cuentas genricas como mail. Eso es
porque algunas tareas vitales del sistema pueden requerir resolver uids a partir de
nombres de usuario o viceversa. Por ejemplo, los trabajos administrativos de cron
230

LINUX

Mayo 2004

pueden utilizar la orden su para convertirse temporalmente en el usuario news, o


el subsistema UUCP puede tener que enviar un informe de estado por correo. Si
news y uucp no tienen entradas en el fichero local passwd, estos trabajos fallarn
estrepitosamente durante una cada del servicio NIS.
Finalmente, si usted est usando la implementacin de NIS antigua (soportada
por el modo compat para los ficheros passwd y group en las implementaciones de
NYS o glibc), debe insertar las pesadas entradas especiales dentro de ellos.
Estas entradas determinan dnde se insertarn los registros derivados NIS dentro
de la base de datos. Las entradas pueden aadirse en cualquier lugar, pero
normalmente se aaden al final. Las entradas que hay que aadir en el archivo
/etc/passwd son:
+::::::

y las del fichero /etc/groups:


+:::

Con la glibc 2.x y NYS se puede ignorar los parmetros del registro de un usuario
recibido desde el servidor NIS creando entradas con un + antes del nombre de
ingreso, y excluir usuarios especficos creando entradas con un - antes del
nombre de ingreso. Por ejemplo, las entradas:
+stuart::::::/bin/jacl
-jedd::::::

ignoraran el intrprete de rdenes proporcionado por el servidor NIS para el


usuario stuart, y no permitiran al usuario jedd ingresar en esta mquina. En los
campos que se dejan vacos se utiliza la informacin proporcionada por el
servidor NIS.
Existen dos inconvenientes aqu. Primero, la configuracin descrita arriba slo
funciona en los sistemas de ingreso que no utilizan contraseas ocultas (shadow
passwords). Los misterios de usar contraseas ocultas con NIS se discutirn en la
siguiente seccin. Segundo, las rdenes de ingreso no son las nicos que
acceden al archivo passwd fjese en la orden ls, que casi todo el mundo utiliza
constantemente. Al hacer listados largos, el comando ls muestra los nombres
231

LINUX

Mayo 2004

simblicos de los usuarios y los grupos dueos de un archivo; esto es, para cada
uid y gid que se encuentra, tiene que consultar al servidor NIS. Una consulta NIS
tarda algo ms que la bsqueda equivalente en un archivo local. Puede
encontrarse con que al compartir la informacin de passwd y group mediante NIS
se produce una reduccin significativa del rendimiento de algunos programas que
utilizan esta informacin de manera frecuente.
Y esto no es toda la historia. Imagine qu ocurrira si una usuaria quiere cambiar
su contrasea. Normalmente invocar la orden passwd, que lee la nueva
contrasea y actualiza el fichero local passwd. Esto es imposible con NIS, ya que
ese archivo ya no est disponible localmente, pero hacer que los usuarios tengan
que ingresar en el servidor NIS cada vez que quieran cambiar su contrasea
tampoco es una opcin. Es por esto que NIS proporciona un sustituto para
passwd llamado ypasswd, que maneja los cambios de contrasea bajo NIS.
Para cambiar la contrasea en el nodo servidor, contacta con el demonio
yppasswdd de ese nodo mediante RPC, y le proporciona la informacin de la
contrasea actualizada. Normalmente se instala yppasswd sobre el programa
normal haciendo algo as:
#cd /bin
#mv passwd passwd.old
#ln yppasswd passwd

Al mismo tiempo, debe instalar rpc.yppasswdd en el servidor y lanzarlo desde un


script de red. Esto ocultar de manera efectiva las vicisitudes de NIS a sus
usuarios.
4.3. El Sistema de Archivos de Red
El Sistema de Archivos de Red (NFS, por sus siglas en ingls) es probablemente
el servicio de red ms prominente que usa RPC. Permite acceder a archivos en
anfitriones remotos exactamente en la misma manera que se accedera si fueran
locales. Una mezcla de soporte en el ncleo y demonios en espacio de usuario en
el lado del cliente, junto con un servidor NFS en el lado del servidor, hace esto
posible. Este acceso a los archivos es completamente transparente al cliente y
funciona con varias clases de servidores y arquitecturas anfitrionas.
NFS ofrece varias caractersticas tiles:
232

LINUX

Mayo 2004

Los datos accedidos por todos los usuarios pueden mantenerse en un


anfitrin central, con los clientes montando este directorio en tiempo de
arranque.

La informacin que consume grandes cantidades de disco puede


mantenerse en un nico anfitrin.

Los datos administrativos pueden almacenarse en un nico anfitrin. No


hay necesidad de usar rcp para instalar el mismo archivo en 20 mquinas
diferentes.

No es demasiado difcil preparar el funcionamiento bsico de NFS en el cliente y


el servidor; este captulo le dice cmo.
Linux NFS es principalmente obra de Rick Sladkey, quien escribi el cdigo del
ncleo de NFS y gran parte del servidor de NFS. Lo ltimo se deriva del servidor
NFS de espacio de usuario unfsd , originalmente escrito por Mark Shand, y el
servidor NFS Harris hnfs, escrito por Donald Becker. Echemos un vistazo a cmo
funciona NFS. Primero, un cliente intenta montar un directorio de un anfitrin
remoto en un directorio local justo de la misma manera que si fuese un dispositivo
fsico. Sin embargo, la sintaxis usada para especificar el directorio remoto es
diferente. Por ejemplo, para montar /home desde el anfitrin vlager en /users en
vale, el administrador escribe la siguiente orden en vale:
#mount -t nfs vlager:/home /users

mount tratar de conectar con el demonio remoto sobre rpc.mountd de vlager


va RPC. El servidor verificar si vale tiene permiso para montar el directorio en
cuestin, en cuyo caso, devuelve un descriptor de archivo.
Este descriptor ser usado en todas las peticiones subsecuentes que se hagan
sobre los archivos bajo /users. Cuando alguien accede a un archivo sobre NFS, el
ncleo manda una llamada de RPC a rpc.nfsd (el demonio de NFS) en la
mquina servidor. Esta llamada toma el descriptor de archivo, el nombre del
archivo a acceder y los identificadores de usuario y grupo del usuario como
parmetros. stos se usan en la determinacin de los derechos de acceso al
archivo especificado. Para prevenir que usuarios no autorizados lean o
modifiquen archivos, los identificadores de usuario y grupo deben ser iguales en
ambos anfitriones.
233

LINUX

Mayo 2004

En la mayora de las implementaciones de Unix, la funcionalidad NFS de cliente y


servidor se implementan como demonios a nivel de ncleo que arrancan desde el
espacio de usuario al arrancar la mquina. stos son los Demonios NFS
(rpc.nfsd) en el anfitrin servidor, y Block I/O Daemon (biod) en el anfitrin
cliente. Para mejorar el rendimiento, biod realiza la E/S usando prelectura y
postescritura asncrona; tambin, varios demonios rpc.nfsd usualmente se
ejecutan concurrentemente.
La implementacin actual de NFS de Linux es un poco diferente del NFS clsico
en la que el cdigo de servidor se ejecuta enteramente en espacio de usuario, as
que ejecutar mltiples copias simultneamente es ms complicado. La
implementacin actual derpc.nfsd ofrece una caracterstica experimental que
permite soporte limitado para mltiples servidores. Olaf Kirch desarroll el soporte
para servidor NFS basado en el ncleo ofrecido en la versin 2.2 del ncleo de
Linux. Su desempeo es significativamente mejor que la de la implementacin en
el entorno de usuario existente. Lo describiremos ms adelante en esta seccin.
4.3.1. Preparando NFS
Antes que pueda usar NFS, sea como servidor o cliente, debe asegurarse de que
su ncleo tenga incluido el soporte de NFS compilado. Los ncleos ms nuevos
tienen una interfaz simple en el sistema de archivos proc para esto, el archivo
/proc/filesystems, el cual puede visualizar usando la orden cat:
$ cat /proc/filesystems
minix
ext2
msdos
nodev proc
nodev nfs

Si falta la palabra nfs en esta lista, tendr que compilar su propio ncleo con NFS
habilitado, o quizs necesitar cargar el mdulo del ncleo si su soporte de NFS
fue compilado como un mdulo.
4.3.2. Montando un Volumen NFS
El montaje de volmenes NFS se parece mucho al de los sistemas de archivos
comunes. Invoque mount usando la siguiente sintaxis:
234

LINUX

Mayo 2004

#mount -t nfs nfs_volume local_dir options

nfs_volume se da como remote_host:remote_dir. Dado que esta notacin es slo


para NFS, se puede omitir la opcin t nfs.
Hay varias opciones adicionales que se puede especificar para la orden mount al
montar un volumen de NFS.
stas pueden ser dadas siguiendo al modificador o en la lnea de rdenes o en el
campo de opciones de entrada para el volumen en el archivo /etc/fstab. En ambos
casos las mltiples opciones son separadas por comas y no pueden contener
espacios en blanco. Las opciones especificadas en la lnea de rdenes siempre
tienen preferencia sobre las que estn contenidas en el archivo fstab.
Aqu hay un ejemplo de entrada del archivo /etc/fstab:
#volumenpuntodemontajetipoopciones
news:/var/spool/news/var/spool/newsnfstimeo=14,intr

Este volumen puede ser montado usando esta orden:


#mount news:/var/spool/news

En ausencia de una entrada en fstab, las llamadas a mount parecen muy feas.
Por ejemplo, suponga que monta su directorio inicial de usuario desde una
mquina llamada moonshot, la cual usa un tamao de bloque de 4 K para las
operaciones de lectura/escritura. tendra que incrementar el tamao del bloque a
8 K para obtener un mejor rendimiento escribiendo la orden:
#mount moonshot:/home /home -o rsize=8192,wsize=8192

En el apndice se puede ver una lista parcial de opciones que probablemente


querra usar.
Salvo para rsize y wsize, todas estas opciones del apndice se aplican a la
conducta del cliente en caso de que el servidor se vuelva temporalmente
inaccesible. Funcionan juntos de la manera siguiente: Cuando el cliente enva una
peticin al servidor NFS, espera que la operacin finalice tras un intervalo dado de
235

LINUX

Mayo 2004

tiempo (especificado en la opcin timeout ). Si no se recibe confirmacin dentro


de este tiempo, ocurre una expiracin menor, y la operacin se reintenta con el
tiempo de expiracin duplicado. Despus de un tiempo de expiracin mximo de
60 segundos ocurre una expiracin mayor.
Por omisin, una expiracin mayor causa que el cliente enve un mensaje a la
consola y comience de nuevo, esta vez con un tiempo de expiracin inicial doble
que la cascada anterior. Potencialmente, esto podra continuar para siempre. Los
volmenes que obstinadamente reintentan el funcionamiento hasta que el servidor
est nuevamente disponible se llaman de montaje fuerte. La variedad opuesta,
llamada de montaje dbil, genera un error de E/S para el proceso que llama
siempre que expire el tiempo de conexin. Debido a la post-escritura introducida
desde la cach del bfer, esta condicin de error no se propaga hacia el proceso
mismo antes de que ste llame a la funcin write la prxima vez, as que un
programa nunca puede estar seguro de que una operacin de escritura sobre un
volumen montado dbilmente se ha completado del todo.
El montar fuerte o dbilmente un volumen depende parcialmente de su gusto,
pero tambin del tipo de informacin al que quiere acceder desde un volumen.
Por ejemplo, si monta sus programas X por NFS, ciertamente no querra que su
sesin X enloquezca tan slo porque alguien llev la red al colapso lanzando siete
copias de DOOM al mismo tiempo o desenchufando el conector Ethernet por un
momento. Mediante el montaje fsico del directorio que contiene estos programas,
puede asegurarse que su computadora espera hasta que pueda restablecer el
contacto con su servidor NFS.
Por otro lado, los datos no-crticos como las particiones de las noticias montadas
sobre NFS o ficheros de FTP tambin pueden ser montadas dbilmente, as si la
mquina remota est temporalmente inaccesible o apagada, no cuelga su sesin.
Si su conexin de la red al servidor es dificultosa o pasa por un encaminador muy
cargado, puede en cualquier caso aumentar el tiempo de expiracin inicial usando
la opcin time o montar fuertemente los volmenes. Los volmenes NFS son
montados fuertemente por omisin.
El montaje fuerte presenta un problema porque por omisin las operaciones con
los archivos no son interrumpibles. As, si un proceso intenta, por ejemplo, una
escritura en un servidor remoto y ese servidor es inalcanzable, la aplicacin del
236

LINUX

Mayo 2004

usuario se cuelga y el usuario no puede hacer nada para abortar la operacin. Si


usa la opcin intr junto con un montaje fuerte, cualquier seal recibida por el
proceso interrumpe la llamada NFS para que as los usuarios puedan todava
abortar los accesos a los archivos colgados y continuar el trabajo (aunque sin
guardar el archivo).
Usualmente, el demonio rpc.mountd de una manera u otra rastrea qu
directorios han sido montados por qu anfitrioness. Esta informacin puede
mostrarse usando la orden showmount que tambin est incluida en el paquete
del servidor NFS.
#showmount -e moonshot
Listadeexportacinparaelanfitrinlocal:
/home<anonclnt>
#showmount -d moonshot
Directoriosenelanfitrinlocal:
/home
#showmount -a moonshot
Todoslospuntosdemontajeparaelanfitrinlocal:
localhost:/home

4.3.3. Los Demonios NFS


Si quiere dar servicio de NFS a otros anfitriones, debe ejecutar los demonios
rpc.nfsd y rpc.mountd en su mquina. Como los programas basados en RPC,
no son gestionados por inetd, sino que son iniciados en tiempo de arranque y se
registran a s mismos con el mapeador de puertos; por consiguiente, tiene que
asegurarse de arrancarlos slo despus que rpc.portmap se est ejecutando.
Normalmente, usara algo como el ejemplo siguiente en uno de sus guiones de
arranque de red:
if[x/usr/sbin/rpc.mountd];then
/usr/sbin/rpc.mountd;echon"mountd"
fi
if[x/usr/sbin/rpc.nfsd];then
/usr/sbin/rpc.nfsd;echon"nfsd"
Fi

La informacin de propiedad de los archivos que un demonio de NFS proporciona


a sus clientes usualmente contiene slo identificadores numricos de usuario y de
grupo. Si tanto cliente como servidor asocian los mismos nombres de usuario y
grupo con esos identificadores numricos, se dice que stos comparten el espacio
237

LINUX

Mayo 2004

uid/gid . Por ejemplo, ste es el caso cuando usa NIS para distribuir la informacin
passwd a todos los anfitriones de su red de rea local.
Sin embargo, en algunas ocasiones, los IDs en los diferentes anfitriones no
coinciden. En lugar actualizar los uids y gids del cliente para que coincidan con los
que hay en el servidor, puede usar el demonio mapeador rpc.ugidd para
solucionar las disparidades. Usando la opcin map_daemon, puede mandar a
rpc.nfsd que mapee el espacio uid/gid del servidor al espacio uid/gid del cliente
con la ayuda de rpc.ugidd en el cliente.
rpc.ugidd Es un servidor basado en RPC que se inicia desde sus guiones de
arranque de la red, como rpc.nfsd y rpc.mountd:
if[x/usr/sbin/rpc.ugidd];then
/usr/sbin/rpc.ugidd;echon"ugidd"
fi

4.3.4. El Archivo exports


Ahora veremos cmo configurar el servidor NFS. Especficamente, veremos cmo
decirle al servidor NFS qu sistemas de archivos deben ponerse disponibles para
el montaje y varios parmetros que controlan el acceso que tienen los clientes al
sistema de archivos. El servidor determina el tipo de acceso que se permite a los
archivos del servidor. El archivo /etc/exports lista los sistemas de archivos que el
servidor permitir a los clientes montar y usar.
Por omisin, rpc.mountd desaprueba el montaje de todos los directorios, lo cual
es una actitud bastante sensata. Si desea permitir a uno o ms anfitriones montar
un directorio de NFS, debe exportarlo es decir, especificarlo en el archivo exports.
Un ejemplo del archivo puede parecer como ste:
#exportsfileforvlager
/homevale(rw)vstout(rw)vlight(rw)
/usr/X11R6vale(ro)vstout(ro)vlight(ro)
/usr/TeXvale(ro)vstout(ro)vlight(ro)
/vale(rw,no_root_squash)
/home/ftp(ro)

Cada lnea define un directorio y los anfitriones a los que se les permite montarlo.
Un nombre de anfitrin es usualmente un nombre de dominio completamente
cualificado pero puede contener adicionalmente los comodines * y ? los cuales
238

LINUX

Mayo 2004

funcionan igual que en intrprete de rdenes Bourne. Por ejemplo, lab*.foo.com


coincide con lab01.foo.com as como laboratory.foo.com. El anfitrin puede ser
especificado tambin usando un rango de direcciones IP en la forma
direccin/mscara de redk. Si no se da un nombre de anfitrin, como con el
directorio /home/ftp en el ejemplo previo, cualquier anfitrin coincide y se le
permite montar el directorio.
Cuando se verifica a un anfitrin cliente contra el archivo exports, rpx.mountd
busca el nombre del anfitrin cliente usando la llamada gethostbyaddr. Con DNS,
esta llamada devuelve el nombre cannico del anfitrin cliente, as debe
asegurarse de no usar alias en exports. En un entorno NIS el nombre devuelto es
la primera coincidencia de la base de datos de anfitriones, y sin DNS o NIS, el
nombre devuelto es el primer nombre de anfitrin encontrado en el archivo hosts
que coincida con la direccin del cliente.
Cualquier error que ocurra al procesar el archivo exports se informa al demonio
syslogd con el nivel notice en cualquier momento en que rpc.nfsd o rpc.mountd
se inicien.

4.4. IPX y el Sistema de Ficheros NCP


Mucho antes de que Microsoft aprendiera sobre redes, e incluso antes de que
Internet fuera conocida fuera de los crculos acadmicos, los entornos
corporativos compartan archivos e impresoras utilizando servidores de archivos y
de impresin basados en el sistema operativo Novell NetWare y sus protocolos
asociados.
Muchos de estos usuarios corporativos todava tienen redes coaxiales que utilizan
estos protocolos y quieren integrar este soporte con su nuevo soporte de TCP/IP.
Linux no slo soporta los protocolos TCP/IP, sino tambin el juego de protocolos
utilizado por el sistema operativo NetWare de Novell Corporation. Estos
protocolos son primos lejanos del TCP/IP, y aunque realizan funciones similares,
difieren en muchos aspectos y desafortunadamente son incompatibles.
Linux cuenta con software tanto libre como comercial que proporciona soporte
para la integracin con los productos Novell.

239

LINUX

Mayo 2004

En esta seccin se proporcionar una breve descripcin de los propios protocolos,


pero nos enfocaremos en cmo configurar y utilizar el software libre para permitir
que Linux pueda interoperar con los productos Novell.
4.4.1. Xerox, Novell, e Historia
Primero veamos de dnde salieron los protocolos y cmo son. A finales de los 70, Xerox
Corporation desarroll y public un estndar abierto llamado Especificacin de Red Xerox
(Xerox Network Specification, XNS). La Especificacin de Red Xerox defina una serie de
protocolos designados para la interconexin de propsito general, con un gran nfasis en
el uso de redes de rea local. Haba dos protocolos de red principales implicados: el
Protocolo de Datagramas de Internet (Internet Datagram Protocol, IDP), que
proporcionaba un transporte de datagramas sin conexin y no fiable de un nodo a otro, y
el Protocolo de Paquetes Secuenciados (Sequenced Packet Protocol, SPP), que era una
forma modificada del IDP basada en la conexin y fiable. Los datagramas de una red
XNS eran direccionados individualmente. El esquema de direccionamiento utilizaba una
combinacin de una direccin de red IDP de 4 bytes (que era asignada unvocamente a
cada segmento de la LAN Ethernet), y la direccin de nodo de 6 bytes (la direccin de la
tarjeta NIC). Los enrutadores eran dispositivos que desviaban datagramas entre dos o
ms redes IDP separadas. En IDP no existe el concepto de subred; cualquier coleccin
nueva de nodos requiere la asignacin de otra direccin de red. Las direcciones de red se
escogen de manera que sean nicas en la red en cuestin. A veces, los administradores
desarrollan convenciones haciendo que cada byte codifique algn tipo de informacin,
como la situacin geogrfica, de manera que las direcciones de red se reservan de
manera sistmatica; sin embargo, no es un requisito del protocolo.
La Novell Corporation eligi basar su propio juego de red en el juego XNS. Novell realiz
pequeas mejoras al IDP y al SPP y los renombr como IPX (Internet Packet eXchange,
Intercambio de Paquetes de Internet) y SPX (Sequenced Packet eXchange, Intercambio
de Paquetes Secuenciados). Novell aadi dos protocolos nuevos: el Protocolo Central
de NetWare (NetWare Core Protocol, NCP), que proporcionaba funciones para compartir
ficheros e impresoras sobre IPX, y el Protocolo de Anuncio de Servicios (Service
Advertisement Protocol, SAP), que permita a los nodos de una red Novell saber qu
nodos proporcionaban qu servicios.

La Tabla 4-2 relaciona los juegos de protocolos XNS, Novell y TCP/IP en trminos
de la funcin que realizan. Las relaciones son slo una aproximacin, pero

240

LINUX

Mayo 2004

pueden ayudarle a comprender qu sucede cuando nos refiramos a estos


protocolos ms adelante.

Tabla 4-2. Relaciones entre los Protocolos de XNS, Novell, y TCP/ IP

4.4.2. Configurando el ncleo para IPX y NCPFS


Configurar el ncleo para IPX y el sistema de archivos NCP es simplemente
cuestin de seleccionar las opciones del ncleo apropiadas a la hora de compilar
el ncleo. Como muchas otras partes del ncleo, los componentes para IPX y
NCPFS pueden compilarse dentro del ncleo o en forma de mdulos, que luego
se pueden cargar usando la orden insmod cuando se necesiten.
Deben seleccionarse las siguientes opciones si quiere tener soporte del protocolo
IPX en Linux:
Generalsetup>
[*]Networkingsupport
Networkingoptions>
<*>TheIPXprotocol
Networkdevicesupport>
[*]Ethernet(10or100Mbit)
...yloscontroladoresdedispositivoEthernetapropiados

Si quiere que Linux soporte el sistema de archivos NCP para que pueda montar
volmenes NetWare remotos, debe seleccionar adicionalmente estas opciones:
Filesystems>
[*]/procfilesystemsupport
<*>NCPfilesystemsupport(tomountNetWarevolumes)

Cuando haya compilado e instalado su nuevo ncleo, estar preparado para


ejecutar IPX.
4.4.3. Configurando las interfaces IPX
Igual que con TCP/IP, se deben configurar las interfaces IPX antes de usarlas. El
protocolo IPX tiene algunos requisitos propios; consecuentemente, ha sido

241

LINUX

Mayo 2004

desarrollado un juego especial de herramientas de configuracin. Utilizaremos


estas herramientas para configurar nuestras interfaces IPX y las rutas.
I.- Dispositivos de Red que Soportan IPX
El protocolo IPX asume que cualquier coleccin de nodos que puede transmitir
datagramas al resto sin necesidad de rutado pertenece a la misma red IPX. De
manera similar (pero menos intuitiva), dos nodos que soporten un enlace serie
basado en PPP deben pertenecer a la red IPX que es el propio enlace serie. En
un entorno Ethernet se puede usar un nmero de tipos de trama distintos para
transportar datagramas IPX. Los tipos de trama ms comunes que va a
encontrarse son el 802.2 y ethernet_II.
Los dispositivos de red de Linux que actualmente soportan el protocolo IPX son
los controladores Ethernet y PPP. La interfaz Ethernet o el PPP debe estar activo
antes de que pueda ser configurado para el uso de IPX. Normalmente se
configura un dispositivo Ethernet para IP e IPX, por lo que el dispositivo ya existe,
pero si su red slo es IPX, necesita usar la orden ifconfig para cambiar el estado
del dispositivo Ethernet a lo que sigue:
#ifconfig eth0 up

II.- Herramientas de Configuracin del Interfaz IPX


Greg Page ha desarrollado un juego de herramientas de configuracin para las
interfaces IPX, que viene como paquete precompilado en las distribuciones
modernas y tambin puede obtenerse en forma de cdigo fuente mediante FTP
annimo

http://metalab.unc.edu/

en

el

fichero

/pub/Linux/system/filesystems/ncpfs/ipx.tgz.
Normalmente, un script rc ejecuta las herramientas IPX en tiempo de arranque.
Puede que su distribucin haga esto por usted si ha instalado el paquete
precompilado.
III.- La Orden ipx_configure
Cada interfaz IPX debe saber a qu red IPX pertenece y qu tipo de trama utilizar
para IPX. Todo nodo que soporte IPX tiene al menos una interfaz que el resto de
la red utilizar para referirse a l, conocido como la interfaz primaria. El soporte de
IPX del ncleo de Linux proporciona una manera de configurar automticamente
242

LINUX

Mayo 2004

estos parmetros; la orden ipx_configure activa o desactiva esta capacidad de


configuracin automtica.
Sin argumentos, la orden ipx_configure muestra las opciones de configuracin
actuales:
#ipx_configure
AutoPrimarySelectisOFF
AutoInterfaceCreateisOFF

Las opciones Auto Primary y Auto Interface estn apagadas por defecto. Para activarlas y
permitir la configuracin automtica, simplemente hay que proporcionar argumentos
como stos:
#ipx_configure --auto_interface=on --auto_primary=on

Cuando el argumento --auto_primary se pone en on, el ncleo se asegurar de


manera automtica de que al menos una interfaz activa opera como la interfaz
primaria para el nodo.
Cuando el argumento --auto_interface se pone en on, el controlador IPX del
ncleo escuchar a todas las tramas recibidas en las interfaces de red activas, y
tratar de determinar la direccin de la red IPX y el tipo de trama utilizado.
El mecanismo de autodeteccin funciona bien en las redes administradas
correctamente. A veces los administradores de red toman atajos e incumplen
reglas, y esto puede causarle problemas al cdigo de autodeteccin de Linux. El
ejemplo ms comn de esto es cuando una red IPX est configurada para que
funcione con mltiples tipos de trama en una misma Ethernet. Esto es
tcnicamente una configuracin invlida, ya que un nodo 802.2 no puede
comunicarse directamente con un nodo Ethernet-II, y por lo tanto no pueden estar
en la misma red IPX. El software de red IPX de Linux escucha en el segmento de
red datagramas IPX que se transmiten en l. A partir de stos, trata de identificar
qu direcciones de red estn en uso y qu tipos de trama estn asociados a cada
una. Si la misma direccin de red est en uso con varios tipos de trama o en
varias interfaces, el cdigo de Linux detecta esto como una colisin de
direcciones de red, y es incapaz de determinar cul es el tipo de trama correcto.
243

LINUX

Mayo 2004

Sabr que ocurre esto si ve mensajes en el registro de su sistema que se


parezcan a esto:
IPX:Networknumbercollision0x3901ab00
eth0etherIIandeth0802.3

Si observa este problema, desactive la capacidad de autodeteccin y configure


las

interfaces

manualmente,

utilizando

la

orden

ipx_interface

descrito

acontinuacin.
IV.- La Orden ipx_interface
La orden ipx_interface se utiliza para aadir, modificar y borrar manualmente la
capacidad IPX de un dispositivo de red existente. Debe utilizar ipx_interface
cuando el mtodo de configuracin automtica descrito hace un momento no le
funcione, o cuando no quiera abandonar la configuracin de interfaz a la suerte.
ipx_interface le permite especificar la direccin de red IPX, el estado de la
interfaz primaria, y el tipo de trama IPX que utilizar un dispositivo de red. Si est
creando mltiples interfaces IPX, necesitar un ipx_interface para cada una.
La sintaxis de la orden para aadir IPX a un dispositivo existente es sencilla y se
explica mejor con un ejemplo. Aadamos IPX a un dispositivo Ethernet existente:
#ipx_interface add -p eth0 etherII 0x32a10103

El significado de los parmetros de turno se encuentran en el apndice.


El siguiente orden elimina el soporte IPX de una interfaz:
#ipx_interface del eth0 etherII

Finalmente, para mostrar la configuracin IPX actual de un dispositivo de red,


utilice:
#ipx_interface check eth0 etherII

4.4.4. Configurando un Enrutador IPX


Para comenzar tenemos que saber que los protocolos utilizados en un entorno
IPX que IPX es un protocolo encaminable y que el Protocolo de Informacin de
244

LINUX

Mayo 2004

Enrutamiento (Routing Information Protocol, RIP) se utiliza para propagar la


informacin de enrutamiento. La versin IPX de RIP es bastante parecida a la
versin IP. Funcionan esencialmente de la misma manera; los enrutadores
difunden peridicamente los contenidos de sus tablas de enrutamiento y otros
enrutadores los recogen escuchando e integrando la informacin que reciben. Los
nodos slo necesitan saber cul es su red local y asegurarse de enviar
datagramas al resto de destinos a travs de su enrutador local. El enrutador es
responsable de recoger estos datagramas y redirigirlos al siguiente salto de la
ruta.
En un entorno IPX, hace falta propagar por la red una segunda clase de
informacin. El Protocolo de Anuncio de Servicio (Service Advertisement Protocol,
SAP) transporta informacin sobre qu servicios estn disponibles en qu nodos
de la red. Por ejemplo, es el protocolo SAP el que permite a los usuarios obtener
listas de servidores de archivos o de impresin de la red. El protocolo SAP trabaja
haciendo que los nodos que proporcionan servicios difundan peridicamente la
lista de servicios que ofrecen. Los enrutadores de la red IPX recogen esta
informacin y la propagan por toda la red junto con la informacin de enrutamiento
de la red. Para ser un enrutador IPX compatible, hay que propagar tanto la
informacin RIP como la SAP.
Al igual que IP, el soporte de IPX en Linux proporciona un demonio de
enrutamiento llamado ipxd que realiza las tareas asociadas al tratamiento del
enrutamiento. De nuevo, igual que en el IP, es en realidad el ncleo el que
administra el redireccionamiento de los datagramas entre las interfaces de red
IPX, pero lleva a cabo esto de acuerdo con un conjunto de reglas recogidas en la
tabla de enrutamiento IPX. El demonio ipxd mantiene actualizado ese conjunto de
reglas escuchando a todas las interfaces de red activas y analizando cundo es
necesario un cambio de enrutamiento. El demonio ipxd tambin responde a las
peticiones de los nodos de una red conectada directamente que piden informacin
de enrutamiento.
El programa ipxd est disponible preempaquetado en algunas distribuciones, y en
forma de cdigo fuente mediante FTP annimo a http://metalab.unc.edu/ en el
fichero /pub/Linux/system/filesystems/ncpfs/ipxripd-x.xx.tgz.
245

LINUX

Mayo 2004

No es necesario configurar el demonio ipxd. Cuando es lanzado, l


automticamente administra el enrutamiento de los dispositivos IPX que han sido
configurados. La clave est en asegurarse de que todos los dispositivos IPX estn
configurados correctamente utilizando la orden ipx_interfaces antes de lanzar
ipxd. Aunque la autodeteccin puede funcionar, cuando est haciendo funciones
de enrutamiento es mejor no correr riesgos, as que configure manualmente las
interfaces y ahrrese problemas de enrutamiento molestos. Cada 30 segundos,
ipxd reinspecciona todas las redes IPX enganchadas y las administra
automticamente. Esto proporciona una manera de administrar redes en
interfaces que pueden no estar activas todo el tiempo, como las interfaces PPP.
Normalmente ipxd es lanzado en tiempo de inicio desde un script de inicio rc
como ste: # /usr/sbin/ipxd
No se necesita un carcter & porque ipxd se pone por defecto en segundo plano.
Aunque el demonio ipxd es til sobre todo en mquinas que actan como
encaminadores IPX, tambin es til a los nodos en segmentos donde existen
mltiples encaminadores. Cuando se especifica el argumanto p, ipxd actuar
pasivamente, escuchando la informacin de enrutamiento del segmento y
actualizando las tablas de enrutamiento, pero no transmitir ninguna informacin
de enrutamiento. De esta manera, un nodo puede mantener actualizadas sus
tablas de enrutamiento sin tener que solicitar las rutas cada vez que quiera
contactar con un nodo remoto.
Enrutamiento IPX Esttico Utilizando la orden ipx_route
En ocasiones puede que queramos especificar a mano una ruta IPX. Igual que en
IP, podemos hacer esto en IPX. la orden ipx_route escribe una ruta en la tabla de
enrutamiento IPX sin necesidad de que tenga que haberla obtenido mediante el
demonio de enrutamiento ipxd. La sintaxis de enrutamiento es muy sencilla (ya
que IPX no soporta subredes) y se parece a esto:
#ipx_route add 203a41bc 31a10103 00002a02b102

Este orden aadira una ruta a la red IPX remota 203a41bc a travs del enrutador
de nuestra red local 31a10103 con una direccin de nodo 00002a02b102.
Puede encontrar la direccin de nodo de un enrutador haciendo un uso juicioso de
la orden tcpdump con el argumento e, para mostrar las cabeceras de la capa de
246

LINUX

Mayo 2004

enlace y observar el trfico del enrutador. Si el enrutador es una mquina Linux,


es ms sencillo usar la orden ifconfig para mostrarla. Puede eliminar una ruta
usando la orden ipx_route:
#ipx_route del 203a41bc

Puede listar las rutas activas en el ncleo echndole un vistazo al archivo


/proc/net/ipx_route. Nuestra actual tabla de enrutamiento sera as:
#cat ipx_route
NetworkRouter_NetRouter_Node
203A41BC31A1010300002a02b102
31A10103DirectlyConnected

La ruta a la red 31A10103 fue creada automticamente cuando configuramos la


interfaz IPX. Cada una de nuestras redes locales estar representada por una
entrada en /proc/net/ipx_route como sta. Naturalmente, si nuestra mquina va a
actuar como un enrutador, necesitar al menos una interfaz ms.
Redes IPX Internas y Enrutamiento
Los nodos IPX con ms de una interfaz IPX tienen una combinacin de direccin
de red / nodo nica para cada una de sus interfaces. Para conectarse a un nodo
as, se puede utilizar cualquiera de estas combinaciones de direccin de
red/nodo. Cuando SAP anuncia servicios, proporciona la direccin de red/nodo.
En los nodos con mltiples interfaces, esto significa que se debe elegir una de las
interfaces como la que va a propagar; sta es la funcin de la bandera de interfaz
primaria de la que hablamos anteriormente. Pero esto presenta un problema: la
ruta a esta interfaz puede no ser siempre la ms ptima, y si se da un fallo en la
red que la asle del resto de la red, el nodo quedar inaccesible aunque haya
otras rutas posibles al resto de interfaces. Los otros nodos no conocen el resto de
las rutas porque nunca son propagadas, y el ncleo no tiene manera de saber que
tendra que escoger otra interfaz primaria. Para evitar este problema, ha sido
desarrollado un dispositivo que permite que un nodo IPX sea conocido mediante
una direccin de red/nodo individual independiente de la ruta, para los propsitos
247

LINUX

Mayo 2004

de la propagacin de SAP. Esto resuelve nuestro problema, porque esta direccin


de red/nodo nueva es accesible a travs de todas las interfaces del nodo, y es la
que SAP anuncia.
Para ilustrar el problema y su solucin, Figura 4-1 muestra un servidor
enganchado a dos redes IPX. La primera red no tiene red interna, pero la segunda
s. El nodo en el diagrama Figura 4-1 escogera una de sus interfaces como
interfaz primaria, supongamos que la 0000001a:0800000010aa, y es lo que sera
anunciado como su punto de acceso al servicio. Esto funciona bien para los
nodos de la red 0000001a, pero significa que los usuarios de la red 0000002c
seran enrutados a travs de la red para alcanzar ese puerto, a pesar de que el
servidor tiene un puerto directamente en esa red, si han sabido de este servidor a
partir de las difusiones de SAP.

Figura 4-1. Red IPX interna

Permitiendo a estos nodos que tengan una red virtual con direcciones de nodo
virtuales, que son una
248

LINUX

Mayo 2004

construccin enteramente por software, se resuelve el problema. Esta red virtual


puede imaginarse mejor como una red dentro del nodo IPX. Slo necesita
propagarse la informacin SAP para esta combinacin de direccin de red/nodo
virtual. A esta red virtual se la conoce como red interna. Pero cmo saben los
otros nodos cmo acceder a esta red interna? Los nodos remotos son
encaminados a la red interna a travs de las redes del nodo conectadas
directamente. Esto significa que se vern entradas de enrutamiento que se
refieren a la red interna de los nodos que soportan mltiples interfaces IPX. Esas
rutas escogern la ruta ptima disponible en el momento, y si una falla, el
enrutamiento se actualiza automticamente a la siguiente interfaz y ruta mejores.
En Figura 4-1, hemos configurado una red IPX interna de direccin 0x10000010 y
hemos usado una direccin de nodo 00:00:00:00:00:01. sta ser la direccin de
nuestra interfaz primaria y la que ser anunciada va SAP. Nuestro enrutamiento
reflejar que esta red es accesible a travs de cualquiera de nuestro puertos de
red reales, as que los nodos siempre usarn la mejor ruta de red para conectarse
a nuestro servidor.
Para crear esta red interna, use la orden ipx_internal_net incluido en el paquete
de herramientas IPX de Greg Page. De nuevo, un ejemplo sencillo demuestra su
uso:
#ipx_internal_net add 10000010 000000000001

Este orden creara una red IPX interna con direccin 10000010 y direccin de
nodo 000000000001. La direccin de red, como cualquier otra direccin de red
IPX, debe ser nica en su red. La direccin de nodo es completamente arbitraria,
ya que normalmente slo habr un nodo en la red. Todo nodo debe tener slo una
red IPX interna, y siempre ser la red primaria.
Para eliminar una red IPX interna, use:
#ipx_internal_net del

Una red IPX interna no le servir absolutamente para nada a menos que su nodo
proporcione un servicio y adems tenga ms de una interfaz IPX activa.
249

LINUX

Mayo 2004

4.4.5. Montando un Volumen NetWare Remoto


IPX se usa comnmente para montar volmenes NetWare en el sistema de
archivos de Linux. Esto permite comparticiones de datos basadas en archivos
entre otros sistemas operativos y Linux. Volker Lendecke ha desarrollado el
cliente NCP para Linux y un juego de herramientas asociadas que hacen posible
la comparticin de datos.
En un entorno NFS, hemos usado la orden mount de Linux para montar el
sistema de archivos remoto. Desafortunadamente, el sistema de archivos NCP
posee requisitos propios que hacen poco prctico integrarlo dentro del mount
normal. Linux tiene un orden ncpmount que es el que usaremos en su lugar. El
orden ncpmount es una de las herramientas del paquete ncpfs de Volker.
Antes de poder montar volmenes NetWare, debe asegurarse de que su interfaz
de red IPX est configurada correctamente (como se ha descrito anteriormente).
Luego debe conocer sus detalles de ingreso (login) en el servidor NetWare que
quiere montar; esto incluye la ID de usuario y la contrasea. Finalmente, necesita
saber qu volumen desea montar y sobre qu directorio local quiere montarlo.
Un Sencillo Ejemplo de ncpmount
Un sencillo ejemplo del uso de ncpmount:
#ncpmount -S ALES_F1 -U rick -P d00-b-gud /mnt/cerveceria

Este orden monta todos los volmenes del servidor de ficheros ALES_F1 sobre el
directorio /mnt/cerveceria, utilizando el nombre de ingreso rick con la contrasea
d00-b-gud. Normalmente, se pone el setuid de la orden ncpmount a root, y as
puede ser utilizado por cualquier usuario de Linux. Por defecto, ese usuario posee
la conexin y slo l o root podr desmontarla.
NetWare incorpora la nocin de volumen, que es anloga a un sistema de
archivos en Linux. Un volumen NetWare es la representacin lgica de una
sistema de ficheros NetWare, que puede ser una particin de disco individual o
estar diseminada por muchas particiones. Por defecto, el soporte de NCPFS de
Linux trata a los volmenes como subdirectorios de una sistema de archivos
lgico mayor representado por todo el servidor de archivos. La orden ncpmount
250

LINUX

Mayo 2004

hace que todos los volmenes NetWare del servidor de archivos montado
aparezcan como un subdirectorio sobre el punto de montaje. Esto es conveniente
si quiere acceso a todo el servidor, pero por razones tcnicas complejas no podr
reexportar estos directorios usando NFS, en el caso de que desee hacerlo. En un
momento discutiremos una alternativa ms compleja que resuelve este problema.
La Orden ncpmount en Detalle
ncpmount tiene una gran nmero de opciones de lnea de ordens que le ofrecen
bastante flexibilidad a la hora de administrar sus montajes NCP. La ms
importante de todas se describe en la Tabla 4-3.

251

LINUX

Mayo 2004

Tabla 4-3. Argumentos de la orden ncpmount

Escondiendo Su Clave de Acceso NetWare


Es un problema de seguridad poner una clave en la lnea de orden, como hicimos
con la orden ncpmount.
Otros usuarios activos y concurrentes podran ver la clave si se les ocurre ejecutar
un programa como top o ps. Para reducir el riesgo de que otros vean y roben
claves de acceso NetWare, ncpmount es capaz de leer ciertos detalles de un
fichero en el directorio raz de un usuario. En este archivo, el usuario mantiene el
nombre de acceso y la clave asociada a cada uno de los sistemas de archivos
que l o ella tiene intencin de montar. El archivo se llama ~/.nwclient y debe
tener los permisos 0600 para asegurar que no puedan leerlo otros. Si los
permisos no son correctos, la orden ncpmount rehusar utilizarlo.
El archivo tiene una sintaxis muy simple. Cualquier lnea que empieze por un
carcter # es considerada como un comentario y se ignora. El resto de las lneas
tienen la sintaxis:
servidor/id clave

El servidor es el nombre del servidor de ficheros que contiene los volmenes que
se desean montar. La id es el nombre de acceso de su cuenta en ese servidor. El
campo clave es opcional. Si no es proporcionado, la orden ncpmount le pide al
usuario la clave cuando intenta montar. Si se especifica el campo clave con un
carcter , no se utiliza ninguna clave; esto es equivalente al argumento de lnea
de orden n. Puede proporcionar cualquier nmero de entradas, pero el servidor de
archivos debe ser nico. La primera entrada tiene una significacin especial. la
orden ncpmount utiliza el argumento de lnea de orden S para determinar qu
entrada de ~/.nwclient usar. Si no se especifica ningn servidor utilizando el
argumento S, se considera la primera entrada de ~/.nwclient, y es tratada como su
servidor preferido. Debe situar el servidor de archivos que monte ms
frecuentemente en la primera posicin del archivo.

Un Ejemplo Ms Complejo De ncpmount


252

LINUX

Mayo 2004

Veamos un ejemplo ms complejo de ncpmount que utilice unas cuantas de las


caractersticas que hemos descrito. Primero, construyamos un archivo ~/.nwclient
simple:
#DetallesdeaccesoNetWareparalaCerveceraylaVinateraVirtuales
#
#AccesoalaCervecera
ALES_F1/MATTstaoic1
#
#AccesoalaVinatera
REDS01/MATTstaoic1
#

Asegrese de que los permisos son correctos:


$chmod 600 ~/.nwclient

Montemos un volumen del servidor de la Vinatera bajo un subdirectorio de un


directorio compartido, especificando unos permisos de archivo y directorio tales
que otros puedan compartir los datos situados en l: $ ncpmount -S REDS01 -V
RESEARCH -f 0664 -d 0775 /usr/share/vinatera/datos/

Esta orden, en

combinacin con el archivo ~/.nwclient mostrado, montara el volumen


RESEARCH del servidor REDS01 en el directorio /usr/share/vinatera/datos/
utilizando la ID de acceso NetWare de MATT y la clave obtenida del archivo
~/.nwclient. Los permisos de los archivos montados son 0664 y los permisos de
directorio son 0775.
4.4.6. Explorando Algunas de las Otras Herramientas IPX
El paquete ncpfs contiene unas cuantas herramientas tiles que no hemos
descrito todava. Muchas de estas herramientas emulan a las herramientas que
son proporcionadas con NetWare. En esta seccin, veremos las ms tiles.
Listado de Servidores
La orden slist lista todos los servidores de archivos accesibles desde el nodo. La
informacin es obtenida del encaminador IPX ms cercano. Probablemente, esta
orden estaba dirigida originalmente a permitir a los usuarios ver qu servidores de
archivos estaban disponibles para ser montados. Pero se ha hecho til como
253

LINUX

Mayo 2004

herramienta de diagnstico de red, permitiendo a los administradores de red ver


dnde se est propagando la informacin SAP:
$slist
NPPWR31CD0123A91330000000000001
V242X14F02A3062DB0000000000001
QITG_284ELI05_F478A20430000000000001
QRWMA04F16B2030D6A000000000001
VWPDE02F0835540430000000000001
NMCS_33PARK08_F2248B0530000000000001
NCCRD00CD0121790430000000000001
NWGNGF0753171D02000000000001
QCON_7TOMLI04_F772760630000000000001
W639WF04D1014D0E000000000001
QCON_481GYM0G_F177690130000000000001
VITG_SOEMAIL_F4R33200C30000000000001

slist no acepta argumentos. La salida muestra el nombre del servidor de archivos,


la direccin de red IPX, y la direccin del nodo.
Enviar Mensajes a Usuarios NetWare
NetWare soporta un mecanismo para enviar mensajes a usuarios que han
ingresado en el sistema. La orden nsend implementa esta caracterstica en Linux.
Debe haber ingresado en el servidor para enviar mensajes, por lo que necesita
proporcionar el nombre del servidor de archivos y los detalles de acceso en la
lnea de orden junto con el usuario de destino y el mensaje a enviar:
#nsend -S vbrew_f1 -U pepe -P j0yj0y supervisor
Tmate una birra conmigo antes de acabar con las colas de impresin!

Aqu, un usuario con nombre de acceso pepe le enva una tentadora invitacin a
la persona que usa la cuenta supervisor en el servidor de archivos ALES_F1. Si
no los proporcionamos, se utilizar nuestro servidor de archivos y credenciales de
acceso predeterminados.
Leyendo y Manipulando los Datos del Bindery
Todo servidor de archivos NetWare mantiene una base de datos con la
informacin sobre sus usuarios y su configuracin. Esta base de datos se llama
bindery. Linux proporciona un conjunto de herramientas que permiten leerla, y si
254

LINUX

Mayo 2004

tiene privilegios de supervisor en el servidor, cambiarla y borrarla. Hay un listado


de estas herramientas en la Tabla 4-4.

Tabla 4-4. Herramientas de Manipulacin de la bindery de Linux

4.4.7. Imprimiendo en una Cola de Impresin NetWare


El paquete ncpfs contiene una pequea utilidad llamada nprint que enva trabajos
de impresin a travs de una conexin NCP a una cola de impresin NetWare.
Esta orden crea la conexin si no existe ya, y utiliza el archivo ~/.nwclient. Los
argumentos de lnea de orden utilizados para manejar el proceso de ingreso son
los mismos que los utilizados en la orden ncpmount, as que no los veremos de
nuevo aqu. Cubriremos las opciones de lnea de orden ms importantes en
nuestros ejemplos.
La nica opcin requerida en la orden nprint es el nombre del archivo a imprimir.
Si se especifica un en el nombre de archivo o si no se especifica nada, nprint
aceptar el trabajo de impresin desde stdin. Las opciones ms importantes de
nprint especifican el servidor de archivos y la cola de impresin a los que desea
enviar el trabajo. La Tabla 4-5 lista las opciones ms importantes.

255

LINUX

Mayo 2004

Tabla 4-5. Opciones de Lnea de Orden de nprint

Un ejemplo de nprint sera:


$nprintSREDS01qPSLASERc2/home/matt/ethylene.ps

Este orden imprimira dos copias del archivo /home/matt/ethylene.ps a la


impresora llamada PLASER en el servidor de archivos REDS01, utilizando el
nombre de usuario y la clave obtenidas del archivo ~/.nwclient.
Utilizando nprint con el Demonio de Impresin en Lnea
Linux utiliza el software de impresin en lnea estilo BSD. El demonio de
impresin en lnea (lpd) es un demonio que mira en un directorio de cola (spool)
local si hay trabajos en cola que tienen que imprimirse.
lpd lee el nombre de la impresora y otros parmetros a partir del formato especial
del archivo de la cola, y escribe los datos en la impresora, pasando opcionalmente
los datos a travs de un filtro para transformarlos o manipularlos de alguna
manera.
El demonio lpd utiliza una simple base de datos llamada /etc/printcap para
almacenar la configuracin de la impresora, incluyendo qu filtros hay que
ejecutar. Normalmente, lpd se ejecuta con los permisos de un usuario de sistema
especial llamado lp.
Se puede configurar nprint como un filtro para lpd, lo que permite a los usuarios
de su mquina Linux imprimir directamente en impresoras remotas alojadas en un
servidor de ficheros NetWare. Para esto, el usuario lp debe poder escribir
peticiones NCP en la conexin NCP al servidor.
256

LINUX

Mayo 2004

Una manera fcil de conseguir esto sin que el usuario lp tenga que establecer su
propia conexin e ingreso en el sistema es especificar lp como el dueo de una
conexin establecida por otro usuario. Se lista un ejemplo completo de cmo
configurar el sistema de impresin de Linux para que atienda trabajos de
impresin de clientes a travs de NetWare en tres pasos:
1. Escribir un guin de encapsulamiento (wrapper).
El archivo /etc/printcap no permite que se le pasen opciones a los filtros. Por
tanto, necesita escribir un pequeo guin que invoque la instruccin que desea
junto con sus opciones. El guin de encapsulamiento puede ser tan simple como:
#!/bin/sh
#p2pslasersencilloscriptpararedirigirstdinala
#colaPSLASERenelservidorREDS01
#
/usr/bin/nprintSREDS01UstuartqPSLASER
#

Guardar el guin en el archivo /usr/local/bin/p2pslaser.


2. Escribir la entrada en /etc/printcap.
Necesitaremos configurar el guin p2pslaser que hemos creado como filtro de
salida en
/etc/printcap. Sera algo as:
pslaser|PostguinLaserPrinterhostedbyNetWareserver:\
:lp=/dev/null:\
:sd=/var/spool/lpd/pslaser:\
:if=/usr/local/bin/p2pslaser:\
:af=/var/log/lpacct:\
:lf=/var/log/lperrs:\
:pl#66:\
:pw#80:\
:pc#150:\
:mx#0:\
:sh:

3. Aadir la opcin c a ncpmount.


ncpmountSREDS01....clp....

Nuestro usuario local stuart debe especificar al usuario lp como dueo de la


conexin cuando monte el servidor NetWare remoto.
Ahora cualquier usuario de Linux puede elegir pslaser como el nombre de
impresora cuando invoque a lp. El trabajo de impresin ser enviado al servidor
NetWare especificado y entrar en la cola de impresin.

257

LINUX

Mayo 2004

Manejando Colas de Impresin


La orden pqlist lista todas las colas de impresin disponibles en el servidor
especificado. Si no especifica un servidor de archivos en la lnea de orden con la
opcin -S, o un nombre de acceso y clave, stos se tomarn de la entrada por
defecto de su archivo ~/.nwclient:
#pqlist -S vbrew_f1 -U guest -n
Server:ALES_F1
PrintqueuenameQueueID

TESTAA02009E
Q2EF0200D9
NPI223761_P1DA03007C
Q1F1060004
IDATA0D0A003B
NPI223761_P3D80A0031

Nuestro ejemplo muestra una lista de las colas de impresin disponibles para el
usuario guest en el servidor de ficheros ALES_F1.
Para ver los trabajos de una cola de impresin, utilice la instruccin pqstat. Toma
como argumento el nombre de la cola de impresin, y lista todos los trabajos de
esa cola. Opcionalmente, puede proporcionarle otro argumento indicando cuntos
trabajos de la lista quiere mostrar. La siguiente salida es de ejemplo:
$pqstatSALES_F1NPI223761_P1
Server:ALES_F1Queue:NPI223761_P1QueueID:6A0E000C
SeqNameDescriptionStatusFormJobID

1TOTRANLyXdocumentpropuesta.lyxActive002660001

Podemos ver que slo hay un trabajo de impresin en la cola, que pertenece al
usuario TOTRAN. El resto de las opciones incluyen una descripcin del trabajo, su
estado y su identificador de trabajo. la orden pqrm se utiliza para eliminar trabajos
de impresin de una cola de impresin especificada. Para eliminar el trabajo de la
cola de la que acabamos de obtener el estado, sera:
$pqrmSALES_F1NPI223761_P102660001

La orden es bastante simple, pero es pesado de utilizar cuando se tiene prisa.


Sera un valioso proyecto escribir un guin bsico para simplificar esta operacin.
4.4.8. Emulacin del Servidor NetWare
258

LINUX

Mayo 2004

En Linux hay dos emuladores libres para servidores de ficheros NetWare. lwared
ha sido desarrollado por Ales Dryak y mars_nwe por Martin Stover. Ambos
paquetes proporcionan una emulacin elemental del servidor de ficheros NetWare
bajo Linux, permitiendo a clientes NetWare montar directorios de Linux exportados
como volmenes NetWare. Mientras que el servidor lwared es ms sencillo de
configurar, el servidor mars_nwe tiene ms caractersticas. La instalacin y
configuracin de estos paquetes es muy laboriosa y por lo tanto solo la
mencionamos.
4.5. Administracin deTaylor UUCP
UUCP fue diseado a finales de los aos setenta por Mike Lesk en los
laboratorios Bell de AT&T con el objetivo de crear una simple red sobre lneas de
telfonos para conectarse mediante llamadas telefnicas.
El propsito de esta seccin no es ofrecer una explicacin exhaustiva de las
opciones de la lnea de rdenes para las instrucciones de UUCP y lo que hacen,
sino darle una introduccin sobre cmo poner en marcha un nodo de UUCP. La
primera parte presenta una introduccin de cmo UUCP implementa ejecucin
remota y transmisin de archivos.
Sin embargo, asumiremos que usted est familiarizado con los programas de
usuario del paquete UUCP. stos son uucp y uux. Si no los conoce
suficientemente, consulte las correspondientes pginas de manual de cualquier
distribucin de Linux actualizada.
Aparte de los programas de usuario uucp y uux, el paquete UUCP contiene
algunas rdenes ms con fines nicamente administrativos. Se usan para
monitorizar el trfico UUCP en su nodo, eliminar archivos antiguos de registro o
crear estadsticas. No describiremos ninguna de estas utilidades porque son
perifricas a las tareas principales de UUCP. Adems, se encuentran bien
documentadas y su comprensin resulta bastante sencilla. De todos modos, hay
una tercera categora, que comprende los motores del UUCP. Se las conoce
como uucico (donde cico significa copy-in copy-out), y uuxqt, que ejecuta tareas
enviadas desde sistemas remotos.
4.5.1. Transferencias UUCP y ejecucin remota
259

LINUX

Mayo 2004

El concepto de tarea resulta vital para entender UUCP. Cada transferencia que
inicia un usuario con uucp o uux se llama tarea. Consta de una orden a ejecutar
en un sistema remoto, una recopilacin de archivos a transferir entre sitios o
ambas cosas.
Por ejemplo, la siguiente orden hace que UUCP copie el fichero netguide.ps a un
sistema remoto llamado pablo y ejecute la orden lpr en pablo para imprimir el
archivo:
$uux -r pablo!lpr !netguide.ps

Por lo general, UUCP no llama al sistema remoto de inmediato para llevar a cabo
una tarea (o cualquier otra cosa que pueda hacer con kermit). En cambio, guarda
la descripcin de la tarea de manera temporal. Esto se conoce como encolar. El
rbol de directorios bajo el que se guardan las tareas se llama por lo tanto
directorio de cola y se encuentra generalmente en /var/spool/uucp. En nuestro
ejemplo, la descripcin de la tarea contendra informacin sobre la orden remota a
ejecutar (lpr), el usuario que orden la ejecucin y un par de elementos ms.
Adems de la descripcin de la tarea, UUCP tiene que guardar el archivo de
entrada netguide.ps.
La localizacin y nomenclatura exactas de los archivos de cola puede varias
dependiendo de algunas opciones en tiempo de compilacin. Los UUCPs
compatibles con HDB guardan por lo general los archivos de cola en el
subdirectorio /var/spool/uucp con el nombre del sistema remoto. Cuando se
compilan para la configuracin Taylor, UUCP crea subdirectorios bajo el directorio
de cola especfico del sitio para diferentes tipos de archivos de cola.
A intervalos regulares, UUCP llama al sistema remoto. Cuando se establece una
conexin con el sistema remoto, UUCP transfiere los archivos en los que se
describe la tarea, adems de los archivos de entrada. Las tareas entrantes no se
ejecutarn de inmediato, sino slo tras haber terminado la conexin. La ejecucin
la gestion uuxqt, quien tambin se ocupa de redirigir cualquier tarea designada a
otro sitio.
Para distinguir entre tareas ms o menos importantes, UUCP asocia un nivel a
cada tarea. Se trata de un nico dgito de 0 a 9, de A a Z, y de a a z, en
260

LINUX

Mayo 2004

precedencia decreciente. El correo se suele colocar en la cola con nivel B o C,


mientras que las noticias se colocan con un nivel N. Las tareas con niveles ms
altos se transfieren antes. Los niveles pueden asignarse por medio de la opcin g
al invocar a uucp o uux.
Tambin se puede prohibir la transferencia de trabajos bajo un cierto nivel a horas
determinadas. Esto tambin se llama mximo nivel de cola permitido durante una
conversacin y el valor predeterminado es z. Perctese de la ambigedad de esta
terminologa: un fichero se transfiere slo si es igual o mayor que el mximo nivel
de cola.
El funcionamiento interno de uucico
Para comprender por qu uucico necesita saber ciertas cosas, una rpida
descripcin de cmo se conecta realmente a un sistema remoto resultar de
ayuda.
Cuando usted ejecuta uucico -s sistema desde la lnea de rdenes, primero tiene
que conectarse fsicamente. Las acciones a tomar dependen del tipo de conexin
a usar. Por ejemplo, cuando se usa una lnea telefnica, tiene que encontrar un
mdem, y marcar un nmero de telfono. Sobre TCP, tiene que llamar
gethostbyname(3) para convertir el nombre a una direccin de red, averiguar qu
puerto abrir, y conectar la direccin al puerto correspondiente.
Una vez que se ha establecido la conexin, hay que pasar un proceso de
autorizacin. Normalmente consiste en que el sistema remoto pide un nombre de
usuario y posiblemente una clave. Esto se llama el dilogo de entrada. El proceso
de autorizacin se lleva a cabo mediante el usual getty/login, o en conexiones
TCP por el propio uucico. Si la autorizacin es permitida, la parte remota de la
conexin ejecuta uucico. La copia local de uucico que inici la conexin se
denomina maestro, y la copia remota se denomina esclavo.
Ahora viene la fase de handshake: El maestro enva su nombre, adems de
varias opciones. El esclavo comprueba el nombre para ver si tiene permiso para
conectarse, para enviar y recibir archivos, etc. Las opciones describen (entre otras
cosas) el nivel mximo de archivos de cola que hay que transferir. Si esta opcin
est activada, tiene lugar una cuenta de conversacin, o comprobacin de la
secuencia de llamada.
261

LINUX

Mayo 2004

Con esta caracterstica, ambos ordenadores mantienen una cuenta de conexiones


exitosas, que se comparan. Si las cuentas no son iguales, la negociacin de
protocolos no tendr lugar. Esto es til para protegerse de impostores.
Finalmente los dos uucico tratan de ponerse de acuerdo en un protocolo de
transferencia comn. Este protocolo gobierna la manera en que los datos se
transfieren, la manera en que se comprueba la consistencia de los datos, y la
manera en que se retransmiten en caso de error. Hacen falta protocolos diferentes
debido a los diferentes tipos de conexiones que se soportan. Por ejemplo, las
lneas de telfono precisan un protocolo seguro que es pesimista respecto a
errores, mientras que una transmisin de TCP es fiable y puede usar un protocolo
ms eficiente que carece de la mayora de las comprobaciones de errores.
Una vez que las negociaciones se han completado, comienza la fase de la
verdadera transmisin. Ambos extremos ponen en funcionamiento el controlador
del protocolo elegido. Los controladores posiblemente lleven a cabo alguna
secuencia especfica del protocolo para la inicializacin.
Primero el maestro enva todos los archivos en la cola de este sistema remoto
cuyo nivel de cola es suficientemente alto. Cuando ha finalizado, informa al
esclavo que ha terminado, y que el esclavo puede ahora colgar. El esclavo puede
entonces colgar, o tomar el control de la conversacin. Esto es un cambio de
papeles: ahora el sistema remoto se convierte en maestro y el local en esclavo. El
nuevo maestro enva ahora sus ficheros. Cuando ha terminado, ambos uucicos
intercambian mensajes de terminacin, y cierran la comunicacin. Algunas de las
opciones en la lnea de rdenes para uucico las podemos encontrar en el
apndice.

4.5.2. Archivos de configuracin de UUCP


Al contrario que programas de transferencia de archivos ms simples, UUCP fue
diseado

para

ser

capaz

de

llevar

cabo

todas

las

transferencias

automticamente. Una vez que est correctamente configurado, no es necesaria


una constante participacin del administrador. La informacin necesaria para esto
se guarda en un par de archivos de configuracin que residen en el directorio
/usr/lib/uucp. La mayora de estos archivos se usan slo para conectarse a otro
ordenador.
262

LINUX

Mayo 2004

Una ligera introduccin a Taylor UUCP


Decir que la configuracin de UUCP es difcil sera una descripcin insuficiente.
Es cierto que es un asunto peliagudo, y el formato a veces demasiado conciso de
los ficheros de configuracin no hace las cosas ms fciles.
Para darle una idea de cmo se interacta con estos archivos, le introduciremos
los ms importantes, y echaremos un vistazo a algunos ejemplos. No
explicaremos ahora todo en detalle; una explicacin ms precisa se describe en
secciones posteriores. Si quiere configurar su ordenador para UUCP, puede
comenzar con los ficheros de ejemplo, y adaptarlos gradualmente. Puede elegir
los que se muestran a continuacin, o los que se incluyen en su distribucin de
Linux preferida.
Todos los archivos descritos en esta seccin se guardan en /etc/uucp o en un
subdirectorio de ste.
Algunas distribuciones de Linux contienen binarios de UUCP con soporte tanto
para la configuracin HDB como Taylor activado, y emplean diferentes
subdirectorios para cada grupo de ficheros de configuracin. Seguramente habr
un fichero README en /usr/lib/uucp.
Para que UUCP funcione correctamente, estos archivos tienen que pertenecer al
usuario uucp. Algunos de ellos tienen claves y nmeros de telfono, y por lo tanto
deberan tener permisos de 600. Aunque la mayora de los comandos de UUCP
tienen que tener el setuid a uucp, tiene que asegurarse de que el programa
uuchk no lo es. Si no, los usuarios seran capaces de ver las claves aunque
tengan modo 600.
El principal archivo de configuracin de UUCP es /etc/uucp/config, que se usa
para establecer las variables generales. La ms importante (y por ahora la nica)
es el nombre UUCP de su mquina. En la Cervera Virtual, usan vstout como su
pasarela UUCP:
#/etc/uucp/configprincipalficherodeconfiguracindeUUCP
nodenamevstout

263

LINUX

Mayo 2004

El siguiente archivo de configuracin en importancia es el archivo sys. ste


contiene toda la informacin especfica al sistema de los ordenadores con los que
usted se conecta. Esto incluye el nombre del ordenador, e informacin sobre la
propia conexin, tal como el nmero de telfono cuando se usa una conexin por
mdem. Un ejemplo tpico para un ordenador llamado pablo que se conecta por
mdem sera:
#/usr/lib/uucp/sysvecinosUUCP
#system:pablo
systempablo
timeAny
phone123456
portserial1
speed38400
chatogin:vstoutssword:lorca

time especifica las horas a las que puede llamarse al sistema remoto. chat
describe la macro del dilogo de entrada la secuencia de caracteres que deben
intercambiarse para permitir que uucico entre en pablo.
Volveremos a las macros ms tarde. El elemento port simplemente nombra una
entrada en el archivo port. (Acuda a Figura 4-2.) Puede asignar cualquier nombre
siempre que haga referencia a una entrada vlida en port.
El archivo port contiene informacin especfica a la propia conexin. Para
conexiones por mdem, describe el archivo de dispositivo a usar, el conjunto de
velocidades soportadas, y el tipo de equipo de marcacin conectado al puerto. La
entrada a continuacin describe /dev/ttyS1 (o sea, el puerto COM 2), en el cual
hay un mdem NakWell conectado que es capaz de funcionar a velocidades de
hasta 38400 bps. El nombre de la entrada se puede elegir para que coincida con
el nombre usado en el archivo sys.
#/etc/uucp/portpuertosdeUUCP
#/dev/ttyS1(COM2)
portserial1
typemodem
device/dev/ttyS1
speed38400
dialernakwell

La informacin que afecta al propio marcador se mantiene en otro archivo,


llamado lo adivinastedial. Para cada tipo de marcador, contiene bsicamente la
secuencia de instrucciones necesarias para llamar a otro ordenador, dado el
264

LINUX

Mayo 2004

nmero de telfono. Una vez ms, esto se especifica como una macro de dilogo.
Por ejemplo, la entrada para el anterior NakWell puede parecerse a esta:
#/etc/uucp/dialinformacinpormarcador
#mdemsNakWell
dialernakwell
chat""AT&FOKATDT\TCONNECT

La lnea que empieza con chat especifica el dilogo del mdem, que no es sino la
secuencia de rdenes enviadas y recibidas del mdem para inicializarlo, y para
hacerle marcar el nmero deseado. La secuencia \T ser reemplazada con el
nmero de telfono por el programa uucico.
Para dar una idea a grandes rasgos de cmo utiliza uucico estos archivos de
configuracin, suponga que utiliza la orden:
$uucico -s pablo

Lo primero que hace uucico es buscar pablo en el archivo sys. A partir de la


entrada en el archivo sys para pablo, el programa averigua que debera usar el
puerto serial1 para establecer la conexin. El archivo port le dice a uucico que se
trata de un puerto de mdem al que hay conectado un mdem NakWell.
uucico busca ahora en dial la entrada en la que se describe el mdem NakWell, y
al encontrarla, abre el puerto serie /dev/ttyS1 y ejecuta el dilogo de marcacin.
Es decir, enva AT&T, espera la respuesta ok, etc. Cuando encuentra la
cadena \T, la sustituye por el nmero (123--456) extrado del archivo sys.
Cuando el mdem devuelve CONNECT, la conexin se ha establecido y el
dilogo de marcacin se ha completado. uucico vuelve ahora al archivo sys y
ejecuta el dilogo de entrada. En nuestro ejemplo, esperara al login:, enviara
entonces su nombre de usuario (vstout), esperara a que se le solicitase el
password: y enviara la contrasea (lorca).
Tras completar la autorizacin, se supone que el sistema remoto ejecuta su propio
uucico. Entran los dos entonces en la fase de negociacin descrita en la seccin
previa.
Figura 4-2 ilustra las dependencias entre los archivos de configuracin.
265

LINUX

Mayo 2004

Figura 4-2. Interaccin entre los archivos de configuracin de Taylor UUCP

16.2.2. Lo que UUCP necesita saber


Antes de empezar a escribir los archivos de configuracin, debe conseguir cierta
informacin que UUCP necesita.
Primero, tiene que averiguar a qu puerto serie est conectado su mdem.
Normalmente, los puertos (DOS) COM1: a COM4: se corresponden con los
archivos especiales de los dispositivos /dev/ttyS0 a /dev/ttyS3. Algunas
distribuciones, como Slackware, crean un enlace llamado /dev/modem apuntando
al archivo del dispositivo ttyS* apropiado, y configuran kermit, seyon y cualquier
otro programa de comunicaciones para usar este archivo genrico. En ese caso,
debera usar /dev/modem en la configuracin de UUCP tambin.
La razn para esto es que todos los programas, para llamar por telfono, usan
unos archivos de bloqueo para indicar cundo un puerto serie est en uso. Los
nombres de estos archivos cerrojo son una concatenacin del texto LCK.. y el
nombre del archivo de dispositivo, por ejemplo, LCK..ttyS1. Si los programas
usasen nombres diferentes para un mismo dispositivo, no podran reconocer los
archivos cerrojo de los otros programas. En consecuencia, perturbaran la sesin
de conexin de cada uno si se ejecutan a la vez. Esto no es raro que ocurra

266

LINUX

Mayo 2004

cuando organiza sus llamadas de UUCP usando una entrada en el archivo


crontab.
A continuacin tiene que averiguar a qu velocidad se comunicarn su mdem y
Linux. Tendr que ajustar este valor a la velocidad de transferencia efectiva
mxima que espere obtener. La velocidad efectiva puede ser mucho mayor que la
velocidad fsica de transferencia de su mdem. Por ejemplo, muchos modems
envan y reciben datos a 56 kbps. Usando protocolos de compresin como
V.42bis, la velocidad real de transferencia puede alcanzar los 100 kbps.
Por supuesto, si quiere que UUCP sirva de algo, necesitar el nmero de telfono
al que llamar. Tambin necesitar un nombre de usuario vlido y probablemente
una clave en el sistema remoto.
Tambin necesitar saber exactamente cmo entrar en el sistema. Por ejemplo,
tiene que pulsar la tecla Enter antes de que aparezca la pregunta de nombre de
usuario?. Muestra el sistema remoto un login: o user?. Esto es necesario para
escribir la macro de dilogo, que es un guin que le dice a uucico cmo entrar. Si
no lo sabe, o si la macro de dilogo normal no funciona, intente llamar al sistema
con un programa como kermit o minicom, y apunte exactamente lo que tiene que
hacer.
Nomenclatura de nodos
Al igual que en redes basadas en TCP/IP, todas las mquinas necesitan tener un
nombre para la red de UUCP. Mientras slo quiera usar UUCP para transferencia
de archivos desde y hacia ordenadores que usted llama directamente, o en una
red local, el nombre no tiene que ajustarse a ninguna regla.
De todas formas, si usa UUCP para una conexin de correo o noticias, debera
pensar en registrar el nombre en el Proyecto de Mapeado UUCP. El Proyecto de
Mapeado UUCP se describe en Captulo 5. Incluso aunque forme parte de un
dominio, debera considerar tener un nombre UUCP oficial para su sitio.
Con frecuencia la gente elige su nombre UUCP de forma que coincida con el
primer elemento de su nombre de dominio completamente cualificado. Suponga
que la direccin de su dominio es swim.twobirds.com; entonces el nombre de su
nodo UUCP sera swim. Piense en los nodos UUCP como si slo se conociesen
entre ellos por sus respectivos nombres propios. Por supuesto, tambin puede
267

LINUX

Mayo 2004

usar un nombre UUCP que no tenga nada que ver con su nombre de dominio
completamente cualificado.
No obstante, asegrese de no emplear un nombre de sitio no cualificado en
direcciones de correo a menos que lo haya registrado como su nombre UUCP
oficial. En el mejor de los casos, el correo a una mquina UUCP no registrada se
perder en algn enorme agujero negro digital. Si emplea un nombre que alguien
ya est usando, el correo se dirigir a ese lugar causando al administrador del
correo de ese lugar un sinfn de dolores de cabeza.
De manera predeterminada, UUCP usa el nombre especificado como hostname
como el nombre UUCP del sitio. Este nombre suele adjudicarlo una orden en los
guiones rc durante el arranque del sistema, y se suele guardar en /etc/hostname.
Si su nombre UUCP difiere del de su mquina, tendr que usar la opcin
hostname en el archivo config para comunicarle a uucico su nombre UUCP. Los
archivos de los que UUCP obtiene su informacin los podemos ver en el
apndice.
Cuando crea haber configurado su sistema UUCP completamente, puede
compobar su configuracin con la herramienta uuchk (que puede encontrar en
/usr/lib/uucp). uuchk lee sus archivos de configuracin y le muestra un informe
detallado de los valores de configuracin usados para cada sistema.
Opciones generales de configuracin usando el fichero config
Normalmente no usar este archivo para otra cosa que especificar el nombre de
su nodo UUCP. De manera predeterminada, UUCP usar el nombre que haya
establecido con la orden hostname, pero por lo general resulta una buena idea
especificar el nombre UUCP explcitamente. He aqu un archivo config de
ejemplo:
#/usr/lib/uucp/configprincipalficherodeconfiguracinUUCP
hostnamevstout

Por supuesto, tambin existen otros parmetros configurables aqu, como los
referentes al nombre del directorio de colas, o los nombres de acceso para el
UUCP annimo. Esto ltimo se describir posteriormente.
Cmo informar a UUCP sobre otros sistemas mediante el archivo sys

268

LINUX

Mayo 2004

En el archivo sys se describen los sistemas que conoce su mquina. La clave


system nos presenta una nueva entrada; las lneas siguientes hasta la prxima
directiva system detallan las variables especficas de cada sitio. Comnmente,
una entrada de sistema define variables como el nmero de telfono y el dilogo
de entrada.
Las variables anteriores a la primera lnea system especifican valores
predeterminados a usar en todos los sistemas. Normalmente, colocar en esta
seccin variables del protocolo y similares.
Los campos ms importantes se tratan en detalle en los siguientes puntos.
I.- Nombre del sistema
La orden system nombra el sistema remoto. Debe especificar el nombre correcto
del sistema remoto, no un alias que se invente, porque uucico lo comparar con
la identificacin que reciba del sistema remoto una vez se conecte a l.
Cada nombre de sistema puede aparecer una sola vez. Si quiere usar varias
configuraciones para un mismo sistema (por ejemplo, nmeros de telfono
diferentes que

uucico

puede

usar alternativamente), puede

especificar

alternativas.
II.- Nmero de telfono
Si va a conectarse con el sistema remoto por va telefnica, en el campo phone se
especifica el nmero que debera marcar el mdem. Puede contener varios
separadores que interpretar el procedimiento de marcado de uucico. Un signo
de igual (=) significa esperar un tono de marcado secundario y un guin (-) genera
una pausa de un segundo. Algunas instalaciones telefnicas pueden atrancarse si
no se realizan pausas entre cdigos de acceso especiales y los nmeros de
telfono.
A menudo resulta conveniente usar nombres en vez de nmeros para describir los
cdigos de marcado segn la zona. El fichero dialcode le permite asociar un
nombre con un cdigo que use al especificar nmeros de telfono para las
mquinas remotas. Suponga que tiene el siguiente archivo dialcode:
#/usr/lib/uucp/dialcodetraduccindeloscdigosdemarcacin

269

LINUX

Mayo 2004

Bogoham024881
Coxton035119

Con estas traducciones, puede usar un nmero de telfono tal que Bogoham7732
en el archivo sys, que lo har probablemente algo ms legible y mucho ser
mucho ms fcil actualizar el cdigo de marcacin para Bogoham cada vez que
cambie.
III.- Puerto y Velocidad
Las opciones de puerto y velocidad se usan para elegir el dispositivo a usar para
llamar al sistema remoto y la velocidad mxima a la que debera ajustarse el
dispositivo. En una entrada de system se puede usar una opcin o varias de
manera conjunta. Cuando se busca un dispositivo adecuado en el fichero port,
slo se eligen los dispositivos con un nombre de puerto y/o rango de velocidad
que coincidan con los especificados.
Por lo general debera ser suficiente utilizar nicamente la opcin speed. Si slo
dispone de un dispositivo serie definido en port, uucico siempre toma el
adecuado por lo que slo tiene que especificar la velocidad deseada. Si tiene
varios mdems conectados a sus sistemas, con frecuencia no querr nombrar un
puerto concreto, porque si uucico encuentra que muchos coinciden prueba con
cada dispositivo hasta que encuentra uno que no se est usando.
IV.- El dilogo de entrada
Antes ya nos encontramos con la macro del dilogo de entrada, que le dice a
uucico cmo entrar en el sistema remoto. Consiste de una lista de palabras
clave, que especifican el texto que se espera y el que se enva por el proceso
local de uucico. El objetivo es hacer que uucico espere hasta que la mquina
remota enve una lnea pidiendo el nombre de usuario, y entonces enviar el
nombre de usuario, luego esperar a que pida la palabre clave, y enviar dicha
clave. Los textos de espera y de envo se dan alternativamente.
uucico automticamente aade un avance de lnea (\r) a cualquier texto enviado.
Por lo tanto, una macro de dilogo sencilla sera parecida a esta:
ogin:vstoutssword:catch22

270

LINUX

Mayo 2004

Dse cuenta de que los campos de texto de espera probablemente no contendrn


el texto completo. Esto es as para asegurarse de que el proceso de entrada se
lleve a cabo aunque el sistema remoto nos enve Login: en vez de login:. Si la
cadena que est esperando o enviando contiene espacios u otros caracteres de
espacios en blanco, debe usar comillas para delimitar el texto.
uucico tambin permite usar estructuras condicionales, por ejemplo en el caso de
que el programa getty de la mquina remota necesite ser reinicializado antes de
enviar una pregunta. Por esta razn, usted puede aadir un sub-dilogo a un texto
de espera, separado con un guin. El sub-dilogo se ejecuta slo si el primer
texto de espera falla, ej. si expira un temporizador. Una manera de usar esta
caracterstica es enviar un BREAK si el sistema remoto no enva una pregunta de
nombre de usuario. El siguiente ejemplo muestra un ejemplo de una macro de
dilogo que debera funcionar tambin en el caso de que usted tenga que pulsar
Enter antes de que aparezca la pregunta de entrada. El primer parmetro vaco,
"", comunica a UUCP que no espere nada sino que contine con la siguiente
cadena de envo:
""\n\r\d\r\n\cogin:BREAKogin:vstoutssword:catch22

Hay un par de cadenas de caracteres especiales y caracteres de escape que


pueden aparecer en la macro de dilogo. Esta es una lista incompleta de
caracteres legales en la pregunta de espera:
"" La cadena vaca comunica a uucico que no espere nada, sino que siga de
inmediato con la siguiente
cadena enviada.
\t Carcter de tabulador.
\r Carcter de retorno de lnea.
\s Carcter de espacio. Se necesita para incluir espacios en un dilogo.
\n Carcter de lnea nueva.
\\ Carcter de barra invertida.
En cadenas de caracteres de envo se pueden incluir, adems de los
mencionados anteriormente, los siguientes caracteres:
271

LINUX

Mayo 2004

EOT Carcter de fin de transmisin (^D).


BREAK Carcter Break.
\c Suprime el envo del carcter del lnea nueva al final de cada cadena de
caracteres.
\d Retrasa el envo 1 segundo.
/E Activa la comprobacin de eco. De esta forma, uucico esperar a leer el eco
de todo lo que escribe en el dispositivo antes de que contine con el dilogo. Se
usa principalmente en dilogos de modems (que veremos ms adelante). La
comprobacin de eco est desactivada por omisin.
\e Desactiva la comprobacin del eco.
\K Lo mismo que BREAK.
\p Pausa de una fraccin de segundo.
V.- Alternativas
A veces es deseable tener mltiples entradas para un mismo sistema, por ejemplo
si se puede acceder al sistema en diferentes lneas de mdem. Con Taylor UUCP
se puede hacer esto definiendo una alternativa
Una entrada alternativa mantiene todas las caractersticas de la entrada principal,
y especifica solamente aquellos valores que tienen que ser cambiados, o
aadidos. Una alternativa est separada de la entrada principal por una lnea que
contiene la palabre clave alternate
Para usar dos nmeros de telfono para pablo, habra que modificar su entrada
sys de la siguiente manera:
systempablo
phone123456
..lomismodeantes...
alternate
phone123455

Ahora, cuando llame a pablo, el programa uucico marcar primero el 123-456, y


si no funciona, probar la alternativa. La entrada alternativa retiene toda la otra
informacin de la entrada de sistema principal, y altera slo el nmero de telfono.
VI.- Restringir horas de llamada
272

LINUX

Mayo 2004

Taylor UUCP proporciona varios mtodos para restringir las horas a las que se
pueden efectuar llamadas a un sistema remoto. Una razn para hacer esto sera
por las limitaciones que el sistema remoto impone en sus servicios durante horas
de oficina, o simplemente para evitar las horas ms caras. Siempre se pueden
desactivar las restricciones con la opcin S o f en el programa uucico.
Por defecto, Taylor UUCP no permite conexiones a ninguna hora, as que usted
tiene que especificar algn horario en el archivo sys. Si no le importan las
restricciones, puede especificar la opcin time con un valor de Any en su archivo
sys. La manera ms sencilla de restringir los horarios de las llamadas es incluir
una entrada time seguida de una cadena formada por los subcampos da y hora.
Da puede ser una combinacin de Mo, Tu, We, Th, Fr, Sa, y Su. Tambin puede
especificar Any, Never, o Wk para los das laborables. La hora est formada por
dos valores de reloj de 24 horas separados por un guin. Especifican las horas
durante las que pueden efectuarse llamadas. La combinacin de estos elementos
se escribe sin espacios en blanco entre ellos. Se pueden especificar varios pares
da-hora separados por comas, tal y como se muestra en esta lnea:
timeMoWe03000730,Fr18052200

En este ejemplo se permiten llamadas en Lunes y Mircoles, de 3 de la maana a


7:30, y los Viernes entre las 6:05 y las 8:00 de la tarde. Cuando un campo de hora
incluye la medianoche, como Mo1830-0600, en realidad quiere decir el Lunes,
entre medianoche y las 6 de la maana, y entre las 6:30 de la tarde y
medianoche.
Las palabras especiales Any y Never significan que se pueden hacer llamadas
siempre o nunca, respectivamente. Taylor UUCP tambin tiene algunos elementos
especiales que puede usar en cadenas de tiempo como NonPeak y Night. Estos
elementos especiales son abreviaturas de Any2300-0800,SaSu0800-1700 y
Any1800-0700,SaSu respectivamente.
La orden time tiene una segunda variable opcional que describe el tiempo a
esperar para reintentar en minutos. Cuando un intento de conexin falla, uucico
no permitir otro intento de llamar al ordenador remoto hasta que transcurra un
cierto tiempo. De manera predeterminada, uucico usa un algoritmo de espera
273

LINUX

Mayo 2004

exponencial, segn el cual el intervalo de espera se incrementa con cada intento


fallido. Por ejemplo, si especifica un tiempo de reintento de 5 minutos, uucico no
aceptar llamar otra vez en los 5 minutos despus del ultimo intento fallido.
La orden timegrade le permite adjuntar un rango mximo de cola a un calendario.
Por ejemplo, asuma que tiene las siguientes rdenes timegrade en una entrada
system:
timegradeNWk19000700,SaSu
timegradeCAny

Esto permite que los trabajos con rango de cola de C o mayor (normalmente el
correo se pone en la cola con rango B o C) sean transferidos siempre que se
establece una comunicacin, mientras que las noticias (normalmente con rango
N) sern transferidas slo durante la noche y los fines de semana.
Al igual que time, la orden timegrade toma un intervalo entre reintentos de
minutos como una tercera variable opcional.
De todas formas, hay que hacer una observacin sobre los rangos de la cola.
Primero, la opcin timegrade slo se afecta a lo que sus sistemas envan; el
sistema remoto puede transferir lo que quiera. Puede usar la opcin calltimegrade para solicitarle de manera explcita que enve solamente tareas por
encima de un determinado rango de cola; pero no hay hay ninguna garanta de
que vaya a obedecer a su peticin.
De manera similar, el campo timegrade no se comprueba cuando llama un
sistema remoto, por lo que se le enviar cualquier tarea de la cola que sea para
l. De todos modos, el sistema remoto puede solicitar explcitamente a su uucico
que se ocupe nicamente de cierto rango de la cola.
Identificar dispositivos disponibles mediante el archivo port
El archivo port hace saber a uucico los puertos disponibles. Se trata normalmente
de puertos de mdem, pero tambin se soportan otros tipos como las lneas serie
y los sockets de TCP.

274

LINUX

Mayo 2004

Al igual que el fichero sys, port est formado por entradas separadas que
comienzan con la palabra clave port seguida del nombre del puerto. Este nombre
tambin puede usarse en la sentencia port del archivo sys.
No es necesario que el nombre sea nico; si hay muchos puertos con el mismo
nombre, uucico probar con cada uno hasta que encuentre alguno que pueda
usar.
La orden port debera estar seguida inmediatamente por la sentencia type, que
indica qu tipo de puerto se describe. Tipos vlidos son modem, direct para
conexiones directas y tcp para sockets de TCP. De no existir la orden port se
usar de manera predeterminada mdem como tipo de puerto.
Tanto para el mdem como para los puertos directos, debe especificar el
dispositivo para llamar por medio de la directiva device. Normalmente, se trata del
nombre del archivo especial de dispositivo del directorio /dev, como /dev/ttyS1.
En el caso de un mdem, la entrada del puerto tambin determina qu tipo de
mdem hay conectado al puerto.
Los diferentes tipos de mdem tienen que configurarse de manera diferente.
Incluso los mdems que dicen ser compatibles con Hayes no son siempre
realmente compatibles unos con otros. Por lo tanto, tiene que comunicarle a
uucico cmo inicializar el mdem y hacerle marcar el nmero deseado. Taylor
UUCP mantiene las descripciones de todos los marcadores en un archivo llamado
dial. Para usar cualquiera de stos, tiene que especificar el nombre del marcador
mediante la orden dialer.
A veces querr usar un mdem de diferentes maneras dependiendo de a qu
sistema llame. Por ejemplo, algunos mdems antiguos no entienden cuando un
mdem rpido trata de conectar a 56 kbps; simplementen dejan caer la lnea en
vez de negociar una conexin a 9.600 bps, por ejemplo. Cuando sabe que el sitio
pesado usa un mdem tan tonto, tiene que configurar su mdem de una manera
diferente cuando le llame. Para esto, necesita una entrada de puerto adicional en
el archivo port en la que especificar un marcador diferente.
Ahora puede darle al nuevo puerto un nombre diferente, como serie1-lento y usar
la directiva port en la entrada del sistema pesado en sys.
Otra manera de distinguir los puertos es por la velocidad que usan. Por ejemplo,
las dos entradas de puerto de la situacin anterior pueden ser as:
275

LINUX

Mayo 2004

#mdemNakwell;conectaraaltavelocidad
portserie1#portname
typemodem#modemport
device/dev/ttyS1#thisisCOM2
speed115200#supportedspeed
dialernakwell#normaldialer
#mdemNakwell;conectarabajavelocidad
portserie1#portname
typemodem#modemport
device/dev/ttyS1#thisisCOM2
speed9600#supportedspeed
dialernakwellslow#don'tattemptfastconnect

La entrada de sistema para el sitio pesado dara ahora serie1 como el nombre del
puerto, pero solicitara usarlo slo a 9.600 bps. uucico usa entonces
automticamente la segunda entrada de puerto. Al resto de sitios que tengan una
entrada de 115.200 bps en la entrada del sistema se les llamar usando la
primera entrada de puerto. De manera predeterminada, se usar la primera
entrada con una velocidad que coincida.
4.5.3. Controlar el acceso a las prestaciones de UUCP
UUCP es un sistema bastante flexible. Con esa flexibilidad viene la necesidad de
controlar cuidadosamente el acceso a sus prestaciones para prevenir abusos,
tanto intencionados como accidentales. Las principales propiedades a tener en
cuenta por el administrador de UUCP son la ejecucin de rdenes remotas, la
transferencia de archivos y el reenvo. Taylor UUCP proporciona medios para
limitar la libertad de mquinas UUCP remotas al aprovechar cada una de estas
prestaciones. Con una cuidadosa seleccin de los permisos, el administrador de
UUCP puede asegurarse de preservar la seguridad de la mquina.
Ejecucin de rdenes
Es tarea de UUCP copiar ficheros de un sistema a otro y solicitar la ejecucin de
ciertas rdenes en sistemas remotos. Evidentemente, usted como administrador
querr controlar qu derechos garantiza a otros sistemas permitirles ejecutar
cualquier orden que elijan en su sistema definitivamente no es una buena idea.
De manera predeterminada, las nicas rdenes que permite ejecutar Taylor UUCP
a otros sistemas en su mquina son rmail y rnews, que se usan habitualmente
para intercambiar correo-e y noticias de Usenet sobre UUCP. Para cambiar el
conjunto de rdenes para un sistema en particular, puede usar la palabra clave
276

LINUX

Mayo 2004

commands en el fichero sys. De manera similar, puede querer limitar la ruta de


bsqueda a los directorios que contengan las rdenes permitidas. Puede cambiar
la ruta de bsqueda permitida para una mquina remota con la sentencia
command-path . Por ejemplo, puede querer permitir al sistema pablo ejecutar la
orden bsmtp adems de rmail y rnews:
systempablo
...
commandsrmailrnewsbsmtp

Transferencias de archivos
Taylor UUCP tambin le permite ajustar las transferencias de archivos con un
gran detalle. De manera extrema, puede desactivar las transferencias hacia y
desde un sistema en particular. Simplemente configure request como no, y el
sistema remoto no podr ni descargar archivos de su sistema ni enviarle fichero
alguno. De manera similar, puede prohibir a sus usuarios que transfieran archivos
hacia o desde un sistema configurando transfer como no. De manera
predeterminada, se permite a los usuarios de los sistemas local y remoto tanto
cargar como descargar archivos.
Adems, puede configurar hacia y desde qu directorios pueden copiarse
archivos. Normalmente querr restringir el acceso desde los sistemas remotos a
una jerarqua de un nico directorio, pero permitiendo a sus usuarios el envo de
archivos desde sus directorios de usuario. Comnmente, se permite a los
usuarios remotos recibir archivos slo desde el directorio UUCP pblico
/var/spool/uucppublic. ste es el lugar tradicional donde poner los archivos
disposicin pblica, de manera similar a los servidores FTP en Internet.
Taylor UUCP ofrece cuatro rdenes diferentes para configurar los directorios de
envo y recepcin de archivos. Se trata de: local-send, que especifica la lista de
directorios desde los que un usuario puede solicitar a UUCP que enve archivos;
local-receive, que proporciona una lista de directorios desde los que un usuario
puede solicitar recibir archivos; y remote-send y remote-receive, que se
comportan de manera anloga desde un sistema externo. Observe el siguiente
ejemplo:
277

LINUX

Mayo 2004

systempablo
...
localsend/home~
localreceive/home~/receive
remotesend~!~/incoming!~/receive
remotereceive~/incoming

La orden local-send permite a los usuarios de su mquina enviar cualquier


archivo bajo /home y desde el directorio pblico de UUCP hacia pablo. La orden
local-receive les permite entonces recibir tanto en el directorio receive de
uucppublic en el que cualquiera puede escribir, o en cualquier archivo con
permisos de escritura universal bajo /home. La directiva remote-send permite a
pablo solicitar archivos desde /var/spool/uucppublic, excepto los de los directorios
incoming y receive. Esto se le seala a uucico precediendo los nombres de los
directorios con signos de exclamacin. Finalmente, la ltima lnea permite a pablo
subir archivos a incoming.
Uno de los mayores problemas con la transferencia de archivos usando UUCP es
que slo recibe archivos en los directorios con permiso de escritura universal.
Esto puede tentar a algunos usuarios a poner trampas para otros usuarios, etc.
Sin embargo, no hay salida a este problema excepto la desactivacin total de la
transferencia de archivos por UUCP.
Reenviar
UUCP ofrece un mecanismo para que otros sistemas lleven a cabo transferencias
de archivos por usted. Por ejemplo, suponga que su sistema tiene acceso por
uucp a un sistema llamado seci, pero no a otro sistema llamado uchile. Esto le
permite hacer que seci descague un archivo desde uchile por usted y se lo enve
a su sistema. La siguiente orden lograra esto:
$uucp -r seci!uchile!~/find-ls.gz ~/uchile.files.gz

A esta tcnica de pasar una tarea a travs de muchos sistemas se la conoce


como reenvo
De manera predeterminada, Taylor UUCP prohibe el reenvo. Para habilitar el
reenvo en un sistema en particular, puede usar la orden forward. Esta orden
278

LINUX

Mayo 2004

especifica una lista de sitios hacia o desde los que el sistema puede solicitarle
reenviar tareas. Por ejemplo, el administrador UUCP de seci tendra que aadir
las siguientes lneas al archivo sys para permitir a pablo solicitar archivos desde
uchile:
####################
#pablo
systempablo
...
forwarduchile
####################
#uchile
systemuchile
...
forwardtopablo

4.5.4. Configuracin de su sistema para recibir llamadas


Si quiere configurar su sitio para recibir llamadas tendr que permitir conexiones
por su puerto serie y personalizar algunos archivos del sistema para ofrecer
cuentas UUCP, lo que cubriremos en esta seccin.
Proporcionar cuentas UUCP
A continuacin tiene que configurar las cuentas de usuarios que permiten a
sistemas remotos entrar en su sistema y establecer una conexin de UUCP.
Generalmente tendr que suministrar un nombre de usuario para cada sistema
que se conecte con usted. Cuando configura una cuenta para el sistema pablo,
puede darle el nombre de usuario Upablo. No hay ninguna poltica sobre los
nombres de entrada; pueden ser cualquier cosa, pero le convendr que el nombre
de entrada pueda relacionarse fcilmente con el nombre del sitio remoto.
Para los sistemas que se conectan con el suyo a travs de puerto serie,
normalmente tendr que aadir estas cuentas al archivo de contraseas del
sistema /etc/passwd. Una buena prctica es poner todas las entradas de UUCP
en un grupo especial como uuguest. El directorio principal de la cuenta debera
configurarse como el directorio pblico de la cola /var/spool/uucppublic; su
intrprete de rdenes de entrada debe ser uucico.
279

LINUX

Mayo 2004

Para servir a sistemas UUCP que se conecten con su sitio sobre TPC, tendr que
configurar inetd de forma que gestione las conexiones entrantes por el puerto
uucp aadiendo la siguiente lnea a su /etc/inetd.conf:
uucpstreamtcpnowaitroot/usr/sbin/tcpd/usr/lib/uucp/uucicol

La opcin l hace que uucico lleve a cabo su propia autorizacin de entrada.


Solicitar un nombre de entrada y una contrasea igual que el programa login
estndar, pero basndose en su propia base de datos privada con las claves en
vez de en /etc/passwd. Este archivo privado de contraseas se conoce como
/etc/uucp/passwd y contiene pares de nombres de entrada y contraseas:
UpabloIslaNegra
Ulorcaco'rdoba

Protegerse uno mismo de los estafadores


Uno de los mayores problemas con UUCP es que el sistema que nos llama puede
mentir acerca de su nombre; comunica su nombre al sistema que llama despus
de entrar, pero el servidor no tiene manera de comprobarlo. Por consiguiente, un
atacante podra entrar con su propia cuenta de UUCP, pretender ser otra persona,
y coger el correo de esa otra persona. Esto representa un grave problema,
especialmente si usted ofrece entrada mediante UUCP annimo, que tiene una
clave pblica.
Usted debe protegerse de estos impostores. La cura de esta enfermedad va a
requerir que cada sistema un nombre de entrada en particular especificando un
called-login en sys. Una entrada de sistema de ejemplo sera algo as:
systempablo
...usualoptions...
calledloginUpablo

Y cuando un sistema entre y finja ser pablo, uucico comprobar si ha entrado


como Upablo.
De no ser as, se desconectar al sistema que haya llamado. Debera
acostumbrarse a aadir la orden called-login a cada entrada de sistema que
aada a su archivo sys. Es importante que haga esto en todos los sistemas de su
fichero sys, independientemente de si van a llamar a su sistema o no. Para los
280

LINUX

Mayo 2004

sitios que nunca le llamen, probablemente debera asignar called-login a algn


nombre de usuario totalmente ficticio, como upablo.nuncaentras.
Sea un paranoico: comprobacin de la secuencia de llamadas
Otra manera de detectar y rechazar a los impostores es usar comprobaciones
de la secuencia de llamada.
stas le ayudan a protegerse de intrusos que hayan logrado averiguar de alguna
manera una contrasea con la que entrar a su sistema UUCP.
Cuando usa comprobacin de secuencia de llamadas, ambas mquinas
mantienen una cuenta del nmero de conexiones establecidas hasta el momento.
Se incrementa con cada conexin. Despus de entrar, el llamador enva su
nmero de secuencia de llamadas y el sistema llamado lo comprueba con su
propio nmero. Si no son iguales, el intento de conexin es rechazado. Si el
nmero inicial se elige aleatoriamente, los atacantes lo tendrn ms difcil para
adivinar el nmero de secuencia de llamadas correcto.
Pero la comprobacin de la secuencia de llamada sirve para ms que esto:
aunque una persona muy inteligente descubriese su nmero de secuencia de
llamada as como su clave, usted sabr que esto ha ocurrido. Cuando el atacante
llama al sistema de UUCP que le provee el correo a usted y roba su correo, esto
incrementa el nmero de secuencia de llamada en uno. La siguiente vez que
usted se conecte con su proveedor de correo e intenta entrar, el uucico remoto le
rechazar, porque los nmeros de secuencia ya no son iguales.
Si ha activado la comprobacin de las secuencias de llamadas, debera mirar sus
ficheros de registro de manera regular en busca de mensajes de error que
apunten a posibles ataques. Si su sistema rechaza el nmero de secuencias de
llamadas que le ofrece el sistema que llama, uucico pondr un mensaje en el
fichero de registro diciendo algo como Out of sequence call rejected. (Llamada
fuera de secuencia rechazada). Si su sistema es rechazado por quien le
suministra porque los nmeros de la secuencia no estn sincronizados, pondr un
mensaje

diciendo

Handshake

failed

(RBADSEQ)

(Negociacin

fallida

(RBADSEQ)).
Para activar la comprobacin de secuencias de llamada, aada la siguiente orden
a la entrada del sistema:
281

LINUX

Mayo 2004

#activarcomprobacindesecuenciasdellamada
sequencetrae

Adems, tiene que crear el archivo que contiene el nmero de secuencias en s.


Taylor UUCP guarda el nmero de secuenciasen un archivo llamado .Sequence
en el directorio de cola del sitio remoto. Debe ser propiedad de uucp y debe estar
en modo 600 (esto es, slo uucp puede leerlo y modificarlo). Lo mejor es
inicializar este archivo con un valor que ambas partes hayan acordado
previamente. Una manera sencilla de crear este archivo es:
#cd /var/spool/uucp/pablo
#echo 94316 > .Sequence
#chmod 600 .Sequence
#chown uucp.uucp .Sequence

Evidentemente, el sitio remoto tiene que habilitar igualmente la comprobacin de


secuencias de llamadas y comenzar usando exactamente el mismo nmero de
secuencia.
UUCP annimo
Si quiere ofrecer acceso a su sistema por UUCP annimo primero tendr que
configurar una cuenta especial para ello como se describe anteriormente. Una
prctica comn es proporcionar a la cuenta annima uucp como nombre de
entrada y contrasea.
Adems, tiene que configurar unas pocas opciones de seguridad para sistemas
desconocidos. Por ejemplo, puede querer prohibir que ejecuten cualquier orden
en su sistema. De todas maneras, no puede ajustar estas variables en una
entrada del archivo sys porque la orden system requiere el nombre del sistema,
que usted no tiene. Taylor UUCP resuelve este dilema mediante la orden
unknown. unknown puede usarse en el archivo config para especificar cualquier
orden que pueda aparecer de manera habitual en una entrada de sistema:
unknownremotereceive~/incoming
unknownremotesend~/pub

282

LINUX

Mayo 2004

unknownmaxremotedebugnone
unknowncommandpath/usr/lib/uucp/anonbin
unknowncommandsrmail

Esto restringir la descarga de archivos desde sistemas desconocidos bajo el


directorio pub y la carga de archivos en el directorio incoming bajo
/var/spool/uucppublic. La prxima lnea har que uucico ignore cualquier peticin
desde el sistema remoto para activar la depuracin localmente. Las dos ltimas
lneas permiten a sistemas desconocidos ejecutar rmail; pero la ruta especificada
hace que uucico busque la orden rmail nicamente en un directoro privado
llamado anon-bin. Esta restriccin le permite ofrecer un rmail que, por ejemplo,
reenve todo el correo al superusuario para que lo examine. Esto permite a los
usuarios annimos ponerse en contacto con el administrador del sistema
previnindoles al mismo tiempo de inyectar correo en otros sitios.
Para habilitar el UUCP annimo debe especificar al menos una sentencia
unknown en config. De otra manera uucico rechazar todos los sistemas
desconocidos.

4.5.5. Protocolos UUCP de bajo nivel


Para negociar el control de la sesin y las transferencias de archivos con el
sistema remoto, uucico usa un grupo de mensajes estndar. Esto es lo que se
llama normalmente protocolo de alto nivel. Durante la fase de inicializacin y la
fase de desconexin stos se envan simplemente como cadenas de caracteres.
Sin embargo, durante la fase de transferencia, se usa tambin un protocolo de
bajo nivel, que resulta transparente para los niveles superiores. De esta manera
es posible comprobar errores cuando se usan lneas poco fiables, por ejemplo.
Descripcin del protocolo
Dado que UUCP se usa sobre diferentes tipos de conexiones, como lneas serie,
TCP, o incluso X.25, es preciso usar protocolos de bajo nivel especficos. Adems,
varias implementaciones de UUCP han introducido diferentes protocolos para
hacer lo mismo.
283

LINUX

Mayo 2004

Los protocolos se pueden dividir en dos categoras: de flujo streaming y por


paquetes. La primera clase de protocolos transfiere un archivo entero,
posiblemente calculando una suma de comprobacin. Esto apenas supone un
gasto extra de tiempo, pero precisa una conexin fiable, porque cualquier error
causara que todo el fichero tenga que volver a ser enviado. Estos protocolos se
suelen usar sobre conexiones de TCP, pero no sobre lneas telefnicas. Aunque
los modems modernos hacen un buen trabajo corrigiendo errores, no son
perfectos, y tampoco lo es la deteccin de errores entre el ordenador y el mdem.
Por otra parte, los protocolos por paquetes parten el fichero en varias partes de
igual tamao. Cada paquete se enva y recibe por separado, se realiza una suma
de comprobacin, y se devuelve al origen un paquete de confirmacin. Para que
sea ms eficiente, se inventaron protocolos de ventanas deslizantes, que
permiten un nmero limitado (una ventana) de paquetes sin esperar confirmacin
en un momento dado. Esto reduce considerablemente la cantidad de tiempo que
uucico tiene que esperar durante una transmisin. An as, todos los clculos
extra necesarios en comparacin a un protocolo de flujo hace que los protocolos
de paquetes sean ineficientes sobre TCP pero ideales para las lneas telefnicas.
El caudal del flujo de datos tambin supone una diferencia. A veces enviar
caracteres de 8 bits sobre una conexin serie puedes resultar imposible; por
ejemplo, si la conexin atraviesa un estpido servidor de terminales que se
deshace del octavo bit. Cuando transmite caracteres de 8 bits sobre una conexin
de 7 bits tienen que codificarse. En el peor caso posible, la codificacin duplica la
cantidad de datos a transmitir aunque la compresin por hardware pueda
compensarlo. Las lneas por las que se pueden transmitir caracteres de 8 bits
arbitrarios suelen llamarse preparadas para 8 bits. ste es el caso de todas las
conexiones por TCP, as como de la mayora de las conexiones por mdem.
Taylor UUCP 1.06 soporta una amplia variedad de protocolos UUCP. Los ms
comunes son los vistos en el apndice.
Afinar el protocolo de transmisin
Todos los protocolos permiten alguna variacin en el tamao de los paquetes, el
cronmetro y similares.
284

LINUX

Mayo 2004

Usualmente, los valores por omisin funcionan bien, pero puede no ser ptimo
para su configuracin. El protocolo g, por ejemplo, usa tamaos de ventanas de 1
a 7, y tamaos de paquetes en potencias de 2 desde 64 a 4096. Si su lnea
telefnica es tan ruidosa que ignora el 5 por ciento de los paquetes,
probablemente debera disminuir el tamao de los paquetes y de la ventana. Sin
embargo, en lneas de telfono muy buenas el hecho de enviar acuses de recibo
por cada 128 bytes puede resultar un desperdicio, as que podra incrementar el
tamao de los paquetes a 512 o incluso 1024. La mayora de los binarios que se
incluyen en las distribuciones de Linux usan de manera predeterminada un
tamao de ventana 7 y paquetes de 128 bytes.
Taylor UUCP le permite ajustar los parmetros con la orden protocol-parameter
en el fichero sys. Por ejemplo, para ajustar el tamao de paquete a 512 en el
protocolo g cuando se hable con pablo, tendr que aadir:
systempablo
...
protocolparametergpacketsize512

Los parmetros configurables y sus nombres varan de un protocolo a otro. Para


una lista completa de ellos acuda a la documentacin que acompaa a las fuentes
de Taylor UUCP.
Elegir protocolos especficos
No todas las implementaciones de uucico son capaces de comunicarse por
medio de todos los protocolos, por lo que durante la fase de negociacin inicial
ambos procesos tienen que ponerse de acuerdo en la eleccin de un protocolo
comn. El uucico maestro proporciona al esclavo una lista de protocolos
soportados envindole Pprotlist, de la cual el esclavo elegir uno.
Basndose en el tipo de puerto usado (mdem, TCP o conexin directa) uucico
compondr una lista de protocolos predeterminados. Para la conexin directa o
por mdem esta lista suele constar de i, a, g, G y j.
Para las conexiones por TCP la lista suele ser t, e, i, a, g, G, j y f. Puede
sobreescribrir esta lista predeterminada con la orden protocols, que puede
285

LINUX

Mayo 2004

especificarse en una entrada de sistema as como en una entrada de puerto. Por


ejemplo, puede editar la entrada de su mdem en el archivo port de esta manera:
portserial1
...
protocolsigG

Esto requerir que cualquier conexin entrante o saliente por este puerto use i, g
o G. Si el sistema remoto no soporta ninguno de stos la negociacin fallar.
4.5.6. Resolucin de problemas
En esta seccin se describe lo que puede ir mal con su conexin UUCP y se
sugieren lugares donde corregir el error. Aunque estos problemas suelen aparecer
con frecuencia hay muchas ms cosas que pueden fallar de las que hemos
listado.
Si tiene algn problema active la depuracin con xall, y mire la salida de Debug en
el directorio de cola.
Este archivo debera ayudarle a reconocer rpidamente el problema. A menudo
resulta de ayuda activar el altavoz del mdem cuando no se conecta. Con
mdems compatibles con Hayes puede activar el altavoz aadiendo ATL1M1 OK
al dilogo de mdem en el archivo dial.
La primera comprobacin debera ser siempre si todos los permisos de archivos
son los correctos. uucico debera ser setuid uucp y todos los archivos de
/usr/lib/uucp, /var/spool/uucp y /var/spool/uucppublic debera tener a uucp como
propietario. Hay tambin algunos archivos ocultos en el directorio de cola de los
que uucp debe ser propietario igualmente.
Cuando est seguro de que los permisos de todos los archivos son los correctos y
siga teniendo problemas podr empezar entonces a interpretar los mensajes de
error de una manera ms literal. Echaremos ahora un vistazo a los problemas y
errores ms comunes.
I.- uucico sigue diciendo Wrong Time to Call
Esto probablemente signfica que en la entrada de sistema en sys no especific
una orden time que determina cundo se puede llamar al sistema remoto o
286

LINUX

Mayo 2004

especific unas horas que en realidad prohben llamar en ese momento. Si no se


especifica cundo se puede llamar uucico asume que nunca se puede llamar al
sistema.
II.- uucico se queja de que el sistema ya est en uso
Esto significa que uucico detecta un archivo de bloqueo para el sistema remoto
en /var/spool/uucp. El fichero de bloqueo puede provenir de una llamada anterior
al sistema que hubiese fallado o se hubiera interrumpido. Otra posible explicacin
es que hubiera otro proceso uucico intentando llamar al sistema remoto y se
hubiese atascado en una macro de dilogo o se hubiese detenido por cualquier
otra razn.
Para corregir este error mate todos los procesos uucico abiertos para el sitio con
una seal hangup y elimine todos los archivos de bloqueo que hayan podido
dejar.
III.- Puede conectar con el sistema remoto pero falla la macro de dilogo
Mire el texto que recibe del sistema remoto. Si est salteado, esto puede ser un
problema relacionado con la velocidad. Si no, confirme que realmente enva lo
que su macro de dilogo espera recibir. Recuerde, la macro de dilogo empieza
con una cadena de caracteres esperada. Si usted recibe la invitacin de entrada
al sistema (login), despus enva su nombre pero luego no se le pregunta por la
clave de acceso, inserte un retraso antes de enviarlo, o incluido entre las letras.
Puede ser que usted sea demasiado rpido para su mdem.
IV.- Su mdem no marca
Si su mdem no indica que la lnea DTR se ha levantado al hacer uucico una
llamada, posiblemente no le ha especificado el dispositivo correcto a uucico. Si
su mdem reconoce DTR, compruebe un programa de terminal que puede enviar
rdenes al mdem. Si esto funciona, active el eco con la orden \E al comienzo del
dilogo del mdem. Si el mdem no genera el eco de las rdenes durante el
dilogo compruebe que la velocidad de su lnea no sea demasiado alta o baja. Si
ve el eco, compruebe que no haya desacticado la respuesta del mdem o la haya
configurado como un cdigo numrico. Verifique que la macro de dilogo en s
287

LINUX

Mayo 2004

misma sea vlida. Recuerde que tiene que escribir dos barras invertidas para
enviar una al mdem.
V.- Su mdem intenta marcar pero no lo consigue
Inserte una pausa en el nmero de telfono, especialmente si tiene que marcar
una secuencia especial para obtener el acceso a una lnea exterior desde una red
telefnica corporativa. Asegrese de estar usando el tipo de marcado correcto, ya
que algunas redes telefnicas slo soportan un tipo de marcado. De manera
adicional, compruebe un par de veces el nmero de telfono para asegurarse de
que es el correcto.
VI.- Se entra con xito pero falla la negociacin
Esta situacin puede deberse a diversos problemas. Debera poder obtener
bastante informacin de la salida del archivo de registro. Mire qu protocolos
ofrece el sitio remoto (enva una cadena P protlist durante la negociacin). Para
que la negociacin se lleve a cabo con xito ambas mquinas deben soportar al
menos un protocolo comn, as que compruebe que efectivamente esto sea as.
Si el sistema remoto enva RLCK significa que hay un archivo de bloqueo suyo en
el sistema remoto. Si no est conectado a l por otra lnea solicite al administrador
del sistema remoto que lo elimine.
Si el sistema remoto enva RBADSEQ, significa que la comprobacin de
secuencias de llamada est activada para usted pero los nmeros no coinciden.
Si le enva RLOGIN es que no le permite entrar bajo esa identidad.
4.5.7. Archivos de registro y depuracin
Cuando compile UUCP para registrar los eventos a la Taylor, dispondr de tres
ficheros globales nicamente, todos ellos bajo el directorio de cola. El archivo de
registro principal es Log y contiene toda la informacin sobre las conexiones
establecidas y los archivos transferidos. Un extracto tpico podra ser algo como
esto:
uucicopablo(1994052817:15:01.66539)Callingsystempablo(portcua3)
uucicopablo(1994052817:15:39.25539)Loginsuccessful
uucicopablo(1994052817:15:39.90539)Handshakesuccessful
(protocol'g'packetsize1024window7)
uucicopablopostmaster(1994052817:15:43.65539)ReceivingD.pabloB04aj

288

LINUX

Mayo 2004

uucicopablopostmaster(1994052817:15:46.51539)ReceivingX.pabloX04ai
uucicopablopostmaster(1994052817:15:48.91539)ReceivingD.pabloB04at
uucicopablopostmaster(1994052817:15:51.52539)ReceivingX.pabloX04as
uucicopablopostmaster(1994052817:15:54.01539)ReceivingD.pabloB04c2
uucicopablopostmaster(1994052817:15:57.17539)ReceivingX.pabloX04c1
uucicopablo(1994052817:15:59.05539)Protocol'g'packets:sent15,
resent0,received32
uucicopablo(1994052817:16:02.50539)Callcomplete(26seconds)
uuxqtpablopostmaster(1994052817:16:11.41546)ExecutingX.pabloX04ai
(rmailokir)
uuxqtpablopostmaster(1994052817:16:13.30546)ExecutingX.pabloX04as
(rmailokir)
uuxqtpablopostmaster(1994052817:16:13.51546)ExecutingX.pabloX04c1
(rmailokir)

El siguiente archivo de registro importante es Stats, que lista estadsticas de


transferencia de ficheros. La seccin de Stats correspondiente a la transferencia
anterior sera algo similar a esto:
postmasterpablo(1994052817:15:44.78)
received1714bytesin1.802seconds(951bytes/sec)
postmasterpablo(1994052817:15:46.66)
received57bytesin0.634seconds(89bytes/sec)
postmasterpablo(1994052817:15:49.91)
received1898bytesin1.599seconds(1186bytes/sec)
postmasterpablo(1994052817:15:51.67)
received65bytesin0.555seconds(117bytes/sec)
postmasterpablo(1994052817:15:55.71)
received3217bytesin2.254seconds(1427bytes/sec)
postmasterpablo(1994052817:15:57.31)
received65bytesin0.590seconds(110bytes/sec)

El tercer archivo es Debug. La informacin de depuracin se escribe aqu. Si usa


la depuracin asegrese de que este fichero tenga el modo de proteccin 600.
Dependiendo del modo de depuracin que elija puede contener el nombre de
usuario y la contrasea que use para conectarse al sistema remoto.
4.6. SQUID
El Squid, es un programa que sirve de Proxy-Cache de Internet, lo que significa
que si accedes mas de una vez a una pagina, esta pagina se almacena en el
disco duro, y si no lo encuentra lo buscara en Internet.
Esto acelera la navegacin con internet y normalmente se usa en servidores que
se conectan Internet para que naveguen unos cuantos ordenadores a travs de
una conexin.
El Squid se configura desde un nico archivo, el /etc/squid.conf, que facilita
mucho las cosas.

289

LINUX

Mayo 2004

El archivo /etc/squid.conf, es muy sencillo de configurar ya que todos los


comandos internos estn comentados para facilitar la configuracin
http_port 3128
icp_port 3130
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
cache_dir ufs /mnt/squid 100 16 256
cache_access_log /mnt/squid/access.log
cache_log /mnt/squid/cache.log
cache_store_log /mnt/squid/store.log
client_netmask. 255.255.255.0

Esta parte es muy importante ya que se dan los permisos para que se pueda
acceder a la cache. Tenemos que fijarnos en dos lneas que se han puesto para
dar permisos a las IPs del 192.168.0.1 --> 192.168.0.255 como ejemplo.
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl mipc src 192.168.0.0/255.255.255.0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl Safe_ports port 280

# http-mgmt

acl Safe_ports port 488

# gss-http

acl Safe_ports port 591

# filemaker

acl Safe_ports port 777

# multiling http

acl CONNECT method CONNECT


#Default configuration:
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports

290

LINUX

Mayo 2004

http_access deny CONNECT !SSL_ports


#
# En este rengln se deben insertar las direcciones Ip de los clientes para dar el
acceso.
#
http_access allow localhost
http_access allow mipc
^^^^^^^^^^^^^^^^^^^^^^
http_access deny all

Una vez has hecho los cambios necesarios en el archivo de configuracin se


deber hacer lo siguiente:
1.- Para crear todo el sistema de archivos y directorios que usara Squid se debe
ejecutar:
root# squid -z

2.-

Ejecutar

el

Squid

para

que

funcione

partir

de

ese

instante.

Escribir 'setup' elegir 'System Services', y activar el espacio con la opcion de


squid. A partir de ese momento cada vez que se inicie el servidor se podr tener
un cache propio.
El cliente
Para poder emplear el Proxy-Cache, se tiene que configurar cada Navegador de
cada PC con los datos de la Cache. En este ejemplo pondremos:
IP-Proxy: 192.168.0.1 Puerto: 3128
Controlar el tamao de los archivos
Para facilitar el control de los clientes y poder controlar el tamao de los archivos
o paginas que se bajan, hay unas lneas en el archivo de configuracin que se
encargan de eso por lo cual tenemos que buscar en el archivo squid.conf:
# OPTIONS FOR TUNING THE CACHE
request_header_max_size 10 KB

291

LINUX

Mayo 2004

request_body_max_size 512 KB
reply_body_max_size 512 KB

Redireccionar el puerto de acceso a la web


Como redireccionar el puerto 80 que usan los clientes por defecto al puerto del
Squid sin que los usuarios se den cuenta de nada?
Suponemos que ya tenemos funcionando el Squid tal y como hemos hecho en los
pasos anteriores, ya comentamos la forma de usar Squid en los clientes
cambiando en cada uno de ellos el puerto al que tienen que acceder. Pero
imaginemos que tenemos muchos PCs, seria un trabajo de chinos tener que ir
uno a uno para hacer esta tontera, pues lo que se debe hacer es redireccionar el
puerto 80 al que usemos con el Squid, pero solo en el servidor. Ahora creamos un
fichero llamado 'compartir' en /usr/bin/ tal que asi:
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -j MASQ -s 192.168.2.0/16
#Redireccionar el puerto 80 al 3128
/sbin/ipchains -A input -j REDIRECT 3128 -p tcp -s 0.0.0.0/0 -d 0.0.0.0/0 80

Ahora le cambiamos las propiedades al archivo y le damos la propiedad de


ejecucin:
usuario /usr/bin$ chmod +x compartir

Ahora lo que nos interesa es que al arrancar el Linux nos ejecute el archivo que
hemos creado antes 'compartir'. Nos vamos al fichero /etc/rc.d/rc.local, lo
editamos y aadimos al final del todo antes de que ponga 'fi' esta linea:
[...]
cp -f /etc/issue /etc/issue.net
echo >> /etc/issue
# ---aqu empieza lo que aadimos------#compartir conexin a internet
/usr/bin/compartir

292

LINUX

Mayo 2004

# ---aqu termina lo que aadimos------fi

4.7. Configuracin del servidor de Terminales X.


Uno de los servicios interesantes que podemos configurar en unservidor Linux,
son las Terminales X; con este servicio es posible que cualquier maquina de la red
se pueda conectar al servidor y ocupar todos los recursos de este, sin importar
que el usuario de la red tenga o no un gran numero de recursos en su CPU, esto
lo podemos lograr con una simple configuracin entre el servidor y los clientes.
Teniendo el servidor funcionando, la red funcionando y en general con todo en
marcha y OK. Solo tenemos que hacer los siguientes cambios en un par de
scripts:
en el /etc/hosts
127.0.0.1

localhost

192.168.0.100 servidor1
#Agregamos entradas por cada maquina remota que queremos conectar al
servidor con el par IP Nombre Terminal
192.168.0.101 terminal1
192.168.0.102 terminal2
En el /etc/hosts.allow --ojo que esto es peligrosillo hacerlo tan a lo "tonto" como
aqu se hace puesto que autorizamos a esas IP a conectarse a cualquier puerto
del servidor .. menos a los "paranoicos".
ALL: 127.0.0.1

except paranoid

ALL: 192.168.0.100

except paranoid

#Aqu ponemos las IP's de los ordenadores que queremos que sean terminales
de este servidor.

293

LINUX

Mayo 2004

ALL: 192.168.0.101

except paranoid

ALL: 192.168.0.102

except paranoid

en el /etc/hosts.deny
ALL: ALL
Se supone que tenemos como orden de lectura de estos scripts primero el deny y
luego el allow de modo que denegamos el acceso a TODO menos a los que
damos acceso explicito con el hosts.allow, por lo general no hay que tocar nada
porque suele venir as "de fabrica".
En el /etc/X11/xdm/xdm-config
Hemos de comentar una lnea con un ! , en concreto hemos de comentar la lnea
siguiente de este modo:
! DisplayManager.requestPort: 0
y por algun lado debe haber una linea que diga:
DisplayManager*authorize: false
Esa linea lo que hace es que autoriza a cualquiera a conectarse al servidor X. Lo
otro lo podemos dejar tal cual.
En el /etc/X11/xdm/Xservers debemos aadir un par de lneas "foreign" de este
modo.
:0 local /bin/nice -n -10 /usr/X11R6/bin/X -deferglyph 16
#Una lnea de foreign por cada terminal de este servidor X. Atencin porque aqu
hay que indicar el nombre de la maquina y no su IP, por eso es importante que
el /etc/hosts sea correcto
terminal1:0

foreign

terminal2:0

foreign
294

LINUX

Mayo 2004

En el /etc/X11/xdm/Xaccess hemos de encontrar entre todas esas lneas de


comentarios ... estas dos lneas -y si no estn las ponemos y comentamos
cualquier otra cosa* #Esta permite a cualquier host hacer un login grafico en nuestra maquina
* CHOOSER BROADCAST # esta adems permite que esa conexin sea
indirecta que no es que sea muy conveniente en el tipo de red en que trabajamos
pero si se pone tampoco pasa nada.
Bueno hasta ahora todo lo que hemos tocado era del XDM pero existen el GDM y
el KDM lo que pasa es que salvo excepcione esos leen los ficheros de
configuracin del XDM as que lo que hemos hecho hasta ahora debera valer
para GDM y KDM como regla general.
En nuestro caso la mandrake arranca el kdm as que nuestras terminales remotas
tambin arrancaran el KDM para ello el KDM debe poder escuchar peticiones
remotas de login. Esto se logra as:
en el /usr/share/config/kdm/kdmrc buscamos la seccin
[Xdmcp] y ponemos el
Enable = true

CONCLUSIONES DEL CAPTULO


Con el estudio de este capitulo, ya hechos todos los cambios para que la red
funcione adecuadamente y sea capaz de transferir archivos y compartir diferentes
servicios como interner o una impresora hacia diferentes tipos de sistemas
operativos como Novell Unx y Windows nuestra red esta lista para seguir
funcionando aunque nos falta un servicio muy interesante en la actualidad dentro
de la vida diaria de cualquier persona y para cualquier empresa que es el correo
electrnico que veremos en el captulo 5.

295

LINUX

Mayo 2004

El captulo que acabamos de revisar es tal vez el mas importante dentro de la


configuracin de una red ya que estos servicios son los que nos llevan a ver de
manera prctica para que nos sirve una red en la realidad.

296

LINUX

Mayo 2004

Capitulo 5
Correo Electronico
La constante necesidad de comunicacion del ser humano lo ha llevado ha
desarrollar sistemas que reduzcan el tiempo para la transferencia de mensajes,
esto con el objetivo de agilizar y optimizar el trabajo. El resultado de esta
necesidad es el correo electronico que actualmente es uno de los medios mas
utilizados por el hombre.
5.0 Correo Electrnico
El transporte de correo electrnico ha sido uno de los usos ms prominentes del
trabajo en red desde que las primeras redes de trabajo se disearon. Empez
siendo un simple servicio que copiaba un fichero de una mquina a otra, y lo
aada al fichero mailbox (buzn de correo) del destinatario. Bsicamente, en esto
sigue consistiendo el correo electrnico (e-mail), aunque el crecimiento continuo
de la red y, consiguientemente, el aumento de la complejidad de enrutamiento, ha
hecho necesario un esquema ms elaborado.
Se han diseado varios estndares de intercambio de correo. Los anfitriones
conectados a Internet cumplen uno recogido en el RFC 822, complementado en
algunos RFCs que describen un mtodo independiente de la mquina para
transferir casi cualquier cosa, incluso grficos, ficheros de sonido y conjuntos de
caracteres especiales. El CCITT defini otro estndar, el X.400. Todava se usa en
entornos de grandes corporaciones y gobiernos, pero est siendo retirado
progresivamente.
Hay ya una gran cantidad de programas de transporte de correo para sistemas
Unix. Uno de los ms conocidos es sendmail, desarrollado por Eric Allman en la
Universidad de California, en Berkeley. Eric Allman ofrece ahora sendmail como
un producto comercial, pero el programa sigue siendo software libre.
Sendmail se ofrece como el agente de correo estndar en algunas distribuciones
de GNU/Linux. GNU/Linux tambin usa Exim, escrito por Philip Hazel de la
Universidad de Cambridge. Comparado con sendmail, Exim es bastante joven.
297

LINUX

Mayo 2004

Para la gran mayora de los sitios con requerimientos de correo electrnico, sus
capacidades son muy parecidas.
Ambos admiten un conjunto de archivos de configuracin que deben ser
adaptados a cada caso particular.
Aparte de la informacin que se necesita para hacer funcionar el subsistema de
correo (como puede ser el nombre de la computadora local), hay muchos ms
parmetros que deben ajustarse. El fichero principal de configuracin de
sendmail es muy difcil de entender al principio. Los ficheros de configuracin de
Exim son ms estructurados y son ms fciles de entender que los de sendmail,
pero no ofrecen soporte directo para UUCP y manejan slo direcciones de
dominio. Hoy esto no es una gran limitacin como lo era anteriormente; en
cualquier caso, para la mayora de los sitios, el trabajo requerido en configurar
ambos es aproximadamente el mismo.
5.1 Qu es un mensaje de correo?
Un mensaje de correo consta de un cuerpo, que es el texto que ha escrito el
remitente, y datos especiales que especifican el destinatario o destinatarios, el
medio de transporte, etc., de manera similar a lo que aparece en el sobre de una
carta ordinaria.
Estos datos administrativos se clasifican en dos categoras; en la primera
categora estn los datos que son especficos del medio de transporte, como son
las direcciones del remitente y del destinatario. A esto se le llama el sobre
(envelope). Puede ser modificado por el software de transporte a medida que el
mensaje se transmite.
La segunda categora es cualquier dato necesario para la manipulacin del
mensaje, que no es propio de ningn mecanismo de transporte, como es la lnea
del encabezado en la que indicamos el tema del mensaje (Subject), la lista de
todos los destinatarios, y la fecha en la que se envi el mensaje. En muchas
redes, se ha convertido en un estndar incluir estos datos al comienzo del
mensaje, formando lo que se denomina cabecera del mensaje (mail header). Se
separa del cuerpo del mensaje (mail body) por una lnea en blanco.
La mayora del software para transporte de correo que se emplea en el mundo
Unix usa un formato de cabecera definido en el RFC 822. Su propsito original
298

LINUX

Mayo 2004

era especificar un estndar para usar en la ARPANET, pero dado que fue
diseado para ser independiente del entorno de uso, ha sido adaptado fcilmente
a otras redes, incluyendo muchas basadas en UUCP.
Pero RFC 822 es slo el mnimo comn denominador. Otros estndares ms
recientes han sido concebidos para dar respuesta a las crecientes necesidades
como pueden ser, por ejemplo, encriptacin de datos, soporte de conjuntos de
caracteres internacionales, y MIME (Multipurpose Internet Mail Extensions,
Extensiones de Correo Multipropsito, descritas en el RFC-1341 y otros RFCs).
En todos esos estndares, la cabecera consiste en varias lneas, separadas por
caracteres de retorno de carro. Cada lnea consiste en un nombre de campo, que
comienza en la columna uno, y el campo en s, separados por dos puntos (:) y un
espacio. El formato y la semntica de cada campo vara dependiendo del nombre
del mismo. Los campos pueden aparecer en cualquier orden. Una cabecera de
correo tpico puede ser algo as:
Return-Path: <ph10@cus.cam.ac.uk>
Received: ursa.cus.cam.ac.uk (cusexim@ursa.cus.cam.ac.uk [131.111.8.6])
by al.animats.net (8.9.3/8.9.3/Debian 8.9.3-6) with ESMTP id
WAA04654
for <terry@animats.net>; Sun, 30 Jan 2000 22:30:01 +1100
Received: from ph10 (helo=localhost) by ursa.cus.cam.ac.uk with
local-smtp
(Exim 3.13 #1) id 12EsYC-0001eF-00; Sun, 30 Jan 2000 11:29:52 +0000
Date: Sun, 30 Jan 2000 11:29:52 +0000 (GMT)
From: Philip Hazel <ph10@cus.cam.ac.uk>
Reply-To: Philip Hazel <ph10@cus.cam.ac.uk>
To: Terry Dawson <terry@animats.net>, Andy Oram
<andyo@oreilly.com>
Subject: Electronic mail chapter
In-Reply-To: <38921283.A58948F2@animats.net>
Message-ID:
Pine.SOL.3.96.1000130111515.5800A-200000@ursa.cus.cam.ac.uk

Usualmente, todos los campos de la cabecera necesarios son generados por el


interfaz de correo que usted use, como elm, pine, mush, o mailx. Algunos, sin
embargo, son opcionales y pueden ser aadidos por el usuario. elm, por ejemplo,
permite editar parte del encabezado del mensaje. Otros campos son aadidos por
299

LINUX

Mayo 2004

el software de transporte de correo. Si usted mira el archivo donde se almacena el


correo local, puede ver que cada mensaje est precedido por una lnea From
(nota: sin dos puntos). Esta no es una cabecera RFC-822; ha sido insertada por
su software de correo para facilitar la lectura a los programas que usen ese
archivo. Para prevenir potenciales problemas con las lneas del cuerpo del
mensaje que tambin empiecen por From, se ha convertido en un procedimiento
estndar evitar estas ocurrencias poniendo antes un carcter >.
Esta lista es una coleccin de cabeceras de campos comunes, y sus significados
estan descritos en el apndice.
5.2 Cmo se reparte el correo?
Generalmente, usted escribir su correo usando un interfaz de correo como mail
o mailx u otros ms sofisticados como mutt, tkrat, o pine. Estos programas se
denominan agentes de usuario de correo (mail user agents), o MUAs para
abreviar. Si usted enva un mensaje de correo, el programa interfaz en la mayora
de los casos se lo pasara a otro programa para que lo transmita. Este programa
se denomina agente de transporte de correo (mail transport agent), o MTA. En la
mayora de los sistemas se usa el mismo MTA tanto para el reparto local como
remoto, y normalmente se invoca como /usr/sbin/sendmail o, en algunos
sistemas que no cumplen la norma FSSTND, /usr/lib/sendmail. En sistemas
UUCP no es raro ver que el correo se reparte por dos programas distintos: rmail
para el envo remoto de correo, y lmail para el reparto local.
Un envo local de correo es, por supuesto, algo ms que aadir el mensaje al
buzn del destinatario. Usualmente el MTA local entender como usar alias
(definir direcciones locales de destinatarios que dirigen a otras direcciones) y
como usar redirecciones (dirigir el correo de un usuario a otra direccin). Adems,
los mensajes que no pudieron

ser enviados deben ser normalmente

devueltos(bounced) al remitente junto con algn mensaje de error.


Para envos lejanos, el software de transporte usado depende del tipo de enlace.
Si el correo debe enviarse a travs de una red que usa TCP/IP, se usar
normalmente Protocolo Simple de Trasferencia de Correo (SMTP), que se define
en el RFC 821. SMTP se dise para repartir correo directamente en la mquina
de un destinatario, negociando la transferencia del mensaje con el demonio SMTP
300

LINUX

Mayo 2004

del lado remoto. Hoy es prctica comn de las organizaciones establecer


mquinas especiales que aceptan todo el correo para destinatarios de la
organizacin, y estos anfitriones se encargan de controlar el reparto apropiado a
los destinos adecuados. En redes tipo UUCP, el correo no suele ser enviado
directamente, sino que es redirigido hasta su destino a travs de un conjunto de
mquinas intermedias. Para enviar un mensaje a travs de un enlace UUCP, el
MTA remitente ejecutar usualmente rmail en la mquina intermedia usando uux,
y suministrndole el mensaje en la entrada estndar.
Desde que se llama a uux separadamente para cada mensaje, puede producirse
una carga considerable en un anfitrin procesador de correo, adems de inundar
las colas UUCP con cientos de pequeos mensajes que ocupan una cantidad de
disco desproporcionada. Por esto algunos MTAs permiten recopilar varios
mensajes de un sistema remoto en un nico lote. El fichero de lotes contiene los
comandos SMTP que el anfitrin local ejecutara normalmente si usara una
conexin SMTP directa. A esto se le llama BSMTP, o batched SMTP (SMTP por
lotes). El lote se suministra a los programas rsmtp o bsmtp en el sistema remoto,
que procesar la entrada como si se hubiera dado una conexin SMTP normal.
5.3 Direcciones de correo electrnico
Las direcciones de correo electrnico constan de dos partes: la primera es el
nombre de un dominio de correo encargada de traducir la informacin, o bien al
anfitrin del receptor o a cualquiera que acepte correo de su parte. La segunda es
la identificacin exclusiva del usuario que puede ser tanto el nombre que le
permite el acceso al sistema, como el nombre del usuario en formato
nombre.apellido , o un alias que se transmitir a un usuario o a la lista de
usuarios. Otros formatos de direccin de correo como el X.400 utilizan otra serie
de atributos que sirven para localizar al sistema anfitrin del receptor en el
directorio del servidor X.400.
La interpretacin de las direcciones de correo electrnico depende en gran
medida del tipo de red de la que usted disponga. A hora nos centraremos en cmo
los protocolos TCP/IP y UUCP interpretan las direcciones de correo electrnico.
5.3.1 RFC-822
301

LINUX

Mayo 2004

Los sitios de Internet estn ligados al estndar RFC-822, que requiere la conocida
notacin usuario@anfitrin.dominio para el cual anfitrin.dominio es el nombre de
dominio ms adecuado para el anfitrin. El smbolo que separa ambas partes
recibe el nombre de arroba en ingls at. Esta nomenclatura no especifica la ruta al
sistema anfitrin.
5.3.2 Formatos de direccin de correo obsoletos
En el entorno original UUCP la forma corriente era ruta!anfitrin!usuario, para el
cual la ruta indicaba una secuencia de anfitriones por los que el mensaje tena
que pasar antes de llegar a su anfitrin de destino. Este modelo recibe el nombre
de notacin bang path, porque en ingls coloquial, la exclamacin se conoce con
el nombre bang. Actualmente, muchas de las redes basadas en UUCP han
adoptado el formato RFC-822 y aceptan las direcciones de correo basadas en el
dominio.
Hay redes que usan otros sistemas de direccin. Por ejemplo, las basadas en
DECnet, usan los dos puntos (:) como elemento separador de sus partes,
resultando la direccin anfitrin::usuario. El estndar X.400 utiliza un estilo
totalmente diferente, describiendo al receptor por medio de pares de atributos
como pas y organizacin a la que ste pertenece.
En ltimo lugar, est FidoNet, en donde cada usuario se identifica con un cdigo
como 2:320/204.9, que consiste en cuatro nmeros que indican la zona donde se
encuentra (el 2 es para Europa), la red (el 320 se refiere a Pars y los
alrededores), el anfitrin (distribuidor local), y el punto de conexin (el ordenador
del usuario). Se puede trabajar con direcciones Fidonet en RFC-822; la anterior,
por ejemplo, se escribira de la siguiente manera
Thomas.Quinot@p9.f204.n320.z2.fidonet.org.
5.3.3 Cmo combinar distintos formatos de correo electrnico
Cuando a un conjunto de sistemas le sumamos gente inteligente, lo normal es
que se intente buscar maneras para poder conectarse entre s y trabajar en red.
Por consiguiente, existen distintos ruteadores de correo que vinculan dos
sistemas diferentes, de forma que el correo pueda ser transmitido de uno a otro.
302

LINUX

Mayo 2004

El problema ms crtico a la hora de interconectar dos sistemas es el referente a


las direcciones de correo.
Imagine que queremos trabajar con la notacin bang-path de UUCP y RFC-822.
No son dos formatos fciles de combinar. Supongamos que tenemos la siguiente
direccin dominioA!usuario@dominioB . No est claro si el smbolo @ tiene
prioridad sobre la ruta, o viceversa: entonces, tendramos que mandar el
mensaje a dominioB, que lo enviara a dominioA!usuario, o por el contrario
deberamos hacerlo a dominioA, que lo dirigira a usuario@dominioB?
Aquellas direcciones formadas por distintos proveedores de correo se llaman
direcciones hbridas. El tipo ms comn, que es el que acabamos de ilustrar,
normalmente se resuelve dando prioridad al smbolo @ sobre la ruta. Esto
significara enviar primero el mensaje a dominioB en dominioA!usuario@dominioB
Sin embargo, hay una manera de especificar las ruta en RFC-822:
<@dominioA,@dominioB:usuario@dominioC> indica la direccin delusuario en el
dominioC, donde llegamos al dominio C pasando por dominio A y dominio B (en
ese orden). Este tipo de direccin se llama con frecuencia direccin enrutada
desde la fuente Tampoco es bueno basarse exclusivamente en este sistema, ya
que un posterior repaso al estndar RFC en su apartado de la descripcin del
enrutamiento del correo, recomienda que se intente enviar el correo directamente
a su destino remoto en lugar de hacerlo por medio de la fuente.
Existe adems el % proveedor de correousuario%dominioB@dominioA que lo
enva primero a dominioA, y transforma el smbolo de porcentaje ms indicado
(que en este caso es el nico) a un smbolo arroba@ sign.
La direccion en este caso es usuario@dominioB, y el mensajero dirige su mensaje
a dominioB, el cual lo enva al usuario. A este tipo de direccin la solemos llamar
Ye Olde ARPAnet Kludge, y su uso no es alentador.
El uso de estos tipos distintos de direccionamiento puede tener sus
repercusiones. En un entorno RFC-822 no se deber usar otra direccin que no
sea una absoluta como usuario@anfitrin.dominio.
5.4 Cmo funciona el enrutamiento del correo?
Conocemos como enrutamiento a el proceso de dirigir un mensaje al sistema
anfitrin del receptor. Aparte de localizar una ruta desde el sitio del emisor hasta el
303

LINUX

Mayo 2004

de destino, la eleccin de rutas implica la deteccin de errores e incluso la


optimizacin de la velocidad y el coste.
Hay una gran diferencia entre la eleccin de rutas por parte de un sitio UUCP y un
sitio de Internet. En Internet, la funcin principal a la hora de dirigir los datos al
anfitrin del receptor (cuando el protocolo IP lo conoce), la realiza la capa de red
IP, mientras que en el entorno UUCP, la ruta tiene que ser provista por el usuario o
generado por el agente de transmisin de correo.
5.4.1 Enrutamiento en Internet
La configuracin del sistema anfitrin del destinatario determina si se est
trabajando con un determinado sistema de localizacin de la ruta de correo en
Internet. La opcin predeterminada es transmitir el mensaje a su destino
determinando primero el anfitrin al que debe ser enviado, y mandndolo all
directamente. La mayora de los sitios de Internet buscan dirigir todo el correo
entrante a un servidor de correo con alta disponibilidad capaz de manejar todo el
trfico y distribuirlo localmente. Para dar a conocer este servicio, el sitio publica el
llamado registro MX para su dominio local en su base de datos DNS. MX (Mail
Exchanger) significa Intercambiador de Correo y bsicamente indica que el
anfitrin del servidor es capaz de convertirse en emisor de correo para todas las
direcciones del dominio. Los registros MX tambin pueden manejar el trfico de
anfitriones que no estn conectados a la red, como UCCP o FidoNet, que
necesitan una ruta de correo.
Los registros MX siempre tienen asignada una preferencia. Si son muchos los
proveedores de correo existentes (MX) para un anfitrin, el agente de transporte
de correo tratar de enviar el mensaje al proveedor cuya preferencia sea la
menor. Slo si esta operacin falla, lo enviar a un anfitrin de mayor ndice de
preferencia. Si el anfitrin local es el proveedor de correo para la direccin de
destino, puede enviar los mensajes a un anfitrin menos preferente que l mismo;
sta es una manera segura de evitar los bucles en el correo. Si no hay ningn
registro MX para un determinado dominio, o no es disponible, el agente de
transporte de correo puede comprobar si la direccin IP del dominio est asociada
a l, y as intentar mandarlo directamente a ese anfitrin.
304

LINUX

Mayo 2004

Supongamos que hay una organizacin dada, por ejemplo Foobar, Inc., que
quiere que todo su correo lo controle el servidor de correo de su ordenador. Por
ello llevar registros MX como el que se muestra a continuacin, en la base de
datos DNS:
green.foobar.com. IN MX 5 mailhub.foobar.com.
Esto da a conocer a mailhub.foobar.com como proveedor de correo para
green.foobar.com con un nivel de preferencia de 5. Un anfitrin que pretenda
enviar un mensaje a joe@green.foobar.com revisa la base de datos DNS y busca
el MX en el distribuidor de correo . Si no hay ningn MX con una preferencia
menor a 5, el mensaje se enva al distribuidor de correo, que lo entrega a green.
sta es una descripcin muy bsica de cmo funcionan los registros MX.
5.4.2 Enrutamiento en el entorno UUCP
El encaminamiento del correo en las redes UUCP es mucho ms complicado que
en Internet porque sus programas no realizan el enrutamiento ellos mismos.
Antes, todo el correo deba ser dirigido mediante las rutas bang path. stas
especificaban una lista de sistemas anfitriones separados por signos de
exclamacin y seguidos por el nombre del usuario, por los que el correo deba
pasar. Por ejemplo, para escribir a un usuario llamado Janet que se encuentra en
un ordenador llamado moria, usuaramos la ruta eek!swim!moria!janet. De esta
manera el mensaje se enviara desde su sistema anfitrin a eek,desde aqu a
swim, y por ltimo lugar a moria.
El inconveniente obvio de este sistema es que es necesario que el usuario
recuerde muchos ms datos sobre topologa de red que la que Internet requiere.
Y mucho peor son los cambios de la topologa como los enlaces eliminados o
anfitriones que desaparecen que produce fallos en los mensajes al no ser el
usuario consciente de estos cambios. Y por ltimo, si usted cambia de sitio o se
traslada, probablemente deber actualizar estas rutas.
Una razn por la que el enrutamiento desde la fuente se hizo necesario fue la
presencia de nombres de anfitrin ambiguos. Por ejemplo, imaginemos que hay
dos sitios llamados moria, uno en los Estados Unidos y otro en Francia. A cul
de los dos se referira moria!janet ahora? El problema quedara solucionado
especificando una ruta concreta para acceder a moria.
305

LINUX

Mayo 2004

El primer paso para evitar la ambigedad con los nombres de anfitrin fue el
proyecto de mapeado UUCP. Se encuentra en la Universidad de Rutgers y
registra de manera oficial todos los nombres de anfitrin, junto con informacin
sobre otros sistemas UUCP y su situacin geogrfica, procurando que no se
repita ninguno. Esta informacin en manos del proyecto de mapeado UUCP, se
publica bajo el nombre Mapas Usenet , y son distribuidos regularmente a travs
de Usenet. El formato tpico de entrada a un mapa (eliminados ya los
comentarios) es de la siguiente manera:
moria
bert(DAILY/2),
swim(WEEKLY)

Esta entrada indica que moria est vinculado a bert, al cual llama dos veces al
da, y a swim, al cual llama semanalmente. Explicaremos con ms detalle lo
referente al formato de archivo de mapas.
Con la informacin sobre la conectividad que obtenemos de los mapas, podemos
generar la totalidad de rutas existentes entre su sistema anfitrin y cualquier sitio.
Esta informacin se encuentra en el archivo de rutas, tambin conocido como
base ruta-alias. Supongamos que los mapas indican que usted puede ponerse en
contacto con bert a travs deernie; una entrada en forma de alias de ruta para
moria generado del retazo del mapa anterior podra ser de la siguiente manera:
moria ernie!bert!moria!%s

Si usted propone la direccin janet@moria.uucp, el MTA seguir la ruta anterior y


enviar el mensaje a, ernie con la direccinbert!moria!janet.
No obstante, crear un archivo de rutas a partir de los mapas Usenet no es buena
idea. La informacin que contienen suele estar distorsionada, y tambin es
posible que no est actualizada. Es por ello que slo un determinado nmero de
anfitriones utilizan los mapas UUCP completos para crear sus archivos de rutas.
Muchos sitios mantienen la informacin de ruta slo para sitios que se encuentran
en su entorno, y envan cualquier mensaje a los sitios que no estn presentes en
su base de datos a anfitriones ms inteligentes con informacin de ruta ms
completa. Este esquema se llama enrutamiento por anfitrin inteligente. Los
anfitriones que tienen slo un vnculo de correo UUCP (los llamados leaf sites), no
306

LINUX

Mayo 2004

pueden realizar el enrutamiento por su cuenta, deben dejar esa labor a un


anfitrin inteligente.
5.5 Mezclar UUCP y RFC-822
La mejor manera de evitar los problemas referentes al enrutanamiento del correo
en las redes UUCP es adoptar el sistema de nombre de dominio de dichas redes.
Por supuesto, usted no puede cuestionar un servidor de nombres de UUCP. Sin
embargo, muchos sitios UUCP han creado pequeos dominios que coordinan su
enrutamiento internamente. En los mapas, estos dominios anuncian uno o dos
anfitriones en forma de ruta de correo propio de tal forma que no tiene que existir
un indicador de entrada al mapa para cada anfitrin en el dominio. Las rutas de
correo controlan tanto el fluido de correo interno como externo al dominio. El plan
de enrutamiento dentro del dominio es independiente e invisible para el mundo
exterior.
Esto funciona muy bien en el esquema de enrutamiento por anfitrin inteligente. El
enrutamiento global de la informacin slo lo mantienen los portales; los
anfitriones menores dentro de un dominio pueden trabajar nicamente con
archivos de rutas pequeos, escritos a mano que indiquen las rutas de ese
dominio y el camino hacia el enrutador. Incluso las rutas de correo ya no
necesitan la informacin de ruta para cada anfitrin UUCP del mundo. Aparte de
la informacin de ruta, ahora tan slo necesitan conocer rutas hacia dominios
absolutos. Por ejemplo, esta entrada ruta-alias conducir todo el correo hacia los
sitios en el dominio sub.org hacia smurf:
.sub.org swim!smurf!%s

Todo el correo enviado a claire@jones.sub.org ser enviado a swim con la


direccin smurf!jones!claire. La organizacin jerrquica del nombre de dominio
permite a los servidores de correo mezclar rutas ms y menos especficas. Por
ejemplo, un sistema francs puede tener rutas especficas para los subdominios
en ofr, y enrutar el correo hacia los anfitriones en el dominio, us en algn sistema
de los Estados Unidos. De esta manera, gracias al enrutamiento basado en el

307

LINUX

Mayo 2004

dominio (nombre que recibe esta tcnica) tanto el tamao de las bases de datos
de enrutamiento como las necesidades administrativas, se ven reducidos.
La ventaja principal al usar nombres de dominio en un entorno UUCP es que las
normas de conformidad con RFC-822 permiten el contacto entre las redes UUCP
en Internet. Actualmente, muchos dominios UUCP tienen vnculos con ruteadores
de Internet que actan como anfitrin. Es ms rpida y ms fiable la informacin
de enrutamiento si mandamos los mensajes por Internet, ya que stos anfitriones
pueden funcionar con DNS en lugar de Mapas Usenet.
Con el fin de se ser localizados desde Internet, los dominios basados en UUCP
muestran un registro MX . Por ejemplo, supongamos que moria pertenece al
dominio orcnet.org gcc2.groucho.edu acta como su ruteador a Internet. Entonces
moria utilizara gcc2 como anfitrin, para que toda la correspondencia dirigida a
dominios extranjeros se distribuyese a travs de Internet. Por otro lado, gcc2
mostrara un registro MX para *.orcnet.org y llevara todo el correo entrante para
los sitios orcnet a moria. El asterisco en *.orcnet.org es un comodn que empareja
todos los anfitriones de ese dominio que no estn relacionados con ningn
registro. Esto ocurre con frecuencia slo con los dominios UUCP. El nico
problema que queda es que los programas de transmisin UUCP no pueden
funcionar con nombres de dominio ilimitados. Muchos sitios UUCP fueron
diseados para trabajar con nombres de hasta ocho caracteres, o incluso menos,
y sin utilizar caracteres alfanumricos como el punto.
Por lo tanto, habra que hacer un mapeado entre los nombres RFC-822 y los
nombres de anfitrin UUCP. El mapeado depende totalmente de su puesta en
prctica. Una manera comn de mapear los nombres FQDN y los UUCP, es usar
el archivo del alias de ruta:
moria.orcnet.org ernie!bert!moria!%s

Esto producir un bang path al estilo UUCP desde una direccin que especifique
un nombre de dominio completamente cualificado. algunos agentes de transporte
proporcionan un fichero especial para esto:
sendmail, por ejemplo, usa el archivo uucpxtable.

308

LINUX

Mayo 2004

La transformacin inversa (conocida coloquialmente como domainizing) a veces


es necesaria cuando se enva un mensaje desde una red UUCP a Internet.
Mientras el emisor utilice el nombre de dominio completo en la direccin de
destino, este problema se puede evitar si no eliminamos dicho nombre de
dominio. Sin embargo, hay sitios UUCP que no pertenecen a ningn dominio.
Normalmente llevan el pseudo-dominio uucp.
La base de datos ruta-alias proporciona la principal informacin de ruta en las
redes basadas en UUCP. La entrada es de esta manera (el nombre del sitio y la
ruta estn separados mediante tabulaciones):
moria.orcnet.org ernie!bert!moria!%s
moria ernie!bert!moria!%s

Esto hace que cualquier mensaje enviado a moria sea entregado pasando por
ernie y bert. Tanto el nombre moria como el nombre UUCP deben ser dados si el
emisor no los incluye.
Si se quiere dirigir todos los mensajes a los anfitriones dentro de un dominio a su
repetidor de correo, se puede especificar una ruta en la base de datos del alias de
ruta, indicando el nombre de dominio precedido por un punto como el destino. Por
ejemplo, si a todos los anfitriones en sub.org llegamos por medio de swim!smurf,
la entrada de alias de ruta podras ser de la siguiente manera:
.sub.org swim!smurf!%s

Escribir el archivo de alias de ruta es aceptable slo cuando accede a un sitio de


Internet donde no son necesarias muchas operaciones de enrutamiento. Si tiene
que realizar diversas operaciones de enrutamiento para un gran nmero de
anfitriones, la mejor manera de hacerlo es usar la orden alias de ruta para crear
el archivo a partir del archivo de mapas. Los mapas son ms fciles de mantener,
porque se aade o elimina un sistema editando la entrada al mapa del sistema y
volviendo a crear el archivo de mapa.

309

LINUX

Mayo 2004

Aunque los mapas publicados por el Proyecto de Mapeado Usenet ya no se usan


tanto para el enrutamiento, las redes pequeas UUCP nos pueden dar la
informacin sobre el enrutamiento de sus propios mapas.
Un archivo de mapa consiste principalmente en una lista de sitios que cada
sistema selecciona, o bien seleccionada por algn sistema. El nombre del sistema
empieza en la primera columna y va seguido por una lista de enlaces separados
por una coma. La lista puede continuar si la siguiente lnea comienza por el
tabulador. Cada vnculo consiste en el nombre del sitio seguido por un coste entre
parntesis. El coste es una expresin aritmtica formada por nmeros y
expresiones simblicas como DAILY o WEEKLY. Las lneas que empiezan por >
se ignoran.
Por ejemplo, consideremos moria, que selecciona swim.twobirds.com dos veces
al da y bert.sesame.com que lo hace una por semana. El vnculo a bert usa
modem lento a 2.400 bps. moria publicara la siguiente entrada:
moria.orcnet.org
bert.sesame.com(DAILY/2),
swim.twobirds.com(WEEKLY+LOW)
moria.orcnet.org = moria

La ltima lnea tambin da a conocer a moria bajo su nombre UUCP. Tenga en


cuenta que el coste se debe especificar como DAILY/2 porque conectando dos
veces al da limita a la mitad el coste del vnculo
Al usar la informacin de los archivos de mapas pathalias es capaz de calcular
las rutas ptimas a cualquier destino indicado en el archivo de ruta y producir una
base de datos ruta-alias con la que realizar el enrutamiento a estos sitios.
Alias de ruta proporciona otras opciones como el ocultamiento del sitio (es decir,
que slo se pueda llegar a los sitios a travs de un ruteador).
Los comentarios sobre el archivo de mapas suelen contener informacin adicional
sobre los sitios descritos en l. Existe un formato rgido en el que se puede
especificar esta informacin de tal forma que se pueda recuperar a partir de los
mapas. Por ejemplo, un programa llamado uuwho utiliza una base de datos
creada a partir de los archivos de mapa para mostrar tal informacin de manera
cmoda. Por ello, si usted contrata un sitio con una organizacin que distribuye
310

LINUX

Mayo 2004

archivos de mapas, deber rellenar dicha entrada. A continuacin se muestra un


ejemplo de entrada de mapa (es la perteneciente al sitio web de Olaf):
#N monad, monad.swb.de, monad.swb.sub.org
#S AT 486DX50; Linux 0.99
#O private
#C Olaf Kirch
#E okir@monad.swb.de
#P Kattreinstr. 38, D-64295 Darmstadt, FRG
#L 49 52 03 N / 08 38 40 E
#U brewhq
#W okir@monad.swb.de (Olaf Kirch); Sun Jul 25 16:59:32 MET DST
1993
#
monad brewhq(DAILY/2)
# Domains
monad = monad.swb.de
monad = monad.swb.sub.org

El espacio en blanco que sigue a los dos primeros caracteres equivale a una
tabulacin. El significado de la mayora de los campos est bastante claro; de
todas maneras, en caso de registrarse en cualquier dominio, recibira dicha
descripcin detallada. El caso de la L es el ms curioso: proporciona la posicin
geogrfica (latitud/longitud) del usuario y se encarga de dibujar los mapas
PostScript que controlan todos los sitios web de cada pas e incluso de toda la
red.
5.6 Como configurar elm
elm significa electronic mail (correo electrnico), y es una de las herramientas
ms importantes de Unix.
Proporciona una interfaz a pantalla completa que incluye elementos de ayuda
muy tiles. Tericamente, se puede ejecutar elm aunque no est configurado, y
todo funcionar correctamentecon con suerte. Sin embargo hay algunas opciones
que hay que configurar, aunque sern requeridas tan solo en ocasiones.
Cuando se inicia elm, tenemos un conjunto de variables de configuracin del
archivo elm.rc en /etc/elm. El archivo .elm/elmrc aparece en su directorio local.
311

LINUX

Mayo 2004

Usted no tendr que elaborar este archivo, ya que se crea al seleccionar Save
new options en el men opciones de elm
5.6.1 Opciones globales de elm
En el archivo global elm.rc, siempre hay que establecer las opciones
correspondientes al nombre del anfitrin. Por ejemplo, en la Cervecera Virtual, el
archivo vlager contiene la siguiente informacin:
#
# Nombre local del anfitrin
hostname = vlager
Gua de Administracin de Redes con Linux
17.5. como configurar elm 268.#
# Nombre del dominio
hostdomain = .vbrew.com
#
# Nombre completamente cualificado del dominio
hostfullname = vlager.vbrew.com

Estas opciones de elm estn ideadas por el nombre del anfitrin local. Tenga en
cuenta que estas opciones privadas slo sern vlidas en el archivo de
configuracin; cuando se trate del elmrc privado, sern ignoradas.
5.7 Juegos de caracteres Nacionales
Se han desarrollado un conjunto de estndares y RFC que preparan al RFC-822
para poder recibir varios tipos de mensajes, tanto de texto, datos binarios, como
archivos PostScript y dems. Estos estndares son conocidos como MIME o
Multipurpose Internet Mail Extensions (Extensiones Multipropsito del Correo
Internet). Entre otras cosas, MIME permite que el receptor del mensaje sepa si se
han utilizado caracteres distintos a los del estndar ASCII, por ejemplo, los
acentos del francs o la diresis del alemn. elm mantiene este juego de
caracteres hasta cierto punto.
El juego de caracteres interno de GNU/Linux que se usa para representar los
caracteres es conocido como ISO-8859-1, que es el nombre del estndar
correspondiente. Tambin se conoce como Latin-1. Cualquier mensaje que utilice
312

LINUX

Mayo 2004

cualquier carcter especfico de este juego de caracteres, deber llevar el


siguiente encabezado:
Content-Type: text/plain; charset=iso-8859-1

El sistema receptor del mensaje deber reconocer ese campo y adaptar las
medidas adecuadas para que su visualizacin sea la correspondiente. En cuanto
a los mensajes de texto lo correspondiente es el juego de caracteres us-ascii.
Para ser capaz de mostrar mensajes con conjuntos de caracteres distintos al
cdigo ASCII, elm debe saber cmo imprimir tales caracteres. Por omisin,
cuando elm recibe un mensaje con un campo charset distinto a us-ascii (o con
contenido distinto al tipo texto), intenta mostrar el mensaje usando una orden
llamada metamail. Los mensajes que requieren de metamail, para poder ser
visualizados, se muestran con una M en la primera columna en la pantalla de
resumen.
Como el caracter patrn de Linux es ISO-8859-1, no es necesario el uso de
metamail cuando sea ste el juego de caracteres presente. Si elm tiene la orden
de que el sistema puede leer ISO-8859-1, no usar metamail, sino que en su
lugar mostrar el mensaje directamente. Esto es posible si se configura la
siguiente:
opcin en elm.rc:
displaycharset = iso-8859-1

Tenga en cuenta que se debe configurar esta opcin incluso cuando no tenga por
seguro que va a mandar o recibir mensajes con caracteres distintos a los de
ASCII. La razn es porque los usuarios que s los utilizan, normalmente
configuran el correo con el fin de poner el tipo de contenido: de campo apropiado
en la cabecera, aunque no utilizen slo caracteres ASCII.
Sin embargo, activar esta opcin en elm.rc no es suficiente. Cuando se muestra
un mensaje con su paginador incorporado, elm llama a una funcion de biblioteca
para cada carcter con el fin de determinar si es imprimible. Por omisin, esta
funcin slo reconocer los caracteres ASCII como imprimibles y visualizar el
resto como ^?. Puede pasar por alto esta funcin tan slo con indicar la variable
313

LINUX

Mayo 2004

de entorno LC_CTYPE con ISO-8859-1, que le indica a la biblioteca que acepte


los caracteres Latin-1 como imprimibles.
Cuando enva mensajes que contienen caracteres especiales de ISO-8859-1,
debe asegurarse de poner dos variables ms en el fichero elm.rc :
charset = iso-8859-1
textencoding = 8bit

Esto hace que elm reporte el conjunto de caracteres como ISO-8859-1 en la


cabecera del correo, y lo enva como un valor de 8 bits (la opcin predeterminada
es cortar los caracteres a 7 bits).
Tambin se pueden configurar todas estas opciones sobre los caracteres que
hemos tratado en el archivo privado elmrc, de tal forma que cada usuario puede
tener sus propia configuracin predeterminada aunque el archivo global no se
adapte.
5.8 Sendmail
Se dice que no se es un verdadero administrador de sistemas Unix hasta que se
ha editado archivo sendmail.cf. Se dice asimismo que se est loco si se intenta
hacerlo dos veces.
sendmail es un programa increblemente potente. Y tambin, para la mayora de
la gente, increblemente difcil de aprender y comprender. Un programa cuyo
manual definitivo de referencia (sendmail, por Bryan Costales y Eric Allman,
publicado por O'Reilly), ocupa 1,050 pginas, lo que es suficiente para espantar a
cualquiera.
Afortunadamente, las nuevas versiones de sendmail son diferentes. Ya no se
necesitar ms editar directamente el enigmtico fichero sendmail.cf; las nuevas
versiones proveen de una herramienta de configuracin, la cual crear el archivo
sendmail.cf por nosotros basndose en ficheros de macros mucho ms simples.
No se necesitar entender la sintaxis complicada del archivo sendmail.cf; los
archivos de macros no lo requieren. En lugar de eso, slo se necesitar listar
tems, como por ejemplo el nombre de las caractersticas que se desee incluir en
nuestra configuracin, y especificar algunos de los parmetros que determinan
314

LINUX

Mayo 2004

cmo operar esa caracterstica. Para esto se usar una utilidad Unix tradicional
llamada m4, la cual toma nuestros archivos de macros de configuracin y los
combina con los datos obtenidos de las plantillas que contienen la sintaxis actual
de sendmail.cf, de forma tal que ganar nuestro propio fichero sendmail.cf.
5.8.1 Instalando Sendmail
El agente de transporte de correo, sendmail, se incluye preempaquetado en casi
todas las distribuciones de GNU/Linux. La instalacin en estos casos es
relativamente sencilla. Sin embargo, existen algunas razones para instalar
sendmail desde el cdigo fuente, especialmente si nos importa la seguridad. El
programa sendmail es muy complejo y se ha ganado la reputacin con el paso de
los aos por contener fallos que permiten abrir brechas en la seguridad. Uno de
los ms conocidos ejemplos es el gusano de Internet RTM, el cul sac provecho
de un problema de desbordamiento del bfer en versiones antiguas de sendmail.
La mayora de los abusos que utilicen desbordamientos del bfer, dependen de
que todas las copias de sendmail sean idnticas en las diferentes mquinas, ya
que los "exploits" se basan en datos almacenados en ubicaciones especficas.
Esto, desde luego, es precisamente lo que ocurre con sendmail instalado en las
distribuciones GNU/Linux. Compilar sendmail desde el cdigo fuente por usted
puede ayudar a reducir este riesgo. Las versiones modernas de sendmail son
menos vulnerables, ya que vienen con exmenes extremadamente cuidadosos en
cuanto a la seguridad, la cual se ha vuelto una inquietud ampliamente
generalizada en la comunidad de Internet.
La compilacin es bastante simple, ya que el paquete de los fuentes de sendmail
soporta directamente a GNU/Linux. Los pasos a seguir para compilar sendmail
se resumen en:
# cd /usr/local/src
# tar xvfz sendmail.8.9.3.tar.gz
# cd src
# ./Build

Para completar la instalacin de los archivos binarios resultantes, se necesitar


los permisos de root, usando:
315

LINUX

Mayo 2004

# cd obj.Linux.2.0.36.i586
# make install

Se han instalado ahora los binarios de sendmail en el directorio /usr/sbin. Muchos


enlaces simblicos al ejecutable sendmail tambin se instalarn en el
directorio /usr/bin/.
5.8.2 Un Vistazo a los Archivos de Configuracin
Tradicionalmente, sendmail era configurado a travs de un archivo de
configuracin del sistema (llamado usualmente /etc/mail/sendmail.cf, o en otras
distribuciones ms antiguas, /etc/sendmail.cf, o incluso /usr/lib/sendmail.cf) que no
se parece en nada a ningn lenguaje que haya visto usted antes. La edicin del
archivo sendmail.cf para proporcionar un comportamiento a medida puede ser
una experiencia traumtica.
Al da de hoy, sendmail crea todas las opciones de configuracion a travs de
macros, con una sintaxis fcil de entender. El sistema de macros genera
configuraciones que cubren muchas de las instalaciones, pero siempre se tiene la
opcin de afinar manualmente el fichero resultado, sendmail.cf, para trabajar en
un entorno ms complejo.
5.8.3 Los Archivos sendmail.cf y sendmail.mc
El programa procesador de macros m4 genera el archivo sendmail.df cuando
procesa el archivo de configuracin de macros proporcionado por el administrador
del sistema local.
El proceso de configuracin es bsicamente una forma de crear un archivo
sendmail.mc apropiado que incluya macros que describan su configuracin
deseada. Las macros son expresiones que el procesador de macros m4 entiende
y expande en la sintaxis compleja de sendmail.cf. Las expresiones macro se
componen del nombre de la macro (el texto en letras maysculas al principio), que
se asemejan a una funcin en un lenguaje de programacin, y algunos
parmetros (el texto entre corchetes) que se utilizan en la expansin. Los
parmetros pueden ser pasados literalmente a la salida de sendmail.cf o pueden
316

LINUX

Mayo 2004

ser utilizados para controlar la manera en que se realiza el procesamiento de la


macro.
El archivo sendmail.mc para una configuracin mnima (UUCP o SMTP con todos
los mensajes no locales retransmitidos a un anfitrin inteligente conectado
directamente a Internet) puede ser tan corto como 10 o 15 lneas, excluyendo
comentarios.
5.8.4 Dos Ejemplos de los Archivos sendmail.mc
Si usted es un administrador de varios hospedajes de correo distintos, quiz no
quiera nombrar su archivo de configuracin sendmail.mc. En vez de sto, es
practica usual nombrarlo despus del nombre del anfitrin, vstout.m4 en nuestro
caso. El nombre no importa realmente en tanto que la salida sea llamada
sendmail.cf. Proporcionar un nombre nico para el archivo de configuracin de
cada anfitrin le permite conservar todos los archivos de configuracin en el
mismo directorio y es tan slo una conveniencia administrativa. Echemos un
vistazo a dos ejemplos de archivos de configuracin de macros para que
sepamos dnde estamos apuntando.
La mayora de las configuraciones de sendmail de la actualidad usan SMTP
nicamente. Es muy sencillo configurar sendmail para SMTP.
Ejemplo 5-1. Ejemplo de Fichero de Configuracin vstout.smtp.m4
divert(-1)
#
# Ejemplo de archivo de configuracin para vstout - smtp exclusivamente
#
divert(0)
VERSIONID(`@(#)sendmail.mc 8.7 (Linux) 3/5/96')
OSTYPE(`linux')
#
# Incluye soporte para los protocolos de transporte locales y smtp
MAILER(`local')
MAILER(`smtp')
#
FEATURE(rbl)
FEATURE(access_db)
# fin

317

LINUX

Mayo 2004

Un archivo sendmail.mc para vstout en la Cervecera Virtual se muestra en


Ejemplo 5-2. vstout usa SMTP para comunicarse con todos los anfitrins en la
LAN de la cervecera, y ver la semejanza con la configuracin genrica para
SMTP exclusivamente que acaba de presentarse. En suma, la configuracin de
vstout enva todo el correo para otros destinatarios moria, su anfitrin de
retransmisin a Internet por UUCP.

Ejemplo 5-2. Ejemplo de Archivo de Configuracin para vstout.uucpsmtp.m4


divert(-1)
#
# Ejemplo de fichero de configuracin para vstout
#
divert(0)
VERSIONID(`@(#)sendmail.mc 8.7 (Linux) 3/5/96')
OSTYPE(`linux')
dnl
# moria es nuestro anfitrin inteligente (smart anfitrin), usando el transporte "uucp-new".
define(`SMART_ANFITRIN', `uucp-new:moria')
dnl
# Soportar los protocolos de transporte de correo local, smtp y uucp.
MAILER(`local')
MAILER(`smtp')
MAILER(`uucp')
LOCAL_NET_CONFIG
# Esta regla asegura que todo correo local sea entregado usando
# transporte smtp, todo lo dems ir por el anfitrin inteligente.
R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3
dnl
#
FEATURE(rbl)
FEATURE(access_db)
# fin

Si se comparan y contrastan las dos configuraciones, quiz sea capaz de inferir


qu hace cada uno de los parmetros de configuracin. Los explicaremos todos
ellos en detalle.
318

LINUX

Mayo 2004

5.8.5 Parmetros sendmail.mc Tpicamente Empleados


Unos pocos de los items en el archivo sendmail.mc se requieren todo el tiempo;
otros pueden ignorarse si las configuraciones por omisin le sirven. La secuencia
general de las definiciones en el archivo sendmail.mc son como lo que sigue:
1.
VERSIONID
2.
OSTYPE
3.
DOMAIN
4.
FEATURE
5.
Local macro definitions
6.
MAILER
7.
LOCAL_* conjuntos de reglas (rulesets)
Comentarios
Las lneas en el archivo sendmail.mc que comiencen con el carcter literal # no
son analizadas por m4, y por omisin sern sacadas directamente a la salida en
el archivo sendmail.cf. Esto es til si se desea comentar qu est haciendo su
configuracin en los archivos de entrada y salida.
Para permitir comentarios en su sendmail.mc que no sean colocados en el archivo
sendmail.cf, puede utilizar la orden m4 divert y las etiquetasdnl. divert(-1) har
que toda la salida se detenga. divert(0) har que la salida sea restaurada al valor
predeterminado. Cualquier salida generada por lneas entre stos ser
descartada. En nuestro ejemplo, hemos usado este mecanismo para proporcionar
un comentario que aparece slamente en el archivo sendmail.mc. Para conseguir
el mismo resultado para una lnea sencilla, puede utilizar la etiqueta dnl que
significa, literalmente, empezando al principo de la siguiente lnea, borrar todos
319

LINUX

Mayo 2004

los caracteres hacia arriba incluyendo la nueva lnea hemos usado esto en
nuestro ejemplo tambin. stas son caractersticas estndar de m4 descritas en el
apndice.

5.8.6 Definiciones de macros locales


Los archivos estndar de configuracin de sendmail proporcionan una buena
cantidad de maneras y variables con las que se puede personalizar la
configuracin. stas se llaman definiciones de macros locales.
Muchas de ellas se listan en el archivo CF en el paquete de fuentes de sendmail.
La definiciones de macros locales son normalmente invocadas mediante el
suministro del nombre de la macro con un argumento representando el valor que
se quiere asignar a la variable que gestiona la macro.
5.8.7 Definicin de los protocolos de transporte de correo
Si desea que sendmail transporte correo de cualquier otra forma que por entrega
local, debe indicarle qu transporte tiene que emplear. La macro MAILER hace
esto muy fcil. La versin actual de sendmail soporta una variedad de protocolos
de transporte de correo; algunos de stos son experimentales, otros son
probablemente usados raramente.
En nuestra red necesitamos transporte SMTP para enviar y recibir correo entre los
anfitrins en nuestra red local, y el transporte UUCP para enviar y recibir correo
desde nuestro anfitrin inteligente. Para lograr sto, simplemente incluimos
ambos transportes de correo, el smtp y el uucp. El transporte de correo local se
incluye por omisin, pero puede ser definido por claridad. Si se incluyen ambos
smtp y el uucp en su configuracin, debe asegurarse siempre de definir primero el
agente de correo smtp.
Los transportes ms comnmente usados disponibles al usar la macro MAILER
se describen en apndice.
5.9 Configuracin de enrutamiento de correo para anfitriones locales
320

LINUX

Mayo 2004

La configuracin de la Cervecera Virtual es probablemente ms compleja que lo


que muchos sitios requieren. La mayora de los sitios de hoy usaran transporte
SMTP nicamente y no tendran que tratar con UUCP para nada. En nuestra
configuracin hemos configurado un anfitrin inteligente que es usado para tratar
todo el correo saliente. Debido a que estamos usando un transporte SMTP en
nuestra red local debemos indicarle a sendmail que no enve correo local por el
anfitrin inteligente. La macro LOCAL_NET_CONFIG permite introducir reglas
sendmail directamente en el fichero de salida sendmail.cf para modificar la
manera en que el correo local es manipulado. Hablaremos ms sobre reglas de
reescritura ms tarde, pero por el momento se debera aceptar que la regla que
hemos suministrado en nuestro ejemplo especifica que cualquier correo destinado
a anfitriones dentro del dominio vbrew.com deberan entregarse directamente al
anfitrin objetivo usando el transporte de correo SMTP.
5.10 Generando el Archivo sendmail.cf
Cuando haya completado la edicin del archivo de configuracin m4, debe
procesarlo para producir el archivo /etc/mail/sendmail.cf ledo por sendmail. Esto
se hace directamente como se ilustra en el siguiente ejemplo:
# cd /etc/mail
# m4 /usr/share/sendmail.cf/m4/cf.m4 vstout.uucpsmtp.mc >sendmail.cf

Esta orden invoca el procesador de macros m4 suministrndole el nombre de dos


archivos de definicin de macros para procesar. m4 procesa los ficheros en el
orden dado. El primer archivo es una plantilla de macro de sendmail estndar
suministrada en el paquete de fuentes de sendmail, el segundo, por supuesto, es
el archivo que contiene nuestras propias definiciones de macros. La salida de la
orden es dirigida al fichero /etc/mail/sendmail.cf, que es nuestro archivo objetivo.
Puede ahora iniciar sendmail con la configuracin nueva.
5.11 Interpretacin de las Reglas de Escritura - Reescritura
Es argumentable que la caracterstica ms poderosa de sendmail es la regla de
reescritura. Las reglas de reescritura son usadas por sendmail para determinar
cmo procesar un mensaje de correo recibido. Sendmail pasa las direcciones
desde las cabeceras de un mensaje de correo a travs de colecciones de reglas
321

LINUX

Mayo 2004

de reescritura llamadas conjuntos de reglas. Las reglas de reescritura transforman


una direccin de correo de una forma a otra y puede pensar en ellas como algo
similar a una orden en su editor que reemplaza todo el texto que encaje en un
patrn especificado con otro.
Cada regla tiene un lado izquierdo y un lado derecho, separados por al menos un
carcter de tabulacin. Cuando sendmail est procesando correo, busca a travs
de las reglas de reescritura intentando encontrar una coincidencia con el lado
izquierdo. Si una direccin coincide con una de las reglas del lado izquierdo, la
direccin es reemplazada por la del lado derecho y es procesada de nuevo.
5.12 Las rdenes R y S de sendmail.cf
En el archivo sendmail.cf, los conjuntos de reglas son definidos usando rdenes
codificadas como Sn, donde n especifica el conjunto de reglas que se considera el
actual.
Las reglas por s mismas aparecen en rdenes codificadas como R. Cuando cada
orden R es leda , se aade al conjunto de reglas actual.
Si est tratando slo con el archivo sendmail.mc, no necesita preocuparse acerca
de las rdenes S para nada, ya que las macros construirn stas por usted.
Necesitar codificar manualmente las reglas R. Un conjunto de reglas de
sendmail entonces tiene la siguiente apariencia:
Sn
Rlhs rhs
Rlhs2 rhs2

5.12.1 El Lado Izquierdo


A la izquierda de una regla de reescritura, hay que especificar un patrn que
coincida con una direccin que desee transformar. La mayora de los caracteres
se les hace coincidir literalmente, pero hay un nmero de caracteres que tienen
significado especial; estos se describen en apendice.
Cuando una regla coincide con una direccin, el texto que coincide con cada uno
de los patrones en la expresin ser asignado a variables especiales que se
usarn en la parte derecha. La nica excepcin a esto es con el literal $@, que no
coincide con ningn smbolo y entonces nunca generar texto para ser usado en
el lado derecho.
322

LINUX

Mayo 2004

5.12.2 El Lado Derecho


Cuando el lado izquierdo de una regla de reescritura coincide con una direcin, el
texto original se borra y se reemplaza por lo que haya en el lado derecho de la
regla. Todos los smbolos en el lado derecho son copiados literalmente , a no ser
que comiencen por el signo del dlar. De la misma manera que en el lado
izquierdo, unos cuantos metasmbolos pueden usarse en el lado derecho. Estos
son descritos en el apendice.
5.12.3 Un Ejemplo de Patrn de Reglas Sencillo
Para ver mejor cmo funcionan las macros de sustitucin de patrones, considere
la siguiente regla de lado izquierdo:
$* < $+ >

Esta regla coincide con Cero o ms smbolos, seguidos por el carcter <,
seguidas a su vez por una o ms smbolos, seguidos por el carcter >.
Si esta regla fuese aplicada a brewer@vbrew.com o Head Brewer < >, la regla no
coincidira. La primera cadena no coincidira porque no incluye el carcter <, y la
segunda fallara porque $+ coincide con uno o ms smbolos y no hay smbolos
entre los caracteres <>. En cualquier caso en que una regla coincida, el lado
derecho de la regla no se usa.
Si la regla fuera aplicada a Head Brewer < brewer@vbrew.com >, la regla
coincidira, y en el lado derecho $1 sera sustituido por Head Brewer y $2 sera
sustituido por brewer@vbrew.com.
Si la regla fuese aplicada a < brewer@vbrew.com > la regla coincidira porque $*
coincide con cero o ms smbolos, y en el lado derecho $1 podra ser sustituido
por la cadena vaca.
5.13 Semntica del Conjunto de Reglas

323

LINUX

Mayo 2004

Cada uno de los conjuntos de reglas de sendmail se les llama para realizar una
tarea distinta en el procesado del correo. Cuando se estn escribiendo reglas, es
importante entender qu se espera que cada uno de los conjuntos de reglas haga
efecto. Este conjunto de reglas que los guiones de configuracin m4 nos permiten
modificar o realzar una tarea y estan decritos en el apndice.
Interpretacin de la regla en nuestro ejemplo
El ejemplo 5-3 usa la macro LOCAL_NET_CONFIG para declarar una regla local
que asegure que cualquier correo dentro de nuestro dominio se entregue
directamente usando el transporte de correo smtp. Echmosle un vistazo.
5.13.1 Ejemplo 5-3. Regla de reescritura desde vstout.uucpsmtp.m4
LOCAL_NET_CONFIG
# Esta regla se asegura de que todo correo local sea entregado usando el
# transporte smtp, todo lo dems ir por el anfitrin inteligente.
R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3

Sabemos que la macro LOCAL_NET_CONFIG har que la regla se introduzca en


algn lugar cerca del final del conjunto de reglas 0, pero antes de cualquier
definicin del anfitrin inteligente. Sabemos tambin que el conjunto 0 es el ltimo
conjunto en ser ejecutado y que debera resolver un triplete especificando
transporte de correo, usuario y anfitrin.
Podemos ignorar las dos lneas de comentario; no hacen nada til. La regla en s
misma es la lnea que comienza con R. Sabemos que la R es una instruccin de
sendmail y que aade esta regla al conjunto de reglas actual, en este caso el
conjunto 0. Miremos al lado izquierdo y al lado derecho que devuelve.
El lado izquierdo es como ste: $* < @ $* .$m. > $*.
El conjunto 0 espera los caracteres < y > porque es alimentado por el conjunto 3.
El conjunto 3 convierte direcciones en una forma comn y para hacer el anlisis
ms fcil, coloca la parte del anfitrin de la direccin de correo entre < y >.

324

LINUX

Mayo 2004

Esta regla coincide con cualquier direccin que parecezca como: 'UsuarioDestino
< @ cualquieranfitrin.nuestrodominio. > Algn Texto'. Esto es, coincide con el
correo de cualquier usuario y de cualquier anfitrin dentro de nuestro dominio.
Recordar que el texto que coincide con los metasmbolos en el lado izquierdo de
una regla de reescritura se asigna a definiciones de macro para su uso en el lado
derecho. En nuestro ejemplo, el primer $* coincide con todo el texto desde el
inicio de la direccin hasta el carcter <. Todo este texto se asigna al $1 para su
uso en el lado derecho. Similarmente, el segundo $* en nuestra regla de
reescritura se asigna a $2, y el ltimo se asigna a $3.
Ahora tenemos suficiente para entender el lado izquierdo. Esta regla coincide con
el correo de cualquier usuario en cualquier anfitrin dentro de nuestro dominio.
Asigna el nombre de usuario a $1, el nombre del anfitrin a $2, y cualquier texto
subsiguiente a $3. El lado derecho se invoca entonces para procesar stos.
Echemos un vistazo a aquello que estamos esperando ver a la salida. El lado
derecho de nuestra regla de reescritura de ejemplo es semejante a: $#smtp $@
$2.$m. $: $1 < @ $2.$m. > $3. Cuando la regla del lado derecho de nuestro
conjunto de reglas se procesa, se interpreta cada uno de los metasmbolos y se
realizan las sustituciones correspondientes.
El metasmbolo $# hace que esta regla resuelva un transporte especfico, smtp en
nuestro caso.
El $@ resuelve el anfitrin objetivo. En el ejemplo, el anfitrin objetivo se
especifica como $2.$m., el cual es el nombre completamente cualificado del
anfitrin en nuestro dominio. El NDCC se construye con el componente del
nombre del anfitrin asignado a $2 desde nuestro lado izquierdo con nuestro
nombre de dominio (.$m.) concatenado.
El metasmbolo $: especifica el usuario objetivo, el cual se captura otra vez del
lado izquierdo y se almacena en $1.
Preservamos los contenidos de la seccin <> y cualquier texto acompaante,
usando los datos que recogimos desde el lado izquierdo de la regla.
Debido a que esta regla resuelve a un transporte de correo, el mensaje es
reenviado al transporte para su entrega. En el ejemplo, el mensaje sera
reenviado al anfitrin de destino usando el protocolo SMTP.
325

LINUX

Mayo 2004

5.14 Configuracin de las Opciones de Sendmail


sendmail tiene un nmero de opciones que permiten personalizar la manera en
que realiza ciertas tareas. Hay un nmero mayor de stas, as que slo se han
listado unas pocas de las ms usadas normalmente.
Para configurar cualquiera de estas opciones, se pueden definirlas en el archivo
de configuracin m4, que es el mtodo preferible, o puede insertarlas
directamente en el archivo sendmail.cf. Por ejemplo, si desesemos que
sendmail se bifurque en un proceso nuevo para cada mensaje de correo que
tenga que entregarse, quiz aadamos la siguiente lnea a nuestro archivo de
configuracin m4:
define(confSEPARATE_PROC,true)

La correspondiente entrada creada en sendmail.cf es:


O ForkEachJob=trae

La lista de opciones usuales de sendmail m4 (y las equivalentes en sendmail.cf)


estan decritas en el apndice.
5.14.1 Algunas configuraciones tiles para Sendmail
Hay una mirada de posibles configuraciones de sendmail. En este espacio se
ilustrarn slo unos cuantos tipos de configuracin de importancia que sern muy
tiles para muchas instalaciones de sendmail.
Confiar en los usuarios para que pongan el campo From:
En ocasiones es til sobreescribir el campo From: de un mensaje de correo que
va hacia afuera. Supongamos que se tiene un programa basado en web que
genera correo electrnico. Normalmente el mensaje de correo aparecer como
proviniente del usuario que es el dueo del proceso del servidor de web. Pero se
quiere especificar alguna otra direccin remitente de tal forma que el correo
parezca ser originado por otro usuario o direccin en esa mquina. Sendmail
326

LINUX

Mayo 2004

permite especificar en qu usuarios del sistema se puede confiar para que tengan
la habilidad de hacer esto.
La opcin use_ct_file habilita la posibilidad de especificar y dar un archivo que
liste los nombres de los usuarios de confianza. Por omisin, un pequeo nmero
de usuarios del sistema son de confianza de sendmail, por ejemplo root. El
nombre del archivo por omisin para esta opcin es:
/etc/mail/trusted-users

en los sistemas en los que el directorio de configuracin es:


/etc/mail y en /etc/senmdail.ct

en donde es el otro tipo de configuracin. Se puede especificar el nombre y lugar


del

archivo

sobreescribiendo

la

definicin

confCT_FILE.

Escriba

FEATURE(use_ct_file) en el fichero sendmail.mc para habilitar esta opcin.


5.15 Managing Mail Aliases
Los alias de correo son una poderosa opcin que permite que el correo sea
dirigido a otros apartados postales que son nombres alternativos de usuarios o
procesos en un servidor destinatario. Por ejemplo, es una prctica comn tener
retroalimentacin o comentarios con respecto a un servidor de Web y que estn
dirigidos a webmaster. Con frecuencia no hay un usuario llamado webmaster. en
el servidor, en vez de ello, hay un alias a otro usuario del sistema. Otro uso comn
para los alias de correo es utilizarlos por los programas de gestin de listas de
correo en los cuales un alias dirige todos los mensajes que ingresan al programa
de gestin de la lista para que sea interpretado.
El archivo /etc/aliases es el lugar en donde los alias se almacenan. El programa
sendmail consulta este archivo cuando est determinando cmo manejar un
mensaje que ingresa. Si encuentra una lnea en este archivo que coincide con el
usuario a quien va dirigido el mensaje, lo redirige al lugar que indica dicha lnea.
De forma especfica, hay tres cosas que los alias permiten:

327

LINUX

Mayo 2004

Otorgan un nombre corto o bien conocido para el correo que ser dirigido
hacia una o ms personas.

Pueden invocar a un programa con el mensaje de correo como entrada


hacia dicho programa.

Pueden mandar el correo a un archivo.

Todos los sistemas requieren de alias para el Postmaster y el MAILER-DAEMON


para cumplir con el RFC.
Se debe ser especialmente cuidadoso con la seguridad cuando se definan alias
que invoquen o escriban a programas, ya que sendmail por lo general se ejecuta
con los permisos de root.
Un ejemplo del archivo aliases se muestra en el ejemplo 5-4.
5.15.1 Ejemplo 5-4. Ejemplo del archivo aliases
#
# Los siguientes dos alias deben estar presentes para cumplir con el RFC.
# Es importante resolverlos en 'una persona' que lea su correo con regularidad.
#
postmaster: root # lnea indispensable
MAILER-DAEMON: postmaster # lnea indispensable
#
#
# demuestra los tipos ms comunes de alias
#
usenet: janet # alias para una persona
admin: joe,janet # alias para varias personas
newspak-users: :include:/usr/lib/lists/newspak # lee a los destinatarios desde un archivro
changefeed: |/usr/local/lib/gup # alias que invoca a un programa
complaints: /var/log/complaints # alias que escribe el correo a un archivo
#

Cada vez que actualice el archivo /etc/aliases, se debe asegurar de ejecutar el


programa:
# /usr/bin/newaliases

328

LINUX

Mayo 2004

para reconstruir la base de datos que sendmail utiliza internamente. La orden


/usr/bin/newaliases es un vnculo simblico al ejecutable de sendmail y, cuando
se invoca de esta forma, se comporta exactamente como si hubiese sido invocado
as:
# /usr/lib/sendmail bi

La orden newaliases es una forma alternativa y ms adecuada para hacer esto.


5.16 Cmo usar un anfitrin inteligente
Algunas veces un anfitrin encuentra correo que no puede entregar directamente
a un sitio remoto. Con frecuencia es conveniente tener un nico sitio en una red
que tenga el papel de gestionar la transmision del correo a sitios remotos que son
difciles de alcanzar, en vez de que cada sitio local intente hacer esto por s
mismo.
Hay algunas buenas razones para que se tenga un solo sitio encargado de la
gestin del correo. Se simplifica la gestin al tener slo un sitio con una
configuracin cuidadosa del correo que sepa cmo manejar todos los tipos de
transporte de correo, tales como UUCP, Usenet, etc. Todos los otros sitios lo nico
que necesitan es un solo protocolo de transporte para enviar su correo a este
anfitrin central. Los sitios que cumplen este papel de enrutadores centrales y
reenviadores se llaman anfitriones inteligentes. Si se tiene un anfitrin inteligente
que acepte correo de usted, se puede enviar correo de cualquier tipo y l se
encargar de gestionar el enrutamiento y la transmisin de ese correo a todos los
sitios remotos deseados.
Otra buena aplicacin para la configuracin de anfitriones remotos es gestionar la
transmisin del correo a travs de un cortafuegos privado. Una organizacin
puede elegir instalar una red IP privada y utilizar sus propias direcciones IP no
registradas. La red privada se puede conectar a Internet mediante un cortafuegos.
El enviar el correo desde y hacia los diversos anfitriones dentro de la red privada
hacia el mundo exterior utilizando SMTP no ser posible en una configuracin
convencional debido a que los sitios locales no pueden establecer una conexin
directa de red a los sitios que estn en Internet. En cambio, la organizacin puede
329

LINUX

Mayo 2004

optar por que el cortafuegos tenga la funcin de anfitrin inteligente. El anfitrin


inteligente que se ejecute en el cortafuegos ser capaz de establecer conexiones
directas de red con los sitios que se encuentran tanto en el interior de la red
privada como en el exterior de ella. El anfitrin inteligente puede aceptar correo de
ambos anfitriones, de los que estn en la red privada y de los que estn en
Internet, el correo se guarda en un almacenamiento local y luego se gestiona la
retransmisin de ese correo directamente al sitio adecuado.
Los anfitriones inteligentes se utilizan en general cuando todos los otros mtodos
de entrega han fallado. En el caso de una organizacin con una red privada, es
perfectamente razonable que los anfitriones primero intenten entregar el correo
directamente, y si eso falla, entonces los envan al anfitrin inteligente. Esto
descarga mucho el trfico que va hacia el anfitrin inteligente debido a que los
otros anfitriones pueden enviar correo directamente a otros anfitriones dentro de
la red privada.
sendmail provee de un mtodo simple para configurar un anfitrin inteligente
utilizando la opcin SMART_HOST; para implementarlo en la configuracin de la
Cervecera Virtual, se hace exactamente esto.
Las porciones relevantes de nuestra configuracin que definen al anfitrin
inteligente son:
define(`SMART_HOST', `uucp-new:moria')
LOCAL_NET_CONFIG
# Esta regla asegura que todo el correo local se entrega utilizando
# el transporte smtp, todo lo dems se va a travs del anfitrin inteligente.
R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3

La macro SMART_HOST permite que se especifique el anfitrin que reenviar


todo el correo de salida que no se pueda entregar directamente y el protocolo de
transporte de correo que se debe utilizar para ello.
En la configuracin se est usando el transporte uucp-new hacia el sitio UUCP
moria. Si se quisiera configurar sendmail para que utilice un anfitrin inteligente
con SMTP, se debera escribir algo como lo siguiente:
define(`SMART_HOST', `mail.isp.net')

330

LINUX

Mayo 2004

No se necesita especificar que el transporte es SMTP, ya que est dicho por


omisin.
Puede adivinar lo que la macro LOCAL_NET_CONFIG y la regla de
reescritura podra estar haciendo?
La

macro

LOCAL_NET_CONFIG

permite

agregar

reglas

de

reescritura

directamente a la configuracin de sendmail que definir qu correo se deber


quedar dentro del sistema local. En nuestro ejemplo, se ha utilizado una regla en
la que cualquier correo electrnico cuyo dominio coincida con el dominio de
nuestro anfitrin (.$m.) se reescribe para ser enviado directamente usando el
transporte SMTP. Esto asegura que cualquier mensaje enviado hacia un anfitrin
dentro de nuestro dominio local ser redirigido inmediatamente al transporte
SMTP y enviado directamente a ese anfitrin en vez de pasar a travs de nuestro
anfitrin inteligente, que es el tratamiento por omisin.
5.17 Gestionando correo no deseado o no solicitado (Spam)
Si se ha suscrito a una lista de correo, publicado su direccin de correo
electrnico en un sitio web, o enviado un artculo a UseNet, lo ms probable es
que comience a recibir correo electrnico no solicitado con anuncios. Son los
lugares comunes en donde la gente que ronda por la red busca las direcciones de
correo para agregarlas a listas de correo que luego venden a compaas que
buscan anunciar sus productos. A este tipo de correo masivo se le conoce como
spam.
El diccionario gratuito de la computacin en lnea ofrece una definicin con
respecto al correo de spam que dice:
2. (En un sentido ms estricto que 1, arriba) El envo indiscriminado de grandes
cantidades de correo electrnico no solicitado para promocionar un producto o un
servicio. El spam, en este sentido, es una especie equivalente electrnico de el
correo basura enviado al "inquilino."
En los aos 90, con el crecimiento del inters comercial en la red, hay algunas
personas sin escrpulos que ofrecen el uso del spam como un "servicio" a las
compaas que quieren anunciarse en la red. Ello lo consiguen al enviar mensajes
a grandes colecciones de direcciones de correo, foros de noticias de Usenet o
331

LINUX

Mayo 2004

listas de correo. Dichas prcticas han causado furia y reaccin agresiva de


muchos usuarios de la red en contra de dichos individuos.
Por fortuna, sendmail tiene algunos mecanismos que pueden ayudar a tratar al
correo no solicitado.
5.18 Las Listas Negras en Tiempo Real (RBL)
Las listas de exclusin en tiempo real (RBL, Real-time Blackhole List) es una lista
pblica que ayuda a reducir el volumen de anuncios no solicitados con los que se
tiene que tratar. Algunas fuentes de correo electrnico estn en listadas en una
base de datos consultable a travs de Internet. Ellos han sido incluidos all por la
gente que recibe anuncios no solicitados de alguna direccin de correo. Los
grandes dominios, en ocasiones estn en dicha lista debido a algn resbaln que
les impidi detener el spam. Mientras que alguna gente se queja de alguna
seleccin en particular hecha por los mantenedores de la lista, an sigue siendo
muy popular y los errores se arreglan con rapidez.
Si se habilita esta opcin de sendmail, se buscar la direccin de origen de cada
mensaje que llegue en la base de datos de la Lista Negra en tiempo real para
determinar si se acepta o no el mensaje. Si se tiene un gran sitio con muchos
usuarios, esta opcin podra ahorrarles una gran cantidad de espacio en disco.
Esta opcin acepta como parmetro especificar el nombre del servidor que se va
a utilizar. El servidor principal por omisin es rbl.maps.vix.com.
Para configurar la opcin de "listas negras en tiempo real", se debe agregar la
siguiente declaracin de macro en el fichero sendmail.mc:
FEATURE(rbl)

Si se quiere especificar otro servidor de RBL, la declaracin que se debe escribir


debe ser como la siguiente:
FEATURE(rbl,`rbl.host.net')

5.19 La base de datos de acceso


Un sistema alternativo que tiene gran flexibilidad para el control a cambio del
costo que implica una configuracin manual es la opcin access_db. La base de
332

LINUX

Mayo 2004

datos de acceso permite configurar qu anfitriones o usuarios sern aceptables


para enviar correo y quines pueden utilizarlo como puente.
Gestionar a quines se les permitir reenviar el correo es muy importante ya que
el reenvo es una tcnica de uso comn para mandar correo basura a los
anfitriones que tienen sistemas como el RBL del que se coment anteriormente
para evitar la basura. En vez de enviar el correo directamente, los 'spammers'
utilizarn el reenvo a travs de un anfitrin que, ingenuamente, lo permita. La
conexin entrante de SMTP no provendr del anfitrin conocido por enviar
basura, sino de quien lo reenvi. Para garantizar que nuestro anfitrin no sea
utilizado de esta forma, slo se debe reenviar el correo de los sitios autorizados.
Las versiones de sendmail que son 8.9 o posteriores, tienen el reenvo
deshabilitado por omisin, as que para ellos ser necesario utilizar la base de
datos de acceso para habilitar a los sitios locales para que puedan reenviar sus
mensajes.
La idea general es muy sencilla. Cuando se recibe una conexin de entrada por
SMTP, sendmail toma la informacin del encabezado de entrada y luego consulta
la base de datos de acceso para ver si aceptar el contenido del mensaje.
La base de datos de acceso es una coleccin de reglas que describen qu
acciones se deben tomar para los mensajes recibidos de los anfitriones
nombrados. El archivo de control de acceso por omisin se llama /etc/mail/access.
La tabla tiene un formato muy simple. Cada lnea de la tabla contiene una regla de
acceso. El lado izquierdo de cada regla es un patrn utilizado para comparar con
el remitente de un mensaje de correo de entrada. Puede ser una direccin de
correo completa, un nombre de anfitrin o una direccin IP.
El lado derecho es la accin que se deber tomar. Hay cinco tipos de acciones
que se pueden seleccionar y son descritas en el apndice.
Contestar con un mensaje de error utilizando ### como cdigo de error (el cual
deber cumplir con el RFC-821) y cualquier texto ser el mensaje.
Como ejemplo, el archivo /etc/mail/access podra ser como este:
friends@cybermail.com REJECT
aol.com REJECT
207.46.131.30 REJECT
postmaster@aol.com OK

333

LINUX

Mayo 2004

linux.org.au RELAY

Este

ejemplo

rechazar

cualquier

correo

que

se

reciba

desde

friends@cybermail.com, cualquier anfitrin en el dominio aol.com y el anfitrin


207.46.131.30

La

siguiente

regla

aceptar

correo

electrnico

desde

postmaster@aol.com a pesar del hecho de que el dominio en s mismo tiene una


regla de rechazo. Y la ltima regla permite el reenvo de correo de cualquier
anfitrin en el dominio linux.org.au.
Para habilitar la opcin de la base de datos de acceso, se debe utilizar la
siguiente declaracin en su archivo sendmail.mc:
FEATURE(access_db)

La definicin por omisin construye la base de datos con hash -o /etc/mail/access,


lo que genera una base de datos con formato hash a partir de un archivo de texto
simple. Esto es perfectamente adecuado en la mayor parte de las instalaciones.
5.20 Exclusin usuarios de la recepcin de correo
Si tiene usuarios o procesos automatizados que envan correo pero nunca
necesitan recibirlo, es a veces til no aceptar el correo destinado a ellos. Esto
salva espacio de disco malgastado en almacenar correo que nunca ser ledo. La
caracterstica blacklist_recipients cuando se usa en combinacin con la
caracterstica access_db le permite desactivar la recepcin de correo para
usuarios locales.
Para activar la caracterstica, agregue las siguientes lneas al archivo
sendmail.mc, si no estn ya all:
FEATURE(access_db)
FEATURE(blacklist_recipients)

Para desactivar la recepcin de correo de un usuario local, simplemente aada


sus datos a la base de datos de acceso. Normalmente podra usar el estilo de
entrada ### que devolvera un mensaje de error con significado al remitente para
que as sepa por qu el correo no se ha entregado. Esta caracterstica se aplica
igualmente bien a usuarios en dominios de correo virtuales, y debe incluir el
334

LINUX

Mayo 2004

dominio virtual de correo en la especificacin de la base de datos de acceso.


Algunas entradas de /etc/mail/access podran semejarse a esto:
daemon 550 El demonio no acepta ni lee correo.
flacco 550 El correo de este usuario ha sido desactivado administrativamente.
grump@dairy.org 550 Correo desactivado para este destinatario.

5.21 Configurando el Hospedaje Virtual de Correo


El hospedaje virtual de correo proporciona a un anfitrin la capacidad de aceptar y
entregar correo en nombre de varios dominios diferentes aunque estn en varios
hospedajes de correo separados. Normalmente son los Proveedores de
Aplicacin de Internet los que explotan el hospedaje virtual en combinacin con
hospedaje virtual de webs, pero es sencillo de configurar y nunca se sabr
cuando tendr la necesidad de hospedar virtualmente una lista de correo.
5.21.1 Aceptar correo para otros dominios
Cuando sendmail recibe un mensaje de correo electrnico, compara el anfitrin
de destino en las cabeceras del mensaje con el nombre del anfitrin local. Si
coinciden, sendmail acepta el mensaje para entrega local; si difieren, sendmail
puede decidir aceptar el mensaje e intentar reenviarlo al destino final.
Si se desea configurar hospedeaje virtual de correo, la primera cosa que
necesitamos hacer es convencer a sendmail de que deba aceptar tambin correo
para los dominios que estamos hospedando. Afortunadamente, esto es muy
sencillo de hacer.
La caracterstica de sendmail use_cw_file nos permite especificar el nombre de
un archivo donde almacenamos nombres de dominio para los que sendmail
acepta correo. Para configurar la caracterstica, aada la declaracin de la
caracterstica a su archivo sendmail.mc:
FEATURE(use_cw_file)

El nombre predeterminado del archivo ser /etc/mail/local-host-names para


distribuciones que usen el directorio de configuracin /etc/mail/ o /etc/sendmail.cw
para aquellas que no.
335

LINUX

Mayo 2004

Alternativamente, puede especificar el nombre y la localizacin del archivo


anulando la macro confCW_FILE utilizando una variacion en:
define(`confCW_FILE',`/etc/virtualnames')

Para seguir con el nombre del archivo predeterminado, si desesemos ofrecer


hospedaje virtual a los dominios bovine.net, dairy.org, y artist.org, crearamos
un archivo /etc/mail/local-host names semejante a:
bovine.net
dairy.org
artist.org

Cuando esto est hecho, y asumiendo que los registros DNS apropiados existen y
apuntan stos nombres de dominio a nuestro anfitrin, sendmail aceptar los
mensajes de correo para estos dominios como si estuviesen dirigidos a nuestro
propio nombre de dominio real.

5.21.2 Reenvo de correo hospedado virtualmente a otros destinos


La caracterstica de sendmail virtusertable configura el soporte para la tabla de
usuarios virtuales, donde configuramos el hospedaje de correo virtual. Las tablas
de usuarios virtuales mapean el correo entrante destinado a algunos
usuarios@anfitrin a algunos otro_usuario@otro_anfitrin. Puede pensar en esto
como una caracterstica de alias avanzada; una que opera usando no slo el
usuario de destino, sino tambin el dominio de destino.
Para configurar la caracterstica virtusertable, aada la caracterstica a su
configuracin sendmail.mc como se muestra:
FEATURE(virtusertable)

Por omisin, el archivo conteniendo las reglas para efectuar las traducciones
ser /etc/mail/virtusertable. Puede anular ste mediante el suministro de un
336

LINUX

Mayo 2004

argumento a la definicin de la macro; consulte una referencia detallada de


sendmail para aprender acerca de qu opciones estn disponibles.
El formato de la tabla de usuarios virtuales es muy sencillo. En el lado izquierdo
de cada lnea hay un patrn representando el la direccin de destino original; al
lado derecho, un patrn representando la direccin de correo a la que la se
mapear la direccin virtual hospedada.
El siguiente ejemplo muestra tres posibles tipos de entradas:
samiam@bovine.net colin
sunny@bovine.net darkhorse@mystery.net
@dairy.org mail@jhm.org
@artist.org $1@red.firefly.com

En este ejemplo, estamos hospedando virtualmente tres dominios: bovine.net,


dairy.org, y artist.org. La primera entrada reenva el correo dirigido a un usuario
en el dominio virtual bovine.net a un usuario local en la mquina. La segunda
entrada reenva el correo a un usuario en el mismo dominio virtual a un usuario en
otro dominio. El tercer ejemplo reenva todo el correo dirigido a cualquier usuario
dentro del dominio virtual dairly.org a una sola direccin de correo remota.
Finalmente, la ltima entrada reenva cualquier correo a un usuario en el dominio
virtual artist.org al mismo usuario en otro dominio; por ejemplo, julie@artists.org
sera reenviado a julie@red.firefly.com.
5.22 Probando la Configuracin
La orden m4 procesa los archivos de definicin de la macro de acuerdo a sus
propias reglas de sintaxis sin entender nada sobre la correccin de la sintaxis de
sendmail; as que no debera haber ningn mensaje de error si tiene algo
equivocado en el achivo de definicin de macros. Por esta razn, es muy
importante que pruebe su configuracin. Afortunadamente, sendmail proporciona
una manera relativamente fcil de hacer esto.
sendmail soporta un modo de prueba de direcciones que nos permite probar
nuestra configuracin e identificar cualquier error. En este modo de operacin,
invocamos sendmail desde la lnea de rdenes, y l mismo nos pide una
especificacin del conjunto de reglas y una direccin de destino. sendmail
337

LINUX

Mayo 2004

entonces procesa esa direccin de destino usando las reglas especificadas,


mostrando la salida de cada regla de reescritura mientras se realiza. Para poner
sendmail en este modo, lo invocamos con el argumento bt:
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
>

El archivo de configuracin usado por omisin es el archivo /etc/mail/sendmail.cf;


puede especificar uno alternativo usando el argumento C. Para probar nuestra
configuracin, necesitamos seleccionar varias direcciones para procesar que nos
dirn que cada uno de los requerimientos de manipulacin del correo se
encuentran. Primero, probaremos que sendmail es capaz de entregar correo a
los usuarios locales del sistema. En estas pruebas, todas las direcciones sern
reescritas al transporte de correo local en esta mquina:
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 isaac
rewrite: ruleset 3 input: isaac
rewrite: ruleset 96 input: isaac
rewrite: ruleset 96 returns: isaac
rewrite: ruleset 3 returns: isaac
rewrite: ruleset 0 input: isaac
rewrite: ruleset 199 input: isaac
rewrite: ruleset 199 returns: isaac
rewrite: ruleset 98 input: isaac
rewrite: ruleset 98 returns: isaac
rewrite: ruleset 198 input: isaac
rewrite: ruleset 198 returns: $# local $: isaac
rewrite: ruleset 0 returns: $# local $: isaac

Esta salida nos muestra cmo sendmail procesa el correo dirigido a isaac en
este sistema. Cada lnea nos muestra qu informacin ha sido suministrada a un
conjunto de reglas o el resultado obtenido del procesamiento por un conjunto de
reglas. Le dijimos a sendmail que desebamos emplear el conjunto de reglas 3 y
338

LINUX

Mayo 2004

0 para procesar la direccin. El conjunto 0 es lo que se invoca normalmente y


nosotros forzamos el conjunto 3 porque no se comprueba por omisin. La ltima
lnea nos muestra que el resultado del conjunto 0 en efecto reenva el correo a
isaac al transporte de correo local.
Lo siguiente que comprobaremos es el correo dirigido a nuestra direccin SMTP:
isaac@vstout.vbrew.com.

Deberamos ser capaces de producir el mismo resultado final como en el ltimo


ejemplo:
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 isaac@vstout.vbrew.com
rewrite: ruleset 3 input: isaac @ vstout . vbrew . com
rewrite: ruleset 96 input: isaac < @ vstout . vbrew . com >
rewrite: ruleset 96 returns: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 3 returns: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 0 input: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 199 input: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 199 returns: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 98 input: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 98 returns: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 198 input: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 198 returns: $# local $: isaac
rewrite: ruleset 0 returns: $# local $: isaac

Otra vez la prueba se pas. Lo siguiente es probar el correo a nuestra direccin


estilo UUCP:
vstout!isaac.
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 vstout!isaac
rewrite: ruleset 3 input: vstout ! isaac
rewrite: ruleset 96 input: isaac < @ vstout . UUCP >
rewrite: ruleset 96 returns: isaac < @ vstout . vbrew . com . >

339

LINUX

Mayo 2004

rewrite: ruleset 3 returns: isaac < @ vstout . vbrew . com . >


rewrite: ruleset 0 input: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 199 input: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 199 returns: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 98 input: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 98 returns: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 198 input: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 198 returns: $# local $: isaac
rewrite: ruleset 0 returns: $# local $: isaac

Esta prueba tambin se pas. Estas pruebas confirman que cualquier correo
recibido para los usuarios locales en nuestra mquina ser entregado
apropiadamente sin importar cmo est formateada la direccin. Si ha definido
cualquier alias en su mquina, como hospedajes virtuales, debera repetir estas
pruebas para cada uno de los nombres alternativos por los que este anfitrin se
conoce para asegurarse que tambin funcionan correctamente.
Despus, probaremos que el correo dirigido a otros anfitriones en el dominio
vbrew.com se entregan directamente a ese anfitrin usando el transporte de
correo SMTP:
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 isaac@vale.vbrew.com
rewrite: ruleset 3 input: isaac @ vale . vbrew . com
rewrite: ruleset 96 input: isaac < @ vale . vbrew . com >
rewrite: ruleset 96 returns: isaac < @ vale . vbrew . com . >
rewrite: ruleset 3 returns: isaac < @ vale . vbrew . com . >
rewrite: ruleset 0 input: isaac < @ vale . vbrew . com . >
rewrite: ruleset 199 input: isaac < @ vale . vbrew . com . >
rewrite: ruleset 199 returns: isaac < @ vale . vbrew . com . >
rewrite: ruleset 98 input: isaac < @ vale . vbrew . com . >
rewrite: ruleset 98 returns: isaac < @ vale . vbrew . com . >
rewrite: ruleset 198 input: isaac < @ vale . vbrew . com . >
rewrite: ruleset 198 returns: $# smtp $@ vale . vbrew . com . /
$: isaac < @ vale . vbrew . com . >
rewrite: ruleset 0 returns: $# smtp $@ vale . vbrew . com . /
$: isaac < @ vale . vbrew . com . >

340

LINUX

Mayo 2004

Podemos ver que esta prueba ha dirigido el mensaje al transporte SMTP para ser
reenviado directamente al anfitrin vale.vbrew.com y especifica el usuario isaac.
Esta prueba confirma que la definicin LOCAL_NET_CONFIG funciona
correctamente. Para que esta prueba sea satisfactoria, el nombre del anfitrin de
destino debe ser resuelto correctamente, as que debe tener una entrada en
nuestro archivo /etc/hosts, o en nuestro DNS local. Podemos ver qu ocurre si el
nombre del anfitrin de destino no es capaz de resolverse especificando
intencionadamente un anfitrin desconocido:
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 isaac@vXXXX.vbrew.com
rewrite: ruleset 3 input: isaac @ vXXXX . vbrew . com
rewrite: ruleset 96 input: isaac < @ vXXXX . vbrew . com >
vXXXX.vbrew.com: Name server timeout
rewrite: ruleset 96 returns: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 3 returns: isaac < @ vXXXX . vbrew . com >
== Ruleset 3,0 (3) status 75
rewrite: ruleset 0 input: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 199 input: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 199 returns: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 98 input: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 98 returns: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 198 input: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 95 input: < uucp-new : moria > isaac </
@ vXXXX . vbrew . com >
rewrite: ruleset 95 returns: $# uucp-new $@ moria $: isaac </
@ vXXXX . vbrew . com >
rewrite: ruleset 198 returns: $# uucp-new $@ moria $: isaac </
@ vXXXX . vbrew . com >
rewrite: ruleset 0 returns: $# uucp-new $@ moria $: isaac </
@ vXXXX . vbrew . com >

Este resultado es muy diferente. Primero el conjunto de reglas 3 devuelve un


mensaje de error indicando que el nombre del anfitrin no se pudo resolver.
segundo, tratamos esta situacin delegando en la otra caracterstica clave de
nuestra configuracin: el anfitrin inteligente. El anfitrin inteligente estar para
manipular cualquier correo que no se pueda entregar de otra manera. El nombre
341

LINUX

Mayo 2004

del anfitrin que especificamos en esta prueba era incapaz de ser resuelto y los
conjuntos de reglas determinaron que el correo debera ser reenviado a nuestro
anfitrin inteligente moria usando el transporte de correo uucp-new. Nuestro
anfitrin inteligente quiz est mejor conectado y sepa qu hacer con la direccin.
Nuestra prueba final asegura que cualquier correo dirigido a un anfitrin que no
est dentro de nuestro dominio se entrega a nuestro anfitrin inteligente. Esto
debera producir un resultado similar a nuestro ejemplo previo:
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 isaac@linux.org.au
rewrite: ruleset 3 input: isaac @ linux . org . au
rewrite: ruleset 96 input: isaac < @ linux . org . au >
rewrite: ruleset 96 returns: isaac < @ linux . org . au . >
rewrite: ruleset 3 returns: isaac < @ linux . org . au . >
rewrite: ruleset 0 input: isaac < @ linux . org . au . >
rewrite: ruleset 199 input: isaac < @ linux . org . au . >
rewrite: ruleset 199 returns: isaac < @ linux . org . au . >
rewrite: ruleset 98 input: isaac < @ linux . org . au . >
rewrite: ruleset 98 returns: isaac < @ linux . org . au . >
rewrite: ruleset 198 input: isaac < @ linux . org . au . >
rewrite: ruleset 95 input: < uucp-new : moria > isaac </
@ linux . org . au . >
rewrite: ruleset 95 returns: $# uucp-new $@ moria $: isaac </
@ linux . org . au . >
rewrite: ruleset 198 returns: $# uucp-new $@ moria $: isaac </
@ linux . org . au . >
rewrite: ruleset 0 returns: $# uucp-new $@ moria $: isaac </
@ linux . org . au . >

Los resultados de esta prueba indican que el nombre del anfitrin se resolvi, y
que el mensaje podra ser enrutado a nuestro anfitrin inteligente. Esto prueba
que nuestra definicin LOCAL_NET_CONFIG funciona correctamente y que
manej ambos casos correctamente. Esta prueba es tambin exitosa, as que
podemos felizmente asumir que nuestra configuracin es correcta y usarla.
5.23 Ejecucin de Sendmail
342

LINUX

Mayo 2004

El demonio sendmail puede ejecutarse de dos formas. Una manera es ejecutarlo


desde el demonio inetd y la otra, ms usual, es ejecutar sendmail como un
demonio en solitario. Tambin es comn para los programas de transporte invocar
sendmail como una orden de usuario para aceptar el envo del correo generado
localmente.
Cuando se ejecuta sendmail de modo solitario, se pone la instruccin en un
archivo rc para que se inicie en tiempo de arranque. La sintaxis usada es
normalmente:
/usr/sbin/sendmail -bd -q10m

El argumento -bd le dice a sendmail que se ejecute como un demonio. Se


bifurcar y se ejecutar en segundo plano. El argumento -q10m le indica a
sendmail que verifique su cola cada diez minutos. Puede escoger un tiempo
diferente para verificar la cola.
Para ejecutar sendmail desde el demonio de red inetd podra usar una entrada
como sta:
smtp stream tcp nowait nobody /usr/sbin/sendmail bs

El argumento -bs aqu le dice a sendmail que utilice el protocolo SMTP en


stdin/stdout, que se requiere para utilizarlo con inetd.
La orden runq es usualmente un enlace simblico al binario de sendmail y es
una forma ms conveniente que:
# sendmail q

Cuando sendmail se invoca de esta manera, procesa cualquier correo esperando


en la cola para ser transmitido. Cuando se ejecuta sendmail desde inetd debe
crear un trabajo en cron que ejecute la orden runq peridicamente para
asegurarse que el correo se sirve peridicamente.
Una tabla de cron til sera similar a :
# Ejecutar la entrega de correo cada quince minutos

343

LINUX

Mayo 2004

0,15,30,45 * * * * /usr/bin/runq

En muchas instalaciones sendmail procesa la cola cada 15 minutos como se


muestra en nuestra tabla crontab de ejemplo, intentando transmitir cualquier
mensaje all.
5.24 Pistas y Trucos
Hay varias cosas que se pueden hacer para que la gestin de un sitio sendmail
sea eficiente. Se proporcionan varias herramientas en el paquete sendmail.
5.24.1 Gestin de la Cola de Correo
El correo es encolado en el directorio /var/spool/mqueue antes de ser transmitido.
Este directorio se llama la cola de correo. El programa sendmail proporciona un
mtodo para mostrar una lista formateada de todos los mensajes de correo en la
cola y su estado.
La orden /usr/bin/mailq es un enlace simblico al ejecutable de sendmail y se
comporta idnticamente a:
# sendmail bp

La salida muestra el identificador del mensaje (ID), su tamao, la hora en que fue
colocado en la cola, quin lo envi y un mensaje indicando su estado actual. El
siguiente ejemplo muestra un mensaje de correo atascado en la cola con un
problema:
$ mailq
Mail Queue (1 request)
--Q-ID-- --Size-- -----Q-Time----- ------------Sender/Recipient-----------RAA00275 124 Wed Dec 9 17:47 root
(host map: lookup (tao.linux.org.au): deferred)
terry@tao.linux.org.au

Este mensaje est todava en la cola de correo porque la direccin IP del anfitrin
de destino no se ha podido resolver.

344

LINUX

Mayo 2004

Podemos forzar sendmail para procesar la cola ahora mediante la instruccin


/usr/bin/runq. La orden runq no produce ninguna salida. sendmail comenzar
procesando la cola de correo en segundo plano.
5.24.2 Forzar a un Anfitrin Remoto a Procesar su Cola de Correo
Si usa una conexin a Internet temporal mediante marcado telefnico con una
direccin IP fija y delega en un anfitrin MX para recibir su correo mientras est
desconectado, encontrar til forzar al anfitrin MX para que procese su cola de
correo tan pronto como se establezca una conexin.
Un pequeo programa perl se incluye con la distribucin de sendmail que hace
esto simple para los anfitriones de correo que lo soportan. El guin etrn tiene
como mucho el mismo efecto en un anfitrin remoto como la instruccin runq
tiene en el nuestro. Si invocamos la orden como se indica en este ejemplo:
# etrn vstout.vbrew.com

forzaremos al anfitrin vstout.vbrew.com que procese cualquier correo en espera


para nuestra mquina local. Tpicamente aadira esta instruccin al guin PPP
ip-up de manera que se ejecute tan pronto como la conexin de red sea
establecida.
5.24.3 Anlisis de las Estadsticas de Correo
Sendmail almacena datos de los volmenes de trfico de correo y alguna
informacin sobre los anfitriones a los cules ha entregado correo. Hay dos
instrucciones disponibles para mostrar esta informacin, mailstats y hoststat,
estos estan descritos en el apendice.
Un ejemplo de la salida de la orden mailstats se muestra en el ejemplo 5-5:
5.24.4 Ejemplo 5-5. Ejemplo de la Salida de la Instruccin mailstats
# /usr/sbin/mailstats
Statistics from Sun Dec 20 22:47:02 1998
M msgsfr bytes_from msgsto bytes_to msgsrej msgsdis Mailer

345

LINUX

Mayo 2004

0 0 0K 19 515K 0 0 prog
3 33 545K 0 0K 0 0 local
5 88 972K 139 1018K 0 0 esmtp
=============================================================
T 121 1517K 158 1533K 0 0

Estos datos son recogidos si la opcin StatusFile est activada en el archivo


sendmail.cf y el archivo de estado existe. Tpicamente aadira lo siguiente a su
archivo sendmail.cf:
# status file
O StatusFile=/var/log/sendmail.st

Para reiniciar la recogida de estadsticas, necesita hacer el archivo de estadsticas


de longitud cero: > /var/log/sendmail.st y reiniciar sendmail.
Ejemplo 5-6 muestra la clase de salida que podra esperarse de la instruccin
hoststat. Ntese que la mayor parte de los resultados indican una entrega
exitosa. El resultado para earthlink.net, por otra parte, indica que la entraga no
fue exitosa. El mensaje de estado puede algunas veces ayudar a determinar la
causa del fallo. En este caso, la conexin expir, probablemente porque el
anfitrin estaba cado o inalcanzable a la hora en que la entrega se intent.
5.24.5 Ejemplo 5-6. Ejemplo de Salida de la Instruccin hoststat
# hosts at
-------------- Anfitrinname ---------- How long ago ---------Results--------mail.telstra.com.au 04:05:41 250 Message accepted for
scooter.eye-net.com.au 81+08:32:42 250 OK id=0zTGai-0008S9-0
yarrina.connect.com.a 53+10:46:03 250 LAA09163 Message acce
happy.optus.com.au 55+03:34:40 250 Mail accepted
mail.zip.com.au 04:05:33 250 RAA23904 Message acce
kwanon.research.canon.com.au 44+04:39:10 250 ok 911542267 qp 21186
linux.org.au 83+10:04:11 250 IAA31139 Message acce
albert.aapra.org.au 00:00:12 250 VAA21968 Message acce
field.medicine.adelaide.edu.au 53+10:46:03 250 ok 910742814 qp 721
copper.fuller.net 65+12:38:00 250 OAA14470 Message acce
amsat.org 5+06:49:21 250 UAA07526 Message acce
mail.acm.org 53+10:46:17 250 TAA25012 Message acce
extmail.bigpond.com 11+04:06:20 250 ok

346

LINUX

Mayo 2004

earthlink.net 45+05:41:09 Deferred: Connection time

La instruccin purgestat vaca los datos del anfitrin recogidos y es equivalente a


invocar sendmail como:
# sendmail bH

Las estadsticas continuarn creciendo hasta que usted las purge. Quiz quiera
ejecutar peridicamente la instruccin purgestat para hacer ms fcil buscar y
encontrar entradas recientes, especialmente si tiene un sitio con mucho trfico.
Podra

poner la

orden

en

un

archivo

crontab

para

que

se

ejecute

automticamente, o tan slo hacerlo usted mismo ocasionalmente.


5.25 Poner Eximen marcha
Aunque Exim es muy compatible con sendmail en su comportamiento, sus
archivos de configuracin son completamente diferentes.
El principal archivo de configuracin se llama normalmente /etc/exim.conf o
/etc/exim/config en la mayora de las distribuciones de GNU/Linux, o
/usr/lib/exim/config en configuraciones ms antiguas. Puede averiguar dnde se
encuentra el archivo de configuracin ejecutando la orden:
$ exim -bP configure_file

Quiz tenga que editar el archivo de configuracin para reflejar los valores
especficos de su sistema. En las configuraciones ms comunes no hay mucho
que cambiar, y una configuracin que funcionase raramente tendra que
modificarse.
De manera predeterminada, Exim procesa y enva todo el correo al instante. Si
sufre un trfico relativamente alto, tambin puede hacer que Exim recoja todos los
mensajes en la cola de correo y slo los procese a intervalos regulares.
Cuando gestiona correo en una red TCP/IP, Exim se ejecuta frecuentemente en
modo demonio: durante el arranque del sistema /etc/init.d/eximlo invoca. y se
coloca en segundo plano, donde espera conexiones TCP entrantes por el puerto
SMTP. Esto resulta beneficioso cuando se tiene un trfico significativo porque as
347

LINUX

Mayo 2004

Exim no tiene que iniciarse para cada conexin entrante. De manera alternativa,
inetd puede gestionar el puerto SMTP y lanzar a Exim cuando haya una conexin
en ese puerto. Esta configuracin puede resultar til si dispone de una memoria
limitada y volmenes bajos de trfico.
Exim posee un complicado conjunto de opciones por lnea de rdenes, incluyendo
muchas que coinciden con las de sendmail. En vez de intentar reunir todas las
opciones que se ajusten exactamente a sus necesidades, puede implementar los
tipos ms comunes de operaciones invocando rdenes tradicionales como rmail o
rsmtp. Se trata de enlaces simblicos a Exim (y si no, puede enlazarlos
fcilmente). Cuando ejecute una de las rdenes, Exim comprobar el nombre que
us para invocarlo y l mismo usar las opciones adecuadas.
Hay dos enlaces a Exim que debera tener bajo cualquier circunstancia:
/usr/bin/rmail y /usr/sbin/sendmail. Cuando compone y enva un mensaje de
correo electrnico con un cliente como elm, el mensaje se traslada a sendmail o
a rmail para que lo enven, que es por lo que /usr/sbin/sendmail y /usr/bin/rmail
deberan apuntar a Exim. La lista de receptores para el mensaje se le pasa a
Exim por la lnea de rdenes. Lo mismo sucede con el correo que entra por
UUCP. Puede configurar los nombres de las rutas requeridas para que apunten a
Exim introduciendo lo siguiente en el indicador del intrprete de rdenes:
$ ln -s /usr/sbin/exim /usr/bin/rmail
$ ln -s /usr/sbin/exim /usr/sbin/sendmail

5.25.1 Ejecucin de Exim


Para ejecutar Exim, primero debe decidir si quiere que gestione los mensajes por
SMTP entrantes ejecutndose como un demonio separado, o si quiere que inetd
se encargue del puerto SMTP invocando a Exim slo cuando se solicite una
conexin SMTP desde el cliente. Normalmente preferir que funcione como
demonio porque eso cargar menos el anfitrin que iniciar Exim una y otra vez en
cada conexin. Como el servidor de correo traslada la mayora del correo entrante
directamente a los usuarios, debera encargarle la gestin a inetd en la mayora
del resto de anfitriones.
Sea cual sea el modo de funcionamiento para cada anfitrin, tiene que asegurarse
de tener la siguiente entrada en su archivo /etc/services:
348

LINUX

Mayo 2004

smtp 25/tcp # Simple Mail Transfer Protocol

Esto define el nmero del puerto TCP que se usar en las comunicaciones SMTP.
El puerto 25 es el estndar definido por el RFC de Nmeros Asignados (RFC1700).
Cuando se ejecuta como demonio, Exim se coloca en segundo plano y espera
conexiones por el puerto SMTP.
Cuando se da una conexin se bifurca y el proceso hijo lleva a cabo una
conversacin SMTP con el proceso compaero del anfitrin que llama. El
demonio Exim se inicia normalmente invocndolo desde el guin rc durante el
arranque por medio de la siguiente orden:
/usr/sbin/exim -bd -q15m

La opcin bd activa el modo demonio y q15m hace que procese los mensajes que
se hayan acumulado en la cola durante los ltimos quince minutos.
Si quiere usar inetd su archivo /etc/inetd.conf debera contener una lnea como
sta:
smtp stream tcp nowait root /usr/sbin/exim in.exim bs

Recuerde que tiene que hacer que inetd relea inetd.conf envindole una seal
HUP tras realizar cualquier cambio. Los modos demonio e inetd se excluyen
mutuamente. Si ejecuta Exim como demonio, debe asegurarse de descomentar
cualquier lnea de inetd.conf para el servicio smtp. De manera equivalente,
cuando inetd se encargue de Exim, asegrese de que ningn guin rc inicie el
demonio Exim.
Puede comprobar si Exim est instalado correctamente para recibir mensajes
SMTP entrantes conectndose por telnet al puerto SMTP de su anfitrin. Una
conexin con xito al servidor SMTP sera algo as como esto:
$ telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.

349

LINUX

Mayo 2004

Escape character is '^]'.


220 richard.vbrew.com ESMTP Exim 3.13 #1 Sun, 30 Jan 2000 16:23:55 +0600
quit
221 richard.brew.com closing connection
Connection closed by foreign host.

Si esta prueba no genera la leyenda del SMTP (la lnea que comienza con el
cdigo 220), compruebe si est ejecutando un demonio Exim o si inetd est
configurado correctamente. Si eso no lo resuelve mire en los archivos de bitcora
de Exim en caso de que haya algn error en el archivo de configuracin de Exim.
5.25.2 Si el correo no llega a su destino
El primer lugar donde mirar es en los archivos de registro de Exim. En los
sistemas GNU/Linux normalmente se encuentran en /var/log/exim/log y se llaman
exim_mainlog, exim_rejectlog y exim_paniclog. En otros sistemas operativos, a
menudo se guardan en /var/spool/exim/log. Puede averiguar dnde se encuentran
estos archivos mediante la orden:
exim -bP log_file_path

El registro principal lista todas las transacciones, el registro de rechazos contiene


mensajes que se han rechazado por cuestiones de polticas y el registro de avisos
mensajes relacionados con errores de configuracin y problemas similares.
Abajo se muestran entradas tpicas del registro principal. Cada entrada del
registro es una nica lnea de texto que comienza con una fecha y una hora. Aqu
se han separado en varias lneas para que quepan en la pgina:
2000-01-30 15:46:37 12EwYe-0004WO-00 <= jack@vstout.vbrew.com
H=vstout.vbrew.com [192.168.131.111] U=exim P=esmtp S=32100
id=38690D72.286F@vstout.vbrew.com
2000-01-30 15:46:37 12EwYe-0004WO-00 => jill <jill@vbrew.com>
D=localuser T=local_delivery
2000-01-30 15:46:37 12EwYe-0004WO-00 Completed

350

LINUX

Mayo 2004

Estas entradas muestran que un mensaje desde jack@vstout.vbrew.com para


jill@vbrew.com se envi con xito a un buzn del anfitrin local. Las llegadas de
mensajes se marcan con <= y los envos con =>.
Hay dos tipos de errores de envo: permanente y temporal. Un error de envo
permanente aparece en una entrada de registro como sta marcado con **:
2000-01-30 14:48:28 12EvcH-0003rC-00 ** bill@lager.vbrew.com
R=lookuphost T=smtp: SMTP error from remote mailer after RCPT TO:
<bill@lager.vbrew.com>: host lager.vbrew.com [192.168.157.2]:
550 <bill@lager.vbrew.com>... User unknown

Tras un error como ste, Exim enva un informe sobre el error en el envo, a
menudo conocido como mensaje de rebote de vuelta al remitente. Los errores
temporales se marcan con ==:
2000-01-30 12:50:50 12E9Un-0004Wq-00 == jim@bitter.vbrew.com
T=smtp defer (145): Connection timed out

Este error es tpico de situaciones en las que Exim reconoce adecuadamente que
un mensaje debera enviarse a un anfitrin remoto pero no es capaz de conectar
con el servicio SMTP en ese anfitrin. El anfitrin puede no encontrarse operando
o puede haber un problema en la red. Cuando un mensaje se pospone como en
este caso, permanece en la cola de Exim y se reintenta su envo a intervalos. De
todos modos, si no consigue enviarse durante bastante tiempo (normalmente
varios das), ocurre un error permanente y el mensaje se devuelve.
Si no es capaz de localizar su problema a partir de los mensajes de error que
genera Exim, quiz quiera activar los mensajes de depuracin. Puede hacer esto
por medio de la variable d, seguida opcionalmente por un nmero que explica el
nivel de verbosidad (un valor de 9 le proporciona el mximo de informacin). Exim
muestra entonces por pantalla un informe sobre sus operaciones, que quiz le
den ms pistas sobre lo que que pueda ir yendo mal.

5.25.3 Compilar Exim


351

LINUX

Mayo 2004

Exim an se encuentra en desarrollo activo. La versin de Exim que se incluye en


las distribuciones de GNU/Linux probablemente no sea la ltima. GNU/Linux es
uno de los muchos sistemas operativos que soportan las fuentes de Exim. Para
compilar Exim bajo GNU/Linux debera editar el archivo src/EDITME y colocar el
resultado en un archivo llamado Local/Makefile. Hay comentarios en src/EDITME
que le dirn para qu son los diferentes ajustes. Ejecute entonces make.
5.25.4 Modos de Envo de Correo
Como ya se ha dicho anteriormente, Exim es capaz de enviar los mensajes de
inmediato o guardarlos en una cola para procesarlos ms tarde. Todo el correo
entrante se guarda en el directorioinput bajo /var/spool/exim. Cuando el encolado
no se encuentra activo, se inicia un proceso de envo para cada mensaje en
cuanto llega. De otro modo, se queda en la cola hasta que un proceso queuerunner lo recoge. El encolado puede ajustarse como incondicional mediante
queue_only en el archivo de configuracin, o puede estar condicionado por la
carga del sistema minuto a minuto mediante: queue_only_load = 4 que hace que
los mensajes se encolen si la carga del sistema excede 4.
Si su anfitrin no est conectado permanentemente a Internet, quiz quiera
activar el encolado para direcciones remotas, permitiendo al mismo tiempo que
Exim realice los envos locales de inmediato. Puede hacer esto poniendo:
queue_remote_domains = * en el fichero de configuracin

Si activa cualquier tipo de encolado tiene que asegurarse de que las colas se
comprueba de manera regular, probablemente cada 10 15 minutos. An sin
opciones explcitas de encolado, las colas necesitan comprobarse por si se
hubieran pospuesto mensajes a causa de fallos temporales de envo. Si ejecuta
Exim como demonio tendr que aadir la opcin q15m en la lnea de rdenes
para procesar la cola cada 15 minutos.
Tambin puede invocar a exim q desde cron a estos intervalos. Puede mostrar la
cola de correo invocando a Exim con la opcin bp. De manera equivalente, puede
enlazar mailq con Exim e invocar mailq:
$ mailq

352

LINUX

Mayo 2004

2h 52K 12EwGE-0005jD-00 <sam@vbrew.com>


D bob@vbrew.com
harry@example.net

Esto muestra un nico mensaje desde sam@vbrew.com para dos receptores en la


cola de mensajes. Se ha enviado con xito a bob@vbrew.com pero an no se ha
enviado a harry@example.net aunque ha estado en la cola dos horas. El tamao
del mensaje es de 52K y la identificacin que usa Exim para este mensaje es
12EwGE-0005jD-00. Puede averiguar por qu an no se ha completado el envo
mirando en el archivo de registro individual del mensaje, que se guarda en el
directorio msglog dentro del directorio de la cola de Exim. La opcin Mvl es una
manera sencilla de hacer esto:
$ exim Mvl 12EwGE-0005jD-00
2000-01-30 17:28:13 example.net [192.168.8.2]: Connection timed out
2000-01-30 17:28:13 harry@example.net: remote_smtp transport deferred:
Connection timed out

Los archivos de registro individuales mantienen una copia de las entradas del
registro para cada mensaje por lo que puede inspeccionarlas fcilmente. Puede
extraer esa misma informacin del fichero de registro principal mediante la utilidad
exigrep:
$ exigrep 12EwGE-0005jD-00 /var/log/exim/exim_mainlog

Eso puede llevarle bastante tiempo, especialmente en un sistema ocupado en el


que los archivos de registro pueden hacerse bastante grandes. La utilidad
exigrep es apropiada cuando se busca informacin sobre ms de un mensaje. Su
primera variable es una expresin regular, y toma todas las lneas del registro de
cualquier mensaje en las que coincida al menos una lnea con la expresin. Por
esto, puede usarse para consultar todos los mensajes en busca de una direccin
o de un anfitrin especficos.
Puede echar un vistazo general a lo que est haciendo un Exim en ejecucin
mediante la orden tail sobre el archivo de registro principal. Otra manera de hacer
esto es ejecutar la utilidad eximon que viene con Exim. Se trata de una aplicacin
353

LINUX

Mayo 2004

que muestra una pantalla donde aparece el registro principal en tiempo real,
adems de mostrarle una lista con los mensajes que estn esperando ser
enviados, as como unas grficas de barras acerca de la actividad de envo.
5.26 Enrutamiento y envo de mensajes
Exim divide el envo de correo en tres tareas diferentes: el enrutado, el
direccionamiento y el transporte.
Hay un nmero de mdulos de cdigo para para cada tarea, siendo cada uno
configurable por separado. En el archivo de configuracin normalmente se
instalan un nmero de diferentes enrutadores, direccionadores y transportes.
Los enrutadores resuelven direcciones remotas, determinando a qu anfitrin
debera enviarse un mensaje y qu transporte debera usarse. En los anfitriones
conectados a Internet a menudo hay un solo enrutador, que lleva a cabo la
resolucin buscando el dominio en el DNS. De forma alternativa, puede haber un
enrutador que se encargue de las direcciones destinadas a los anfitriones de una
LAN local, y un segundo para enviar cualquier otra direccin a un anfitrin
inteligente; por ejemplo, el servidor de correo de un PSI.
Las direcciones locales se envan a los direccionadores, de los que suele haber
una gran cantidad, que se encargan de la gestin de los "alias" y de los reenvos
as como de la identificacin de los buzones locales.
Las listas de correo pueden gestionarse mediante direccionadores de "aliasing" o
de reenvo. Si una direccin se renombra o se reenva, cada direccin generada
la gestionan los enrutadores o los direccionadores, segn sea necesario, de
manera independiente. El caso ms comn, de lejos, ser el envo a un buzn,
pero los mensajes tambin pueden enviarse a una orden o adjuntarse a un fichero
diferente al buzn predeterminado.
Un transporte es responsable de implementar un mtodo de envo; por ejemplo,
enviar el mensaje mediante una conexin SMTP o aadirlo a un buzn especfico.
Los enrutadores y los direccionadores eligen qu transporte usar para cada
direccin receptoras. Si un transporte falla, Exim genera un mensaje de rebote o
pospone el envo para intentar realizarlo ms tarde.
Con Exim goza de una gran libertad para configurar estas tareas. Hay disponibles
controladores para cada una de ellas, entre los que puede escoger aquellos que
354

LINUX

Mayo 2004

necesite. Slo tiene que describrselos a Exim en diferentes secciones de su


archivo de configuracin. Primero se definen los transportes, seguidos de los
direccionadores y despus los enrutadores. No hay nada integrado de manera
predeterminada, aunque Exim se distribuye con un archivo de configuracin
predeterminada que cubre casos sencillos. Si quiere cambiar la poltica de
enrutado de Exim o modificar un transporte, lo ms sencillo ser partir del archivo
de configuracin predeterminada para realizar los cambios en vez de intentar
crear una configuracin completa desde cero.
5.26.1 Mensajes de Encaminamiento
Cuando se da una direccin de envo, Exim comprueba primero si el dominio es
uno de los que se maneja en el anfitrin con una lista en la opcin de
configuracin local_domains. Si no se ha configurado esta opcin, se usa el
nombre del anfitrin local como el nico dominio local. Si el dominio es local, la
direccin la manejan los direccionadores. De otro modo, se pasa a los
enrutadores para que averigen a qu anfitrin reenviar el mensaje.
5.26.2 Enviar mensajes a direcciones locales
De manera ms comn, una direccin local es simplemente el nombre de "login"
de un usuario, en cuyo caso el mensaje se enva al buzn del usuario,
/var/spool/mail/nombre-de-usuario. Otros casos incluyen los alias, los nombres de
listas de correo y los reenvos del usuario. En estos casos, la direccin local se
expande en una nueva lista de direcciones que pueden ser a su vez locales o
remotas.
Aparte de estas direcciones normales, Exim puede manejar otro tipo de destinos
para los mensajes locales, como nombres de archivos y rdenes de "pipe".
Cuando se enva a un archivo, Exim adjunta el mensaje creando ese archivo si es
necesario. Los destinos de archivo y "pipe" no son direcciones propiamente
dichas por lo

que

no

puede

enviar correo

a, pongamos por caso,

/etc/passwd@vbrew.com y esperar que se sobreescriba el archivo de las


contraseas; los envos a un archivo especfico slo son vlidos si vienen de
archivo

de reenvo

o de alias. Tenga en cuenta, no

obstante, que

/etc/passwd@vbrew.com es una direccin de correo sintcticamente vlida, pero


355

LINUX

Mayo 2004

si Exim la recibe buscara (tpicamente) un usuario cuyo "login" fuese /etc/passwd,


y al no encontrar ninguno el mensaje rebotara.
En una lista de alias o en un fichero de reenvo, un nombre de fichero es cualquier
cosa que comience con una barra (/) y que no pueda entenderse como una
direccin de correo plenamente cualificada. Por ejemplo, /tmp/junk en un fichero
de reenvo o de alias es interpreta como un nombre de archivo, pero
/tmp/junk@vbrew.com es una direccin de correo, aunque no parece muy til. De
todas maneras, pueden verse direcciones vlidas de este tipo cuando se enva
correo por medio de ruteadores X.400 porque las direcciones X.400 comienzan
con una barra.
De manera similar, una orden de "pipe" puede ser una orden de Unix precedida
por el smbolo (|), a menos que esta cadena pueda entenderse como una
direccin de correo con dominio vlida. A menos que haya cambiado la
configuracin, Exim no usa consola alguna para ejecutar la orden; sino que la
divide en un nombre de orden y en sus variables y las ejecuta directamente. El
mensaje se emplea como entrada estndar para esa orden.
Por ejemplo, para conducir una lista de correo a un grupo de noticias local, puede
usar un guin de shell de nombre gateit, e instalar un alias local que enve todos
los mensajes de esta lista al guin usando | gateit.
Si la lnea de rdenes contiene una coma, ella y el smbolo de "pipe" precedente
deben entrecomillarse.

5.27 Usuarios locales


Una direccin local denota comnmente un buzn de usuario. ste normalmente
se encuentra en /var/spool/mail y tiene el nombre del usuario, quien tambin es el
propietario del archivo. Si no existe, Exim lo crea.
En algunas configuraciones, el grupo se cambia al grupo del usuario y el modo es
0600. En estos casos, los procesos de envo se ejecutan como un usuario, y el
usuario puede borrar el buzn completamente. En otras configuraciones, el grupo
del buzn es mail, y tiene el modo 660; los procesos de envo se ejecutan bajo un
uid y un grupo del sistema mail, y los usuarios no pueden borrar sus buzones,
aunque s pueden vaciarlos.
356

LINUX

Mayo 2004

Tenga en cuenta que aunque /var/spool/mail es habitualmente el lugar estndar


en el que colocar los ficheros de los buzones, algunos programas de correo
pueden compilarse para usar rutas diferentes, por ejemplo, /usr/spool/mail. Si el
envo a los usuarios de su anfitrin falla de manera consistente, debera ver si le
sirve de algo crear un enlace simblico a /var/spool/mail.
Las direcciones MAILER-DAEMON y postmaster deberan aparecer normalmente
en su archivo de alias, expandindose en la direccin de correo del administrador
del sistema. MAILER-DAEMON lo usa Exim como direccin del remitente en los
mensajes de rebote. Tambin se recomienda que root se instale como un alias
para el administrador, especialmente cuando los envos se ejecutan bajo permisos
de los usuarios receptores para evitar que no se ejecute ningn envo como root.
5.28 Reenvo
Los usuarios pueden redirigir su correo a direcciones alternativas creando un
fichero .forward en sus directorios home. ste contiene una lista de receptores
separados por comas y/o nuevas lneas. Se leen e interpetan todas las lneas del
archivo. Puede usarse cualquier tipo de direccin. Un ejemplo prctico de un
archivo .forward para las vacaciones podra ser:
janet, "|vacation".

En otras descripciones de archivo.forward, puede ver el nombre de usuario al


comienzo precedido por una barra invertida. Esto era necesarios en algunos
MTAs antiguos para detener la bsqueda de .forward para un nombre nuevo, lo
que poda conducir a un bucle infinito. La barra invertida no es necesaria en Exim,
que evita automticamente bucles de este tipo. De todos modos, se permite una
barra invertida y, de hecho, supone una diferencia en configuraciones en las que
se manejan muchos dominios de una vez. Sin la barra invertida, un nombre de
usuario no cualificado se cualifica con un dominio predeterminado; con una barra
invertida se preserva el dominio entrante.
La primera direccin del archivo .forward enva el mensaje entrante al buzn de
janet, mientras que la orden vacation devuelve una breve notificacin al
remitente.
357

LINUX

Mayo 2004

Adems de soportar archivos de reenvo tradicionales, Exim puede configurarse


para que soporte archivos ms complejos conocidos como filtros. En vez de ser
simplemente una lista con direcciones de reenvo, un archivo de filtro puede
contener pruebas sobre el contenido de los mensajes entrantes de manera que,
por ejemplo, pueda hacerse que se reenven nicamente aquellos mensajes cuyo
ttulo contenga la palabra urgente. Los administradores de sistemas deben decidir
si permitirn o no esta flexibilidad a los usuarios.
5.29 Ficheros de alias
Exim es capaz de gestionar ficheros de alias compatibles con los archivos de alias
del sendmail de Berkeley. Las entradas del archivo de alias pueden tener la
siguiente forma:
alias: receptores

receptores es una lista de direcciones separadas por comas que se sustituirn por
el alias. La lista de receptores puede continuarse en nuevas lneas si la lnea
siguiente comienza con un espacio en blanco.
Una propiedad especial permite a Exim gestionar listas de correo que se hayan
especificado separadamente en el archivo de alias: si especifica :include:nombre
de archivo como un receptor, Exim lee el archivo especificado y sustituye su
contenido como una lista de receptores.
El principal fichero de alias es /etc/aliases. Si hace que cualquiera o que cualquier
grupo pueda modificar este archivo, Exim rechazar usario y pospondr los
envos locales. Puede controlar la prueba que realiza con los permisos del archivo
poniendo modemask en el direccionador system_aliases.
Esto es un archivo aliases de ejemplo:
# vbrew.com fichero /etc/aliases
hostmaster: janet
postmaster: janet
usenet: phil
# La lista de correo de desarrollo.
development: joe, sue, mark, biff,
/var/mail/log/development

358

LINUX

Mayo 2004

owner-development: joe
# Los anuncios de inters general se envan a todo
# el equipo
announce: :include: /etc/Exim/staff,
/var/mail/log/announce
owner-announce: root
# la lista de correo ppp se traslada a un grupo local de noticias
ppp-list: "|/usr/local/bin/gateit local.lists.ppp"

Cuando hay nombres de archivos y rdenes por "pipe" en un archivo de alias,


como aqu, Exim necesita que le digan bajo qu usuario ha de ejecutar los envos.
La opcin user (y posiblemente group), tambin debe proporcionarse en el archivo
de configuracin de Exim, ya sea en el direccionador que maneja los alias o en
los transportes a los que dirige estos elementos.
Si ocurre un error al enviarse a una direccin generada a partir del archivo
aliases, Exim enviar un mensaje de rebote al remitente del mensaje, como es
habitual, pero esto quiz no resulte apropiado. Puede usar la opcin errors_to
para especificar que los mensajes de rebote se enven a otro usuario: por
ejemplo, al administrador del correo.

5.30 Listas de correo


En vez de con el archivo aliases, las listas de correo tambin pueden gestionarse
mediante un direccionador forwardfile. Las listas se mantienen en un nico
directorio como /etc/exim/lists/, y un archivo lists/nag-bugs describe una lista de
correo llamada nag-bugs. Esto debera contener las direcciones de los miembros
separadas por comas o por nuevas lneas. Las lneas que comienzan con una
almohadilla (#) se tratan como comentarios. Un sencillo direccionador para usar
esos datos sera como sigue:
lists:
driver = forwardfile
file = /etc/exim/lists/${local_part}
no_check_local_user
errors_to = ${local_part}-request

359

LINUX

Mayo 2004

Cuando se ejecuta este direccionador, los valores de las opciones file y errors_to
se expanden. La expansin hace que ciertas partes de las cadenas que
comienzan con un smbolo del dlar se sustituyan cada vez que se usa la cadena.
El tipo de expansin ms sencillo es la insercin del valor de una de las variables
de Exim, y esto es lo que est sucediendo aqu. La subcadena ${local_part}
sustituye el valor de $local_part, que es la parte local de las direcciones que se
estn procesando.
Para cada lista de correo, debera existir un usuario (o un alias o una lista de
correo) llamado listname-request; se informa a esta direccin de cualquier error al
resolver una direccin o al enviar un mensaje a un miembro de la lista.
5.31 Protegerse contra el "spam"
El spam o correo con fines comerciales no solicitado es un molesto problema para
muchos usuarios. Se ha formado un proyecto para acabar con este problema
conocido como Sistema de Proteccin contra los Abusos en el Correo (MAPS), y
se ha construido un mecanismo que reduce el problema, conocido como Lista de
Agujeros Negros en Tiempo Real (RBL). La idea es sencillamente simple. Los
sitios que se encuentran generando spam se aaden a una base de datos y
agentes de transferencia de correo como Exim son capaces de consultar la base
de datos para confirmar si un remitente es o no un "spammer" antes de aceptar
correo de l.
Desde el advenimiento de la RBL, se han creado muchas otras listas. Una de las
ms tiles es la Lista de Marcado (DUL), que lista las direcciones IP de anfitriones
conectados a la red mediante acceso por llamada telefnica. stas deberan
enviar normalmente el correo a los servidores de correo de sus PSIs. Muchos
sitios bloquean el correo desde llamadas externas porque cuando un anfitrin de
este tipo evita al servidor de su propio PSI normalmente no se trata de algo
bueno.
Exim ofrece soporte para listas en tiempo real y otras listas negras. Esto se
configura de manera muy sencilla. Para activarlo, aada las siguientes lneas a su
archivo /etc/exim.conf:
# Vixie / MAPS RBL (http://maps.vix.com/rbl)

360

LINUX

Mayo 2004

rbl_domains = rbl.maps.vix.com : dul.maps.vix.com

Este ejemplo comprueba tanto la RBL como la DUL, rechazando cualquier


mensaje desde anfitriones que se encuentren en cualquiera de esas listas. La
opcin rbl_hosts le permite especificar grupos de anfitriones a los que se aplica (o
no) la comprobacin RBL. La configuracin predeterminada es:
rbl_hosts = *

lo que significa que todos los anfitriones se encuentran sujetos a la comprobacin


de la RBL. Si quisiera saltarse la lista negra y aceptar correo de un anfitrin
especfico sin que se realizara la comprobacin RBL podra usar, por ejemplo:
rbl_hosts = ! nocheck.example.com : *

El signo de exclamacin antes del primer elemento de la lista indica un elemento


negado: si el anfitrin que llama es nocheck.example.com, coincidir con este
elemento. Pero a causa de la negacin, la comprobacin RBL no se lleva a cabo.
Cualquier otro anfitrin coincidir con el segundo elemento de la lista.
5.32 Instalacin UUCP
Exim no posee cdigo especfico para transportar correo mediante UUCP ni
soporta prohibicin de direcciones UUCP. De todos modos, si se usa el
direccionamiento de dominios, Exim puede interactuar con UUCP de una manera
bastante sencilla. He aqu un fragmento de configuracin para enviar ciertos
dominios a UUCP tomado de una instalacin real:
# Transporte
uucp:
driver = pipe
user = nobody
command = "/usr/local/bin/uux -r - \
${substr_-5:$host}!rmail ${local_part}"
return_fail_output = true
# Encaminador
uucphost:

361

LINUX

Mayo 2004

transport = uucp
driver = domainlist
route_file = /usr/exim/uucphosts

search_type = lsearch

En un archivo de configuracin completo, el transporte se insertara entre los otros


transportes, y el enrutador definido probablemente como el primer enrutador. El
fichero /usr/exim/uucphosts contiene entradas como sta:
darksite.example.com: darksite.UUCP

que

se

interpreta

como,

Enviar

el

correo

dirigido

al

dominio

darksite.example.com al anfitrin UUCP darksite. Puede realizar esta


configuracin de manera ms sencilla sin que el enrutador aada el sufijo UUCP a
darksite slo para que el transporte se lo quite de nuevo, pero este mtodo
resulta til porque as queda ms clara la distincin entre el nombre del dominio
darksite.example.com y el nombre del anfitrin UUCP darksite.
CONCLUSIONES
El correo electronico es y seguira siendo uno de los medios de comunicacin mas
usados por el hombre debido a la gran ventaja que brinda en cuanto a tiempo y
seguridad. Ademas de ser una gran herramiento para el hombre este no presenta
una limitante en cuanto a distancia.

362

LINUX

Mayo 2004

CONCLUSIONES
A travs de la elaboracin de esta tesina podemos concluir que Linux es un
sistema operativo que nos permite interactuar con otros sistemas operativos en
una misma PC.
Por otro lado nos permite hacer mas eficiente el funcionamiento de una red ya
que este sistema es multitarea y ahorra tiempo en el procesamiento y transmisin
de datos.
Linux adems es un sistema que no requiere de altos costos para su manejo,
mantenimiento, actualizacin y crecimiento en redes.
Linux es un sistema operativo el cual ofrece una mayor seguridad en comparacin
a otros sistemas ya que gracias a que el cdigo fuente es libre se pueden crear
mejoras a partir de los mismos usuarios.
Todos los servicios que Linux ofrece mencionados dentro de este trabajo son los
principales servicios que nos permiten la interaccin entre usuarios de diferentes
maquinas para la comparticion de informacin
El uso del sistema operativo Linux es una opcin mas que el mercado ofrece la
cual nos brinda una variedad de servicios tanto a nivel red como en una
computadora personal, nos ofrece una mayor seguridad debido a que su cdigo
fuente es mas robusto.
El uso de Linux cada da esta siendo mas abarcado tanto por pequeas y grandes
compaas como por usuarios independientes.

363

LINUX

Mayo 2004

GLOSARIO
ARP .- Protocolo de resolucin de direcciones
ATM .- Modo de trasferencia asncrona
BASH.- Bourne Again Shell.
BIND .- Nombres de dominio de internet de Berkley
BNU .- Unidades bsicas de red
CHAP .- Protocolo de autentificacin por reto
CSLIP .- SLIP comprimido
DNS .- Servicio de nombres de Dominio
DSL .- Lneas digitales de abonado
FDDI .- Interfaz de datos distribuidos en fibra
Frame Relay .- Conmutacin de tramas
FTP .- Protocolo de transferencia de archivos
ICMP .- Protocolo de control de mensajes por internet
IDP .- Protocolo de datagramas de red
IP .- Internet protocolo
IPCP .- Internet protocolo - control protocolo
IPX .- IP para redes compartidas con Novell
IRQ .- Peticin de interrupcin
LANs .- Redes de rea local
LCP .- Protocolo de control de enlace
LDP .- Proyecto de documentacin Linux
MIME.- Extensiones de Correo Multipropsito (Multipurpose Internet Mail
Extensions).
MUAs.- Agentes de Usuario de Correo (mail user agents).
MTA-Agente de Transporte de Correo (mail transport agent)
MX- Intercambiador de Correo (Mail Exchanger)
NAT .- Traduccin de direcciones de red
NCPFS .- Netware Core Protocol File System
NFS .- Sistema de Archivos de Red
NIS .- Sistema de informacin de red
364

LINUX

Mayo 2004

NNTP .- Protocolo para la transferencia de noticias de red


PAP .- Protocolo de autentificacin por contrasea
PLIP .- IP sobre lneas paralelas
POST.- Auto Prueba de Encendido (Power On Self Test., POST).
PPP .- Protocolo punto a punto
RBL .- Listas negras en tiempo real
RIP .- Protocolo de informacin de enrutador
RPC .- Llamada a procedimiento remoto
RTS/CTS .- Listo para enviar limpio para enviar
SLIP .- IP sobre lnea serie
SMTP.- Protocolo Simple de Transferencia de Correo.
SO.- Sistema Operativo.
TCP .- Protocolo de control de transmisin
TFTP .- Protocolo de Transferencia de archivos triviales
TNC .-Controlador de nodo terminal
UDP .- Protocolo de datagramas de usuario
UUCP.-Unix to Unix Copy
WANs .- Redes de area amplia

365

LINUX

Mayo 2004

APNDICE
IFCONFIG: Parmetros reconocidos por ifconfig.
Las opciones que simplemente activan alguna caracterstica pueden usarse para
desactivarla precedindolas de un guin ().
up
Marca la interfaz como disponible para que sea usada por la capa IP. Esta opcin
va implcita cuando lo que se da en la lnea de rdenes es una direccin. Tambin
permite reactivar una interfaz que se ha desactivado temporalmente mediante la
opcin down. Esta opcin corresponde a los indicadores UP y RUNNING.
down
Marca la interfaz como inaccesible a la capa IP. Esto inhabilita cualquier trfico IP
a travs de la interfaz. Es importante darse cuenta que esto tambin borra los
registros de la tabla de encaminamiento correspondientes a esa interfaz de forma
automtica.
netmask mscara
Esto asigna una mscara de subred a una interfaz. Se puede dar como un valor
de 32 bits en hexadecimal precedido del prefijo 0x, o en notacin de cuaterna
usando nmeros decimales separados por puntos. Aunque la notacin en forma
de cuaterna es ms comn, la representacin hexadecimal es muchas veces ms
fcil de usar. Las mscaras de red son esencialmente binarias, y es ms fcil
hacer una conversin binario-a-hexadecimal que una binario-a-decimal.
pointopoint direccin
Esta opcin se usa para enlaces IP punto-a-punto en los que intervienen
nicamente dos mquinas. Esta opcin es necesaria para, por ejemplo, configurar
las interfaces SLIP o PLIP. Si se ha definido una direccin punto a punto,ifconfig
muestra el indicador POINTOPOINT.
broadcast direccin
La direccin de difusin se obtiene, generalmente, usando la parte de red de la
direccin y activando todos los bits de la parte correspondiente a la mquina.
Algunas implementaciones de los protocolos IP (por ejemplo, sistemas derivados
de BSD 4.2) utilizan un esquema diferente; esta opcin proporciona un mtodo

366

LINUX

Mayo 2004

para adaptarse a esos entornos ms raros. ifconfig confirma el establecimiento


de una direccin de difusin incluyendo el indicador BROADCAST.
irq
Esta opcin permite establecer la lnea de IRQ usado por ciertos dispositivos.
Esto es especialmente
til para PLIP, pero tambin puede ser de utilidad para algunas tarjetas Ethernet.
metric nmero
Esta opcin puede ser usada para asignar un valor de mtrica a la tabla de
encaminamiento creada para la interfaz. Esta mtrica es usada por el Protocolo
de Informacin de Encaminamiento (RIP) para construir las tablas de
encaminamiento para la red. El valor usado por omisin por ifconfig es cero. Si
no esta ejecutando un demonio RIP, no necesita usar esta opcin para nada; si
por el contrario lo usa, slo tendr que modificar este valor en contadas
ocasiones.
mtu bytes
Esto fija la unidad mxima de transferencia, o lo que es lo mismo, el mximo
nmero de octetos que la interfaz es capaz de manejar en una nica transaccin.
Para Ethernets, la MTU toma el valor 1500 por omisin (que es el tamao mximo
permitido para un paquete Ethernet); para interfaces tipo SLIP, el valor por defecto
es 296. No hay tamao lmite para el MTU en enlaces SLIP, pero este valor es
una buena garanta.
arp
Esta opcin es especfica de redes de difusin como las Ethernets o las de radiopaquetes. Permite el uso de ARP, el Protocolo de Resolucin de Direcciones, para
detectar la direccin fsica de las mquinas conectadas a la red. Para redes de
difusin, esta opcin es habilitada por omisin. Si ARP est desactivado, ifconfig
muestra el indicador NOARP.
arp
Inhabilita el uso de ARP para esta interfaz.
promisc
Pone la interfaz en modo promiscuo. En una red de difusin, esto hace que la
interfaz reciba todos los paquetes, independientemente de si eran para ella o no.
Esto permite el anlisis del trfico de red utilizando utilidades como filtros de
367

LINUX

Mayo 2004

paquetes, tambin llamado fisgoneo de Ethernet. Se trata de una buena tcnica


para localizar problemas de red que de otra forma resultan difciles de detectar.
Herramientas como tcpdump se basan en esto. Por otro lado, esta opcin
permite a los atacantes hacer cosas feas, como filtrar el trfico de su red en busca
de contraseas. Usted puede protegerse contra este tipo de ataques simplemente
prohibiendo que nadie conecte un ordenador en la red. Tambin puede usar
protocolos de autentificacin segura, como Kerberos o ssh (secure shell). Esta
opcin corresponde al indicadorPROMISC.
promisc
Esta opcin apaga el modo promiscuo.
allmulti
Las direcciones de envo mltiple (multicast) son como las direcciones de difusin
de Ethernet, excepto que en lugar de incluir automticamente a todo el mundo, los
nicos que reciben paquetes enviados a una direccin de envo mltiple son
aquellos programados para escucharla. Esto es til para aplicaciones como
videoconferencia basada en Ethernet o audio para red, en los que slo los
interesados pueden escuchar. Las direcciones de envo mltiple estn soportadas
por casi todas las controladoras Ethernet (pero no todas). Cuando esta opcin
est activa, la interfaz recibe y enva paquetes de envo mltiple para su proceso.
Esta opcin corresponde al indicador ALLMUTI.
allmulti
Esta opcin desactiva las direcciones de envo mltiple.
NSSWITCH.CONF :

El Archivo nsswitch.conf

dns
Indica que se usa el DNS para resolver la direccin. Esto solo sirve para
resolucin de nodos, no de redes. Para ello se mira primero el fichero
/etc/resolv.conf, que veremos despus.
files
Hace la bsqueda en un fichero local. Es decir, en /etc/hosts para los nodos, y
en /etc/network para las redes.
nis o nisplus
368

LINUX

Mayo 2004

Usar el sistema NIS (sistema de informacin en red) para resolver nodos o


redes.
NAMED.BOOT: Argumentos de named.boot
directory
Especifica un directorio donde estn los ficheros de zona. Pueden ponerse varios
directorios repitiendo el comando directory. De acuerdo con el estndar de
sistema de ficheros para Linux, el directorio debera ser /var/named.
primary
Los argumentos que lleva son un nombre de dominio y un nombre de fichero,
declarando el servidor local primario para el dominio de named. Como servidor
primario, named carga la informacin de zona del fichero dado.
secondary
Esta sentencia tiene como parmetros un nombre de dominio, una lista de
direcciones y un nombre de fichero. Declara el servidor local como servidor
maestro secundario para el dominio indicado.
named intentar entonces refrescar los datos almacenados regularmente. Esto se
explica despus cuando se vean las entradas SOA de los ficheros.
cach
Tiene como argumentos un dominio y un nombre de fichero. Contiene la lista de
servidores de nombres raz. Slo se reconocern registros NS y A. El argumento
domain es normalmente el nombre del dominio raz (.).
forwarders
Esta opcin lleva una lista de direcciones como argumento. Las direcciones IP en
la lista especifican servidores de nombres a los que named puede preguntar si
falla una traduccin de un nombre mediante su cach local. Se intenta preguntar a
todos en orden hasta que uno de ellos responda.
slave
Esta opcin hace que el servidor sea esclavo. Esto significa que nunca realizar
consultas recursivas, sino que las redirigir a los servidores especificados con
forwarders.
DNS: Archivos de base de datos DNS
La representacin de los RRs en los ficheros utiliza el siguiente formato:
369

LINUX

Mayo 2004

[domain][ttl][class]type rdata

domain
Aqu va el nombre del dominio que se aplica al RR actual. Si no se da nombre de
dominio, se asume el mismo que se puso para el RR anterior.
ttl
Con el fin de forzar al sistema DNS a descartar informacin despus de cierto
tiempo, cada RR lleva asociado un tiempo de vida o tt1. El campo ttl especifica,
en segundos, el tiempo de validez de la informacin desde que se obtiene del
servidor. Es un nmero decimal de hasta ocho dgitos.
class
Aqu se indica la clase de direccin: IN para direcciones IP, HS para objetos de la
clase Hesiod. Trabajando con redes TCP/IP debe usarse siempre la clase IN. Si
no se especifica ningn valor, se toma el valor del RR anterior.
type
Describe el tipo de RR. Los tipos habituales son A, SOA, PTR y NS. En las
siguientes secciones
comentaremos estos tipos de RRs.
rdata
Contiene los datos asociados al RR. El formato depende del tipo.
Lista incompleta de RRs que se utilizan en los archivos de DNS.
SOA
Describe una zona de autoridad (SOA significa Start of Authority, es decir,
Comienzo de Autoridad). Seala que los registros siguientes contienen
informacin autorizada para el dominio. Cada fichero incluido en la opcin
primary debe tener un registro SOA para esta zona. Los datos asociados
contienen los siguientes campos:
origin
Nombre cannico del servidor de nombres primario para este dominio. Se suele
dar como nombre absoluto.
contact

370

LINUX

Mayo 2004

Direccin de correo electrnico de la persona responsable de mantener el


dominio, reemplazando el carcter @ por un punto. Por ejemplo, si el
responsable de nuestra red fuese janet, este campo contendr: janet.vbrew.com.
serial
Este es el nmero de versin del fichero de zona, expresado con un nmero
decimal. Cuando se cambien datos del fichero, deber incrementarse este
nmero. Se suele expresar como nmero de versin en el da actual, es decir, en
el formato AAAAMMDDnn siendo AAAA el ao, MM el mes, DD el da y nn el
nmero de revisin de ese da (01 si no hay ms de una).
refresh
Especifica el intervalo, en segundos, que esperan los servidores secundarios
entre peticiones de registros SOA a los primarios. De nuevo, se trata de un
nmero decimal de hasta ocho dgitos.
Normalmente, la topologa de la red no cambia mucho, con lo que este nmero
ser como poco de un da para grandes redes, y de mucho ms tiempo para
redes pequeas.
retry
Este nmero determina los intervalos de tiempo entre reintentos de comunicacin
con servidores primarios cuando una peticin de una zona falla. No debe ser
pequeo ya que un fallo temporal del servidor primario har que el secundario
cargue intilmente la red. Buenas elecciones son una hora o como poco media
hora.
expire
Especifica el tiempo, en segundos, que tardar el servidor en descartar los datos
de zona si no ha podido contactar con el servidor primario. Normalmente se
pondr un valor grande, de por lo menos una semana (604800 segundos),
aunque si se incrementa a un mes o ms ser incluso ms razonable.
minimum
Valor predeterminado para el valor del ttl en los registros de recursos que no lo
especifiquen. Sirve para indicar a otros servidores de nombres que descarten el
RR tras cierto tiempo. No tiene efecto, sin embargo, sobre el tiempo en el que un
servidor secundario intenta actualizar la informacin de zona.
371

LINUX

Mayo 2004

A
Asocia direcciones IP con nombres. El campo de datos contiene la direccin
separando los octetos por puntos, como es habitual. Para cada mquina slo
puede haber un registro A, que se considera nombre oficial o cannico. Cualquier
otro nombre ser un alias y debe ser incluido con registros CNAME.
NS
Apunta a un servidor de nombres maestro de una zona subordinada. El campo de
datos contiene el nombre del servidor. Para traducir ese nombre debe
proporcionarse un registro A adicional, que se conoce como glue, al proporcionar
la direccin IP del servidor. Hay que incluir registros NS en dos casos: primero,
cuando delegamos la autoridad a una zona subordinada. Segundo, en la base de
datos del servidor principal de cualquier zona. Los servidores NS especificados en
el fichero de zona deben coincidir exactamente con los que especifica la zona
padre que delega.
CNAME
Asocia un alias con su nombre cannico. El nombre cannico se determina con
un registro A. Los alias son indicados mediante registros CNAME.
PTR
Se usa para asociar nombres del dominio in-addr.arpa con sus nombres
normales. Se usa para obtener nombres a partir de direcciones IP (traduccin
inversa). El nombre de la mquina debe ser el cannico.
MX
Especifica el servidor de correo para un dominio. La sintaxis del registro MX es:
[domain][ttl][class]MXpreference host

host nombra el servidor de correo para el dominio domain. Cada servidor tiene
asociado un valor de preference (preferencia). Cuando un agente de transferencia
de mensajes quiere entregar correo al dominio, intentar conectarse a esos
servidores hasta conseguir entregar el mensaje; empezando por el que tenga
menor valor de preferencia.
HINFO
Este registro da informacin sobre el hardware y el software de la mquina. Su
sintaxis es:
[domain][ttl][class]HINFOhardware software

372

LINUX

Mayo 2004

El campo hardware identifica el hardware usado en este nodo. Para indicarlo, se


siguen ciertas convenciones, especificadas en el RFC 1700. Si el campo contiene
blancos, debe encerrarse entre comillas dobles. El campo software indica el
sistema operativo que ejecuta el nodo, que tambin est normalizado.
DIP : Ordenes dentro de dip
Los siguientes incisos nos indican las caractersticas de las ordenes dentro de
dip:
a) Las rdenes del mdem

dip provee algunas rdenes para configurar el puerto serie y el modem . Algunos
son obvios como la orden port, que selecciona el puerto serie, y speed, databits,
stopbits, y parity, que configura los parmetros ms comunes de la lnea. La orden
mdem selecciona el tipo de mdem . Se debe proveer a dip con el tipo de
mdem , o ste se negar a ejecutar las rdenes dial y reset. La orden reset enva
la cadena de reinicio (reset) al mdem; el tipo de cadena depende del modelo y
marca del mdem. Para modems compatibles con Hayes, esta cadena es ATZ. la
orden flush puede usarse para vaciar todas las respuestas que el mdem envi
hasta ese momento. De otro modo, un guin de dilogo que ejecute un reset
podra confundirse si leyese un OK como respuesta de algn orden anterior.
La orden init selecciona la cadena de inicializacin enviada al mdem antes de
marcar. predeterminada, para modems Hayes es ATE0 Q0 V1 X1, que activa el
eco de las rdenes y los cdigos de retorno, adems selecciona el modo de
marcado a ciegas (no comprueba si la lnea tiene tono).
La orden dial enva la cadena de inicializacin al mdem y llama al sistema
remoto. La orden predeterminada para modems tipo Hayes es ATD.

b) La Orden echo
La orden echo sirve como depurador. Invocar echo on hace que dip copie en la
consola todo lo que se enva por el puerto serie. Este modo puede desactivarse
invocando echo off.

373

LINUX

Mayo 2004

dip Puede salir del modo guin temporalmente para entrar en modo terminal. En
este modo, usted puede usar a dip como cualquier programa de terminal
ordinario, enviando caracteres a travs de la lnea serie, leyndolos y mostrarlos.
Para abandonar este modo, presione Ctrl-].
c) La Orden get
La orden get es la forma en que dip carga una variable. Su uso ms simple es
inicializar una constante, como se vi en el ejemplo de cowslip.dip. usted tambin
puede utilizarlo desde la consola en conjunto con ask:
DIP>get $local ask
Enterthevaluefor$local:_

Un tercer mtodo, es usado para obtener el nombre del servidor remoto. Aunque
extrao parezca al principio, es muy til en algunos casos. Algunos servidores, no
permiten que usted use su propia direccin IP en un enlace SLIP, sino que le
asignar una de un conjunto ya establecido cuando se establezca la conexin,
mostrando un mensaje que le informe que direccin le fue asignada. Si el
mensaje luce parecido a Your address: 192.168.5.74, el siguiente ejemplo har
que dip use la direccin asignada:
#finishlogin
waitaddress:10
get$locipremote

d) La Orden print
Esta orden es usado para enviar cualquier texto a la consola cuando se invoque a
dip. Cualquier variable usada por dip puede ser utilizada para enviar mensajes,
como por ejemplo:
DIP> print Usando puerto $port a la velocidad de $speed baudios

Usando puerto ttyS3 a la velocidad de 38400 baudios


e) Nombres de variables
dip entiende solamente un grupo predefinido de variables. Un nombre de variable
siempre debe comenzar con el signo de dlar y debe estar en minsculas.
Las variables $local y $locip contienen el nombre de la mquina local y su
direccin IP. Cuando se guarda el nombre cannico de la mquina local en $local,
374

LINUX

Mayo 2004

dip intentar resolverlo para conseguir la direccin IP y guardarla en la variable


$locip. Un proceso similar, pero al revs, sucede cuando se guarda la direccin IP
en la variable $locip; dip intentar resolver el nombre de la mquina local a partir
de la direccin IP y guardarlo en la variable $local.
Las variables $remote y $rmtip operan de la misma manera, pero con el nombre y
la direccin IP de la mquina remota. la variable $mtu contiene el valor MTU para
la conexin actual.
Estas cinco variables son las nicas que pueden ser asignadas con valores
usando la orden get. El contenido de algunas variables, son el resultado de
configuraciones realizadas por rdenes que llevan el mismo nombre, pero pueden
ser utilizadas junto con la orden print; Estas variables son $modem, $port, y
$speed.
La variable $errlvl contiene el resultado de la ltima orden ejecutada. Un nivel de
error 0 indica que la orden se ejecut satisfactoriamente, si este nmero es mayor
o menor, indica que hubo algn problema en la ejecucin.
f) rdenes if y goto
La orden if ejecuta un salto condicional, y se comporta de la misma manera que
su par usado en programacin.
Su sintaxis es:
if var op number goto label

La expresin, realiza una simple comparacin entre una de estas variables $errlvl,
$locip, y $rmtip. var debe ser un numero entero (integer); el operador op debe ser
uno de estos: ==, !=, <, >, <=, y >=.
La orden goto (ir a) hace que la ejecucin del guin contine donde se encuentra
definida la etiqueta pasada como parmetro a la orden (label). Una etiqueta (label)
debe ser la primer palabra en una lnea, seguida de dos puntos(:)
g) rdenes send, wait, y sleep
Estas rdenes ayudan a implementar sencillos guiones de dilogo en dip. la
orden send enva sus argumentos a la lnea serie. No soporta el uso de variables,
pero entiende todas las secuencias de escape al estilo del lenguaje C, como \n
para nueva lnea y \b para retroceso. El carcter de tilde (~) puede ser usada
como una abreviatura del carcter de retorno de carro / nueva lnea.
375

LINUX

Mayo 2004

La orden wait toma una palabra como argumento y leer todo lo que entre por la
lnea serie hasta que detecte una secuencia de caracteres que coincida con esa
palabra. Esa palabra no puede contener caracteres en blanco.
Opcionalmente, se le puede pasar a wait un tiempo de espera como segundo
argumento; Si la palabra esperada, no es recibida en ese tiempo de espera la
variable $errlvl se cargar con un 1. Esta orden se usa generalmente en la
deteccin de registros (login) y otros smbolos de espera.
La orden sleep puede usarse para esperar una determinada cantidad de tiempo;
Por ejemplo, esperar
pacientemente a que la secuencia de ingreso se complete. Nuevamente, el
intervalo se expresa en segundos.
h) rdenes mode y default
Estas rdenes se usan para pasar la lnea de modo serie a modo SLIP y para
configurar la interfaz.
La orden mode es la ltima ejecutada por dip antes de pasar al modo demonio. A
menos que ocurra un error, esta orden no retorna. mode toma el nombre del
protocolo como argumento. La versin actual de dip reconoce los siguientes:
SLIP, CSLIP, SLIP6, CSLIP6, PPP, y TERM como nombres vlidos.
IPFWADM: Resumen de los argumentos de ipfwadm
La orden ipfwadm tiene muchos argumentos diferentes que estn relacionados
con la configuracin del cortafuegos de IP. La sintaxis general es:
ipfwadm categora orden parmetros [opciones]

I.- Categoras
Slo puede introducirse una de estas categoras. La categora le dice al
cortafuegos qu tipo de regla de cortafuegos se est configurando:
-I regla de tipo 'Input'
-O regla de tipo 'Output'
-F regla de tipo 'Forwarding'
II.- rdenes
376

LINUX

Mayo 2004

Al menos una de las siguientes rdenes debe ser introducida y se aplican slo
aquellas reglas relacionadas con la categora introducida. La orden le dice al
cortafuegos qu accin debe tomar.
-a [poltica] Aade una nueva regla
-i [poltica] Inserta una nueva regla
-d [poltica] Borra una regla existente
-p poltica Establece la poltica por defecto
-l Muestra todas las reglas existentes
-f Destruye todas las reglas existentes
Las polticas relevantes para el cortafuegos de IP y sus significados son:
accept Permite que los datagramas coincidentes sean recibidos, reenviados o
transmitidos
deny Impide que los datagramas coincidentes sean recibidos, reenviados o
transmitidos
reject Impide que los datagramas coincidentes sean recibidos, reenviados o
transmitidos y enva al 'host' que envi el datagrama un mensaje de error de
ICMP.
III.- Parmetros
Al menos uno de los siguientes parmetros debe ser introducido. Utilice los
parmetros para especificar a qu datagramas se aplica esta regla:
-P protocolo
Puede ser TCP, UDP, ICMP o todos. Ejemplo: -P tcp
-S direccin[/mscara] [puerto]
La direccin IP de origen que buscar coincidencias con con esa regla. Se
asumir una mscara de /32 bits si no se proporciona una. Opcionalmente, puede
especificar a qu puertos se aplicar esta regla.
Tambin puede especificar el protocolo utilizando el argumento -P que se
describi ms arriba. Si no se especifica el puerto o un rango de puertos, se
supondr que todos los puertos buscar coincidencias conn. Los puertos pueden
especificarse por su nombre, utilizando la entrada del fichero /etc/services que
desee. En el caso del protocolo de ICMP, el campo de puerto se utiliza para
377

LINUX

Mayo 2004

indicar el tipo de datagrama de ICMP. Pueden introducirse rangos de puertos;


para ello utilice la sintaxis genrica: puerto inferior:puerto superior.
Ejemplo: -S 172.29.16.1/24 ftp:ftp-data
-D direccin[/mscara] [puerto]
Especifica la direccin IP de destino que buscar coincidencias con con la regla.
La direccin de destino se codifica con las mismas reglas que la direccin de
origen descrita previamente. Ejemplo: -D 172.29.16.1/24 smtp
-V direccin
Especifica la direccin del interfaz de red por el que el paquete se recibe (-I) o se
enva (-O). Esto nos permite crear reglas que slo se apliquen a ciertas interfaces
de red de nuestra mquina. Ejemplo: -V 172.29.16.1
-W nombre
Especifica el nombre del interfaz de red. Este argumento funciona de la misma
manera que el argumento -V, excepto que se proporciona el nombre del
dispositivo en lugar de su direccin. Ejemplo: -W ppp0
IV.- Argumentos opcionales
Estos argumentos resultan muy tiles a veces:
-b
Utilizado para establecer el modo bidireccional. Este modificador hace que
coincida el trfico entre el origen y el destino especificados fluyendo en cualquier
sentido. Esto ahorra el crear dos reglas: una para el sentido hacia delante de la
conexin y otra para el sentido contrario.
-o
Esto habilita el apunte en el registro del ncleo de informacin sobre los
datagramas coincidentes. Cualquier datagrama que coincida con esta regla ser
registrado en un mensaje del ncleo. Esto resulta til para posibilitar la deteccin
de accesos no autorizados.
-y
Utilizado para buscar coincidencias con datagramas de establecimiento de la
conexin de TCP. Esta opcin causa que la regla coincida slo con los
datagramas que intenten establecer conexiones de TCP. nicamente los
378

LINUX

Mayo 2004

datagramas que tengan su bit SYN con un valor de uno, y su bit ACK con un valor
de 0, buscar coincidencias conn. Esto resulta til para filtrar los intentos de
conexin de TCP y se ignora en el caso de otros protocolos.
-k
Utilizado para buscar coincidencias con datagramas de acuse de recibo de TCP.
Esta opcin causa que la regla coincida slo con los datagramas que sean acuse
de recibos de paquetes que intentan establecer conexiones de TCP. nicamente
los datagramas que tenga su bit ACK con valor igual a 1.
Esto resulta til para filtrar los intentos de conexin de TCP y se ignora en el caso
de otros protocolos.
IPCHAINS: Sintaxis de la orden ipchains
La sintaxis de la orden ipchains es bastante directa. Se contemplarn los
ejemplos ms importantes. La sintaxis general de la mayora de las rdenes de
ipchains es:
ipchains orden especificacin_de_regla opciones

I.- rdenes
Existen diversas formas de manipular las reglas y conjuntos de reglas con la
orden ipchains. Las relevantes para la funcionalidad de cortafuegos de IP son:
-A cadena
Aade una o ms reglas al final de la cadena especificada. Si se proporciona un
nombre de 'host' como origen o destino que se resuelve a ms de una direccin
IP, entonces se aade una regla por cada una de las direcciones.
-I cadena numero_de_regla
Inserta una o ms reglas al principio de la cadena especificada. De nuevo, si se
proporciona un nombre de 'host', se aade una regla por cada direccin que se
resuelva.
-D cadena
Elimina una o ms reglas de la cadena especificada que coincida con la
especificacin de regla.
-D cadena nmero_de_regla

379

LINUX

Mayo 2004

Elimina la regla ubicada en la posicin nmero_de_regla de la cadena


especificada. Las posiciones de reglas comienzan por uno en la primera regla de
la cadena.
-R cadena nmero_de_regla
Reemplaza la regla ubicada en la posicin nmero_de_regla de la cadena
especificada por la especificacin de regla proporcionada.
-C cadena
Comprueba el datagrama que se describe con la especificacin de la regla contra
la cadena especificada. Esta orden devuelve un mensaje que describe cmo se
procesar el datagrama por la cadena.
-L [cadena]
Muestra las reglas de la cadena especificada, o de todas las cadenas si no se
especifica ninguna.
-F [cadena]
Elimina todas las reglas de la cadena especificada, o de todas las cadenas si no
se especifica ninguna.
-Z [cadena]
Establece a cero los contadores de datagramas y bytes de la cadena
especificada, o de todas las cadenas si no se especifica ninguna.
-N cadena
Crea una nueva cadena con el nombre especificado. No puede existir una cadena
con el mismo nombre. As es como se crean las cadenas de usuario.

-X [cadena]
Elimina la cadena de usuario especificada, o todas las cadenas de usuario
especificadas si no se especifica ninguna cadena. Para que esta orden tenga
xito, no deben existir referencias de ninguna otra cadena de reglas a la cadena
especificada.
-P poltica_de_cadena
Establece la poltica por defecto de la cadena especificada a la poltica
especificada. Las polticas de cortafuegos vlidas son ACCEPT, DENY, REJECT,
REDIR, o RETURN. ACCEPT, DENY, y REJECT tienen los mismo significados
380

LINUX

Mayo 2004

que las polticas correspondientes de la implentacin tradicional del cortafuegos


de IP. REDIR especifica que se debe redirigir de forma transparente el datagrama
a un puerto del 'host' del cortafuegos.
II.- Parmetros de especificacin de las reglas
Ciertos parmetros de ipchains crean una especificacin de reglas al determinar
qu tipos de paquetes coinciden. Si se omite algunos de esos parmetros de la
especificacin de una regla, se asumen sus valores por omisin.
-p [!]protocolo
Especifica el protocolo del datagrama que buscar coincidencias con con esta
regla. Los protocolos vlidos son: tcp, udp, icmp, o todos. Tambin puede
especificarse un nmero de protocolo para buscar coincidencias con con otros
protocolos.
-s [!]direccin[/mscara] [!] [puerto]
Especifica la direccin de origen y el puerto del datagrama que buscar
coincidencias con con este regla. La direccin puede proporcionarse como un
nombre de 'host', un nombre de red o una direccin de IP. El argumento opcional
mscara es la mscara de red que se utilizar y puede ser proporcionada en la
forma tradicional (e.g.,/255.255.255.0) o en la forma moderna (e.g., /24). El
argumento opcional puerto especifica el puerto de TCP o UDP, o el tipo de
datagrama de ICMP que buscar coincidencias con.

-d [!]direccin[/mscara] [!] [puerto]


Especificar la direccin y el puerto de destino del datagrama que buscar
coincidencias con con esta regla. La codificacin de este parmetro es la misma
que la del parmetro -s.
-j blanco
Especifica la accin que se tomar cuando se coincida con esta regla. Puede
pensarse en este parmetro como con el significado de salta a. Los blancos
vlidos son en principio las polticas ACCEPT, DENY, REJECT, REDIR, y
RETURN.
-i [!]nombre_de_interfaz
381

LINUX

Mayo 2004

Especifica la interfaz por la que se recibi o va a transmitirse el datagrama. De


nuevo, el signo ! invierte el resultado de la coincidencia. Si el nombre de la
interfaz acaba con un signo + entonces cualquier interfaz que comience con la
cadena proporcionada buscar coincidencias con.
[!] -f
Especifica que esta regla se aplica a todo excepto al primer fragmento del un
datagrama fragmentado.
III.- Opciones
Las siguientes opciones de ipchains son ms generales por naturaleza propia.
Algunas de ellas controlan caractersticas bastante esotricas del 'software' de 'IP
Chains':
-b
Fuerza a que la orden genere dos reglas. Una ajusta el parmetro proporcionado
y la otra regla aadida coincide con los parmetros en el sentido contrario.
-v
Causa que ipchains sea ms explcito en su salida. Proporcionar ms
informacin.
-n
Causa que ipchains muestre las direcciones de IP y los nmeros de puertos en
forma de nmeros sin intentar resoverlos contra sus correspondientes nombres.
-l
Habilita

el

registro

del

ncleo

de

los

datagramas

coincidentes.

-o[tamao_mximo]
Causa que el 'software' de 'IP Chains' copie cualquier datagrama coincidente con
la regla al dispositivo netlink del espacio de usuarios.
-m valor_de_marca
Causa que los datagramas coincidentes sean marcados con un valor. Los valores
de las marcas son nmeros de 32 bits sin signo.
-t mscara_and mscara_xor
Le permite manipular los bits del tipo de servicio de la cabecera de IP de cualquier
datagrama que coincida con esta regla. Los bits de tipo de servicio son utilizados
382

LINUX

Mayo 2004

por los encaminadores inteligentes para gestionar la prioridad de los datagramas


antes de reenviarlos.
-x
Fuerza que los nmeros de salida de ipchains aparezcan con sus valores
exactos sin ninguna aproximacin.
-y
Causa que la regla coincida con cualquier datagrama de TCP cuyo bit SYN valga
1 y los bits ACK y FIN lleven un valor de 0. Esto se utiliza para filtrar las peticiones
de conexin de TCP.
IPTABLES: Argumentos de iptables
La sintaxis general de la mayora de las rdenes de iptables es:
iptables orden especificacin_de_regla extensiones

I.- rdenes
Existen varias formas de manipular las reglas y los conjuntos de reglas con la
orden iptables. Las relevantes para la funcin de cortafuegos de IP son:

-A cadena
Aade una o ms reglas al final de la cadena especificada. Si se proporciona un
nombre de 'host' tanto como origen como destino y se resuelve a ms de una
direccin IP, se aadir una regla por cada una de esas direcciones.
-I cadena nmero_de_regla
Inserta una o ms reglas al comienzo de la cadena especificada. De nuevo, si se
proporciona un nombre de 'host' en la especificacin de la regla, se aadir una
regla por cada una de las direcciones que se resuelvan.
-D cadena
Borra de la cadena especificada una o ms reglas que coincidan con la
especificacin de regla de la cadena especificada.
-D cadena nmero_de_regla
383

LINUX

Mayo 2004

Borra la regla que ocupa la posicin nmero_de_regla en la cadena especificada.


Las posiciones de reglas comienzan en el 1 para la primera regla de la cadena.
-R cadena nmero_de_regla
Reemplaza la regla que ocupa la posicin nmero_de_regla en la cadena
especificada por la regla proporcionada en la especificacin.
-C cadena
Comprueba el datagrama descrito por la especificacin de la regla contra la
cadena especificada. Esta orden devolver un mensaje que describe cmo el
datagrama procesa la cadena.
-L [cadena]
Muestra las reglas de la cadena especificada, o de todas las cadenas si no se
especifica ninguna.
-F [cadena]
Borra todas las reglas de la cadena especificada, o de todas las cadenas si no se
especifica ninguna.
-Z [cadena]
Pone a cero los contadores de datagramas y bytes en todas las reglas de la
cadena especificada, o de todas las cadenas si no se especifica ninguna.

-N cadena
Crea una nueva cadena con el nombre especificado. No puede existir antes una
cadena del mismo nombre. As es cmo se crean las cadenas de usuario.
-X [cadena]
Borra la cadena de usuario especificada, o todas las cadenas de usuario si no se
especifica ninguna.
-P cadena poltica
Establece la poltica por defecto de la cadena especificada a la poltica
especificada. Las polticas vlidas de cortafuegos son ACCEPT, DROP, QUEUE, y
RETURN. ACCEPT permite pasar a los datagramas. DROP causa que el
datagrama sea descartado.
II.- Parmetros de especificacin de reglas
384

LINUX

Mayo 2004

Existe una serie de parmetros de iptables que constituyen la especificacin de


una regla. Donde se requiera la especificacin de una regla, se debe proporcionar
algunos de esos parmetros o se asumir sus valores por defecto.
-p [!]protocolo
Especifica el protocolo del datagrama que buscar coincidencias con con esta
regla. Los nombres vlidos de protocolos son tcp, udp, icmp, o un nmero, si se
conoce el nmero del protocolo de IP.
-s [!]direccin[/mscara]
Especifica la direccin de origen del datagrama que buscar coincidencias con
con esta regla. Se puede proporcionar la direccin como un nombre de 'host',
como un nombre de red o como una direccin de IP.
-d [!]direccin[/mscara]
Especifica la direccin de destino del datagrama que buscar coincidencias con
con esta regla. La codificacin de este parmetro es la misma que la del
parmetro -s.
-j blanco
Especifica qu accin se tomar cuando se coincida con esta regla. Puede
pensarse en este parmetro como con el significado de salta a. Los blancos
vlidos son ACCEPT, DROP, QUEUE, y RETURN.
-i [!]nombre_de_interfaz
Especifica la interfaz por la que se recibi el datagrama. De nuevo, el signo !
invierte el resultado de la coincidencia. Si el nombre de la interfaz acaba con un
signo +entonces cualquier interfaz que comience con la cadena proporcionada
buscar coincidencias con.
-o [!]nombre_de_interfaz
Especifica la interfaz por la que se enviar el datagrama. Este argumento tiene la
misma codificacin que el argumento -i.
[!] -f
Especifica que esta regla se aplica al segundo y restantes fragmentos de un
datagrama fragmentado, y no al primer fragmento.
III.- Opciones
Las siguientes opciones de iptables son ms generales por naturaleza propia.
385

LINUX

Mayo 2004

-v
Hace que iptables sea ms explcito en su salida. Proporcionar ms
informacin.
-n
Hace que iptables muestre las direcciones de IP y los nmeros de puertos en
forma de nmeros sin intentar resoverlos contra sus correspondientes nombres.
-x
Fuerza que los nmeros de salida de iptables parezcan con sus valores exactos
sin ninguna aproximacin.
-line-number
Causa que se muestren los nmeros de lnea en los listados de los conjuntos de
reglas. El nmero de
lnea corresponder con la posicin de la regla dentro de la cadena.
IV.- Extensiones
Para utilizar una extensin, se debe especificar su nombre con el argumento -m
nombre de iptables. La lista siguiente muestra las opciones -m y -p que
establecen el contexto de la extensin, y las opciones proporcionadas por esa
extensin.
a) Extensiones de TCP: utilizadas con -m tcp -p tcp
- -sport [!] [puerto[:puerto]]
Especifica el puerto que debe utilizar el origen del datagrama para buscar
coincidencias con esta regla. Se pueden especificar los puertos en la forma de un
rango, especificando los lmites inferior y superior con un signo : como delimitador.
- -dport [!] [puerto[:puerto]]
Especifica el puerto que el datagrama de destino utilizar para buscar
coincidencias con este regla. Este argumento se codifica de forma idntica a la
opcin - -sport.
- -tcp-flags [!] mscara comp
Especifica que esta regla debe buscar coincidencias con cuando los indicadores
de TCP del datagrama coincidan con los especificados por mscara y comp.
mscara es una lista separada por comas de los indicadores que deben
386

LINUX

Mayo 2004

examinarse en la comprobacin. comp es una lista separada por comas de


indicadores cuyo valores han de ser todos 1 para que la regla coincida. Los
indicadores vlidos son: SYN, ACK, FIN, RST, URG, PSH, ALL o NONE.
[!] - -syn
Especifica que la regla buscar coincidencias con slo con los datagramas cuyo
bit SYN valga 1 y cuyos bits ACK y FIN valgan ambos 0. Los datagramas con
estos valores de los indicadores se utilizan para abrir las conexiones de TCP, por
tanto esta opcin puede ser utilizada para gestionar las solicitudes de conexin.
Esta opcin es una abreviatura de:
- -tcp-flags SYN,RST,ACK SYN
Cuando se utilice el operador de negacin, la regla buscar coincidencias con con
todos los datagramas cuyos bits SYN y ACK no valgan 1 simultneamente.

b) Extensions de UDP: utilizadas con -m udp -p udp


- -sport [!] [port[:port]]
Especifica el puerto que debe utilizar el origen del datagrama para buscar
coincidencias con esta regla. Se pueden especificar los puertos en la forma de un
rango, especificando los lmites inferior y superior con un signo : como delimitador.
- -dport [!] [port[:port]]
Especifica el puerto que el datagrama de destino utilizar para buscar
coincidencias con esta regla. Este argumento se codifica de forma idntica a la
opcin - -sport.
c) Extensiones de ICMP: utilizadas con -m icmp -p icmp
- -icmp-type [!] nombre_de_tipo
Especifica el tipo de mensaje de ICMP que buscar coincidencias con con esta
regla. Puede especificarse el tipo tanto por su nmero como por su nombre.
Algunos nombres vlidos son:
echo-request, echo-reply, source-quench, time-exceeded,
destination-unreachable, network-unreachable, host-unreachable,
387

LINUX

Mayo 2004

protocol-unreachable, y port-unreachable.
d) Extensiones de MAC: utilizadas con -m mac
- -mac-source [!] address
Especifica la direccin Ethernet del 'host' transmisor que coincide con esta regla.
Esto slo tiene sentido en una regla de la cadena de entrada 'input' o de reenvo
'forward' porque se trasmitir cualquier datagrama que pase la cadena de salida
'output'.
INETD: Campos del archivo inetd
Una entrada en este fichero consiste en una sola lnea compuesta de los
siguientes campos:
servicio tipo protocolo espera usuario servidor lnea_de_rdenes

Cada uno de los campos se describe en el apndice:


servicio
Da el nombre del servicio. El nombre del servicio tiene que ser traducido a un
nmero de puerto buscndolo en el fichero /etc/services.
tipo
Especifica la clase de socket, o un socket de flujo stream (para protocolos
orientados a la conexin) o un socket de datagrama dgram (para protocolos
orientados a datagramas).
protocolo
Nombra el protocolo de transporte usado por el servicio. Debe ser un nombre
vlido de protocolo que se encuentre en el fichero protocols .
espera
Esta opcin se aplica slo a sockets dgram. Puede ser wait o nowait. Si se
especifica wait, inetd ejecuta slo un servidor para el puerto especificado. El otro
modo, contina escuchando inmediatamente en el puerto despus de ejecutar el
servicio.
usuario
Esto es el identificador de registro del usuario que ser propietario del procesos
mientras se est ejecutando. ste ser muchas veces el usuario root, pero
algunos servicios pueden usar cuentas distintas. Es una buena idea aplicar el
388

LINUX

Mayo 2004

principio del mnimo privilegio aqu, lo que significa que usted no debe ejecutar
rdenes bajo cuentas privilegiadas si el programa no requiere esto para su
correcto funcionamiento.
servidor
Proporciona el camino completo del programa servidor a ser ejecutado. Los
servicios internos se marcan con la palabra clave internal.
lnea_de_rdenes
Esta es la lnea de rdenes que se va a pasar al servidor. Comienza con el
nombre del servidor a ejecutar y puede incluir cualquier argumento que se le
necesiten pasar. Si est usando encapsulacin TCP , especificar el camino
completo al servidor aqu. Si no, entonces especificar el nombre
del servidor como quiera que aparezca en un listado de procesos. Este campo
est vaco para los servicios internos.
TCPD : La Facilidad de Control de Acceso tcpd
Las entradas en los ficheros de acceso tienen un aspecto como este:
lista_de_servicios:lista_de_hosts [:rdenes_de_shell]

lista_de_servicios es una lista de nombres de servicio de /etc/services, o la


palabra clave ALL. Para hacer coincidir a todos los servicios excepto finger y tftp,
se usa ALL EXCEPT finger, tftp.
lista_de_hosts es una lista de nombres de hosts, direcciones IP, o las palabras
clave ALL, LOCAL, UNKNOWN o PARANOID. ALL coincide con cualquier host,
mientras que LOCAL coincide con nombres de host que no contienen un punto .
UNKNOWN coincide con cualquier host cuya bsqueda de nombre o direccin
falle. PARANOID coincide con cualquier host cuyo nombre de host no se resuelva
de vuelta a su direccin IP. Un nombre que empiece por un punto hace coincidir
todos los hosts cuyo dominio es igual a este nombre. Por ejemplo, .foobar.com
coincide biff.foobar.com, pero no nurks.fredsville.com. Un patrn que termine con
un punto coincide con cualquier host cuya direccin IP comience con el patrn
proporcionado, as que 172.16. coincide con 172.16.32.0, pero no con 172.15.9.1.
Un patrn de la forma n.n.n.n/m.m.m.m es tratado como una direccin IP y la
mscara de red, as que podemos especificar nuestro ejemplo anterior como
172.16.0.0/255.255.0.0 en su lugar. Finalmente, cualquier patrn que empiece por
389

LINUX

Mayo 2004

el carcter / permite especificar un fichero que se presume que contiene una lista
de nombres de host o patrones de direcciones IP, con cualquiera de los cules se
permite

la

coincidencia.

As

que

un

patrn

que

se

parezca

/var/access/trustedhosts causara que el demonio tcpd lea este fichero,


verificando si alguna de sus lneas coincide con el host que est conectndose.
Para denegar acceso a los servicios finger y tftp a todos menos al los hosts
locales, ponga lo siguiente en /etc/hosts.deny y deje vaco /etc/hosts.allow:
in.tftpd,in.fingerd:ALLEXCEPTLOCAL,.su.dominio

El campo opcional orden_de_shell puede contener una orden del intrprete de


rdenes para ser invocada cuando la entrada coincida. Esto es til para
establecer trampas que puedan exponer a los atacantes potenciales. El siguiente
ejemplo crea un fichero de registros que lista al usuario y al host que se conecta,
y si el host no es vlager.vbrew.com se concatenar la salida de un finger a ese
host:
in.ftpd:ALLEXCEPTLOCAL,.vbrew.com:\
echo"requestfrom%d@%h:">>/var/log/finger.log;\
if[%h!="vlager.vbrew.com:"];then\
fingerl@%h>>/var/log/finger.log\
fi

Los argumentos %h y %d son expandidos por tcpd como el nombre del host del
cliente y el nombre del servicio, respectivamente.
NFS: Opciones de mount para NFS
rsize=n y wsize=n
Especifican el tamao de datagrama usado por los clientes de NFS en las
peticiones de lectura y escritura respectivamente. El tamao predeterminado
depende de la versin del ncleo, pero normalmente es de 1.024 bytes.
timeo=n
Establece el tiempo (en dcimas de segundo) que el cliente de NFS esperar por
la respuesta a una peticin. El valor predefinido es 7 (0.7 segundos). Lo que pase
despus depende de si usa la opcin hard o soft.
hard
Explcitamente marca este volumen como montado fsicamente. Es el valor
predeterminado. Esta opcin hace que el servidor muestre por la consola un
mensaje cuando expira el tiempo de operacin y contina indefinidamente.
soft
390

LINUX

Mayo 2004

Monta lgicamente (como opuesto al montaje fsico) el controlador. Esta opcin


causa un error de E/S a ser informado al proceso que intenta poner en
funcionamiento un fichero cuando expira el tiempo de operacin.
intr
Permite una seal para interrumpir una llamada a NFS. Es til parar abortar
cuando el servidor no responde.

ARCHIVO EXPORTS :
El nombre del anfitrin es seguido por una lista opcional de seales separadas
por comas, encerradas entre parntesis. Algunos de los valores que stas seales
pueden tomar son vistos acontinuacin:
secure
Esta seal insiste en requerir que se haga desde un puerto origen reservado, por
ejemplo, uno que sea menor que 1.024. Esta seal est puesta por omisin.
insecure
Esta seal revierte el efecto de la seal secure.
ro
Esta seal provoca que el montaje de NFS sea para slo lectura. Esta seal est
activada por omisin.
rw
Esta opcin monta la jerarqua de ficheros en lectura-escritura.
root_squash
Este caracterstica de seguridad deniega a los superusuarios en los hosts
especificados cualquier derecho de acceso especial mapeando las peticiones
desde el uid 0 en el cliente al uid 65534 (es decir, -2) en el servidor. Este uid debe
ser asociado con el usuario nobody.
no_root_squash
No mapea las peticiones desde uid 0. Esta opcin est habilitada por omisin, as
los superusuarios tienen acceso de supervisor a los directorios exportados de su
sistema.
link_relative
391

LINUX

Mayo 2004

Esta opcin convierte los enlaces simblicos absolutos (donde el contenido del
enlace comienza con un slash) en enlaces relativos. Esta opcin slo tiene
sentido cuando est montado el sistema de ficheros entero de un anfitrin; por
otra parte, algunos de los enlaces podran apuntar a ninguna parte, o peor an, a
ficheros que nunca debieran apuntar. Esta opcin est habilitada de forma
predeterminada.

link_absolute
Esta opcin deja todos los enlaces simblicos como son (la conducta normal para
los servidores de
NFS suministrados por Sun).
map_identity
Esta opcin le indica al servidor asumir que el cliente usa el mismo uid y gid que
el servidor. Esta opcin est habilitada por omisin.
map_daemon
Esta opcin indica al servidor de NFS asumir que el cliente y el servidor no
comparten el mismo espacio uid/gid. rpc.nfsd entonces construye una lista que
mapea los IDs entre cliente y servidor preguntando al demonio rpc.ugidd del
cliente.
map_static
Esta opcin le permite especificar el nombre de un fichero que contiene un mapa
esttico de uids. Por ejemplo, map_static=/etc/nfs/vlight.map especificara el
fichero /etc/nfs/vlight.map como un mapa de uid/gid.
map_nis
Esta opcin causa que el servidor de NIS haga un mapeado de uid y gid.
anonuid y anongid
Estas opciones le permiten especificar el uid y el gid de la cuenta annima. Esto
es til si tiene un volumen exportado para montajes pblicos.
IPX_INTERFACE :La Orden ipx_interface
Los parmetros de turno significan:
-p
392

LINUX

Mayo 2004

Este parmetro especifica que esta interfaz tiene que ser una interfaz primaria.
Este parmetro es opcional.
eth0
ste es el nombre del dispositivo de red al que estamos aadiendo soporte IPX.
etherII
Este parmetro es el tipo de trama, en este caso Ethernet-II. Este valor tambin
puede codificarse como 802.2, 802.3, o SNAP.
0x32a10103
Esto es la direccin de red IPX a la que pertenece esta interfaz.
UUCICO : Opciones en la lnea de rdenes para uucico
En este tema describimos las opciones de la lnea de rdenes ms importantes
para uucico:
system, s sistema

Llama al sistema si no est prohibido por restricciones en la hora de llamada.


S sistema
Llama al sistema sin condiciones.
master, r1
Inicia uucico en modo maestro. ste es el modo predeterminado cuando se
indica s o S. Por s misma, la opcin r1 provoca que uucico intente llamar a todos
los sistemas en el fichero sys que se describe en la siguiente seccin de este
captulo, a no ser que sea prohibido por las restricciones de la hora de llamada o
las veces que se puede reintentar la misma.
slave, r0
Inicia uucico en modo esclavo. ste es el modo predeterminado cuando no se
indica s ni S. En modo esclavo, tanto la entrada como la salida estndar se asume
que estn conectadas a un puerto serie, o al puerto TCP especificado por la
opcin p si se usa.
ifwork, C
La opcin suplementa s o S y comunica a uucico que llame al sistema
mencionado slo si hay tareas en la cola para l.
debug tipo, x tipo, X tipo
393

LINUX

Mayo 2004

Activa la depuracin del tipo especificado. Pueden proporcionarse muchos tipos


en forma de lista separada por comas. Los siguientes tipos son vlidos. abnormal,
chat, handshake, uucp-proto, proto, port, config, spooldir, execute, incoming, y
outgoing. Si usa all activar todas las opciones. Por compatibilidad con otras
implementaciones de UUCP, tambin puede especificar un nmero, que activar
la depuracin para los primeros n elementos de la lista anterior.
Los mensajes de depuracin se registrarn en el fichero Debug bajo
/var/spool/uucp.
UUCP : Archivos de configuracin de Taylor
Taylor UUCP obtiene su informacin de los siguientes ficheros:
config
ste es el principal fichero de configuracin. Aqu puede definir el nombre de su
sitio UUCP.
sys
En este fichero se describen todos los sitios conocidos. Para cada sitio se
especifica su nombre, a qu horas llamarlo, qu nmero marcar (si es el caso),
qu tipo de dispositivo usar, y cmo entrar en l.
port
Este fichero contiene entradas en las que se describe cada puerto disponible,
junto a la velocidad de la lnea soportada y las instrucciones de marcacin.
dial
En este fichero se describen los marcadores a usar para establecer una conexin
telefnica.
dialcode
Este fichero contiene expansiones para cdigos de marcacin simblicos.
call
Este fichero contiene el nombre y la contrasea a utilizar cuando se llama a un
sistema. Raramente se usa.
passwd
Este fichero contiene los nombres y las contraseas que pueden usar los
sistemas al conectarse. Slo se usa cuando uucico lleva a cabo su propia
validacin de contraseas.
394

LINUX

Mayo 2004

Los ficheros de configuracin de Taylor se componen generalmente de lneas que


contienen pares clave-valor. Una almohadilla inicia un comentario que se extiende
hasta el final de la lnea. Para emplear el signo de la almohadilla como tal,
escpelo con una barra invertida de esta manera: \#.
Hay unas cuantas opciones que puede ajustar con estos ficheros de
configuracin. No podemos repasar todos los parmetros, sino que cubriremos
slo los ms importantes. Con stos usted podr configurar una conexin de
UUCP por mdem. Otras secciones describirn las modificaciones necesarias si
quiere usar UUCP en TCP/IP o sobre una lnea serie.
UUCP: Variedad de protocolos tiles para UUCP
g
ste es el protocolo ms comn y deberan entenderlo prcticamente todos los
uucicos. Al estar dotado de una potente comprobacin de errores resulta
especialmente apropiado para conexiones telefnicas con interferencias. g
requiere una conexin preparada para 8 bits. Es un protocolo orientado a
paquetes que usa una tcnica de ventana deslizante.
i
ste es un protocolo de paquete bidireccionales por el que pueden enviar y
recibirse ficheros al mismo tiempo. Requiere una conexin full-duplex y un flujo de
datos preparado para 8 bits. Actualmente slo lo entiende Taylor UUCP.
t
Este protocolo est pensado para usarse sobre una conexin TCP u otras redes
realmente libres de errores. Usa paquetes de 1.024 bytes y requiere una conexin
preparada para 8 bits.
e
ste debera hacer bsicamente lo mismo que t. La principal diferencia reside en
que e es un protocolo de flujo por lo que est orientado nicamente a conexiones
de red eficientes.
f
Este protocolo est orientado a conexiones X.25 eficientes. Es un protocolo de
flujo y espera un flujo de datos de 7 bits. Los caracteres de 8 bits tienen que
codificarse, lo que puede hacerlo muy poco eficiente.
395

LINUX

Mayo 2004

G
sta es la versin 4 System V del protocolo g. Tambin lo entienden otras
versiones de UUCP.
a
Este protocolo es similar al ZMODEM. Requiere una conexin de 8 bits pero
codifica ciertos caracteres de control como XON y XOFF.

CAPITULO V
Campos de Cabecera generados por el interfaz de correo.
From:
Contiene la direccin de correo electrnico del remitente, y posiblemente el
nombre real. Aqu se usa un zoolgico completo de formatos distintos.
To:
Esta es la direccin de e-mail del destinatario. Si hay varias direcciones se
separan por comas.
Cc:
Esta es una lista de las direcciones de correo que recibirn una copia de carbn
del mensaje. Si hay varias direcciones, se separan por comas.
Bcc:
Esta es una lista de las direcciones de correo que recibirn una copia de carbn
ciega del mensaje. La diferencia principal entre Cc: y Bcc: es que las direcciones
listadas en el Bcc: no aparecern en la cabecera del mensaje que se enva a cada
destinatario. Es una forma de avisar a los destinatarios de que usted ha enviado
copias del mensaje a otras personas, sin decir quines son. Si hay varias
direcciones, se separan por comas.
Subject:
Describe el contenido del mensaje en pocas palabras.
Date:
Indica la fecha y hora en que se envi el mensaje.
Reply-To:
Especifica la direccin a la que el remitente desea que el destinatario le conteste.
Esto puede ser til si se tienen varias direcciones, pero se desea recibir la mayor
396

LINUX

Mayo 2004

parte del correo slo en aquella que se usa ms a menudo. Este campo es
opcional.
Organization:
La organizacin que posee la mquina desde la que se ha enviado el mensaje. Si
la mquina usada es la suya propia no incluya este campo, o bien indique privado
o cualquier trivialidad sin sentido. Este campo no est descrito en ningn RFC y
es completamente opcional. Algunos programas de correo lo soportan
directamente, pero la mayora no.
Message-ID:
Una cadena generada por el transporte de correo en el sistema remitente. Es
nica para cada mensaje.
Received:
Cada anfitrin que procesa su correo (incluyendo las mquinas del remitente y el
destinatario) insertan este campo en el encabezado, dando el nombre del
anfitrin, una identificacin de mensaje, hora y fecha a la que lo recibieron, de qu
anfitrin procede, y qu software de transporte ha sido usado. Esto se hace as
para que usted pueda conocer la ruta que su mensaje ha seguido, y pueda
protestar a la persona responsable si algo ha ido mal.
X-cualquier-cosa:
Ningn programa relacionado con el correo debe protestar sobre cualquier
encabezado que comience con X-. Esto se usa para implementar caractersticas
adicionales que an no han sido incluidas en un RFC, o que no lo sern nunca.
Por ejemplo, existi un gran servidor de listas de correo de GNU/Linux que
permita especificar a qu canal quera que fuera su mensaje incluyendo la
cadena X-Mn-Key: seguido del nombre del canal.
Parmetros utilizados en el archivo sendmail.mc de acuerdo al estndar m4
VERSIONID y OSTYPE
VERSIONID(`@(#)sendmail.mc 8.9 (Linux) 01/10/98')

La macro VERSIONID es opcional, pero es til para grabar la versin de


configuracin de sendmail en el archivo sendmail.cf. As que a menudo se
encontrar con ello, y nosotros lo recomendamos. En cualquier caso, asegrese
de incluir:
397

LINUX

Mayo 2004

OSTYPE(`linux')
Esta es probablemente la definicin ms importante. La macro OSTYPE provoca
que se incluya un archivo de definiciones que son buenas opciones
predeterminadas para su sistema operativo. La mayora de las definiciones en un
archivo macro OSTYPE configuran los nombres de ruta de varios archivos de
configuracin, transporte de correo y argumentos, y la localizacin de directorios
que usa sendmail para almacenar mensajes. La distribucin estndar de cdigo
fuente de sendmail incluye un fichero de este tipo para GNU/Linux, que se incluye
en el ejemplo previo. Algunas distrbuciones de GNU/Linux, particularmente la
distribucin Debian, incluye su propio archivo de ficheros de GNU/Linux. Cuando
su distribucin haga sto, probablemente debera usar su definicin en vez de la
genrica de GNU/Linux por omisin.
La definicin OSTYPE debera ser una de las primeras en aparecer en su archivo
sendmail.mc, debido a que muchas otras definiciones dependen de ella.
DOMAIN
La macro DOMAIN es til cuando se desea configurar un gran nmero de
mquinas en la misma red de una manera estandarizada. Si se est configurando
un pequeo nmero de anfitrins, probablemente es mejor no preocuparse de
sto. Tpicamente se configuran items, como el nombre de los anfitrins de
retransmisin o concentradores que todos los anfitrins de la red utilizarn.
La instalacin estndar continene un directorio de plantillas de macros m4
utilizadas para dirigir el proceso de configuracin. Este directorio se nombra
normalmente como /usr/share/sendmail.cf o algo por el estilo. Aqu se encuentra
un subdirectorio nombrado domain que contiene plantillas de configuracin
especficas para el dominio. Para hacer uso de una macro DOMAIN, se debe
crear su propio archivo macro conteniendo las definiciones estndar que se
requieran para el sitio, y escribirlas en el subdirectorio domain. Slo se deberan
incluir normalmente las definiciones de macro que sean nicas a su dominio aqu,
como las definiciones de los anfitrin inteligentes o los anfitrin de retransmisin,
pero no limitndose a stos.
La distribucin del cdigo fuente de sendmail viene con algunos archivos de
ejemplo de definicin de macros que puede usar para crear el suyo propio.
398

LINUX

Mayo 2004

FEATURE
La macro FEATURE permite incluir caractersticas predefinidas de sendmail en
su configuracin. Estas caractersticas de sendmail hacen las configuraciones
soportadas muy fciles de usar. Para usar cualquiera de las caractersticas
listadas, debera incluir una lnea en su fichero sendmail.mc que se parezca a
esto:
FEATURE(nombre) donde nombre se sustituye con el nombre de la caracterstica.
Algunas caractersticas toman un parmetro opcional. Si desea usar algn otro
distinto al predeterminado, debera utiizar una entrada como sta:
FEATURE(nombre, parmetro) donde parmetro es el parmetro a suministrar.
Tipos de transporte utilizados al usar la macro MAILER
local
Este transporte incluye tanto el agente de entrega local usado para enviar correo
al buzn de los usuarios en esta mquina como el programa prog transporte de
entrega usado para enviar mensajes a programas locales. Este transporte se
incluye por omisin.
smtp
Este transporte implementa el Protocolo Simple de Transporte de Correo (SMTP),
que es el medio ms usual de transporte de correo en Internet. Cuando se incluye
este transporte, se configuran cuatro transportes de correo: smtp (SMTP bsico),
esmtp (SMTP Extendido), smtp8 (SMTP binario plano de 8 bits), y relay
(especficamente diseado para hacer de transporte a modo de ruteador entre
anfitriones).
uucp
El transporte uucp proporciona soporte para dos transportes de correo: uucp-old,
que es el UUCP tradicional, y uucp-new, que permite manipular mltiples buzones
en una transferencia.
usenet
Este transporte de correo permite enviar mensajes directamente a redes de
noticias del estilo Usenet. Cualquier mensaje local dirigido a una direccin de
news.group.usenet ser introducido en la red de noticias para el grupo de noticias
news.group.
399

LINUX

Mayo 2004

fax
Si tiene el software Hylafax instalado, este transporte permitir dirigir correo
electrnico a l, para que as pueda construir una pasarela de correo-fax. Esta
caracterstica era experimental cuando se escribi este documento.
Hay otros como pop, procmail, mail11, phquery, y cyrus que son tiles, pero
menos comunes.
Definiciones de macros utilizadas por Sendmail
$j
El nombre completamente cualificado de este anfitrin (FQDN).
$w
El componente del anfitrin del FQDN.
$m
El componente del dominio del FQDN.
Caracteres utilizados en el lado izquierdo de la regla de escritura
$@
Coinciden exactamente cero smbolos
$*
Coinciden cero o ms smbolos
$+
Coincide uno o ms smbolos
$Coincide exactamente un smbolo
$=x
Coindice cualquier frase en la clase x
$~x
Coincide con cualquier palabra que no est en la clase x
Caracteres o metasimbolos utilizados en el lado derecho de la regla de
escritura
$n
400

LINUX

Mayo 2004

Este metasmbolo es reemplazado por la expresin nsima del lado izquierdo.


$[nombre$]
Este metasmbolo resuelve el nombre del anfitrin a nombre cannico. Es
reemplazado por la forma cannica del nombre del anfitrin suministrado.
$(map_clave $@argum $:omisin $)
Esta es la forma ms general de bsqueda. La salida es un resultado de mirar la
clave en el mapa nombrado map pasndole argum como argumentos. El mapa
puede ser cualquiera de los mapas que sendmail soporta. Si la bsqueda es
infructuosa, por omisin ser la salida. Si no se suministra nada por omisin y la
bsqueda falla, la entrada no se altera y la clave es la salida.
$>n

Esto har que el resto de esta lnea sea analizada y entonces dada al conjunto de
reglas n para ser evaluada. La salida del conjunto de reglas llamado se escribir
como salida a esta regla. ste es el mecanismo que permite a las reglas invocar
otras reglas.
$#mailer
Este metasmbolo hace que la evaluacin del conjunto de reglas se detenga y
especifica el transporte que deber usarse para transportar este mensaje en el
siguiente paso de su entrega. Este metasmbolo debera ser llamado slo desde
el conjunto de reglas 0 o una de sus subrutinas. Esta es la parte final del anlisis
de direcciones y debera ser acompaado de los dos siguientes metasmbolos.
$@host
Este metasmbolo especifica el anfitrin al que este mensaje ser reenviado. Si el
anfitrin destinatario es el anfitrin local, puede omitirse. El host puede ser una
lista de anfitriones de destino separada por dos puntos (:) que a los que se
intentar entregar el mensaje en secuencia.

$:user
Este metasmbolo especifica el usuario destinatario para el mensaje de correo.
Una regla de reescritura que coincide se intenta repetidamente hasta que falla
una coincidencia, entonces el anlisis contina en la siguiente regla. Este
comportamiento puede cambiarse precediendo el lado derecho con uno de dos
401

LINUX

Mayo 2004

metasmbolos especiales descritos en la siguiente lista. Las reglas de reescritura


para el control del bucle del lado derecho son:
$@
Este metasmbolo causa que el conjunto de regles retorne con el resto del lado
derecho como el valor. Ninguna otra regla del conjunto se evala.
$:
Este metasmbolo causa que esta regla finalice inmediatamente, pero el resto del
conjunto de reglas actual es evaluado.
Semntica del Conjunto de Reglas Utilizadas por Sendmail
LOCAL_RULE_3
El conjunto 3 es responsable de convertir una direccin en un formato arbitrario
en un formato comn que sendmail procesar. El formato de salida esperado es
el aspecto familiar parte-local@especificacin-anfitrin-dominio.
El conjunto 3 debera poner la parte del nombre del anfitrin de la direccin
convertida entre los caracteres < y > para hacer el anlisis de las siguientes
reglas ms fcil. El conjunto de reglas 3 se aplica antes que sendmail haga
cualquier otro procesamiento de una direccin de correo, as que si quiere que
sendmail haga de ruteador de correo desde algn sistema que utilice algn
formato de direccin poco usual, se debera aadir una regla usando la macro
LOCAL_RULE_3 para convertir direcciones en el formato comn.

LOCAL_RULE_0 y LOCAL_NET_CONFIG
El conjunto 0 se aplica por sendmail a las direcciones del destinatario tras el
conjunto de reglas 3. La macro LOCAL_NET_CONFIG provoca que las reglas
sean introducidas en la mitad inferior del conjunto 0.
El conjunto 0 se espera que realice la entrega del mensaje al destinatario, as que
debe resolver un triplete que especifica el correo, el anfitrin y el usuario. Las
402

LINUX

Mayo 2004

reglas sern colocadas antes de cualquier definicin de anfitrin inteligente que


quiera incluir, as que si aade reglas que resuelvan direcciones apropiadamente
cualquier direccin que coincida con una regla no ser tratada por el anfitrin
inteligente. As es como tratamos los smtp directos para los usuarios de nuestra
red local en nuestro ejemplo.
LOCAL_RULE_1 y LOCAL_RULE_2
El conjunto 1 se aplica a todas las direcciones de remite y el conjunto 2 de aplica
a todas las direcciones de destino. Ambos estn normalmente vacos.
Opciones Usuales en la Configuracin de Sendmail
confMIN_FREE_BLOCKS (MinFreeBlocks)

Hay ocasiones cuando un problema quiz impida la entrega inmediata de


mensajes de correo, haciendo que los mensajes esperen en la cola de envo. Si el
anfitrin de correo procesa un gran volumen de correo, es posible que la cola de
correo crezca hasta tal tamao que llene completamente el sistema de archivos
en que la cola se encuentra. Para prevenir esto, sendmail proporciona esta
opcin para especificar el nmero mnimo de bloques de disco libres que deben
existir antes de que un mensaje de correo sea aceptado. Esto permite asegurarse
de que sendmail nunca provoca que el sistema de archivos de la cola de correo
se llene (Predeterminado a: 100).
confME_TOO (MeToo)

Cuando un objetivo de correo como un alias de correo se expande, es a veces


posible para el remitente aparecer en la lista de destinatarios. Esta opcin
determina si los originadores de un mensaje de correo electrnico recibirn una
copia si aparecen en la lista de destinatarios expandida. Los valores vlidos son
true y false (Predeterminado a: false).
confMAX_DAEMON_CHILDREN (MaxDaemonChildren)

Cuando sendmail recibe una conexin SMTP desde un anfitrin remoto, inicia
una copia nueva de s mismo para tratar el mensaje entrante. De esta manera, es
posible

para

sendmail

estar

procesando

mltiples

mensajes

entrantes

simultneamente. Aunque esto es til, cada nueva copia de sendmail consume


memoria en la computadora anfitrina. Si se recibe un nmero inusualmente
403

LINUX

Mayo 2004

grande de conexiones entrantes, por ejemplo, debido a un problema o a un


ataque malicioso, es posible que los demonios de sendmail consuman toda la
memoria del sistema. Esta opcin permite limitar el nmero mximo de demonios
hijos que sern iniciados. Cuando este nmero se alcance, las conexiones nuevas
se deniegan hasta que

uno de los demonios hijos haya

terminado.

(Predeterminado a: undefined(indefinido)).
confSEPARATE_PROC (ForkEachJob)

Cuando se procesa una cola de correo y se envan mensajes de correo, sendmail


procesa un mensaje de correo cada vez. Cuando esta opcin est activada,
sendmail se bifurcar en copias nuevas de s mismo para cada mensaje a ser
entregado. Esto es particularmente til cuando hay varios mensajes de correo
atascados en la cola porque hay un problema con el anfitrin objetivo.
(Predeterminado: false).
confSMTP_LOGIN_MSG (SmtpGreetingMessage)

Cuando se hace una conexin a sendmail, se enva un mensaje de bienvenida.


Por omisin, este mensaje contiene el nombre del anfitrin, el nombre del agente
de transporte de correo, el nmero de versin de sendmail, el nmero de versin
local, y la fecha actual. El RFC821 especifica que la primera palabra del saludo
debera ser el nombre completamente cualificado del anfitrin, pero el resto del
saludo, puede ser configurado a su gusto. Puede especificar macros de sendmail
aqu y sern expandidas y usadas. La nica gente que ver este mensaje sern
los administradores de sistemas que estn diagnosticando problemas de envo de
correo, o gente fuertemente curiosa interesada en descubrir cmo est
configurada su mquina. La palabra EMSTP ser introducida por sendmail entre
la primera palabra y la segunda, como seal para los anfitriones remotos de que
soportamos el protocolo ESMTP. (Predeterminado: $j Sendmail $v/$Z; $b).
Tipos de acciones que puede timar el lado derecho de las reglas de escritura
en el acceso de base de datos
OK
Aceptar el mensaje.
RELAY

404

LINUX

Mayo 2004

Aceptar los mensajes para este anfitrin o usuario an si no provienen de nuestro


anfitrin; esto es, aceptar que los mensajes sean reenviados hacia otros
anfitriones desde este anfitrin.
REJECT
Rechazar el correo con un mensaje genrico.
DISCARD
Descartar el mensaje utilizando la propiedad $#discard del sistema de correo.
### cualquier texto
Comandos utilizado para obtener informacin de volmenes de trafico y
anfitriones
mailstats
La orden mailstats muestra estadsticas del volumen de correo procesado por
sendmail. La hora a la que la recogida de datos comenz se imprime primero,
seguida de una tabla con una columna para cada transporte configurado y una
mostrando un resumen total de todo el correo. Cada lnea presenta ocho puntos
de informacin:
M El nmero del transporte (protocolo de transporte)
msgsfr El nmero de mensajes desde el transporte
bytes_from Los Kbytes de correo desde el transporte
msgsto El nmero de mensajes enviados al transporte
bytes_to Los Kbytes de correo enviados al transporte
msgsreg El nmero de mensajes rechazados
msgsdis El nmero de mensajes descartados
Mailer El nombre del transporte

Hoststat
La instruccin hoststat muestra informacin sobre el estado de los anfitriones a
los que sendmail ha intentado enviar correo. La instruccin hoststat es
equivalente a invocar sendmail como:
sendmail bh

405

LINUX

Mayo 2004

La salida presenta cada anfitrin en su propia lnea, y para cada uno la hora
desde que se intent la entrega a l, y el mensaje de estado recibido a esa hora.
Opciones de configuracin de Exim
message_size_limit
Esta opcin limita el tamao de los mensajes que Exim aceptar.
return_size_limit
Esta opcin limita la cantidad de un mensaje entrante que Exim devolver como
parte de un mensaje de rebote.
deliver_load_max
Si la carga del sistema excede el valor dado a esta opcin, se suspenden todos
los envos de correo aunque seguirn aceptndose mensajes para enviar.
smtp_accept_max
ste es el nmero mximo de llamadas SMTP entrantes simultneas que Exim
est preparado para aceptar.
log_level
Esta opcin controla la cantidad de informacin que se escribe en el registro. Hay
tambin algunas opciones cuyos nombres comienzan con log_ que controlan el
registro de informacin especfica.

406

You might also like