Análisis de un destino que sólo se llega con TTL=1

Fecha: 14-21 de julio del 2020

 

Escenario

 

Realizando pruebas para una solución de una implementación real de PBR, ocurre que una de las IP del router local

es inaccesible mediante ping (ni ningún otro protocolo).

 

Como método de resolución de problemas se realizó una traza para ver "a donde se va el paquete" y encontramos

de que los paquetes realmente se van a internet (siendo una IP de nuestro gateway). Esto hay que analizarlo !

 

                    

1.- Prueba inicial

 

C:\>ping 192.168.1.1

 

Haciendo ping a 192.168.1.1 con 32 bytes de datos:

Tiempo de espera agotado para esta solicitud.

Tiempo de espera agotado para esta solicitud.

Tiempo de espera agotado para esta solicitud.

Tiempo de espera agotado para esta solicitud.

 

2.- Prueba con TTL=1 (similar al primer salto de un trace):

 

C:\>ping 192.168.1.1 -i 1

 

Haciendo ping a 192.168.1.1 con 32 bytes de datos:

Respuesta desde 192.168.1.1: bytes=32 tiempo=8ms TTL=255 (TTL 255 es generado por el router)

Respuesta desde 192.168.1.1: bytes=32 tiempo=1ms TTL=255

 

Detalle: en la captura se puede ver que la solicitud es con TTL=1 y las respuestas con TTL=255:

 

 

3.- Prueba con TTL=2 (similar al segundo salto de un trace):

 

C:\>ping 192.168.1.1 -i 2

 

Haciendo ping a 192.168.1.1 con 32 bytes de datos:

Respuesta desde 192.168.1.2: TTL expirado en tránsito. (vemos que el paquete se va a internet)

Respuesta desde 192.168.1.2: TTL expirado en tránsito.

 

                            

 

4.- Prueba con TTL=2 (similar al tercer salto de un trace):

 

C:\>ping 192.168.1.1 -i 3

 

Haciendo ping a 192.168.1.1 con 32 bytes de datos:

Tiempo de espera agotado para esta solicitud.  (lo “mata” el ISP y puede que no avise, o avisa y

Tiempo de espera agotado para esta solicitud. nuestro router tal vez dropee los avisos externos)

 

 

5.- Verificación del PBR:

 

CiscoL3#sh access-lists PBR-Vlan2

Extended IP access list PBR-Vlan2

    10 permit ip 192.168.2.0 0.0.0.255 192.168.3.0 0.0.0.255 (no hay matches)

CiscoL3#sh access-lists PBR-Vlan2toInternet

Extended IP access list PBR-Vlan2toInternet

    10 permit ip 192.168.2.0 0.0.0.255 any (54 matches)

CiscoL3#

 

CiscoL3#sh route-map

route-map PBR-Vlan2, permit, sequence 10

  Match clauses:

    ip address (access-lists): PBR-Vlan2

  Set clauses:

    ip next-hop 192.168.1.3

  Policy routing matches: 0 packets, 0 bytes (no hay matches)

route-map PBR-Vlan2, permit, sequence 20

  Match clauses:

    ip address (access-lists): PBR-Vlan2toInternet

  Set clauses:

    ip next-hop 192.168.1.2

  Policy routing matches: 9 packets, 828 bytes

CiscoL3#

 

6.- Verificación de la ruta por defecto:

 

Si ambas políticas no coinciden, el paquete se compara contra los destinos de la tabla de enrutamiento,

si ningún destino coincide, se envía al gateway por defecto, en elste caso la IP 192.168.1.4.

 

Que diferencia hay entre enviar a 192.168.1.2 y 192.168.1.4 ? puede ser por ejemplo que lo que llegue

a la IP 192.168.1.2 no sea filtrado, o se le aplique una QoS con mayor ancho de banda, etc...

 

CiscoL3#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

       i - IS-IS, su - IS-IS summary, 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, H - NHRP, l - LISP

       a - application route

       + - replicated route, % - next hop override, p - overrides from PfR

 

Gateway of last resort is 192.168.1.4 to network 0.0.0.0

 

S*    0.0.0.0/0 [1/0] via 192.168.1.4

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

C        192.168.1.0/24 is directly connected, Vlan1

L        192.168.1.1/32 is directly connected, Vlan1

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

C        192.168.2.0/24 is directly connected, Vlan2

L        192.168.2.1/32 is directly connected, Vlan2

CiscoL3#

 

7.- Solución del problema:

 

Al tener una sentencia any en la ACL del PBR, todo el tráfico matchea, y por lo tanto aplica al PBR

y con esto, el paquete se saltea la comparación de destinos de la tabla de enrutamiento (incluyendo

las redes directamente conectadas e IP local, aquí un lab con un ejemplo similar pero mas gráfico).

 

Para que no aplique en el PBR se agrega una denegación a todo el tráfico 192.168.x.x, recordemos

que esta sentencia deny no descarta el tráfico, sino simplemente saltea la política y el paquete pasa

a la tabla de enrutamiento.

Se puede ajustar mas la sentencia de la ACL pero el escenario real escalaba a mas redes.

 

CiscoL3#conf t

Enter configuration commands, one per line.  End with CNTL/Z.

CiscoL3(config)#ip access-list extended PBR-Vlan2toInternet

CiscoL3(config-ext-nacl)#5 deny ip 192.168.2.0 0.0.0.255 192.168.0.0 0.0.255.255

CiscoL3(config-ext-nacl)#end

CiscoL3#

 

8.- Verificación:

 

C:\>ping 192.168.1.1

 

Haciendo ping a 192.168.1.1 con 32 bytes de datos:

Respuesta desde 192.168.1.1: bytes=32 tiempo=2ms TTL=254

Respuesta desde 192.168.1.1: bytes=32 tiempo=10ms TTL=254

Respuesta desde 192.168.1.1: bytes=32 tiempo=2ms TTL=254

Respuesta desde 192.168.1.1: bytes=32 tiempo=7ms TTL=254

 

9.- Verificación en el router:

 

CiscoL3#sh access-lists PBR-Vlan2toInternet

Extended IP access list PBR-Vlan2toInternet

    5 deny ip 192.168.2.0 0.0.0.255 192.168.0.0 0.0.255.255 (1 match)

    10 permit ip 192.168.2.0 0.0.0.255 any (65 matches)

CiscoL3#

 

10.- Configuración del router:

 

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

Building configuration...

 

Current configuration : 3943 bytes

!

! Last configuration change at 15:05:49 UTC Tue Jul 14 2020

!

version 15.2

!

hostname CiscoL3

!

ip routing

!

ip dhcp pool DHCP-Vlan2

 network 192.168.2.0 255.255.255.0

 default-router 192.168.2.1

!

interface GigabitEthernet1/0/1

 switchport mode access

 spanning-tree portfast edge

!

interface GigabitEthernet1/0/2

 switchport access vlan 2

 switchport mode access

 spanning-tree portfast edge

!

interface GigabitEthernet1/0/3

 switchport mode access

 spanning-tree portfast edge

!

---todas las configuraciones iguales---

!

interface GigabitEthernet1/0/28

 switchport mode access

 spanning-tree portfast edge

!

interface Vlan1

 ip address 192.168.1.1 255.255.255.0

!

interface Vlan2

 ip address 192.168.2.1 255.255.255.0

 ip policy route-map PBR-Vlan2 (policy aplicada a lo que llega desde VLAN2)

!

ip route 0.0.0.0 0.0.0.0 192.168.1.4 (último recurso)

!

ip access-list extended PBR-Vlan2

 permit ip 192.168.2.0 0.0.0.255 192.168.3.0 0.0.0.255

ip access-list extended PBR-Vlan2toInternet

 deny ip 192.168.2.0 0.0.0.255 192.168.0.0 0.0.255.255

 permit ip 192.168.2.0 0.0.0.255 any

!

route-map PBR-Vlan2 permit 10 (primera comparación)

 match ip address PBR-Vlan2

 set ip next-hop 192.168.1.3 (consecuencia)

!

route-map PBR-Vlan2 permit 20 (segunda comparación)

 match ip address PBR-Vlan2toInternet

 set ip next-hop 192.168.1.2 (consecuencia)

!

end

 

CiscoL3#

 

(2020) Packets sentenced to death

Rosario, Argentina