Analizando la ruta por defecto en un switch SG350
Fecha: 9 y 10 de abril
del 2024
Escenario
Con la necesidad de migrar el segmento IP en unos
switches SG350 en producción, y donde en el procedimiento se preveía la pérdida
de conectividad contra la IP original y se debía generar una reconexión a la
nueva IP, nos encontramos con que el switch mantenía ambas direcciones y
también default gateway sin perder conexión, que a diferencia de los Catalyst,
la IP que configuramos “pisa” o reemplaza la anterior.
Esto generó el debate de cómo quedan trabajando
ambos gateways, ya que durante la migración el router de la red tiene doble
direccionamiento IP (secondary address) hasta que se elimina la original luego
de asegurarnos la conectividad. Como todos los labs, empieza simple y derrapa.
Vamos y vemos…
En este laboratorio representamos las IP
cambiadas por simplicidad, pero mantenemos el mismo modelo de equipo para
replicar el comportamiento.
1.- Configuración original
del router (gateway del segmento):
!
interface vlan 1
ip address
192.168.1.1 255.255.255.0
!
2.- Verificamos conectividad
gateway – switch:
Router#ping 192.168.1.10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.10,
timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip
min/avg/max = 1/2/4 ms
Router#
3.- Se agrega la IP
secundaria:
Al final de la migración esta será la única IP
(con un pase de mágia cambiará de secundaria a primaria).
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#int vlan 1
Router(config-if)#ip add 10.0.0.1
255.255.255.0 secondary
Router(config-if)#end
Router#
4.- Template a aplicar:
Nos conectamos desde el router en caso de que el
template no entre en un solo paquete y que no entre la línea del gateway, y
perder la conectividad contra la IP nueva (por no tener gateway).
Supuestamente al cambiar la IP se pierde la
conectividad y debemos conectarnos a la IP nueva.
conf t
int vlan 1
ip add 10.0.0.10 255.255.255.0
exit
ip default-gateway 10.0.0.1
end
5.- Aplicamos template:
Al pegar el template y ser unos pocos bytes
entrarían en un solo paquete IP y también en el buffer de la sesión CLI del
switch, por lo que todos los comandos deberían aplicarse.
Router#telnet 192.168.1.10 (aquí usamos Telnet por simplicidad)
Trying 192.168.1.10 ... Open
User Name:admin
Password:*********
Switch#conf t
Switch(config)#int vlan 1
Switch(config-if)#ip add 10.0.0.10
255.255.255.0
Switch(config-if)#exit
Switch(config)#ip default-gateway 10.0.0.1
Switch(config)#end
Switch#
Switch# (no se perdió conectividad)
6.- Verificamos
configuración en el switch:
Switch#sh runn
config-file-header
---omitido/resumido---
hostname Switch
ip telnet server
!
interface vlan 1
ip address
10.0.0.10 255.255.255.0
ip address
192.168.1.10 255.255.255.0 (no
dice secondary como en los Catalyst)
no ip
address dhcp
!
---omitido/resumido---
!
ip default-gateway 10.0.0.1
ip default-gateway 192.168.1.1
Switch#
7.- Verificamos a nivel ARP:
Switch#sh arp
Total number of entries: 2
VLAN
Interface IP address HW address
status
--------------------------------------------------------------------------------
vlan 1
gi9 10.0.0.1
cc:46:d6:2b:5a:54 dynamic
vlan 1
gi9 192.168.1.1
cc:46:d6:2b:5a:54 dynamic
Switch#
8.- Verificamos a nivel
rutas:
Switch#sh ip route (vemos que la tabla es “igual pero diferente” a una
tabla IOS)
Maximum Parallel Paths: 1 (1 after reset)
IP Forwarding: enabled
Codes: > - best, C - connected, S - static
S
0.0.0.0/0 [1/4] via 10.0.0.1, 00:01:58, vlan 1 (aquí si pisó el gateway)
C 10.0.0.0/24 is directly connected,
vlan 1
C 192.168.1.0/24 is directly connected,
vlan 1
Switch#
9.- Verificamos conectividad
fuera de la red:
Switch#ping 190.0.0.1
Pinging 190.0.0.1 with 18 bytes of data:
18 bytes from 190.0.0.1: icmp_seq=1. time=0 ms
18 bytes from 190.0.0.1: icmp_seq=2. time=0 ms
18 bytes from 190.0.0.1: icmp_seq=3. time=0 ms
18 bytes from 190.0.0.1: icmp_seq=4. time=0 ms
10.- Eliminamos la IP
original a migrar:
Switch#conf t
Switch(config)#int vlan 1
Switch(config-if)#no ip add 192.168.1.10
[Connection to 192.168.1.10 closed by foreign
host]
Router#
11.- Nos conectamos a la IP
migrada:
Router#telnet 10.0.0.10
Trying 10.0.0.10 ... Open
User Name:admin
Password:*********
12.- Verificamos la
configuración:
Switch#sh runn
---omitido/resumido---
hostname Switch
ip telnet server
!
interface vlan 1
ip address
10.0.0.10 255.255.255.0
no ip
address dhcp
!
---omitido/resumido---
!
ip default-gateway 10.0.0.1 (implicitamente se eliminó el
gateway 192.168.1.1)
Switch#
13.- Realizamos una
contraprueba agregando la IP original:
Switch#conf t
Switch(config)#int vlan 1
Switch(config-if)#ip add 192.168.1.10
255.255.255.0
Switch(config-if)#exit
Switch(config)#ip default-gateway
192.168.1.1
Switch(config)#end
Switch#
14.- Verificamos rutas:
Aquí determinamos que el gateway no es la última
ruta agregada, sino que aparentemente utiliza como gateway la IP más baja
alcanzable (reachable) de los segmentos existentes.
Switch#sh ip route
Maximum Parallel Paths: 1 (1 after reset)
IP Forwarding: enabled
Codes: > - best, C - connected, S - static
S
0.0.0.0/0 [1/4] via 10.0.0.1, 00:16:52, vlan 1
C 10.0.0.0/24 is directly connected,
vlan 1
C 192.168.1.0/24 is directly connected,
vlan 1
Switch#
15.- Repasemos los criterios
de agregado de rutas:
Cuando el router debe decidir agregar o
reemplazar una ruta en la tabla de enrutamiento, existen criterios tales como:
15.1.- Mejor distancia
administrativa (AD), donde:
Connected 0
Static 1
eBGP 20
EIGRP (internal) 90
IGRP 100
OSPF 110
IS-IS 115
RIP 120
EIGRP (external) 170
iBGP 200
EIGRP summary route 5
De dos rutas al mismo destino con diferentes AD,
se agregará la que tenga menor valor.
15.2.- Mejor métrica:
De dos rutas al mismo destino con similar AD, se
instalará la que tenga mejor métrica decidida por el protocolo o manualmente
(por ejemplo el comando cost en OSPF).
15.3.- Mayor coincidencia:
De dos rutas al mismo destino con similar AD y
con similar métrica, se instalará la que tenga mayor coincidencia de bits en el
prefijo determinado por la máscara (máscara más bits gana).
15.4.- Balanceo de carga:
De dos rutas al mismo destino con similar AD, con
similar métrica y con similar prefijo/máscara, se instalarán ambas y se
realizará balanceo de carga (no discutiremos este criterio, pero puede ser por
destino o por paquete).
16.- ¿y la ruta por defecto
?
En el caso de la ruta por defecto veremos que el
concepto es el mismo, es una ruta a todo lo que no coincida anteriormente, pero
debe existir una (y sólo una) como último recurso tal como vemos en este
ejemplo de un switch Catalyst:
Switch#sh ip route
Codes: C - connected, S - static, I - IGRP, 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 192.168.1.1 to network
0.0.0.0
C
192.168.1.0/24 is directly connected, Vlan1
C
192.168.2.0/24 is directly connected, Vlan2
S*
0.0.0.0/0 [1/0] via 192.168.1.1
[1/0] via 192.168.2.1
Switch#
| |
Switch#
| misma métrica
misma AD
17.- Criterio de agregado de
la ruta por defecto:
Asumimos que este criterio se basa en la búsqueda
recurrente del próximo salto (next-hop) asociado a la ruta por defecto (quad
zero), esto sería algo así:
Suponiendo que el destino es 190.0.0.1 se busca
en la tabla en orden descendente:
-
coinciden los primeros 24 bits con 192.168.1.0 ? no
-
coinciden los primeros 24 bits con 192.168.2.0 ? no
-
se asume que coincide con 0.0.0.0/0 192.168.1.1,
¿como llego a 192.168.1.1 ?
-
se incia una búsqueda de rutas a 192.168.1.1
-
coinciden los primeros 24 bits con 192.168.1.0 ? si
-
se reenvía el paquete a (la MAC de) 192.168.1.1
Por lo tanto determinamos que en la ruta por
defecto el criterio es la IP más baja del next-hop. Misterio resuelto.
(2024) Tales for rainy
afternoons
Rosario, Argentina