Examinando la configuración

El archivo de configuración de JunOS está bien organizado en una estructura jerárquica, una vez que comprendes su estructura y sus distintos niveles, es fácil navegar por el archivo y encontrar exactamente la parte que deseas examinar o cambiar sin que te distraigan partes que no está interesado en ese momento.

Para empezar nos autenticamos en el router:

Juniper5 (ttyd0) login: jeff
Password:

--- JUNOS 8.5R1.13 built 2007-11-14 17:54:24 UTC
jeff@Juniper5>

El prompt muestra el nombre de usuario (Jeff) y el nombre del router (Juniper5). El router está en modo de operativo (operational mode) , a partir del cual puedes realizar las tareas operativas, tales como mostrar estados y bases de datos del router, traceroute y ping, telnet y ssh, reiniciar los procesos del sistema - la mayoría de los comandos que necesitas para el seguimiento y la localización de problemas del sistema. El modo operativo (operational mode) JunOS es equivalente al del IOS modo EXEC; de hecho, las indicaciones de ambos es un signo "mayor que" (>).

Al igual que ocurre con IOS, el signo de interrogante (?) es tu amigo, es la principal herramienta de información cuando no puedes recordar la siguiente parámetro en una cadena de comandos, o simplemente quieres ver qué opciones están disponibles. Puedes usar el signo de interrogación (?) para ver todos los comandos disponibles en el modo operativo:

jeff@Juniper5> ?
Possible completions:

    clear           Clear information in the system
    configure       Manipulate software configuration information
    diagnose        Invoke diagnose script|
    file            Perform file operations
    help            Provide help information
    monitor         Show real-time debugging information
    mtrace          Trace multicast path from source to receiver
    ping            Ping remote target
    quit            Exit the management session
    request         Make system-level requests
    restart         Restart software process
    set             Set CLI properties, date/time, craft interface message
    show            Show system information
    ssh             Start secure shell on another host
    start           Start shell
    telnet          Telnet to another host
    test            Perform diagnostic debugging
    traceroute      Trace route to remote host

Para hacer cambios de configuración, entra en modo de configuración mediante la introducción del comando configure:

jeff@Juniper5> configure Entering configuration mode [edit]
jeff@Juniper5#

El modo de configuración JunOS es equivalente a la IOS EXEC privilegiado o "enable". Aquí el prompt ha cambiado de '>' a '#', una vez más la misma manera que el IOS hace después de que se entre el comando enable.

Otra característica del modo de configuración JunOS es el banner [editar] justo por encima del prompt. Podemos movernos dentro de la jerarquía de configuración para observar o modificar sólo la parte del archivo que nos interesa; el banner indica con precisión dónde nos encontramos dentro de la jerarquía. Cuando el banner sólo muestra [edit], estamos en la parte superior de la jerarquía. Así por ejemplo, si escribimos show en este nivel sin modificadores, JunOS muestra toda la configuración.

Utilizando el signo de interrogación con el show, se puede ver la parte superior los niveles de la jerarquía de configuración:

[edit]
jeff@Juniper5# ?
Possible completions:
  <[Enter]>            Execute this command
  activate             Remove the inactive tag from a statement
  annotate             Annotate the statement with a comment
  commit               Commit current set of changes
  copy                 Copy a statement
  deactivate           Add the inactive tag to a statement
  delete               Delete a data element
  edit                 Edit a sub-element
  exit                 Exit from this level
  help                 Provide help information
  insert               Insert a new ordered data element
  load                 Load configuration from ASCII file
  quit                 Quit from this level
  rename               Rename a statement
  replace              Replace character string in configuration
  rollback             Roll back to previous committed configuration
  run                  Run an operational-mode command
  save                 Save configuration to ASCII file
  set                  Set a parameter
  show                 Show a parameter
  status               Show users currently editing configuration
  top                  Exit to top level of configuration
  up                   Exit one level of configuration
  wildcard             Wildcard operations
						</font>

Las etiquetas que acompañan a esta lista, explican los niveles bastante bien. Por ejemplo, todas las interfaces se configuran dentro del nivel interfaces, todos los protocolos se configuran dentro del nivel protocols, y todas las políticas de enrutamiento se configuran dentro del nivel policy-options.

Bajo cada uno de estos niveles superiores hay muchos sub-niveles. Por ejemplo, dentro de protocols se puede encontrar BGP, OSPFv2, OSPFv3, MPLS, RSVP, y así sucesivamente. Y en relación con cada uno de ellos se encuentran más sub-niveles específicos para el protocolo. Bajo OSPF, por ejemplo, se encuentra un nivel para configuraciones de las areas y luego bajo cada nivel se encuentra un nivel para especificar las interfaces que están en el área.

La estructura jerárquica de la configuración permite concentrarse sólo en la parte de la configuración en la que se está interesado. Por ejemplo, supongamos que se desea mirar sólo la parte BGP de la configuración. show protocols bgp te muestra toda la configuración de BGP:

[edit]
jeffr@Juniper5# show protocols bgp
local-address 192.168.50.10;
local-as 65503;
group CustomerX {
    export XPolicy;
    peer-as 65510;
    neighbor 192.168.1.1 {
        authentication-key "$9$-Ud2aji.5z6qm"; ## SECRET-DATA
    }
    neighbor 192.168.1.5 {
        authentication-key "$9$JiZHmzF/t0I69ev"; ## SECRET-DATA
    }
    neighbor 192.168.1.10 {
        authentication-key "$9$mPF/u0Icrv1Rbs"; ## SECRET-DATA
    }
}
group CustomerY {
    neighbor 192.168.10.20;
    neighbor 192.168.10.30;
    neighbor 192.168.10.40;
}
group CustomerZ {
    neighbor 192.168.20.100;
}				

Se puede ver en esta configuración que existe una dirección local (192.168.50.10) a partir de la cual todas las sesiones de BGP TCP se originan, el número loca AS es 65503, y hay tres grupos de peers: CustomerX, CustomerY, y CustomerZ. CustomerX tiene una política de enrutamiento saliente (export) que llamad XPolicy, y debido a que el número AS para ese grupo (65510) es diferente del número AS local, sabemos que son vecinos EBGP. Hay tres vecinos configurados bajo este grupo, todos los cuales son autenticados con contraseñas individuales. El peer CustomerY, con tres vecinos, y CustomerZ, con un vecino, son IBGP porque no tienen especificados números AS diferentes, y no se configura la autenticación.

Supongamos que, en lugar de toda la configuración de BGP, usted estamos interesados sólo en la configuración del vecino 192.168.1.5 en el grupo de CustomerX. podemos decir al JunOS que muestre sólo la parte del archivo de configuración simplemente siendo más explícito con el comando show:

[edit]
jeff@Juniper5# show protocols bgp group CustomerX neighbor 192.168.1.5
authentication-key "$9$JiZHmzF/t0I69ev"; ## SECRET-DATA

Por supuesto, si nos encontramos en el modo de configuración probablemente queramos hacer algo más que ver partes de la configuración; queremos hacer cambios. Utilizando el signo de interrogación (?), mientras se está en el modo de configuración, podemos ver las diferentes acciones que podemos tomar:

[edit]
jeff@Juniper5# ?
Possible completions:
  <[Enter]>            Execute this command
  activate             Remove the inactive tag from a statement
  annotate             Annotate the statement with a comment
  commit               Commit current set of changes
  copy                 Copy a statement
  deactivate           Add the inactive tag to a statement
  delete               Delete a data element
  edit                 Edit a sub-element
  exit                 Exit from this level
  help                 Provide help information
  insert               Insert a new ordered data element
  load                 Load configuration from ASCII file
  quit                 Quit from this level
  rename               Rename a statement
  replace              Replace character string in configuration
  rollback             Roll back to previous committed configuration
  run                  Run an operational-mode command
  save                 Save configuration to ASCII file
  set                  Set a parameter
  show                 Show a parameter
  status               Show users currently editing configuration
  top                  Exit to top level of configuration
  up                   Exit one level of configuration
  wildcard             Wildcard operations		

Queremos añadir algunos elementos a la configuración, y el comando para hacer eso es set. Digamos que queremos añadir la interfaz fe-0/0/0 al area 5 del OSPF. Usando set, especificamos cada nivel a través de la jerarquía hasta llegar al punto -bajo el nivel del área 5- en donde la interfaz se añadirá:

Por cierto, si OSPF no está activado o el área 5 no existe aún, el mismo comando habilitará (enable) el protocolo y creará el área 5, además de añdir la interfaz al área.

[edit]
jeff@Juniper5# set protocols ospf area 5 interface fe-0/0/0

Otro forma de hacerlo es primer movernos al nivel que desea configurar, utilizando el comando edit, y a continuación hacer los cambios que desee:

[edit]
jeff@Juniper5# edit protocols ospf area 5

[edit protocols ospf area 0.0.0.5]
jeff@Juniper5# set interface fe-0/0/1

Notese aquí que después de introducir edit protocols ospf area 5, el banner encima del prompt ha cambiado para mostrar dónde nos encontramos en la jerarquía -siempre sabemos dónde estamos. Luego utilizamos el comando set para añadir la interfaz fe-0/0/1 en ese nivel. No es necesario especificar toda la jerarquía esta vez, porque ya estamos en el nivel donde queremos hacer el cambio.

Estos dos enfoques dan la flexibilidad para administrar una configuración de la manera más conveniente. Si sólo vamos a añadir sólo una o dos instrucciones a una configuración, por lo general es más fácil hacerlo desde el nivel superior, especificando la ruta completa hasta el nivel que desea cambiar. Si se está haciendo grandes cambios a un nivel determinado, por lo general es más fácil ir a ese nivel, primero usando el comando edit, y a continuación, hacer los cambios directamente sin tener que especificar la ruta completa con cada comando.

Aunque edit lleva al nivel específico en el que desea trabajar, up desplaza hasta un nivel superior (anterior) en la jerarquía. Por ejemplo, supongamos que a partir de donde nos encontramos en el área OSPF 5, queremos pasar al nivel OSPF:

[edit protocols ospf area 0.0.0.5]
jeff@Juniper5# up

[edit protocols ospf]
jeff@Juniper5# show
area 0.0.0.5 {
    interface fe-0/0/0.0;
    interface fe-0/0/1.0;
}

Se puede ver que el banner encima del prompt ha cambiado después de usar el comando up, diciéndonos dónde nos encontra.mos Un show de cualquier nivel, muestra toda la configuración en ese nivel - en este caso, muestra la totalidad de la configuración de OSPF.

Si se quiere saltar de nuevo a la parte superior de la jerarquía desde cualquier nivel, utilice el comando top:

[edit protocols ospf]
jeff@Juniper5# top

[edit]
jeff@Juniper5# 

En este ejemplo, se podría también haber llegado desde el nivel existente al inicio usando el comando up dos veces: [edit protocols ospf] => up => [edit protocols] => up => [edit]. Usando los comandos edit, up y top, podemos movernos rápidamente a cualquier lugar donde necesitemos estar en el archivo de configuración para realizar operaciones.

Además del comando set, hay algunos importantes comandos más para cambiar la configuración. En aras de espacio no se va a extender, pero por lo menos si nombrarlos:

  • delete es lo contrario de set, elimina las declaraciones de la configuración.
  • replace se utiliza para sustituir una declaración con otra declaración.
  • insert se utiliza cuando se desea añadir una declaración dentro de un elemento ordenado (como una lista de filtros) y no al final, como el comando set haría.
  • deactivate se utiliza cuando se quiere hacer una declaración inactiva, pero no se quiere quitar la declaración de la configuración. Esto resulta muy práctico para temporalmente "apagar" algo que se tiene la intención de eventualmente dar marcha atrás.
  • activate se utiliza para reactivar una declaración inactiva.
  • annotate se utiliza para añadir un comentario a una declaración, lo que es muy útil para hacer que un complejo archivo de configuración sea más fácil de interpretar/leer.

Una de las más importantes diferencias operativas entre IOS y JunOS es que, a diferencia de IOS, cuando se introduzca una nueva declaración en la configuración JunOS no activa inmediatamente en el router. Se pueden hacer tantos cambios como se quiera, inspeccionar los cambios, y activarlos sólo cuando se diga explícitamente al router que las acepte.


Interesante artículo (aquí la versión original) de Jeff Doyle que me ha gustado, por lo que pidiendole permiso, he decidido traducirlo y publicarlo.

Retro

Lugares

Redes

Sistemas

Varios