10 dicas “quentes” relacionadas ao Cisco IOS

Dei uma pesquisada hoje pela Net buscando temas interessantes para escrever um post para vocês. Encontrei algo bastante interessante no site O’Reilly Network, que passo aqui para vocês, traduzido!

Trata-se das 10 dicas mais quentes sobre o IOS, escritas por James Boney, autor do livro “Cisco IOS in a Nutshell”

  1. Os comandos têm efeito imediato.
  2. Se você já lida com roteadores Cisco há algum tempo, esta dica é inútil! Entretanto, parece que novos usuários esquecem deste detalhe com frequência!

    No IOS, conforme você digita os comandos em modo de configuração, estes têm efeito assim que a tecla “ENTER” é pressionada. Veja o exemplo abaixo:

     
        Router1#config terminal 
        Enter configuration commands, one per line.  End with CNTL/Z. 
        Router1(config)#hostname MyRouter 
        MyRouter(config)#^Z 
        MyRouter# 
    

    Como pode ser observado, o procedimento para alterar o nome do roteador entra em ação imediatamente, assim que o ENTER é pressionado.

  3. Acostume-se a utilizar descrições.
  4. No processo de configuração de um router, existem comandos específicos que permitem a inserção descrições em determinados pontos da configuração. Por exemplo, o comando “description” utilizado em interfaces, o comando “remark”, utilizado em ACLs, ou mesmo um banner informativo. Todos estes comandos permanecem na configuração do router e são de grande ajuda durante o processo de resolução de problemas, ou mesmo de documentação de uma rede.

    Eis um exemplo do comando aplicado à uma interface::

     
        ! Here is an interface description. 
        ! Document as much about the interface as possible 
        interface Serial0 
            description Connection To Irvine: Wan ID [23499]
    

    Eis um exemplo de utilização de um BANNER, ou seja, uma mensagem que é apresentada quando uma pessoa conecta-se ao dispositivo:

     
        MyRouter(config)#banner motd # 
        Enter TEXT message.  End with the character '#'. 
            Welcome to MyRouter. 
        Some legalese should go here about unauthorized access. 
        # 
    

    Aqui, um exemplo do comando “remark”, em uma ACL. Este comando aceita até 100 caracteres e pode ser utilizado em ACLs com nome (named ACLs) ou com números (numbered ACLs).

     
        access-list 1 remark Permit our private network through the list 
        access-list 1 permit 10.1.1.0 0.0.0.255 
        access-list 1 remark Just deny everything else 
        access-list 1 deny any
    

    Existe ainda a opção de utilizar o “!”, como forma de documentar uma configuração. Este método é útil apenas em configurações OFFLINE, já que comentários precedidos por “!” são perdidos se inseridos em uma configuração ativa. Eis um exemplo:

        ! Criação da ACL 1, para permitir apenas a rede 10.1.1.0 
        access-list 1 permit 10.1.1.0 0.0.0.255 
        access-list 1 deny any 
    
  5. O comando “RELOAD” pode salvar sua pele.
  6. Não importa o quão bem você planeje uma alteração, eventualmente você irá precisar alterar a configuração de um roteador remotamente. Se você cometer um erro durante o processo, pode perder a conexão remota com o roteador, terá que pegar o carro voando para ir até o local ou, se isso não for possível, terá de ligar para alguém que se encontra próximo e pedir que desligue e ligue o roteador, para retornar a configuração antiga (dependendo de quem estiver do outro lado, é mais rápido pedir isso do que explicar o que foi feito e pedir que arrume a configuração). Obviamente isso apenas funcionará se você não salvou a config “problemática” na NVRAM do router. Esperemos que não 😉 . De qualquer forma, esta “técnica” não é muito boa, como vocês devem ter percebido…! Além do que, ao utiliza-la, você mostra para o mundo seu lado… bem… vamos dizer… inexperiente (para não dizer outra coisa). Alterações em rotas, senhas, ACLs, e outras, podem gerar este tipo de problema. Para minimizar as chances de “embaraço”, um reload programado pode ser utilizado.

    Por exemplo, vamos informar ao router para realizar um reload em 3 minutos:

        MyRouter#reload in 3 
            Reload scheduled in 3 minutes 
        Proceed with reload? [confirm]y 
    

    Agora, temos 3 minutos para fazer a configuração que desejamos. Vamos aplicar uma ACL na interface S0:

        MyRouter#config terminal 
        Enter configuration commands, one per line.  End with CNTL/Z. 
        MyRouter(config)#interface serial0 
        MyRouter(config-if)#ip access-group 110 in 
        MyRouter(config-if)#^Z 
        MyRouter# 
    

    Procedemos com a alteração na config e, aparentemente, ainda temos acesso ao router! Bom, podemos cancelar o processo de reload, portanto:

        MyRouter#reload cancel
    

    Ou, se a aplicação da ACL tivesse cortado meu acesso remoto, o roteador iria reinicializar e a config original (que permitia meu acesso) entraria em ação.

  7. Não se esqueça de configurar uma senha (enable secret ou mesmo enable password).
  8. Se você planeja acessar um router remotamente, você precisa ter a senha enable (secret ou password) configurada, assim como uma senha para as linhas VTY (Telnet). Se você não fizer isso, o router não permitirá seu acesso, remotamente.

        ! Enable service password-encryption if it isn't already. 
        service password-encryption 
        ! Here is our enable password, which is ok 
        ! but not too secure. 
        enable password 7 141B171F01012325 
        ! Here is our enable secret, much better. 
        enable secret 5 $1$99Jc$dxVXUkwMM3Edvj7f0SUrL/ 
    

    Não se esqueça que a senha “enable secret” é preferida em relação a senha “enable password”. Para garantir, acostume-se a utilizar sempre a “enable secret”.

  9. Pare a resolução de nomes automática no prompt do router.
  10. Este é um problema bastante irritante! Se você erra a digitação de um comando, o router pensa que você digitou um nome de um host e tenta resolver este nome para um endereço IP para, então, conectar-se via Telner ao destino. O irritante é que este processo leva tempo, e você tem que esperar o router perceber que não existe um host na rede com o “nome” digitado. Por exemplo:

        MyRouter#shwo 
        Translating "shwo"...domain server (10.1.1.2) 
        % Unknown command or computer name, or unable to find computer address 
        MyRouter# 
    

    Neste exemplo, o comando “show” foi digitado errado. Existem 2 métodos para desabilitar isso no router. O primeiro, é alterar o tipo de transporte preferido nas linhas Console e VTY:

     
        ! Console port 
        line con 0 
            transport preferred none 
        ! VTY Ports 
        line vty 0 5 
            transport preferred none 
    

    O segundo, é desabilitar a resolução de nomes no router:

     
        MyRouter(config)#no ip domain-lookup 
    
  11. Dois erros comuns em ACLs.
  12. O primeiro problema mais comum ao se elaborar ACLs é não permitir nenhum tipo de tráfego ICMP. Apesar de muitos pensarem que ICMP é um protocolo “do mal”, e apenas usado por hackers para causar problemas em redes, o ICMP desempenha um papel muito importante.

    Por exemplo, você acaba de habilitar uma ACL em um link xDSL no router de sua empresa. De repente, sempre que você tenta enviar arquivos grandes anexados em e-mails, o tempo limite da conexão se esgota e a conexão é encerrada de forma inesperada. Sem saber o que fazer, você desaplica a ACL e o problema é resolvido. Re-aplica a ACL, e o problema retorna. Você revisa a ACL inúmeras vezes e não consegue identificar o problema. Bom, o problema pode ser exatamente a não-permissão de tráfego ICMP em sua ACL!

    No problema acima, mensagens ICMP específicas, relacionadas ao MTU (Maximum Transmission Unit) ou “source-quench” não estão conseguindo atravessar a ACL. Neste caso, os comandos abaixo resolveriam o problema:

        ! allow ICMP source-quench 
        access-list 110 permit icmp any any source-quench 
        ! allow path MTU discovery 
        access-list 110 permit icmp any any packet-too-big 
        ! allow time-exceeded, which is useful for traceroute 
        access-list 110 permit icmp any any time-exceeded 
        ! deny all other ICMP packets 
        access-list 110 deny icmp any any 
    

    Um segundo erro comum é esquecer de permitir tráfego DNS.

    O exemplo abaixo permite o acesso aos servidores DNS externos 172.16.1.1 e 172.30.1.1. Deve ser aplicada na direção OUT (direção dos servidores externos).

     
        access-list 110 permit udp host 172.16.1.1 eq 53 any gt 1023 
        access-list 110 permit udp host 172.30.1.1 eq 53 any gt 1023 
    
  13. Comandos SHOW úteis.
  14. Configurar um router é apenas metade do trabalho 😉 . Sem um punhado de bons comandos “show”, configurar um router seria muito mais complicado. Aqui estão alguns comandos “show” que podem ser de grande ajuda.

    show ip arp
    Displays the entire ARP (Address Resolution Protocol)table, which is the MAC-to-IP resolution table.
    show version
    This command gives a good amount of information; the IOS version you are running, the available interfaces, the system uptime, the last reload reason, and the configuration register setting.
    show ip protocols
    Displays information about the currently running routing protocols.
    show ip route
    The old standby, which displays the entire IP route table.
    show ip route summary
    Gives a very useful summary of the IP route table.
    show ip interface
    Gives a summary of each interface from the IP level.
    show ip interface brief
    A very brief summary of each interface.
    show ip traffic
    An extensive summary of IP traffic statistics on the router.
    show access-list
    This useful command not only shows the all the currently configured access-lists, but it also shows you the number of hits each line has received. You can use this information to better troubleshoot your access-lists.
    show cdp neighbors
    Assuming you have CDP enabled, this command gives you a report of all Cisco devices that the current device is connected to. CDP stands for Cisco Discovery Protocol, which can be an invaluable tool.
    show cdp neighbors detail
    This command gives even more information about CDP neighbors.
  15. Acostume-se aos comandos de edição de linha do IOS.
  16. Quando você passa muito tempo em cima de um router, conhecer alguns atalhos e “hot keys” podem ajuda-lo bastante! Aqui estão alguns comandos de edição (muitos mais existem):

    Control A      Move o cursor para o início da linha 
    Control E      Move o cursor para o final da linha 
    Control K      Apaga tudo à direita do cursor 
    Control P      "Puxa" o último comando digitado, do histórico 
    
  17. Uma confusão comum com Frame-Relay.
  18. O tipo de encapsulamente FR deve ser definido ANTES da criação de uma subinterface. O encapsulamento default de interfaces seriais é o HDLC.

        interface serial0 
            encapsulation frame-relay 
    

    E então… subinterfaces!

        interface serial0.1 point-to-point 
            description This is our first sub interface for serial1 
    
  19. Configure o “bandwidth” nas interfaces.
  20. A configuração do comando “bandwidth” em interfaces em nada influencia na velocidade de transmissão dos pacotes. Entretanto, esta informação é utilizada por alguns protocolos de roteamento (como OSFP e EIGRP) para calcular a melhor rota para uma rede remota. O valor default do comando é 1.544mps, que equivale a velocidade de um link T1.

        interface serial0 
            description This is a 56k link 
            bandwidth 56 
    

15 comentários

Pular para o formulário de comentário

  1. Putz, bastante útil pra mim, principalmente a dica do “reload” !

    Nota 10 !

    Abraço

  2. A dica do reload programado foi a melhor mesmo…

    Abraços

  3. Reload in/cancel
    Ja salvou-me de situações que poderiam se tornar muito dificeis!!
    Comando essencial pro dia-a-dia!!!

  4. Tava na hora da cisco copiar a juniper e colocar a facilidade do commit.
    Pra quem nao conhece, qualquer alteração que voce faça, nao entra na current configuration, ela fica como candidata, e pode ser dado o commit somente apos voce verificar se tudo esta ok e nao ha nenhum problema com o commit check.

    Abs

  5. Com certeza a funcionalidade do “COMMIT” seria muito bem vinda. Para não falar que copiou da Juniper descaradamente, podia ser o comando “APPLY” ahahahahahha

  6. Ah sim, devo dizer que o RELOAD programado já salvou mesmo a minha pele algumas vezes!!!

  7. Ah… já conhecia. São dicas muito boas.:)

  8. Todas dicas são muitos boas !

    Como disse o SOUEUKLS, o Reload ja me salvou de umas e outras =D

    Ouvi falar aqui no trabalho que a cisco implementou o commit em algumas IOS 😉 (vou buscar mais sobre isso)

    E outra “dica” vivenciada …

    Caso esqueça de programar o reload quando for fazer por exemplo alguma alteração em ACL ou NAT, retire-os da interface para não perder a gerencia do CPE….. hehehe

    Abraços
    Nogueira

  9. “Neste exemplo, o comando “show” foi digitado errado. Existem 2 métodos para desabilitar isso no router. O primeiro, é alterar o tipo de transporte preferido nas linhas Console e VTY:”

    ! Console port
    line con 0
    transport preferred none
    ! VTY Ports
    line vty 0 5
    transport preferred none

    Até onde sei isso não procede. Estes comandos são relacionados ao modo de acesso ao roteador (telnet, ssh, etc), e não tem nada a ver com a resolução de nomes. Sendo assim, somente o segundo comando é válido (o no ip domain lookup).

  10. Vinícius, o comando funciona. Acabo de testa-lo no Dynamips. 😉

    Marco.

  11. As dicas são excelentes !

    Gostaria de contribuir com a inclusão do parametro NAME no comando ip route. Exemplo:

    (config)#ip route 192.168.10.0 201.10.10.1 name Site1toSite2

    Onde Site1toSite2 nos informa de e para onde a rota estatica aponta

  12. Ops ! esqueci a mascara, desculpem-me:

    (config)#ip route 192.168.10.0 255.255.255.0 201.10.10.1 name Site1toSite2

  13. Excelente artigo, com ótimas dicas.
    Obrigado Adilson, Marco, Rodrigo, ALL

    🙂

  14. Dicas muito interessantes, no entanto não consegui usar o reload:
    % Invalid input detected at ‘^’ marker.

  15. No ítem 6, o exemplo de ACL para permitir tráfego DNS não está errado (considerando que será aplicada na saída)? Deveria ser:

    access-list 110 permit udp any gt 1023 host 172.16.1.1 eq 53
    access-list 110 permit udp any gt 1023 host 172.30.1.1 eq 53

Deixe um comentário