Paquete IP atravesando la red en “reversa”

Fecha: 14 y 15 de abril del 2020 (durante la cuarentena)

 

Escenario

 

En este documento se plantea alcanzar un servidor web desde una PC y en el recorrido invertir las

IP de origen y destino para dar una sensación de que el paquete viaja en “reversa”, al menos por

un par de saltos, antes de “enderezarse” y llegar a destino.

 

 

Este es un escenario de NAT y tiene la única finalidad o utilidad de aprender a abstraerse entre origen

y destino y sustituir direcciones IP. También tiene una pequeña cuota de enrutamiento.

 

Debo aclarar que se realizó de la manera mas simple posible, suelo llamar este método “en Assembler”

ya que se raliza un paso por vez. Se puede realizar de manera mas sofisticada, como por ejemplo con

un par de ASA que nateen origen y destino en un único paso, o también con los routers mismos.

 

Este es un laboratorio realizado integramente en Packet Tracer, podemos ver algunos detalles y como

se aplicaron los NAT en cada router para modificar origen o destino según la necesidad de la mutación

de/los paquete/s a medida que avanzaban hacia el destino.

 

(click aquí para ampliar)

 

Este laboratorio se lo dedico a unos compañeros de trabajo que tienen cierta “adicción” al nateo y ponen

a prueba mi frágil paciencia... y que quedó inmortalizado en un meme !

 

 

1.- Prueba desde el origen:

 

 

2.- Verificación en la PC cliente:

 

C:\>netstat

 

Active Connections

 

  Proto  Local Address               Foreign Address        State

  TCP     192.168.0.100:1030     192.168.1.100:80        ESTABLISHED

C:\>

 

3.- Verificación en los routers del recorrido:

 

En el primer router cambia la IP de origen por una IP “neutral” que no afecte ni origen ni destino,

este NAT es un NAT saliente (aunque estemos acostumbrados a leerlo a la inversa).

Cuando mencione “rango” debe entenderse como red, rango 192.168.2.100 es la red 2.0/24).

 

Router1#sh ip nat translations

Pro  Inside global            Inside local                 Outside local           Outside global

---  192.168.2.100            192.168.0.100      ---                ---

tcp 192.168.2.100:1030 192.168.0.100:1030 192.168.1.100:80   192.168.1.100:80

 

Router1#

 

En el segundo router cambia la IP de destino por la IP de origen “original” (192.168.0.100), total

ese rango ya quedó atras nateado como 192.168.2.100 y Router2 tiene una ruta que le dice que

es “hacia la derecha” (del gráfico). Aquí el paquete empieza a invertirse.

Este NAT es entrante (cambia el destino).

 

Router2#sh ip nat translations

Pro  Inside global         Inside local            Outside local           Outside global

---  192.168.1.100         192.168.0.100      ---                ---

tcp 192.168.1.100:80   192.168.0.100:80   192.168.2.100:1030 192.168.2.100:1030

 

Router2#

 

En el tercer router el paquete se invierte completamente, cambiando el origen 192.168.2.100 por

192.168.1.100 (originalmente la IP destino). Ahora las IP de origen y destino están completamente

invertidas, podemos presumir que el paquete “viaja al revés”.

Este NAT es saliente (cambia el origen).

 

Router3# sh ip nat translations

Pro  Inside global            Inside local                 Outside local           Outside global

---  192.168.1.100            192.168.2.100      ---                ---

tcp 192.168.1.100:1030 192.168.2.100:1030 192.168.0.100:80   192.168.0.100:80

 

Router3#

 

En el cuarto router no hay NAT, y el paquete viajando invertido se reenvía por rutas estáticas invertidas

192.168.0.0/24 “a la derecha” y 192.168.1.0/24 “a la izquierda” (del gráfico).

 

Router4# sh ip nat translations (este es el router central y no hay NAT configurado)

Router4#

 

En el quinto router el paquete comienza a “enderezarse”, se le realiza un NAT a la dirección IP de destino

a un rango también “neutral” 192.168.3.100 (podría haber utilizado el rango 192.168.2.100 pero no quería

crear (más) confusión), la IP de origen se mantiene como 192.168.1.100.

Este NAT es entrante (cambia el destino).

 

Router5# sh ip nat translations

Pro  Inside global          Inside local            Outside local           Outside global

---  192.168.0.100         192.168.3.100      ---                ---

tcp 192.168.0.100:80   192.168.3.100:80   192.168.1.100:1030 192.168.1.100:1030

 

Router5#

 

En el sexto router cambiamos la IP de origen por la “original” o real (192.168.0.100), la IP de destino se

mantiene con el rango neutral 192.168.3.100. Este NAT es saliente (cambia el origen).

 

Router6# sh ip nat translations

Pro  Inside global            Inside local                 Outside local           Outside global

---  192.168.0.100            192.168.1.100      ---                ---

tcp 192.168.0.100:1030 192.168.1.100:1030 192.168.3.100:80   192.168.3.100:80

 

Router6#

 

En el séptimo router cambia la IP de destino desde la IP “neutral” a la IP original (192.168.1.100), quedando

completamente “derecho” y llegando a destino en la red local. La IP de origen se mantiene con el mismo valor.

Este NAT es entrante (cambia el destino).

 

Router7# sh ip nat translations

Pro  Inside global         Inside local                Outside local           Outside global

---  192.168.3.100         192.168.1.100      ---                ---

tcp 192.168.3.100:80   192.168.1.100:80   192.168.0.100:1030 192.168.0.100:1030

 

Router7#

 

4.- Verificación en el server:

C:\>netstat

 

Active Connections

 

  Proto  Local Address            Foreign Address          State

  TCP     192.168.1.100:80       192.168.0.100:1030     ESTABLISHED

C:\>

 

5.- Pruebas con una traza:

 

Aqui la cosa empieza a ser mas dificil de entender, cuando realizamos una traza, vemos que todos los

saltos son 192.168.1.100 (la IP de destino), en realidad el segundo router “mata” en paquete con TTL

y como tiene una regla de NAT de que si llega un paquete con IP destino 192.168.100 la traduce a una

IP 192.168.0.100, entendemos como que “escucha” en la IP 192.168.1.100 y por lo tanto, “al matar” el

paquete enviará el acta de defunción (ICMP de tiempo expirado en tránsito) desde esa IP.

 

En el resto de los routers pasa lo mismo, excepto que las IP destino (del paquete origial) y las IP origen

(de quien mata el paquete) se van “nateando” y “desnateando” y recibimos siempre el aviso ICMP con

el mismo origen (192.168.1.100 tal vez fué 192.168.3.100 en el séptimo router).

 

Les doy un tiempo para pensar, sobre esto y sobre nuestra razón de existir, luego seguimos.

 

5.1.- Desde la PC cliente:

 

C:\>tracert 192.168.1.100

 

Tracing route to 192.168.1.100 over a maximum of 30 hops:

 

  1   1 ms       0 ms       0 ms      192.168.0.1

  2   0 ms       0 ms       0 ms      192.168.1.100

  3   0 ms       0 ms       0 ms      192.168.1.100

  4   10 ms     11 ms    0 ms      192.168.1.100

  5   12 ms     0 ms      0 ms      192.168.1.100

  6   14 ms     13 ms    0 ms      192.168.1.100

  7   15 ms     11 ms    0 ms      192.168.1.100

  8   10 ms     0 ms      11 ms    192.168.1.100

 

Trace complete.

 

C:\>

 

5.2.- Desde el server:

 

Aquí ocurre exactamente lo mismo pero a la inversa, o sea, de derecha a izquierda en el gráfico, pero

los mecanismos de NAT y avisos ICMP sn los mismos.

 

C:\>tracert 192.168.0.100

 

Tracing route to 192.168.0.100 over a maximum of 30 hops:

 

  1   3 ms       0 ms       0 ms      192.168.1.1

  2   0 ms       0 ms       0 ms      192.168.0.100

  3   0 ms       0 ms       0 ms      192.168.0.100

  4   10 ms     13 ms    0 ms      192.168.0.100

  5   0 ms       0 ms       12 ms    192.168.0.100

  6   12 ms     10 ms     0 ms      192.168.0.100

  7   12 ms     0 ms       14 ms    192.168.0.100

  8   11 ms     13 ms     13 ms    192.168.0.100

 

Trace complete.

 

C:\>

 

6.- Detalle de las tablas de enrutamiento:

 

Esto es simple, ruta por defecto en los extremos y rutas específicas a cada vecino según vayamos nateando.

 

Router1#sh ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area

       * - candidate default, U - per-user static route, o - ODR

       P - periodic downloaded static route

 

Gateway of last resort is 10.0.0.2 to network 0.0.0.0

 

     10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks

C       10.0.0.0/30 is directly connected, GigabitEthernet0/1

L       10.0.0.1/32 is directly connected, GigabitEthernet0/1

     192.168.0.0/24 is variably subnetted, 2 subnets, 2 masks

C       192.168.0.0/24 is directly connected, GigabitEthernet0/0

L       192.168.0.1/32 is directly connected, GigabitEthernet0/0

S*   0.0.0.0/0 [1/0] via 10.0.0.2  (esta es fácil porque no hay elección, todo al próximo router)

 

Router1#

 

Router2#sh ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area

       * - candidate default, U - per-user static route, o - ODR

       P - periodic downloaded static route

 

Gateway of last resort is not set

 

     10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks

C       10.0.0.0/30 is directly connected, GigabitEthernet0/1

L       10.0.0.2/32 is directly connected, GigabitEthernet0/1

C       10.0.0.4/30 is directly connected, GigabitEthernet0/0

L       10.0.0.5/32 is directly connected, GigabitEthernet0/0

S    192.168.0.0/24 [1/0] via 10.0.0.6   (aqui la ruta a la red de origen queda invertida)

S    192.168.2.0/24 [1/0] via 10.0.0.1   (esta es la red “neutral” de origen (a la izquierda))

 

Router2#

 

Router3#sh ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area

       * - candidate default, U - per-user static route, o - ODR

       P - periodic downloaded static route

 

Gateway of last resort is not set

 

     10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks

C       10.0.0.4/30 is directly connected, GigabitEthernet0/0

L       10.0.0.6/32 is directly connected, GigabitEthernet0/0

C       10.0.0.8/30 is directly connected, GigabitEthernet0/1

L       10.0.0.9/32 is directly connected, GigabitEthernet0/1

S    192.168.0.0/24 [1/0] via 10.0.0.10  (aqui la ruta a la red de origen queda invertida)

S    192.168.2.0/24 [1/0] via 10.0.0.5    (esta es la red “neutral” de origen (a la izquierda))

 

Router3#

 

Router4#sh ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area

       * - candidate default, U - per-user static route, o - ODR

       P - periodic downloaded static route

 

Gateway of last resort is not set

 

     10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks

C       10.0.0.8/30 is directly connected, GigabitEthernet0/1

L       10.0.0.10/32 is directly connected, GigabitEthernet0/1

C       10.0.0.12/30 is directly connected, GigabitEthernet0/0

L       10.0.0.13/32 is directly connected, GigabitEthernet0/0

S    192.168.0.0/24 [1/0] via 10.0.0.14  (aqui ambas rutas quedan completamente invertidas)

S    192.168.1.0/24 [1/0] via 10.0.0.9

S    192.168.2.0/24 [1/0] via 10.0.0.9   (esta es la red “neutral” de origen (a la izquierda))

S    192.168.3.0/24 [1/0] via 10.0.0.14 (esta es la red “neutral” de destino (a la derecha))

 

Router4#

 

Router5#sh ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area

       * - candidate default, U - per-user static route, o - ODR

       P - periodic downloaded static route

 

Gateway of last resort is not set

 

     10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks

C       10.0.0.12/30 is directly connected, GigabitEthernet0/0

L       10.0.0.14/32 is directly connected, GigabitEthernet0/0

C       10.0.0.16/30 is directly connected, GigabitEthernet0/1

L       10.0.0.17/32 is directly connected, GigabitEthernet0/1

S    192.168.1.0/24 [1/0] via 10.0.0.13 (aqui la ruta a la red de destino queda invertida)

S    192.168.3.0/24 [1/0] via 10.0.0.18 (esta es la red “neutral” de destino (a la derecha))

 

Router5#

 

Router6#sh ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area

       * - candidate default, U - per-user static route, o - ODR

       P - periodic downloaded static route

 

Gateway of last resort is not set

 

     10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks

C       10.0.0.16/30 is directly connected, GigabitEthernet0/1

L       10.0.0.18/32 is directly connected, GigabitEthernet0/1

C       10.0.0.20/30 is directly connected, GigabitEthernet0/0

L       10.0.0.21/32 is directly connected, GigabitEthernet0/0

S    192.168.1.0/24 [1/0] via 10.0.0.17 (aqui la ruta a la red de destino queda invertida)

S    192.168.3.0/24 [1/0] via 10.0.0.22 (esta es la red “neutral” de destino (a la derecha))

 

Router6#

 

Router7#sh ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area

       * - candidate default, U - per-user static route, o - ODR

       P - periodic downloaded static route

 

Gateway of last resort is 10.0.0.21 to network 0.0.0.0

 

     10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks

C       10.0.0.20/30 is directly connected, GigabitEthernet0/0

L       10.0.0.22/32 is directly connected, GigabitEthernet0/0

     192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks

C       192.168.1.0/24 is directly connected, GigabitEthernet0/1

L       192.168.1.1/32 is directly connected, GigabitEthernet0/1

S*   0.0.0.0/0 [1/0] via 10.0.0.21 (esta es fácil porque no hay elección, todo al próximo router)

 

Router7#

 

7.- Configuración de los equipos:

 

Router1#sh runn (sólo lo mas relevante)

Building configuration...

 

Current configuration : 759 bytes

!

version 15.1

!

hostname Router1

!

interface GigabitEthernet0/0

 ip address 192.168.0.1 255.255.255.0

 ip nat inside

!

interface GigabitEthernet0/1

 ip address 10.0.0.1 255.255.255.252

 ip nat outside

!

ip nat inside source static 192.168.0.100 192.168.2.100

!

ip route 0.0.0.0 0.0.0.0 10.0.0.2

!

end

 

Router1#

 

Router2# sh runn (sólo lo mas relevante)

Building configuration...

 

Current configuration : 829 bytes

!

version 15.1

!

hostname Router2

!

interface GigabitEthernet0/0

 ip address 10.0.0.5 255.255.255.252

 ip nat inside

!

interface GigabitEthernet0/1

 ip address 10.0.0.2 255.255.255.252

 ip nat outside

!

ip nat inside source static 192.168.0.100 192.168.1.100

!

ip route 192.168.0.0 255.255.255.0 10.0.0.6

ip route 192.168.2.0 255.255.255.0 10.0.0.1

!

end

 

Router2#

 

Router3# sh runn (sólo lo mas relevante)

Building configuration...

 

Current configuration : 814 bytes

!

version 15.1

!

hostname Router3

!

interface GigabitEthernet0/0

 ip address 10.0.0.6 255.255.255.252

 ip nat inside

!

interface GigabitEthernet0/1

 ip address 10.0.0.9 255.255.255.252

 ip nat outside

!

ip nat inside source static 192.168.2.100 192.168.1.100

!

ip route 192.168.2.0 255.255.255.0 10.0.0.5

ip route 192.168.0.0 255.255.255.0 10.0.0.10

!

end

 

Router3#

 

Router4# sh runn (sólo lo mas relevante)

Building configuration...

 

Current configuration : 819 bytes

!

version 15.1

!

hostname Router4

!

interface GigabitEthernet0/0

 ip address 10.0.0.13 255.255.255.252

!

interface GigabitEthernet0/1

 ip address 10.0.0.10 255.255.255.252

!

ip route 192.168.1.0 255.255.255.0 10.0.0.9

ip route 192.168.0.0 255.255.255.0 10.0.0.14

ip route 192.168.3.0 255.255.255.0 10.0.0.14

ip route 192.168.2.0 255.255.255.0 10.0.0.9

!

end

 

Router4#

 

Router5# sh runn (sólo lo mas relevante)

Building configuration...

 

Current configuration : 817 bytes

!

version 15.1

!

hostname Router5

!

interface GigabitEthernet0/0

 ip address 10.0.0.14 255.255.255.252

 ip nat outside

!

interface GigabitEthernet0/1

 ip address 10.0.0.17 255.255.255.252

 ip nat inside

!

ip nat inside source static 192.168.3.100 192.168.0.100

!

ip route 192.168.1.0 255.255.255.0 10.0.0.13

ip route 192.168.3.0 255.255.255.0 10.0.0.18

!

end

 

Router5#

 

Router6# sh runn (sólo lo mas relevante)

Building configuration...

 

Current configuration : 830 bytes

!

version 15.1

!

hostname Router6

!

interface GigabitEthernet0/0

 ip address 10.0.0.21 255.255.255.252

 ip nat outside

!

interface GigabitEthernet0/1

 ip address 10.0.0.18 255.255.255.252

 ip nat inside

!

ip nat inside source static 192.168.1.100 192.168.0.100

!

ip route 192.168.1.0 255.255.255.0 10.0.0.17

ip route 192.168.3.0 255.255.255.0 10.0.0.22

!

end

 

Router6# 

 

Router7# sh runn (sólo lo mas relevante)

Building configuration...

 

Current configuration : 774 bytes

!

version 15.1

!

hostname Router7

!

interface GigabitEthernet0/0

 ip address 10.0.0.22 255.255.255.252

 ip nat outside

!

interface GigabitEthernet0/1

 ip address 192.168.1.1 255.255.255.0

 ip nat inside

!

ip nat inside source static 192.168.1.100 192.168.3.100

!

ip route 0.0.0.0 0.0.0.0 10.0.0.21

!

end

 

Router7#

 

(2020) Another mutant packet

Rosario, Argentina