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