POLITICAS

 

¿Qué es una Política en Junos?

Es un conjunto de reglas con lógica If-Then (Si-Entonces). Su función es examinar las rutas que pasan por el router y decidir si las acepta, las rechaza o les cambia algún atributo (como el MED o el Local-Pref).

 

Los Componentes (La Anatomía)


Una política se arma siguiendo una jerarquía estricta. Imaginala como un edificio:

El Contenedor (Policy-statement)

Es el nombre global de la política.

set policy-options policy-statement MI-POLITICA 

 

Los Bloques (Terms)

Son los "párrafos" de la política. Se leen de arriba hacia abajo. Si una ruta coincide con un term, el router deja de leer el resto.

set policy-options policy-statement MI-POLITICA term PASO-1 

La Condición (From)

Es el FILTRO. Aquí defines qué estás buscando (una IP, un protocolo, una comunidad).

    ... term PASO-1 from route-filter 8.8.8.8/32 exact 

 La Acción (Then)

Es el RESULTADO. Qué haces cuando encuentras lo que buscabas.

    ... term PASO-1 then accept (o reject, o metric 50).

 

¿Cómo se arman? (El Proceso de Construcción)


El orden lógico para configurarlas en la CLI es siempre de lo general a lo específico:

Creas el nombre: set policy-options policy-statement NOMBRE

Creas el término: ... term NOMBRE-TERM

Pones la condición: ... from [protocolo | route-filter | as-path]

Pones la acción: ... then [accept | reject | metric | local-preference]

Dato clave: Si no pones un term, la política aplica a todo. Si pones varios term, el orden importa: el primero que haga "match" es el que manda. 

 

 ¿Dónde se aplican las Políticas? (Puntos de Aplicación)


En Juniper, una política se aplica en diferentes "hooks" o ganchos del sistema. Dependiendo de dónde la pongas, el router hará cosas totalmente distintas.


A. Protocolos de Enrutamiento (BGP, OSPF, IS-IS)


Aquí es donde controlas el flujo de información con tus vecinos.

Import: Controlas lo que entra a tu base de datos desde el vecino.

Export: Controlas lo que le cuentas al vecino (incluyendo pasar rutas de un protocolo a otro, como de OSPF a BGP).

B. Tabla de Reenvío (Forwarding Table)


Este es un uso avanzado. Aquí la política no decide qué rutas aprender, sino cómo debe el hardware mover los paquetes.

Uso común: Para hacer Load Balancing (Balanceo de carga). Por defecto, Juniper solo usa una ruta; con una política aplicada aquí, le dices que use todos los caminos disponibles.

Comando: set routing-options forwarding-table export MI-POLITICA-BALANCEO

C. Agregación de Rutas (Aggregate Routes)

Si quieres crear una "super-red" (sumarización) solo si ciertas subredes están activas.

Uso: Crear una ruta /16 solo si existen al menos tres /24 específicas.

Comando: set routing-options aggregate route 10.0.0.0/8 policy MI-CONDICION

D. Control de Etiquetas (MPLS / LDP)


Las políticas también deciden qué etiquetas de MPLS se deben generar o filtrar.

Uso: No generar etiquetas para todas las rutas, solo para las Loopbacks.

Comando: set protocols ldp export FILTRO-ETIQUETAS

 

 

Ejemplos:

 

Ejemplo 1: Redistribución (Pasar rutas Estáticas a BGP)

Este es el ejemplo más común. Quieres que tus vecinos BGP conozcan las rutas que tú creaste manualmente (estáticas).

1. Construcción (La Regla):

set policy-options policy-statement ESTATICAS-A-BGP term PASAR-TODO from protocol static
set policy-options policy-statement ESTATICAS-A-BGP term PASAR-TODO then accept

2. Aplicación (El Gancho):

Como quieres que esas rutas salgan de tu router hacia los vecinos, usamos export.

set protocols bgp group MIS-VECINOS export ESTATICAS-A-BGP 

 

Ejemplo 2: Balanceo de Carga (Load Balancing)

Por defecto, Junos solo instala una mejor ruta en la tabla de reenvío (PFE), aunque tengas varias iguales. Aquí usamos la política para cambiar el comportamiento del hardware.

1. Construcción (La Regla):
Aquí no filtramos IPs, filtramos el comportamiento.

set policy-options policy-statement BALANCEO-DE-CARGA then load-balance per-packet

2. Aplicación (El Gancho):
Esto se aplica directamente a la Forwarding Table (la tabla que usa el chip para mover paquetes).

set routing-options forwarding-table export BALANCEO-DE-CARGA 

 

Ejemplo 3: Filtrado de Prefijos (Seguridad)

Imagina que un cliente te está mandando redes privadas (como la 192.168.0.0/16) por error y quieres bloquearlas para que no ensucien tu tabla de rutas.

1. Construcción (La Regla):


set policy-options policy-statement FILTRO-BASURA term BLOQUEAR-PRIVADAS from route-filter 192.168.0.0/16 orlonger
set policy-options policy-statement FILTRO-BASURA term BLOQUEAR-PRIVADAS then reject

# Muy importante: Aceptar todo lo demás que sea legal
set policy-options policy-statement FILTRO-BASURA term PERMITIR-RESTO then accept

2. Aplicación (El Gancho):
Como es algo que viene de afuera hacia adentro, usamos import.

set protocols bgp group CLIENTES import FILTRO-BASURA 

 

Ejemplo 4: Manipulación de Tráfico (Ingeniería)

Aquí aplicamos lo que vimos en tu laboratorio: queremos que una ruta específica sea "menos atractiva" para los demás enviando un MED alto.

1. Construcción (La Regla):

set policy-options policy-statement SUBIR-MED term RUTA-GOOGLE from route-filter 8.8.8.8/32 exact
set policy-options policy-statement SUBIR-MED term RUTA-GOOGLE then metric 500
set policy-options policy-statement SUBIR-MED term RUTA-GOOGLE then accept

2. Aplicación (El Gancho):
Se lo enviamos al vecino para influir en cómo nos entra el tráfico.

set protocols bgp group VECINO-A export SUBIR-MED


Objetivo del ejemploDónde se aplicóDirección
Anunciar rutas (Redistribuir)protocols bgpexport
Cambiar cómo el hardware mueve paquetesrouting-options forwarding-tableexport
Bloquear lo que un vecino me envíaprotocols bgpimport
Influir en el tráfico de entrada (MED)protocols bgpexport

 

 


 




 


 

  

Los 5 tipos de coincidencia:

  1. exact — Coincide únicamente con la ruta exacta indicada (192.168.0.0/16). Solo el nodo raíz es seleccionado (marcado en naranja).


Ejemplo: Si defines el filtro como 192.168.0.0/16 exact, solo coincidirá con:
  • ✅ 192.168.0.0/16
  • ❌ 192.168.1.0/24
  • ❌ 192.168.0.0/17

  1. orlonger (hasta /32) — Coincide con la ruta exacta y todas las subredes más específicas (prefijos más largos). Incluye /16 y todo lo que esté debajo.

Coincide con el prefijo exacto y todas sus subredes más específicas.

Ejemplo: 192.168.0.0/16 orlonger

  • ✅ 192.168.0.0/16 (el prefijo exacto)
  • ✅ 192.168.1.0/24
  • ✅ 192.168.5.128/25
  • ✅ 192.168.10.1/32
  • ❌ 10.0.0.0/8


  1. longer (hasta /32) — Coincide solo con las subredes más específicas, excluyendo la ruta exacta (/16). Es decir, solo los prefijos más largos que el indicado.


Coincide solo con subredes más específicas, excluyendo el prefijo exacto.

Ejemplo: 192.168.0.0/16 longer

  • ❌ 192.168.0.0/16 (el prefijo exacto NO coincide)
  • ✅ 192.168.1.0/24
  • ✅ 192.168.5.128/25
  • ✅ 192.168.10.1/32


  1. upto — Coincide desde la ruta exacta hasta una profundidad máxima definida, sin llegar necesariamente hasta /32.


Coincide desde el prefijo exacto hasta una longitud máxima de prefijo definida.

Ejemplo: 192.168.0.0/16 upto /24

  • ✅ 192.168.0.0/16
  • ✅ 192.168.1.0/24
  • ✅ 192.168.0.0/20
  • ❌ 192.168.1.128/25 (es /25, supera el límite de /24)
  • ❌ 192.168.10.1/32

  1. prefix-length-range /x-/y — Coincide con prefijos cuya longitud esté dentro de un rango específico, entre /x y /y. Es el más flexible y granular.

 

Ejemplo: 192.168.0.0/16 prefix-length-range /20-/24

  • ❌ 192.168.0.0/16 (fuera del rango)
  • ❌ 192.168.1.0/18 (fuera del rango)
  • ✅ 192.168.0.0/20
  • ✅ 192.168.1.0/24
  • ❌ 192.168.1.128/25 (supera /24)
  • ❌ 192.168.10.1/32 (supera /24)

 





 

No hay comentarios:

Publicar un comentario

  ¡Bienvenido/a Si estás aquí, es porque las redes, los cables, los routers y las configuraciones ya no son un misterio… o quizá justo lo ...