Mostrando postagens com marcador IOS. Mostrar todas as postagens
Mostrando postagens com marcador IOS. Mostrar todas as postagens

terça-feira, 4 de abril de 2017

Backup Automático de Configurações do IOS via Archive

Olá Pessoal,

Em outro artigo do blog intitulado "Backup de Configurações do IOS em Servidor TFTP no Linux" o leitor aprendeu a configurar um servidor TFTP para fazer o backup manual de arquivos de switches e roteadores Cisco executando o IOS, uma vez que esses dispositivos já possuem um cliente TFTP embutido. O objetivo deste artigo é explicar ao leitor como utilizar a ferramenta archive para programar o IOS para realizar periodicamente o backup automático das configurações de switches/roteadores, partindo do princípio de que já existe um servidor TFTP em nossa rede conforme ilustrado abaixo. 


O procedimento para programar um backup diário é bastante simples:

Router(config)# archive
Router(config-archive)# path tftp://192.168.221.27/
Router(config-archive)# time-period 14040
Router(config-archive)# write-memory

Na linha 01 a ferramenta archive é invocada, o que coloca o IOS em seu próprio sub-modo de configuração onde é possível informar o endereço de uma máquina remota que esteja executando um servidor TFTP. O parâmetro time-period representa um intervalo de tempo em minutos, portanto o valor 1440 equivale a 24 horas (60 minutos x 24 horas).  Por fim, o comando write-memory é utilizado para disparar uma ação de cópia da configuração na máquina remota (especificada em path) sempre que houver alguma alteração no dispositivo local, independente do tempo programado. 

Caso exista um servidor FTP na rede, ao invés de um TFTP, as configurações poderiam ser realizadas de maneira bastante semelhante, bastando adicionar algumas informações para autenticação do usuário, sendo que no exemplo abaixo utilizamos o usuário shbbrito e a senha é SENHA:

Router(config)# archive
Router(config-archive)# path ftp://shbbrito:SENHA@192.168.221.27
Router(config-archive)# time-period 14040
Router(config-archive)# write-memory

Outra opção é fazer a transferência segura através do SCP (via SSH), bastando mudar o nome do protocolo no comando path.  O leitor interessado em detalhes desse procedimento encontra mais informações em outro artigo do blog intitulado "Transferência Segura de Arquivos no Cisco IOS via SCP".

Router(config)# archive
Router(config-archive)# path scp://shbbrito:SENHA@192.168.221.27/
Router(config-archive)# time-period 14040
Router(config-archive)# write-memory

Um recurso interessante que cabe destacar é a possibilidade de utilização de duas variáveis na propriedade path do archive que são bastante úteis para personalizar os nomes dos arquivos de backup para fins de versionamento. A variável $t faz referência à data que deve estar sincronizada via NTP, lembrando que as configurações do NTP foram abordadas em outro artigo do blog intitulado "A Hora Certa na Internet Brasileira". A variável $h faz referência ao nome do host. Por exemplo, as configurações do archive poderiam especificar o formato desejado para o nome dos arquivos de backup:

Router(config)# ntp server 208.160.7.186
Router(config)# clock timezone BR -3 9
Router(config)# clock summer-time BRV recurring 3 Sun Oct 0:00 3 Sun Feb 0:00
Router(config)# service timestamp debug datetime msec localtime show-timezone year
Router(config)# service timestamp log datetime msec localtime show-timezone year
Router(config)# archive
Router(config-archive)# path tftp://192.168.221.27/$h-$t
Router(config-archive)# time-period 14040
Router(config-archive)# write-memory

Essa ação resultaria em arquivos com nomes no formato HOSTNAME-MMM-DD-HH:MM:SS-TMZ-N, ou seja, Router-Apr-02-13-21-22-BRV-0. O comando show archive pode ser utilizado para exibir um histórico das últimas ações. 

Router# show archive
The maximum archive configuration allowed is 10.
The next archive file will be named ftp://shbbrito:SENHA@192.168.221.37/-<timestamp>-3
Archive  #  Name
   1        ftp://shbbrito:SENHA@192.168.221.37/Router-Apr-02-13:21:22.BRV-0
   2        ftp://shbbrito:SENHA@192.168.221.37/Router-Apr-02-13:24:22.BRV-1
   3        ftp://shbbrito:SENHA@192.168.221.37/Router-Apr-02-13:27:22.BRV-2

Façam seus testes...

Samuel. 

terça-feira, 28 de março de 2017

Transferência Segura de Arquivos no Cisco IOS via SCP

Olá Pessoal,

Em outro artigo do blog intitulado "Backup de Configurações do IOS em Servidor TFTP no Linux" o leitor aprendeu a configurar um servidor TFTP no Linux (ou Windows) para fazer o backup de arquivos de switches e roteadores Cisco que rodam o IOS, uma vez que esses dispositivos já possuem um cliente TFTP embutido. No entanto, por mais simples que seja executar um servidor TFTP na rede, nem sempre temos um disponível quando precisamos fazer uma transferência rápida de arquivos entre nossa máquina e um roteador/switch.

Não seria ainda mais interessante fazer essa transferência de arquivos via SCP (Secure Copy Protocol) sem a necessidade de executar nenhum servidor TFTP em nossa máquina? Diferente do TFTP, o SCP é um protocolo seguro para transferência de arquivos que opera a partir do SSH. Esse detalhe é interessante porque atualmente é muito provável que todos os switches e roteadores da empresa já estejam configurados para aceitar conexões remotas seguras via SSH. Nesses casos em que o SSH já está configurado na caixa, é ainda mais simples ativar o suporte ao SCP. 


Partindo do princípio de que o serviço SSH esteja devidamente configurado no roteador ou switch seguindo os passos da configuração abaixo, basta entrar com o comando destacado em amarelo para ativar o suporte ao SCP para fins de transferência segura de arquivos ao dispositivo. Ou seja, uma única linha em qualquer caixa com suporte a SSH é suficiente para ativar o SCP. 

Router(config)# hostname R1
R1(config)# ip domain-name labcisco.com.br
R1(config)# username ADMIN privilege 15 secret SENHA
R1(config)# crypto key generate rsa 
[gerar chave de 1024 bits]
R1(config)# ip ssh version 2
R1(config)# line vty 0 15
R1(config-line)# transport input ssh
R1(config-line)# login local
R1(config-line)# exit
R1(config)# ip scp server enable

Uma vez ativado o SCP com base nas configurações anteriores, já é possível fazer a transferência segura de arquivos entre o roteador e outra(s) máquina(s) sem a necessidade de um servidor TFTP. A partir de uma máquina executando Linux ou MacOS, é possível utilizar o próprio cliente SCP já embutido no sistema. Para aqueles que utilizam o Windows, uma aplicação gratuita e bastante comum para esse fim é o WinSCP. Por exemplo, no Linux um arquivo denominado teste.txt no diretório local poderia ser copiado na raiz da memória flash do roteador (com IP 192.168.0.1) através do seguinte comando:

shbbrito@Linux:~# scp teste.txt ADMIN@192.168.0.1:flash:teste.txt
Password: <SENHA>
teste.txt                                100%      0    100K
Connection to 192.168.0.1 closed by remote host.

Também é possível fazer o processo reverso, ou seja, copiar um arquivo da memória do roteador para uma máquina, através do comando abaixo:

shbbrito@Linux:~# scp ADMIN@192.168.0.1:flash:teste.txt /home/shbbrito/teste.txt

Simples assim, seguro e prático, muito prático!

Façam seus testes...

Samuel.

terça-feira, 14 de fevereiro de 2017

Protocolos CDP e LLDP de Descoberta de Vizinhos

Olá Pessoal,

Os protocolos CDP e LLDP são utilizados para comunicação layer-2 entre dispositivos da infraestrutura de uma rede de computadores com a finalidade de descoberta dos vizinhos diretamente conectados. Como ambos os protocolos operam na camada de enlace, os dispositivos sequer precisam ser configurados com um endereço IP para trocarem quadros com informações que permitam sua descoberta na rede de maneira dinâmica. A boa notícia é que ambos os protocolos são extremamente simples de comprender e ainda mais fáceis de configurar! Se você já sabe operar o CDP, então operar o LLDP será tão simples quanto.

O CDP (Cisco Discovery Protocol) é um protocolo proprietário da Cisco e provavelmente um conhecido há anos daqueles que estudam para o exame de certificação CCNA. Outro protocolo que tem exatamente a mesma finalidade é o LLDP (Link-Layer Discovery Protocol) com a diferença de ser um padrão da indústria (IEEE 802.1AB) que pode ser implementado por qualquer fabricante, o que faz dele uma solução bem mais flexível do que o CDP em ambientes com dispositivos de múltiplos fabricantes.  Aqueles que estão estudando para o exame CCNA já devem saber que recentemente o LLDP passou a integrar o componente curricular do novo exame. 

Para praticar os procedimentos de configuração dos protocolos CDP e LLDP o leitor pode construir qualquer cenário com roteadores e switches no simulador Cisco Packet Tracer. Para exemplificar a configuração, irei me basear na simples topologia apresentada abaixo, em que temos um roteador diretamente conectado a outros dois switches que também estão conectados entre si.


Configuração do Cisco Discovery Protocol (CDP)

O CDP já vem habilitado por padrão nas caixas da Cisco, o que é útil para soluções que integram uma infraestrutura totalmente baseada em dispositivos Cisco, por exemplo entre telefones IP e switches Catalyst que se beneficiam da troca de informações da VLAN auxiliar de voz. No entanto, é importante estar atento que são muitas as situações em que é melhor desativar o CDP nas interfaces em que não desejamos que dispositivos vizinhos possam visualizar informações sobre um determinado equipamento, já que a divulgação pode facilitar o processo de descoberta de informações por pessoas não autorizadas. 

É possível desativar globalmente o CDP através do comando destacado em amarelo:

Router(config)# no cdp run
Router(config)# exit
Router# show cdp
% CDP is not enabled

Outra é possível é desativá-lo apenas em alguma(s) interface(s):

Router(config)# interface g0/0
Router(config-if)# no cdp enable

Como o CDP já vem habilitado por padrão, o comando "show cdp neighbors" pode ser utilizado nas caixas para exibir um resumo dos vizinhos diretamente conectados. Esse comando permite identificar qual(is) dispositivo(s) estão diretamente conectados em qual(is) interface(s) do dispositivo local. Caso o administrador queira obter informações mais detalhadas sobre os vizinhos, a palavra detail pode ser adicionada ao comando (show cdp neighbors detail). 

O CDP pode ser bastante útil em ambientes pequenos e médios que não possuem documentação atualizada da sua infraestrutura de redes. A partir de um dispositivo qualquer na infraestrutura é possível identificar os links para seus vizinhos e através do acesso sucessivo aos vizinhos é possível identificar todos os demais vizinhos sob a referência do dispositivo seguinte, de maneira que ao final o administrador terá em mãos a topologia completa da rede.  A propósito, um bom exercício é o leitor utilizar as informações abaixo para desenhar a topologia da rede. 

Observe que a partir do Router é possível identificar que diretamente conectado nele temos o Switch1 e Switch2. Na sequência, a partir do Switch1 podemos confirmar o link anterior para o Router, além de um link adicional para o Switch2. Continuando, no Switch2 podemos confirmar os links para o Router e Switch1. Ao final vocês serão capazes de chegar exatamente na topologia apresentada na figura anterior. Simples assim e bastante útil, não é mesmo?

Router> show cdp neighbors
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
Device ID    Local Intrfce   Holdtme    Capability   Platform    Port ID
Switch1      Gig 0/0          166            S       2960        Gig 0/1
Switch2      Gig 0/1          166            S       2960        Gig 0/1


Switch1> show cdp neighbors
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
Device ID    Local Intrfce   Holdtme    Capability   Platform    Port ID
Switch2      Gig 0/2          153            S       2960        Gig 0/2
Router       Gig 0/1          125            R       C2900       Gig 0/0


Switch2> show cdp neighbors
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
Device ID    Local Intrfce   Holdtme    Capability   Platform    Port ID
Switch1      Gig 0/2          124            S       2960        Gig 0/2
Router       Gig 0/1          157            R       C2900       Gig 0/1



Configuração do Link-Layer Discovery Protocol (LLDP)

Ao contrário do CDP que vem habilitado por padrão nas caixas da Cisco, o LLDP precisa ser habilitado manualmente pelo administrador antes de interagir com outros equipamentos com o protocolo aberto. Nada de mais nesse ponto, visto que sua ativação global em todas as interfaces é bem simples, conforme pode ser observado no comando destacado em amarelo:

Router# show lldp
% LLDP is not enabled
Router# configure terminal
Router(config)# lldp run
Router(config)# exit
Router# show lldp

Global LLDP Information:
    Status: ACTIVE
    LLDP advertisements are sent every 30 seconds
    LLDP hold time advertised is 120 seconds
    LLDP interface reinitialisation delay is 2 seconds  

Depois de habilitado, o LLDP pode exibir as informações simplificadas dos seus vizinhos exatamente da mesma forma que foi feito anteriormente com o CDP, mudando apenas a palavra CDP por LLDP na linha de comando. A mesma regra vale para exibir informações detalhadas em que basta adicionar a palavra detail no comando de consulta dos vizinhos.  

Router# show lldp neighbors
Capability codes:
    (R) Router, (B) Bridge, (T) Telephone, (C) DOCSIS Cable Device
    (W) WLAN Access Point, (P) Repeater, (S) Station, (O) Other
Device ID           Local Intf     Hold-time  Capability      Port ID
Switch1             Gig0/0         120        B               Gig0/1
Switch2             Gig0/1         120        B               Gig0/1

Total entries displayed: 2

Router# show lldp neighbors detail
(...) Saída Omitida 


Na realidade o LLDP permite que o administrador possa personalizar sua operação com mais opções do que o CDP. Por exemplo, com LLDP é possível definir quais informações um dispositivo deve ou não deve enviar para seus vizinhos através de atributos de controle, tamanho e valor (TLV). 

Router(config)# lldp tlv-select ?
    mac-phy-cfg           IEEE 802.3 MAC/Phy Configuration/status TLV
    management-address    Management Address TLV
    port-description      Port Description TLV
    port-vlan             Port VLAN ID
    power-management      IEEE 802.3 DTE Power via MDI TLV
    system-capbilities    System Capabilities TLV
    system-description    System Description TLV
    system-name           System NAME TLV 
 
Assim como o CDP, também é possível desativar o LLDP apenas em alguma(s) interface(s) em que não desejamos a troca de informações do dispositvo com seus vizinhos diretamente conectados. Para desativar o protocolo em uma interface específica devem ser utilizados os comandos abaixo:

Router(config)# interface g0/0
Router(config-if)# no lldp receive
Router(config-if)# no lldp transmit

Façam seus testes...

Samuel.

sexta-feira, 3 de fevereiro de 2017

Níveis de Privilégio no Sistema Cisco IOS

Olá Pessoal,

Um conceito básico que todos aprendem logo no primeiro contato com o sistema IOS utilizado em switches e roteadores da Cisco são os níveis de privilégio. A maioria dos profissionais já sabe que por padrão existe o modo de execução (nível 1) em que o usuário somente tem acesso à visualização de alguns comandos básicos sem nenhuma permissão de executar qualquer configuração no dispositivo, além do modo privilegiado (nível 15) que permite a visualização e configuração de todos os recursos do sistema (equivalente ao usuário root no Linux).

Se os níveis padrões são identificados pelos números 1 e 15, é de se esperar que os números intermediários tenham algum significado, não é mesmo? E eles têm, já que o IOS permite a definição de até 16 níveis de privilégio variando de 0 a 15, sendo 0 o mais restritivo e 15 o mais permissivo. Esse detalhe acaba se tornando apenas secundário porque é comum utilizar o comando enable assim que o administrador faz acesso a um dispositivo para obter acesso pleno a todas as configurações, o que torna desnecessário qualquer outro modo intermediário.  


No entanto, em ambientes maiores que possuem muitos equipamentos e diversos técnicos e engenheiros responsáveis pelas configurações das caixas, é natural segregar o pessoal em grupos homogêneos que tenham diferentes privilégios de acesso com o objetivo de restringir a atuação de cada grupo dentro do escopo da sua função. Por exemplo, é prática gerencial bastante comum classificar o pessoal técnico em níveis 1 (entrada), 2 (intermediário) e 3 (avançado), de maneira que os chamados sejam associados com cada nível em função da sua natureza. 

Nesses casos é bastante útil ter a flexibilidade de criar mais níveis de privilégios para esses grupos, ao invés de ficar limitado apenas aos dois níveis padrões 1 e 15, já que o nível 1 tem apenas acesso básico a visualização de poucas configurações e que o nível 15 representa o extremo oposto em que o técnico pode realizar qualquer intervenção na caixa. A ideia dos níveis intermediários é conferir acesso apenas a comandos específicos que um determinado grupo de usuários requer para executar suas funções. Quando criamos um usuário em uma base local que fica armazenada no próprio equipamento switch ou roteador, estamos habituados a fazê-lo da seguinte maneira:

Roteador(config)# line console 0
Roteador(config-line)# login local
Roteador(config-line)# line vty 0 4
Roteador(config-line)# login local
Roteador(config-line)# exit
Roteador(config)# username ADMIN privilege 15 secret SENHA

Utilizamos a configuração "login local" no acesso via console e nas primeiras 5 sessões remotas (vty 0 4) para forçar que seja realizada a autenticação do usuário antes de liberação do acesso, lembrando que o modo padrão (login) consiste apenas em senha sem usuário. O comando destacado em amarelo cria um usuário denominado ADMIN com permissão privilegiada (nível 15), sendo que SENHA é sua senha! A criação de usuários com níveis intermediários de privilégio é tão simples quanto o procedimento anterior, bastando alterar o número do privilégio.

No entanto, de nada adianta alocar um usuário com um nível de privilégio que não teve nenhum comando adicionado pelo administrador naquele nível específico, ou seja, é necessário informar quais comandos ele poderá executar. No exemplo abaixo criaremos um usuário denominado OPERADOR_2 com nível de privilégio 9, de modo que esse usuário será capaz de executar qualquer comando que tenha sido previamente associado pelo administrador com o nível 9 (incluindo os comandos de 0 a 8). Observem nas próximas linhas que a permissão de visualização do arquivo startup-config será restrita apenas aos usuários de nível intermediário 9, ou seja, somente os usuários dos níveis 9 até 15 poderão visualizar todas as configurações que são inicializadas com o equipamento. 

Roteador(config)# username OPERADOR_2 privilege 9 secret SENHA_9
Roteador(config)# privilege exec level 9 show startup-config

Como são várias as possibilidades para personalizar os níveis intermediários, abaixo trago outro exemplo em que é criado o usuário OPERADOR_1 de nível 6. Esse nível permite a configuração simples de endereços IPv4 e IPv6 nas interfaces de rede, inclusive com possibilidade de ativá-las (no shutdown) ou desativá-las (shutdown). Reparem que o segundo termo da sintaxe do comando privilege remete ao modo ou sub-modo de configuração de pertença do comando. Por exemplo, é no sub-modo de configuração de interface (amarelo) onde são configurados os endereços IP e ativadas/desativadas as interfaces.

Roteador(config)# username OPERADOR_1 privilege 6 secret SENHA_6
Roteador(config)# privilege exec level 6 configure terminal
Roteador(config)# privilege configure level 6 interface
Roteador(config)# privilege interface level 6 ip address 
Roteador(config)# privilege interface level 6 ipv6 address
Roteador(config)# privilege interface level 6 no ip address
Roteador(config)# privilege interface level 6 no ipv6 address
Roteador(config)# privilege interface level 6 shutdown
Roteador(config)# privilege interface level 6 no shutdown

Por fim, é importante ter em mente que o usuário pode utilizar o comando "show privilege" para visualizar o nível de privilégio do usuário em que ele está logado no sistema. 

Roteador> show privilege
Current privilege level is 1

Roteador# show privilege
Current privilege level is 15
  
Para que qualquer usuário possa ter permissão para visualizar seu nível de privilégio através do comando anterior, além de ter acesso a todos os demais comandos de visualização do modo padrão de execução (nível 1), podem ser utilizados os seguintes comandos:

Roteador(config)# privilege exec level 1 show privilege
Roteador(config)# privilege exec level 1 show

Como há muitos mais detalhes envolvidos com a configuração dos níveis intermediários de privilégio no sistema IOS, recomendo para aqueles interessados no assunto que façam a leitura da documentação oficial da Cisco no link abaixo:


Façam seus testes...

Samuel.

quinta-feira, 14 de janeiro de 2016

Arquitetura e Hierarquia de Memórias em Roteadores Cisco

Olá Pessoal,

Um tópico fundamental para aqueles que estão estudando para a certificação CCNA é compreender os fundamentos da arquitetura de um roteador Cisco. Um roteador nada mais é do que um computador especializado em executar funções de rede, por isso ele possui vários componentes que são comuns a qualquer sistema de computação. A figura abaixo traz um esquemático geral da arquitetura de um roteador Cisco onde o leitor pode observar seus componentes principais. Cabe destacar que, obviamente, trata-se de um esquemático generalista comum a boa parte dos roteadores Cisco, mas é natural que cada equipamento tenha sua arquitetura específica com particularidades.


Como em qualquer sistema de computação, seu componente principal é a CPU. Diferente de sistemas de computação tradicionais, os roteadores são caixas especializadas que devem ser eficazes em desempenhar apenas algumas tarefas específicas, motivo pelo qual é comum que os processadores sejam do tipo RISC. Exemplos de processadores utilizados pela Cisco são MIPS e Motorola PowerPC nos roteadores atuais, além de Motorola 68030 e Orion/R4600 em equipamentos mais antigos. O antigo roteador 2621, por exemplo, utiliza um processador Motorola PowerQUICC MPC860. O processador suporta a execução das tarefas do sistema operacional IOS, o que inclui as decisões de comutação e roteamento de pacotes, manutenção das tabelas de roteamento, etc. Também podem existir outros co-processadores no equipamento, principalmente para executar funções de criptografia que consomem bastante recurso, como acontece nos roteadores da família ISR G2 (1900, 2900 e 3900). 

Obs.: Para aqueles que não estão lembrados dos estudos no começo da graduação ou mesmo de cursos técnicos, processadores do tipo RISC (Reduced Instruction Set Computing) trabalham com um conjunto mínimo de instruções otimizadas, em contraste aos tradicionais processadores CISC que trabalham com um conjunto complexo de instruções versáteis. Essa abordagem simplificada do conjunto mínimo de instruções é bastante eficiente em termos de desempenho, desde que o equipamento seja desenvolvido para executar tarefas bem específicas. 

Outro componente fundamental é a memória, sendo que, na realidade, os roteadores Cisco não possuem uma única memória, mas uma composição de diferentes tipos de memórias, cada uma idealizada para um fim específico na arquitetura do sistema. A hierarquia de memórias adotada nos roteadores é um dos assuntos que mais gera dúvida nos alunos, mas compreendê-la é importante para operar a caixa e configurar o sistema IOS. Para organizar melhor esse assunto, abaixo trago uma síntese de cada uma das memórias e, na sequência, trago uma tabela com o resumo dos quatro tipos de memórias associadas com os respectivos conteúdos que armazenam.


  • ROM - Trata-se de uma pequena memória somente leitura, soldada na placa mãe, que armazena o inicializador do sistema (bootloader), é responsável pelo diagnóstico inicial do hardware (POST) e possui uma versão minimalista do IOS (ROMmon). Muitas vezes esse conjunto de ferramentas de inicialização é chamado de bootstrap;
  • Flash - É uma memória não volátil (persistente) utilizada para armazenar a(s) imagem(ns) comprimida(s) do sistema operacional IOS, além de outros arquivos de sistema. Essa memória normalmente pode ser expandida e/ou pode ser removível em formato de cartão;
  • NVRAM - Trata-se de uma memória rápida, pequena e não volátil, daí o nome Non-Volatile RAM (NVRAM), que é responsável por armazenar o arquivo de configuração mais importante de qualquer roteador Cisco (startup-config). É nesse arquivo que ficam armazenadas todas as configurações que serão inicializadas quando o roteador é ligado. A NVRAM também armazena a config-register, um registrador que sinaliza como a caixa deve se comportar durante o boot, algo útil, por exemplo, para realizar a recuperação de senhas. Uma observação é que nem todos os modelos de roteadores possuem uma NVRAM específica, sendo que alguns armazenam o arquivo de inicialização em uma partição da flash;
  • DRAM - A DRAM é uma memória volátil de alto desempenho, ou seja, seu conteúdo é perdido sempre que a caixa é desligada/reiniciada por qualquer motivo. È a mesma memória tradicionalmente utilizada em PCs para armazenar aplicações e dados. Em roteadores Cisco essa memória é utilizada para armazenar a imagem descomprimida do IOS em execução, todas as tabelas de roteamento e complementares, os buffers de pacotes, além do arquivo com as configurações vigentes denominado running-config


As informações da quantidade de memória que um roteador possui podem ser facilmente exibidas através do comando "show version" no IOS. Reparem os destaques em amarelo da figura abaixo para identificar as memórias DRAM, NVRAM e Flash. A DRAM é dividida em dois números que devem ser somados porque essa memória é logicamente separada em dois espaços, um reservado para dados do processador no plano de controle e outro compartilhado para dados  de entrada/saída. A NVRAM é suficientemente pequena para armazenar um arquivo de configuração simples com milhares de linhas. A tela abaixo foi extraída de um roteador 1905 com 256MB de DRAM, 256K de NVRAM e 256MB de Flash. 


Finalmente existem as linhas de entrada/saída que permitem interação do mundo externo com o roteador, seja através da porta de console para configuração local, seja através da porta auxiliar para configuração remota ou mesmo através das interfaces de rede para fins de configuração (in-band) e/ou envio e recebimento de tráfego da rede de produção. Nesse ponto cabe destacar que uma característica comum de roteadores Cisco é que eles são caixas modulares, ou seja, é possível adicionar/remover módulos com diferentes tipos de interfaces de rede. Por isso sua arquitetura tem que estar acoplada com barramentos (slots) que permitam a inserção de novos módulos para garantir essa flexibilidade.

A importância de cada um desses componentes para o devido funcionamento do sistema faz mais sentido lógico quando entendemos o processo de inicialização de um roteador Cisco. Ao ligar um roteador, o bootstrap armazenado na memória ROM é responsável por fazer um teste inicial para diagnosticar o bom funcionamento de todo o hardware, denominado Power-On Self Test (POST). Se o hardware estiver íntegro e foi inicializado com sucesso, então o bootstrap observa a informação do registrador de configuração para determinar suas próximas ações, sendo que o config-register padrão é igual a 0x2102 e instrui o roteador a buscar a imagem do IOS na memória flash para, então, carregar o arquivo de configuração inicial (startup-config) da NVRAM.  

Vimos que a memória flash é responsável por armazenar a imagem comprimida do sistema operacional IOS. Ao localizar a imagem comprimida, o roteador faz a descompressão do IOS na memória DRAM que possui melhor desempenho e, então, o sistema passa a ser executado a partir dessa memória. Esse processo demora um pouco e pode ser observado quando iniciamos o roteador e somos deparados com uma sequência de caracteres ###. A partir deste ponto o usuário é deparado com o prompt do IOS e todas as configurações executadas passam a ser salvas no arquivo de configuração corrente, ou seja, na running-config armazenada na DRAM. 



A figura acima traz um diagrama simplificado com as principais etapas que ocorrem durante o processo de boot de um roteador Cisco. A princípio pode parecer bastante informação para aqueles que ainda estão começando a estudar para o exame CCNA, mas esse conteúdo é fundamental para qualquer profissional que queira construir uma carreira em soluções Cisco. Bons estudos...

Samuel.

segunda-feira, 11 de janeiro de 2016

Conexão Terminal em Dispositivos Cisco via Cabo USB

Olá Pessoal,

A maioria dos equipamentos de rede possui uma porta de console para permitir aquele primeiro acesso em que são realizadas as configurações iniciais do dispositivo de maneira out-of-bound, ou seja, uma conexão local direta à parte da rede local. Em dispositivos Cisco essa conexão tradicionalmente é feita através de algum aplicativo terminal, a exemplo do PuTTY ou do Screen, via conexão serial em uma porta de console com terminal RJ-45, em que utilizamos o cabo apresentado na figura 1a para esse fim.

Ocorre que praticamente todos os novos computadores não possuem uma porta serial (RS-232) como acontecia anos atrás, motivo pelo qual é necessário utilizar um adaptador USB-Serial (figura 1b) que é acoplado em uma porta USB do computador e, depois de instalados os devidos drivers, o sistema operacional passa a reconhecer uma interface serial (COM ou TTY).


Figura 1. Tipos de Cabos de Console (Clique p/ Ampliar)

Felizmente, já há alguns anos, os roteadores e switches da Cisco possuem, além da tradicional porta de console do tipo serial (terminal RJ-45), uma porta de console adicional do tipo mini-USB (figura 2), o que permite a utilização de um cabo USB convencional. Na relação de acessórios da Cisco, o referido cabo é denominado CISCO-CONSOLE-USB, mas na prática qualquer cabo USB que tenha um terminal USB Tipo-A e outro terminal do tipo mini-USB Tipo-B (figura 1c) é compatível.

Figura 2. Visão Traseira do Chassi de um Roteador Cisco 1905

Nas linhas abaixo trago um rápido guia de como realizar essa conexão terminal em roteadores, switches ou mesmo outras caixas da Cisco utilizando um cabo USB, ao invés do tradicional cabo de console serial. O procedimento é descrito para Linux, Mac OS X e Windows. 



Conexão Terminal via USB no Linux

No Linux não é necessário instalar nenhum driver para que o cabo USB possa ser utilizado como linha serial. Ao conectar o cabo no computador e no roteador/switch, o sistema operacional irá identificar o dispositivo e criar seu respectivo arquivo de sistema em /dev/ttyACM#, sendo que # é um número qualquer de indexação. Outra vantagem é que não é necessário instalar nenhum software terminal, uma vez que a maioria das distribuições Linux já possui o screen. Apesar disso, não há problema nenhum em utilizar qualquer outro software terminal de preferência do usuário.

root@Linux:~$ ls -ltr /dev/*ACM*
crw-rw---- 1 root dialout 166, 0 Jan   9 13:18 /dev/ttyACM0
root@Linux:~$ screen /dev/ttyACM0 9600
[screen is terminating]
root@Linux:~$

O primeiro passo é listar os arquivos tty do diretório de sistema /dev e localizar o arquivo que normalmente começa por ttyACM. Para facilitar a visualização da saída, é útil utilizar os parâmetros -ltr para exibir os arquivos em lista (-l), por ordem de alteração (-t) e de maneira reversa (-r). Uma vez identificado o nome do arquivo que faz referência à linha serial, basta executar o aplicativo screen na respectiva porta com a velocidade de 9600Bd (baud rate), destacando que o valor padrão de baud em dispositivos mais novos pode ser 115200Bd. Para encerrar o screen, basta digitar CTRL+A : quit.



Conexão Terminal via USB no Mac OS X

No Mac OS X não é necessário instalar nenhum driver para que o cabo USB possa ser utilizado como linha serial. Ao conectar o cabo no computador e no roteador/switch, o sistema operacional irá identificar o dispositivo e criar seu respectivo arquivo de sistema em /dev/tty.usbmodem#, sendo que # é um número qualquer de indexação. Outra vantagem é que não é necessário instalar nenhum software terminal, uma vez que o Mac OS X já possui o screen. Apesar disso, não há problema nenhum em utilizar qualquer outro software terminal de preferência do usuário.

MacBook:~ User$ ls -ltr /dev/*usb*
crw-rw-rw-  1 root wheel  18,   4  9 Jan 13:13 tty.usbmodem1411
crw-rw-rw-  1 root wheel  18,   5  9 Jan 13:13 cu.usbmodem1411
MacBook:~ User$ screen /dev/tty.usbmodem1411 9600
[screen is terminating]
MacBook:~ User$

É necessário abrir o aplicativo Terminal (no Launchpad) para listar os arquivos tty do diretório de sistema /dev e localizar o arquivo que normalmente começa por tty.usbmodem. Para facilitar a visualização da saída, é útil utilizar os parâmetros -ltr para exibir os arquivos em lista (-l), por ordem de alteração (-t) e de maneira reversa (-r). Uma vez identificado o nome do arquivo que faz referência à linha serial, basta executar o aplicativo screen na respectiva porta com a velocidade de 9600Bd (baud rate), destacando que o valor padrão de baud em dispositivos mais novos pode ser 115200Bd. Por fim, para encerrar o cliente terminal screen, basta digitar CTRL+A : quit.



Conexão Terminal via USB no Windows

No Windows é necessário instalar um pacote de drivers da Cisco (atualmente na versão 3.1) para que o sistema operacional possa utilizar o cabo USB como linha serial. O leitor pode baixar o pacote de drivers diretamente da página da Cisco ou através do link abaixo que estou disponibilizando no blog. Observe que existe um arquivo específico para arquiteturas 32bits e outro para 64bits. Também é necessário instalar algum software terminal que permita acesso serial (por ex.: PuTTY).

http://www.labcisco.com.br/app/cisco-usbconsole-driver.zip

Uma vez instalado o driver no Windows, então o sistema operacional irá reconhecer uma porta Cisco Serial do tipo COM (figura 3) que deverá ser informada no software terminal de maneira idêntica ao tradicional acesso serial que era feito via cabo de console.

Figura 3. Porta Cisco Serial no Gerenciador de Dispositivos do Windows


Façam seus testes...

Samuel.

domingo, 3 de janeiro de 2016

Suporte Oficial da Cisco na Recuperação de Senhas

Olá Pessoal

Uma situação não tão incomum que um administrador de rede pode ter que enfrentar é a necessidade de acessar um roteador ou switch protegido por uma senha desconhecida, seja por remanejamento de equipamentos usados, seja por transição de pessoal técnico ou qualquer outro motivo.

No caso específico de roteadores e switches da Cisco, não existe um procedimento comum a ser executado em qualquer equipamento que permita a recuperação de senha (password recovery). Ao contrário, o procedimento de recuperação de senha varia entre os diversos modelos de caixas e, antes de fazê-lo aleatóriamente, é recomendável que o técnico consulte documentação confiável do modelo específico. Ao se deparar com essa necessidade, minha recomendação é que seja consultada a página de suporte da Cisco no link abaixo, onde podem ser encontrados os procedimentos necessários para resetar os principais modelos de switches e roteadores. 


Para não limitar este artigo apenas à recomendação de leitura da página de suporte da Cisco, aproveito para trazer um guia rápido dos procedimentos de recuperação da senha nos switches Catalyst 2960/3550/3560/3750 e nos roteadores 1900, equipamentos bastante comuns no mercado. Os guias abaixo tiveram como referência a página de suporte da Cisco que recomendo no link acima.



Password Recovery em Switches Catalyst 2960/3550/3560/3750


01) Utilize um computador qualquer para acessar o switch através de porta de console, procedimento que deve ser feito utilizando o devido cabo de console e um software de acesso terminal (por ex. PuTTY);

02) O segundo passo é delisgar o cabo de força do switch;

03) O terceiro passo é ligar o switch e colocá-lo em modo prompt. Basta manter apertado o botão MODE, normalmente localizado no lado esquerdo do chassi frontal do switch, enquanto é reconectado o cabo de força para ligar o equipamento. A figura abaixo traz uma ilustração do botão MODE (ítem 9), onde o leitor pode observar que ele normalmente fica localizado próximo aos LEDs de status do equipamento;

Fonte: Cisco Systems (www.cisco.com)

04) Ao receber o prompt switch:, digite flash_init e veja uma saída parecida com:

switch: flash_init
Initializing Flash...
flashfs[0]: 143 files, 4 directories
flashfs[0]: 0 orphaned files, 0 orphaned directories
flashfs[0]: Total bytes: 3612672
flashfs[0]: Bytes used: 2729472
flashfs[0]: Bytes available: 883200
flashfs[0]: flashfs fsck took 86 seconds
....done Initializing Flash.
Boot Sector Filesystem (bs:) installed, fsid: 3
Parameter Block Filesystem (pb:) installed, fsid: 4
switch:


05) Na sequência, digite load_helper;

06) Para exibir o sistema de arquivos do switch e identificar seu arquivo de configuração, digite dir flash: (incluindo os ":" no final). Observe na saída do exemplo abaixo que o arquivo de configuração está destacado em amarelo e é denominado config.text.

switch: dir flash:
Directory of flash:/
2    -rwx  1803357   <date>         c3500xl-c3h2s-mz.120-5.WC7.bin
4    -rwx  1131      <date>         config.text
5    -rwx  109       <date>         info
6    -rwx  389       <date>         env_vars
7    drwx  640       <date>         html
18   -rwx  109       <date>         info.ver
403968 bytes available (3208704 bytes used)
switch:

07) Uma vez localizado o arquivo de configuração que é carregado quando o switch é inicializado, podemos renomeá-lo através da inserção do seguinte comando no prompt:


switch: rename flash:config.text flash:config.old

08) Agora podemos reiniciar o switch, através do comando: boot

switch: boot
Loading "flash:c3500xl-c3h2s-mz.120-5.WC7.bin"...###############################
################################################################################
######################################################################
File "flash:c3500xl-c3h2s-mz.120-5.WC7.bin" uncompressed and installed, 
entry point: 0x3000 executing...

09) Depois de reiniciado, o switch não será mais capaz de localizar o arquivo de configuração original e você receberá o tradicional diálogo de configuração que é exibido pelo IOS quando o equipamento não possui nenhuma configuração. A partir desse ponto estamos no sistema IOS, então vamos sair do diálogo e renomear novamente o arquivo de configuração, dessa vez para o nome original para que o switch seja capaz de carregar todas as configurações que haviam sido previamente realizadas.

Switch> enable
Switch# rename flash:config.old flash:config.text
Destination filename [config.text]
<Pressione ENTER>
Switch#  copy flash:config.text system:running-config
Destination filename [running-config]
<Pressione ENTER>
1131 bytes copied in 0.760 secs
SW#

10) Agora já podemos atribuir novas senhas para o equipamento antes de reiniciá-lo pela última vez. Nas linhas abaixo atribuiremos novas senhas para o modo privilegiado (enable), para o acesso via console (linha console 0) e para o acesso remoto (linhas vty).

SW# configure terminal
SW(config)# enable secret SENHA
SW(config)# enable password SENHA
SW(config)# line vty 0 15
SW(config-line)# password SENHA
SW(config-line)# login
SW(config-line)# line console 0
SW(config-line)# password SENHA
SW(config-line)# end
SW# wr
Building configuration...
[OK]
SW#

Pronto! Basta reiniciar os switch que as novas senhas passam a vigorar sem que nenhuma das configurações previamente realizadas tenham sido perdidas.



Password Recovery em Roteadores 1900

01) Ao acessar o roteador através da porta de console, digite show version no prompt para confirmar quais são as configurações de registro (register configuration) que determinam a ação do equipamento ao ser inicializado, conforme observado na saída abaixo. O valor padrão da configuração de registro normalmente é 0x2102, o que quer dizer que o roteador deve carregar o arquivo de inicialização (startup-config) durante o boot;

Router> show version
Cisco IOS Software, C2900 Software (C2900-UNIVERSALK9-M), Version 15.0(1)M1,
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2009 by Cisco Systems, Inc.
Compiled Wed 02-Dec-09 15:23 by prod_rel_team

ROM: System Bootstrap, Version 15.0(1r)M1, RELEASE SOFTWARE (fc1)

(...) Saída Omitida

Technology Package License Information for Module:'c2900'

----------------------------------------------------------------
Technology    Technology-package          Technology-package
              Current       Type          Next reboot
-----------------------------------------------------------------
ipbase        ipbasek9      Permanent     ipbasek9
security      securityk9    Permanent     securityk9
uc            uck9          Permanent     uck9
data          datak9        Permanent     datak9

Configuration register is 0x2102

02) Utilize o botão power para desligar o roteador e ligá-lo novamente;

03) O próximo passo é colocar o roteador no modo ROMmon, pressionando break algumas vezes durante o boot, depois da mensagem "program load complete, entry point:". Um detalhe importante e fundamental é que a ROMmon (ou bootstrap) é um pequeno programa responsável pela inicialização de todo o hardware do roteador e também do sistema operacional IOS;

04) Uma vez no prompt da ROMmon, vamos alterar o valor padrão 0x2102 da configuração de registro para 0x2142, o que quer dizer que o roteador não deverá carregar o arquivo de inicialização em que as senhas estão armazenadas;

romnon 1> confreg 0x2142
romnon 2> reset

05) Observe que após o comando de reset o roteador será reinicializado, mas não carregará nenhuma configuração. O roteador irá ignorar o arquivo de configuração inicial (startup-config) e você receberá o tradicional diálogo que é exibido pelo IOS quando o equipamento não possui nenhuma configuração;

06) Agora podemos copiar o conteúdo da startup-config na running-config do roteador para recuperar todas as configurações previamente realizadas, incluindo as senhas antigas. O único detalhe diferente é que todas as interfaces previamente configuradas estarão desativadas em modo shutdown, por isso será necessário ativar novamente as interfaces em uso na rede. Na sequência será necessário atribuir novas senhas, conforme observado nas linhas abaixo:

Router> enable
Router# copy startup-config running-config
Router# configure terminal
Router(config)# enable secret SENHA

Obs.: Cuidado para não digitar "copy running-config startup-config" por engano, senão você estará copiando todas as configurações correntes para o arquivo com as configurações de inicialização, ou seja, suas configurações originais serão todas perdidas!

07) Por fim, antes de reiniciar o roteador será necessário retornar as configurações de registro atual, caso contrário o roteador não carregará o conteúdo da startup-config durante as próximas reinicializações. Esse procedimento é rápido e direto através do acesso ao prompt do IOS:

Router(config)# config-register 0x2102
Router(config)# end
Router# write

Pronto! Basta reiniciar o roteador que a nova senha passa a vigorar sem que nenhuma das configurações previamente realizadas tenham sido perdidas.

Façam seus testes...

Samuel.