alvaro.gonzalezsotillo@educa.madrid.org

Enrutamiento IP

Álvaro González Sotillo

Created: 2024-09-08 dom 17:53

1. Introducción

  • IP se encarga de llevar cada paquete hasta su red
  • Una vez llegado a la red, IP supone que:
    • La red es de difusión (bus), con lo cual llega a su destino
    • La entrada a la red es un router que conoce las subredes dentro de la red, con lo que se sigue enrutando el paquete

1.1. pathping en Windows

1.2. mtr en Linux

2. Cómo enruta IP

  • Hacen falta los siguientes datos para enrutar un paquete IP
    • La dirección de destino del paquete
    • La red a la que pertenece la dirección de destino
    • La interfaz de red por donde se alcanza la red de destino
    • La dirección del router que nos ayuda a alcanzar el destino

2.1. IP vs MAC

  • Un host con IP recibe y procesa paquetes tanto con su propia dirección IP como la de otros:
    • Ethernet (o el protocolo usado en la capa de enlace) pasa a IP todos los paquetes que llegan con su dirección MAC
    • IP pasa hacia arriba los paquetes con la dirección IP propia
    • IP enruta (reenvía) los paquetes no dirigidos a su propia dirección IP
  • Por tanto, para que funcione IP tiene que ser posible enviar paquetes IP a otro host aunque no sea el indicado en la dirección IP destino
    • Se hace utilizando las direcciones MAC o físicas del otro host
    • La unión entre direcciones MAC y físicas es el protocolo ARP

2.2. Red IP vs Red Ethernet

  • IP trabaja sobre la capa de enlace sin conocer sus detalles
    • Ni siquiera conoce la topología física
    • Un enlace físico podría tener más de una dirección IP
  • Como consecuencia, puede haber más de una red IP encima de la misma red ethernet
    • Por interés administrativo o de seguridad

image/svg+xml Red 192.168.1.0/24 Red 192.168.40.0/24 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.254 192.168..40.254 192.168.40.1 192.168.40.2 192.168.40.3

3. Ejemplo de enrutamiento

image/svg+xml 192.168.1.254 192.168.1.1 192.168.1.2 192.168.1.3 192.168.2.254 192.168.2.1 192.168.2.2 192.168.2.3 10.0.0.1 10.0.0.2 Red 192.168.1.0/24 Red 192.168.2.0/24 Red10.0.0.0/30 192.168.1.1 192.168.2.3 192.168.1.1 192.168.2.3 🢥

  • 192.168.1.1 debe conocer su máscara de red (/24)
  • Con ella decide si 192.168.2.3 está en su red
    • Está en su red si la dirección de destino está en la misma red, usando la máscara
  • Puesto que el destino no está en la misma red, 192.168.1.254 debe utilizar una puerta de enlace

image/svg+xml 192.168.1.254 192.168.1.1 192.168.1.2 192.168.1.3 192.168.2.254 192.168.2.1 192.168.2.2 192.168.2.3 10.0.0.1 10.0.0.2 Red 192.168.1.0/24 Red 192.168.2.0/24 Red10.0.0.0/30 192.168.1.1 192.168.2.3 192.168.1.1 192.168.2.3 🢥

  • La puerta de enlace de 192.168.1.1 debe estar configurada a 192.168.1.254
  • Se envía una trama por el bus con la MAC del router, pero con dirección IP origen 192.168.1.1 y dirección destino 192.168.2.3
  • La capa ethernet del router la recibe, y la pasa al protocolo superior, IP
  • IP no la pasa al protocolo superior, ya que no va dirigida al propio router. Sin embargo, enrutará de nuevo el paquete para que llegue a su destino

image/svg+xml 192.168.1.254 192.168.1.1 192.168.1.2 192.168.1.3 192.168.2.254 192.168.2.1 192.168.2.2 192.168.2.3 10.0.0.1 10.0.0.2 Red 192.168.1.0/24 Red 192.168.2.0/24 Red10.0.0.0/30 192.168.1.1 192.168.2.3 192.168.1.1 192.168.2.3 🢥

  • El router consulta sus tablas, y sabe que para llegar a la red 192.168.2.0/24 tiene que utilizar el router 10.0.0.2
  • Envía el paquete a 10.0.0.2
    • Pero con dirección IP origen 192.168.1.1 y dirección destino 192.168.2.3.
    • La trama ethernet donde va el paquete tiene la dirección MAC asociada a 10.0.0.2 (si no, no le llegaría)

image/svg+xml 192.168.1.254 192.168.1.1 192.168.1.2 192.168.1.3 192.168.2.254 192.168.2.1 192.168.2.2 192.168.2.3 10.0.0.1 10.0.0.2 Red 192.168.1.0/24 Red 192.168.2.0/24 Red10.0.0.0/30 192.168.1.1 192.168.2.3 192.168.1.1 192.168.2.3 🢥

  • El segundo router repite los pasos que realizó el primero, reenviando la trama por su enlace 192.168.2.254
  • El equipo 192.168.2.3 recibe la trama
  • IP detecta que va dirigida a este mismo equipo, por lo que no la enruta y la pasa al protocolo superior

4. Tablas de enrutamiento

  • Cada host con IP debe tener configuradas sus tablas de enrutamiento
  • Estudiaremos las tablas de enrutamiento en
    • Windows
    • Linux/Unix
  • Se manejan con el comando route o ip route

4.1. Filas y columnas

  • Cada fila de la tabla es una regla
    • Tiene información de cómo llegar a una red o host
  • Cada columna es el nombre de la información
    • Destino, máscara…

4.2. Descripción de columnas

  • Destino: IP (host o red) con el que se comparará la dirección de destino de los paquetes a enrutar
  • Máscara: Máscara que se aplica a la dirección de destino del paquete IP
    • Para saber si una entrada es utilizable por una IP destino, se aplica la máscara sobre la IP destino del paquete y se comprueba si coincide con la IP destino de la entrada
  • Puerta de acceso: Dirección IP del siguiente enrutador, si se utiliza esta entrada
  • Interfaz: enlace del host local por que el saldrá el paquete si se utiliza esta entrada
  • Métrica: si es posible usar más de una entrada, se utilizará preferiblemente la entrada con menor métrica

4.3. Windows

  • Comando route print

4.3.1. Modificar las tablas en Windows

  • Añadir una ruta para la red 157.0.0.0/8: se va por la interfaz 2, con métrica 3. Se envía al router 157.55.80.1
ROUTE ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1 METRIC 3 IF 2
  • La métrica y la interfaz son opcionales
  • Internet se puede especificar como 0.0.0.0

4.3.2. Activar el enrutamiento

  • Hay varios métodos, pero todos acaban modificando el registro
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\IpEnableRouter debe estar a 1
  • Después, hay que reiniciar

4.4. Linux

  • Comando route
alvaro@alvaro-vaio$ route  
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    600    0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 wlan0
192.168.1.0     *               255.255.255.0   U     600    0        0 wlan0
192.168.56.0    *               255.255.255.0   U     0      0        0 vboxnet0

4.5. Linux

  • Comando ip route
alvaro@alvaro-vaio~ ip route
default via 192.168.1.1 dev wlp0s20f3 proto dhcp metric 600 
169.254.0.0/16 dev docker0 scope link metric 1000 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 
192.168.1.0/24 dev wlp0s20f3 proto kernel scope link src 192.168.1.13 metric 600 

4.5.1. Modificar las tablas en Linux (route)

  • Añadir una ruta para la red 157.0.0.0/8: se va por la interfaz eth0, con métrica 3. Se envía al router 157.55.80.1
sudo route add -net 157.0.0.0 netmask 255.0.0.0 gw 157.55.80.1 metric 3 dev eth0
  • La métrica y la interfaz son opcionales
  • Internet se puede especificar como 0.0.0.0 o como default

4.5.2. Modificar las tablas en Linux (ip)

  • Añadir una ruta para la red 157.0.0.0/8: se va por la interfaz eth0, con métrica 3. Se envía al router 157.55.80.1
sudo ip route add 157.0.0.0/8 via 157.55.80.1 dev eth0 weigth 3
  • La métrica y la interfaz son opcionales
  • Internet se puede especificar como 0.0.0.0/0 o como default

4.5.3. Activar el enrutamiento

  • El ip forwarding es un parámetro de kernel.
  • Se puede comprobar si se está enrutando con
    • sysctl net.ipv4.ip_forward
  • Se puede activar con
    • sysctl -w net.ipv4.ip_forward=1
  • Para que se active en el siguiente inicio se debe cambiar el fichero /etc/sysctl.conf:
    • net.ipv4.ip_forward = 1

5. Referencias