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