Obteniendo ayuda en JunOS

Seguimos con otro interesante post de Jeff Doyle sobre JunOS (ver original).

He hablado en el artículo anterior (original) cómo las configuraciones candidatas, aplicar los cambios de forma explícita, y rollbacks aumentan la fiabilidad de los cambios de configuración en JUNOS y reducen el riesgo de cometer errores de configuración. Si hay un error que se pueda hacer, es probable que se cometa (Murphy).

Otra característica interesante para los mecanógrafos klutzy (algo así como patanes) como yo es que en lugar de esperar hasta que se pulse Enter al final de una declaración de configuración para comprobar errores de sintaxis, JunOS comprueba la sintaxis palabra por palabra, es decir, cada vez que se teclea en una palabra en una línea y se pulsa la barra espaciadora, se comprueba la sintaxis.

También permite, como el IOS, escribir el número mínimo de letras de un comando que se identifican de forma única. Por ejemplo, si quieres ver en la tabla de enrutamiento unicast en IOS puedes escribir:

sh ip rou

IOS entenderá esto como:

show ip route

JunOS hace lo mismo, con excepción de que cada vez que se pulsa la barra espaciadora, además de comprobar de inmediato la sintaxis, completa el comando. Así por ejemplo, el comando equivalente de JunOS para mostrar la tabla de enrutamiento unicast es la siguiente:

show route

Puedo escribir sh, y tan pronto como pulso la barra espaciadora aparece show. Entonces tecleo rou, y cuando pulso la barra espaciadora muestra route.

En el siguiente ejemplo, estoy en modo configuración. Quiero hacer un cambio en la configuración del chasis, por lo que escribo:

[edit]

jeff@Juniper5# set cha

cuando pulso la barra espaciadora el comando se completa:

[edit]
jeff@Juniper5# set chassis

Si pulso enter en este punto, JunOS me dice que no tiene suficiente información:

[edit]
jeff@Juniper5# set chassis
                           ^
missing argument.

Esto es casi el mismo comportamiento que IOS muestra cuando la línea de comandos está incompleta. Y como con IOS, el signo de interrogación (?) en JunOS es su principal herramienta de referencia:

[edit]
jeff@Juniper5# set chassis ?
Possible completions:
> alarm               Global alarm settings
+ apply-groups        Groups from which to inherit configuration data
+ apply-groups-except Don't inherit configuration data from these groups
> config-button       Config button behavior settings
  craft-lockout       Disable craft interface input
> fpc                 Flexible PIC Concentrator parameters
> routing-engine      Routing Engine settings
[edit]
jeff@Juniper5# set chassis

Tener en cuenta que al final de los posibles parametros, la línea de comando que estaba escrita se teclea de nuevo, lista para elegir la siguiente palabra en la línea. Añado “c” como una abreviatura de la siguiente palabra, pero JunOS se queja cuando pulso la barra espaciadora, porque “c” podría representar varias palabras; JunOS no sabe lo que quiero, y me dice que posibles palabras son las siguientes:

[edit]
jeff@Juniper5# set chassis c
                            ^
'c' is ambiguous.
Possible completions:
> config-button        Config button behavior settings
  craft-lockout        Disable craft interface input
jeff@Juniper5# set chassis c

Bien, quiero el comando craft-lockout. pero lo tecleo mal:

jeff@Juniper5# set chassis crof
                           ^
syntax error.
jeff@Juniper5# set chassis crof

Pero ahora tengo un momento de duda. La breve lista de opciones dice que este comando deshabilita la interfaz de entrada de craft. ¿Qué significa eso? ¿Es eso lo que realmente quiero hacer? Necesito ayuda. Resulta que help es un comando muy útil.

Si yo tecleo help reference y especifico el comando que deseo utilizar, se muestra una breve referencia:

[edit]
jeff@Juniper5# help reference chassis craft-lockout
craft-lockout

Syntax

   craft-lockout;

Hierarchy Level

   [edit chassis]

Release Information

   Statement introduced in JUNOS Release 8.1.

Description

   Disable the physical operation of the craft interface front panel.

Usage Guidelines

   See "Disabling Physical Operation of the Craft Interface".

Required Privilege Level

   interface--To view this statement in the configuration.
   interface-control--To add this statement to the configuration.

[edit]
jeff@Juniper5#

Esto me dice sobre el uso, pero realmente quiero más de una explicación de lo que significa. Puedo conseguir más mediante el uso de help topic:

[edit]
jeff@Juniper5# help topic chassis craft-lockout
              Disabling Physical Operation of the Craft Interface

You can disable the physical operation of the craft interface front panel
on the routing platform. When you disable the operation of the craft
interface, the buttons on the front panel, such as the alarm cutoff
button, no longer function. To disable the craft interface operation,
include the craft-lockout statement at the [edit chassis] hierarchy level:
  [edit chassis]
      craft-lockout;
For more information about how to configure the craft interface, see
Configuring Conditions That Trigger Alarms.

[edit]
jeff@Juniper5#

Eso me dice todo lo que necesito saber acerca de la configuración de la función craft-lockout del chasis. Pero ¿ Si lo que quiero saber es algo más general sobre la palabra clave chasis ? Para esto, puedo utilizar help apropos, que me dice de todos los diferentes contextos en virtud de la cual puedo referirme a chasis:

[edit]
jeff@Juniper5# help apropos chassis
set system location lcc
    Line-card chassis location
set system processes chassis-control
  Chassis control process
set system processes chassis-control disable
  Disable chassis control process
set system processes chassis-control failover
  How to handle failure of chassis control process
set chassis
  Chassis configuration
set chassis fpc  pic  shdsl
  SHDSL chassis configuration
set chassis disable-power-management
  Disable Power Management in this chassis
set chassis network-services
  Chassis network services configuration
set chassis lcc
  Line-card chassis configuration
set chassis lcc  fpc  pic  shdsl
  SHDSL chassis configuration
set snmp trap-group  categories chassis
  Chassis or environment notifications
set class-of-service interfaces  scheduler-map-chassis
  Scheduler map applied to chassis queues (not PIC queues)
set class-of-service traceoptions flag hardware-database
  Trace chassis hardware database related processing

[edit]
jeff@Juniper5#

El comando help apropos sólo muestra los contextos que son relevantes para el nivel de la jerarquía de configuración en que te encuentras actualmente. Si tecleara help apropos interfaz en la parte superior [top], vería una lista muy larga de cada contexto en el que puedo establecer una opción de interfaz. En el siguiente ejemplo, paso al nivel de configuración en la que puedo configurar el área 0 de OSPF. Tecleando help apropos interfaz a ese nivel sólo muestra los contextos en los que puedo configurar una interfaz para el área 0 de OSPF:

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

[edit protocols ospf area 0.0.0.0]
jeff@Juniper5# help apropos interface
set virtual-link neighbor-id  transit-area
 demand-circuit
 Interface functions as a demand circuit
set sham-link-remote
demand-circuit Interface functions as a demand circuit set interface Include an interface in this area set interface Interface name set interface disable Disable OSPF on this interface set interface interface-type Type of interface set interface metric Interface metric set interface demand-circuit Interface functions as a demand circuit set interface dynamic-neighbors Learn neighbors dynamically on a p2mp interface set interface poll-interval Poll interval for NBMA interfaces set label-switched-path metric Interface metric set peer-interface Configuration for peer interface set peer-interface Name of peer interface set peer-interface demand-circuit Interface functions as a demand circuit [edit protocols ospf area 0.0.0.0] jeff@Juniper5#

Si tengo al menos una idea general de lo que quiero lograr, puedo usar el signo de interrogación (?) y el comando help para hacer cambios en la configuración del JunOS, sin tener que ir a los manuales - un conjunto abreviado de los manuales están disponibles para el CLI .

Gestionando la configuración de JunOS

Siguiendo con los magníficos artículos de Jeff Doyle sobre el Juniper y JunOS aquí tenéis la traducción de otro artículo más (original aquí).


Una de mis quejas durante mucho tiempo acerca de IOS es que si se escribe un nuevo comando en el CLI y pulse Enter, el comando de inmediato se convierte en activo en el router. Para alguien propenso a error, como yo (Jeff), este es un gran riesgo. Y dado que la mayoría de problemas de red se deben a un error humano en lugar de fallos de hardware y software, es un riesgo para todos.

Esto también puede ser un problema cuando se está haciendo cambios de configuración. Al tener estos cambios surtan efecto un comando cada vez, puede introducir todo tipo de condiciones transitorias.

La configuración candidata y aplicación de la configuración explicitamente

Esto lleva, por el contrario, a uno de mis características favoritas de JunOS: Cuando se hace un cambio de configuración, el cambio no surtirá efecto de inmediato. En lugar de ello, va a un archivo de configuración candidata. Se puede añadir, borrar y/o cambiar cuanto desee en la configuración, y ninguno de ellos serán activos en el router hasta que se confirme (commit). Este comando (commit) hace que la configuración candidata se convierta en la configuración activa.

La configuración candidata y la confirmación explícita (de la configuración) ayuda enormemente a reducir el número de simples errores humanos que afectan día a día a las operaciones de red. Se pueden hacer todos los cambios, comprobar como tantas veces como desee durante el proceso de configuración, y sólo se aplican cuando esté listo y estemos seguros de los cambios de configuración se ven correctos.

Rollback (marcha atrás)

Por supuesto, aún existe la posibilidad de que después de aplicar la configuración candidata el resultado no es lo que esperaba, y que desea volver a una configuración anterior. Se puede hacer eso en JUNOS ya que cuando se hace una confirmación y la configuración candidata se convierte en la configuración activa, la anterior configuración se guarda en el disco duro en el router.

Así que si quiere volver a una configuración anterior, puede introducir el comando rollback 1 y la más configuración reciente guardada se convierte en la configuración candidata. A continuación, se puede hacer que la configuración anterior sea activa de nuevo mediante la introducción del comando commit.

JUNOS guarda los últimos 49 archivos de configuración. Cuando se confirma (commit) una nueva configuración, la configuración activa anterior se guarda como juniper.conf.1. Lo que fuera juniper.conf.1 se convierte en juniper.conf.2, lo que fuera juniper.conf.2 se convierte en juniper.conf.3, y así sucesivamente. Así que si quiere volver a alguno configuración más antigua que la guardada más reciente, puede hacerlo. Por ejemplo, si introduce rollback 3, juniper.conf.3 - la configuración que estaba activa antes de las tres últimas confirmaciones (commit) - se carga como la nueva configuración candidata.

Aplicar la configuración confirmando (commit confirmed)

Supongamos que, a pesar de todos los esfuerzos para asegurar que la nueva configuración es correcta antes de aplicarla, algo se pasa por alto y cuando se aplica, que se queda el router bloqueado.

En lugar de aplicar (commit), se puede hacer la configuración candidata activa con este comando commit confirmed. Con este comando, el router espera 10 minutos para una segunda confirmación. Si no recibe confirmación dentro de los 10 minutos, el router automáticamente hace un rollback y se aplica, de manera que la configuración anterior se activa de nuevo.

El comando commit confirmed puede ser un salvavidas, recomiendo que se tenga el hábito de utilizarlo en vez de commit en todos los casos.

Puede cambiar el valor de tiempo por defecto que JUNOS espera para aplicar una confirmación entre 1 y 65535 minutos. Si, por ejemplo, se desea que el router espere tan solo 3 minutos para una confirmación, se puede introducir commit confirmed 3.

Guardar y cargar (save y load)

La configuración candidata es también una gran característica para hacer las  ventanas de mantenimiento vayan más rápidas. Imaginamos que necesitamos hacer cambios a 10 routers con un mantenimiento programado a las 2 de la madrugada. Podemos hacer los cambios antes de lo previsto en el archivo de configuración candidata y, a continuación, guardar el archivo bajo cualquier nombre que se desee, ya sea en el router el disco duro o en un servidor externo.

Cuando llegue la hora de llevar a cabo el mantenimiento, puede cargar el archivo de configuración de vuelta al fichero de configuración candidata y confirmar.

Por ejemplo, si se realiza un cambio de la configuración pre-mantenimiento y se desea guardar como Juniper3_10August_Change, se introduce el comando save Juniper3_10August_Change.

Después de salvar, es una buena idea hacer un rollback 0. Esto causa una copia de la configuración actualmente activa (juniper.conf.0) para ser la configuración candidata, evitando así una situación en la que alguien más podría entrar en el router y aplicar estos cambios antes de la hora.

Ten en cuenta que si nos encontramos en la parte superior de la jerarquía de configuración, indicado por [edit], se guarda toda la configuración. Si se está en algún nivel inferior al salvar, sólo se guarda la parte de la configuración a ese nivel. Por ejemplo, si se está en [edit protocols bgp], sólo se guarda la configuración de BGP.

Cuando se esté listo para hacer los cambios en la configuración permanente, se carga la configuración guardada a la configuración candidata con el comando load. Este comando tiene varias opciones, dependiendo de cómo se desea utilizar el archivo que se carga:

  • load override sustituye completamente la configuración actual candidata con el archivo que está cargando. Por lo tanto, si ha guardado una configuración completa, esta es la opción de usar.
  • load merge añade el archivo guardado a la configuración candidata actual. Esto es útil si va a añadir nuevas secciones de configuración, por ejemplo, si añade una configuración BGP a [edit protocolo], donde no había ninguna configuración antes de BGP.
  • load update se compara la configuración candidato y el archivo que se carga, y sólo cambia la parte de la configuración candidata que sean diferentes de la nueva configuración. Se podría utilizar esto, por ejemplo, si existe una configuración de BGP y el archivo que va a cargar hace cambios de alguna manera.
  • load replace busca las etiquetas que se han añadido al fichero que se carga, y sustituye las partes de la configuración candidata con todo lo que se especifica después de la etiqueta. Esto es útil cuando se desea más control sobre exactamente qué se está cambiado.

Después de la operación de carga, se puede comprobar la configuración candidata nueva para asegurarse que muestra los cambios que se desean y, a continuación se aplican (commit).

Hay un enfoque alternativo a la operación que se acaba de describir. Se puede hacer cambios a la configuración candidato y luego usar el comando commit, especificando la hora y el minuto más tarde el mismo día, o especificar una fecha posterior, hora y minuto. Por ejemplo, se podría aplicar commit 2008-09-21 02:30:00 y no se aplicaría hasta las 2:30 AM del 21 de septiembre de 2008 (suponiendo que el tiempo es en el futuro, de acuerdo con la fecha y hora del router).

Personalmente no me gusta este comando, ya que deja demasiado a la automatización. Prefiero grabar y cargar (save y load), lo que da un mayor control de la operación

Examinando la configuración del JunOS

Hoy he leído un interesante artículo (aquí la versión original) de Jeff Doyle en su sección de la web http://www.networkworld.com/community/doyle que me ha gustado y he decidido traducirlo y publicarlo.

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# show ?
Possible completions:
  <[Enter]>            Execute this command
> access               Network access configuration
> accounting-options   Accounting data configuration
> applications         Define applications by protocol characteristics
+ apply-groups         Groups from which to inherit configuration data
> chassis              Chassis configuration
> class-of-service     Class-of-service configuration
> event-options        Event processing configuration
> firewall             Define a firewall configuration
> forwarding-options   Configure options to control packet forwarding
> groups               Configuration groups
> interfaces           Interface configuration
> policy-options       Routing policy option configuration
> protocols            Routing protocol configuration
> routing-instances    Routing instance configuration
> routing-options      Protocol-independent routing option configuration
> security             Security configuration
> services             Service PIC applications settings
> snmp                 Simple Network Management Protocol configuration
> system               System parameters
  |                    Pipe through a command
							

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.

Backup de la configuración del JunOS

Tener una copia de seguridad de la configuración del Junos es muy importante pero es aún más importante tenerla en un servidor remoto. El JunOS hace varias copia de seguridad en el propio sistema, para ser exactos 50 copias, la actual y las tres siguientes (1 a 3) en la Compact Flash (para tenerlas a mano rápidamente) y el resto (de la 4 a la 49) en el disco duro (para ahorrar espacio en la Compact Flash.

La actual y las tres siguientes las podemos ver:

user@router> file list /config [detail]
/config:
juniper.conf.1.gz
juniper.conf.2.gz
juniper.conf.3.gz
juniper.conf.gz
rescue.conf.gz

el resto:

user@rrouter> file list /var/db/config/ [detail]
/var/db/config/:
juniper.conf.10.gz
juniper.conf.11.gz
...
juniper.conf.48.gz
juniper.conf.49.gz
juniper.conf.5.gz
juniper.conf.6.gz
juniper.conf.7.gz
juniper.conf.8.gz
juniper.conf.9.gz

En ambos casos podemos usar el parámetro “detail”para ver en más detalle los atributos de los fichero, al más puro estilo unix.

Otra forma de obtener una copia de la configuración, esta vez fuera del router en un servidor remoto, es usando la siguiente instrucción desde el modo operacional:

file copy <fichero> <destination URL>
file copy /config/juniper.conf.gz server:nombre_fichero_configuración
file copy /config/juniper.conf.gz ftp://user:pass@server:nombre_fichero_configuración

El primero copia vía ssh y el segundo vía ftp.

Desde el modo configuración podemos guardar la configuración completa o una parte, según estemos en la raíz [edit] o en alguna sección concreta con lo cual SOLO guardará dicha sección completa.

Para guardar la configuración completa en modo configuración:

[edit]
user@router# save server:nombre_fichero_configuración
user@router# save ftp://user:pas@server:nombre_fichero_configuración

o Si solo queremos guardar por ejemplo la configuración de BGP:

[edit protocols bgp]
user@router# save server:nombre_fichero_configuración
user@router# save ftp://user:pas@server:nombre_fichero_configuración

Todos estos métodos son manuales , pero si queremos hacerlo de forma automáticamente tenemos 2 posibilidades. La primera es hacer una copia de la configuración cada vez que hagamos un “commit” (del tipo que sea) con lo cual siempre tendremos una copia en un servidor remoto con cada cambio realizado:

[edit]
user@router# set system archival configuration transfer-on-commit
user@router# set system archival configurationarchive-site ftp://user:pass@server:/directorio_donde_dejar_las_copias

El otro método es similar pero hace la copia cada un intervalo de tiempo especificado, ya se hayan hecho modificaciones o no, con lo cual podemos tener varias copias idénticas de la configuración por lo que se recomienda poner algún tipo de cron que rote las configuraciones o borre antiguas a menos que tengamos bastante espacio (aunque los ficheros no ocupan demasiado):

[edit]
user@router# set system archival configuration transfer-interva intervalo
user@router# set system archival configurationarchive-site ftp://user:pass@server:/directorio_donde_dejar_las_copias

intervalo puede ser desde 15 minutos hasta 2.880 minutos (48 horas) y se debe especificar en minutos.

NOTA: una gran desventaja de estos dos últimos métodos es que se debe usar el método de transferencia de FTP y por lo tanto la clave queda en la configuración sin cifrar por lo que es visible a simple vista.

Como método alternativo y ajeno a la configuración del JunOS es utilizar la heramienta libre de código abierto llamada RANCID muy utilizada para copias de seguridad de dispositivos de red de diersas marcas.

Recuperación de password de root en Juniper

Procedimiento para borrar o cambiar la cable de root del JunOS de un Juniper. Probado en la Serie M.

  1. Conectado el router Juniper vía consola, arrancar o reiniciar y una vez que aparezca el trexto:
    Hit [Enter] to boot immediately, or any other key for command
    Booting [kernel] in 9 seconds...

    Pulsar la barra espaciadora para que aparezca el promtp.

  2. Arranca en modo single-user:
    Type '?' for a list of commands, 'help' for more detailed help.
    ok boot -s
  3. El router juniper arranca y al final aparecerá el texto siguiente donde pulsaremos ENTER:
    Enter full pathname of shell or RETURN for /bin/sh:
  4. Ahora debemos montar los sistemas de ficheros virtuales (para JUNOS 5.4 y superior, no es necesarios montar elpaquete jbase sin embargo los otros paquete aún son necesarios montarlos):
    NOTE: to go to multi-user operation, exit the single-user shell (with ^D)
    # cd /packages
    # ./mount.jbase
    Mounted jbase package on /dev/vn1...
    # ./mount.jkernel
    Mounted jkernel package on /dev/vn2...
    # ./mount.jroute
    Mounted jroute package on /dev/vn3...
  5. Después entramos en modo de recuperación:
    # /usr/libexec/ui/recovery-mode
  6. Una vez aparezca el prompt del CLI entramos en el modo de configuración y podemos hacer dos cosas o borrar o modificar la clave de autenticación de rooti (en el ejemplo se borra la clave):
    root> configure
    Entering configuration mode
    [edit]
    root# delete system root-authentication
  7. Pocedemos a aplicar los cambios para que surtan efecto y salimos del modo de configuración:
    [edit]
    root # commit
    commit complete
    [edit]
    root@router# exit
    Exiting configuration mode
  8. Salimos del router donde nos pedirá que reiniciemos el router:
    root@router> exit
  9. Exit recovery mode and enter “y” when prompted to reboot the system:
    Reboot the system? [y/n] y
    Terminated

    El sistema reinicia y la clave de root ya no está (o si la cambiamos es la que es válida).

Extraido de “http://juniper.cluepon.net/index.php/Password_recovery“, traducido libremente por The Evangelist.