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