F J. Moraga et al. Síntesis
Tecnológica. N° 1 (2004) 50-60
DOI:10.4206/sint.tecnol.2004.n1-09
GENERACIÓN DE UN LABORATORIO DE REDES DE COMPUTADORES BAJO LINUX PARA LA COMPAÑÍA TELEFÓNICA DEL SUR
FRANCISCO JAVIER MORAGA
Q.
PEDRO REY CLERICUS
Universidad Austral de
Chile, Egresado Ing. Electrónica.
Universidad Austral de Chile, Ingeniero Electrónico, prey@uach.cl,
Casilla 561- Valdivia.
Abstract
On the following work, it has been done a revision of the main steps to install and configure equipment with Linux as its Operative System, focus on connectivity services such as Web, Ftp, and DNS. The objective is that any Engineer or Technician can with this document make an analysis of how to aboard the configuration of a Linux Server and to have a tool to figure up problems with the servers’ on clients. The methodology on this work consist of getting the most relevant steps of the configuration and administration of a Linux Server, forming thematic groups, reaching a complete and integral conceptual approach followed with a series of laboratories. It also covers the interconnectivity theme on a very specific way, presented as Linux Networks, Routing, Firewalls and Proxy Servers. For this work it was used the Red Hat distribution, any way it is possible to apply on any type of distribution.
Keywords: linux, Sistema Operativo, Telefónica del Sur, Interconectividad, ADSL, RDSI, SMTP, Kernel.
1. INTRODUCCIÓN
Linux es un clon de Unix libremente distribuible para computadores personales. Actualmente corre en una amplia variedad de máquinas, que incluye no sólo a la familia Intel, sino también las máquinas basadas en arquitecturas Motorola 680x0, como el Commodore Amiga o el Apple Macintosh. Como hoy en día, la mayoría de las compañías proveedoras de soluciones RED busca abaratar los costos de sus insumos, sin descuidar la QoS, Linux se presenta como una alternativa sólida para el manejo de redes de datos.
Desde hace varios años se ha estado utilizando esta plataforma para la supervisión de redes, por lo cual no es de extrañar que varias compañías lo vean como un sistema operativo de excelencia para este tipo de entorno. El mito que se tiene de Linux es su complejidad a la hora de instalarlo y administrarlo, por lo que muchas veces se le critica, pero esta "complejidad" (que cada vez va desapareciendo) puede ser su característica más valiosa ya que una vez dominado, permite al administrador un control total en los procesos que se van llevando a cabo.
El siguiente trabajo buscará poner a flote los beneficios de Linux para la re-ingeniería. La idea es que teniendo computadores obsoletos (386 o 486) se puedan "reciclar" y buscarles nuevos usos, como estaciones delegadas o como estaciones de tránsito de redes privadas.
Con todo lo anterior, se puede configurar una red o sub-red ocupando un computador 386-486 como servidor propiamente tal, levantando los servicios de web, correo, FTP, DNS.
Como objetivo específico se buscará a través de este trabajo otorgar a la Compañía Telefónica del Sur una Guía teórica/práctica de Linux para los profesionales relacionados con el tema a fin de mejorar el soporte técnico.
2. SITUACION ACTUAL DE LINUX EN EL MUNDO
Fig. 1. Usuarios
de Linux en el mundo desde el año 1994. |
Hace algunos años eran muy pocos los usuarios de otras plataformas distintas a Windows y, aunque la mayor parte todavía utiliza como default Windows, cada vez son más los usuarios y empresas que migran a otras plataformas. Las tres plataformas principales son Windows, Linux y Mac, en cuanto a sistemas operativos personales y a sistemas operativos de red Windows NT, Linux y NetWare. En Chile, las empresas ligadas al mundo de las telecomunicaciones están reconociendo a Linux y ya se están creando grupos importantes de trabajo.
LINUX |
Windows NT |
Soporte Al ser Linux software libre, no pasan normalmente más de un par de horas entre que es encontrado un error y que éste es corregido y la corrección publicada. |
Soporte Windows está basado en el esquema de "seguridad a través de la oscuridad": El usuario no tiene acceso al código, por tanto no le es tan fácil encontrar errores. Sin embargo, cuando estos llegan a ser encontrados no aparece un parche sino hasta meses después, con el "service pack" correspondiente. |
Facilidad de Uso Curva de aprendizaje un tanto más pronunciada, aunque esta tiende a suavizarse gracias a programas de configuración gráfica, y no de comandos de terminal |
Facilidad de Uso Saber utilizar Windows es todo lo necesario para utilizar como usuario a Windows NT; sin embargo, para saber administrar un sistema NT hace falta conocer mucho más, ya que las herramientas no siempre están donde se espera, ni reaccionan como se supone. |
Uso de Recursos Filosofía UNIX para las diversas partes del sistema: Una gran cantidad de pequeñas herramientas muy especializadas y fáciles de integrar en scripts, automatizando operaciones completas fácilmente. |
Uso de Recursos
Filosofía Windows para las diversas partes del sistema: Pocas herramientas grandes y poderosas, hechas para resolver situaciones definidas y completas, y muy difíciles de integrar para lograr soluciones a problemas específicos. |
Interoperatividad Todos los programas del sistema corren sin ninguna diferencia de manera local o remota, gracias al modelo del sistema, a través de su capa de abstracción de hardware. Esto incluye tanto a programas que son ejecutados desde la línea de comandos hasta los más sofisticados programas con interfaces gráficas. |
Interoperatividad Aunque en el último año han aparecido varios programas que permiten utilizar remotamente una computadora con Windows, como el VNC (Virtual Network Computing, software libre desarrollado por AT&T) o el Citrix Winframe, estos dan un desempeño demasiado bajo o requieren demasiados recursos del servidor como para ser considerados prácticos. |
3. LINUX, WINDOWS NT Y SUS DIFERENCIAS
Ambos apuntan al mismo mercado, que es el de más rápido crecimiento a nivel empresarial: Servidores de red y estaciones de trabajo de alta capacidad, que es hacia donde está dirigido este trabajo. Las capacidades de las computadoras personales y de las Workstations van siendo cada vez más similares.
Microsoft, la empresa que desarrolló Windows NT, se ha convertido en un monopolio, frente al cual únicamente los sistemas Unix (y derivados) son alternativas viables.
4. INSTALACIÓN
4.1. Reparticionamiento Disco(s) Duro(s)
Si tiene instalados otros sistemas operativos, necesita reparticionar los discos con el fin de reservar espacio para Linux.
En el primer sector del disco está el registro de arranque maestro junto a la tabla de particiones. Existen tres clases de particiones: Primarias, extendidas y lógicas.
Primarias: Son las más usadas, sin embargo, debido al límite del tamaño de la tabla de particiones, sólo pueden tenerse hasta cuatro particiones primarias en un disco. Existe una manera de superar este límite utilizando particiones extendidas: No tienen datos en ellas mismas, actúan como soporte de particiones lógicas. Por lo tanto, se puede crear una partición extendida que ocupe todo el disco y dentro crear varias particiones lógicas.
4.2. Arranque de la Instalación de Linux
Cada distribución de Linux incluye algo para arrancar inicialmente e instalar el software, usualmente un disquete de arranque. Arrancando de esta forma, entrará en un programa de instalación para el resto del software, o bien le permitirá seguir instalándolo a mano.
4.3. Creando las Particiones de Linux
Después de reparticionar el disco para reservar espacio para Linux, debe crear particiones de Linux en dicho espacio. Esto se realiza con el programa fdisk.
4.4. Creando los Sistemas de Ficheros y espacio de Intercambio
Por lo general, se crearán dos particiones para Linux: una para ser usada como sistema de ficheros raíz, y la otra como espacio de intercambio. Por supuesto, hay otras opciones pero ésta es la básica. El espacio de intercambio swap no es obligatorio en Linux, pero está muy recomendado si se posee menos de 16 megabytes de memoria física, lo cual es recomendable cuando se trabaja con el mínimo de Hardware.
4.5. Instalando los Programas en los Espacios de Ficheros
Finalmente, debe instalar el software en los nuevos sistemas de ficheros.
5. TRABAJO CON LINUX
5.1. Primeros pasos en Linux
Hay que destacar, que la mayoría de las ordenes linux más usadas son de dos o tres letras.
cd: Cambia
el directorio de trabajo actual.
Sintaxis: cd <directorio> <directorio>
Ejemplo: cd ../foo pone ../foo como directorio actual.
ls: Muestra
información sobre los ficheros o directorios indicados. Sintaxis: ls <fichero1>
Ejemplo: ls -lF /home/admin mostrará
el contenido del directorio /home/admin.
cp: Copia
fichero(s) en otro fichero o directorio. Sintaxis: cp
mv: Mueve
fichero(s) a otro fichero o directorio. Es equivalente a una copia seguida
del borrado del original. Puede ser usado para renombrar ficheros, como
el comando MS-DOS RENAME.
Sintaxis: mv <fichero1>
rm: Borra
ficheros. Nótese que cuando los ficheros son borrados en linux, son irrecuperables
(a diferencia de MS-DOS, donde usualmente se puede recuperar un fichero
borrado).
Sintaxis: rm
Opciones: -i pedirá confirmación antes de borrar un fichero.
Ejemplo: rm -i /home/admin/cnt /home/admin/frog borra los ficheros cnt
y frog en /home/admin.
mkdir:
Crea directorios nuevos. Sintaxis: mkdir <dir1> <dir2>
Ejemplo: mkdir /home/admin/test crea el directorio test colgando de /home/admin.
rmdir:
Esta orden borra directorios vacíos. Al usar rmdir, el directorio de trabajo
actual no debe de estar dentro del directorio a borrar.
Sintaxis: rmdir
Ejemplo: rmdir /home/admin/papers borra el directorio /home/admin/papers
si esta vacío.
man: Muestra
la página de manual del comando o recurso (cualquier utilidad del sistema
que no es un comando, como funciones de librería) dado. Sintaxis: man
Donde
Ejemplo: man ls muestra ayuda sobre la orden ls.
more:
Muestra el contenido de los ficheros indicados, una pantalla cada vez.
Sintaxis: more
Ejemplo: more papers/sdh-lit muestra por el terminal el contenido del
fichero papers/sdh-lit.
cat: Oficialmente
usado para concatenar ficheros, cat también es usado para mostrar el contenido
completo de un fichero de una vez.
Sintaxis: cat
Ejemplo: cat letters/from-mdw muestra por el terminal el contenido del
fichero letters/from-mdw.
/bin | /bin es la abreviación de "binaries", o ejecutables. Es donde residen la mayoría de los programas esenciales del sistema. |
/dev | Los "ficheros" en /dev son conocidos como controladores de dispositivo (device drivers) son usados para acceder a los dispositivos del sistema y recursos, como discos duros, modems, memoria, etc. |
/etc | /etc contiene una serie de ficheros de configuración del sistema. Estos incluyen /etc/passwd (la base de datos de usuarios), /etc/rc (guiones de inicialización del sistema), etc. |
/sbin | /sbin se usa para almacenar programas esenciales del sistema, que usará el administrador del sistema. |
/home | /home contiene los directorios "home" de los usuarios. Por ejemplo, /home/admin es el directorio del usuario "admin". En un sistema recién instalado, no habrá ningún usuario en este directorio. |
/lib | /lib contiene las imágenes de las librerías compartidas. Estos ficheros contienen códigos que compartirán muchos programas. En lugar de que cada programa contenga una copia propia de las rutinas compartidas, éstas son guardadas en un lugar común, en /lib. |
/proc | /proc es un "sistema de ficheros virtual". Los ficheros que contiene realmente residen en memoria, no en un disco. Hacen referencia a varios procesos que corren en el sistema, y le permiten obtener información acerca de que programas y procesos están corriendo en un momento dado. |
/tmp | Muchos programas tienen la necesidad de generar cierta información temporal y guardarla en un fichero temporal. El lugar habitual para esos ficheros es en /tmp. |
/usr | /usr es un directorio muy importante. Contienen una serie de subdirectorios que contienen a su vez algunos de los más importantes y útiles programas y ficheros de configuración usados en el sistema. /usr contiene la mayoría de los paquetes grandes de programas y sus ficheros de configuración. |
/var | /var contiene directorios que a menudo cambian su tamaño o tienden a crecer. Muchos de estos directorios solían residir en /usr, lo que se está tratando de dejar relativamente inalterable, los directorios que cambian a menudo han sido llevados a /var. Algunos de estos directorios son: /var/adm |
6. TRABAJANDO CON FICHEROS
6.1. El Sistema de Ficheros
El sistema de ficheros es la colección de ficheros y la jerarquía de directorios del sistema.
Desde el directorio raíz (cd/) si se ejecuta ls -F. Probablemente verá estos directorios:
bin, dev, etc, home, install, lib, mnt, proc, root, tmp, user, usr, y var.
6.2. Permisos de Ficheros
Este mecanismo permite que ficheros y directorios "pertenezcan" a un usuario en particular. Linux también permite que los ficheros sean compartidos entre usuarios y grupos de usuarios, en la mayoría de los sistemas por defecto se permite que otros usuarios puedan leer sus ficheros pero no modificarlos o borrarlos.
Como los ficheros pueden pertenecen a un grupo en particular, que es un conjunto de usuarios definido por el sistema. Cada usuario pertenece al menos a un grupo cuando es creado. El administrador del sistema puede hacer que un usuario tenga acceso a más de un grupo. Los grupos usualmente son definidos por el tipo de usuarios que acceden a la máquina.
Los permisos están divididos en tres tipos: lectura, escritura y ejecución. Estos permisos pueden ser fijados para tres clases de usuarios: el propietario del fichero, el grupo al que pertenece el fichero y para todos los usuarios independientemente del grupo.
El permiso de lectura permite a un usuario leer el contenido del fichero o en el caso de un directorio, listar el contenido del mismo (usando ls). El permiso de escritura permite a un usuario escribir y modificar el fichero. Para directorios, el permiso de escritura permite crear nuevos ficheros o borrar ficheros ya existentes en dicho directorio. Por último, el permiso de ejecución permite a un usuario ejecutar el fichero si es un programa o guión del intérprete de comandos. Para directorios, el permiso de ejecución permite al usuario cambiar al directorio en cuestión con cd.
El comando chmod se usa para establecer los permisos de un fichero. Solo el propietario puede cambiar los permisos del fichero. La sintaxis de chmod es:
chmod {a,u,g,o}{+,-}{r,w,x}
<fichero>
El comando indica a que usuarios afecta: (a) all, (u) user, (g) group o (o) other. Entonces se especifica si se están añadiendo permisos (+) o quitándolos (-). Finalmente se especifica que tipo de permiso (r) Read, (w) write o (x) execute. Algunos ejemplos:
chmod a+r
chmod +r
chmod og-x
chmod u+rwx
chmod o-rwx
Fig. 2. Sistema
de ficheros típico, puede ver otros o incluso no ver todos.
Cada versión de Linux difiere en algunos aspectos. |
7. PROCESOS
Cada vez que se ejecuta un programa, se lanza lo que se conoce como proceso, que es simplemente el nombre que se le da a un programa cuando se esta ejecutando. El comando ps visualiza la lista de procesos que se están ejecutando actualmente.
Un proceso puede estar en Primer plano o en Segundo plano. Solo puede haber un proceso en primer plano al mismo tiempo, el proceso que está en primer plano, es el que interactúa con el usuario recibiendo entradas de teclado, y envía las salidas al monitor. El proceso en segundo plano, no recibe ninguna señal desde el teclado, por lo general, se ejecutan en silencio sin necesidad de interacción.
Los procesos pueden ser suspendidos. Un proceso suspendido es aquel que no se está ejecutando actualmente, sino que está temporalmente detenido. Después de suspender una tarea, puede indicar a la misma que continúe, en primer o en segundo plano, según necesite retomar una tarea suspendida no cambia en nada el estado de la misma, continuará ejecutándose justo donde se dejó.
Es necesario tener en cuenta que suspender un trabajo no es lo mismo que interrumpirlo. Cuando se interrumpe un proceso (generalmente con la pulsación de “ctrl-C”), el proceso muere, y deja de estar en memoria sin utilizar recursos del computador. Una vez eliminado, el proceso no puede continuar ejecutándose, y deberá ser lanzado otra vez para volver a realizar sus tareas.
8. SERVICIOS
8.1. Servidor Web Apache
Apache es el servidor web de libre distribución más usado. Se encuentra incluido en casi la totalidad de versiones de UNIX e incluso existen versiones para Windows. Su distribución en base a código fuente hace posible su compilación bajo casi cualquier sistema operativo o arquitectura.
La configuración del servidor Apache se define en tres ficheros diferentes:
a) httpd.conf: Que contiene
información sobre el modo de ejecución del servidor, usuario, permisos,
y directorios de log, documentos, etc.
b) srm.conf: Asociado a los mecanismos de presentación de documentos,
la ejecución de CGIs y otras configuraciones similares.
c) access.conf: Detalla los permisos y las directivas de acceso a diferentes
ramas del árbol de documentos.
Estos ficheros se encuentran habitualmente en el directorio /etc/httpd/ en la mayoría de las distribuciones de Linux, el cual instala por omisión este servidor web.
El arranque y la parada del servidor se realizan, dependiendo de la instalación, por medio del script de administración:
/etc/rc.d/init.d/httpd
o
/etc/init.d/httpd
Cualquier cambio en la configuración del servidor requiere rearrancar el servicio, esto se puede realizar por medio de una serie de argumentos proporcionados al script. Estos argumentos son:
start: Arranca el servicio,
si este se encontrase detenido.
stop: Detiene el servicio si estaba
en ejecución.
restart: Detiene y arranca de nuevo el servicio.
status: Muestra información relativa al estado del servidor (en ejecución
o detenido).
8.2. Servidor DNS
DNS (Domain Name Service) organiza los nombres de máquina (hostname) en una jerarquía de dominios. Un dominio es una colección de nodos relacionados de alguna forma-porque estén en la misma red, tal como los nodos de una universidad-. Por ejemplo, el dominio que agrupa a la Universidad Austral es uach.cl. Puede encontrar nuevos subdominios dentro de un dominio, como el de la Facultad de Ciencias (fci). Finalmente, un nodo de ese departamento llamado elei tendrá un nombre completo (conocido como totalmente cualificado) tal como elei.fci.uach.cl. El DNS es como una gigantesca base de datos distribuida. Está realizada a través de los llamados servidores de nombres, que proporcionan la información de uno o varios dominios. Para cada zona, debe haber dos o más servidores de nombres capaces de responder por ella. Para obtener la dirección IP de elei, todo lo que necesitamos es contactar con el servidor de nombres de la zona uach.cl y obtendremos los datos solicitados.
En primer lugar pregunta al servidor de nombres raíz, preguntando por elei.fci.uach.cl. El servidor raíz reconoce que el nombre no pertenece a ninguna de sus zonas de autoridad pero sí sabe qué hacer con la zona cl. Esto es, devuelve a nuestro servidor más información sobre los servidores de nombres que pueden servir la zona cl. Ahora, el servidor preguntará por este nombre a uno de esos servidores. Ellos enviarán a uno que tenga información autorizada del dominio uach.cl. Luego, el servidor interrogará a éste y finalmente obtendrá la dirección de elei.
Para acelerar futuras peticiones de nombres, el servidor almacena la información obtenida en la búsqueda anterior en su cache local. Así, la próxima vez que busque algún nodo de uach.cl, ya no tendrá que ir a los servidores raíz o los de la zona cl. Por supuesto que el servidor de nombres no almacenará para siempre la información en la cache; la limpiará cada cierto tiempo. El tiempo de vida se llama TTL (del inglés time to live). En cada zona DNS el administrador asigna un valor de TTL.
Los servidores de nombres que mantienen oficialmente la información de una zona se conocen como autorizados de la zona, y a veces se conocen como servidores principales o maestros. Cualquier petición 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 información de un fichero, y los demás servidores secundarios, obtienen su información pidiéndosela periódicamente al primario.
El objetivo de tener varios servidores es distribuir la carga y dar cierta tolerancia a fallos. Cuando uno de los servidores principales falla, todas las peticiones son repartidas a los demás.
Se ha visto que el DNS no solo sabe de direcciones IP de máquinas, también almacena otras informaciones. Cada unidad de información 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. Un nodo puede ser conocido por más 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 canónico. La diferencia es que el canónico es el único registro A que debe existir apuntando a esa dirección IP, mientras que el resto de los nombres deben ser alias, que apuntan al nombre canónico.
Named es el demonio DNS en casi todas las máquinas Linux. Named suele iniciarse al arrancar la máquina, y ejecutarse hasta que se apaga. Para ejecutar named, solo tiene que teclear:
# /usr/sbin/named
Named se iniciará y leerá el fichero named.conf,
Los ficheros 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 cache y primary. En un fichero maestro, se pueden especificar nombres de máquinas y dominios relativos a este dominio. Un nombre dado en un fichero de configuración se considera \emph{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 fichero principal se dividen en registros de recursos o RRs. Son la unidad de información del DNS. Cada RR tiene un tipo. Los registros de tipo A, por ejemplo, asocian un nombre a una dirección IP, como se comentó al comienzo de la sección. Los registros de tipo CNAME asocian un alias de una máquina con su nombre oficial.
nslookup es una buena utilidad para comprobar el funcionamiento de un servidor de nombres.
8.3. Servidor Mail
Uno de los usos más comunes de las redes informáticas desde sus orígenes ha sido el correo electrónico. Empezó siendo un simple servicio que copiaba un fichero de una máquina a otra, y lo añadía al fichero mailbox (buzón de correo) del destinatario.
Si el correo debe enviarse a través 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 máquina de un destinatario, negociando la transferencia del mensaje con el demonio SMTP del lado remoto. Hoy es práctica común de las organizaciones establecer máquinas especiales que aceptan todo el correo para destinatarios de la organización, y estos nodos se encargan de controlar el reparto apropiado a los destinos adecuados.
Las direcciones de correo electrónico constan de dos partes: la primera es el nombre de un dominio de correo encargada de traducir la información, o bien al anfitrión del receptor o a cualquiera que acepte correo de su parte. La segunda es la identificación 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.
Los sitios de Internet están ligados al estándar RFC-822, que requiere la conocida notación usuario@anfitrión.dominio para el cual anfitrión.dominio es el nombre de dominio más adecuado para el anfitrión. El símbolo que separa ambas partes recibe el nombre de “arroba” en inglés “at.” Esta nomenclatura no especifica la ruta al sistema anfitrión. Otros mecanismos que se tratarán en breve son los encargados del enrutamiento de los mensajes.
EL estándar RFC-822 no es exclusivo del correo, ya que se ha extendido a otros servicios como los grupos de noticias.
Se conoce como elección de rutas (routing) el proceso de dirigir un mensaje al sistema anfitrión del receptor. Aparte de localizar una ruta desde el sitio del emisor hasta el de destino, la elección de rutas implica la detección de errores e incluso la optimización de la velocidad y el coste.
La configuración del sistema anfitrión del destinatario determina si se está trabajando con un determinado sistema de localización de la ruta de correo en Internet. La opción por defecto es transmitir el mensaje a su destino determinando primero el anfitrión al que debe ser enviado, y mandándolo allí directamente. La mayoría de los sitios de Internet buscan dirigir todo el correo entrante a un servidor de correo con alta disponibilidad capaz de manejar todo el tráfico 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 Mail Exchanger y básicamente indica que el anfitrión del servidor es capaz de convertirse en emisor de correo para todas las direcciones del dominio.
Los registros MX siempre tienen asignada un nivel de preferencia. Si son muchos los proveedores de correo existentes (MX) para un anfitrión, el agente de transporte de correo tratará de enviar el mensaje al proveedor cuya preferencia sea la menor. Sólo si esta operación falla, lo enviará a un anfitrión de mayor índice de preferencia. Si el anfitrión local es el proveedor de correo para la dirección de destino, puede enviar los mensajes a un anfitrión de menor preferencia que él mismo; esta es una manera segura de evitar los bucles en el correo. Si no hay ningún registro MX para un determinado dominio, o no es disponible, el agente de transporte de correo puede comprobar si la dirección IP del dominio está asociada a él, y así intentar mandarlo directamente a ese anfitrión.
8.4. Servidor FTP
FTP ("File Transfer Protocol") es el conjunto de programas que se usa en Internet para transferir ficheros entre sistemas. La mayoría de los sistemas UNIX, VMS y MS-DOS de Internet tienen un programa llamado ftp que se usa para transferir esto ficheros, y si se tiene acceso a Internet, el mejor modo de descargar el software de Linux es usando ftp. Este apartado cubre el uso de ftp a nivel básico, por supuesto, hay muchas más funciones y usos del ftp de los que se mencionan en esta tesis.
Si está usando un sistema MS-DOS, UNIX, o VMS para traer ficheros desde Internet, entonces, ftp será un programa a base de comandos. Sin embargo, existen otras implementaciones de ftp, como la versión Macintosh (llamada Fetch) con un bonito interface guiado por menús, que lo hacen más amigable y cómodo de usar.
Ftp puede usarse tanto para "subir" (enviar) como para "bajar" (recibir) ficheros desde los sitios de Internet. En Internet hay un gran número de sitios FTP de acceso público, máquinas que permiten a cualquiera hacer ftp sobre ellas y descargar el software. Un "archive site" de este tipo es sunsite.unc.edu, que contiene una gran variedad de software de Sun Microsistems, y que actúa como uno de los principales sites de Linux. Además, los FTP archive sites se reflejan (mirror) el software unos a otros, es decir, el software que se sube a un site será automáticamente copiado a un gran número de otros sites. De modo que no hay que sorprenderse si ve exactamente los mismos ficheros en muchos sites diferentes.
Antes de descargar ficheros,
hay algunas cosas que debe tener en cuenta.
a) Activar las marcas de progreso. Las Marcas de Progreso se imprimen
en pantalla mientras se están transfiriendo ficheros; permitirán saber
como va avanzando la transferencia, y que la conexión no se ha cortado
(de modo que no está sentado 20 minutos pensando que aun esta trayéndose
un fichero). En general, una marca de progreso aparece como una almohadilla
(#), y se imprime una por cada 1024 o 8192 bytes transferidos, dependiendo
del sistema.
Para activar la impresión de marcas de progreso, utilice el comando hash.
b) Determinar el tipo de fichero que se va a transferir. En lo que concierne al FTP, los ficheros van en dos formatos: binario y texto. La mayoría de los ficheros que puede transferir serán binarios: es decir, programas, ficheros comprimidos, ficheros de datos, etc. Sin embargo, muchos ficheros (tales como READMEs y demás) son ficheros de texto.
¿Por qué es importante el tipo de fichero? Simplemente porque en algunos sistemas (como el MS-DOS), ciertos caracteres de un fichero de texto, tales como retornos de carro, necesitan convertirse de modo que los ficheros puedan ser legibles. Mientras las transferencias en modo binario, no realizan ninguna conversión, el fichero se transfiere byte a byte.
Los comandos bin y ASCII ponen el modo de transferencia en binario y texto respectivamente. Si no está seguro del tipo de archivo, es recomendable siempre usar el modo binario para transferirlos. Si intenta transferir un fichero binario en modo texto, obtendrá un fichero corrupto que no podrá utilizar. (Este es uno de los fallos más corrientes cuando se usa el FTP.) Sin embargo, se puede usar tranquilamente el modo texto para ficheros de texto (aquellos cuyos nombres terminan habitualmente en .txt).
c) Establecer el directorio local. El directorio local es el directorio del sistema en el que quiere que vayan a parar los ficheros traídos. Mientras el comando cd cambia el directorio remoto (de la máquina remota a la que esta haciendo FTP), el comando lcd cambia el directorio local.
Ahora ya está listo para transferir el fichero con el comando:
get
donde
El comando put se utiliza para enviar archivos a una computadora remota. El comando put envía el archivo local que especifique.
Previamente, es necesario tener los permisos correspondientes de escritura en el directorio donde va a enviar el archivo, por lo general en los accesos anonymous no se cuenta con estos atributos, pero si posee una cuenta registrada, como por ejemplo un espacio para la publicación de páginas web puede escribir sobre el directorio local.
Tal vez el servicio de FTP es el más sencillo de instalar, por lo general se instala por defecto y su demonio de ejecución es el ftpd.
9. REDES BAJO LINUX
Una red de redes consiste en un grupo de redes conectadas que en apariencia actúan como un todo coordinado que proporcionan interconexión universal y permite que grupos individuales utilicen cualquier hardware de red que satisfaga sus necesidades.
El conjunto de Protocolos TCP/IP (Protocolo de Control de Transmisión/Protocolo de Internet) es uno de los más discutidos, ya que de él dependen las redes que actualmente conocemos, incluida la Internet.
Una cosa importante a saber sobre IP es que, por si solo, no es fiable. Cuando la cantidad de tráfico generada es excesiva para que la maneje la pasarela, IP simplemente descarta el paquete. Lo cual traslada la responsabilidad de comprobar la integridad y exactitud de los datos a los nodos extremos, y su retransmisión en caso de error.
De esto se encarga TCP, que construye un servicio fiable por encima de IP. La propiedad esencial de TCP es que usa IP para darle la impresión de una conexión simple entre dos procesos en su equipo y la máquina remota, de modo que no tiene que preocuparse de cómo y sobre que ruta viajan realmente sus datos. TCP identifica los extremos de una conexión por las direcciones IP de los dos nodos implicados, y el número de los llamados puertos de cada nodo. Los puertos se pueden ver como puntos de enganche para conexiones de red.
La aventura de las redes bajo linux comenzó con una serie de pequeños proyectos ya prácticamente olvidados llamados “Net-x”. El Net-1, fué un trabajo sobre redes basadas en TCP/IP.
Se creó una nueva implementación del UUCP, rescribiendo grandes partes del código, esto se conoció como Net-2. Tras una dura corrección y numerosas mejoras en el código, cambió su nombre a Net-3 para que después saliese Linux 1.0. Esta es la versión del código base de red que se incluye actualmente en las versiones oficiales del Kernel.
Para poder utilizar la tarjeta Ethernet son necesarias una serie de funciones especiales definidas en el núcleo de Linux que serán capaces de entender la forma particular de acceso al dispositivo. Esta serie de funciones son los denominados controladores del dispositivo. Linux tiene controladores de dispositivos para varias marcas de tarjetas Ethernet que son muy parecidas en su funcionamiento.
Un controlador se comunica con un dispositivo (tarjeta Ethernet) a través de un área de memoria de E/S que esta mapeada a los registros internos de la tarjeta y a la inversa. Todas las órdenes y datos que el núcleo envía a la tarjeta tienen que ir a través de estos registros. La memoria de E/S se describe por lo general mediante su dirección base o de comienzo. Direcciones típicas para tarjetas Ethernet son la 0x360.
El núcleo accede a un dispositivo a través de lo que llamamos una interface. Estas se identifican mediante nombres, que se definen internamente en el núcleo, y no son ficheros de dispositivos en el directorio /dev. Nombres típicos para los interfaces Ethernet pueden ser eth0, eth1, etc.
10. CORTAFUEGOS
Un cortafuego es un dispositivo lógico/físico que protege una red privada del resto de la red (pública).
Funcionan así:
1) Se toma un computador con capacidad de rutar (por ejemplo un PC con
LiNUX)
2) Se le colocan dos interfaces (por ejemplo interfaces serie, o ethernet,
o Token Ring, etc...
3) Se deshabilita el reenvío de paquetes IP (IP forwarding)
4) Se conecta una interfaz a Internet
5) Se conecta la otra interfaz a la red que se quiere proteger
Hay dos redes distintas que comparten un computador. El computador cortafuegos, al que de ahora en adelante se llamará "cortafuegos", puede comunicarse tanto con la red protegida como con Internet. La red protegida no puede comunicarse con la Internet, y viceversa, dado que se ha deshabilitado el reenvío IP en el único computador que las conecta.
Si se quiere llegar a Internet desde la red protegida, hay que realizar primero un telnet al cortafuego, y, acceder a Internet desde él. Del mismo modo, para acceder a la red protegida desde Internet, se debe antes pasar por el cortafuego.
Este es un mecanismo de seguridad excelente contra ataques desde Internet. Si alguien quiere atacar la red protegida, primero tiene que atravesar el cortafuego. De esta manera el ataque se divide en dos pasos y, por lo tanto, se dificulta. Si alguien quiere atacar la red protegida por métodos más comunes, como el bombardeo de e-mails, o el "Gusano de Internet", simplemente no podrá alcanzarla. Con esto se consigue una protección excelente.
El mayor problema de los cortafuegos es que restringen mucho el acceso a Internet desde la red protegida. Básicamente, reducen el uso de Internet al que se podría hacer desde un terminal. Tener que entrar en el cortafuego y desde allí realizar todo el acceso a Internet es una restricción muy seria. La solución a todos estos problemas es un Servidor Proxy.
Ahora para poder configurar
un Cortafuegos, lo primero es recompilar el núcleo con las opciones apropiadas.
Las opciones requeridas son:
1) Habilitar el Soporte
de Red
2) Habilitar la opción de red TCP/IP
(TCP/IP Networking)
3) Deshabilitar el reenvío de paquetes
IP (CONFIG_IP_FORWARD)
4) Habilitar la opción de Cortafuegos
IP (IP Firewalling)
5) Habilitar las cuentas IP (IP Accounting).
6) Habilitar el Soporte de Dispositivos
de Red (Networking Device Support)
7) Habilitar el soporte de PPP y
Ethernet (por ejemplo, aunque esto depende del tipo de interfaces que
se tenga en cada caso).
11. PROXY
Los servidores proxy son servicios que permiten el acceso directo a Internet desde detrás de un cortafuego. Funcionan abriendo un socket en el servidor y permitiendo la comunicación con Internet a través de él, por ejemplo, si un computador estuviera dentro de la red protegida y quisiera ver el Web con Netscape, pondría un servidor proxy en el cortafuego. El servidor proxy estaría configurado para hacer que las peticiones de conexión de su computador al puerto 80 de otra máquina, se conectará a su puerto 1080, y él mismo establecería una conexión con el puerto 80 de la máquina deseada. A partir de entonces reenviaría todos los datos de esa conexión a la otra máquina. TIA o TERM son dos programas con los que se puede redirigir un puerto. Lo importante de los servidores proxy es que, bien configurados, son completamente seguros. No dejan que nadie ingrese a través de ellos.
Un servidor proxy es ante todo un dispositivo de seguridad. Se usa para aumentar el número de máquinas con acceso a Internet cuando se tienen pocas direcciones IP. Un servidor proxy permite un mayor acceso desde dentro de la red protegida al exterior, pero mantiene el interior completamente inaccesible desde el exterior. Esto significa que no habrá conexiones archie, ni talk, ni envío directo de correo a los computadores dentro de la red.
FTP crea otro problema con los servidores proxy. Cuando se hace un ls, o un get, el servidor de FTP establece una conexión con la máquina cliente y envía la información por ella. Un servidor proxy no lo permitirá, así que el FTP no funciona bien. Además, un servidor proxy es lento, debido a la gran sobrecarga.
12. ROUTING AVANZADO
El núcleo Linux, a partir de la versión 2.4 ofrece una interfaz que permite implementar herramientas profesionales de alto nivel en cuanto a la gestión del tráfico de paquetes IP. Permitiendo hacer túneles IP, tablas de routing múltiples, reserva de ancho de banda, multicasting, proxy ARP y mucho más. Esas funcionalidades estaban hasta ahora sólo disponibles en routers propietarios de gama alta y de precio casi prohibitivo. El núcleo Linux permite implementarlas de modo más seguro, más económico y con mayor rendimiento, además de desarrollar sus propias herramientas específicas.
A partir de la versión 2.4 del núcleo Linux, está disponible un socket llamado NETLINK que permite implementar en espacio usuario (user space) código de gestión de paquetes y tráfico IP. Teóricamente, este socket, por su naturaleza, permite implementar cualquier código. Sin embargo, se centrará en el código escrito por Alexey Kuznetsov y disponible bajo el nombre ’iproute’. Está accesible en ftp://ftp.inr.ac.ru/ip-routing
Algunas de las cosas que
permite hacer este código son:
• unificar los comandos relacionados con la gestión del tráfico IP, sea
de redes, de interfaces, protocolos, etc.
• monitoreo de los periféricos, direcciones y rutas.
• gestión de tablas ARP
• uso de tablas de routing múltiples
• creación de túneles IP
• reserva de ancho de banda
El comando ip le permite trabajar con tablas de routing múltiples, una gran novedad en la gestión de tráfico IP. Hasta ahora había tenido, por cada sistema, una tabla de routing única, que define a qué interfaz está conectada una red, donde se encuentra el gateway, etc ... Gracias a iproute, puede trabajar con varias tablas de routing a la vez y elegir que tabla usar según las características del paquete IP.
Imagine por ejemplo, que tiene un router con dos interfaces de conexión a Internet. Una interfaz RDSI más lenta pero barata y una interfaz ADSL rápida, pero más cara. La ventaja es que se puede decidir, gracias a iproute, que interfaz será usada, según los paquetes que hay que enviar. Por ejemplo, le puede decidir que los paquetes SMTP saldrán por la interfaz RDSI lenta (no hay prisa). Al revés, si tiene aplicaciones de videoconferencia, deseará que vayan por la interfaz ADSL rápida. En este caso, la política de routing se basa en el puerto de destino de los paquetes IP.
También puede basar la política de routing sobre la dirección IP de origen de los paquetes. Sería el caso si quiere dar prioridad a determinados servicios de una empresa. Por ejemplo, la dirección de la empresa usará la conexión ADSL rápida, mientras el servicio de mecanografía verá su tráfico dirigido por la interfaz lenta
13. UTILIDADES PARA LA ADMINISTRACIÓN DE RED
13.1. Tcpdump
Tcpdump es un programa cuya utilidad principal es analizar el tráfico
que circula por la red. Se apoya en la librería de captura pcap,
la cual presenta una interfaz uniforme y que esconde las peculiaridades
de cada sistema operativo a la hora de capturar tramas de red.
Lo primero que se debe averiguar cuando se usa tcpdump, son las interfaces
que quiere escuchar. Por defecto cuando se ejecuta sin parámetros,
bajo Linux se pone a escuchar en la interfaz eth0.
Fig. 3. Ejemplo
de MRTG. |
Para averiguar las interfaces en cualquier Unix se recurre al comando ifconfig -a el cual da una lista de las interfaces que tiene, así como sus parámetros de configuración.
Usando estos datos, si quiere escuchar en la interfaz eth0, usará tcpdump -i eth0.
Cuando esté leyendo la red, puede que no le interese que tcpdump intente resolver los nombres de las máquinas (pueden que no estén dadas de alta en el DNS), para ello dispone de la opción -n.
Para establecer la longitud de los datos que captura tcpdump usará -s len, donde len es la longitud que le interesa. Por defecto tcpdump sólo captura los primeros 68 bytes, lo cual es útil si lo único que se desea son las cabeceras IP, TCP o UDP, ahora en caso de estar buscando protocolos como el NFS los datos se truncan. En ese caso, puede ajustar la longitud de la captura a la MTU del medio que está usando con esta opción. Por ejemplo para capturar toda la trama ethernet puede usar -s 1500.
Si quiere manejar una gran cantidad de información, puede usar -v,-vv,-vvv, aumentando el grado de información con cada una de las opciones.
Si quiere imprimir el contenido del paquete, puede usar la opción -x. Si además quiere que se imprima en ASCII el contenido de los paquetes puede usar -X. La longitud que imprime viene determinada por la opción -s o los 68 bytes que usa la captura por defecto.
Puede trabajar offline con tcpdump. Si quiere grabar su captura para posteriormente leerla y analizarla use la opción -w file donde file es el nombre del fichero donde quiere grabar la captura de datos. Posteriormente puede leer y analizar offline con -r file.
13.2. MRTG
El Graficador de Tráfico Multi Enrutador (Multi Router Traffic Grapher, MRTG) es una herramienta para monitorear la carga de tráfico en los enlaces de una red. MRTG genera páginas HTML las cuales contienen gráficos GIF lo que provee una representación visual en tiempo real de este tráfico.
MRTG consiste en un programa en Perl que usa SNMP para leer los contadores de tráfico de sus enrutadores y de un rápido programa en C el cual archiva los datos de tráfico y crea imágenes que representan el tráfico en la conexión de red monitoreada. Esos gráficos se insertan en páginas web que pueden ser vistas desde cualquier browser.
Además de una vista diaria detallada, el MRTG crea también representaciones visuales para el tráfico de los últimos siete días, las cuatro últimas semanas y los últimos doce meses. Esto es posible pues, MRTG mantiene un archivo de todos los datos que ha obtenido del enrutador. Este archivo es consolidado automáticamente, así es que no crece con el tiempo, pero contiene todos los datos relevantes del tráfico de los últimos dos años. Todo esto se realiza de una manera eficiente. Por lo tanto, podemos monitorear 200 o más enlaces de red desde cualquier máquina Unix.
MRTG no está limitado al monitoreo de tráfico, es posible monitorear cualquier variable SNMP que usted elija. Puede hasta usar un programa externo para recolectar datos que serán monitoreados por MRTG. Particularmente se usa MRTG para monitorear eventos como Carga del Sistema, Logueo de Sesiones, disponibilidad de modems y más.
MRTG permite además acumular dos o más fuentes de datos en un único gráfico.
14. CONCLUSIONES
Durante el presente trabajo se puso de manifiesto las principales características que hace de Linux un Sistema Operativo portable.
La mayoría de los servicios de red están soportados para Linux en forma segura a diferencia de Windows NT.
La adaptación que tiene éste sistema operativo sirvió para controlar el tráfico de información con MRTG desde Telefónica del Sur a sus clientes en forma eficiente.
Cualquier empresa relacionada a temas de interconectividad, pueden disponer de estos servicios ya que son gratuitos. Por lo cual, los dispositivos bajo Linux son una solución a bajo costo.
El proceso de configuración de Firewalls bajo Linux es muy sencillo e intuitivo, demás está resaltar las comparaciones precio/rendimiento entre equipos comerciales y una máquina reacondicionada en Linux.
El proceso de formación de técnicos en ambientes de conectividad es más práctico y fácil de comprender utilizando Linux.
BIBLIOGRAFÍA
[1] Mancill, Tony. 2001. Linux Routers: A Prime for Network Administrators. Prentice Hall, Inc. New York USA.
[2] Takett, Jack., S. Burnett. 2000. Linux. 4ta Ed.; Prentice Hall. Madrid. España
[3] Zieger, Robert. 2000. Guia Avanzada Firewalls Linux. Prentice Hall Iberia. Madrid. España
[4] Alexey, S.,N. Kuznetsov. IP Command Referente:http://snafu.freedom.org/linux2.2/docs/ip-cref/ip-cref.html, Descripción de la herramienta ip del paquete iproute2.
[5] Bert Hubert et al, Linux 2.4 Advanced Routing HOWTO: http://www.linuxdoc.org/HOWTO/Adv-Routing-HOWTO.html
[6] Comparativa de configuración ipfwadm, ipchains, iptables: http://www.tldp.org/LDP/nag2/x-087-2-firewall.example.html
[7] Firewalls http://www.linuxguruz.org/iptables/scripts/rc.firewall_010.txt
[8] Guías COMO de Linux http://es.tldp.org/htmls/comos.html
[9] Proyecto Netfilter Seguridad a través de filtrado de paquetes http://www.netfilter.org
[10] TCPDUMP, www.tcpdump.org
[11] MRTG, www.mrtg.org
[12] Sendmail, www.sendmail.org
[13] RFC 821, RFC 974, RFC 1123, http://www.rfc-editor.org/
Francisco J. Moraga Q. Ing. Electrónico Universidad Austral de Chile, Actualmente Ingeniero en Conectividad de la Telefónica del Sur S.A., fmoraga@telsur.net.