Unidad 05 — Control de tráfico y publicaciones

Esta unidad cubre las herramientas que un router usa para decidir qué tráfico dejar pasar y qué rutas enseñar o aprender por los protocolos de ruteo dinámico. Las ACL (Access Control Lists) filtran tráfico IP en base al contenido de los paquetes; las distribute-list usan esas mismas ACL para filtrar los prefijos que un protocolo de ruteo publica o recibe; las prefix-list son una alternativa más flexible pensada específicamente para filtrar rangos de prefijos; y los route-map son la herramienta más general, capaz de combinar condiciones (match) con acciones (set) para aceptar, rechazar o modificar atributos de una ruta.

Conceptos clave

ACL estándar
Rango 1–99 (y 1300–1999 extendido). Filtra únicamente por IP origen. Sintaxis: access-list <n> {permit|deny} source [wildcard].
ACL extendida
Rango 100–199 (y 2000–2699 extendido). Filtra por protocolo, IP origen, IP destino y puerto. Sintaxis: access-list <n> {permit|deny} protocol source source-wildcard [operator port] destination destination-wildcard [operator port] [established] [log].
ACL nombrada
Se identifica por nombre en vez de número: ip access-list {standard|extended} <name>, y las líneas de permit/deny se ingresan como subcomandos.
Wildcard mask
Máscara inversa a la de subred: bit en 0 = chequea ese bit, bit en 1 = no chequea (no importa su valor).
Deny implícito
Toda ACL termina con un deny any (o equivalente) implícito: si ninguna línea hizo match, el tráfico se descarta.
Distribute-list
Filtra los prefijos que un protocolo de ruteo dinámico enseña o aprende, usando una ACL como criterio. Máximo una distribute-list de entrada y una de salida en configuración global por proceso de ruteo (además puede haber una in y una out por interfaz).
Prefix-list
Alternativa a las ACL pensada para filtrar prefijos, identificada por nombre y con sentencias numeradas (número de secuencia) evaluadas en orden creciente. Última línea implícita: deny 0.0.0.0/0 le 32.
Atributos ge / le
ge (greater equal): la máscara del prefijo evaluado debe ser igual o más específica que el valor indicado. le (less equal): debe ser igual o menos específica que el valor indicado.
Route-map
Secuencia ordenada de declaraciones (statements), cada una con condiciones match y acciones set, y un resultado permit/deny. Si no hay match en ninguna declaración, se aplica un deny implícito final (igual que en una ACL).

Control o filtrado de tráfico con ACL

Las listas de acceso pueden usarse para filtrado de tráfico IP, restricción de acceso a equipos, filtrado de updates de ruteo (el tema central de esta unidad), marcado de paquetes para priorizar (QoS) y NAT. Dentro de un router, la lógica es: ACL IN → lógica de ruteo → ACL OUT; si cualquiera de las dos deniega el paquete, se descarta.

Lógica de aplicación de ACL IN y ACL OUT dentro de un router
ACL IN se aplica a la entrada, ACL OUT a la salida; un Deny en cualquiera de las dos descarta el paquete.

ACL estándar

Solo evalúan la IP origen del paquete.

R1(config)# access-list access-list-number {permit | deny} source [mask (wildcard)]
R1(config-if)# ip access-group access-list-number {in | out}
Análisis de paquetes con listas de acceso estándar: solo mira la dirección origen
Una ACL estándar solo inspecciona la dirección IP origen del encabezado IP.
Ejemplo de ACL estándar aplicada en un router entre dos redes 192.168.1.0/24 y 192.168.2.0/24
Ejemplo: access-list 2 permite solo a 192.168.1.5 llegar a la red 192.168.2.0/24 (aplicada out en E1); access-list 8 deniega a dos hosts puntuales de 192.168.2.0/24 el acceso a 192.168.1.0/24 y permite el resto (aplicada out en E0).

ACL extendida

Evalúan protocolo, IP origen, IP destino y puerto (para TCP/UDP), además de opciones como established y log.

R1(config)# access-list access-list-number {permit | deny} protocol source source-wildcard
    [operator] [port] destination destination-wildcard [operator] [port] [established] [log]
Análisis de paquetes con listas de acceso extendidas: mira protocolo, IP origen, IP destino y puerto
Una ACL extendida inspecciona protocolo, dirección origen, dirección destino y número de puerto.
Ejemplo de ACL extendida access-list 102 permitiendo UDP puerto 53 y TCP puerto 23
Ejemplo: access-list 102 permite UDP/53 (DNS) desde 192.168.1.0/24 hacia 192.168.2.0/24, y TCP/23 (telnet) solo hacia el host 192.168.2.3.

ACL nombradas

Igual que las numeradas, pero identificadas por nombre; el prompt indica si la lista es estándar (std) o extendida (ext).

R1(config)# ip access-list {standard | extended} name
R1(config-xxx-nacl)# {permit | deny} protocol source source-wildcard
                    [operator] [port] destination destination-wildcard
                    [operator] [port] [established] [log]
R1(config-if)# ip access-group name {in | out}

Leyendo e interpretando una ACL

Tabla de ejemplos de listas de acceso con su interpretación en español
Ejercicio de lectura: cada línea de ACL junto a su interpretación en lenguaje natural. Útil para practicar de memoria.

Topología de ejemplo y ejercicios de diseño

Esta topología (3 routers, 4 redes LAN, varios servidores) es la base de varios ejercicios de diseño de ACL:

Topología de ejemplo con routers A, B, C, cuatro redes LAN y servidores FTP/WEB/DNS
Router A conecta la red de servidores (192.168.1.0/24) con los routers B y C, que a su vez conectan las LAN de usuarios 192.168.2.0/24 y 192.168.3.0/24.
Configuración de ACLs en los routers A, B y C de la topología de ejemplo
Configuración de ACL 101 (router A, out), ACL 102 (router B, in) y ACL 103 (router C, in) sobre la topología anterior.
Ejercicio 1: pregunta de opción múltiple sobre una ACL de tres líneas
Ejercicio 1 del teórico: interpretar el efecto combinado de tres líneas de ACL sobre una subred.
Diagrama de topología del Ejercicio 2 con LAN A, B, C y D y un router a configurar
Ejercicio 2: diseñar la ACL de un router con dos interfaces seriales entre 4 LAN (A y B de un lado, C y D del otro), con requisitos de permitir/prohibir tráfico entre ellas, anti-spoofing y conexiones TCP establecidas.
Ejercicio 3: pregunta de opción múltiple sobre rangos de subred no afectados por una ACL
Ejercicio 3: dada una ACL de 4 líneas con distintos deny, identificar qué rango de direcciones de una subred queda sin afectar.

Mecanismos de control de publicaciones

Gestionar las publicaciones de rutas es decidir si enseñamos rutas, si no las enseñamos, o si las enseñamos modificando alguno de sus atributos. Se estudian tres mecanismos: distribute-list, prefix-list y route-map.

Distribute-list

Filtra los prefijos que un protocolo de ruteo dinámico enseña o aprende, apoyándose en una ACL para definirlos. El filtrado puede aplicarse en modo global (para todo el proceso) o por interfaz, y en sentido entrante y/o saliente. Como máximo se permite una distribute-list de entrada y una de salida en configuración global por cada proceso de ruteo, y una de entrada y una de salida por cada interfaz dentro de ese proceso.

Router(config)# router <protocolo> <AS_number | process_ID>
Router(config-router)# distribute-list <ACL number> <in | out> [interface]
Ejemplo 1 de distribute-list: OSPF entre R1 y R2 filtrando 172.16.1.0/24
Ejemplo 1: R2 le enseña a R1 los prefijos 172.16.X.0/24; R1 filtra 172.16.1.0/24 con distribute-list 1 in Fa0/0 y solo acepta los otros tres.
Ejemplo 2 de distribute-list: topología de 6 routers con 4 distribute-list en el router A
Ejemplo 2: aplicando 4 distribute-list en el router A (una por interfaz serial de salida), se logra que 10.0.1.0/24 solo se comunique con 10.0.3.0/24, y 10.0.2.0/24 solo con 10.0.4.0/24.

Prefix-list

Se usan para evaluar y seleccionar prefijos a publicar. Se identifican por nombre y, al igual que las ACL, pueden tener varias sentencias identificadas con un número de secuencia que se evalúan en orden creciente. La última línea es implícita: deny 0.0.0.0/0 le 32 (análogo al deny implícito de una ACL).

ip prefix-list list-name [seq sequence-value] {deny | permit} network/length [ge ge-value] [le le-value]

Si no se usan ge/le, se selecciona únicamente el prefijo indicado. Con ellos se indica qué bits analizar a partir del más significativo: ge exige que el prefijo evaluado sea subred del configurado y su máscara sea igual o más específica (mayor) que el valor luego de ge; le exige que sea igual o menos específica (menor) que el valor luego de le.

Árbol de ejemplo de atributos ge y le sobre 10.0.0.0/29 ge 30 le 31
Ejemplo: 10.0.0.0/29 ge 30 le 31 selecciona las subredes /30 y /31 contenidas en 10.0.0.0/29 (excluye la propia /29 y cualquier máscara más específica que /31).

Otros ejemplos de interpretación:

Las prefix-list también se aplican directamente a vecinos BGP para filtrar publicaciones entrantes/salientes:

ip prefix-list ort_bgp_in seq 5 deny 10.0.0.0/24 ge 25 le 26
ip prefix-list ort_bgp_in seq 10 permit 0.0.0.0/0 le 32
ip prefix-list ort_bgp_out seq 5 permit 0.0.0.0/0
!
router bgp 65000
 neighbor 192.168.1.2 remote-as 65100
 neighbor 192.168.1.2 prefix-list ort_bgp_in in
 neighbor 192.168.1.2 prefix-list ort_bgp_out out
Configuración de prefix-list aplicadas a un vecino BGP en sentido in y out
Este vecino BGP recibe todas las publicaciones salvo las de especificidad /25–/26 dentro de 10.0.0.0/24 (in), y solo se le publica la ruta por defecto (out).

Route-map

Son la herramienta más general de las tres: permiten encaminar tráfico tanto por destino como por origen y, en general, por cualquier característica especificable mediante una lista de acceso, además de marcar paquetes con distintos grados de prioridad y modificar diversos parámetros. Un route-map es una secuencia ordenada de declaraciones, cada una con un resultado permit/deny. Cada declaración tiene condiciones de match; si no existe una, se asume un match implícito (todo lo que no coincide con ningún match se descarta). Si se cumple una declaración, se aplican sus acciones set y las restantes declaraciones no se evalúan (igual que una ACL).

Cada declaración se identifica con un número de secuencia (por defecto 10, 20, 30... de forma creciente). El subcomando match especifica el criterio de verificación (comunidades BGP, prefix-list, ACL, etc.) y el subcomando set especifica la acción a tomar.

Router(config)# route-map name [permit | deny] sequence_number
Router(config-route-map)# match ip address ACL_number
Router(config-route-map)# set interface interfaz

Route-map — Ejemplo 1

Route-map Ejemplo 1: local-policy con match community, prefix-list y set weight, local-preference, as-path prepend
R1 (AS 65000) tiene un vecino eBGP R2 (AS 65100) con route-map local-policy in. Término 10: rutas marcadas con la community ortComm reciben set weight 300. Término 20: rutas permitidas por la prefix-list ort_bgp_in reciben set local-preference 125. Término 30: cualquier prefijo que no coincidió con los dos anteriores recibe un as-path prepend. Si nada matchea, el deny implícito final descarta el prefijo.

Route-map — Ejemplo 2

Route-map Ejemplo 2: CONTROL_PUBLICACIONES con deny NO_PUBLICADO, permit RED_CLIENTES set origin igp, permit RED_SERVIDORES set metric
A diferencia del Ejemplo 1, este route-map se aplica en sentido saliente (out): el router controla qué rutas le enseña a su vecino eBGP. Secuencia 10 deniega el prefijo 192.168.100.0/24 (vía prefix-list NO_PUBLICADO); secuencia 20 marca las rutas de clientes con origin igp; secuencia 30 marca las redes de servidores con metric 20; secuencia 100 permite el resto sin modificarlo.
Diagrama resumen del Route-map Ejemplo 2: qué prefijo se anuncia y con qué modificación según la coincidencia
Resumen de qué se anuncia al vecino 192.168.0.1 según qué prefix-list matchea cada prefijo: excelente para practicar de punta a punta un route-map con varios términos.

Cheat sheet — Control de tráfico y publicaciones