Вы находитесь на странице: 1из 72

Curso de Redes

Contenido
1. Fundamentos de TCP/IP.................................................................................8
1.1. Sistemas abiertos................................................................................................................ 8
1.2. Arquitecturas de red........................................................................................................... 9
1.2.1. Topología de bus........................................................................................................... 9
1.2.2. Topología de anillo...................................................................................................... 10
1.2.3. Topología de estrella................................................................................................... 10
1.3. Capas.................................................................................................................................. 12
1.3.1. Capa de aplicación...................................................................................................... 13
1.3.2. Capa de presentación................................................................................................. 13
1.3.3. Capa de sesión............................................................................................................ 13
1.3.4. Capa de transporte...................................................................................................... 13
1.3.5. Capa de red.................................................................................................................. 14
1.3.6. Capa de enlace de datos............................................................................................. 14
1.3.7. Capa física.................................................................................................................... 14
1.4. Estándares Internet........................................................................................................... 14
1.5. Protocolos......................................................................................................................... 15
1.5.1. Encabezados de protocolo......................................................................................... 15
1.6. TCP/IP e Internet............................................................................................................... 16
1.6.1. Generalidades de los componentes de TCP/IP........................................................17
1.6.1.1. Telnet......................................................................................................................... 17
1.6.1.2. Protocolo de Transferencia de Archivos (FTP).....................................................17
1.6.1.3. Protocolo Simple de Transferencia de Correo (SMTP).........................................17
1.6.1.4. Kerberos.................................................................................................................... 18
1.6.1.5. Servidor de Nombres de Dominio (DNS)................................................................18
1.6.1.6. Notación Sintáctica Abstracta (ASN)......................................................................18
1.6.1.7. Protocolo Simple de Administración de Red (SNMP)...........................................18
1.6.1.8. Servidor de Archivos de Red (NFS)........................................................................18
1.6.1.9. Llamadas de Procedimientos Remotos (RPC).......................................................19
1.6.1.10. Protocolo Trivial de Transferencia de Archivos (TFTP).....................................19
1.6.1.11. Protocolo de Control de Transmisión (TCP).......................................................19
1.6.1.12. Protocolo de Datagrama de Usuario (UDP)..........................................................19
1.6.1.13. Protocolo de Internet de Control de Mensajes (ICMP).......................................19
1.7. TCP/IP y Ethernet.............................................................................................................. 19
1.8. Internet............................................................................................................................... 20
1.8.1. La estructura de Internet............................................................................................. 21
1.8.2. Las capas de Internet.................................................................................................. 22
1.8.3. Problemas de la interred............................................................................................. 23

Linux Soluciones Integrales 1 de 72


Curso de Redes

1.8.4. Direcciones de Internet............................................................................................... 24


1.8.5. Direccionamiento en subredes..................................................................................24
1.8.5.1. Direcciones físicas................................................................................................... 25
1.8.5.2. Dirección de enlace de datos..................................................................................25
1.8.6. Grupos de Ethernet..................................................................................................... 25
1.8.7. Direcciones IP.............................................................................................................. 26
1.8.8. Protocolo de Resolución de Dirección (ARP)..........................................................28
1.8.9. Sistema de Nombres de Dominio..............................................................................29
2. Configuración básica de TCP/IP en Linux..................................................31
2.1. Cómo dar de alta un interfaz de red................................................................................32
2.2. Configuración de la red utilizando la herramienta “neat”............................................33
2.2.1. Sección Devices (dispositivos)..................................................................................34
2.2.1.1. General (detalles generales).................................................................................35
2.2.1.2. Route (rutas)........................................................................................................... 36
2.2.1.3. Hardware Device (dispositivo de hardware)........................................................37
2.2.2. Sección Hardware........................................................................................................ 38
2.2.2.1. Edición de las propiedades de una tarjeta..........................................................39
2.2.2.2. Alta de una tarjeta de red......................................................................................39
2.2.3. DNS (servidor de nombres de dominio)....................................................................40
2.2.4. Hosts (clientes)............................................................................................................ 41
2.3. Configuración de la red en forma manual......................................................................43
2.3.1. Scripts, programas, archivos y directorios necesarios...........................................43
2.3.1.1. El directorio “/etc”................................................................................................. 43
2.3.1.2. El directorio "/etc/rc.d".......................................................................................... 43
2.3.1.3. El directorio "/etc/init.d"........................................................................................ 43
2.3.1.4. El script "/etc/rc.d/rc.local"...................................................................................43
2.3.1.5. El script "/etc/init.d/network"................................................................................43
2.3.1.6. El archivo "/etc/hosts"........................................................................................... 43
2.3.1.7. El archivo "/etc/resolv.conf".................................................................................44
2.3.1.8. El programa "/sbin/ifconfig".................................................................................44
2.3.1.9. El programa "/sbin/route".....................................................................................44
2.3.2. Secuencia de pasos para la configuración manual.................................................44
2.3.2.1. El dispositivo de red "virtual" lo..........................................................................44
2.3.2.2. Dispositivos de red físicos...................................................................................44
2.3.2.3. Ruteador por defecto............................................................................................. 45
2.3.2.4. Definiciones de interfases y clientes...................................................................45
2.3.2.5. El servidor de nombres de dominio.....................................................................45
2.3.2.6. Orden de búsqueda de nombres..........................................................................46

Linux Soluciones Integrales 2 de 72


Curso de Redes

4. Ruteo...............................................................................................................47
4.1. Ejemplo de ruteo............................................................................................................... 49
4.1.1. Configuración de la red 192.168.102.0......................................................................50
4.1.2. Configuración de la red 192.168.101.0......................................................................51
4.1.3. Configuración de la red 192.168.99.0........................................................................52
6. Conectividad con Windows 3.11/95/98/2000/ME/NT/XP............................54
6.1. Configuración del Samba................................................................................................. 56
6.2. Manejo de Usuarios.......................................................................................................... 58
6.2.1. Generación del archivo de contraseñas a partir del de Linux................................59
6.2.2. Como agregar usuarios al archivo de contraseñas.................................................59
6.2.3. Cambio de contraseñas.............................................................................................. 59
6.3. Monitoreo de Conexiones................................................................................................ 60
6.4. El SWAT - Samba Web Adminitration Tool....................................................................60
6.5. Ejemplos de Servicios Compartidos...............................................................................62
6.5.1. Directorios "Home"..................................................................................................... 62
6.5.2. Directorios Públicos.................................................................................................... 63
6.5.3. Directorios Ocultos..................................................................................................... 63
6.5.4. Directorios Privados.................................................................................................... 64
6.5.5. Directorios con Atributos Especiales........................................................................65
6.5.6. Notas adicionales........................................................................................................ 65
6.6. Montaje de directorios de Windows en Linux................................................................65
6.7. Desmontaje de directorios de Windows.........................................................................66
7. NFS - Sistema de Archivos de Red..............................................................67
7.1. El mapeador de puertos (portmapper)............................................................................67
7.2. Los daemons mountd y nfsd........................................................................................... 68
7.3. Exportando sistemas de archivos...................................................................................68
7.4. Montando directorios remotos........................................................................................ 69
7.5. Notas relevantes................................................................................................................ 70
9. Enmascaramiento IP y el Squid...................................................................71
9.1. Enmascaramiento IP......................................................................................................... 71
9.2. Configurando el Squid..................................................................................................... 72
9.3. NAT - Network Address Translation................................................................................74

Linux Soluciones Integrales 3 de 72


Curso de Redes

1. Fundamentos de TCP/IP

1.1. Sistemas abiertos


Los antecedentes de TCP/IP se crearon de la necesidad de desarrollar
un procedimiento estandarizado de comunicaciones que se utilizaría en una
diversidad de plataformas.

Los sistemas abiertos se han vuelto indispensables en el mercado actual


tan competitivo. El término sistema abierto está en todas las bocas como
solución para cualquier problema. Comprender lo que significa un sistema
abierto lleva a un mejor conocimiento del papel que juega TCP/IP.

Para la mayoría de la gente, la mejor definición de sistema abierto es


aquel para el cual la arquitectura no es un secreto. Cuando más de un
fabricante empieza a elaborar productos para una plataforma, los consumidores
tienen de dónde elegir. Hace una década los sistemas abiertos prácticamente
no existían y cada fabricante de hardware desarrollaba sus propias líneas de
productos, teniendo atado al usuario para todas sus necesidades de hardware y
software, cargando costos excesivos u obligando a sus clientes a realizar
configuraciones no deseadas.

Unix/Linux es un ejemplo clásico de plataforma de software abierta, que


existe desde hace 30 años. Su código fuente es comprensible y se encuentra a
disposición de cualquiera que lo desee. Gracias a esto se puede transportar a
cualquier plataforma de hardware. El crecimiento de Unix empujó a los grandes
fabricantes de hardware a la idea de los sistemas abiertos, lo que condujo a que
la mayor parte de los fabricantes cedieran el derecho de producir una versión de
Unix para su propio hardware. Este paso permitió que los usuarios combinaran
diferentes sistemas de hardware en redes mayores, todos ellos trabajando en
Unix.

Un nuevo término, red de sistema abierto significa muchas cosas


dependiendo a quien se le pregunte. Hay tres servicios de red que son
ampliamente utilizados: transferencia de archivos, correo electrónico y login
remoto. Todos los usuarios de un sistema de red necesitan que estos servicios
estén disponibles sin importar la plataforma que esté empleando en un
momento dado.

Linux Soluciones Integrales 4 de 72


Curso de Redes

1.2. Arquitecturas de red


El término red por lo general hace referencia a un conjunto de
computadoras y periféricos que se interconectan por algún medio. La conexión
puede ser directa o indirecta y los distintos dispositivos de la red se comunican
entre sí utilizando un conjunto de reglas al que llamamos protocolo.

El diseño de la red que incluye a los dispositivos y las formas como se


conectan unos con otros se denomina topología de red. Para nuestro estudio
analizaremos las tres topologías de importancia: bus, anillo y estrella.

1.2.1. Topología de bus

La red de bus es la más sencilla y emplea una sola ruta principal de


comunicaciones. A este tipo de interconexión también se le llama multipunto. Un
ejemplo de esta se muestra en la figura 1.

Figura 1. Topología de bus

Cada dispositivo dentro de la ruta tiene un número identificador especial,


o dirección, que le permite saber que la información que llega le corresponde y
el cual envía a otro dispositivo para que este último sepa a quien contestarle.

Otra característica principal de esta topología es que todos los elementos


conectados en la red se "pelean" por el medio para realizar una comunicación y
solamente uno puede enviar datos en forma simultánea; esto es, en un
momento dado, solamente un dispositivo envía datos y todos los demás lo
reciben.
Previamente mencionamos que con la dirección de red los dispositivos
receptores toman o desechan la información recibida. A esto se le conoce como
protocolo multipunto. El medio de comunicaciones es un cable de tipo coaxial
por lo general y posee un "terminador" en cada extremo del mismo.

Linux Soluciones Integrales 5 de 72


Curso de Redes

1.2.2. Topología de anillo

Como su nombre lo sugiere y a diferencia de la topología de bus, en la


topología de anillo el cable describe un camino cerrado. En la figura 2 podemos
ver una red con este tipo de interconexión.

Figura 2. Topología de anillo

Sin embargo lo que hace a esta organización ser de "anillo" no es esta


trayectoria, sino más bien la forma en que la información es transmitida entre los
dispositivos conectados en la red. El nombre común con el que se le conoce a la
red de anillo es el de token ring.

En este tipo de red el mensaje o token es transferido de computadora a


computadora. Cuando una de ellas desea transferir un mensaje a otra, debe
esperar por un token libre, cargarle su mensaje y enviarlo a la siguiente
computadora en el anillo. Si esta última es la destinataria, tomará el mensaje y
enviará un token libre a la red; si no es la destinataria pasará el token
directamente a la siguiente computadora.

1.2.3. Topología de estrella

Existen dos posturas en lo que se refiere a la topología en estrella de una


red. La primera hace referencia a la forma de conexión física y la segunda a la
forma de distribución de información entre los diferentes dispositivos conectados
en la red. En la primera postura, una red en estrella utiliza un cable principal
muy parecido a la red de bus, que se conoce como plano de fondo ó plano
trasero (backplane ó backbone). Una topología de este tipo aparece en la figura
3a. A partir del backplane, un conjunto de conexiones lleva a una serie de
puertos, a los cuales se conectan los dispositivos.

Linux Soluciones Integrales 6 de 72


Curso de Redes

Figura 3a. Topología de conexión en estrella

Figura 3b. Topología de transmisión de datos en estrella

Linux Soluciones Integrales 7 de 72


Curso de Redes

Esta topología es muy popular debido en parte a que son fáciles de


establecer, mantener, e inclusive en muchas ocasiones resulta la de menor
costo. El backplane se puede extender a distancias considerables al igual que
en una red de bus, ya que los puertos están por lo general agrupados en un
conjunto, colocados en un tablero y se puede tener muchos tableros conectados
a un mismo plano de fondo.

Es importante tener en cuenta que generalmente este arreglo se efectúa


con redes Ethernet, donde el intercambio de información entre dispositivos
emplea protocolos multipunto.

En la segunda postura, se tiene un servidor en el punto central como se


muestra en la figura 3b. Todos los dispositivos se conectan al servidor de forma
independiente; esto es, entre el servidor y un dispositivo existe un enlace punto
a punto dedicado.

La gran ventaja de esta topología es que todos los dispositivos de red se


pueden comunicar en forma simultánea con el servidor. De lo anterior podemos
deducir que es la que ofrece la mayor velocidad de comunicación.

1.3. Capas

Sería muy difícil escribir un solo paquete e software que lleve a cabo
todas las tareas requeridas para las comunicaciones entre distintas
computadoras. A parte de tener que enfrentarse con distintas arquitecturas de
software y hardware tan sólo el segmento de código necesario para todos los
programas que necesitaran comunicación sería excesivamente grande y difícil
de mantener.

La solución a este problema es dividir todos los requerimientos en grupos


con tareas que resultan obvias: transporte de datos, empaquetamiento de
mensajes, aplicaciones de usuario final y así sucesivamente. A cada uno de
estos grupos se le llamó capa.

El modelo adoptado como estándar fue el Modelo de Referencia de


Interconexiones de Sistemas Abiertos (OSI-RM por sus siglas en Inglés). Este
modelo emplea siete capas, como se muestra en la figura 4. La arquitectura de
TCP/IP es similar, pero sólo incluye cinco capas, porque combina algunas de las
funciones del modelo OSI en una sola capa.

Linux Soluciones Integrales 8 de 72


Curso de Redes

1 Aplicación
2 Presentación
3 Sesión
4 Transporte
5 Red
6 Enlace de datos
7 Física

Figura 4. El modelo de referencia OSI

Veamos ahora brevemente la función de cada una de las capas y las


relaciones entre ellas.

1.3.1. Capa de aplicación

Esta es la interfaz con el usuario final, es donde residen las aplicaciones


como el correo electrónico o los módulos de desplegado de bases de datos. La
tarea de esta capa es desplegar información recibida y enviar los nuevos datos
del usuario a capas inferiores.

1.3.2. Capa de presentación

La tarea de esta capa es aislar las capas inferiores del formato de datos
de la aplicación, esto es los convierte a un formato común llamado
representación canónica. Esta conversión de datos ocurre a través de un
lenguaje común de programación de red. Cuando los datos llegan de una capa
inferior, la capa de presentación hace la operación inversa.

1.3.3. Capa de sesión

Esta capa organiza y sincroniza el intercambio de datos entre los


procesos de la aplicación. Trabaja junto con la capa de aplicación para
proporcionar conjuntos sencillos de datos, conocidos como puntos de
sincronización, además está involucrada en la coordinación de las
comunicaciones entre diferentes aplicaciones y le permite a cada una
conocimiento del estado de la otra.

1.3.4. Capa de transporte

La capa de transporte, como su nombre lo indica, está diseñada para


proporcionar la "transferencia transparente de datos del extremo fuente de un
sistema abierto al extremo destino de un sistema abierto". Esta capa establece,
Linux Soluciones Integrales 9 de 72
Curso de Redes

mantiene y termina las comunicaciones entre dos computadoras. Esta capa es


responsable de comprobar que los datos enviados coincidan con los recibidos.

1.3.5. Capa de red

Proporciona el enrutamiento físico de los datos, determinando la ruta


entre las máquinas, examinando la topología de la red y determinando cuál es el
mejor camino para el envío de un mensaje.

1.3.6. Capa de enlace de datos

Proporciona el control de la capa física y detecta y corrige errores que


pudieran ocurrir. En la práctica, la capa de vínculo de datos es responsable de
la corrección de los errores de transmisión ocurridos durante la transmisión. En
general esta capa se preocupa por las señales en los medios físicos.

1.3.7. Capa física

Es la última del modelo OSI y se ocupa de los medios mecánicos,


eléctricos, funcionales y de procedimientos que se requieren para la transmisión
de los datos. Se refiere al cableado u otra forma de transmisión.

1.4. Estándares Internet


La creación de un estándar en el mundo actual no es cosa sencilla.
Varias organizaciones están dedicadas a desarrollar estándares de una forma
completa y clara. La más importante de ellas es la Organización Internacional
para la Estandarización (ISO por sus siglas en Inglés). Está compuesta de
organizaciones de normas y estándares de muchas naciones, que intentan
ponerse de acuerdo en un criterio internacional.

Cuando en 1980 se estableció la Agencia de Proyectos de Investigación


Avanzada de la Defensa (DARPA por sus siglas en Inglés), se formó un grupo
cuya meta era desarrollar un conjunto de estándares para Internet llamado
Consejo de Control de Configuración de Internet (ICCB por sus siglas en Inglés),
con la tarea de diseñar, ocuparse de la ingeniería y administrar Internet.

Prácticamente desde el principio Internet se definió como "una


colaboración internacional libremente organizada de redes autónomas
interconectadas" que soportaba comunicaciones de anfitrión a anfitrión (host to
host) "mediante adhesión voluntaria a protocolos y procedimientos abiertos"
definidos en una publicación técnica conocida como Internet Standards, RFC
1310.2 y que aún se utiliza en la actualidad.

La creación de un estándar nuevo en Internet (lo que ocurrió con TCP/IP)


sigue un proceso bien definido. Empieza por una solicitud de comentarios
(RFC). Esta por lo regular es un documento que contiene una proposición

Linux Soluciones Integrales 10 de 72


Curso de Redes

específica, algunas veces nueva y otras una modificación de algún estándar


existente. El último paso en la creación del estándar es la adopción del mismo, y
en este momento se implementa en todos los servidores que lo requieren.

1.5. Protocolos
Los protocolos de computación definen la forma como ocurren las
comunicaciones.

Si una computadora envía información a otra y ambas siguen


correctamente el protocolo, el mensaje pasará, independientemente de la
arquitectura de hardware y software que posean.

Cuando las computadoras se comunican, las reglas quedan definidas


formalmente y se ocupan de posibles fallas e interrupciones del flujo de
información, especialmente cuando el flujo es sin conexión (no hay una
conexión formal entre las dos máquinas).

En un sistema como el anterior, la capacidad de enrutar adecuadamente


y verificar cada paquete de datos (datagrama) es de vital importancia.

El flujo de la información se controla mediante un conjunto de acciones


que definen el estado de la máquina para el protocolo.

OSI define estas acciones como información de control de protocolo


(PCI).

1.5.1. Encabezados de protocolo

La información de control de protocolo es relativa al datagrama al cual


está agregada. Dicha información por lo general está ensamblada en un bloque
que se agrega en la parte delantera de los datos que acompaña, y se conoce
como encabezado o encabezado de protocolo.
Estos encabezados se utilizan para transferir información de una capa a
otra, así como entre máquinas. Los encabezados de protocolo se desarrollan de
acuerdo con reglas establecidas en el conjunto de documentos Abstract Syntax
Notation One de la ISO.

Cuando un encabezado de protocolo se pasa a la capa inmediatamente


inferior, el datagrama que incluye el encabezado de esa capa es tratado como
el datagrama global para la capa receptora, la cual añade su propio encabezado
de protocolo en la parte delantera.

Por lo tanto, si un datagrama se inicia en la capa de aplicación, para


cuando llegue a la capa física tendrá añadidos siete juegos de encabezados de
protocolo.

Linux Soluciones Integrales 11 de 72


Curso de Redes

Estos últimos son utilizados al pasar de regreso por la estructura de


capas, y se retiran conforme el datagrama se mueve hacia arriba en las capas.
Una ilustración de lo anterior aparece en la figura 5.
PCI Datos del usuario
Aplicación
PCI Datos de la capa de aplicación
Presentación
PCI Datos de la capa de presentación
Sesión
PCI Datos de la capa de sesión
Transporte
PCI Datos de la capa de transporte
Red
PCI Enlace Datos de la capa de red
de datos
PCI Datos de la capa de enlace de datos
Físico

Figura 5. Encabezados de protocolo en cada capa

1.6. TCP/IP e Internet


TCP/IP es un protocolo de comunicaciones que se basa en software
utilizado en redes. Aunque el nombre TCP/IP implica que el ámbito total del
producto es la combinación de dos protocolos - TCP (Protocolo de Control de
Transmisión) e IP (Protocolo de Internet) - el término TCP/IP no es una entidad
única que combina dos protocolos, sino un conjunto de programas de software
más grande que proporciona servicios de red y se ocupa de manejar los errores
en la transmisión, administrar el enrutamiento y entrega de los datos, así como
controlar la transmisión real mediante el uso de señales de estado
predeterminadas.

Anteriormente se vió que el modelo OSI está formado por siete capas.
Los programas TCP/IP se pueden superponer sobre este modelo a fin de tener
una idea aproximada de dónde reside cada uno de ellos.

En la figura 6 se muestran los elementos básicos del sistema TCP/IP. Se


puede observar que TCP/IP no se ocupa de las dos capas inferiores del modelo
OSI, sino que comienza en la capa de red, donde reside el Protocolo de
Internet.

SNP
Capas Telnet FTP SMTP X Kerberos NFS RPC TFTP Aplicaciones
Superiores
DNS ASN

Transporte TCP UDP

Red IP ICMP

Figura 6. Analogía entre las capas OSI y TCP/IP

Linux Soluciones Integrales 12 de 72


Curso de Redes

En la capa de transporte reside el TCP. Por encima de esto, las utilerías y


protocolos que conforman el resto del conjunto TCP/IP están construidos
utilizando las capas TCP e IP como su sistema de comunicaciones.

Dos sistemas de transporte están involucrados, TCP y el Protocolo de


Datagrama de Usuario UDP. El Protocolo de Internet realiza el enrutamiento de
los mensajes en la capa de red.

TCP/IP se basa en el concepto de clientes y servidores, que no tiene


nada que ver con un servidor de archivos por ejemplo. En TCP/IP el término
cliente/servidor tiene un significado sencillo: cualquier dispositivo que inicia una
comunicación se llama cliente y el dispositivo que responde, servidor. El
servidor responde es decir "sirve" a las solicitudes del cliente.

1.6.1. Generalidades de los componentes de TCP/IP

Para comprender el papel que juegan los muchos componentes de la


familia del protocolo TCP/IP, resulta útil conocer lo que se puede hacer en una
red que lo emplea.

La siguiente lista de aplicaciones no es completa, pero menciona las


aplicaciones principales que TCP/IP aporta a sus usuarios.

1.6.1.1. Telnet

Proporciona la capacidad de login remoto, que permite a un usuario de


una máquina entrar en otra y actuar como si estuviera directamente frente a la
última. Esta conexión puede realizarse en cualquier parte de una LAN o de otra
red en cualquier sitio del mundo, siempre y cuando se tengan los permisos
adecuados.

1.6.1.2. Protocolo de Transferencia de Archivos (FTP)

Permite que un archivo de un sistema se copie en otro. Aquí no es


necesario que el usuario entre como un usuario normal en la computadora a la
que se desea tener acceso, como en el caso del Telnet. Una vez establecida la
conexión con la máquina remota, FTP habilita al usuario para copiar archivos de
una a otra máquina o viceversa.

1.6.1.3. Protocolo Simple de Transferencia de Correo (SMTP)

Se utiliza para transferir correo electrónico. Transparente para el usuario,


SMTP conecta distintas máquinas y transfiere mensajes de correo, de una
manera similar a como FTP transfiere archivos.

Linux Soluciones Integrales 13 de 72


Curso de Redes

1.6.1.4. Kerberos

Es un protocolo de seguridad que utiliza un dispositivo especial conocido


como servidor de auntentificación; éste valida contraseñas y esquemas de
encriptación.
Este protocolo es uno de los sistemas más seguro utilizado en
comunicaciones y es bastante común en Unix.

1.6.1.5. Servidor de Nombres de Dominio (DNS)

Es un programa que permite a una computadora traducir nombres de


dominio normales tales como www.linux-si.com a su correspondiente dirección
IP.

Esto es con el fin de que no se necesite saber la dirección IP de una


máquina que puede estar al otro lado del mundo. Una ventaja más radica en
que, si alguna empresa que tuviese su dominio con una cierta dirección IP y por
alguna razón la cambia, sólo tiene que avisar al DNS del cambio; el resto del
mundo continuaría teniendo acceso al dominio empleando el nombre con que
se le conoce.

1.6.1.6. Notación Sintáctica Abstracta (ASN)

Es un lenguaje que se utiliza tanto en OSI como en TCP/IP para definir


estándares. ASN.1 permite definiciones sin ambigüedades para los términos
que se utilizan en dichos estándares.

1.6.1.7. Protocolo Simple de Administración de Red (SNMP)

Este protocolo utiliza como mecanismo de transporte el protocolo de


datagrama de usuario (UDP). Emplea términos diferentes de TCP/IP, como
administradores y agentes en vez de clientes y servidores. Un agente
proporciona información sobre un dispositivo, en tanto que el administrador se
comunica a través de la red.

1.6.1.8. Servidor de Archivos de Red (NFS)

El servidor de archivos de red es un conjunto de protocolos desarrollado


por Sun Microsystems para habilitar en forma transparente a varias máquinas el
acceso a los directorios de las demás máquinas. Estas consiguen lo anterior
utilizando un esquema de sistema de archivos distribuido.

Los sistemas NFS son comunes en empresas que ocupan estaciones de


trabajo en Unix.

Linux Soluciones Integrales 14 de 72


Curso de Redes

1.6.1.9. Llamadas de Procedimientos Remotos (RPC)

Son funciones que permiten que una aplicación se comunique con otra
máquina. Proporcionan funciones de programación, códigos de retorno y
variables predefinidas para soportar computación distribuida.

1.6.1.10. Protocolo Trivial de Transferencia de Archivos (TFTP)

Es un protocolo de transferencia de archivos muy sencillo, sin


complicaciones, que carece totalmente de seguridad. Utiliza al protocolo UDP
como transporte.

1.6.1.11. Protocolo de Control de Transmisión (TCP)

Es un protocolo de comunicaciones que proporciona transferencia


confiable de datos. Es responsable de ensamblar datos pasados desde
aplicaciones de capas superiores a paquetes estándar y asegurarse de que los
datos se transfieren correctamente.

1.6.1.12. Protocolo de Datagrama de Usuario (UDP)

Es un protocolo orientado a comunicaciones sin conexión, lo que significa


que no tiene mecanismo para la retransmisión de datagramas (a diferencia de
TCP que es orientado a conexión). UDP no es muy confiable, pero sí tiene fines
particulares. Si las aplicaciones que utilizan UDP tienen su propia verificación de
confiabilidad, los inconvenientes de UDP se pueden superar.

1.6.1.13. Protocolo de Internet de Control de Mensajes (ICMP)

Es responsable de verificar y generar mensajes sobre el estado de los


dispositivos de una red. Puede utilizarse para informar a otros dispositivos de la
falta de una máquina en particular. Por lo general, ICMP e IP funcionan juntos.

1.7. TCP/IP y Ethernet


Para mucha gente los términos TCP/IP y Ethernet van juntos casi en
forma automática, principalmente por razones históricas, así como por el simple
hecho de que hay más redes basadas en Ethernet con TCP/IP que cualquier
otro tipo. Ethernet fue desarrollado por Xerox como un paso hacia un sistema
electrónico de comunicaciones de oficina y desde entonces ha crecido en
capacidad y popularidad.

Ethernet es un sistema de hardware proporcionado para las capas de


enlace de datos y física del modelo OSI. Como parte de los estándares de
Ethernet se establecen los tipos de cable y las velocidades de difusión. Hay
varias versiones distintas de Ethernet, cada una de ellas con una velocidad
diferente de transferencia de datos. La más común es Ethernet versión 2,
Linux Soluciones Integrales 15 de 72
Curso de Redes

también conocida como 10Base5, Thick Ethernet e IEEE 802.3. Este sistema
tiene una velocidad de 10Mbps.

Una variante de uso común, como Thin Ethernet ó 10Base2 opera sobre
un cable más delgado, como el coaxial y otra Twisted-pair Ethernet ó 10BaseT
[100BaseT], que emplea cables de par trenzado.

Ethernet y TCP/IP funcionan bien juntos, con Ethernet proporcionando el


cableado físico y TCP/IP el protocolo de comunicaciones que se difunde a
través del cable. Cada uno tiene su propio proceso para el empaquetado de de
la información: TCP/IP utiliza direcciones de 32 bits, mientras que Ethernet
emplea un esquema de 48 bits. Sin embargo, ambos funcionan juntos, debido a
un componente de TCP/IP conocido como Protocolo de Resolución de
Direcciones (ARP), que realiza la conversión entre ambos esquemas.
Ethernet se apoya en un protocolo conocido como Acceso Múltiple de
Detección de Portadora con Detección de Colisión (CSMA/CD). Simplificando:
un dispositivo verifica el cable de red para detectar si en ese instante se está
enviando algo. Si el cable está libre, el dispositivo envía sus datos; pero si está
ocupado (detección de portadora), el dispositivo espera a que se desocupe. Si
dos dispositivos transmiten al mismo instante (colisión), los dispositivos esperan
un tiempo aleatorio antes de volver a intentar.

1.8. Internet
Conforme ARPAnet creció a partir de una red sólo militar, que añadió
subredes en universidades, empresas y comunidades de usuarios, se conoció
como Internet. Sin embargo, no hay ninguna red en particular que se llame
Internet. El término hace referencia al conjunto de todas las subredes. Lo único
que tienen en común todas estas subredes es que utilizan TCP/IP como
protocolo de comunicaciones.

Como se mencionó con anterioridad, la organización de Internet y la


adopción de nuevos estándares están controladas por el Consejo Consultivo de
Internet (también llamado IAB por sus siglas en Inglés), que entre otras cosas
coordina varios equipos de trabajo como el Grupo de Trabajo de Ingeniería de
Internet (IETF) y el Grupo de Trabajo de Investigación de Internet (IRTF), donde
el primero se encarga de la implementación y aspectos de ingeniería asociados
y el segundo de la investigación en marcha.

Una organización que tiene algo que ver con el IAB es el Consejo de
Redes Federales (FNC), que sirve como intermediario entre el IAB y el gobierno.
El FNC tiene capacidad de asesoría en el IAB y sus grupos de trabajo, así como
la responsabilidad de administrar el uso de Internet y otras redes por parte del
gobierno. Debido a que este último fue el responsable del financiamiento del
desarrollo de Internet, conserva gran parte del control y del patrocinio de la
investigación y la expansión de Internet.

Linux Soluciones Integrales 16 de 72


Curso de Redes

1.8.1. La estructura de Internet

Como se mencionó antes, Internet no es una sola red, sino un conjunto


de éstas, que se comunican entre sí a través de compuertas o ruteadores. Por
lo pronto definamos a una compuerta o ruteador como un dispositivo de que
realiza funciones de encaminamiento, tal como se muestra en la figura 7.

Subred 1 Subred 3
Ruteador
Subred 4
Ruteador
Ruteador
Subred 5
Subred 2

Figura 7. Ejemplo de subredes interconectadas por compuertas

Con TCP/IP todas las interconexiones entre redes físicas se hacen


mediante ruteadores. Un punto importante que se debe tener presente es que
las compuertas enrutan los paquetes de información basados en su nombre de
red de destino, y no en la máquina destino. Se supone que las compuertas
deben ser totalmente transparentes al usuario, lo que también la libera del
manejo de aplicaciones finales (a menos que una computadora se esté
empleando como estación de trabajo y compuerta en forma simultánea).

Resumiendo, la función de un ruteador es la de recibir un datagrama, ya


sea de la red Internet o de la red local, y encaminarlo hacia el siguiente ruteador
o pasarlo a la red local para su encaminamiento hacia el usuario apropiado.Las
compuertas funcionan con cualquier tipo de hardware y de sistema operativo,
siempre y cuando estén diseñadas para comunicarse con otras compuertas con
las que estén conectadas (que en este caso significa que una compuerta utiliza
TCP/IP).

En Estados Unidos Internet tiene como columna vertebral (backbone) a


NFSNET, como se muestra en la figura 8. Entre las redes principales
conectadas con NFSNET está la Space Physics Analysis Network (SPAN de la
NASA), la San Diego Supercomputer Network (SDSCNET), la Computer
Science Network (CSNET), y todo un grupo de redes más pequeñas orientadas
al usuario, como la Because It's Time Network (BITNET) y UUNET, las cuales, a
través de ruteadores, proporcionan conectividad a servidores más pequeños
que no pueden o no desean establecer una compuerta directa con Internet.

Linux Soluciones Integrales 17 de 72


Curso de Redes

BITNET SPAN
RUTEADOR
RUTEADOR

NFSNET
RUTEADOR
RUTEADOR RUTEADOR

UUNET SDSCNET CSNET

Figura 8. La red Internet de Estados Unidos

La columna vertebral está formada de aproximadamente 3,000


servidores de investigación, conectados mediante líneas de alta velocidad
rentadas que operan a más de 10Gbps. En la actualidad se efectúan pruebas
para aumentar la velocidad de transmisión de esta columna vertebral, a fin de
obtener más rendimiento y para darle cabida al creciente número de usuarios.
Diversas tecnologías se están probando en campo, incluidas Red Optica
Síncrona (SONET), Modo de Transferencia Asíncrona (ATM) y la Interfaz
Paralela de Alto Rendimiento (HPPI).

1.8.2. Las capas de Internet

La mayor parte de las interredes, incluida Internet, se pueden considerar


como una arquitectura en capas a fin de simplificar su comprensión.

La estructura más lógica desarrollada mediante el uso de un proceso de


capas se presentó anteriormente para el modelo OSI, por lo que es adecuado
aplicarla para Internet. Se debe pensar que estas capas son sólo conceptuales;
no son verdaderamente capas físicas ni de software como tal, a diferencia de
las capas OSI o TCP/IP.

Resulta conveniente pensar en Internet como formado por cuatro capas


como se muestra en la figura 9. No se deben confundir con las del modelo OSI,
sino tomarlas como pauta para apreciar como funcionan juntos la interred, la red
local, TCP/IP y cada una de las máquinas individuales.

Linux Soluciones Integrales 18 de 72


Curso de Redes

Servicios de Aplicación
Protocolo de proveedor de
Servicio
Interred
Subredes

Figura 9. Las capas de Internet

Las máquinas independientes residen en la capa de subred en la parte


inferior de la arquitectura, conectadas juntas en una red de área local (LAN) e
identificadas como la subred.

Por encima de la capa de subred está la interred, que proporciona


funcionalidad para las comunicaciones entre redes a través de compuertas.
Cada subred utiliza compuertas para conectarse a otras subredes en la interred.

En esta capa los datos son transferidos de una compuerta a otra hasta
que llegan a su destino, y entonces pasan a la capa de subred. Es el Protocolo
de Internet (IP) el que corre en esta capa.

La capa del protocolo de proveedor de servicios es responsable de las


comunicaciones de extremo a extremo de la red. Esta es la capa donde corre el
Protocolo de Control de Transmisión (TCP). Por sí misma maneja el flujo de
tráfico de datos y asegura la confiabilidad de la transferencia del mensaje.

La capa más alta es la de los servicios de aplicación, que soporta las


interfases con las aplicaciones de usuario. Esta capa es la interfaz para el
correo electrónico, las transferencias remotas de archivos y el acceso remoto.

1.8.3. Problemas de la interred

No todo funciona perfectamente al transferir datos de una subred a otra.


A pesar de que toda la red use un solo protocolo, diversos problemas pueden
ocurrir. Un problema típico es alguna limitación en el tamaño de los datagramas.
La red emisora tal vez pueda soportar datagramas de 1024 bytes, pero la
receptora tal vez sólo soporte datagramas de 512 (probablemente por
diferencias en hardware). Si esto sucede entran los procesos de segmentación,
separación, reensamble y concatenación que permiten fraccionar los
datagramas, enviarlos y al recibirlos, reintegrarlos.

Otro problema común es la distinta tolerancia que cada red tiene a


problemas de sincronización. Los valores de intervalo retardo y de reintento
(timeout) pueden ser distintos, por lo que cuando dos subredes estén intentando
establecer una comunicación, quizá una ya desistió y pasó a otra tarea, en tanto
la segunda todavía está esperando una señal de confirmación de la primera.

También, si dos subredes están comunicándose correctamente y una se


Linux Soluciones Integrales 19 de 72
Curso de Redes

satura y tiene que hacer una pausa en el proceso de comunicación, puede


resultar de importancia el tiempo transcurrido antes de que la otra red suponga
que se presentó una desconexión y desista.

Los métodos de enrutamiento y la velocidad de la máquinas en la red


pueden afectar también el rendimiento de la interred. Si un ruteador es
administrado por una máquina particularmente lenta, puede acumularse el
tráfico que pasa por él, causando retrasos y transmisiones incompletas en toda
la interred.

1.8.4. Direcciones de Internet

Las direcciones de red son análogas a las direcciones de correo en el


sentido de que le indican a un sistema dónde debe entregar un datagrama. Tres
términos utilizados comúnmente en Internet se relacionan con el
direccionamiento: nombre, dirección y ruta.

Un nombre es una identificación específica de una máquina, un usuario o


una aplicación. Por lo general es único y proporciona un objetivo absoluto para
el datagrama.

Una dirección típicamente identifica la localización del objetivo, por lo


general su localización física o lógica en una red.

Una ruta le dice al sistema cómo hacer llegar el datagrama a la dirección.

Para enviar información, a menudo se emplea el nombre del destinatario,


ya sea el de un usuario como en el correo electrónico, o el de una computadora
como con el telnet o ftp.

Un paquete de software de red, conocido como servidor de nombres de


dominio, trata de descifrar la dirección y la ruta a partir del nombre, tornando
irrelevante este aspecto al usuario final.

El uso de un servidor de nombres tiene otra ventaja primordial: le da al


sistema o al administrador de la red mucha libertad para modificar la red según
requiera, sin necesidad de informar a cada máquina de usuario sobre alguna
modificación.

1.8.5. Direccionamiento en subredes

En una red sola, son necesarias varias porciones de la información para


asegurar la entrega correcta de los datos. Los componentes primordiales son la
dirección física y la dirección del enlace de datos.

Linux Soluciones Integrales 20 de 72


Curso de Redes

1.8.5.1. Direcciones físicas

Cada dispositivo de una red que se comunicará con otros tiene una
dirección física, también conocida como dirección de hardware. En cualquier red
existirá solamente una ocurrencia de cada una de estas direcciones, de lo
contrario el servidor de nombres no tendrá forma de identificar sin ambigüedad
el dispositivo destino.

Es en la capa física donde se realiza el análisis de cada datagrama que


se recibe. Si la dirección del receptor coincide con la dirección física del
dispositivo, el datagrama puede pasar hacia arriba por las capas. Si no coincide,
el datagrama es ignorado.

La IEEE se ocupa actualmente de la tarea de asignar direcciones físicas


universales para las subredes. La IEEE asigna un identificador único de
organización (OUI) de 24 bits de largo para cada subred (de hecho dos de los
24 bits asignados al OUI son bits de control), lo que le permite a la organización
asignar los otros 24 bits a lo que desee . Este último conjunto identifica las
direcciones de la red local y son administradas localmente.

La combinación de 24 bits del OUI y los 24 bits asignados localmente


forman lo que se conoce como dirección de control de acceso al medio (MAC).
Cuando un paquete de datos se ensambla para transferirlo a través de una
interred, existirán dos conjuntos de MACs, uno proveniente de la máquina
emisora y otro para la máquina receptora.

1.8.5.2. Dirección de enlace de datos

Los estándares Ethernet utilizan una dirección que se conoce como


dirección de la capa de enlace (LSAP por sus siglas en Inglés). El LSAP sirve
para verificar el tipo de protocolo de enlace que se utiliza en la capa de enlace
de datos. Igual que en las direcciones físicas, un datagrama contendrá tanto la
LSAP del emisor como del receptor. La IEEE también habilita un código que
identifica las asignaciones EtherType, las cuales identifican al protocolo de la
capa superior que está operando en la red.

1.8.6. Grupos de Ethernet

El diseño de la información en cada paquete de datos transmitidos difiere


dependiendo del protocolo, pero resulta útil examinar uno para ver cómo se
anteponen a los datos las direcciones y otra información relacionada. En la
figura 10 se muestra un grupo típico de Ethernet.

Preámbul Dirección del Dirección del Tipo Datos CRC


o receptor emisor
64 bits 48 bits 48 bits 16 bits Variable 32 bits

Figura 10. El grupo estructurado de Ethernet

Linux Soluciones Integrales 21 de 72


Curso de Redes

El preámbulo es un conjunto de bits utilizado principalmente para


sincronizar el proceso de comunicación eliminando cualquier ruido aleatorio en
los primeros bits enviados.

A continuación aparecen las direcciones del emisor y receptor, seguido


por un identificador de tipo utilizado para identificar al protocolo.

Después aparece el campo de datos, que tiene desde 46 hasta 1500


bytes de longitud. Si se tienen menos de 46 bytes de datos, el conjunto se
acompleta con ceros hasta que se obtengan los 46 especificados como mínimo.

Al final del grupo aparece el chequeo de redundancia cíclica (CRC), que


sirve para asegurarse de que el contenido del grupo no se haya modificado
durante el proceso de transmisión.

1.8.7. Direcciones IP

TCP/IP utiliza una dirección de 32 bits para identificar una máquina y la


red a la cual pertenece. La direcciones IP identifican la conexión de la máquina
a la red, no la máquina misma. Unicamente el Centro de Información de la Red
(NIC) asigna direcciones IP públicas. Si una red no está conectada a Internet,
puede determinar su propio sistema de numeración.

Existen cuatro formatos para las direcciones IP, cada uno de estos se
emplea dependiendo del tamaño de la red. Los cuatro formatos: Clase A hasta
Clase C, se muestran en la figura 11. La clase se identifica mediante las
primeras secuencias de bits.

Clase A 0 Red (7 bits) Dirección local (24 bits)

Clase B 10 Red (14 bits) Dirección local (16 bits)

Clase C 110 Red (21 bits) Dirección local (8 bits)

Clase D 1110 Dirección de difusión múltiple (28 bits)

Figura 11. Las cuatro estructuras de clase de la dirección IP

Las direcciones IP están compuestas de cuatro bytes. La forma de


escribirlas es una convención llamada "notación decimal por puntos". En este
formato, cada byte es convertido en un número decimal (0-255) eliminando
cualquier cero a la izquierda; a menos claro, que el número sea en sí cero y se
escribe cada uno separado por un ".".

Linux Soluciones Integrales 22 de 72


Curso de Redes

Para propósitos administrativos, en los inicios del desarrollo del protocolo


IP, se les asignó a las clases rangos definidos como se muestra en la tabla de la
figura 12.

Clase Máscara de red Direcciones de red


A 255.0.0.0 0.0.0.0 - 127.255.255.255
B 255.255.0.0 128.0.0.0 - 191.255.255.255
C 255.255.255.0 192.0.0.0 - 223.255.255.255
D 240.0.0.0 224.0.0.0 - 239.255.255.255

Figura 12. Rangos de direcciones IP por clase

En cualquier clase, existen dos direcciones de gran importancia: la


dirección de red (network address) y la dirección de difusión (broadcast
address).

La primera se obtiene poniendo en cero todos los bits que representan la


dirección local de una clase. La segunda, poniendo en uno a todos ellos.

Todos los dispositivos prestan atención tanto a mensajes destinados a la


dirección IP que les fue asignada así como a mensajes destinados a la dirección
de difusión establecida. Es a esta dirección donde se envían datagramas que se
desea lleguen a todos los dispositivos en la red.

Ciertos tipos de datos, como información de ruteo y mensajes de alarma


son transmitidos a esta dirección con el fin de que todos los clientes de una red
los reciban en forma simultánea.

Para que un dispositivo (computadora, ruteador, etc.) pueda participar en


una red debe considerar también una máscara de red. Esta sirve para "filtrar"
datagramas provenientes de otras redes que viven en el mismo segmento físico.
Dependiendo del valor de ésta será la subred a la que se podrá tener acceso.
Como se mencionó previamente, si una red no se conectará a Internet,
se puede usar cualquier grupo de direcciones sin problema alguno; sin
embargo, para fines de seguridad y por razones de consistencia, se han
reservado grupos de direcciones IP para estos fines. Estos se especifican en la
RFC 1597 y se muestran en la tabla de la figura 13.

Clase Máscara de red Direcciones de red


A 255.0.0.0 10.0.0.0 - 10.255.255.255
B 255.255.0.0 172.16.0.0 - 172.31.255.255
C 255.255.255.0 192.168.0.0 - 192.168.255.255

Figura 13. Rangos de direcciones IP reservados para uso privado

Linux Soluciones Integrales 23 de 72


Curso de Redes

1.8.8. Protocolo de Resolución de Dirección (ARP)

La determinación de las direcciones puede resultar difícil porque tal vez


no todas las máquinas de la red tengan la lista de todas las direcciones de las
demás máquinas o dispositivos. El envío de datos de una máquina a otra puede
causar problemas si no se conoce la dirección física de la máquina receptora y
si no existe un sistema de resolución para determinarlas.

Tener que actualizar en forma constante una tabla de direcciones en


cada una de las máquinas sería una pesadilla de la administración de la red.
Además, el problema no se restringe a direcciones de dispositivos en una red
pequeña, por que si se desconocen las direcciones de la red de destino remoto,
también ocurrirán problemas de enrutamiento y entrega.

El protocolo de resolución de direcciones ayuda a resolver estos


problemas. La tarea de ARP es convertir las direcciones IP a direcciones físicas
(de red y local), y al hacerlo, elimina la necesidad de que las aplicaciones sepan
direcciones físicas. Esencialmente, el ARP es una tabla con una lista de
direcciones IP y sus direcciones físicas correspondientes. La tabla se conoce
como caché ARP.

En la tabla 1 de la figura 14 se puede observar el diseño de un caché


ARP. Cada renglón corresponde a un dispositivo, con la siguiente información
para cada uno: IF, el interfaz; Dirección Física, la dirección física del dispositivo;
Dirección IP, la dirección IP que le corresponde a esa dirección física y el Tipo
de Mapeo, que es uno de cuatro valores posibles que indican el estado de la
entrada del caché.

IF Dirección Física Dirección IP Tipo de mapeo


Entrada 1
Entrada 2
Entrada 3
Entrada 4
Figura 14. El caché ARP

En la tabla de la figura 15 se muestra la información que suministra el


comando arp cuando se solicita que despliegue su caché.
ws3.linux-si.com (192.168.100.10) at 00:D0:09:F5:27:C0 [ether] on eth0
gateway (192.168.1.1) at 08:00:4E:A5:D2:F6 [ether] on eth1
wavelan.linux-si.com (192.168.1.101) at 48:54:E8:25:C8:42 [ether] on eth1
ws1.linux-si.com (192.168.100.90) at <incomplete> on eth0
ws2.linux-si.com (192.168.100.91) at 00:E0:7D:7F:48:37 [ether] on eth0

Figura 15. Resultado del comando ARP

Linux Soluciones Integrales 24 de 72


Curso de Redes

El tipo de mapeo es muy importante, un valor 2 en esta casilla indica que


la entrada es inválida; un valor 3 significa que el mapeo es dinámico (la entrada
puede ser modificada); un valor 4 significa que la entrada es estática, y
finalmente, un valor 1 indica que no es alguna de las anteriores.

Cuando ARP recibe la dirección IP de un dispositivo receptor, busca en el


caché alguna coincidencia. Si encuentra alguna, devuelve la dirección física. Si
no la encuentra envía un mensaje a la red. El mensaje, conocido como solicitud
ARP, es una difusión que se recibe en todos los dispositivos de la red local.

La solicitud ARP contiene la dirección IP del dispositivo receptor deseado.


Si un dispositivo reconoce esta dirección IP como suya, envía un mensaje de
respuesta con la dirección física de regreso al dispositivo que generó la
solicitud. Esta última coloca la información en su caché ARP para uso futuro.
Siempre que un caché ARP recibe una solicitud ARP, éste utiliza la
información incluida en la solicitud para actualizar su propia tabla. Por lo tanto,
el sistema se puede adecuar en forma dinámica a direcciones físicas
cambiantes y a nuevas adiciones a la red, sin tener que generar una solicitud
ARP propia.
Sin la posibilidad de tener un caché ARP, todas las solicitudes y
respuestas ARP generarían gran cantidad de tráfico en la red, lo que tendría un
serio impacto en el rendimiento de la misma.

1.8.9. Sistema de Nombres de Dominio

En vez de utilizar la dirección IP completa de 32 bits, muchos sistemas


adoptan nombres más significativos para sus dispositivos y redes. Por lo general
los nombres de las redes reflejan el nombre de la organización.

Los nombres individuales de los dispositivos de red pueden ir desde


nombres descriptivos en redes pequeñas a convenciones de asignación de
nombres más complejas en redes más grandes. La conversión entre estos
nombres y las direcciones IP sería prácticamente imposible a escala total de
Internet. A fin de resolver el problema de los nombres de red, el NIC mantiene
una lista de los nombres de red y de las direcciones correspondientes de las
compuertas de red.

Este sistema evolucionó de una sencilla lista a un sistema más complejo


conocido como Sistema de Nombres de Dominio, cuando las redes se hicieron
demasiado numerosas para que el sistema de archivo plano funcionara
eficazmente.

El DNS utiliza una arquitectura jerárquica, muy parecida al sistema de


archivos de Unix. El primer nivel de asignación de nombre divide las redes en
categorías de subredes. Por debajo de cada una de éstas se encuentra otra
división, que identifica a la subred individual, por lo general una para cada
organización. Esta se conoce como nombre de dominio y es única. El
administrador de sistemas de la organización puede dividir aún más las

Linux Soluciones Integrales 25 de 72


Curso de Redes

subredes de la empresa según desee, con cada red identificada como


subdominio. Hasta ahora el NIC ha establecido seis nombres de dominio de
primer nivel. Estos son:
.arpa Una identificación ARPAnet-Internet
.com Empresa comercial
.edu Institución educativa
.gov Cualquier organización gubernamental
.mil Militar
.org Cualquier otra cosa que no cae en las anteriores

El NIC permite agregar un indicador de país. Hay indicadores para todos


los países.

El DNS utiliza dos sistemas para establecer y controlar los nombres de


dominio. En cada red un resolvedor de nombres examina la información incluida
en un nombre de dominio. Si no puede determinar la dirección IP completa,
consulta a un servidor de nombres, que tiene disponible la información del NIC.

El resolvedor de nombres trata de completar la información de


direccionamiento mediante su propia base de datos, la cual actualiza de una
forma muy parecida a la del sistema ARP. Si este servidor de nombres no
puede convertir la dirección, consulta a otro y así sucesivamente por toda la
Internet.

Linux Soluciones Integrales 26 de 72


Curso de Redes

2. Configuración básica de TCP/IP en Linux

La configuración de TCP/IP en Linux es un proceso relativamente simple


cuando se desea tan solo establecer los parámetros de operación
indispensables. Las herramientas típica de configuración que se pueden
encontrar en la mayoría de las distribuciones son el linuxconf y el webmin.

Podemos acceder al linuxconf de tres formas diferentes: modo texto,


modo gráfico y desde la web. Esta última forma de acceder al linuxconf no es la
más utilizada y por cuestiones de seguridad, tampoco la más recomendada. El
webmin es accesado via web y tiene un diseño más seguro que el linuxconf.
Toda configuración en Linux se debe realizar entrando al sistema como root.

Algunas distribuciones de Linux incluyen ambientes gráficos propietarios


que facilitan la configuración del sistema operativo de forma simple y en un
ambiente agradable, tal como el neat de RedHat, o el YAST de SuSE.

A pesar de que estos sistemas ofrecen simpleza en las labores de


configuración, no siempre llevan a cabo todos los procedimientos necesarios
para que los cambios realizados se reflejen satisfactoriamente. Una situación
como la mencionada se presenta durante el establecimiento o cambio de los
parámetros de operación de la red. Incluso el linuxconf llega a fallar
ocasionalmente.

La manera más segura y confiable para realizar cualquier configuración o


cambio de operación en Linux es en modo texto, utilizando los comandos más
básicos del sistema. Desafortunadamente esta es una tarea laboriosa y
complicada y es fácil cometer errores o dejar partes del sistema sin configurar.

Retomando el objetivo principal de esta sección, la configuración de TCP/


IP, deberemos tener en cuenta que los parámetros mínimos que debemos
establecer son:

Linux Soluciones Integrales 27 de 72


Curso de Redes

● Dirección IP del cliente (host)


● Dirección IP de la red
● Dirección IP de difusión (broadcast)
● Máscara de red
● Dirección IP del ruteador (gateway)
● Dirección IP del servidor de nombres (dns)

2.1. Cómo dar de alta un interfaz de red


Toda computadora en Unix/Linux debe contar con al menos un interfaz
de red. A este se le llama local (lo) y es una especie de interfaz "virtual".

La configuración y declaración de este último generalmente se dá por


defecto desde la instalación del sistema; aún así, en la última parte de de este
capítulo se indicará como darlo de alta manualmente.

Para agregar un interfaz de red físico debemos conocerlo a fondo, para


tener la certeza de cuál controlador (módulo) se utilizará para accesarlo.

Linux cuenta con un gran número de módulos para controlar la mayoría


de las tarjetas de red disponibles en el mercado. Un módulo típico es el ne, que
se emplea para manejar tarjetas ISA NE2000 y compatibles. Para utilizarlo se
debe conocer con anterioridad la dirección de memoria donde el sistema
operativo lo encontrará, así como la línea de interrupción que le fué asignada.

De la misma forma, para las tarjetas PCI, Linux proporciona un módulo


llamado ne2k-pci.

En el directorio "/lib/modules/2.4.21-15.EL/kernel/drivers/net" se
localizan todos los manejadores de tarjetas de red disponibles. En la ruta a este
directorio, el subdirectorio "2.4.21-15.EL" indica la versión del kernel de Linux
que se está utilizando y cambiará si se emplea alguna otra.

Para dar de alta un nuevo controlador debemos verificar cómo fué


compilado el kernel en uso.

Si fué compilado para cargar módulos dinámicamente, la tarea se vuelve


muy simple, si nó, habrá que recompilarlo e incluir el controlador para el nuevo
interfaz.
Considerando que el kernel fué compilado para soportar la carga
dinámica de módulos los pasos a seguir para dar de alta el nuevo módulo
controlador son los siguientes:

1. Editar el archivo "/etc/modules.conf" agregando una línea que contenga


algo como:
alias eth0 ne2k-pci

Linux Soluciones Integrales 28 de 72


Curso de Redes

Donde eth indica que se trata de un dispositivo ethernet; el número


cero, que es el primero (los siguientes serán eth1, eth2, etc) y ne2k-pci
especifica el módulo a usar para controlar al interfaz . Otros tipos de interfaz
disponibles son el de token ring (tr0,...), el de enlaces punto a punto
(ppp0,...), etc. El comando alias asigna el nombre del controlador para un
interfaz específico.

También es posible indicar opciones que se le deberán pasar al


módulo, como la dirección de memoria donde se puede accesar y la
interrupción asignada. Esto se lleva acabo agregando una línea tal como:

options eth0 irq=15

Donde eth0 representa el nombre asignado por el alias e irq=5 es la


opción que se le está dando al módulo. Esto último es muy práctico cuando
tenemos que dar de alta tarjetas de interfaz ISA o cuando tenemos múltiples
interfases iguales.

2. Ejecutar el comando: "/sbin/depmod -a" para que el nuevo módulo se


reconoza. Realmente lo que esto hace es actualizar las dependencias.

2.2. Configuración de la red utilizando la herramienta “neat”

Neat viene de Network Administration Tool. Es una herramienta


disponible en Red Hat y Fedora. Presenta un entorno gráfico amigable al
usuario.

Neat puede ser llamado desde una terminal gráfica o desde el escritorio
seleccionando desde el menú principal la opción de Configuración del Sistema.
Debemos recordar que sólamente root puede hacer uso de ella.

En la figura 16 se presenta la ventana principal de neat la primera vez


que es llamada.

Linux Soluciones Integrales 29 de 72


Curso de Redes

Figura 16. Ventana principal de neat

Como se observa, la ventana cuenta con 5 secciones diferentes. La


correspondiente a IPsec existe sólo en la versión de Red Hat Enterprise Server.

El menú File (archivo) permite salvar el las configuraciones realizadas y


salir. El menú Profile (perfil) permite realizar diversas actividades sobre perfiles,
como crear, borrar, modificar o seleccionar un perfil. El menú Help (ayuda) nos
da acceso a la ayuda en línea de la herramienta.

Los botones actúan de igual forma en todas las secciones; sin embargo,
el objetivo cambia según la sección seleccionada.

2.2.1. Sección Devices (dispositivos)

Aquí se enlistan los diferentes interfases de red con los que el equipo
cuenta (ver figura 16). A éstos se les llama también dispositivos lógicos. Un
dispositivo de hardware puede tener varios dispositivos lógicos asociados.

La columna Profile (dispositivos) indica, usando una casilla seleccionable,


si el dispositivo será usado en el perfil selecionado.

La columna Status (estado) indica si el interfaz está activo o no. Los


botones pueden ser utilizados para la acción correspondiente.

La columna Device (dispositivo) refiere al dispositivo de hardware que


tiene asociado el dispositivo lógico.

La columna Nickname (sobrenombre) se usa para indicar el sobrenombre


Linux Soluciones Integrales 30 de 72
Curso de Redes

que se le ha dado al dispositivo de hardware. Se utiliza principalmente para


fines informativos personales.

Finalmente la columna Type (tipo) indica el tipo de dispositivo que se está


usando, como Ethernet, Tokenring, etc.

Al editar un dispositivo, aparece una ventana como la mostrada en la


figura 17.

Figura 17. Editando un interfaz de red

2.2.1.1. General (detalles generales)

La primer sección de la ventana nos muestra los detalles generales del


dispositivo. Aquí podemos realizar las siguientes actividades:

• Cambiar el sobrenombre que tiene asignado el dispositivo


• Decidir si el interfaz se activará o no al inicial al equipo de cómputo
• Decidir si se permitirá que cualquier usuario pueda activarlo/desactivarlo
• Emplear el método de configuración del protocolo TCP/IP en forma
automática o manual

En la última opción hay que tener en cuenta que la forma de


configuración automática puede usar uno de tres protocolos:

a) DHCP – Dynamic Host Configuration Protocol (protocolo de configuración

Linux Soluciones Integrales 31 de 72


Curso de Redes

dinámica de cliente). Requiere de un servidor de éste protocolo activo en la


red.
b) BOOTP – Boot Protocol. Empleado principalmente para clientes que no
tienen unidades de disco
c) DIALUP – Usado cuando el dispositivo se conecta a un modem

Con la casilla DNS, se le indica al sistema que use al(los) servidor(es) de


nombres provistos por el servidor del protocolo seleccionado, haciendo
prácticamente caso omiso del configurado en la sección DNS.

La asignación manual implica especificar la dirección IP, la máscara de


red apropiada y el ruteador por defecto de la red. Cabe notar que cuando el
sistema de cómputo opera fuera de una red, la IP del propio interfaz debe ser
indicado como ruteador por defecto.

2.2.1.2. Route (rutas)

La segunda sección nos facilita agregar rutas específicas a otras redes o


a otros clientes, indicando por qué ruteador serán alcanzados. Los ruteadores
indicados deberán ser alcanzados de forma directa.

Las figuras 18 y 19 muestran respectivamente el contenido de la sección


con una ruta estática a un cliente (ver máscara de red) y la subventana que
permite agregar o modificar una ruta.

Linux Soluciones Integrales 32 de 72


Curso de Redes
Figura 18. Rutas estáticas a otras redes / clientes

Figura 19. Modificación de una ruta estática

2.2.1.3. Hardware Device (dispositivo de hardware)

La figura 20 presenta la sección usada para seleccionar al dispositivo de


hardware asociado al interfaz de red en cuestión.

La opción hardware facilita la selección del dispositivo de hardware por


medio de una lista desplegable que contiene a todos los disponibles.

Figura 20. Dispositivo de hardware asociado al interfaz

La opción alias ofrece la posibilidad de crear interfases virtuales, esto es,


Linux Soluciones Integrales 33 de 72
Curso de Redes

que un mismo dispositivo de hardware se comporte como varios. Por ejemplo, el


interfaz eth0:0 representaría a un interfaz virtual llamado :0 que está ligado al
interfaz físico eth0.

La opción bind to MAC address obliga al interfaz a “casarse” con la


dirección MAC indicada. El botón probe (probar) obtiene la dirección MAC
interconstruída en la tarjeta de red.

2.2.2. Sección Hardware

Gracias a ésta sección, fácilmente puede ser dado de alta nuevo


hardware de red o modificado el existente. La figura 21 presenta el contenido de
la misma, donde se incluye un listado típico de dispositivos físicos.

La primer columna nos brinda una descripción del dispositivo de


hardware. Dicha descripción es obtenida relacionando los identificadores del
vendedor y el dispositivo (que son obtenidos directamente del hardware) con
una base de datos que la mayoría de las herramientas incluye.

Figura 21. Sección de Hardware

La columna Type indica si es de tipo Ethernet, Tokenring, Wireless, etc.


La columna Device indica el nombre que se le ha asociado y la columna Status
si el dispositivo tiene o no algún problema.

Linux Soluciones Integrales 34 de 72


Curso de Redes

2.2.2.1. Edición de las propiedades de una tarjeta

Al editar las propiedades de un dispositivo Ethernet se presenta una


ventana como la de la figura 22. La mayoría de las propiedades listadas
competen sólo a tarjetas conectadas al bus ISA del equipo de cómputo.
Prácticamente todas las tarjetas PCI no requieren de parámetros adicionales, ya
que los protocolos de señalización implicados en dicho bus cumplen de mejor
manera el famoso plug-and-play.

2.2.2.2. Alta de una tarjeta de red

Para dar de alta un dispositivo de hardware, éste debe ser previamente


instalado. Red Hat cuenta con una utilería llamada kudzu, que hace la detección
de nuevos dispositivos de hardware instalados durante el arranque del sistema.
Si el dispositivo no fué detectado correctamente o kudzu estaba deshabilitado,
una ventana como la mostrada en la figura 23 aparece.

Figura 22. Edición de las propiedades de una tarjeta

Figura 23. Alta de una tarjeta de red

Linux Soluciones Integrales 35 de 72


Curso de Redes

La opción de Hardware Type de la ventana de la figura 23 ofrece una


lista de selección del tipo de tarjeta que será dada de alta. Al oprimir el botón
OK de la ventana mencionada, aparece una nueva, que se aprecia en la figura
24.

Observando con cuidado, las ventanas de las figuras 22 y 24 son


idénticas; la única diferencia que se presenta es que en la edición de las
propiedades de una tarjeta no se puede seleccionar al controlador de la misma,
mientras que en la alta si.

Figura 24. Alta de una tarjeta de red, selección del controlador y propiedades

2.2.3. DNS (servidor de nombres de dominio)

Cuando se realiza la configuración manual del protocolo TCP/IP es


indispensable indicar un servidor de nombres de dominio. Cuando el equipo
trabaja desconectado de una red, hay que indicarlo a él mismo como su DNS.
En la figura 25 se observa la sección del DNS de la herramienta.

La opción hostname se emplea para darle un nombre al equipo. El


nombre es relativo, ya que depende desde qué red esté siendo accesado y de
cómo se haya dado de alta en los DNS de los equipos que a él se conectan.

Usualmente la dirección IP del interfaz local virtual se casa también con


éste nombre. Algunas aplicaciones, sobre todo el entorno gráfico lo emplean.

En la opción del DNS primario se indica la dirección IP del servidor DNS a


utilizar, no se debe indicar el nombre de un equipo. Es posible indicar hasta tres
servidores que se consultarán en forma prioritada. Si no se cuenta con un
Linux Soluciones Integrales 36 de 72
Curso de Redes

servidor en la red, o si no se está conectado a una red, se debe indicar al


menos la dirección del interfaz local virtual.

Figura 25. Configuración del DNS

En la opción DNS Search Path se indica el nombre del dominio al que el


equipo pertenece, que se usará cuando se haga referencia a nombres no
calificados.

2.2.4. Hosts (clientes)

Finalmente, la sección hosts, muestra una lista de los clientes conocidos,


indicando su dirección IP, su nombre y un sobrenombre o alias. Es de vital
importancia entender que cuando se hace referencia a un nombre de cliente,
éste es buscado incialmente en el archivo /etc/hosts; ésta sección es sirve como
auxiliar para agregar, quitar o modificar registros en dicho archivo.

Si el nombre de cliente no se encuentra aquí, es buscado usando las


reglas de búsqueda establecidas en los archivos /etc/host.conf y
/etc/resolv.conf. En la figura 26 aparece la ventana con el contenido de la
referida sección.

Cuando se trata de dar de alta un nuevo registro, o si se desea modificar


uno existente, una ventana como la de la figura 27 aparece.

Linux Soluciones Integrales 37 de 72


Curso de Redes

Figura 26. Sección de manejo de clientes

Figura 27. Agregnado / modificando un cliente

Ocasionalmente es necesario reiniciar todos los servicios de red, tarea


que puede ser llevada a cabo fácilmente empleando el script de red, disponible
en la mayoría de las distribuciones de Linux basadas en el System V. El uso del
mismo para reiniciar la red es como sigue:
/etc/init.d/network restart
o bien:
service network restart

Linux Soluciones Integrales 38 de 72


Curso de Redes

2.3. Configuración de la red en forma manual


Para configurar los parámetros de red en forma manual algunos archivos,
programas, scripts y directorios del sistema son se vital importancia, ya que en
estos se depositarán los comandos de configuración, para que posteriormente,
cuando el sistema se reinicie, en automático se vuelva a configurar.

2.3.1. Scripts, programas, archivos y directorios necesarios

2.3.1.1. El directorio “/etc”

En este se encuentran todos los archivos de configuración de todos los


servicios que Linux provee. Incluye subdirectorios para algunos servicios que
requieren un mejor control de sus archivos de configuración.

2.3.1.2. El directorio "/etc/rc.d"

En este se encuentran los archivos que le dicen al sistema que hacer


durante el arranque y el paro del mismo.

2.3.1.3. El directorio "/etc/init.d"

Aquí se encuentran diversos scripts que se emplean para activar,


desactivar, reiniciar y obtener información del estado de diversos servicios.

2.3.1.4. El script "/etc/rc.d/rc.local"

Este archivo es llamado durante el arranque del sistema, y es a través de


él que se ejecutan los diversos scripts de configuración para cada servicio que
se desea activar. Este es el equivalente al autoexec.bat de MSDOS.

2.3.1.5. El script "/etc/init.d/network"

Este script facilita activar y desactivar todas los servicios de red que
hayan sido instalados, y lo hace "apagando" a los dispositivos de red y todas las
rutas especificadas.

Pasándole en la línea de comando la opción stop detiene la red. Con la


función start inicia la operación en red. Con la opción restart detiene y reinicia
la red. Esta última es muy útil cuando se hicieron cambios drásticos a los
parámetros de red y es necesario que se actualice todo el sistema.

2.3.1.6. El archivo "/etc/hosts"

Contiene las definiciones de otros "hosts" o clientes. Es modificado en


ambiente gráfico por el linuxconf en la opción Información sobre otros equipos.
Linux Soluciones Integrales 39 de 72
Curso de Redes

2.3.1.7. El archivo "/etc/resolv.conf"

Contiene las definiciones del servidor de nombres de dominio, el dominio


por defecto y dominios secundarios. Es modificado en ambiente gráfico por el
linuxconf en la opción DNS: Servidor de nombres.

2.3.1.8. El programa "/sbin/ifconfig"

El nombre de este programa es la abreviación de "interface configuration"


y como su nombre sugiere se emplea para configurar los parámetros de
operación de un interfaz de red.

2.3.1.9. El programa "/sbin/route"

Permite declarar rutas a otras redes y a redes e interfaces locales. Más


adelante se darán detalles del ruteo.

2.3.2. Secuencia de pasos para la configuración manual

2.3.2.1. El dispositivo de red "virtual" lo

Este dispositivo permite realizar conexiones locales en la misma


computadora. Muchos programas y ambientes de desarrollo lo ocupan para no
tener que preocuparse por el o los interfases reales. La manera de configurarlo
es muy simple:
ifconfig lo 127.0.0.1
route add -host 127.0.0.1 lo

La primer línea establece la dirección IP del interfaz como 127.0.0.1, esta


es una dirección que se ha asignado por convención para este interfaz. La
segunda línea establece una ruta a seguir para localizar al interfaz.
2.3.2.2. Dispositivos de red físicos

Una vez configurado el interfaz local se deben configurar todos los


interfaces físicos con que se cuente. Para darlos de alta se deben seguir los
pasos que se mencionaron en la parte 1. Habiendo decidido cual será la
dirección IP que el interfaz empleará y la máscara de subred, los comando a
emplear para establecer los parámetros de operación son:
/sbin/ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
/sbin/route add -net 192.168.1.0 netmask 255.255.255.0 eth0

El primer renglón establece la dirección IP para el interfaz como la


192.168.1.10 con una máscara de red 255.255.255.0. Al final de este renglón
notamos la palabra "up" que indica que el interfaz deberá ser activado

Linux Soluciones Integrales 40 de 72


Curso de Redes

(levantado). En el segundo renglón se añade la ruta a la red a la que el interfaz


pertenece. El parámetro "-net" indica que lo que se está agregando a la tabla de
ruteo es la ruta a otra red, en este caso la 192.168.1.0 y que es alcanzada a
través del interfaz "eth0".

2.3.2.3. Ruteador por defecto

Del mismo modo como especificamos la ruta por la que tenemos acceso
a nuestra red local y a través de que interfaz podemos alcanzarla, podríamos
dar de alta las rutas a todas las subredes en Internet, sin embargo, esto sería en
extremo difícil y muy seguramente propenso a errores.

La solución a este problema es dejar el trabajo a ruteadores


especializados, y simplemente cuando se trata de comunicarse a una subred
desconocida, pedirle al ruteador que se encargue de encaminar los mensajes.
Para establecer el ruteador por defecto se debe ejecutar el siguiente comando:
/sbin/route add default gw 192.168.1.1 eth0

La línea anterior indica que se agregará como ruteador por defecto aquel
identificado con la dirección 192.168.1.1 y que es localizado a través del interfaz
"eth0".

2.3.2.4. Definiciones de interfases y clientes

Una vez dados de alta los interfaces de red, debemos hacer las
declaraciones de los mismos, así como de otros interfaces o computadoras en
la red. El archivo "/etc/hosts" contiene esta información y deberá ser modificado
con cualquier

2.3.2.5. El servidor de nombres de dominio

Como se vió con anterioridad el servidor de nombres de dominio se


encarga de traducir los nombres a la dirección IP correspondiente. En el archivo
"/etc/resolv.conf" se encuentran contenidas las definiciones para el dominio de
Internet por defecto al que el equipo pertenece, las direcciones IP de servidores
de nombres disponibles en esa subred u otra que pueda ser alcanzada y
dominios de búsqueda de nombres alternos.

Tanto el dominio por defecto como los adicionales se emplean para


formar un nombre completo; esto es, si hacemos referencia al nombre de un
equipo sin indicar el dominio al que pertenece, se agregará a este nombre el
dominio por defecto y los adicionales para obtener un nombre completo y
realizar así la búsqueda. El contenido típico de este archivo es:
domain linux-si.com
nameserver 192.168.100.1
search otrodom.com

Linux Soluciones Integrales 41 de 72


Curso de Redes

2.3.2.6. Orden de búsqueda de nombres

El archivo "/etc/host.conf" indica el órden de búsqueda de los nombres de


dominio y su contenido es algo como:
order hosts,bind

La línea nos indica que primero se deberán buscar los nombres de


clientes en el archivo "/etc/hosts" y si no son encontrados ahí, que se solicite al
servidor de nombres los resuelva.

Linux Soluciones Integrales 42 de 72


Curso de Redes

4. Ruteo

TCP/IP funciona bastante bien en una LAN, pero su desarrollo fué


impulsado para las interredes y más específicamente para Internet, por lo que
es lógico que tenga una arquitectura que funcione bien en operaciones de
interred.

Rutear es en sí el proceso por el que un ruteador con múltiples


conexiones a diferentes redes, decide a donde enviar los datagramas que
arriban a él. Cada ruteador contiene una tabla de reglas que le indican los
caminos por donde llevarlos de acuerdo a sus direcciones destino.

En Linux el comando route se emplea para agregar, eliminar y listar rutas.


Un uso típico de este comando y su salida sería:
[usuario@linux-si /]$ /sbin/route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface


192.168.100.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.1.102 0.0.0.0 255.255.255.255 UH 0 0 0 eth1
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth1

La primer columna indica una dirección destino, que puede ser un cliente,
una red o cualquier destino.

La segunda indica el ruteador a través del que ese destino puede ser
alcanzado; si es 0.0.0.0 indica que no se ha establecido ningun ruteador para
ese destino y se supone que puede ser alcanzado directamente por el interfaz
indicado en la última columna.

La tercer columna indica la máscara de red a utilizar para filtrar paquetes


a esa ruta. Si es una máscara de 32 bits indicará que el destino es un cliente; si
es de 24, que el destino es una red clase "C", si es de 16, que es una red clase
"B" y si es de 8, una red clase "A".
La cuarta columna da a conocer mediante un grupo de indicador si la ruta
está activa "U", si es una ruta a un cliente "H", si es una ruta de red (sin
indicador), si usa un ruteador "G", o si es dinámica "D" entre otras.

La quinta columna indica la distancia en "hops" (saltos) hasta el destino.


A pesar de que no se emplea en Kernels recientes se ha dejado para uso de
Linux Soluciones Integrales 43 de 72
Curso de Redes

algunos programas de ruteo.

La sexta columna indica el número de referencias hechas a la ruta. No es


usada por el Kernel de Linux, se ha dejado por compatibilidad y portabilidad.

La septima columna indica el número de veces que esta ruta se ha


solicitado para revisión. Se usa para fines estadísticos y requiere del uso de
modificadores especiales del comando route para obtener resultados válidos.

La última columna indica el interfaz de red a través del que se alcanza


esta ruta.

En el establecimiento de los parámetros de operación de un cliente de


red (no un ruteador) se declaran la dirección del interfaz local (lo), el interfaz de
red (eth0, tr0, etc.), la ruta a la red que puede ser alcanzada a través del mismo,
el servidor de nombres y el ruteador por defecto, todos con sus máscaras de red
apropiadas.

Cuando se le asigna a un interfaz de red una dirección IP y su máscara,


es capaz de determinar el segmento de red que puede alcanzar a través del
mismo. El objetivo del ruteador por defecto es el de tener un lugar a dónde
enviar los paquetes que no pertenecen a la red local.

Por ejemplo, si se establece la dirección del interfaz como la


192.168.6.56 y es una clase "C" entonces la máscara de red será
255.255.255.0, dándo un rango de direcciones que van de la 192.168.56.0
hasta la 192.168.56.255; cualquier paquete que trate de salir del cliente y
pertenezca a esta red será enviado a su destino sin problema alguno.

Sin embargo, si se trata de enviar un paquete a otra red y no se tiene


alguna regla que establezca el interfaz por el que se puede alcanzar a esta red
foránea, se le envía al ruteador por defecto de la red local.

Linux Soluciones Integrales 44 de 72


Curso de Redes

4.1. Ejemplo de ruteo


Para entender mejor el ruteo se empleará un ejemplo utilizando tres
redes interconectadas entre sí como se muestra en la figura 29.

ROUTER 1 ROUTER 3

192.168.99.0
192.168.102.0
ROUTER 2

INTERNET
192.168.101.0

Figura 29. Ejemplo de ruteo

En forma adicional, el ruteador 1 se encuentra conectado a internet y


deberá hacer las veces de un proxy, cuya operación y configuración se tratarán
más adelante.

Antes de comenzar a establecer las rutas necesarias, hay que considerar


que cada ruteador tendrá al menos dos interfases de red, uno para comunicarse
a su red local y el otro para comunicarse con un ruteador adyacente. Nótese
que los ruteadores 1 y 2 ambos poseen tres interfases de red, mientras que el 3
sólo dos.

Para agregar las rutas apropiadas podemos utilizar al linuxconf en la


subopción Rutas a otras redes de la opción Rutas y Gateways. Al oprimir el
botón Agregar una nueva ventana aparece, solicitando los datos de la nueva
ruta que son:
Gateway - La dirección del ruteador através del que se puede alcanzar
dicha red

Destino - La dirección de la red para la que se está agregando la ruta

Másca - La máscara de red

Desde la línea de comando se añadiría la ruta con el comando route, por


ejemplo:
/sbin/route add -net 192.168.99.0 gateway 192.168.101.253

Linux Soluciones Integrales 45 de 72


Curso de Redes

El simple hecho de agregar las rutas no garantiza que los paquetes serán
encaminados apropiadamente, es impresindible activar la función de ruteo de
Linux de la siguiente forma:
echo "1" > /proc/sys/net/ipv4/ip_forward

El "archivo" referido es realmente un "interruptor" para habilitar y


deshabilitar el ruteo y es obvio pensar que un "0" lo deshabilita.

Esta operación se agrega en alguna parte del archivo /etc/rc.d/rc.local,


usualmente al final. En Red Hat, el archivo /etc/sysctl.conf se lee durante el
arranque y la directiva net.ipv4.ip_forward puede ser puesta a 1 para activar el
paso de paquetes desde el arranque.

Existen enlaces punto a punto entre cada ruteador. Se considerarán de


tipo ethernet los enlaces entre los ruteadores 1 y 2, y entre los ruteadores 2 y 3.
El enlace entre el ruteador 1 e Internet es de tipo ppp y como ya se mencionó se
tratará más adelante. Cada enlace tiene su propia subred.

4.1.1. Configuración de la red 192.168.102.0

Ruteador

Supondremos que los interfases de red son eth0 y eth1, y que les fueron
asignadas respectivamente las direcciones 192.168.102.254 y 10.0.0.254. Las
rutas que deberá tener asignadas son:
[usuario@router3 /]$ /sbin/route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface


192.168.102.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
10.0.0.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth1
192.168.102.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
192.168.101.0 10.0.0.253 255.255.255.0 UG 0 0 0 eth1
0.0.0.0 10.0.0.253 0.0.0.0 UG 0 0 0 eth1

Observamos las dos rutas directas a cada interfaz y las rutas a cada red
en los primeros cuatro renglones, inmediatamente después la ruta a la red del
interfaz local, la ruta a la red adyacente y al final el ruteador por defecto para
este ruteador, que es su vecino más próximo.

Clientes

Para el cliente la situación es más simple, tan sólo debe conocer la


dirección IP de su interfaz, máscara de red, ruta a la red local y quien es su
ruteador por defecto. Las rutas apropiadas serían:
[usuario@ws1 /]$ /sbin/route -n

Linux Soluciones Integrales 46 de 72


Curso de Redes
Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface


192.168.102.18 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.102.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.102.254 0.0.0.0 UG 0 0 0 eth0

Flujo de datagramas

Cuando alguna aplicación de alguno de los clientes de la red local envía


un datagrama este es llevado a la tabla de ruteo de la propia computadora. Si la
dirección destino de éste pertenece a la red local, es arrojado a la misma por
medio de su único interfaz; en caso contrario, se revisan las demás rutas
disponibles para tratar de elegir un camino por donde llevarlo. Si la tabla de
ruteo no especifica camino alguno, el cliente lo envía al ruteador de la red para
que él se encarge de encaminarlo.

Al momento en que el ruteador 3 recibe un datagrama proveniente de


uno de los clientes de su red, verifica su dirección destino; si pertenece a la
adyacente (192.168.101.0) lo encamina por medio del interfaz eth1; si no, lo
envía a su ruteador por defecto, en este caso 10.0.0.253 apoyándose en el
mismo interfaz. Este último ruteador será el encargado de encaminarlo hacia
otra red y así sucesivamente.

4.1.2. Configuración de la red 192.168.101.0

Ruteador

En este caso tendremos un ruteador que tiene tres interfases de red, uno
para enlazarse con la red 192.168.102.0, otro para enlazarse con su red local y
otro para enlazarse a la red 192.168.99.0.

Los interfases serán eth0, eth1 y eth2 y tendrán asignadas las


direcciones 10.0.0.253, 192.168.101.254 y 10.0.1.254 respectivamente.Las
rutas que deberá tener asignadas son:
[usuario@router2 /]$ /sbin/route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface


10.0.0.253 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.101.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth1
10.0.1.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth2
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.102.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
192.168.102.0 10.0.0.254 255.255.255.0 UG 0 0 0 eth0
192.168.99.0 10.0.1.253 255.255.255.0 UG 0 0 0 eth2
0.0.0.0 10.0.1.253 0.0.0.0 UG 0 0 0 eth1

Clientes

Linux Soluciones Integrales 47 de 72


Curso de Redes

Al igual que para la red anterior el cliente requiere sólo de la información


básica. Si no se desea declarar un ruteador por defecto, sino, más bien decirle
como llegar a las redes adyacentes se establecerían las siguientes rutas:
[usuario@ws2 /]$ /sbin/route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface


192.168.101.50 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.101.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
192.168.102.0 192.168.101.254 255.255.255.0 UG 0 0 0 eth0
192.168.99.0 192.168.101.254 255.255.255.0 UG 0 0 0 eth0

Flujo de datagramas

El principio de encaminamiento de datagramas descrito con anterioridad


se aplica de nuevo en este caso. Sin embargo, observando la tabla de ruteo del
cliente notamos que sólo puede alcanzar dos subredes distintas a la suya y que
lo hace por medio del ruteador de su propia red; datagramas destinados a redes
no enlistadas no podrán ser encaminados y se generaría el error: network
unreachable (red inaccesible).

4.1.3. Configuración de la red 192.168.99.0

Ruteador

El ruteador de esta red tendrá tres interfases también, dos de tipo


ethernet y una de tipo ppp. Las dos primeras se emplearán para conectarse a la
red local (eth0) y la red adyacente 192.168.101.0 (eth1); la última se empleará
para realizar un enlace telefónico para el proveedor de Internet. Establecemos
para el eth0 la dirección IP 192.168.99.254 y para el eth1 la dirección
10.0.1.253. Las rutas asignadas serán entonces:
[usuario@router3 /]$ /sbin/route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface


192.168.99.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
10.0.1.253 0.0.0.0 255.255.255.255 UH 0 0 0 eth1
192.168.99.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
192.168.101.0 10.0.1.254 255.255.255.0 UG 0 0 0 eth1
192.168.102.0 10.0.1.254 255.255.255.0 UG 0 0 0 eth1

El ruteador por defecto no se especifica, ya que será el interfaz ppp con


salida a internet.

Clientes

Para esta subred, la configuración de ruteo de los clientes considerando


a un ruteador por defecto quedaría como sigue:

Linux Soluciones Integrales 48 de 72


Curso de Redes

[usuario@ws3 /]$ /sbin/route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface


192.168.99.65 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.99.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.99.254 0.0.0.0 UG 0 0 0 eth0

Flujo de datagramas

Al igual que antes los datagramas son encaminados de acuerdo a su


destino. Como aún no se ha habilitado la salida a Internet, datagramas
destinados a redes diferentes a las conocidas generarán el error: network
unreachable (red inaccesible).

Linux Soluciones Integrales 49 de 72


Curso de Redes

6. Conectividad con Windows 3.11/95/98/2000/ME/NT/XP

Todas las versiones de Windows emplean el mismo protocolo para


compartir archivos e impresoras. Este protocolo es conocido como NetBIOS,
LanManager, Server Message Block ó Session Message Block y que se
abrevia también como SMB.

Linux tiene una suite de aplicaciones que le permiten comunicarse con


Windows empleando el mismo protocolo. Esta es conocida como Samba. Junto
con las herramientas para el smbfs permite a Linux montar y compartir
directorios con las diferentes versiones de Windows. Además cuenta con
funciones avanzadas que le permiten emular a un servidor NT.

Existen básicamente cuatro funciones que Linux puede hacer cuando se


cuenta con la suite de Samba y las mencionadas herramientas:

• Compartir un directorio de Linux a Windows


• Compartir un directorio de Windows a Linux
• Compartir una impresora de Linux a Windows
• Compartir una impresora de Window a Linux

Un punto de importancia para usuarios de Windows 3.11 es que deben


instalar el WinSock para poder conectarse a recursos compartidos de Linux.

La suite de Samba incluye diversos programas y archivos para realizar


las funciones que se indicaron anteriomente. Estos son:
/etc/smb.conf - Es el programa de configuración principal. En él se
declaran todos los servicios compartidos o shares, se establecen permisos de
acceso, validación de contraseñas, se especifica el grupo de trabajo, etc. Ésta
será tratada con detalle posteriormente.

/usr/bin/testparm - Este programa se emplea para verificar que la


configuración establecida en el archivo /etc/smb.conf sea correcta.

/etc/smbpasswd - El protocolo SMB puede operar con contraseñas


normales y encriptadas. Este archivo contiene a los usuarios registrados y sus
contraseñas para acceso al sistema através del Samba. Cabe notar que un
usuario puede estar dado de alta en el sistema, pero no tendrá acceso a él
através del Samba si no aparece listado en este archivo

Linux Soluciones Integrales 50 de 72


Curso de Redes

/usr/bin/smbpasswd - Este programa permite cambiar las contraseñas


de usuarios de Samba desde la línea de comando.

/usr/sbin/smbd - Es el daemon que provee los servicios de compartir


archivos e impresoras a clientes de Windows. Este servidor provee los servicios
para clientes que utilizan el protocolo SMB (también llamado CIFS), que es
compatible con el protocolo LanManager, MSCLIENT 3.0 para DOS, WfW,
Windows 9x/2000/NT/ME, OS/2, DAVE para Macintosh y smbfs para Linux.

Cuando un cliente desea establecer contacto con el servidor smbd, éste


lanza una copia de sí mismo para atender al cliente en todas las conexiones
pertinentes a ésa sesión. Cuando el cliente termina la sesión la copia del
servidor desaparece.

/var/log/samba/log.smb - Archivo que guarda una bitácora de las


actividades del /usr/sbin/smbd.

/usr/sbin/nmbd - Es un daemon servidor que puede entender y


responder a requisiciones de nombres de NetBIOS sobre IP. Este proceso
servidor es el que identifica al equipo en la red SMB y toma por defecto el
nombre del propio equipo (localizado en el archivo /etc/HOSTNAME). Este
programa puede ser usado también como un servidor WINS (Windows Internet
Name Server - servidor de nombres de internet para Windows).

/var/log/samba/log.nmb - Este archivo almacena una bitácora de las


actividades del /usr/sbin/nmbd.

/var/log/samba/samba-log.?? - Cada vez que se lanza una copia del


smbd para atender a un cliente, éste genera un archivo de bitácora para el
equipo desde donde la conexión se realiza. Si el archivo ya existe, simplemente
se anexa al final del mismo las nuevas actividades. Los símbolos "??" se
reemplazan por el nombre de NetBIOS del equipo remoto. En el archivo
smb.conf es posible determinar diferentes niveles de depuración, lo que genera
una bitácora muy simplificada o una muy detallada. Es posible, por ejemplo,
registrar qué usuario se conecta desde ese equipo y qué hora, qué archivos
abre y a qué hora, cuáles abre para lectura, cuales para escritura y a qué hora,
qué archivos ó servicios trató de accesar y si el permiso fué concedido ó
denegado, etc.

/usr/bin/smbclient - Este programa permite conectarse a una


computadora en Windows de forma similar a un ftp. Con él se puede realizar
una transferencia bidireccional simple de archivos.

/usr/bin/smbmount - Similar al programa mount facilita el montaje de


unidades de disco compartidas por equipos que operan bajo Windows en
directorios de Linux. Una vez montado un directorio remoto se puede emplear
como cualquier otro.

/usr/bin/smbumount - La contraparte del smbmount y permite


desmontar unidades remotas de Windows del sistema de archivos de Linux.
Linux Soluciones Integrales 51 de 72
Curso de Redes

6.1. Configuración del Samba


Como se estipuló con anterioridad el archivo smb.conf guarda la
configuración del Samba. Este se divide en dos partes principales: la de
declaraciones globales y la de declaraciones individuales.

En este punto se tratarán los parámetros más comúnmente empleados y


que funcionan en la mayoría de los casos. Información detallada sobre todos los
que el smb.conf soporta pueden ser encontrados en el manual del mismo.

En el caso típico el archivo de configuración debería contener por lo


menos:
[global]
encrypt passwords = yes
workgroup = LINUX
comment = Linux Samba Server

printing = bsd
printcap name = /etc/printcap
load printers = yes

log file = /var/log/samba/samba-log.%m


max log size = 50

short preserve case = yes


preserve case = yes
default case = lower

locking = yes
lock directory = /var/lock/samba
security = user

socket options = TCP_NODELAY

Entre corchetes aparece la declaración global. Esta indica que la sección


a la que los siguientes parámetros afectarán será la de opciones globales.

A continuación se tratará cada uno de los parámetros especificados y se


dará una breve descripción de los mismos:

encrypt passwords = yes - Antes hablar de este parámetro debemos


conocer algo de historia:

En los inicios de Windows, cuando el protocolo SMB comenzó a


desarrollarse con Windows para trabajo en grupos, las constraseñas de los
usuarios eran transmitidas en forma "natural" a través de la red; esto es, sin
encriptación.

Linux Soluciones Integrales 52 de 72


Curso de Redes

Desde Windows 95 éstos se empezaron a encriptar y a transmitir de ésta


forma desde los clientes, sin embargo, las soportaban sin encriptación también.
A patir del Service-Pack No. 3 de Windows NT y Windows 98, las contraseñas
sólo son transmitidas en forma encriptada.

Cuando un servidor Samba va a ser empleado en una red donde los


clientes son sólo equipos operando en WfW y/o Windows 95 versión 1, no hace
falta habilitar las contraseñas encriptadas. Sin embargo, si al menos un equipo
emplea Windows 95 versión 2 ó Windows 98/NT/ME/2000, será necesario
habilitar la encriptación de contraseñas. El Samba tiene la capacidad de
reconocer contraseñas naturales y encriptadas aún cuando este parámetro
indique que sólo se empleen las últimas.

workgroup = LINUX - Este parámetro permite especificar a qué grupo de


trabajo pertenecerá el Samba.

comment = Linux Samba Server - Cuando en Windows se le pide al


explorador de red mostrar los detalles de un equipo, esta información es
desplegada como el nombre completo del equipo.

printing = lprng - Este parámetro determina como se interpreta la


información que los clientes envían para impresión. Un valor generalmente
aceptable es el de "lprng". Las funciones de impresión están fuera del alcance
de este estudio.

printcap name = /etc/printcap - Este parámetro indica cuál es el archivo


que contiene la información concerniente a las impresoras disponibles en el
sistema.

load printers = yes - A manera de un "interruptor" general, éste parámetro


indica si se va a habilitar el módulo de impresión para clientes en Windows.

log file = /var/log/samba/samba-log.%m - Especifica el nombre del archivo


de bitácora que se llevará por cada equipo que se conecta al sistema. "%m"
especifica que la extensión que se le designe al archivo dependa del nombre del
equipo que se conecta al sistema; por tanto, se tendrá un archivo de bitácora
por cada equipo que interactúe con el sistema.

max log size = 50 - Indica el tamaño máximo en kilobytes que alcanzarán


los archivos de bitácora. Los archivos son continuamente monitoreados y
cuando alguno excede esta cantidad es automáticamente renombrado
anexándole la extensión ".old".

short preserve case = yes - Este parámetro controla como se maneja el


contexto de los nombres de archivo que se apegan a la sintaxis 8.3 de DOS.
Cuando se establece como "yes" se conserva y si está en "no" indica que se
empleará el contexto indicado por defecto.

preserve case = yes - Indica si se conservará el contexto de los nombres


Linux Soluciones Integrales 53 de 72
Curso de Redes

de los archivos creados ("yes") ó si se les cambiará al especificado por defecto


("no").

default case = lower - Indica el contexto por defecto que recibirán los
nombres de archivos y directorios que sean creados.

locking = yes - Es posible con Samba limitar el número de conexiones


que se realizan a los recursos compartidos. Con este parámetro se habilita este
control.

lock directory = /var/lock/samba - En este directorio se guardan los


"seguros" empleados para controlar el número máximo de conexiones
realizadas a los diferentes recursos cuando esta opción está habilitada.
security = user - Este parámetro especifica el nivel de seguridad a
emplear en los servicios compartidos. Cuando los usuarios de Windows y sus
contraseñas son los mismos que en Linux la opción ideal es "user". Cuando los
usuarios de Windows no necesariamente existen en Linux o se desea dar
acceso a usuarios "invitados" la opción ideal es "share".

La diferencia fundamental entre ambas es que para una seguridad a nivel


de usuario, el acceso a los recursos se realiza después que el sistema se ha
registrado (login) en el servidor; mientras que para una seguridad a nivel de
recurso compartido, el cliente, cuando desea accesar a un recurso compartido
envía para él información de autenticación.

socket options = TCP_NODELAY - Este parámetro particularmente se


emplea para hacer un "ajuste fino" de la operación del Samba, con el fin de
obtener el mayor rendimiento. El valor típico y que se toma también por defecto
si no se usa esta opción es el de "TCP_NODELAY", apropiado para una red de
área local. Si, por ejemplo, se va a operar en una red de área amplia tal vez
habrá que agregar o modificar el valor asignado a este parámetro.

6.2. Manejo de Usuarios


Como se había analizado con anterioridad, en un archivo especial se
almacenan las contraseñas que emplea el Samba para los clientes en Windows.
Un usuario de Linux no puede tener acceso a los recursos compartidos si no
aparece listado en este archivo.

Cuando el servicio de Samba se levanta por primera vez probablemente


este archivo no exista y sea creado con el primer usuario dado de alta. Sin
embargo, si ya había usuarios de Linux dados de alta con anterioridad, se
emplea un programa especial que genera el archivo de contraseñas para el
Samba a partir del archivo de contraseñas de Linux.

Cabe notar que tan sólo se genera el archivo incluyendo los nombres de
los usuarios y no sus respectivas contraseñas; por tanto, será indispensable que

Linux Soluciones Integrales 54 de 72


Curso de Redes

empleando el comando apropiado se actualicen.

6.2.1. Generación del archivo de contraseñas a partir del de Linux

Este es un paso muy simple. En Unix el archivo /etc/passwd contiene la


lista de usuarios del sistema y sus respectivas contraseñas. Empleando el script
/usr/bin/mksmbpasswd.sh se crea el archivo /etc/smbpasswd de la siguiente
forma:
cat /etc/passwd | /usr/bin/mksmbpasswd.sh > /etc/smbpasswd

6.2.2. Como agregar usuarios al archivo de contraseñas

Empleando el comando smbadduser se agregan usuarios al final del


archivo /etc/smbpasswd. En la línea de comando se especifican como
parámetros pares de nombres de Linux y su correspondiente nombre en
Windows; por tanto, no es indispensable que se deba tener el mismo login en
Linux como en Windows. Cuando se ejecuta este comando se verifica La
sintaxis de este comando es:
smbadduser <usuario unix>:<usuario windows>

En el ejemplo siguiente se supone que se empleará el mismo login tanto


para Linux como para Windows para el usuario "usuario":
smbadduser usuario:usuario

6.2.3. Cambio de contraseñas

El cambio de contraseñas en Windows es relativamente simple, el


usuario accede al panel de control selecciona el icono de contraseñas y realiza
el cambio sin mayor problema.
Desafortunadamente este cambio se realiza en el equipo cliente y no en
el servidor. Debido a la situación anterior, ahora el usuario cuenta con una
nueva contraseña en su equipo, pero no en el servidor.

La contraseña en éste último debe ser cambiada por el usuario en


cuestión (desde la consola o abriendo una sesión telnet) ó el administrador del
servidor empleando el comando /usr/bin/smbpasswd de la siguiente forma:
smbpasswd <usuario>

Donde obviamente el parámetro <usuario> corresponde al login del


usuario al que se desea cambiar el nombre. Si es el mismo usuario que se
registró en Linux (desde la consola o por telnet) se puede omitir este parámetro
y por defecto cambiará el propio.

Linux Soluciones Integrales 55 de 72


Curso de Redes

6.3. Monitoreo de Conexiones


Una herramienta muy útil con la que la suite del Samba cuenta es el
programa /usr/bin/smbstatus, que le permite monitorear la actividad de los
clientes de Windows que se encuentran conectados al sistema.

La información que provee es el nombre del recurso compartido que está


siendo utilizado; el nombre del usuario y su grupo (con respecto a Linux) el PID
(process identification - identificación del proceso) que atiende la conexión; el
nombre de NetBIOS del equipo desde donde la conexión se realiza; la dirección
IP de dicho equipo y la fecha y hora en que la conexión se efectuó.

La salida típica obtenida como resultado de la ejecución de este comando


se muestra acontinuación:
Samba version 2.0.7
Service uid gid pid machine
----------------------------------------------
cdrom rmercado users 27971 win98 (192.168.100.5) Thu May 3 22:05:33 2001
rmercado rmercado users 27971 win98 (192.168.100.5) Thu May 3 22:05:43 2001
linux-si rmercado users 27971 win98 (192.168.100.5) Thu May 3 22:05:50 2001
rmercado rmercado users 27971 win98 (192.168.100.5) Thu May 3 22:06:01 2001
tmp rmercado users 27971 win98 (192.168.100.5) Thu May 3 22:06:08 2001
windows rmercado users 27971 win98 (192.168.100.5) Thu May 3 22:06:18 2001
No locked files
Share mode memory usage (bytes):
1048464(99%) free + 56(0%) used + 56(0%) overhead = 1048576(100%) total

6.4. El SWAT - Samba Web Adminitration Tool


Para facilitar las labores de mantenimiento de los recursos compartidos
por Samba y sus usuarios se cuenta con esta poderosa herramienta, que desde
un simple navegador permite acceder a una serie de páginas y formas
realizadas en html y através de ellas y los CGIs correspondientes permiten
realizar las actividades anteriomente mencionadas.

Cada vez que se intenta realizar una conexión a un sistema en Linux un


daemon especial monitorea dichos intentos y determina si el cliente puede tener
acceso al servicio solicitado. Una vez que se ha realizado la autorización, éste
daemon (xinetd) ejecuta al programa que da el servicio en cuestión. El xinetd
emplea un directorio donde se determinan los diferentes servicios y los
programas que los sirven. Este directorio es el /etc/xinetd.d.

El SWAT no viene por defecto habilitado y para permitir su ejecución se


debe editar el archivo correspondiente (swat). El contenido de dicho archivo es
como sigue:
# default: off
# description: SWAT is the Samba Web Admin Tool. Use swat \
# to configure your Samba server. To use SWAT, \
# connect to port 901 with your favorite web browser.

Linux Soluciones Integrales 56 de 72


Curso de Redes
service swat
{
disable = yes
port = 901
socket_type = stream
wait = no
only_from = 127.0.0.1
user = root
server = /usr/sbin/swat
log_on_failure += USERID
}

La línea disable=yes indica que el servicio está deshabilitado. Habrá que


cambiar el yes por no para habilitarlo. La línea port=901 indica el puerto de TCP
donde el servicio escucha. La línea only_from=127.0.0.1 es una medida de
seguridad; esto es, sólo el propio equipo podrá utilizar el servicio ya que la única
dirección válida es la de localhost. Si es necesario, se pondrán separadas por
un espacio otras direcciones IP a las que se les autorizará conectarse al
servicio.
Sin embargo esto no es suficiente además hay que enviar una señal al
xinetd para informarle que lea nuevamente sus archivos de configuración y
reconozca al nuevo servicio. La señal necesaria es la de HUP (hang-up) y se
envía de la siguiente forma:
kill -HUP <inetd pid>
Para encontrar el identificador del proceso del inetd se puede teclear la
siguiente secuencia de comandos:
ps uax | grep inetd

Otra forma de hacerlo es empleando al programa “service” de la siguiente


forma:
/sbin/service xinetd reload

El acceso al swap es muy simple, tan sólo hace falta abrir el Netscape o e
IE (en Windows) y en la línea del URL teclear:
<IP del servidor>:901

En la figura 40 se muestra la ventana principal del SWAT. El interfaz que


ofrece al usuario es muy simple e intuitivo, similar al de un sitio web; incluso
provee de ayudas para las diferentes secciones.

Linux Soluciones Integrales 57 de 72


Curso de Redes

Figura 40. Ventana principal del SWAT

6.5. Ejemplos de Servicios Compartidos


Además de establecer las opciones de operación global del Samba, hay
que indicar el comportamiento del mismo para los recursos compartidos en
forma individual. En las proximas secciones se tratarán los casos más comunes
y algunos especiales.

6.5.1. Directorios "Home"

Todo usuario en Linux puede accesar a su directorio de trabajo desde un


equipo que opera en Windows. De hecho, cuando un usuario de Linux se
registra en un equipo en Windows empleando el mismo login y contraseña, al
explorar el entorno de red encontrará al servidor Samba; al hacer doble-click
sobre éste se despliega un listado de los recursos que comparte y entre ellos
aparece una carpeta con el nombre del usuario.

De esta manera el usuario puede emplear en ambos ambientes sus


mismos archivos. Cabe notar que aún cuando los archivos pueden ser
accesados en los dos sistemas, no indica que los de uno se puedan ejecutar en
el otro y visceversa.

La declaración típica para este servicio y que se debe incluir en el archivo


de configuración principal es:
Linux Soluciones Integrales 58 de 72
Curso de Redes

[homes]
comment = Home Directories
browseable = yes
read only = no
create mode = 0750

Entre corchetes se indica el nombre del servicio compartido, que en este


caso representa a los directorios de cada usuario.

La directiva comment provee de la información que se desplegará en


Windows cuando se le solicite ver detalles.

La directiva browseable=yes indica que al hacer doble-click en el icono


del equipo, éste recurso aparecerá listado.

La directiva read only=no indica que el recurso tiene permiso de lectura


y escritura.

La directiva create mode=0750 establece los permisos que se asignarán


en Linux a los archivos creados desde Windows (en este caso: rwx-r-x---).

6.5.2. Directorios Públicos

Un caso común es tener un directorio compartido para todos los usuarios,


en al que cualquiera puede acceder, como en el caso de una unidad compartida
de CDROM. La definición para tal servicio sería:
[cdrom]
comment = CDROM del Servidor
browseable = yes
read only = yes
path = /mnt/cdrom
public = yes

En este caso la directiva read only fué establecida con el valor yes,
indicando que es un recurso de sólo lectura.

Se agregó también la directiva path=/mnt/cdrom, la cual indica la ruta de


acceso en Linux a este recurso.

Por último se especificó por la directiva public=yes, que éste es un


servicio público; es decir, que todos los usuarios válidos para Samba tienen
acceso al mismo.

6.5.3. Directorios Ocultos

Ocasionalemente es necesario compartir algún recurso para algunos


usuarios pero que no se desea que el resto de ellos lo conozcan.

Linux Soluciones Integrales 59 de 72


Curso de Redes

Con un atributo especial, se le ordena al Samba que no incluya en la lista


de recursos compartidos enviada a un cliente (solicitada por el cliente cuando se
explora al servidor con Samba) a determinados servicios.

Aún cuando el recurso no es desplegado, si se hace referencia a él


directamente, es posible accesarlo. Un ejemplo de este caso sería:

[oculto]
comment = Directorio Oculto del Servidor
browseable = no
read only = no
path = /usr/local/oculto

Se observa que la directiva browseable tiene asignado el valor no, el


cual indica que éste recurso no será visualizado cuando se explore al servidor
con Samba.

6.5.4. Directorios Privados

Así como hay veces que es necesario esconder algunos servicios,


algunas otras requieren de aún mayor seguridad. Con Samba se pueden tener
recursos compartidos sólo a grupos de usuarios.

Los grupos de usuarios pueden aparecer en una lista separados por


espacios o bien indicando el grupo (de Linux) al que pertenecen. Más aún, es
posible indicar cuáles de éstos últimos tienen derechos de lectura y cuáles de
lectura y escritura. Un ejemplo de un recurso configurado de tal forma se
muestra a continuación:
[work]
valid users = juan fidel mario michelle
comment = Directorio privado
browseable = no
read only = no
create mode = 0770
write list = juan mario
path = /usr/local/privado

Observando la directiva valid users se determina cuáles usuarios


pueden tener acceso a dicho recurso.

La directiva create mode ha sido modificada indicando ahora que cuando


algún usuario de los listados cree un archivo dentro de éste recurso tendrá los
siguientes permisos de Linux: rwxrwx---, logrando así que dichos usuarios
tengan permisos de acceso total para su grupo.

Con la directiva write list se especifican cuáles usuarios podrán escribir


dentro del recurso, sin importar que todos tengan los mismos derechos.

Linux Soluciones Integrales 60 de 72


Curso de Redes

Cabe notar que éste nivel de seguridad es proporcionado por Samba. Si


un usuario sin derecho de escritura realiza una conexión por telnet al servidor y
accede a éste directorio podría leer y escribir sin restricciones debido a los
permisos asignados al mismo.

6.5.5. Directorios con Atributos Especiales

Para solucionar el problema que se presenta en el caso anterior se


emplea el atributo especial T de Unix, también llamado sticky.

Cuando un directorio tiene habilitado este atributo, permite que todos los
usuarios del grupo ó cualquier usuario puedan leer y escribir en el mismo, pero
que sólo los dueños puedan modificar o borrar sus propios archivos.

6.5.6. Notas adicionales

Es muy importante tener en cuenta que todas las directivas de acceso


mencionadas anteriomente sólo son a nivel de Samba. Linux provee también
de permisos de acceso a sus directorios en base a usuarios y grupos de los
mismos.

Por tanto podemos decir que existen dos niveles de seguridad para los
usuarios que acceden al servidor desde una estación de trabajo en Windows: el
primero provisto por Samba y el segundo provisto por Linux. Ambos deben ser
manipulados adecuadamente para obtener los resultados deseados.

En este estudio se muestran un porcentaje muy pequeño de todas las


directivas con las que cuenta Samba. Información detallada de todas ellas se
encuentra contenida en la página del manual del archivo /etc/smb.conf.

6.6. Montaje de directorios de Windows en Linux


Ya que Samba puede compartir recursos de Linux a estaciones de
trabajo en Windows, debe existir un medio para hacerlo en forma inversa. La
herramienta que nos lo dá es el /usr/bin/smbmount. La sintaxis de este
comando es como sigue:
smbmount servicio punto_de_montaje [ -o opciones]

El servicio es el nombre de NetBIOS del equipo al que se va a conectar


más el nombre del recurso compartido en el mismo. Por ejemplo, si una
estación de trabajo en Windows se llama Bodega y el recurso al que se desea
conectar se llama Inventario, la ruta en NetBIOS sería: \\Bodega\Inventario. El
parámetro a utilizar sería:
\\\\bodega\\inventario

Se observa que se sustituye el símbolo "\" se sustituye por uno doble.

Linux Soluciones Integrales 61 de 72


Curso de Redes

Esto es necesario debido a que el símbolo "\" es un caracter de escape especial


empleado por la shell de Linux y es necesario "escaparlo". Incluso los nombres
del equipo y el recurso se escribieron en minúsculas; NetBIOS no hace
distinción entre unas u otras.

El punto de montaje es el directorio de Linux al que el recurso de


Windows quedará "conectado".

Si no se especifica opción adicional con el parámetro -o, el smbmount


empleará el nombre de usuario de Linux para tratar de conectarse a la estación
de trabajo en Windows. Si el recurso compartido en esta última requiere de
contraseña, será inmediatamente solicitada.

Los parámetros que se pueden incluir en la línea de comando permiten


forzar ciertas opciones de montaje. Estos son especificados en pares separados
por comas. A continuación se describirán los más comúnmente empleados. En
la página del manual del smbmount se listan y detallan todos ellos.

username=<valor> - Establece el nombre de usuario a utilizar para


conectarse al recurso compartido.

password=<valor> - Indica la contraseña a utilizar para conectarse al


recurso compartido.

uid=<valor> - Indica el identificador del usuario de Linux que le será


asignado al recurso compartido una vez que es montado. Esta opción afecta la
manera en que otros usuarios de Linux accesen al recurso.

gid=<valor> - Indica el identificador del grupo de usuarios de Linux que


le será asignado al recurso compartido una vez que es montado. Afecta también
el acceso al mismo por otros usuarios.

6.7. Desmontaje de directorios de Windows


Para desmontar un directorio compartido de Windows - que previamente
había sido montado - tan sólo hay que llamar al comando /usr/bin/smbumount
de la siguiente forma:
smbumount punto_de_montaje

Donde punto_de_montaje es el directorio de Linux al que el recurso se


encuentra conectado.

Linux Soluciones Integrales 62 de 72


Curso de Redes

7. NFS - Sistema de Archivos de Red

Ya se estudió como se comparten recursos de disco entre equipos


operando en Linux y equipos operando en Windows; pero, ¿que hacer si ahora
se desea compartir los recursos de disco entre computadoras que operan en
Linux/Unix?

La respuesta a la pregunta anterior es muy simple: NFS (Network File


System ó Sistema de Archivos de Red). Este protocolo permite montar
directorios localizados en servidores remotos, quedando disponibles para los
usuarios locales.

Hay que tener en cuenta que el kernel de Linux debe estar compilado con
soporte para NFS ó al menos contar con los módulos apropiados disponibles
para ser cargados.

Para entender cómo funciona este mecanismo hay que conocer algunos
puntos claves. A continuación se estudiaran éstos y los archivos que en Linux
hacen posible el uso del NFS.

7.1. El mapeador de puertos (portmapper)


El mapeador de puertos de Linux es llamado portmap ó rpc.portmap. Es
un mapeador de números de programas RPC (Remote Procedure Call) a
números de puertos del protocolo DARPA (Defense Advanced Research
Proyects Agency).
Cuando un servidor RPC es levantado, le dice al portmap en qué puerto
está escuchando y a qué números de programas RPC puede dar servicio.

Cuando un cliente desea hacer un llamado a algún número de programa


RPC, primero contactará al mapeador de puertos del servidor para saber a que
puerto enviar los paquetes involucrados en el llamado.

Para poder emplear NFS es necesario que el mapeador de puertos esté


activo.

Para activarlo, desactivarlo o verificar su estado, se puede usar el


archivo: /etc/init.d/portmap ó el programa /sbin/service portmap. También al
ejecutar el programa /usr/sbin/rpcinfo -p se obtiene un desplegado de los
puertos que mapea similar a:

Linux Soluciones Integrales 63 de 72


Curso de Redes
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 745 mountd
100005 1 tcp 747 mountd
100003 2 udp 2049 nfs
100003 2 tcp 2049 nfs

Un detalle interesante es que por medio de los archivos /etc/hosts.allow


y /etc/hosts.deny se controla el acceso al mapeador de puertos de Linux.

7.2. Los daemons mountd y nfsd


El mountd ó rpc.mountd es el encargado de implementar el protocolo
de montaje NFS. Cuando recibe la solicitud de montaje de un cliente NFS,
verifica la ruta requerida de la lista de sistemas de archivos que actualmente se
están exportando. Si el cliente tiene permiso de montar el sistema de archivos,
el rpc.mountd obtiene un puntero al mismo y lo devuelve al cliente.

El nfsd ó rpc.nfsd implementa la parte del servicio NFS a nivel de


usuario. Este programa que corre en el espacio de usuario es el encargado de
levantar los subservidores NFS.

Ambos son levantados por el script: /etc/rc.d/init.d/nfs, que por lo


general es invocado desde el arranque del sistema.

7.3. Exportando sistemas de archivos


Antes de que los dos daemons anteriores sean levantados debe existir un
archivo llamado /etc/exports, donde se mantiene una lista de los directories de
Linux que se van a compartir.

La sintaxis de éste archivo es simple: primero, la ruta que se comparte;


después, a quién se le asigna el permiso y el tipo de permiso que se otorga. Por
ejemplo:
/home *.linux-si.com(rw)
/usr/local/lsi *.linux-si.com(rw)
/usr/local/doc *.linux-si.com(rw)

El "*" indica que todos los clientes que pertenecen a el dominio linux-
si.com tienen derecho de lectura y escritura para el recurso en cuestién. Si en
lugar de utilizar el "*" se emplea el nombre de un cliente particular, dicha
declaración otorgará el permiso sólo al cliente mencionado.

Cuando esta lista se actualiza es necesario hacer una reexportación de


los directorios. Esta tarea se lleva acabo desde una terminal empleando el
comando /usr/sbin/exportfs con el parámetro -r, que le indica que realice la
reexportación:

Linux Soluciones Integrales 64 de 72


Curso de Redes
/usr/sbin/exporfs -r

Si todos los pasos anteriores son llevados a efecto sin problema alguno,
se tiene un servidor NFS.

7.4. Montando directorios remotos


Al montar un directorio remoto el equipo se vuelve un cliente NFS. Un
sistema Unix puede comportarse como cliente y servidor en forma
simultáneamea. El punto de vital interés es que el cliente soporte el sistema de
archivos NFS.

Desde una terminal de texto - habiéndose registrado como el


administrador del sistema - y tecleando el comando de montaje apropiado, el
sistema de archivos remoto puede ser "conectado" al sistema local. Empleando
las declaraciones que previamente se analizaron, el montaje de uno de los
directorios se realizaría de la siguiente forma:
/bin/mount -o rsize=1024,wsize=1024 server:/home /home

El comando mount -o monta el sistema de archivos exportado /home del


servidor server y lo monta en el directorio local /home.

Algunas opciones adicionales pueden ser agregadas al comando mount


como rsize y wsize en este caso. Estas opciones permiten "sintonizar" la
conexión entre ambos equipos. A continuación se describirán algunas de las
más comúnmente utilizadas.

rsize - read block size. Esta opción permite modificar el tamaño del
bloque de lectura y escritura. Mientras más pequeño es, las lecturas se vuelven
más lentas, pero el uso de la red es compartido más equitativamente. Mientras
más grande es, las lecturas son más rápidas, pero el uso de la red es un poco
autoritario.
wsize - write block size. Opera en forma similar al rsize pero en este
caso para escrituras.

soft. Esta opción le permite al cliente darse por vencido durante un


proceso de conexión o desconexión si el servidor no responde por mucho
tiempo. Este tiempo puede ser establecido con el parámetro timeo=<valor>.
Esta opción puede ser útil si el servidor NFS no responde algunas veces o
tendrá que ser reinicializado cuando algún proceso trata de obtener algún
archivo del mismo. Generalmente esto causa grandes problemas.

hard. Con esta opción, aquel programa que trate de accesar un archivo
localizado en un sistema de archivos remoto se bloqueará si el servidor deja de
responder. Este proceso no podrá ser interrumpido o detenido a menos que se
emplee también la directiva intr. Cuando el servidor responde nuevamente, el
programa bloqueado continúa en el punto donde se detuvo como si nunca

Linux Soluciones Integrales 65 de 72


Curso de Redes

hubiera estado en una condición de bloqueo. Este par de opciones son las más
recomendadas para montar sistemas de archivos remotos.

Si se desea que un sistema de archivos remoto sea montado en forma


automática durante la inicialización del sistema, se puede agregar al archivo
/etc/fstab, que contiene un listado de todos los sistemas de archivos que
deberán ser montados durante el arranque. Un ejemplo de este caso sería:
/dev/hda3 / ext2 defaults 1 1
/dev/hda1 /boot ext2 defaults 1 2
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda2 swap swap defaults 0 0
linux-si.com:/home /home nfs rsize=4096,wsize=4096,hard,intr 0 0

7.5. Notas relevantes


El NFS es un protocolo lento, por tanto no es práctico en enlaces con un
ancho de banda limitado. Esto es, en redes de área local que operan a 10 Mpbs
o más no habrá ningún problema. Pero, si se intenta emplear con enlaces
telefónicos será terriblemente lento.

También el protocolo NFS no es muy seguro si no se toman las medidas


adecuadas. Por defecto, en el cliente, si uno se registra como root y trata de
accesar un directorio remoto, no se tendrá acceso al mismo. Esto es una
medida de protección para el servidor. Cuando el NFS va a ser usado en una
red de área local donde se confía en todos los clientes y no hay forma de que
alguien ajeno a la misma encuentre algún modo de accesarla, no hay mucho de
qué preocuparse. Sin embargo, si el servidor podrá ser accesado por ajenos,
habrá que tomar las medidas de seguridad apropiadas.

Linux Soluciones Integrales 66 de 72


Curso de Redes

9. Enmascaramiento IP y el Squid

Un proxy en su más simple concepción es un dispositivo que de alguna


manera permite tener acceso a otras redes desde una red local.

Sin embargo, lo anterior es válido también para una red ruteada. El


objetivo del proxy es entonces habilitar a una red local, donde los clientes
tienen asignadas direcciones IP privadas, para tener acceso a otras redes,
principalmente a Internet.

Recordando, una dirección IP privada no puede salir a Internet,


lógicamente desde un interfaz así configurado no se podrá establecer una
conexión con otro que tenga una dirección pública.

Es bien sabido que lo anterior es cierto, pero también lo es que desde


una red local o conectándose a través de un modem, es posible obtener
información de sitios en la red y que esos sitios tienen una dirección IP pública
asignada.

Se discutirán dos formas de lograr lo anterior: por enmascaramiento IP


(NAT - Network Address Translation) y por el uso del caché de páginas
Squid.

9.1. Enmascaramiento IP
El enmascaramiento IP consiste en tomar un datagrama proveniente de
un interfaz identificado con una dirección IP de una red local y reidentificarlo con
la dirección del interfaz de salida de un equipo trabajando como ruteador.

Lo anterior es fácil de entender tomando un ejemplo como referencia de


las acciones que se llevarían a cabo:

Un equipo destinado a ser servidor de salida a Internet para una red local
cuenta con dos interfaces, el primero recibe una dirección del ISP y el segundo
es configurado con una IP fija que pertenece al rango de direcciones privadas.
Los clientes de la red local son configurados para participar en la misma red y
emplear como ruteador por defecto al servidor.

Cuando un cliente envía un datagrama a una red que está fuera de la red
a la que pertenece lo hace a través del ruteador por defecto, esto es, envía el
paquete directamente al ruteador y especifica la dirección final a la que está
destinado. La dirección final podría pertenecer a otra red privada a la que se
Linux Soluciones Integrales 67 de 72
Curso de Redes

está conectando por medio del ruteador ó podría ser una dirección pública.

En el primer caso no hay problema alguno siempre y cuando la otra red


cuente con su propio ruteador y tenga configurada una ruta hacia la red origen.
El datagrama es encaminado a la otra red, es recibido por el destinatario y un
reconocimiento es regresado.

El segundo caso presenta mayor dificultad, el datagrama no puede ser


encaminado directamente ya que la dirección origen pertenece al rango de las
privadas y es bien sabido que éstas no pueden ser encaminadas por Internet.
Más aún no se sabe que caminos habría que recorrer para alcanzar el destino
final del datagrama.

Como se indicó el servidor de salida cuenta con un interfaz cuya


configuración depende del provedor del servicio de Internet. La dirección que el
interfaz recibe podría ser pública o privada, dependiendo del convenio realizado
con el ISP.

Configurando apropiadamente al servidor, éste tomará el datagrama


proveniente de la red local, tomará un registro del mismo en una tabla, le
cambiará la dirección origen poniendo la propia de su interfaz conocido por el
ISP y enviará el datagrama hacia el ruteador del ISP. Éste último encaminará al
datagrama hacia su destino final. Cuando el paquete llega a su destino y se
envía un reconocimiento, éste es recibido por el ruteador del ISP y encaminado
al ruteador de la red en cuestión. Una vez recibido el datagrama que retorna se
analiza la tabla de registro para encontrar una coincidencia, si es encontrada se
toma el datagrama, se reemplaza la dirección destino final por la del cliente que
había enviado la petición y se lanza a la red local donde es recibido.

Cuando se hace el registro del datagrama se especifica también un


tiempo de vida, que si vence antes de obtener una respuesta indica que
probablemente el destino final no fué alcanzado y que hay que eliminar esa
entrada de la tabla.

Es interesante saber que un paquete que fué enmascarado puede ser


enmascarado nuevamente. Por ejemplo, si en el caso anterior el ISP asignó al
ruteador de la red una dirección privada al servidor, tendrá que enmascarar sus
paquetes para que llegen a su destino en Internet y así sucesivamente.

9.2. Configurando el Squid


Como se mencionó un servidor proxy habilita a una LAN para contar con
servicio de Internet através del mismo. El squid es un programa que se ejecuta
a manera de un servicio en un servidor y provee el medio de enlace; cuenta
además con la capacidad de conservar los objetos de internet más
frecuentemente accesados.

La operación del squid es simple, al inicializarlo crea un arbol de


directorios (cuando es ejecutado por primera vez) donde almacenará los objetos

Linux Soluciones Integrales 68 de 72


Curso de Redes

de internet que solicitan sus clientes. El servicio escucha en el puerto 3128 de


TCP/IP por peticiones de clientes y las atiende.

Los clientes (browsers) deben ser configurados de tal manera que


empleen un servidor proxy para salida a internet. Generalmente son sólamente
necesarios dos parámetros para este fin: la dirección IP del servidor proxy y el
puerto en el que escucha.

El squid emplea un archivo de configuración llamado squid.conf y que


dependiendo de la distribución de Linux empleada puede variar su localización;
generalmente es encontrado en /etc/squid/squid.conf. El contenido de éste
archivo típicamente es:
http_port 3128
cache_mem 8 MB
cache_dir ufs /var/spool/squid 100 16 256
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl all src 0.0.0.0/0.0.0.0
acl allowed_hosts src 192.168.10.0/255.255.255.0
http_access allow manager localhost
http_access deny manager
http_access allow localhost
http_access allow allowed_hosts
http_access deny all
icp_access allow allowed_hosts
icp_access deny all
cache_mgr root
cache_effective_user squid
cache_effective_group squid
visible_hostname squid.mi-dominio.org

La primera línea indica el puerto de TCP/IP que empleará. La segunda


cuanta memoria física se ocupará para mantener pequeños objetos accesados
con mucha frecuencia en la memoria; el squid en su operación normal duplica
éste valor, esto es, para el ejemplo, la memoria física que ocupará será
realmente de 16 MB.

La tercera línea indica el tipo de sistema de archivos que se empleará,


siendo en este caso ufs. También indica el espacio en disco duro a emplear
como máximo (100 MB para el ejemplo) y la cantidad de directorios de primer
nivel a generar (16) y la cantidad de directorios de segundo nivel a generar
(256).

Para dar servicio a clientes el squid emplea listas de control de acceso


(acl - access control list). La sintaxis empleada en éstas es simple:
acl nombre_de_lista src IP/máscara

La quinta línea crea una lista de control de acceso para el propio servidor
empleado la dirección del dispositivo de loop-back. La sexta representa el

Linux Soluciones Integrales 69 de 72


Curso de Redes

acceso a todos y la séptima representa el acceso a una red clase "C" a la que
se le denomina allowed_hosts. Incluso es posible crear listas de control de
acceso por IP y también listas que requieren de autenticación.

Una vez realizadas las listas de control de acceso, se procede a


utilizarlas para habilitar el acceso a internet por http e icp.

La octava línea habilita el acceso a las funciones de administración por


http desde el propio servidor. La novena línea deshabilita éste acceso desde
cualquier otro sitio. La décima línea permite a clientes en el propio servidor a
hacer uso del proxy. La onceava línea habilita el acceso a la red definida por la
lista allowed_hosts. La doceava línea deshabilita el acceso a cualquier otra IP
que trate de emplear al proxy.

La treceava y catorceava líneas realizan la misma operación pero para


paquetes ICP.

La quinceava línea establece al usuario que representa al administrador


del squid.

Ya que el squid podría llegar a tener alguna falla de seguridad, cuando


éste es inicializado (generalmente por root o desde la inicialización del sistema
operativo) cambia de usuario y grupo efectivos para la ejecución normal. En las
líneas 16 y 17 se indica que el usuario y grupo a emplear sean los del propio
squid.

La última línea del archivo de configuración simplemente se emplea para


dar un nombre al caché, mismo que se reflejará en los clientes cuando el proxy
les envíe algún mensaje, como en el caso de no encontrar un URL solicitado.

9.3. NAT - Network Address Translation


Anteriomente se analizó un mecanismo para poder dar salida a Internet a
una red. Sin embargo un proxy sólo puede ser empleado para accesar páginas
de internet u obtener archivos por ftp.

Muchos otros programas como los basados en IRC o que requieren


accesar a un puerto específico en algún servidor, quedan fuera del alcance para
los usuarios de la red a la que se le suministra el acceso a Internet. Algunos de
éstos programas permiten el uso del proxy, sin embargo ésto no sucede en
todos los casos. Por ejemplo, un cliente de correo que trata de accesar a un
servidor pop3 y que está detrás del proxy quedaría imposibilitado para este
efecto.

NAT permite que un cliente de una red local tenga acceso directamente a
un puerto de un servidor en otra red. Como se mencionó con anterioridad el
paquete sale de la red local y se enmascara con la IP del servidor NAT;
posteriormente es llevado al destino, el paquete de regreso es recibido en el
servidor, se desenmascara y se envia al cliente de la red local. Los clientes de la
Linux Soluciones Integrales 70 de 72
Curso de Redes

LAN "aparentan" ser el servidor de la misma desde el punto de vista del servidor
foráneo al que se conectan.

En Linux una de las formas para hacer enmascaramiento IP es con el uso


de las cadenas IP. El kernel de Linux desde la versión 2.2 emplea 4 tipos de
cadenas para el paso de paquetes de un interfaz a otro: la cadena de entrada
(input chain), la cadena de paso de paquetes (forward chain), la cadena de
salida (output chain) y una cadena de usuario (user chain).

Cuando un paquete arriba al servidor desde un interfaz entra por la


cadena de entrada. Cuando un paquete va a salir del servidor pasa antes por la
cadena de salida. Cuando un paquete va a ser llevado desde un interfaz a otro
debe pasar por la cadena de paso de paquetes. La cadena de usuario no es
única, pueden ser declaradas múltiples cadenas con diferentes nombres, y son
usadas principalmente para la configuración de firewalls.
Habilitar al kernel de Linux para realizar enmascaramiento IP es
realmente muy sencillo, sin embargo hay que asegurarse que el kernel cuente
con la capacidad para la configuración por iptables y que el paso de paquetes
esté habilitado como se indicó en el capítulo 4.

El primer paso para la configuración es limpiar todas las posibles reglas


que hayan sido dado de alta - cuando el objetivo es tan sólo el de realizar
enmascaramiento IP - realizando un flush de las mismas de la forma siguiente:
/sbin/iptables -F

A continuación se debe cerrar la cadena de paso de paquetes de la


siguiente forma:
/sbin/iptables -P forward DENY

En el comando anterior la P indica que acontinuación se especificará una


"política" o cadena, que en este caso es la de paso de paquetes (forward) y al
final se indica el valor por defecto a asignar a la misma, que en este caso es
denegar (DENY).

Finalmente, se dan de alta a los clientes o redes de clientes que van a


ser enmascarados especificando las direcciones IP de los mismos de la
siguiente forma:
/sbin/iptables -A forward -s 192.168.1.20/32 -j MASQ
/sbin/iptables -A forward -s 192.168.2.0/24 -j MASQ

En la línea anterior A indica que se agregará una regla a la cadena


especificada a continuación. La s especifica la dirección o direcciones
(dependiendo de la máscara) que serán enmascaradas. La j indica que el tipo
de salto (jump) que hará el paquete al pasar del interfaz de entrada al de salida
será por enmascaramiento IP (MASQ). Ya que en el comando no se especifica
una dirección IP destino se toma la 0.0.0.0/0.0.0.0 (cualquiera) y que en este

Linux Soluciones Integrales 71 de 72


Curso de Redes

caso indica que el paquete será llevado a la IP destinataria originalmente pero


con la IP fuente enmascarada.

La forma de monitorear a aquellos clientes que están siendo


enmascarados es:
/sbin/iptables -M -L

Y que daría, por ejemplo, como salida:


IP masquerading entries
prot expire source destination ports
ICMP 00:29.53 192.168.1.96 148.208.233.70 41564 (0)->2048

Se debe recordar que el “forwarding” de paquetes debe habilitarse de igual


forma cuando se realizan las configuraciones para ruteador.

En versiones más modernas del Kernel de Linux (2.4 en adelante) se deben


ejecutar los siguientes pasos para habilitar el enmascaramiento de direcciones IP:
/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Donde se indica con “-t nat” que se empleará la tabla de enmascaramiento


IP para la configuración con “-A POSTROUTING” que el enmascaramiento se hará
después de saber por qué interfaz el paquete a enmascarar saldrá y con “-o eth0”
el interfaz de salida.
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

Aquí “-A FORWARD” nos indica que se agregará una regla a la tabla de
reenvío de paquetes; “-i eth0 -o eth1” nos indica que los paquetes entrarán por
el interfaz eth0 y saldrán por el eth1; “-m state” y la lista de estados “RELATED,
ESTABLISHED” indican que sólo se hará el enmascaramiento de conexiones
establecidas o relacionadas y “-j ACCEPT” que si se cumplen las condiciones
previas se aplicará la regla.

Finalmente, para permitir nuevas conexiones de salida considerando la regla


anterior, se deberá ejecutar el siguiente comando:
/sbin/iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

Linux Soluciones Integrales 72 de 72

Вам также может понравиться