:: Redes de Computadores | Cursos | Certificações | Dicas | Notícias | Tutoriais | Nossas Experiências ::
Acesse via RSS/Feeds: http://netfindersbrasil.blogspot.com/feeds/posts/default
Siga-nos no X: https://x.com/NETFINDERSBR
17 de out. de 2018
Preparatório CCIE Written 400-101 - Curso Intensivo em Janeiro de 2019 em São Paulo
Já estão abertas as inscrições para a primeira turma de 2019 do Curso Presencial Preparatório para o Exame de Pré-Qualificação da Certificação Cisco CCIE Rounting & Switching 400-101.
O objetivo deste curso é preparar os candidatos para passar no Exame Teórico - CCIE Written - e após isto estarem aptos a realizar o Exame CCIE Prático, cujos labs móveis vem para o Brasil duas vezes por ano, no RJ e em SP. Após passarem no Exame Teórico, os candidatos renovarão todas as suas Certificações Cisco de nível CCNA e CCNP e terão 18 meses para prestar e passar no Exame Prático.
O curso ocorre nas instalações da EAMSOFT Consultoria e Treinamento em Informática, em São Paulo - Capital. São apenas 10 vagas, à um valor promocional de R$ 1.990,00
Os treinamentos serão ministrados de segunda a sábado, das 08:00hs às 18:00hs, com intervalo de 1 hora para almoço e coffee-breaks. O pagamento pode ser parcelado no Cartão de Crédito via PagSeguro.
◦Quando:
Preparatório CCIE Written 400-101 - dias 14/01, 15/01, 16/01, 17/01, 18/01 e 19/01, sempre das 08:00hs às 18:00hs
Conteúdo Programático: 60 horas - 6 encontros de 10 horas cada:
Aula 01 - LAN Switching
Aula 02 - IP Networking
Aula 03 - IP IGP Routing
Aula 04 - IP BGP Routing
Aula 05 - QoS & WAN, IP Multicast & Security
Aula 06 - MPLS, Evolving Technologies
◦Onde:
EAMSOFT Consultoria e Treinamento em Informática Ltda.
Rua Marquês de Itu, 408 - Conj. 24
Vila Buarque - São Paulo - SP
(Próximo a Estação República do Metrô)
◦Investimento: R$ 1.990,00 (Podendo ser parcelado no Cartão de Crédito via PagSeguro).
◦Carga Horária: 60 horas presenciais.
◦Diferenciais: Os alunos terão acesso, desde o momento em que sua matrícula for confirmada, um ambiente criado no Servidor Moodle do netfindersbrasil.com.br contendo uma série de materiais para que os alunos se preparem para os Exames Teórico e Prático, sendo que os Fóruns de Dúvidas de cada Aula estarão disponíveis.
Garanta já a sua vaga no curso realizando a compra pelo botão abaixo:
Vagas Esgotadas!!! Abrimos uma nova Turma para atender a Fila de Espera
Maiores informações: adilson.aflorentino@eamsoft.com.br
10 de out. de 2018
Homenagem do NIC.br ao primeiro Livro IPv6 escrito em português
Ontem a noite, dia 09/10/2018, no espaço Citron, em São Paulo, durante o jantar comemorativo dos 10 anos do Projeto IPv6 promovido pelo NIC.br, tive a grata satisfação de receber essa homenagem pelo lançamento do livro "IPv6 na Prática" - hoje publicado pela Editora Altabooks.
Foi o primeiro livro sobre o assunto em português, e é baseado na minha experiência como Instrutor contratado pelo NIC.br para evangelizar o país para a adoção do novo protocolo da Internet. Para mim tem sido muito gratificante essa missão, viajei por todas as capitais do país e em algumas outras cidades para falar de IPv6. Ao longo dos últimos anos, o niC.br atendeu mais de 5.000 alunos e me orgulho de ter feito parte desta história.
Agradeço a todos os que me acompanharam nesta jornada. Vamos juntos trabalhar para que a Internet um dia seja totalmente IPv6 e a escassez de endereços seja coisa do passado.
Valeu Pessoal!!!
3 de out. de 2018
Treinamento de IPv6 Básico com Ênfase em Serviços em Porto Velho - RO
Com o esgotamento dos endereços IPv4 na região da América Latina e Caribe, torna-se fundamental formar mão-de-obra especializada no novo protocolo da Internet. Capacite-se já e saia na frente. Vagas Limitadas !!!
O curso ocorre em novembro de 2018 na cidade de Porto Velho, capital de Rondônia. São apenas 30 vagas, à um valor promocional de R$ 1.590,00
O curso será ministrado de segunda a quarta, das 9:00hs às 18:00hs, com intervalo para almoço e coffee-breaks. O pagamento pode ser parcelado via PagSeguro.
◦Conteúdo Programático:
- Introdução ao IPv6 e importância de sua implantação na Internet
- Funcionalidades básicas do IPv6
- Serviços em redes IPv6 (servidor web, proxy, DNS, etc.)
- Segurança em redes IPv6
- Coexistência e transição
- Planejando a Implantação / Cenários
◦Instrutor: Adilson Florentino, autor do livro IPv6 na Prática, Instrutor externo contratado pelo NIC.br para ministrar cursos de IPv6 Básico com ênfase em Redes de Campus e em Roteamento IPv6.
◦Quando:
Dias 12/11, 13/11 e 14/11, sempre das 9:00hs às 18:00hs (24 horas)
◦Onde:
IFRO - Instituto Federal de Porto Velho - Rondônia - Campus Porto Velho - Zona Norte
Av. Gov Jorge Teixeira, 3146 - Setor Industrial - Porto Velho - RO
◦Quanto: R$ 1.590,00 (Podendo ser parcelado via PagSeguro)
◦Pré-requisitos:
O curso é voltado ao pessoal técnico e gestores de TI de empresas usuárias e que oferecem conteúdos e serviços na Internet. Incluem-se portais de conteúdo, comércio eletrônico, empresas de mídia, empresas com sites institucionais, universidades, órgãos do governo, etc. Além disso, o participante precisa:
- Ter bons conhecimentos teóricos e práticos sobre redes IPv4.
- Estudar os vídeos expostos no canal youtube do NIC.br Videos - https://goo.gl/z32nyu
◦Material Didático:
Estaremos utilizando o material didático fornecido pelo NIC.br que possui licença Creative Commons e permissão para uso comercial
◦Inscrições Abertas por tempo limitado. Garanta já a sua !!! Faça o pagamento através do botão abaixo:
Maiores Informações: adilson.aflorentino@eamsoft.com.br
30 de ago. de 2018
[ceptro-alumni] seus usuários têm problemas com plataformas de games online ou consoles por causa do CGNAT ou ausência de IPv6?
Olá.
Alguns provedores Internet nos procuram de tempos em tempos para nos relatar dificuldades nesse momento de transição para o IPv6. Um dos tópicos recorrentes é sobre games online. Esses provedores, como a maioria aqui no Brasil, usam alguma espécie de CGNAT para compartilhar endereços IPv4 públicos entre vários usuários. E também entregam já IPv6 na casa do usuário. Acontece que as plataformas de games online e alguns consoles de videogame aparentemente não funcionam bem, ou não funcionam mesmo, nem com IPv6, nem com IPv4 compartilhado, pelo menos em certas situações.
Alguns nos dizem que é um problema bastante sério, que gera muitas ligações no callcenter e bastante insatisfação dos usuários.
Sensibilizados pelo problema e com dificuldades de iniciar um diálogo envolvendo as empresas responsáveis pelos games, nós resolvemos propor
um workshop, uma espécie de debate, no IGF, pra chamar a atenção sobre o assunto. O IGF é um Fórum sobre Governança da Internet, um espaço
global, internacional, para o diálogo sobre vários assuntos relacionados à Internet, onde participam empresas, governos, academia, a comunidade
técnica, ONGs, ou seja, todo mundo... O IGF é organizado pela ONU, mas é um espaço multistakeholder, aberto para a participação de qualquer
indivíduo ou instituição, um espaço de diálogo importantíssimo para a Internet atualmente. Pois bem, propusemos esse debate e ele acontecerá
em algumas semanas, na próxima reunião do IGF, em Paris.
Nós agora precisamos da ajuda dos provedores para levantar mais dados sobre a situação. Seus usuários reclamam de problemas com alguma
plataforma de game online, ou algum console de videogame? Você entende que esse problema específico é relacionado a falta de IPv6 nessa
plataforma, a problemas com a implementação do IPv6 nessa plataforma de games, ou a alguma dificuldade com o CGNAT, com endereços IPv4
compartilhados?
Por exemplo, já ouvimos relatos sobre lentidão de games com CGNAT. Ou sobre a impossibilidade de conexão ao game online, se o usuário está com
CGNAT. Sobre IPs que são colocados em blacklists e nunca mais saem, prejudicando todos os que estão compartilhando o mesmo IP e obrigando o
provedor a tirar o IP do pool usado no NAT. Sobre plataformas que quando entra um segundo usuário com o mesmo IP, o primeiro para de funcionar.
Entre outros. Seus usuários já relataram esse tipo de problemas? Ou outros relacionados?
Preencha por favor o formulário online se tiver informações pra nos fornecer:
https://goo.gl/forms/AQahTOfn6MdnMmYQ2
Obrigado.
--
Antonio Marcos Moreiras
Gerente de Projetos e Desenvolvimento
Centro de Estudos e Pesquisas em Tec. de Redes e Operações (Ceptro.br)
Núcleo de Informação e Coordenação do Ponto BR (NIC.br)
+55 11 5509-3553
+55 11 99154-8838
INOC 22548*266
www.nic.br
11 de ago. de 2018
Projeto Universidade EVE-ng
Cadastre sua Instituição de Ensino. Bolsas de Estudo e Descontos Especiais para Estudantes Universitários
O NetFindersBrasil está expandindo sua infraestrutura de Servidores na Nuvem e quer estar presente junto às Instituições de Ensino no Brasil e na preparação das novas gerações de profissionais de TI. Para isso, criamos o Projeto Universidade EVE-ng.
Se você é Estudante Universitário ou Docente de alguma Instituição que tem interesse em utilizar nossos Servidores na Nuvem como recurso para a criação de Laboratórios focados em Redes de Computadores e Segurança da Informação, entre em contato conosco.
Serviços oferecidos para a Comunidade Acadêmica:
- Palestras Gratuitas sobre o uso do EVE-ng (Emulated Virtual Environment) e sobre nossos serviços na Nuvem (Lab as a Service);
- Sorteio de Bolsas de Cursos e Acessos na Nuvem para que os Estudantes possam ter o primeiro contato com a Ferramenta de Simulação de Redes.
Nossa Equipe tem interesse em participar de Eventos dentro de sua Instituição, podemos nos deslocar por todo território nacional, de forma a tornar nosso trabalho mais conhecido.
Pedimos a vc, que nos conhece das Redes Sociais, que nos ajude a estar mais próximos de vocês.
Para saber mais sobre o Curso EVE-ng - Laboratórios Avançados, clique aqui.
Para saber mais sobre a Alocação do Servidor na nuvem, clique aqui
Maiores Informações pelo e-mail: adilson.aflorentino@eamsoft.com.br
10 de ago. de 2018
Concorra a Cursos Cisco Oficiais na Faixa!
O Departamento de Marketing da Cisco está sorteando duas vagas para os cursos ICND1 e ICND2 na faixa. Inscreva-se já!
Basta entrar no Site abaixo e fazer o cadastro:
https://mkto.cisco.com/ccanrs.html?utm_source=socialExibir
Leia as Regras do Sorteio aqui.
Boa Sorte a Todos!!!
2 de ago. de 2018
Agora sou... HCIE RS
Tenho andado sumido aqui do Blog devido a correria, e um dos motivos é a minha Corrida para o HCIE RS que terminou na sexta-feira passada. Já estava a mais de um ano nessa jornada. Primeiro o Exame Teórico, depois o Prático, o qual tomei pau e tive que refazer, e finalmente a Entrevista na última sexta-feira, dia 27/07/2018.
Após uma semana de intensa expectativa, recebi o resultado agora a pouco: Sou O 17o. brasileiro a alcançar a Certificação HCIE RS. Valeu a pena todo o esforço e dedicação!
Pretendo escrever mais a respeito das soluções da Huawei e compartilhar tudo aquilo que aprendi durante essa caminhada.
Agradeço a todos os que me ajudaram nessa caminhada: minha esposa Márcia que suportou minha ausência mais uma vez, o Merivaldo da Huawei, que me proporcionou a oportunidade de realizar os Exames, ao João Vasconcelos e o Claudio Boscatti da 4bios, que me incentivaram a estudar para a Certificação e ao Marco da IBM, grande companheiro de estudos.
Valeu pessoal!!!
30 de jun. de 2018
FUNDAMENTOS DE BGP PARA PROVEDORES INTERNET em São Luís do Maranhão
Com o apoio da MICROTEL (ASSOCIAÇÃO NACIONAL DOS MICRO PROVEDORES DE TELECOMUNICAÇÕES), o NetFindersBRasil ministrará em São Luis do Maranhão o curso FUNDAMENTOS DE BGP PARA PROVEDORES INTERNET - com ênfase em Cisco, Juniper e Mikrotik
Descrição:
Os Provedores de Acesso a Internet no Brasil se deparam com um cenário cada vez mais heterogêneo - equipamentos de diversos fabricantes se integram para que as sessões BGP possam fluir dados entre redes diferentes e independentes. Os treinamentos focados em programas de Certificação de fabricantes se mostram incapazes de capacitar os alunos a encarar problemas de interoperabilidade, pois ao contrário do mundo real, focam em apenas uma solução. Este curso se propõe a realizar, de forma prática, a configuração e o Troubleshooting do protocolo BGP utilizando um Ambiente Multivendor.
Metodologia E-Doing (Aprenda Fazendo):
Os alunos irão construir um cenário a partir do zero, levantando todas as configurações, de modo a ter um exemplo de BGP Multi-homing com duas Operadoras de Trânsito, mais uma terceira conexão com um Ponto de Troca de Tráfego (PTT) no último dia do curso
Conteúdo Programático:
Dia 01 - Configuração Básica - Roteadores Cisco, Juniper e Mikrotik: Roteamento Estático, protocolo OSPF
Dia 02 - Configuração BGP - Politicas AS-IN e AS-OUT - Atributos: Weight, Local-Preference, AS-Path Prepend, MED e Communities
Dia 03 - Integração com PTTs (pontos de troca de tráfego)
Diferenciais:
Uso do Emulador EVE (Emulated Virtual Environment) que permite a criação de cenários Multivendor com soluções de dezenas de fabricantes. Os alunos poderão baixar e criar seu próprio servidor local, de modo a utiliza-lo para testes e homologação de cenários de Redes Reais.
120 dias de acesso a Plataforma NetFindersBrasil, onde o aluno poderá interagir via Fóruns de Aula para sanar suas dúvidas após a realização do Treinamento
Periodo:
Dias 27, 28 e 29/07/2018 - das 09:00 as 18:00 - com intervalo de 01 hora para almoço e coffee-breaks nos períodos da manhã e tarde. O curso ocorre após o dia do Evento do FUTUREISP Expedição em São Luis. Confira em http://expedicao.futureisp.com.br/
Investimento:
R$ 1.356,00 (Não Associado MICROTEL) - Podendo ser parcelado via PagSeguro
R$ 1.156,00 (Associado MICROTEL) - Podendo ser parcelado via PagSeguro
Mini-Curriculum do Instrutor:
·Adilson Aparecido Florentino é Tecnólogo em Processamento de Dados pela Universidade Mackenzie e Especialista em Redes de Computadores pela FASP - Faculades Associadas de São Paulo. Atua como Instrutor Cisco desde 2001, primeiro no Programa Cisco Network Academy e atualmente como Instrutor Cisco CCSI # 33706.Possui as Certificações CCNA RS, CCNA Voice, CCNA Security, CCNA Wireless, CCDA, CCDP e CCNP RS.
·Fundador e CEO da EAMSOFT Consultoria e Treinamento em Informática Ltda. Atuou como Professor Universitário em diversas Instituições de Ensino tais como FATEC, IFSP, UNICID, FIAP e IBTA. Prestador de SErviços para o NIC.br nos cursos de IPv6 e Boas Práticas em BGP
·Autor do Livro IPv6 na Prática - primeiro livro em português sobre o tema. Consultor independente atuando em várias empresas em Projetos de Rede e treinamento utilizando roteadores Cisco, Juniper e Mikrotik
Inscrições e Maiores Informações pelo e-mail: adilson.aflorentino@gmail.com
25 de jun. de 2018
Assine o Pack EVE Cloud e ganhe um Curso NetFindersBrasil em Modo Gravado na Faixa!!!
Apenas 40 vagas disponíveis, garanta já a sua!!!
Boas Novas!!! Expandimos a capacidade do EVE Cloud e voltamos a cadastrar novos Assinantes. Nesta fase para cobrir os custos da compra do novo Hardware, lançamos um promoção imperdível:
- Adquira o Pack EVE Cloud Semestral (R$ 175,00) e ganhe um curso NetFindersBrasil em Modo Gravado na Faixa!
- Adquira o Pack EVE Cloud Anual (R$ 350,00) e ganhe dois cursos NetFindersBrasil em Modo Gravado na Faixa!
Os cursos servirão de roteiro para que vc possa melhor aproveitar o Servidor realizando dezenas de Laboratórios no Ambiente Virtual.
Confira a Lista de Cursos Disponíveis em:
http://netfindersbrasil.blogspot.com/p/cursos.html
Para saber mais sobre o Serviço EVE Cloud na nuvem e quais imagens de quais fabricantes estão disponíveis, leia o Post abaixo:
http://netfindersbrasil.blogspot.com/2017/02/alugue-um-servidor-unetlab-eve-na-nuvem.html
Não perca esta oportunidade! Sao apenas 40 vagas disponíveis, não temos previsão de quando iremos ampliar novamente a infraestrutura.
Entre em contato pelo e-mail adilson.aflorentino@eamsoft.com.br e solicite as instruções de pagamento.
4 de jun. de 2018
FUNDAMENTOS DE IOS-XR - UTILIZANDO A FAMILIA ASR 9000 COMO ROUTER DE BORDA
O NetFindersBrasil, em parceria com a AINET - Associaçao de Instrutores do NETACAD, estará ministrando no final do mês de junho um treinamento de Fundamentos de IOS XR voltado as necessidades dos Provedores de Internet interessados em utilizar os Roteadores Cisco da Familia ASR 9000 como Roteadores de Borda.
Os participantes do curso também serão apresentados ao Programa ISP Express - onde poderão adquirir Produtos e Serviços Cisco com até 70% de desconto e Financiados em 60 X
Descrição:
Os roteadores da família Cisco ASR tem ganho cada vez mais espaço entre os Provedores de Internet brasileiros. Isto se deve tanto aos preços cada vez mais acessíveis destas caixas quanto ao crescente poder de processamento que elas entregam. Há uma carência de profissionais capacitados a operar equipamentos baseados em IOS-XR, o qual possui muitas diferenças do IOS tradicional, os cursos oficiais são muito escassos e de custo elevado. Este curso visa capacitar o aluno a operar um roteador com IO-XR, configurar roteamento estático e dinâmico, criar filtros e listas de controle de acesso, além de implementar CG-NAT e guarda de logs.
Metodologia E-Doing (Aprenda Fazendo):
Os alunos irão construir um cenário a partir do zero, levantando todas as configurações, de modo a ter um exemplo de Sistema Autônomo BGP Multi-homing com Roteador de Borda Cisco ASR virtualizado no ambiente EVE-ng.
Conteúdo Programático:
Aula 01 - Introdução ao IOS XR , Configuração Básica e criação de ACLs
Aula 02 - Roteamento Estático e Dinâmico, Protocolo OSPF em área única e múltiplas áreas
Aula 03 - Protocolo BGP - vizinhanças iBGP e eBGP, Atributos BGP
Aula 04 - Route Filtering – Politicas AS-IN e AS-OUT (IPv4 e IPv6)
Diferenciais:
- Uso de Equipamentos Físicos para simular problemas do dia-a-dia, tais como Password Recovery, Atualização do Sistema Operacional, entre outros.
- Uso do Emulador EVE (Emulated Virtual Environment) que permite a criação de cenários Multivendor com soluções de dezenas de fabricantes. Os alunos poderão baixar e criar seu próprio servidor local, de modo a utiliza-lo para testes e homologação de cenários de Redes Reais.
Periodo:
Dias 25, 26, 27 e 28/06/2018 - das 09:00 as 18:00 - com intervalo de 01 hora para almoço e coffee-breaks nos períodos da manhã e tarde
Investimento:
R$ 1.790,00 (podendo ser dividido em 03 vezes sem juros via PagSeguro)
Endereço:
AINET - Associação dos Instrutores do NETACAD
Rua Vergueiro 1421 9° andar - cj 901 à 905 - Vila Mariana, São Paulo - SP, 04101-000
(Próximo a Estação de Metrô Paraiso)
Mini-Curriculum do Instrutor:
·Adilson Aparecido Florentino é Tecnólogo em Processamento de Dados pela Universidade Mackenzie e Especialista em Redes de Computadores pela FASP - Faculades Associadas de São Paulo. Atua como Instrutor Cisco desde 2001, primeiro no Programa Cisco Network Academy e atualmente como Instrutor Cisco CCSI # 33706. Possui as Certificações CCNA RS, CCNA Voice, CCNA Security, CCNA Wireless, CCDA, CCDP e CCNP RS.
·Fundador e CEO da EAMSOFT Consultoria e Treinamento em Informática Ltda. Atuou como Professor Universitário em diversas Instituições de Ensino tais como FATEC, IFSP, UNICID, FIAP e IBTA. Prestador de SErviços para o NIC.br nos cursos de IPv6 e Boas Práticas em BGP
·Autor do Livro IPv6 na Prática - primeiro livro em português sobre o tema. Consultor independente atuando em várias empresas em Projetos de Rede e treinamento utilizando roteadores Cisco, Juniper e Mikrotik
Vagas Limitadas! garanta já a sua clicando no botão abaixo:
Evento live nesta quarta-feira, dia 6/6 - 6 anos do lançamento mundial do IPv6
Participem da comemoração dos 6 anos de lançamento mundial do IPv6! Nesta quarta-feira, dia 6/6, às 6 da tarde!
Evento ao vivo pelo canal do YouTube da ISOC Brasil.
Evento ao vivo pelo canal do YouTube da ISOC Brasil.
1 de jun. de 2018
YAML e JINJA2 - Parte II
Continuando com YAML, seja o arquivo teste.yml com a seguinte conteúdo:
---
SW1:
router-id: "1.1.1.1"
vlans:
- vlan: 100
desc: "Vlan da rede 192.168.100.0"
- vlan: 200
desc: "Vlan da rede 192.168.200.0"
- vlan: 300
desc: "Vlan da rede 10.10.10.0"
ospf:
networks:
- net: 192.168.100.0
netmask: "0.0.0.255"
area: 0
- net: 192.168.200.0
netmask: "0.0.0.128"
area: 1
- net: 10.10.10.0
netmask: "0.0.0.255"
area: 2
...
O seguinte script lê o arquivo yaml e armazena o resultado em um dicionário de nome config.
#!/usr/bin/python
import yaml
from pprint import pprint
YAMFILE="/home/jose/teste.yml"
config = yaml.load(open(YAMFILE))
pprint(config)
O método load() é o encarregado de fazer o parseamento. O print do dicionário seria:
{'SW1': {'ospf': {'networks': [{'area': 0,
'net': '192.168.100.0',
'netmask': '0.0.0.255'},
{'area': 1,
'net': '192.168.200.0',
'netmask': '0.0.0.128'},
{'area': 2,
'net': '10.10.10.0',
'netmask': '0.0.0.255'}]},
'router-id': '1.1.1.1',
'vlans': [{'desc': 'Vlan da rede 192.168.100.0', 'vlan': 100},
{'desc': 'Vlan da rede 192.168.200.0', 'vlan': 200},
{'desc': 'Vlan da rede 10.10.10.0', 'vlan': 300}]}}
Podemos utilizar esse dicionário para criar um arquivo de configuração para SW1 por exemplo:
#!/usr/bin/python
import yaml
from pprint import pprint
#Carregando arquivo YAML na variavel dicionario config
config = yaml.load(open('teste.yml'))
#pprint(config)
for vlan in config['SW1']['vlans']:
print("!")
print("vlan %s" % vlan['vlan'])
print("desc %s" % vlan['desc'])
print("!")
print("router ospf 1")
print("router-id %s" % config['SW1']['router-id'])
for networks in config['SW1']['ospf']['networks']:
print("network %s %s area %s" % (networks['net'],networks['netmask'],networks['area']))
O código acima quando executado resulta em:
!
vlan 100
desc Vlan da rede 192.168.100.0
!
vlan 200
desc Vlan da rede 192.168.200.0
!
vlan 300
desc Vlan da rede 10.10.10.0
!
router ospf 1
router-id 1.1.1.1
network 192.168.100.0 0.0.0.255 area 0
network 192.168.200.0 0.0.0.128 area 1
network 10.10.10.0 0.0.0.255 area 2
Que é uma configuração para um dispositivo Cisco IOS.
Temos visto que é possivél utilizar o dicionário gerado pelo parser pyyaml para gerar o nosso arquivo de configuração.
No script acima toda a lógica de como gerar o arquivo de configuração, esta no código fonte do script, dessa forma se outra pessoa por exemplo tem um arquivo yaml igual ao nosso e precisa gerar um arquivo de configuração, ela terá que desenvolver novamente a mesma lógica no seu código fonte.
Não seria legal por exemplo, ter essa lógica de como gerar o arquivo de configuração em algum "template", de forma a que nosso script simplesmente carrega o arquivo yaml, chama esse "template" e o nosso arquivo de configuração é gerado automaticamente?
Para isso utilizamos JINJA2!!, com JINJA2, podemos criar um template e simplesmente colocar como dados de entrada para dito template, os dados do nosso arquivo YAML, e pronto arquivo de configuração gerado.
Próximo post falaremos sobre a sintaxes de JINJA2... Obrigado e Bom Final de Semana...
Abçs
Jose
12 de mai. de 2018
YAML e JINJA2 - Parte I
Olá Pessoal Boa Noite, hoje vamos falar um pouco sobre templates e criação automática de configurações.
YAML são as iniciais de Yet Another Markup Language, o objetivo inicial de YAML foi o de poder transformar estruturas de dados em um formato que possa ser armazenado em arquivos, ou enviado via rede para outras máquinas; da mesma forma que XML.
A diferença de XML, YAML é mais intuitivo fazendo que sua escrita e leitura sejam mais fáceis de entender.
Devido à essa facilidade na leitura e escrita, YAML é amplamente utilizado na definição de configurações. Por exemplo se eu quiser definir um roteador que vai precisar executar "bgp", eu posso colocar todas essas definições em um arquivo, YAML. Esse arquivo posteriormente pode se utilizado por outro software como JINJA2, para gerar arquivos de configurações, podendo inclusive, com ajuda de templates JINJA2, gerar configurações para diferentes fabricantes.
Os arquivos YAML precisam ser processados por um "parser", esse parser se encarrega de ler o arquivo YAM e criar uma estrutura de dados a qual possamos acessar. Em Python esse parser é feito pela livraria PyYAML
Antes de continuar com YAML, vou lhes mostrar alguns conceitos sobre estruturas de dados aninhados em python, isso vai ajudar no entendimento da sintaxes YAML.
Diccionarios Aninhados
Até agora conhecemos os diccionarios em python, porém nada impede ter diccionarios dentro de diccionarios. Exemplo:
Roteadores={'R1':{'hostname':'R1SP','ip':'1.1.1.1'},'R2':{'hostname':'R1SP','ip':'1.1.1.1'}}
O diccionario acima "Roteadores", tem duas chaves, a primeira chave 'R1' e a segunda 'R2'. O detalhe é que o valor associado à chave 'R1' é um outro diccionario, o mesmo para 'R2'.
Vamos testar no interpretador de python:
>>> Roteadores={'R1':{'hostname':'R1SP','ip':'1.1.1.1'},'R2':{'hostname':'R1SP','ip':'1.1.1.1'}}
>>> Roteadores
{'R1': {'ip': '1.1.1.1', 'hostname': 'R1SP'}, 'R2': {'ip': '1.1.1.1', 'hostname': 'R1SP'}}
>>> Roteadores['R1']
{'ip': '1.1.1.1', 'hostname': 'R1SP'}
>>> Roteadores['R2']
{'ip': '1.1.1.1', 'hostname': 'R1SP'}
>>> Roteadores['R1']['ip']
'1.1.1.1'
>>> Roteadores['R2']['ip']
'1.1.1.1'
>>>
Listas de Diccionarios
Ao igual que existem diccionarios aninhados, nada impede ter por exemplo uma lista de diccionarios. Vejamos:
>>> Roteadores=[{'hostname':'R1SP','ip':'1.1.1.1'},{'hostname':'R1SP','ip':'1.1.1.1'}]
>>> Roteadores
[{'ip': '1.1.1.1', 'hostname': 'R1SP'}, {'ip': '1.1.1.1', 'hostname': 'R1SP'}]
>>> Roteadores[0]
{'ip': '1.1.1.1', 'hostname': 'R1SP'}
>>> Roteadores[1]
{'ip': '1.1.1.1', 'hostname': 'R1SP'}
>>> Roteadores[0]['ip']
'1.1.1.1'
>>> Roteadores[1]['ip']
'1.1.1.1'
>>>
Ao momento de processar um arquivo YAML para poder utilizar ele em JINJA2 p.e, vamos utilizar bastante as estruturas acima mostradas.
Instalação do módulo PyYAML para parseamento
Para parsear os arquivos YAML é preciso instalar o módulo pyyaml.
sudo pip install pyyaml
E para utilizar basta importar o módulo em nosso interpretador python
import yaml
Agora sim ...Continuando com YAML.....
Sintaxes em YAML
Inicio de um Documento
Se utiliza o string '---' para indicar o inicio de um documento YAML.
Fim de um Documento
Se utiliza o string '...' para indicar o fim de um documento YAML.
Podem ser inseridos vários documentos em um único arquivo YAML.
Indentação
YAML utiliza indentação para definir hierarquias, similar a indentação em python. Exemplo:
R1:
hostname: R1SP
No exemplo acima a chave "hostname", com valor "R1SP" esta embaixo da chave "R1". Existe uma hierarquia em YAML.
Em python a configuração acima pode ser traduzida para o seguinte diccionario:
{'R1':{'hostname':'R1SP'}}
Separador
Em YAML somente se utiliza "espaço" como separador, nada de TAB.
Escalares
YAML, permite a definição de diferentes tipos de variavéis, inteiro, float, string boolean. A forma como é definido é do tipo "chave:valor". O tipo de variavél é reconhecido automáticamente.
myInteiro: 10
myFloat: 3.14
myString: "Post de YAML"
Em python a configuração acima se traduz para:
Strings podem estar entre aspas simples o duplas. Se utilizam duplas quando precisamos utilizar caracteres especiais nesse caso também utilizamos o caractere "\"
myString: "Primeira Linha\nSegunda Linha"
As vezes precisamos armazenar um string de forma literal nesse caso podemos utilizar o operador '|':
myString: |
"Post de YAML
exemplo de string.
Novo paragrafo"
Em python a configuração acima se traduz em:
{'myString': '"Post de YAML\n exemplo de string.\n Novo paragrafo"\n'}
é possivél também indicar em YAML para que sejam trocados os ENTERs por espaços (quem vai fazer isso é o parser), nesse caso utilizamos o operador '>'
myString: >
"Post de YAML
exemplo de string.
Novo paragrafo"
Em python a configuração acima se traduz em:
{'myString': '"Post de YAML exemplo de string. Novo paragrafo"\n'}
Listas
Para definir uma lista se utiliza o carater '-' por cada item da lista.
roteadores:
- R1
- R2
- R3
A estrutura de dados acima pode ser lida como: "A chave 'roteadores' tem como valor a lista de valores R1,R2 e R3'.
Em python ficaria:
{'roteadores': ['R1', 'R2', 'R3']}
Inclusive posso ter valores duplicados na lista, isso não é um problema.
roteadores:
- router
- router
A estrutura acima pode ser lida como: "A chave 'roteadores' tem como valor uma lista, que a sua vez contem dois itens; item-0=router e item-1=router"
Em python ficaria:
{'roteadores': ['router', 'router']}
Diccionarios
Dicionarios são estruturas de dados com um conjunto de mapeamentos do tipo chave:valor
R1:
hostname: 'R1SP'
ip: '1.1.1.1'
user: 'cisco'
pass: 'cisco'
A estrutura de dados acima pode ser lida como: "A chave 'R1', tem como valor um outro conjunto de pares chave:valor hostname:'R1SP', ip:'1.1.1.1' etc.
Em Python ficaria:
{'R1':
{'hostname': 'R1SP',
'ip': '1.1.1.1',
'pass': 'cisco',
'user': 'cisco'}
}
No caso de diccionarios não é possivél ter chaves duplicadas. Exemplo:
R1:
hostname: 'R1SP'
ip: '1.1.1.1'
user: 'cisco'
pass: 'cisco'
ip: '11.11.11.11'
No exemplo acima o valor para a chave 'ip' será '11.11.11.11'. Ao colocar a mesma chave, o valor para essa chave será sobreescrito.
Em python ficaria:
{'R1':
{'hostname': 'R1SP',
'ip': '11.11.11.11',
'pass': 'cisco',
'user': 'cisco'}
}
Existe a possibilidade de combinar diccionarios e listas.
Exemplo, preciso definir uma configuração para dois roteadores e tenho os seguintes dados:
Roteador1: Nome R1SP, ip de acesso 1.1.1.1
Roteador2: Nome R2SP ip de acesso 2.2.2.2
A configuração YAML poderia ficar:
roteadores:
- router:
hostname: 'R1SP'
ip: '1.1.1.1'
- router:
hostname: 'R2SP'
ip: '2.2.2.2'
Em Python ficaria:
{'roteadores':
YAML são as iniciais de Yet Another Markup Language, o objetivo inicial de YAML foi o de poder transformar estruturas de dados em um formato que possa ser armazenado em arquivos, ou enviado via rede para outras máquinas; da mesma forma que XML.
A diferença de XML, YAML é mais intuitivo fazendo que sua escrita e leitura sejam mais fáceis de entender.
Devido à essa facilidade na leitura e escrita, YAML é amplamente utilizado na definição de configurações. Por exemplo se eu quiser definir um roteador que vai precisar executar "bgp", eu posso colocar todas essas definições em um arquivo, YAML. Esse arquivo posteriormente pode se utilizado por outro software como JINJA2, para gerar arquivos de configurações, podendo inclusive, com ajuda de templates JINJA2, gerar configurações para diferentes fabricantes.
Os arquivos YAML precisam ser processados por um "parser", esse parser se encarrega de ler o arquivo YAM e criar uma estrutura de dados a qual possamos acessar. Em Python esse parser é feito pela livraria PyYAML
Antes de continuar com YAML, vou lhes mostrar alguns conceitos sobre estruturas de dados aninhados em python, isso vai ajudar no entendimento da sintaxes YAML.
Diccionarios Aninhados
Até agora conhecemos os diccionarios em python, porém nada impede ter diccionarios dentro de diccionarios. Exemplo:
Roteadores={'R1':{'hostname':'R1SP','ip':'1.1.1.1'},'R2':{'hostname':'R1SP','ip':'1.1.1.1'}}
O diccionario acima "Roteadores", tem duas chaves, a primeira chave 'R1' e a segunda 'R2'. O detalhe é que o valor associado à chave 'R1' é um outro diccionario, o mesmo para 'R2'.
Vamos testar no interpretador de python:
>>> Roteadores={'R1':{'hostname':'R1SP','ip':'1.1.1.1'},'R2':{'hostname':'R1SP','ip':'1.1.1.1'}}
>>> Roteadores
{'R1': {'ip': '1.1.1.1', 'hostname': 'R1SP'}, 'R2': {'ip': '1.1.1.1', 'hostname': 'R1SP'}}
>>> Roteadores['R1']
{'ip': '1.1.1.1', 'hostname': 'R1SP'}
>>> Roteadores['R2']
{'ip': '1.1.1.1', 'hostname': 'R1SP'}
>>> Roteadores['R1']['ip']
'1.1.1.1'
>>> Roteadores['R2']['ip']
'1.1.1.1'
>>>
Para poder ir digamos assim acessando aos valores de diccionarios mais baixos podemos utilizar a notação Diccionario_Pai[chave-1][chave-2]...[chave-n].
Ao igual que existem diccionarios aninhados, nada impede ter por exemplo uma lista de diccionarios. Vejamos:
>>> Roteadores=[{'hostname':'R1SP','ip':'1.1.1.1'},{'hostname':'R1SP','ip':'1.1.1.1'}]
>>> Roteadores
[{'ip': '1.1.1.1', 'hostname': 'R1SP'}, {'ip': '1.1.1.1', 'hostname': 'R1SP'}]
>>> Roteadores[0]
{'ip': '1.1.1.1', 'hostname': 'R1SP'}
>>> Roteadores[1]
{'ip': '1.1.1.1', 'hostname': 'R1SP'}
>>> Roteadores[0]['ip']
'1.1.1.1'
>>> Roteadores[1]['ip']
'1.1.1.1'
>>>
Agora o acesso aos elementos do diccionario é um pouco diferente, utilizamos uma combinação do index da lista e a chave do diccionario.
Instalação do módulo PyYAML para parseamento
Para parsear os arquivos YAML é preciso instalar o módulo pyyaml.
sudo pip install pyyaml
import yaml
Agora sim ...Continuando com YAML.....
Sintaxes em YAML
Inicio de um Documento
Se utiliza o string '---' para indicar o inicio de um documento YAML.
Fim de um Documento
Se utiliza o string '...' para indicar o fim de um documento YAML.
Podem ser inseridos vários documentos em um único arquivo YAML.
Indentação
YAML utiliza indentação para definir hierarquias, similar a indentação em python. Exemplo:
R1:
hostname: R1SP
No exemplo acima a chave "hostname", com valor "R1SP" esta embaixo da chave "R1". Existe uma hierarquia em YAML.
Em python a configuração acima pode ser traduzida para o seguinte diccionario:
{'R1':{'hostname':'R1SP'}}
Separador
Em YAML somente se utiliza "espaço" como separador, nada de TAB.
Escalares
YAML, permite a definição de diferentes tipos de variavéis, inteiro, float, string boolean. A forma como é definido é do tipo "chave:valor". O tipo de variavél é reconhecido automáticamente.
myInteiro: 10
myFloat: 3.14
myString: "Post de YAML"
Em python a configuração acima se traduz para:
{'myInteiro': 10, 'myFloat': 3.14, 'myString': 'Post de YAML'}
Strings podem estar entre aspas simples o duplas. Se utilizam duplas quando precisamos utilizar caracteres especiais nesse caso também utilizamos o caractere "\"
myString: "Primeira Linha\nSegunda Linha"
As vezes precisamos armazenar um string de forma literal nesse caso podemos utilizar o operador '|':
myString: |
"Post de YAML
exemplo de string.
Novo paragrafo"
Em python a configuração acima se traduz em:
{'myString': '"Post de YAML\n exemplo de string.\n Novo paragrafo"\n'}
é possivél também indicar em YAML para que sejam trocados os ENTERs por espaços (quem vai fazer isso é o parser), nesse caso utilizamos o operador '>'
myString: >
"Post de YAML
exemplo de string.
Novo paragrafo"
{'myString': '"Post de YAML exemplo de string. Novo paragrafo"\n'}
Listas
Para definir uma lista se utiliza o carater '-' por cada item da lista.
roteadores:
- R1
- R2
- R3
A estrutura de dados acima pode ser lida como: "A chave 'roteadores' tem como valor a lista de valores R1,R2 e R3'.
Em python ficaria:
{'roteadores': ['R1', 'R2', 'R3']}
Inclusive posso ter valores duplicados na lista, isso não é um problema.
roteadores:
- router
- router
A estrutura acima pode ser lida como: "A chave 'roteadores' tem como valor uma lista, que a sua vez contem dois itens; item-0=router e item-1=router"
Em python ficaria:
{'roteadores': ['router', 'router']}
Diccionarios
Dicionarios são estruturas de dados com um conjunto de mapeamentos do tipo chave:valor
R1:
hostname: 'R1SP'
ip: '1.1.1.1'
user: 'cisco'
pass: 'cisco'
A estrutura de dados acima pode ser lida como: "A chave 'R1', tem como valor um outro conjunto de pares chave:valor hostname:'R1SP', ip:'1.1.1.1' etc.
Em Python ficaria:
{'R1':
{'hostname': 'R1SP',
'ip': '1.1.1.1',
'pass': 'cisco',
'user': 'cisco'}
}
No caso de diccionarios não é possivél ter chaves duplicadas. Exemplo:
R1:
hostname: 'R1SP'
ip: '1.1.1.1'
user: 'cisco'
pass: 'cisco'
ip: '11.11.11.11'
No exemplo acima o valor para a chave 'ip' será '11.11.11.11'. Ao colocar a mesma chave, o valor para essa chave será sobreescrito.
Em python ficaria:
{'R1':
{'hostname': 'R1SP',
'ip': '11.11.11.11',
'pass': 'cisco',
'user': 'cisco'}
}
Existe a possibilidade de combinar diccionarios e listas.
Exemplo, preciso definir uma configuração para dois roteadores e tenho os seguintes dados:
Roteador1: Nome R1SP, ip de acesso 1.1.1.1
Roteador2: Nome R2SP ip de acesso 2.2.2.2
A configuração YAML poderia ficar:
roteadores:
- router:
hostname: 'R1SP'
ip: '1.1.1.1'
- router:
hostname: 'R2SP'
ip: '2.2.2.2'
Em Python ficaria:
{'roteadores':
[{'router': {'hostname': 'R1SP', 'ip': '1.1.1.1'}},
{'router': {'hostname': 'R2SP', 'ip': '2.2.2.2'}}
]
}
Vamos asignar o valor do diccionario acima para a variável MyRouters em python, e ir acessando aos valores da estrutura na medida que nos aprondufamos na hierarquia.
>>> import yaml
>>> MyRouters={'roteadores':
... [{'router': {'hostname': 'R1SP', 'ip': '1.1.1.1'}},
... {'router': {'hostname': 'R2SP', 'ip': '2.2.2.2'}}
... ]
... }
>>> MyRouters['roteadores']
[{'router': {'ip': '1.1.1.1', 'hostname': 'R1SP'}}, {'router': {'ip': '2.2.2.2', 'hostname': 'R2SP'}}]
>>> MyRouters['roteadores'][0]
{'router': {'ip': '1.1.1.1', 'hostname': 'R1SP'}}
>>> MyRouters['roteadores'][1]
{'router': {'ip': '2.2.2.2', 'hostname': 'R2SP'}}
>>> MyRouters['roteadores'][0]['router']
{'ip': '1.1.1.1', 'hostname': 'R1SP'}
>>> MyRouters['roteadores'][1]['router']
{'ip': '2.2.2.2', 'hostname': 'R2SP'}
>>> MyRouters['roteadores'][0]['router']['ip']
'1.1.1.1'
>>> MyRouters['roteadores'][1]['router']['ip']
'2.2.2.2'
>>>
Vamos asignar o valor do diccionario acima para a variável MyRouters em python, e ir acessando aos valores da estrutura na medida que nos aprondufamos na hierarquia.
>>> import yaml
... [{'router': {'hostname': 'R1SP', 'ip': '1.1.1.1'}},
... {'router': {'hostname': 'R2SP', 'ip': '2.2.2.2'}}
... ]
... }
>>> MyRouters['roteadores']
[{'router': {'ip': '1.1.1.1', 'hostname': 'R1SP'}}, {'router': {'ip': '2.2.2.2', 'hostname': 'R2SP'}}]
>>> MyRouters['roteadores'][0]
{'router': {'ip': '1.1.1.1', 'hostname': 'R1SP'}}
>>> MyRouters['roteadores'][1]
{'router': {'ip': '2.2.2.2', 'hostname': 'R2SP'}}
>>> MyRouters['roteadores'][0]['router']
{'ip': '1.1.1.1', 'hostname': 'R1SP'}
>>> MyRouters['roteadores'][1]['router']
{'ip': '2.2.2.2', 'hostname': 'R2SP'}
>>> MyRouters['roteadores'][0]['router']['ip']
'1.1.1.1'
>>> MyRouters['roteadores'][1]['router']['ip']
'2.2.2.2'
>>>
Existe um site de parseamento online, onde vocês podem praticar http://yaml-online-parser.appspot.com/. No site vocês colocam sua configuração YAML e escolhem como saída Python. Ele vai lhes mostrar qual será a estrutura em python do seu arquivo YAML.
Um outro exemplo, um switch para o qual precisa ser gerado uma configuração para 3 VLANs, e OSPF.
SW1:
router-id: "1.1.1.1"
vlans:
- vlan:
id: 100
desc: "Vlan da rede 192.168.100.0"
- vlan:
id: 200
desc: "Vlan da rede 192.168.200.0"
- vlan:
id: 300
desc: "Vlan da rede 10.10.10.0"
ospf:
networks:
- network:
net: 192.168.100.0
netmask: "255.255.255.0"
area: 0
- network:
net: 192.168.200.0
netmask: "255.255.255.128"
area: 1
- network:
net: 10.10.10.0
netmask: "255.255.255.0"
area: 2
Por hoje é isso Pessoal!!... Um Feliz Dia das Mais!!
Abçs
Jose
Agora sou... CCNA CYBER OPS
Ontem, sexta-feira, 11/05/2018, conquistei o titulo de CCNA Cyber OPS. Após ter concluído os Exames 210-250 SECFND e 210-255 SECOPS. A Cisco tem bancado, através do programa Cisco Global Cyber Ops Scholarship, não só os cursos online preparatórios para esses Exames, como também os vouchers (100% na faixa) para que os interessados no tema possam tirar essa certificação, a custo zero.
Com o constante aumento dos Cyber ataques e ameaças eletrônicas, eu creio que todo profissional de TI deveria passar por estes treinamentos, de forma a ficar antenado com os temas relacionados a Tratamento de Incidentes de Segurança na Web.
Agradeço ao Bruno Nunes, que montou um grupo de estudos no WhatsApp para os interessados no CCNA Cyber, pelas dicas e compartilhamento de material.
Fica a Dica!
5 de mai. de 2018
NAPALM - Parte III
Olá Pessoal Boa Tarde, hoje vamos utilizar NAPALM para mudar as configurações dos nossos roteadores.
A topologia física vai ser a mesma utilizada até agora. Dois roteadores R1-IOS e R2-JunOS, e um host representando pela nuvem Cloud1.
Ambos os roteadores estão rodando OSPF, e todas as suas interfaces estão na área 0.
O objetivo será, trocar de OSPF para BGP. Ficando R1 no AS100 e R2 no AS200.
Os novos arquivos de configuração podem ser baixados de:
https://github.com/JoseBalbuena/BlogNetFinders/blob/master/NAPALM_PARTEIII_R2.conf
https://github.com/JoseBalbuena/BlogNetFinders/blob/master/NAPALM_PARTEIII_R1.conf
Dessa vez vamos utilizar o método load_replace_candidate() da livraria NAPALM.
O único detalhe a ter em consideração é que eu preciso começar a configurar pelo roteador R2, isso porque quando faça a troca de configuração eu vou perder a conetividade com R2, porém quando configure R1 e o peer BGP fechar a conexão irá voltar.
Se eu começar por R1, vou perder conetividade com R2 e nunca mais vou ter acesso.
O meu script ficaria assim:
#!/usr/bin/python
import napalm
#Router diccionario
R1={'so':'ios','hostname':'R1','ip':'1.1.1.1','username':'napalm','password':'napalm','secret':'cisco','newfile':'/home/jose/Automatizacao/R1_new.conf'}
R2={'so':'junos','hostname':'R2','ip':'2.2.2.2','username':'napalm','password':'napalm123','newfile':'/home/jose/Automatizacao/R2_new.conf'}
#Listado dos meus roteadores
routers=[R2,R1] #R2 primeiro na lista
#BEGIN
#Loop para fazer varredura
for router in routers:
#Caso seja um roteador IOS, utilizar o parametro optional_args com a senha de enable
if router['so'] == 'ios':
optional_args={'secret':router['secret']}
else:
optional_args={}
#Selecctiona o driver
driver = napalm.get_network_driver(router['so'])
#Coneta ao roteador, dentro de um try..execpt, caso de algum erro o erro eh printado
try:
device = driver (hostname=router['ip'], username=router['username'], password=router['password'],optional_args=optional_args)
device.open()
#Carrega o arquivo das atualizacoes a serem feitas
device.load_replace_candidate(filename=router['newfile'])
#Faz o commit
device.commit_config()
#Fecha a conexao
device.close()
except Exception as error:
print "Problemas com driver/sessao do roteador %s" % router['ip']
print error
#FIM
Quando executamos o script:
jose@rejane:~/Automatizacao$ ./napalm_newconf_ex3.py
Problemas com driver/sessao do roteador 2.2.2.2
RpcTimeoutError(host: 2.2.2.2, cmd: commit-configuration, timeout: 60)
jose@rejane:~/Automatizacao$
Podemos apreciar que ao executar o script, NAPALM atacha um erro no "commit_config()" para R2, esse erro acontece pelo fato de que quando o commit é executado em R2, automaticamente a nossa conexão ao roteador é perdida. O NAPALM não recebe a resposta do "commit" em R2 e atacha o erro acima. Mas a configuração foi aplicada em R2, a única coisa que falto foi o NAPALM receber a resposta. Resumindo o erro é na livraria do NAPALM e não no "commit" em R2.
O ideal é não perder a conetividade, quem sabe manter o OSPF rodando, mas para própositos de testes e de saber como funcionam as coisas, esta tudo OK.
Verificando em R1:
R1#sh ip bgp summary
BGP router identifier 1.1.1.1, local AS number 100
BGP table version is 5, main routing table version 5
4 network entries using 592 bytes of memory
4 path entries using 256 bytes of memory
2/2 BGP path/bestpath attribute entries using 272 bytes of memory
1 BGP AS-PATH entries using 24 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 1144 total bytes of memory
BGP activity 4/0 prefixes, 4/0 paths, scan interval 60 secs
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.10.10.2 4 200 45 45 5 0 0 00:18:38 2
R1#sh ip bgp
BGP table version is 5, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 0.0.0.0 0 32768 i
*> 2.2.2.0/24 10.10.10.2 0 200 i
r> 10.10.10.0/24 10.10.10.2 0 200 i
*> 192.168.200.0 0.0.0.0 0 32768 i
R1#
Verificando em R2:
napalm@JunOS-R2> show bgp summary
Groups: 1 Peers: 1 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0 2 2 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
10.10.10.1 100 43 43 0 0 17:57 2/2/2/0 0/0/0/0
napalm@JunOS-R2>
Podemos ver que o BGP foi estabelecido e as rotas tb estão OK.
Desde o host conseguimos pingar tanto para R1 e R2.
jose@rejane:~$ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=255 time=11.4 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=255 time=9.09 ms
^C
--- 1.1.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 9.090/10.258/11.427/1.172 ms
jose@rejane:~$ ping 2.2.2.2
PING 2.2.2.2 (2.2.2.2) 56(84) bytes of data.
64 bytes from 2.2.2.2: icmp_seq=1 ttl=63 time=11.6 ms
64 bytes from 2.2.2.2: icmp_seq=2 ttl=63 time=20.1 ms
^C
--- 2.2.2.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 11.603/15.891/20.180/4.290 ms
jose@rejane:~$
Bom é isso ai pessoal, nesse três últimos post aprendimos como "coletar informação", "Atualizar a configuração" e "Reemplazar a configuração", utilizando a livraria NAPALM.
Os script são simples, visto que o próposito deles é o ensino, mas vocês podem incluir muitas coisas neles, como logs, entrada de teclado quem sabe ler as configurações dos roteadores de algum banco de dados etc etc..
O próximo post iremos falar de YAML e JINJA2..
Abçs e um ótimo final de semana!!
Jose
A topologia física vai ser a mesma utilizada até agora. Dois roteadores R1-IOS e R2-JunOS, e um host representando pela nuvem Cloud1.
Ambos os roteadores estão rodando OSPF, e todas as suas interfaces estão na área 0.
O objetivo será, trocar de OSPF para BGP. Ficando R1 no AS100 e R2 no AS200.
Os novos arquivos de configuração podem ser baixados de:
https://github.com/JoseBalbuena/BlogNetFinders/blob/master/NAPALM_PARTEIII_R2.conf
https://github.com/JoseBalbuena/BlogNetFinders/blob/master/NAPALM_PARTEIII_R1.conf
Dessa vez vamos utilizar o método load_replace_candidate() da livraria NAPALM.
O único detalhe a ter em consideração é que eu preciso começar a configurar pelo roteador R2, isso porque quando faça a troca de configuração eu vou perder a conetividade com R2, porém quando configure R1 e o peer BGP fechar a conexão irá voltar.
Se eu começar por R1, vou perder conetividade com R2 e nunca mais vou ter acesso.
O meu script ficaria assim:
#!/usr/bin/python
import napalm
#Router diccionario
R1={'so':'ios','hostname':'R1','ip':'1.1.1.1','username':'napalm','password':'napalm','secret':'cisco','newfile':'/home/jose/Automatizacao/R1_new.conf'}
R2={'so':'junos','hostname':'R2','ip':'2.2.2.2','username':'napalm','password':'napalm123','newfile':'/home/jose/Automatizacao/R2_new.conf'}
#Listado dos meus roteadores
routers=[R2,R1] #R2 primeiro na lista
#BEGIN
#Loop para fazer varredura
for router in routers:
#Caso seja um roteador IOS, utilizar o parametro optional_args com a senha de enable
if router['so'] == 'ios':
optional_args={'secret':router['secret']}
else:
optional_args={}
#Selecctiona o driver
driver = napalm.get_network_driver(router['so'])
#Coneta ao roteador, dentro de um try..execpt, caso de algum erro o erro eh printado
try:
device = driver (hostname=router['ip'], username=router['username'], password=router['password'],optional_args=optional_args)
device.open()
#Carrega o arquivo das atualizacoes a serem feitas
device.load_replace_candidate(filename=router['newfile'])
#Faz o commit
device.commit_config()
#Fecha a conexao
device.close()
except Exception as error:
print "Problemas com driver/sessao do roteador %s" % router['ip']
print error
#FIM
jose@rejane:~/Automatizacao$ ./napalm_newconf_ex3.py
Problemas com driver/sessao do roteador 2.2.2.2
RpcTimeoutError(host: 2.2.2.2, cmd: commit-configuration, timeout: 60)
jose@rejane:~/Automatizacao$
Podemos apreciar que ao executar o script, NAPALM atacha um erro no "commit_config()" para R2, esse erro acontece pelo fato de que quando o commit é executado em R2, automaticamente a nossa conexão ao roteador é perdida. O NAPALM não recebe a resposta do "commit" em R2 e atacha o erro acima. Mas a configuração foi aplicada em R2, a única coisa que falto foi o NAPALM receber a resposta. Resumindo o erro é na livraria do NAPALM e não no "commit" em R2.
O ideal é não perder a conetividade, quem sabe manter o OSPF rodando, mas para própositos de testes e de saber como funcionam as coisas, esta tudo OK.
Verificando em R1:
R1#sh ip bgp summary
BGP router identifier 1.1.1.1, local AS number 100
BGP table version is 5, main routing table version 5
4 network entries using 592 bytes of memory
4 path entries using 256 bytes of memory
2/2 BGP path/bestpath attribute entries using 272 bytes of memory
1 BGP AS-PATH entries using 24 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 1144 total bytes of memory
BGP activity 4/0 prefixes, 4/0 paths, scan interval 60 secs
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.10.10.2 4 200 45 45 5 0 0 00:18:38 2
R1#sh ip bgp
BGP table version is 5, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 0.0.0.0 0 32768 i
*> 2.2.2.0/24 10.10.10.2 0 200 i
r> 10.10.10.0/24 10.10.10.2 0 200 i
*> 192.168.200.0 0.0.0.0 0 32768 i
R1#
Verificando em R2:
napalm@JunOS-R2> show bgp summary
Groups: 1 Peers: 1 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0 2 2 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
10.10.10.1 100 43 43 0 0 17:57 2/2/2/0 0/0/0/0
napalm@JunOS-R2>
napalm@JunOS-R2> show route
inet.0: 6 destinations, 6 routes (6 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
1.1.1.0/24 *[BGP/170] 00:18:18, MED 0, localpref 100
AS path: 100 I
> to 10.10.10.1 via em0.0
2.2.2.0/24 *[Direct/0] 01:00:02
> via lo0.0
2.2.2.2/32 *[Local/0] 01:00:02
Local via lo0.0
10.10.10.0/24 *[Direct/0] 01:00:03
> via em0.0
10.10.10.2/32 *[Local/0] 01:00:03
Local via em0.0
192.168.200.0/24 *[BGP/170] 00:05:38, MED 0, localpref 100
AS path: 100 I
> to 10.10.10.1 via em0.0
napalm@JunOS-R2>
Podemos ver que o BGP foi estabelecido e as rotas tb estão OK.
Desde o host conseguimos pingar tanto para R1 e R2.
jose@rejane:~$ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=255 time=11.4 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=255 time=9.09 ms
^C
--- 1.1.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 9.090/10.258/11.427/1.172 ms
jose@rejane:~$ ping 2.2.2.2
PING 2.2.2.2 (2.2.2.2) 56(84) bytes of data.
64 bytes from 2.2.2.2: icmp_seq=1 ttl=63 time=11.6 ms
64 bytes from 2.2.2.2: icmp_seq=2 ttl=63 time=20.1 ms
^C
--- 2.2.2.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 11.603/15.891/20.180/4.290 ms
jose@rejane:~$
Bom é isso ai pessoal, nesse três últimos post aprendimos como "coletar informação", "Atualizar a configuração" e "Reemplazar a configuração", utilizando a livraria NAPALM.
Os script são simples, visto que o próposito deles é o ensino, mas vocês podem incluir muitas coisas neles, como logs, entrada de teclado quem sabe ler as configurações dos roteadores de algum banco de dados etc etc..
O próximo post iremos falar de YAML e JINJA2..
Abçs e um ótimo final de semana!!
Jose
2 de mai. de 2018
ISP Express - Produtos e Serviços Cisco com até 70% de desconto e Financiado em 60 X
O NetfindersBrasil, em parceria com a AINET - Associação dos Instrutores do NetAcad - passa agora a oferecer Produtos e Serviços da Cisco Syste para Provedores de Acesso Internet interessados.
Conheça o QuickSupport:
“O QuickSupport foi idealizado para oferecer com exclusividade aos Provedores de Serviços de Internet regionais (iSPs) uma série de serviços executados remotamente ou em loco por especialistas certificados pela Cisco, proporcionando recursos de suporte e manutenção durante a vida útil operacional dos equipamentos CISCO ”
• Através do contrato QuickSupport a AINET , Fornece:
• Monitoramento on-line ( snmp – noc) itens básicos do roteador e ou customizados em conjunto com o cliente
• Acesso por parte do Cliente de nossas ferramentas de monitoração (opcional)
• Cisco TotalCare proporciona recursos de suporte técnico premiados com qualificação para recursos inteligentes. Ele soluciona problemas com mais rapidez, aprimora a eficiência operacional e reduz seu risco de período de inatividade, aumentar a eficiência operacional
• Através de gerenciamento proativo
• Ferramentas e automatizadas
• Gerenciamento SmartNet (*)
• Suporte para Softwares de sistemas autorizados, Cisco IOS , incluindo manutenção e novos lançamentos.
• Gerenciamento ao TAC L3 24 horas por dia, 7 dias por semana
• Substituição avançada de hardware, 24 x 7 x 2 – com ou sem um engenheiro de campo ou – Próximo dia útil (NBD - Next Business Day)
• Equipe de suporte técnico para consultas e soluções de problemas
• Treinamento através de cursos presenciais ou on line a seus colaboradores para toda linha de roteadores CISCO ASR .
• Configuração e/ou acompanhamento das ativações das features e serviços agregados as plataformas ASR
• Administração , supervisão e manutenção
• Relatórios periódicos ou de Alerta de performance e Segurança de seu equipamento
A) Gerenciamento de Incidentes
B) Alertas de segurança de produto
C) Ciclo de vida dos produtos
D) Recomendações para correção de problemas
E) Vulnerabilidades de segurança associadas ao dispositivo
F) Registros de ameaças exibe a identificação da ameaça, a aplicação e a data e a hora e a origem
G) Localizações e IP de host de origem de ameaças
H) Tipo de ameaça por gravidade. Descreve o número de ameaças, classificado por gravidade
I) Consumo de largura de banda (bytes) . Exibe a largura de banda dos sistemas tornando fácil ver quais sistemas estão consumindo a maior largura de banda.
• Ações proativas por nossa equipe técnica
• Suporte remoto e local L1 –L2 –L3
• Aplicação de atualizações sempre que necessário
Quer adquirir Produtos e Soluções Cisco com os melhores preços do Mercado? Consulte-nos: isp.express@ainet.com.br
30 de abr. de 2018
Curso de Python para Engenheiros de Redes
Foram-se os tempos em que um engenheiro de redes somente precisava conhecer o sistema operacional dos equipamentos de networking, seja ele Cisco IOS, JunOS, etc. Com a chegada das novas tendências de mercado, chegou o paradigma de DevOps, no qual os mundos de Desenvolvimento e Operações se fundiram a fim de obter uma melhor comunicação, colaboração e coesão entre estas áreas.
Descrição:
Segundo https://newrelic.com/devops/what-is- devops “Em vez de ter duas áreas diferentes, trabalhando digamos que de forma independente
uma da outra executando tarefas específicas; a metodologia DevOps reconhece uma interdependência de ambas as áreas. Dessa forma DevOps ajuda a desenvolver um software com maior agilidade, mantendo o serviço estavél, e ganhando a velocidade necessária para uma maior inovação.”
Um dos itens no paradigma de DevOps é o chamado “Infraestructure as Code IAC”, no qual um tem a capacidade de administrar e configurar toda uma infraestrutura de TI via código, em vez de ser um processo manual. O IAC se aplica ao mundo do Networking, onde temos por exemplo o conceito de SDN, no qual a camada de controle é desacoplada da camada de fordwarding. Dessa forma o controle é feito no chamado SDN Controller, e é ele que se encarrega de configurar as caixas de fordwarding, switches. Dessa forma toda à programação da sua rede você faz no SDN controller. Sendo assim, se faz necessário o aprendizado de alguma linguagem de programação afim de poder estar atualizados com as novas necessidades.
Porque python?
Não existe uma regra na linguagem de programação a ser utilizada no IAC, mas sendo python uma linguagem de fácil aprendizado, gratuito, com muitas livrarias, e com uma comunidade de desenvolvimento da linguagem sempre ativa; digamos que é a linguagem perfeita para nosso propósito, que é o de programar a nossa rede.
Metodologia E-Doing (Aprenda Fazendo):
Os alunos irão construindo exemplos práticos de Scripts em Sala de Aula para automatizar tarefas nos Ambientes Cisco, Juniper e Arista
Público-Alvo: Profissionais de TI que desejam dominar os fundamentos da Programação em Python voltada para a Carreira de Routing & Switching.
Local:
Rua Marquês de Itu, 408 - Conjunto 24
Vila Buarque - São Paulo - SP (Próximo a Estação República do Metrô)
Obs: Os alunos poderão optar por participar de forma presencial (apenas 10 vagas) ou remotamente, em Tempo Real, deste curso via Plataforma Wiziq (limitado a 50 vagas)
Conteúdo Programático:
1. Linux para Sobrevivientes.
- Tipos de Usuários.
- Navegando nos diretórios Linux.
- Aprendendo a lidar com arquivos, permissões de arquivos.
- Aprendendo a lidar com processos.
- Instalação de pacotes em Ubuntu.
- Ferramentas de networking, ping trace, netstat, ifconfig etc
2. Python
- Porque Python?
- Qual versão de python utilizar?
- Linux ou Windows?
- Paradigmas da programação
- O interpretador de python, variáveis e estrutura de dados.
- Python em modo scripting, Indentação.
- Sentenças de Programação
+"if"
+"for"
+"while"
+"break"
- Funções.
- Tratamento de Exceções.
- Utilizando módulos, instalando módulos com "pip".
- Operações em Arquivos, sentença with.
- operações em Banco de Dados, exemplo MySql.
3. Aprendendo a Utilizar PARAMIKO.
4. APIs,REST,JSON,YAML e JINJA2. Exemplo utilizando Arista eAPI.
5. NetMiko, coleta de informação e modificação de configurações. Lab com Cisco IOS e IOS-XR.
6. NAPALM, coleta de informação e modificação de configurações. Lab Com Cisco IOS e JunOS.
Periodo:
Turma no período Noturno: De 04/06/2018 até 08/06/2018 e de 11/06/2018 até 15/06/2018 - das 19:00 as 23:00 horas
Carga Horária: 40 horas
Investimento:
R$ 1.190,00 - Podendo ser parcelado em até 12X via PagSeguro
Mini-Curriculum do Instrutor:
José Balbuena - CCIE R&S #35681 - profissional com muitos anos de experiência na área de Redes de Computadores e que nos últimos anos tem trabalhado como sysadmin com diversas tecnologias emergentes, especialmente Big Data, Virtualização e DevOps.
Está longe de SP ? Acompanhe o curso remotamente em Tempo Real!!!
Garanta já a sua vaga comprando este curso pelo botão abaixo:
Dúvidas ? Envie- e-mail para adilson.aflorentino@eamsoft.com.br
Assinar:
Postagens (Atom)















