Análisis de la publicación de un servicio a internet en un gateway secundario
Fecha: 3 de octubre del 2017
Escenario
Este escenario plantea la dificultad de publicar un servicio mediante una IP proporcionada por el ISP, pero fuera
del rango de la IP de la interface, en un bloque diferente pero accesible mediante mecanismos de enrutamiento
por parte del proveedor (suele ser un tema de NAT estático en CCNA, pero aquí le agregamos algo de dificultad).
Aquí se planteó en forma real con el siguiente caso:
El cliente tiene una conexión llamada Borde-1, con la IP 200.0.0.2/30, también posee una subred para publicar servicios
en el rango 190.0.0.0/29, proporcionada por el ISP.
Por cuestiones de redundancia/migración/lo que sea, se debe implementar un segundo router de borde pero al tener
una conexión /30, se utilizará una IP del rango virtual, o al menos eso intentaremos.
Como funcionaba esto del NAT en otra IP diferente a la interface:
El proveedor nos proporciona una IP para nuestro router, el la resuelve por ARP desde su router (nuestro gateway) y
también publica este segmento en su BGP para ser alcanzada desde el resto de internet.
También nos proporciona un segmento virtual /29, es virtual ya que no lo asignaremos a una interface sino a mecanismos
NAT para reenviar a servidores WEB internos (correo, RDP, etc…).
El proveedor instalará una ruta específica para alcanzar este segmento /29 vía la IP de nuestra interface por lo tanto quedará:
Pero al configurar una IP “virtual” en una interface física en Borde-2 la cosa se complica, ya que el proveedor no tendrá manera
de alcanzarla mediante una ruta específica (a que próximo salto), ejemplo:
ip route 190.0.0.0 255.255.255.248 200.0.0.2
ip route 190.0.0.6 255.255.255.255 190.0.0.1 ??? esto sería redundante ya que se incluiría en el mismo segmento de la ruta anterior.
Tratemos de buscar soluciones…
1.- Con Packet Tracer: descartado, tendremos que ir a los fierros.
2.- Mediante ARP manipulado: descartado, falseamos como llegar a la MAC manipulando las entradas:
Borde-1(config)#arp 190.0.0.6 0025.451e.734d arpa
Borde-2(config)#arp 190.0.0.1 30e4.db53.2b21 arpa
ó
Borde-2(config)#arp 200.0.0.1 000d.658f.85ee arpa
Router-ISP#ping
190.0.0.6
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 190.0.0.6,
timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5)
Router-ISP#
Esperamos a que reenvíe a Borde-1 y este a Borde-2, pero el primero al no tener entradas 190.0.0.0/29 en la
tabla de enrutamiento envía al gateway (200.0.0.1) produciendo un bucle. Volvemos atrás estos cambios.
3.- Mediante manipulación de rutas:
3.1.- Verificación inicial:
Router-ISP#sh
ip route
---omitido---
Gateway of last resort is 0.0.0.0 to network
0.0.0.0
200.0.0.0/30 is subnetted, 1 subnets
C
200.0.0.0 is directly connected, FastEthernet0/0
190.0.0.0/29 is subnetted, 1 subnets
S 190.0.0.0 [1/0] via 200.0.0.2
S*
0.0.0.0/0 is directly connected, Null0
Router-ISP#
3.2.- Verificación de conectividad al forwarding real:
Router-ISP#ping
190.0.0.1 (OK)
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 190.0.0.1,
timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip
min/avg/max = 1/2/4 ms
Router-ISP#
3.3.- Verificación de entradas ARP:
Router-ISP#sh arp (no existen es como si estuviese detrás de un próximo salto)
Protocol
Address Age (min)
Hardware Addr Type Interface
Internet
200.0.0.1 - 000d.658f.85ee ARPA
FastEthernet0/0
Internet
200.0.0.2 6 30e4.db53.2b21 ARPA
FastEthernet0/0
Router-ISP#
3.4.- Verificación a Borde-2:
Router-ISP#ping
190.0.0.6
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 190.0.0.6,
timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5)
Router-ISP#
3.5.- Verificación en Borde-1:
Borde-1#sh ip route (aunque tengamos un NAT con 190.0.0.1, no hay entradas de la red 190.0.0.0/29)
---omitido---
192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C
192.168.1.0/24 is directly connected, GigabitEthernet0/0
L
192.168.1.1/32 is directly connected, GigabitEthernet0/0
200.0.0.0/24
is variably subnetted, 2 subnets, 2 masks
C
200.0.0.0/30 is directly connected, GigabitEthernet0/1
L
200.0.0.2/32 is directly connected, GigabitEthernet0/1
Borde-1#
3.6.- Creamos una entrada en dicha subred:
Borde-1#conf
t
Enter configuration commands, one per
line. End with CNTL/Z.
Borde-1(config)#int gi0/1
Borde-1(config-if)#ip add 190.0.0.5 255.255.255.248 secondary
Borde-1(config-if)#end
Borde-1#
3.7.- Verificamos:
Borde-1#sh ip route
---omitido---
190.0.0.0/16 is variably subnetted, 2 subnets, 2 masks
C 190.0.0.0/29 is directly connected,
GigabitEthernet0/1 (ahora si resolverá ARP)
L
190.0.0.5/32 is directly connected, GigabitEthernet0/1
192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C
192.168.1.0/24 is directly connected, GigabitEthernet0/0
L
192.168.1.1/32 is directly connected, GigabitEthernet0/0
200.0.0.0/24 is variably subnetted, 2 subnets, 2 masks
C
200.0.0.0/30 is directly connected, GigabitEthernet0/1
L
200.0.0.2/32 is directly connected, GigabitEthernet0/1
Borde-1#
3.8.- Verificamos:
Borde-1#ping
190.0.0.6
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 190.0.0.6,
timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
Borde-1#
3.9.- Verificamos nuevamente (y de la manera correcta):
Borde-1#ping
190.0.0.6 source 190.0.0.5
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 190.0.0.6,
timeout is 2 seconds:
Packet sent with a source address of 190.0.0.5
!!!!!
Success rate is 100 percent (5/5), round-trip
min/avg/max = 1/1/4 ms
Borde-1#
3.10.- Verificamos ARP:
Borde-1#sh arp
Protocol
Address Age (min) Hardware Addr Type
Interface
Internet 190.0.0.5 - 30e4.db53.2b21 ARPA GigabitEthernet0/1
Internet 190.0.0.6 1 0025.451e.734d ARPA
GigabitEthernet0/1
Internet 192.168.1.1 - 30e4.db53.2b20 ARPA GigabitEthernet0/0
Internet 200.0.0.1 16 000d.658f.85ee ARPA GigabitEthernet0/1
Internet 200.0.0.2 - 30e4.db53.2b21 ARPA GigabitEthernet0/1
Borde-1#
3.11.- Verificamos desde Router-ISP:
Router-ISP#ping
190.0.0.6
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 190.0.0.6,
timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
Router-ISP#
3.12.- Creamos una ruta de retorno:
Borde-2#conf
t
Enter configuration commands, one per
line. End with CNTL/Z.
Borde-2(config)#ip route 0.0.0.0 0.0.0.0 190.0.0.5
Borde-2(config)#end
Borde-2#
3.13.- Verificamos:
Borde-2#ping
200.0.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 200.0.0.1,
timeout is 2 seconds:
.!!!! (faltaba si o si una ruta vía un gateway 190.0.0.x)
Success rate is 80 percent (4/5), round-trip
min/avg/max = 1/1/4 ms
Borde-2#
3.14.- Verificamos desde Ruter-ISP:
Router-ISP#ping
190.0.0.6
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 190.0.0.6,
timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip
min/avg/max = 1/1/4 ms
Router-ISP#
3.15.- Verificamos
ARP:
Router-ISP#sh
arp
Protocol
Address Age (min) Hardware Addr Type
Interface
Internet
200.0.0.1 - 000d.658f.85ee ARPA
FastEthernet0/0
Internet
200.0.0.2 22 30e4.db53.2b21 ARPA
FastEthernet0/0
Router-ISP#
Borde-2#sh
arp
Protocol
Address Age (min) Hardware Addr Type
Interface
Internet
192.168.1.1 - 0025.451e.734c ARPA FastEthernet0/0
Internet
190.0.0.6 - 0025.451e.734d ARPA
FastEthernet0/1
Internet 190.0.0.5 9 30e4.db53.2b21 ARPA FastEthernet0/1
Borde-2#
3.16.- En resúmen:
3.16.1.- Router-ISP recibe un paquete con destino a 190.0.0.6, verifica en la tabla de enrutamiento y reenvía a 200.0.0.2
3.16.2.- Borde-1 recibe el paquete y a traves de su IP secundaria resuelve ARP de 190.0.0.6, obtiene la MAC y lo reenvía al mismo.
3.16.3.- Borde-2 recibe la trama/paquete y lo procesa al verificar que la MAC/IP es la propia.
3.16.4.- Borde-2 responde a la IP origen (ahora como IP destino) pero con MAC destino de la IP 190.0.0.5 (scundaria Borde-2) ya
que su ruta por defecto apunta a esta IP.
3.16.5.- Borde-1 recibe el paquete, verifica la IP destino, y reenvía a 200.0.0.1 que es su próximo salto en la ruta por defecto.
3.16.6.- Router-ISP recibe el paquete, verifica la IP destino y reenvía segíun su tabla de enrutamiento.
4.- Volvemos la IP secundaria atrás y verificamos con rutas con
interface de salida:
El análisis de este comportamiento puede verse en http://www.vilarrasa.com.ar/ip%20route%20via%20eth.htm
Detalle:
4.1.- Eliminamos la IP salvadora en Borde-1:
Borde-1(config)#int gi0/1
Borde-1(config-if)#no ip address 190.0.0.5 255.255.255.248 secondary
Borde-1(config-if)#end
Borde-1#
4.2.- Reemplazamos rutas en Borde-2:
Borde-2(config)#no ip route 0.0.0.0 0.0.0.0 190.0.0.5
Borde-2(config)#ip route 0.0.0.0 0.0.0.0 fa0/1
Borde-2(config)#end
Borde-2#
4.3.- Verificamos:
Borde-2#sh
ip route
---omitido---
Gateway of last resort is 0.0.0.0 to network
0.0.0.0
190.0.0.0/29 is subnetted, 1 subnets
C
190.0.0.0 is directly connected, FastEthernet0/1
S* 0.0.0.0/0 is directly connected, FastEthernet0/1
Borde-2#
4.4.- Modificamos en Router-ISP:
Router-ISP#conf
t
Router-ISP(config)#ip route 190.0.0.6 255.255.255.255 fa0/0
Router-ISP(config)#end
Router-ISP#
4.5.- Verificamos:
Router-ISP#sh
ip route
---omitido---
Gateway of last resort is 0.0.0.0 to network
0.0.0.0
200.0.0.0/30 is subnetted, 1 subnets
C
200.0.0.0 is directly connected, FastEthernet0/0
190.0.0.0/16 is variably subnetted, 2 subnets, 2 masks
S 190.0.0.6/32 is directly connected,
FastEthernet0/0
S 190.0.0.0/29
[1/0] via 200.0.0.2
S*
0.0.0.0/0 is directly connected, Null0
Router-ISP#
4.6.- Verificamos:
Router-ISP#ping
190.0.0.6
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 190.0.0.6,
timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip
min/avg/max = 1/1/4 ms
Router-ISP#
4.7.- Verificamos ARP: (nos mostrará un comportamiento…un tanto loco)
Router-ISP#sh
arp
Protocol
Address Age (min)
Hardware Addr Type Interface
Internet 190.0.0.6 0 0025.451e.734d ARPA
FastEthernet0/0
Internet
200.0.0.1 - 000d.658f.85ee ARPA
FastEthernet0/0
Router-ISP#
Borde-2#sh
arp
Protocol
Address Age (min) Hardware Addr Type
Interface
Internet
192.168.1.1 - 0025.451e.734c ARPA
FastEthernet0/0
Internet
190.0.0.6 - 0025.451e.734d ARPA
FastEthernet0/1
Internet 200.0.0.1 0 000d.658f.85ee ARPA FastEthernet0/1
Borde-2#
Pero funciona en otro router nuestra IP de un rango asignado para port-forwardings de servicios, tarea cumplida !
(2017) Mutant packets falling over me !
Rosario, Argentina