3. Direcciones, enrutamiento y transporte

Indicadores de Logros

3.1. Lectura: Direcciones, enrutamiento y transporte

En una red TCP/IP, cada computador tiene como identificación una dirección IP única. Esta dirección consta de 32 bits, y suele escribirse como 4 números/bytes separando unos de otros por punto (cada uno es un número entre 0 y 255), por ejemplo 66.35.250.209. Cómo TCP/IP se diseño para interconectar redes, una dirección IP consta de una parte que identifica de forma única la red y otra que identifica de forma única el computador dentro de la red. Una máscara de red determina que parte identifica la red y cuáles computadores en la red puede denotarse con el número de bits del comienzo de la dirección que identifican la red (e.g 16 si los primeros 16 bits identifican la red) o como otra dirección que al hacer la operación lógica y con la dirección IP dará la dirección de red (por ejemplo 255.255.0.0 es una máscara que indica que los primeros 16 bits de una dirección IP son la dirección de red).

Al diseñar una red debe escogerse una dirección de red junto con la máscara de acuerdo al número de computadores, algunas posibilidades son:

/8 o 255.0.0.0

16777216 computadores

/12 o 255.242.0.0

1048576 computadores

/16 o 255.255.0.0

65536 computadores

/24 o 255.255.255.0

255 computadores

Además la dirección de red que escoja debe ser única para no producir conflictos con otras redes en caso de conectarse a Internet y puede facilitar la interconexión de diversas redes y el enrutamiento al interior de una organización.

Para facilitar la adopción de redes TCP/IP en organizaciones, el RFC 1918 destinó algunas direcciones de red para usar al interior de organizaciones (no puede haber computadores en Internet con esas direcciones):

10.0.0.0 - 10.255.255.255

máscara /8

172.16.0.0 - 172.31.255.255

máscara /12

192.168.0.0 - 192.168.255.255

máscara /16

Para nuestra plataforma de referencia, recomendamos emplear direcciones entre 192.168.1.1 y 192.168.1.255 con máscara de red /24 o 255.255.255.0. O en caso de contar con más redes en el mismo colegio, la segunda con direcciones entre 192.168.2.1 y 192.168.2.255 y así sucesivamente. Además de usar direcciones privadas, se facilita el crecimiento de la infraestructura de redes y la configuración del enrutamiento entre unas y otras

Como se presentó en la descripción de las capas en redes TCP/IP (ver Redes, protocolos e Internet), el protocolo IP mantiene una tabla de enrutamiento que asocia direcciones de red con compuertas, es decir con computadores conectados a la misma red que pueden retransmitir información a la red destino.

Puede ver la tabla de enrutamiento estático en /proc/net/route o mejor con route o con netstat -r. Entre los campos de cada entrada de esta tabla están: red destino, mascara de la red destino, interfaz por la cual enviar/recibir paquetes con ese destino, compuerta a la cual enviar para retransmisión (o * si se envia a toda la red conectada a la interfaz), opciones entre las que puede aparecer: U enrutamiento funcionando, H destino es un computador, G destino es una compuerta, ! ruta rechazada.

Hay una compuerta por defecto (default) a la se envia todo paquete que no tiene un destino en la tabla de enrutamiento. La compuerta por defecto corresponde a la configurada como gateway de la interfaz de red en el archivo /etc/network/interfaces

De requerirse pueden agregarse compuertas con route add por ejemplo, para agregar una ruta a la red 192.168.2.0/24 usando como compuerta 192.168.1.60 que está en la misma red:

route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.60
	 

Y pueden elminarse de forma análoga con route del.

Para determinar problemas de enrutamiento o en general de la red, puede emplear algunas herramientas de diagnóstico por ejemplo:

traceroute

Disponible en el paquete traceroute, presenta las direcciones de los computadores y enrutadores que transmiten un paquete hasta llegar a su destino. Por ejemplo

traceroute 192.168.2.2
netstat -s

Éste presenta estadísticas sobre IP, ICMP y TCP

ip link list

Que presenta direcciones MAC (debe instalar primero el paquete iproute

tcpdump

Disponible en el paquete tcpdump permite analizar el tráfico de una red TCP/IP. Desde la cuenta root puede usarse este programa para examinar todo el tráfico que circule por una red.

Y para realizar configuraciones a los protocolos IP y TCP:

/etc/hosts

En este archivo se listan nombres asociados a la dirección IP de algunos computadores, por ejemplo:

127.0.0.1       localhost
192.168.1.1    servidor.micolegio.edu.co servidor
		 

sysctl

Para configurar algunas variables del kernel relacionadas con redes (ver Configuración del kernel). Los cambios que pueden hacerse con sysctl también se pueden hacer escribiendo en los archivos del directorio /proc/sys/net/ipv4. Algunos son:

net/ipv4/ip_local_port_range

El cuál determina el rango de puertos que pueden usarse.

net/ipv4/ip_forward

Que habilita reenvio en puertos IP. Esto es indispensable para hacer enmascaramiento y para que el sistema actue como enrutador. También puede establecerse en el archivo /etc/network/options con

ip_forward=yes			 
		       

ip_default_ttl

Establece el tiempo de vida por defecto de paquetes que salgan.

ipchains

Para configurar enmascaramiento o un contrafuegos[207].

3.1.1. Caso: Conexión de dos redes de área local

Suponga que hay dos redes LAN con direcciones privadas que desea interconectar, cada una tiene un concentrador, una tiene direcciones de la forma 192.168.1.x (i.e 192.168.1.0 con netmask 255.255.255.0 o más breve 192.168.1.0/24), y la otra 192.168.2.x.

Para que las dos redes mantengan cada una su concentrador, se requeriría un computador conectado a ambas redes que pueda retransmitir los paquetes a la red apropiada, y se tendría que configurar el enrutamiento en cada red (puede ser en cada computador o en la compuerta por defecto de cada uno), para que envie paquetes dirigidos a la otra red por el computador intermediario.

Para conectarse a ambas redes el computador intermediario debería tener dos tarjetas de red, una conectada a la primera red (digamos eth0 con dirección 192.168.1.200), la otra a la segunda (digamos eth1 con dirección 192.168.2.100) y debe estar configurado para retransmitir paquetes. La interfaz de red para la tarjeta conectada a la red 192.168.1.x, debe configurarse con una dirección en esa red. Por ejemplo la primera tarjeta conectada a la red 192.168.1.x puede asociarse con la interfaz eth0 con dirección 192.168.1.200 con:

ifconfig eth0 192.168.1.200 netmask 255.255.255.0  
       

o podría configurarse en /etc/networks/interfaces con:

	iface eth0 inet static
        address 192.168.1.200
        netmask 255.255.255.0
        network 192.168.1.0
	broadcast 192.168.1.255

       

Una vez configuradas las dos tarjetas, podría configurar el enrutamiento primero habilitando reenvio de paquetes IP:

echo 1 > /proc/sys/net/ipv4/ip_forward 

o para que la configuración sea tomada durante el arranque en el archivo /etc/network/options (ver Inicialización del sistema):

ip_forward=yes
spoofprotect=yes
syncookies=no 

después puede configurar desde la línea de comandos (o un script durante el arranque del sistema) el enrutamiento de acuerdo a las interfaces:

route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
route add -net 192.168.2.0 netmask 255.255.255.0 dev eth1 

Para que otros computadores de la red 192.168.1.x se puedan comunicar con otros de 192.168.2.x y viceversa, debería configurar en los que se comunicaran o en las computertas de cada red (EN AMBOS) al intermediario. Por ejemplo si 192.168.1.2 se conectará con 192.168.2.2, en el primero debe usar:

route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.200 

y en el segundo

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.2.100
     

después de hacer esta configuración en los dos, puede probar por ejemplo desde 192.168.2.2

ping 192.168.1.2

Si tiene problemas en la conexión, puede verificar las tablas de enrutamiento (con route o netstat -r) o puede rastrear la ruta que toman los paquetes con traceroute, por ejemplo desde 192.168.2.2:

traceroute 192.168.1.2
	

3.1.2. Caso: Enmascaramienton

En caso de que cuente con una conexión a Internet en el servidor de su red, bien sea permanente o esporádica (por ejemplo con un modem), le será posible establecer conexiones desde cualquier computador de la red con computadores en Internet empleando enmascaramiento (note que todas las direcciones IP de la red local son privadas y no corresponden a direcciones IP reales, globlamente localizables, así que sin enmascaramiento NO podrían emplear Internet).

El computador que conecte a Internet debe tener al menos dos interfaces de red además de loopback: una tipo ethernet para comunicarse con la red interna y otra para comunicarse con Internet (por ejemplo una interfaz PPP). Cada una de las interfaces tendrá una dirección IP, la de la interfaz conectada a Internet será una dirección IP real, localizable en el mundo entero (digamos 1.2.3.4) y la otra será una dirección privada no utilizable en Internet (digamos 192.168.1.1).

Al emplear enmascaramiento las conexiones iniciadas en un computador de la red privada pasarán por el servidor, el cual cambiará la dirección del computador que inicia la conexión por la del mismo servidor y reenviará la información a Internet. De esta forma el computador que conteste en Internet responderá al servidor, el cual podrá ajustar la dirección de la información que reciba para que llegue al computador dentro de la Intranet.

Para configurar enmascaramiento [208] en Debian instale el paquete ipmasq, el cual instala el script ipmasq, lo ejecuta y prepara el proceso de inicialización para ejecutarlo siempre durante el arranque (vea Inicialización del sistema. ipmasq configura el computador donde se instala para hacer enmascaramiento y como contrafuegos básico (que tras la instalación permite iniciar todo tipo de conexión desde la red interna hacia la externa con un poco de seguridad [209]). El contrafuego puede restringirse agregando reglas para ipchains en archivos del directorio /etc/ipmasq/rules.

En el caso de una conexión a Internet usando ppp, puede crear el archivo /etc/ipmasq/ppp para que las reglas del contrafuegos sean configuradas cuando pppd inicia o termina una conexión.

3.2. Lecturas recomendadas: Direcciones, enrutamiento y transporte

3.3. Ejercicios: Direcciones, enrutamiento y transporte

3.3.1.

Suponga que a una red como la de la plataforma de referencia, desea agreguarsele un computador cliente, ¿qué pasos deben seguirse y cómo se configura?



[207] Contrafuego del inglés firewall

[208] Para emplear enmascaramiento el kernel debe ser compilado con las opciones CONFIG_FIREWALL, CONFIG_IP_FIREWALL, CONFIG_IP_FORWARD, y CONFIG_IP_MASQUERADE (configuraciones ya hechas en los kernels por defecto de Debian).

[209] ipmasq evita algunos ataques que emplean spoofing, es decir suplantación de la IP de un computador.