garl2

 

Capítulo 2


Cuestiones sobre redes TCP/IP

Vamos a entrar en los detalles que deben tenerse en cuenta cuando se conecta una máquina Linux a una red TCP/IP. De este modo, hablaremos de direcciones IP, nombres y cuestiones sobre el encaminamiento. Este capítulo le enseñará la base con la que podrá entender los pasos para su configuración particular, pasos que son cubiertos exhaustivamente en otros capítulos.

2.1 Interfaces de Red
2.2 Direcciones IP
2.3 Resolución de direcciones
2.4 Encaminamiento IP

2.4.1 Redes IP
2.4.2 Subredes
2.4.3 Pasarelas
2.4.4 Tablas de Encaminamiento
2.4.5 Métricas de Encaminamiento

2.5 Protocolo de Mensajes de Control de Internet (ICMP)
2.6 El sistema de nombres DNS

2.6.1 Resolución de nombres
2.6.2 Introducción al DNS
2.6.3 Búsquedas de nombres con DNS
2.6.4 Servidores de Nombres
2.6.5 La Base de Datos DNS
2.6.6 Resolución inversa

2.1 Interfaces de Red

Para ocultar la diversidad de hardware que puede usarse en una red, TCP/IP define una interfaz a través de la cual accedemos al hardware. Esta interfaz ofrece un conjunto de operaciones idénticas en cualquier tipo de hardware y que básicamente consisten en operaciones para enviar y recibir paquetes.

Para cada dispositivo que quiera utilizarse para conectarse a la red, se mantendrá en el núcleo del sistema la correspondiente interfaz. Por ejemplo, las interfaces con Ethernet en Linux son eth0 y eth1, mientras que las interfaces SLIP se llaman sl0, sl1, etcétera. Estos nombres de interfaz se deben conocer durante la configuración de la red, cuando queramos referirnos a un dispositivo hardware concreto.

Para que podamos usarlo en una red TCP/IP, la interfaz deberá tener asignada una dirección IP que sirva como identificación de ésta ante los demás ordenadores de la red. Esta dirección es diferente del nombre de interfaz considerado anteriormente; puede realizarse la siguiente analogía: la interfaz sería la "puerta" de su sistema, mientras que la dirección vendría a ser un número enmarcado y colgado de la "puerta".

Por supuesto, hay otros parámetros configurables para cada dispositivo, como el número máximo de datagramas que pueden ser procesados por el dispositivo, conocido como Unidad Máxima de Transferencia o MTU1. Otros parámetros serán introducidos mas tarde.

 

2.2 Direcciones IP

Como se dijo en el capítulo anterior, las direcciones utilizadas en el protocolo de red IP la forman números de 32 bits, y cada máquina debe tener una dirección propia. Si las máquinas se encuentran en una red TCP/IP que no se conecta a otras redes, dichas direcciones podrán asignarse a las máquinas libremente. Sin embargo, si las máquinas se conectan a Internet, las direcciones de los ordenadores serán asignadas por una autoridad principal, el NIC2 o Centro de Información de la Red3.

Para facilitar la lectura, las direcciones IP se dividen en cuatro números de 8 bits llamados octetos. Por ejemplo, si la máquina quark.physics.groucho.edu tiene una dirección IP 0x954C0C04, normalmente la escribiremos con la notación de puntos divisorios, que separa los octetos, de esta forma: 149.76.12.4.

Otra razón para usar esta notación es que las direcciones IP se pueden dividir en el número de red y el número de nodo. Cuando pedimos al NIC un conjunto de direcciones, este organismo nos concederá, no una dirección para nuestra máquina, sino un rango de direcciones validas, que en realidad es un número de red concreto (el número de nodo lo pondremos nosotros, contando con todos esos nodos disponibles).

Dependiendo del tamaño de la red, la parte de la dirección correspondiente al nodo puede ser mas o menos grande. Para adaptarse a diferentes necesidades, se conceden diferentes clases de redes, que definen diferentes maneras de dividir la dirección IP en parte de red y parte del nodo.

Clase A La clase A comprende redes desde 1.0.0.0 hasta 127.0.0.0. El número de red esta en el primer octeto, con lo que solo hay 127 redes de este tipo, pero cada una tiene 24 bits disponibles para identificar a los nodos, lo que se corresponde con poder distinguir en la red unos 16 millones de nodos distintos.

Clase B La clase B comprende redes desde 128.0.0.0 hasta 191.255.0.0; siendo el número de red de 16 bits (los dos primeros octetos). Esto permite 16320 redes de 65024 nodos cada una.

Clase C Las redes de clase C tienen el rango de direcciones desde 192.0.0.0 hasta 223.255.255.0, contando con tres octetos para identificar la red. Por lo tanto, hay cerca de 2 millones de redes de este tipo con un máximo de 254 nodos cada una.

Clases D, E, y F Comprenden las direcciones entre 224.0.0.0 y 254.0.0.0, y están reservadas para uso futuro, o con fines experimentales4. No especifican, pues, ninguna red de Internet.

_____________________________________________
1 N. del T.: MTU son las siglas de "Maximum Transfer Unit".
2 N. del T.: Network Information Center
3 Frecuentemente, las direcciones IP le serán asignadas directamente por el proveedor que le conecte a la red. No obstante, se puede contactar directamente con el NIC para obtener direcciones, escribiendo a hostmaster@internic.net.

 

Volviendo al ejemplo del capítulo anterior, veremos que en la dirección 149.76.12.4 de la máquina quark, 12.4 es el identificativo del nodo dentro de la red de clase B 149.76.0.0.  

Se puede observar que en la lista anterior no se consideraban todas las posibilidades en la parte que identifica al nodo; concretamente, se excluían siempre el identificador 0 y el 255. Estos dos identificadores se reservan para propósitos especiales. Una dirección con los bits del nodo a cero identifica a la red, mientras que si tiene todos los bits a uno, identifica a todos los nodos de la red (lo que se conoce como dirección de broadcast, lo que indica que un mensaje enviado a esa dirección será procesado por todos los nodos de la red). Así pues, en nuestro ejemplo la dirección de la red sería 149.76.0.0 y la de broadcast, la 149.76.255.255.

Además, otras dos direcciones de red están reservadas: la 0.0.0.0 y la 127.0.0.0. La primera se conoce como dirección de encaminamiento por defecto, y la segunda, como dirección de loopback. El encaminamiento por defecto se utiliza para saber a donde enviar los datagramas por defecto, tema que abordaremos después.

La red 127.0.0.0 se reserva para el tráfico local, dirigido al propio nodo. Normalmente, se asigna la dirección 127.0.0.1 a un dispositivo de la máquina llamado interfaz de loopback 5 o de circuito cerrado. Cualquier paquete enviado a esa dirección será recibido por el propio nodo. Esto permite probar aplicaciones de red con uno mismo, sin estar conectado a una red "real". Otra aplicación útil es la de ejecutar aplicaciones de red que afectan solo al nodo local. Por ejemplo, muchos sistemas UUCP no tienen conexión IP pero ejecutan un sistema de noticias INN. Para que esto funcione, INN utiliza la interfaz de loopback.

_____________________________________________
4 Por ejemplo, se esta utilizando la red 224.0.0.0 para la Internet multidestino o multicast
5 N. del T.: También conocida como interfaz de lazo

 

2.3 Resolución de direcciones

Ahora que conocemos que son las direcciones IP, nos preguntaremos como se utilizan en una red Ethernet. Después de todo, el protocolo Ethernet usa direcciones identificativas de seis octetos que no tienen que ver con los números IP.

En efecto, se necesita un mecanismo de traducción de direcciones IP a direcciones Ethernet o físicas. Esto se hace con el Protocolo de Resolución de Direcciones o ARP6. ARP no se limita a las redes Ethernet, sino que se extiende a otros tipos de redes como las de radio paquetes. La idea es la misma que tendríamos para localizar al señor X entre 150 personas: preguntar por su nombre a todo el mundo; y el señor X nos responderá.

Cuando queremos localizar la dirección física correspondiente a una dirección IP, haremos uso de una característica de la red Ethernet, que es la posibilidad de enviar mensajes a escuchar por todos los nodos, o mensajes broadcast. En el mensaje ARP, que es de este tipo, se incluye la dirección IP cuyo propietario estamos buscando. El nodo que posea esa dirección enviara una respuesta ARP al nodo llamante, con su dirección física.

Por supuesto, le preocupara saber como puede funcionar esto para localizar un nodo entre millones de Ethernets conectadas en el mundo. Esto se trata en la próxima sección: se trata del encaminamiento.

Sigamos hablando, de momento, sobre ARP. Una vez que se conoce la dirección física del nodo, el que hizo la petición guardara la información obtenida en una cache ARP, para así no preguntar por lo mismo cada vez que envíe un paquete a ese nodo. Sin embargo, no podemos guardar esa dirección para siempre ya que puede perder su validez (por ejemplo, si cambiamos la tarjeta de red a los nodos por avería, sus nuevas direcciones físicas serán distintas). Por ello, cada cierto tiempo, lo que hay en la cache ARP pierde su validez, obligando a realizar de nuevo la pregunta ARP.

A veces, un nodo necesita también conocer su dirección IP a partir de su dirección física. Por ejemplo, en terminales X o PCs sin disco, que cuando arrancan solo saben la dirección de su tarjeta pues esta grabada en memoria no volátil. Para ello, se usa el Protocolo de Resolución Inversa de Direcciones o RARP7: la petición RARP la hace el nodo cuando arranca, mediante mensaje broadcast, y es contestado por un servidor de direcciones que, a partir de la dirección física, consulta su base de datos y conoce la dirección IP correspondiente. Existe además otro protocolo, el BOOTP o protocolo de arranque8, que permite a las máquinas sin disco conocer como ponerse en marcha en la red.

_____________________________________________
6 N. del T.: Address Resolution Protocol
7 N. del T.: Reverse Address Resolution Protocol
8 N. del T.: Del inglés Boot Protocol

 

2.4 Encaminamiento IP

2.4.1 Redes IP

3 Cuando escribimos una carta a alguien, normalmente incluimos la dirección completa en el sobre: país, provincia, código postal, etc. De este modo el servicio de correos podrá llevar la carta a su destino: un servicio la enviara al del país que corresponda, y este último la entregara al de la provincia o ciudad de destino. La ventaja de este esquema jerárquico es que el servicio postal del remitente apenas tiene que saber acerca del destino final, sino solo a que país entregarla.

Las redes IP se organizan de manera similar. Internet consta de varias redes, conocidas como sistemas autónomos y cada una realiza por su cuenta el encaminamiento interno entre sus nodos miembro. Cuando un paquete tiene como destino un nodo de otra red, se entregara al encaminador correspondiente, sin preocuparse del destino final del paquete.

 

2.4.2 Subredes

La estructura de subredes se obtiene al dividir las direcciones IP en parte del nodo y parte de la red, como ya hemos explicado. Por defecto, la red de destino se deriva de la parte de red de la dirección IP. Es decir, los nodos con la misma dirección de red se encontraran en la misma red TCP/IP9.

Pero en una red puede interesar hacer una división en cientos de pequeñas redes, por ejemplo segmentos de Ethernet. Para ello se subdivide la red en subredes.

Una subred tiene la responsabilidad de la entrega de los datagramas a un determinado rango de direcciones IP de la red en la que se encuentra. Como sucede con las clases A, B o C, se identifica en la parte del número IP correspondiente a la red. Sin embargo, esa parte incluirá ahora algunos bits de la parte del nodo. Los bits que se interpretan como dirección de subred se obtienen con la llamada máscara de red. Es un número de 32 bits que especifica una máscara para identificar los bits de la subred.

La red del campus de la Universidad de Groucho Marx es un ejemplo de red de clase B, poseedora de la red 149.76.0.0, con máscara 255.255.0.0.

Internamente, la red de la UGM se divide en pequeñas subredes, como las LAN de cada departamento. Concretamente se divide en 254 subredes, desde la 149.76.1.0 hasta la 149.76.254.0. Por ejemplo, el Departamento de Física Teórica tendrá asignada la subred 149.76.12.0. La dorsal del campus es en si mismo una subred, la 149.76.1.0. Las subredes comparten el mismo número de red, pero se usa el tercer octeto de ésta para distinguir las distintas subredes. Por lo tanto, tendrán una máscara de subred igual a 255.255.255.0.

_____________________________________________
9 Los sistemas autónomos son algo mas generales. Pueden tener más de una red IP.

 

Parte de la Red

Parte del Nodo

149

76

12

4

149

76

12

4

Parte de la Red

Parte del Nodo

Figura 2.1: División de una red clase B en subredes

 

En la figura 2.1 se muestra como el nodo quark (149.76.12.4) se ve de distinta forma según se vea desde el punto de vista de la red de clase B, o desde el punto de vista de las subredes.

Nótese que la división en subredes es visible solo internamente a la red. Normalmente las organiza el administrador de red para reflejar diferentes ubicaciones geográficas, distinguir segmentos de red, o bien por motivos administrativos (departamentos, redes de alumnos, etc.). Pero esta división es totalmente invisible desde fuera de la organización.

 

2.4.3 Pasarelas

La organización en subredes no sólo se hace por motivos administrativos, también es consecuencia de cuestiones del hardware. Lo que ve un nodo en una red es limitado: solo ve los nodos con los que directamente este conectado (por ejemplo, en la Ethernet), mientras que a los demás los accede a través de lo que se conoce como pasarela10, que no es mas que un nodo conectado a dos o mas redes físicas, configurado para pasar paquetes de una red a otra.

Para reconocer si una dirección IP se encuentra en la red local física, cada LAN debe tener una dirección de red IP diferente. Por ejemplo, las máquinas de la (sub)red 149.76.4.0 serian las que están en la LAN del Departamento de Matemáticas. Cuando se envía un datagrama a la máquina quark, el software de red de erdos ve que su dirección de red es otra (149.76.12.4) con lo que sabe que tiene que enviar los datagramas a través de la pasarela (sophus por defecto).

sophus se encuentra conectado a dos subredes: la del Departamento de Matemáticas y la de la dorsal del campus, accediendo a cada una a través de una interfaz diferente, respectivamente eth0 y fddi0. Nos preguntaremos entonces, que dirección IP debe tener la pasarela, una de la subred de Matemáticas o bien una de la dorsal.

_____________________________________________
10 N. del T.: Del inglés gateway

 

Pues bien, la respuesta es ambas. Cuando la pasarela comunique con un nodo de la LAN de Matemáticas, usara la dirección 149.76.4.1, mientras que si lo hace con un nodo de la dorsal, usara 149.76.1.4.

Es decir, la pasarela tiene tantas direcciones IP como conexiones a redes físicas tenga. En definitiva, este será el esquema de interfaces, direcciones y máscara de sophus, nuestra pasarela:

interfaz

dirección

máscara

eth0

149.76.4.1

255.255.255.0

fddi0

149.76.1.4

255.255.255.0

lo

127.0.0.1

255.0.0.0

 

La última entrada describe el dispositivo loopback, que se comento anteriormente.

En la figura 2.2 se muestra una parte de la topología de la red de la Universidad de Groucho Marx (UGM). Los nodos que están en dos subredes tendrán dos direcciones IP.

 

2.4.4 Tablas de Encaminamiento

Vamos ahora a centrarnos en como se selecciona una pasarela para entregar un datagrama a una red remota.

Hemos visto que erdos, cuando envía un datagrama para quark, comprueba que la dirección destino no se encuentra en la red local, por lo que lo envía a la pasarela, sophus, quien básicamente hace lo mismo: ve que quark no esta en una de las redes a las que se conecta directamente y busca otra pasarela a quien entregarle el paquete. La elección correcta es niels, la pasarela del Departamento de Físicas. sophus necesita información para poder tomar estas decisiones.

La información de encaminamiento que se usa en IP es básicamente una tabla donde se relacionan (sub)redes y pasarelas. Además, debe incluirse una entrada de encaminamiento por defecto, que se asocia en la tabla a la red 0.0.0.0. Todos los paquetes que van a una red desconocida, se enviaran a la pasarela del encaminamiento por defecto. Así pues, esta sería la tabla para sophus:

 

Figura 2.2: Vista parcial de la topología de la red de la UGM.

 

Red

Pasarela

Interfaz

149.76.1.0

-

fddi0

149.76.2.0

149.76.1.2

fddi0

149.76.3.0

149.76.1.3

fddi0

149.76.4.0

-

eth0

149.76.5.0

149.76.1.5

fddi0

. . . .

. .

. . .

0.0.0.0

149.76.1.2

fddi0

 

Las rutas a una red a la que sophus este directamente conectado no necesitan pasarela, sino que los datagramas se entregan directamente. Esto se indica en la tabla anterior cuando en lugar de la pasarela aparece un "-".

Las tablas de encaminamiento pueden construirse de varias formas. Para redes pequeñas, será mas eficiente construirlas a mano usando el comando route de Linux (véase el capítulo 5). Para redes mas grandes, las tablas se mantienen y modifican automáticamente mediante los demonios de encaminamiento. Estos corren en nodos centrales e intercambian información de encaminamiento entre ellos para tener en todo momento las rutas "optimas" entre subredes.

Dependiendo del tamaño de la red, se utilizan distintos protocolos de encaminamiento. Dentro de los sistemas autónomos (como la Universidad Groucho Marx) se utilizan los protocolos internos o IGP11. El mas utilizado es RIP12 o protocolo de información de encaminamiento, que implementa el demonio routed de BSD. Para encaminamiento entre redes se usan protocolos EGP13, como BGP. Se implementan en programas como gated de la Universidad de Cornell.14.

 

2.4.5 Métricas de Encaminamiento

El encaminamiento dinámico basado en RIP elige la mejor ruta a un determinado nodo o red a partir del número de "saltos", es decir, las pasarelas que tiene que atravesar el datagrama hasta llegar a su destino. La ruta mas corta será la elegida, y si hay 16 o mas saltos se descartara por exceso de distancia.

Para usar RIP tiene que ejecutar gated en todas las máquinas. Al arrancar, gated comprueba cuantas interfaces están activas. Si hay mas de una (sin contar la de loopback) asumirá que el nodo es una pasarela. Si no, entrara en modo pasivo, dedicándose a recibir cualquier actualización RIP y cambiando sus tablas en consecuencia.

_____________________________________________
11 N. del T.: Internal Gateway Protocol
12 N. del T.: Routing Information Protocol
13 N del T.: External Gateway Protocol
14 gated también implementa RIP y en general se recomienda usarlo en lugar de routed

 

Para enviar a las demás pasarelas la información de su tabla local de rutas, gated cuenta la longitud de cada una a partir de una métrica especifica (que es decidida por el administrador del sistema y debe reflejar el coste de esa ruta). Así, la métrica de una ruta a una subred con conexión directa será siempre cero, mientras que una ruta que atraviese dos pasarelas deberá tener un coste de dos.

 

2.5 Protocolo de Mensajes de Control de Internet (ICMP)

IP tiene otro protocolo aun no mencionado. Es el protocolo de mensajes de control de Internet o ICMP15, y lo usa el software de gestión de red para comunicar mensajes de error entre nodos. Por ejemplo, si estamos en la máquina erdos y hacemos un telnet al puerto 12345 del nodo quark y no hay procesos escuchando en ese puerto, recibirá un mensaje ICMP de "puerto inalcanzable".

Hay mas mensajes ICMP, muchos de ellos referidos a condiciones de error. Sin embargo, hay uno interesante que es el de redirección. Lo genera el modulo de encaminamiento al detectar que otro nodo esta usándolo como pasarela, a pesar de existir una ruta mucho mas corta. Por ejemplo, tras configurarse la tabla de encaminamiento de sophus, esta puede estar incompleta, conteniendo rutas a través del encaminador por defecto gcc1. Por lo tanto, los paquetes enviados inicialmente a quark irán por gcc1 en lugar de niels.

En este caso gcc1 notificara a sophus que esta usando una ruta costosa y reenviara el datagrama a niels, al mismo tiempo que devolverá un mensaje ICMP de redirección a sophus informándole de la nueva ruta.

Con lo visto, queda claro que se puede evitar tener que establecer las rutas a mano. Sin embargo, usar solo esquemas de encaminamiento dinámico no es siempre una buena idea. La redirección de ICMP y el protocolo RIP no incluyen mecanismos de verificación de la autenticidad de los mensajes. Esto permite a los piratas corromper el tráfico de la red mediante mensajes ICMP. Por ello, algunas versiones del código de Linux tratan los mensajes de redirección que afectan a rutas de red como si fueran redirecciones de rutas a nodos.

 

2.6 El sistema de nombres DNS

2.6.1 Resolución de nombres

3 Como se comentó antes, el direccionamiento en TCP/IP se basa en números de 32 bits. Evidentemente, esos números no son fáciles de recordar, mientras que si lo es el nombre que se le asigna a cada máquina, como gauss o strange. Existe una aplicación que es capaz de traducir nombres a direcciones IP, y es conocida como sistema de resolución de nombres o DNS16.

_____________________________________________
15 N. del T.: Internet Control Message Protocol

 

Una aplicación que desee encontrar la dirección IP correspondiente a una máquina de la que conoce su nombre, no tiene que incluir rutinas para ello, ya que en las librerías estándares (libc) existen ya rutinas preparadas, como gethostbyname(3) o gethostbyaddr(3).

En otros sistemas se encuentran en otras librerías distintas de la libc pero esto no sucede en Linux. Al conjunto de rutinas que hacen estas tareas se les conoce como "sistema de resolución".

En una red pequeña no es difícil mantener una tabla /etc./hosts en cada máquina, y modificarla al agregar, eliminar o modificar nodos. Pero resulta complicado cuando hay muchas máquinas ya que, en principio, cada una necesita una copia de /etc./hosts.

Una solución a esto es compartir ésta y otras bases de datos con el NIS, o sistema de información de red 17, desarrollado por Sun Microsystems