terça-feira, 31 de dezembro de 2013

Instalação do GNS3 no Linux Ubuntu via Launchpad

Olá Pessoal.

Escrevo para informá-los que agora há pouco atualizei o repositório do blog (aba "Downloads & Laboratórios") com a última versão do GNS3 (0.8.6) para Windows. Estou disponibilizando o instalador all-in-one (aproximadamente 60MB) que é composto pelos seguintes softwares: Dynamips (32-bits e 64-bits), Qemu/Pemu, Putty, VPCS, WinPCAP e Wireshark.


Já para os usuários do Linux, ambos o GNS3 (interface gráfica) e o Dynamips (emulador) podem ser facilmente instalados/atualizados no Linux Ubuntu através de um PPA (Personal Package Archive) no Launchpad, bastando o usuário utilizar as seguintes linhas de comando:

sudo add-apt-repository ppa:gns3/ppa
sudo apt-get update
sudo apt-get install dynamips gns3

Abraço.

Samuel.

quarta-feira, 18 de dezembro de 2013

Caros Leitores, Boas Festas!

Olá Pessoal.

Estamos nos aproximando do final de mais um ano e agora é época de festas. Esse "artigo" é na realidade uma mensagem de carinho que deixo para todos vocês leitores do blog que têm colaborado no processo de divulgação de todo o conteúdo que tenho produzido, a exemplo dos artigos técnicos, dos livros, cursos, vídeos, etc. Espero que em 2014 o blog fique ainda mais popular e com uma comunidade técnica fortalecida, repleto de muitos novos artigos!

Feliz Natal e Próspero Ano Novo!

Samuel.


quinta-feira, 12 de dezembro de 2013

Laboratório de Roteamento Estático IPv6 no Linux

Olá Pessoal.

No artigo anterior intitulado "Laboratório de Roteamento Estático no Linux" o leitor aprendeu a configurar roteamento estático no Linux. Pois bem, agora chegou a hora do leitor aprender a configurar roteamento estático em redes IPv6 no Linux! Esse artigo irá utilizar a mesma topologia de rede, no entanto todo o plano de endereçamento será baseado em IPv6 (vide figura abaixo). 

Continuaremos a trabalhar em uma topologia que possui uma rede de longa distância conectando duas unidades remotas, uma com 3 sub-redes locais e outra com 2 sub-redes locais. Estarei utilizando a rede 2001:db8:cafe:ffff::/127 na longa distância (WAN), uma boa prática recomendada na RFC 6164, enquanto que as demais serão sub-redes /64.


Seguindo a mesma lógica de raciocínio do artigo anterior (e do livro prático de laboratórios), abaixo trago duas tabelas organizando algumas informações importantes para a configuração do roteamento estático. A primeira tabela apresenta o mapeamento das redes diretamente conectadas nas interfaces dos roteadores, enquanto que a segunda tabela traz uma relação das rotas que precisamos incrementar através da configuração de roteamento estático. 


Preenchidas essas tabelas fica fácil enxergar que no roteador n1-LinuxRouter1 é necessário adicoinar as redes 2001:db8:cafe:8::/64 e 2001:db8:cafe:9::/64; e que no roteador n2-Li;nuxRouter2 é necessário adicionar as redes 2001:db8:cafe:1::/64, 2001:db8:cafe:2::/64 e 2001:db8:cafe:3::/64. Mas antes de fazer qualquer configuração de roteamento estático é importante lembrar que o Linux não se comporta como roteador por padrão, negando todo o encaminhamento de pacotes entre redes distintas. 

Por isso, até esse momento nem mesmo as redes diretamente conectadas em cada unidade remota conseguem se comunicar, mesmo com informações automáticas nas tabelas de roteamento. O comando para instruir o kernel do Linux a fazer roteamento e permitir o tráfego inter-rede deve ser realizado em ambos os roteadores:

nX-LinuxRouterX# echo "1" > /proc/sys/net/ipv6/conf/all/forwarding

Com esse comando as redes diretamente conectadas em cada unidade já passam a se comunicar, no entanto ainda não há comunicação entre as redes das unidades remotas porque cada roteador somente conhece suas redes. Para viabilizar essa comunicação iremos configurar roteamento estático em ambos os roteadores, alimentando suas tabelas de roteamento para que seja possível fazer o encaminhamento. Os comandos necessários para configurar o roteamento estático são trazidos abaixo, reparem que estamos nos balizando na tabela de incremento de rotas anteriormente preenchida para organizar as informações:

n1-LinuxRouter1# route -A inet6 add 2001:db8:cafe:8::/64 gateway 2001:db8:cafe:ffff::1
n1-LinuxRouter1# route -A inet6 add 2001:db8:cafe:9::/64 gateway 2001:db8:cafe:ffff::1

n2-LinuxRouter2# route -A inet6 add 2001:db8:cafe:1::/64 gateway 2001:db8:cafe:ffff::0
n2-LinuxRouter2# route -A inet6 add 2001:db8:cafe:2::/64 gateway 2001:db8:cafe:ffff::0
n2-LinuxRouter2# route -A inet6 add 2001:db8:cafe:2::/64 gateway 2001:db8:cafe:ffff::0

Apenas para constar, essa mesma configuração poderia ser feita através do comando "ip" ao invés do comando "route". Nesse caso, a configuração ficaria da seguinte forma:

n1-LinuxRouter1# ip -6 route add 2001:db8:cafe:8::/64 via 2001:db8:cafe:ffff::1
n1-LinuxRouter1# ip -6 route add 2001:db8:cafe:9::/64 via 2001:db8:cafe:ffff::1

n2-LinuxRouter2# ip -6 route add 2001:db8:cafe:1::/64 via 2001:db8:cafe:ffff::0
n2-LinuxRouter2# ip -6 route add 2001:db8:cafe:2::/64 via 2001:db8:cafe:ffff::0
n2-LinuxRouter2# ip -6 route add 2001:db8:cafe:3::/64 via 2001:db8:cafe:ffff::0

Pronto, é só isso! Mais uma vez vale relembrar que uma rota é uma tupla composta por duas informações: (rede adicionada, próximo salto). Para finalizar o artigo, abaixo trago as saídas das tabelas de roteamento de ambos os roteadores após essa configuração:



Adendo de 02/02/2014:

No dia 31/jan (sexta-feira) participei da sétima edição da Campus Party Brasil a convite dos amigos do NIC.br, oportunidade em que ministrei uma "palestra" sobre Roteamento Estático IPv6 no Linux. A apresentação consistiu exatamente na resolução do laboratório apresentado nesse artigo, por isso estou compartilhando com vocês a gravação da minha palestra.


Abraço.

Samuel.

sexta-feira, 6 de dezembro de 2013

Laboratório de Roteamento Estático no Linux

Olá Pessoal.

No Lab02 do livro "Laboratórios de Tecnologias Cisco em Infraestrutura de Redes" (figura abaixo) o leitor aprende, através da prática, a configurar roteamento estático no ambiente de uma inter-rede utilizando roteadores da Cisco. 


A proposta desse artigo em formato de laboratório é reproduzir esse mesmo cenário utilizando o Emulador CORE (Common Open Research Emulator), um projeto da marinha norte-americana que é totalmente baseado em Linux. Ao fazê-lo é possível trazer ao leitor do blog um paralelo de como configurar o roteamento estático através de roteadores Linux.

Para tanto, primeiro é necessário reproduzir a topologia da rede que iremos configurar,  um processo bastante simples através da interface gráfica do CORE - tão simples quanto montar topologias no Simulador Cisco Packet Tracer ou no Emulador GNS3. A figura abaixo traz o resultado da reprodução da topologia no CORE, destacando que temos duas unidades remotas conectadas por uma rede de longa distância (WAN 192.168.0.248/30), uma com 3 sub-redes locais e outra com 2 sub-redes locais.


O mais importante para configurar roteamento estático é a organização das informações que serão posteriormente utilizadas na interface de linha de comando. A sintaxe da linha de comando para inserção de rotas é bastante simples, desde que o administrador saiba exatamente quais redes precisam ser adicionadas em quais roteadores e através de qual interface (ou endereço de próximo salto) é possível alcançá-las. 

Cabe destacar que toda interface de rede configurada com um endereço IP implica na inserção automática de uma rota referente àquela rede diretamente conectada, o que é natural porque a interface passa a ser membro da rede. Por isso é importante identificar quais redes estão diretamente conectadas através de quais interfaces para que, posteriormente, fique fácil visualizar quais redes precisam ser adicionadas em cada um dos roteadores. 

Seguindo a mesma lógica de raciocínio apresentada no livro, abaixo trago duas tabelas organizando essas informações. A primeira tabela apresenta o mapeamento das redes diretamente conectadas nas interfaces dos roteadores, enquanto que a segunda tabela traz uma relação das rotas que precisamos incrementar através da configuração de roteamento estático.


Preenchidas essas tabelas fica fácil enxergar que no roteador n1-LinuxRouter1 é necessário adicionar as redes 192.168.8.0/24 e 192.168.9.0/24; e que no roteador n2-LinuxRouter2 é necessário adicionar as redes 192.168.1.0/24, 192.168.2.0/24 e 192.168.3.0/24. Mas antes de fazer qualquer configuração de roteamento estático no Linux é importante lembrar que o Linux não se comporta como roteador por padrão, negando todo o encaminhamento de pacotes entre redes distintas.

Por isso até esse momento nem mesmo as redes diretamente conectadas em cada unidade remota conseguem se comunicar, mesmo com informações automáticas nas tabelas de roteamento. O comando para instruir o kernel do Linux a fazer roteamento e permitir o tráfego inter-rede deve ser realizado em ambos os roteadores:

nX-LinuxRouterX# echo "1" > /proc/sys/net/ipv4/ip_forward

Com esse comando as redes diretamente conectadas em cada unidade já passam a se comunicar, no entanto ainda não há comunicação entre as redes das unidades remotas porque cada roteador somente conhece suas redes. Para viabilizar essa comunicação iremos configurar roteamento estático em ambos roteadores, alimentando suas tabelas de roteamento para que seja possível fazer o encaminhamento. Os comandos necessários para configurar o roteamento estático são trazidos abaixo, reparem que estamos nos balizando na tabela de incremento de rotas anteriormente preenchida para organizar as informações:

n1-LinuxRouter1# route add -net 192.168.8.0/24 gateway 192.168.0.250
n1-LinuxRouter1# route add -net 192.168.9.0/24 gateway 192.168.0.250

n2-LinuxRouter2# route add -net 192.168.1.0/24 gateway 192.168.0.249
n2-LinuxRouter2# route add -net 192.168.2.0/24 gateway 192.168.0.249
n2-LinuxRouter2# route add -net 192.168.3.0/24 gateway 192.168.0.249

Apenas para constar, essa mesma configuração poderia ser feita através do comando "ip" ao invés do comando "route". Nesse caso, a configuração ficaria da segiunte forma:

n1-LinuxRouter1# ip route add 192.168.8.0/24 dev eth0
n1-LinuxRouter1# ip route add 192.168.9.0/24 dev eth0

n2-LinuxRouter2# ip route add 192.168.1.0/24 dev eth0
n2-LinuxRouter2# ip route add 192.168.2.0/24 dev eth0
n2-LinuxRouter2# ip route add 192.168.3.0/24 dev eth0

Pronto, é só isso! No caso do Cisco/IOS é comum informarmos o endereço IP da interface do roteador vizinho (próximo salto) para chegar na rede de destino, mas também é possível informar a interface de saída do roteador local. No Linux vale a mesma regra, ou seja, podemos informar a interface de saída do roteador local (por ex.: route add -net 192.168.1.0/24 dev eth0) ou o endereço da interface do roteador vizinho (por ex.: route add -net 192.168.1.0/24 gateway 192.168.0.249). Tenham em mente que uma rota é uma tupla composta por duas informações: (rede adicionada, próximo salto). Para finalizar o artigo, abaixo trago as saídas das tabelas de roteamento de ambos os roteadores:



Abraço.

Samuel.

domingo, 1 de dezembro de 2013

III Semana de Infraestrutura da Internet no Brasil

Olá Pessoal.

No período de 02 a 07 de dezembro (2013) ocorre a 3a Semana de Infraestrutura da Internet no Brasil, organizada pelo Comite Gestor da Internet no Brasil (CGI.br). Em uma mesma semana, em um único local (São Paulo), serão conduzidos três importantes eventos que discutirão temas diretamente ligados à infraestrutura da Internet no Brasil, a saber:


  • GTER 36 / GTS 22 - A Internet somente atingiu o atual estágio de desenvolvimento por contar basicamente com a troca de boas práticas entre seus interessados. O Grupo de Trabalho de Engenharia e Operação de Redes (GTER) e o Grupo de Trabalho em Segurança de Redes (GTS) se reúnem desde 1994 e 2003, respectivamente, para promover esse tipo de interação;

Na quarta-feira, dia 04/12, estarei compondo a mesa que irá discorrer sobre "IPv6 nas Universidades e Redes Acadêmicas", uma das discussões do Fórum Brasileiro de Implementadores de IPv6. Aqueles interessados nos detalhes de cada um dos evento individuais pode acessar os links acima ou acessar o link geral da semana: http://nic.br/semanainfrabr/

Além desses eventos principais, em 07/12 (sábado), também haverá um importante evento convidado que integra a semana. Trata-se do 1o Encontro Nacional da ISOC no Brasil: Em Defesa do Marco Civil da Internet, evento que tive o privilégio de "batizar" ainda nas listas de discussão da Internet Society (ISOC) Chapter Brazil.


O ponto principal das discussões será o Marco Civil da Internet, legislação em vias de votação no Congresso Nacional. Seu objetivo é assegurar a universalização indiscriminatória da Internet e a neutralidade da rede, princípios importantes para seus usuários. Vale destacar que o Marco Civil é um projeto de lei que vem sendo discutido desde 2009 e que foi construído a partir das contribuições de mais de cerca de duas mil pessoas da sociedade civil. Também serão conduzidas outras discussões sobre: espionagem na rede, compartilhamento das conexões, preço das conexões de banda larga e outros.

Programem-se para prestigiar os eventos. Para aqueles que não puderem comparecer presencialmente, haverá transmissão online via Internet. Lembrando que vocês encontram mais informações nos links acima...

Abraço.

Samuel.

domingo, 24 de novembro de 2013

Wireshark na Análise de Tráfego e Protocolos em Redes

Olá Pessoal.

Esse é mais um artigo que escrevi atendendo a pedido de leitores do blog e temos, dessa vez, como temática da discussão o software Wireshark, uma ferramenta extremamente poderosa que deve fazer parte do arsenal técnico de todo profissional da área de redes de computadores. O Wireshark é um analisador de pacotes que, para tanto, tem capacidade de interceptar "todos" os pacotes que trafegam nas redes e de exibir detalhes das suas informações de controle (cabeçalhos) e conteúdo (payload). O software é gratuito, está disponível para Linux/Windows e pode ser baixado no link http://www.wireshark.org, sendo que o guia do usuário pode ser baixado aqui.


É claro que em  um artigo é impossível esgotar todas as funcionalidades dessa ferramenta fantástica, por isso esse artigo tem três objetivos principais: (i) contextualizar a operação do software, (ii) delinear algumas características técnicas do arranjo topológico físico/lógico da rede que podem interferir no processo de captura dos pacotes a serem analisados e (iii) trazer dois exemplos de interpretação das saídas de pacotes capturados.

1) Operação do Software Wireshark

Um primeiro conceito importante que o leitor deve ter em mente antes de começar a operar esse software é que seu objetivo é trazer informações detalhadas sobre pacotes que foram previamente capturados em um ambiente em que exista uma rede de computadores. A ação de capturar/interceptar pacotes caracteriza uma atividade de escuta dos dados que trafegam na rede, por isso seu uso deve ser realizado por pessoal autorizado para fazê-lo no ambiente em operação, seja para simples monitoramento de conteúdo (a exemplo de conversas telefônicas via VoIP) ou mesmo para a identificação de problemas na rede para fins de otimização do seu desempenho. Esses são os propósitos do software e ele não deve ser utilizado sem autorização como sniffer de rede, o que caracteriza um ataque passivo de interceptação ao conteúdo da rede de computadores.

Normalmente há muito tráfego que chega nas interfaces de uma rede por meio de broadcast (ou outras tecnologias de transmissão) e que não são de interesse de uma interface específica, por isso o comportamento padrão é que somente o tráfego de interesse das interfaces é aceito, de forma que todos os demais pacotes são descartados. Esse é um comportamento padrão baseado na confiança que pode ser alterado através de um método que coloca as interfaces em modo promíscuo, um estado em que elas passam a receber e processar todos os pacotes entrantes/saintes.

O Wireshark organiza as informações de controle contidas nos cabeçalhos dos pacotes para facilitar o processo de leitura e análise técnica, no entanto é necessário que esses pacotes sejam previamente capturados em alguma interface de rede. Para fazê-lo o software utiliza bibliotecas que são responsáveis por colocar as interfaces de rede em modo promíscuo.

2) Características Técnicas do Arranjo Topológico da Rede

Logo nas primeiras aulas de redes de computadores os alunos estudam conceitualmente os principais dispositivos de interconexão onde são apresentadas as principais diferenças entredois dispositivos concentradores: (i) HUB e (ii) Switch. Nessa ocasião os alunos aprendem que mesmo ambos os dispositivos sendo elementos centrais (concentradores) que criam uma topologia física de estrela, o modo de operação entre eles é distinto implicando em diferentes topologias lógicas, conforme pode ser observado na figura abaixo.


O HUB cria uma topologia lógica de barramento porque eletronicamente todas as suas portas estão ligadas em um mesmo barramento físico, o que implica na existência de um único dominío de colisão compartilhado entre todas as portas. Ele é um simples dispositivo repetidor que (i) recebe sinal em uma porta de entrada, (ii) amplifica esse sinal e (iii) despacha esse sinal para todas as demais portas de saída. Como ele é um dispositivo de camada física, não possui inteligência para analisar os cabeçalhos dos quadros.

Uma vez que a topologia lógica do HUB é de barramento, o sinal recebido em uma porta é retransmitido para TODAS as demais portas, o que é ruim do ponto de vista de desempenho e segurança. Por causa disso é muito simples interceptar o tráfego/conteúdo dessa rede através de algum software sniffer, já que todo sinal entre quaisquer máquinas é propagado para todas as portas. 

Por outro lado o Switch cria uma topologia lógica de estrela porque eletronicamente possui uma matriz (denominada matriz crossbar) que permite o chaveamento de circuitos ponto-a-ponto entre duas portas específicas, o que implica em um domínio de colisão para cada porta. Paraestabelecer esses circuitos entre duas portas os switches são dispositivos da camada de enlace e possuem inteligência para analisar os cabeçalhos dos quadros, motivo pelo qual eles utilizam o endereço físíco das interfaces (MAC) no processo de encaminhamento.

É comum o uso de softwares de interceptação de quadros/pacotes em redes de computadores para fins de monitoramento e análise da "saúde" da rede. O problema de utilizar esses softwares nas redes que possuem switch (diga-se de passagem quase todas atualmente), é que ao conectar o computador monitorador em uma porta qualquer do switch ele não será capaz de "escutar" nenhum tráfego entre os circuitos fechados nas demais portas. Por exemplo, uma comunicação entre dois computadores ligados nas portas 1 e 2 de um switch não será transmitida na porta 3 (nem em qualquer outra). 

É para resolver esse problema que existem as tecnologias de port-mirroring. Essa tecnologia de espelhamento consiste em configurar uma determinada porta do switch para espelhar todo o tráfego entre os circuitos das demais portas, daí no nome espelhamento. Ou seja, essa porta irá se tornar o "dedo-duro" da rede replicando todo o tráfego como se fosse um HUB. Naturalmente essa porta será aquela em que o computador monitorador estará executando o software de interceptação (sniffer). Essa discussão sobre port-mirroring já foi apresentada em outro artigo do blog intitulado "Configuração de Espelhamento de Portas em Switch", onde o leitor pode encontrar exemplos de configuração baseados em tecnologias Cisco.

3) Interpretação de Pacotes Capturados

Uma vez apresentados ao leitor os principais conceitos relacionados ao Wireshark, essa última parte do artigo tem por objetivo trazer dois exemplos de como as saídas geradas pelo software podem ser interpretadas para mostrar o que acontece nos "bastidores" de uma rede de computadores. Para fazê-lo estarei utilizando dois exemplos clássicos com vocês, ambos baseados no processo de resolução de endereços MAC do IPv4 (através do ARP) e do IPv6 (através do NDP/ICMPv6).

O procedimento para verificar a descoberta do endereço físico (MAC) de uma interface de rede é bastante simples com o uso do Wireshark. Uma vez que a ferramenta faz a captura dos pacotes das redes, bem como a ordenação dos mesmos por categoria de protocolos, fica fácil identificar toda a comunicação oriunda dos protocolos ARP (no IPv4) e NDP (no IPv6).

Através das opções "Capture | Interfaces | Start" do Wireshark é possível iniciar a captura dos pacotes que estão trafegando na rede. O software irá organizar a saída da maneira apresentada nas figuras abaixo. Observem que a parte superior da tela traz várias linhas (entradas) que representam pacotes individuais e na parte inferior existe o detalhamento das informações dos cabeçalhos e payload desses pacotes, dispostos em conformidade com as camadas do TCP/IP. Quando o usuário clica em qualquer uma das linhas/entradas da parte superior, então a tela inferior muda seu detalhamento.

3.1 Protocolo ARP na Resolução de Endereços IPv4 em MAC

Aqui cabe uma revisão relâmpago acerca do ARP e do processo de resolução de endereços físicos no contexto do IPv4. Quando uma máquina quer se comunicar com outra ela conhece, a princípio, apenas o endereço lógico (IP) do destino, no entanto é necessário saber seu endereço físico (MAC) para que as interfaces de rede possam se comunicar na camada de enlace (tecnologia de rede).

Os sistemas operacionais armazenam uma tabela com as associações entre endereços MAC e IP (chamada Tabela ARP) e quando não existe uma correspondência nessa tabela, então o protocolo ARP (Address Resolution Protocol) entra em ação, conforme pode ser observado na figura abaixo. Na primeira comunicação para um dado destino, a máquina envia uma mensagem de broadcast para toda a rede local perguntando qual é o endereço físico da máquina que possui um determinado IP. Todas as máquinas da rede irão receber e processar essa requisição, no entanto somente a máquina que possuir o endereço IP procurado irá responder com a informação do seu endereço físico.


Por exemplo, nas próximas duas figuras, extraídas do Wireshark, o leitor pode observar que as linhas destacadas são pacotes do protocolo ARP (request e reply), onde faço alguns destaques importantes que mostram ao leitor como interpretar essas informações para compreender a operação do protocolo. Aproveitem essa oportunidade para fazer sua análise das figuras abaixo, comparando as informações trazidas pelo software com a explicação anterior. Veja que as informações procedem, por isso o Wireshark é um software importante também para convencer os alunos e facilitar o entendimento dos protocolos que operam nas redes de computadores.



3.2 Protocolo NDP na Resolução de Endereços IPv6 em MAC

Uma mudança significativa da operação do IPv6 diz respeito ao processo de resolução dos endereços físicos, já que não existe o protocolo ARP no IPv6. No IPv6 a funcionalidade de resolução de endereços lógicos em endereços físicos é responsabilidade do NDP (Neighbor Discovery Protocol), por meio de mensagens ICMPv6 Tipo 135 NS (Neighbor Solicitation) e ICMPv6 Tipo 136 NA (Neighbor Advertisement). Cabe aos sistemas operacionais manterem uma tabela de vizinhança com as associações entre os endreços IPv6 <> MAC.


Com base na figura acima, quando o Host-A deseja se comunicar com o Host-B (2001:db8:cafe:1::1), ele envia uma mensagem a um "grupo" de máquinas para descobrir o endereço MAC da interface configurada com esse IPv6. Para tanto, a mensagem é destinada ao endereço multicast-solicited-node respectivo que, nesse exemplo, é o endereço ff02::1:ff00:1. O formato do endereço solicited-node é ff02::1:ffXX:XXXX, onde X representa os últimos 24 bits do IPv6 do destino.

O campo target do cabeçalho é preenchido com o endereço IPv6 a ser resolvido, o que evita a ambiguidade em caso de duas ou mais máquinas terem os mesmos 24 bits finais no seu endereço. Além disso, existe um campo de opções chamado source-link-layer-address, que é preenchido com o endereço MAC da origem para evitar que o destino, ao receber a mensagem, tenha que refazer esse processo de resolução de endereços para obter o MAC do vizinho antes de respondê-lo.


Na segunda etapa, assim que recebe uma NS com seu endereço IPv6 no campo target, o Host-B envia uma mensagem NA com o seu endereço MAC no campo target-link-layer-address (00:00:00:00:AA:00), destinado unicamente ao Host-A (origem da NS anterior). Quando a mensagem NA chega ao Host-A, já é capaz de criar uma nova associação na sua tabela de vizinhança e, portanto, aprendeu o endereço MAC 00:00:00:AA:00 do IPv6 2001:db8:cafe:1::1.


Caso o leitor tenha dúvidas a respeito do modus operandi do IPv6, recomendo a leitura do meu livro intitulado "IPv6 - O Novo Protocolo da Internet". As explicações trazidas nesse artigo tinham por objetivo subsidiar o entendimento de como interpretar as saídas do Wireshark, por isso não houve aprofundamento teórico.

Abraço.

Samuel.

sábado, 16 de novembro de 2013

Anúncio de Prefixos IPv6 em Roteadores Linux

Olá Pessoal.

Em outra oportunidade escrevi um artigo no blog intitulado "Autoconfiguração de Endereços IPv6 (SLAAC)" explicando como é possível que as redes IPv6 sejam automaticamente configuradas sem que o administrador tenha que realizar nenhuma configuração nas máquinas. Utilizei a figura abaixo para descrever que o processo de autoconfiguração dos endereços consiste basicamente em duas etapas: (i) configuração do prefixo e (ii) configuração do sufixo de host. A primeira etapa é possível porque os hosts aprendem o prefixo da rede através das mensagens ICMPv6 Tipo 134 (RA) anunciadas pelos roteadores.


Recentemente também escrevi alguns artigos explicando como manipular o comportamento padrão dos sistemas operacionais para formação do seu sufixo de host. Pois bem, agora chegou a vez de darmos destaque ao processo de configuração do roteador para permitir o anúncio dos prefixos que serão utilizados pelas máquinas para formar seu endereço através do mecanismo SLAAC.

Normalmente nos roteadores do tipo "caixa", a exemplo de roteadores Cisco, as mensagens ICMPv6 Tipo 134 (RA) são periodicamente enviadas para todos os nós através do endereço ff02::1 (multicast-all-nodes) com o anúncio dos prefixos configurados nas interfaces desses roteadores, o que torna desnecessária qualquer configuração para ter as funcionalidades básicas em operação.

No entanto, é importante ter em mente que máquinas executando o Linux, mesmo que tenham a capacidade de roteamento, não se comportam como roteadores por padrão. Ou seja, o Linux não permite o encaminhamento de tráfego entre sub-redes nem emite as mensagens RA para informar aos hosts que ele é o gateway da rede. No entanto, é possível instruir seu kernel a permitir o roteamento por meio da seguinte linha de comando:

root@Router:/# echo "1" > /proc/sys/net/ipv6/conf/all/forwarding

Isso mesmo, sei que os leitores familiarizados com a configuração de roteadores baseados em Linux devem ter percebido que esse é o comando correspondente ao seguinte comando que era utilizado no IPv4 para permitir o encaminhamento de tráfego entre sub-redes (roteamento):

root@Router:/# echo "1" > /proc/sys/net/ipv4/ip_forward

Como exemplo do processo de configuração de um roteador Linux para fazer o anúncio dos prefixos IPv6 para toda uma rede local (link), estarei utilizando como base o cenário da figura abaixo. Reparem que o roteador possui duas interfaces de rede (eth0 e eth1), cada uma em sua respectiva sub-rede, sendo que a interface eth0 possui o endereço 2001:db8:cafe:1::1/64, ou seja, faz parte da sub-rede 2001:db8:cafe:1::/64 (verde). Nesse exemplo não estamos preocupados com a sub-rede da interface eth1 (azul) e, para verificar se as configurações estão corretas, nossa referência será a máquina n4 que também é membro da sub-rede 2001:db8:cafe:1::/64 (verde).



Quanto a configuração do anúncio periódico das mensagens RA no roteador Linux, primeiro é necessário instalar o serviço RADVD (Router Advertisement Daemon) e, depois, configurá-lo utilizando o arquivo que normalmente fica localizado em /etc/radvd.conf. Para instalar o RADVD em distribuições baseadas no Debian basta entrar com o comando "sudo apt-get install radvd". Feito isso, é necessário configurar o arquivo radvd.conf, ativar o roteamento IPv6 e inicializar o serviço radvd para que o Linux faça o anúncio periódico do prefixo IPv6 através das mensagens RA (134). O leitor pode observar todas essas configurações na figura abaixo:



Se tudo estiver correto com a configuração do roteador Linux, então as máquinas da rede já estarão recebendo os anúncios do(s) prefixo(s) IPv6 e serão capazes de autoconfigurar seus endereços. A figura abaixo traz a saída das configurações de rede da máquina n4, fazendo um comparativo do antes e depois da configuração do radvd no roteador Linux. Reparem que, depois de configurado e habilitado o serviço radvd, a máquina passa a autoconfigurar um endereço IPv6 com o prefixo 2001:db8:cafe:1::/64. Seu endereço final fica 2001:db8:cafe:1:200:ff:feaa:2, lembrando que seu sufixo 200:ff:feaa:2 foi formado pela função EUI-64, a partir do seu endereço MAC 00:00:00:aa:00:02.



Para encerrar esse artigo trago uma amostra da captura de pacotes realizada na interface de rede da máquina n4 para que o leitor possa observar a presença das mensagens ICMPv6 Tipo 134 (RA) chegando em meio aos demais pacotes trafegados na rede. Reparem que o endereço de origem é o link-local (fe80) do roteador Linux e o endereço de destino é o grupo multicast ff02::1.


Abraço.

Samuel.

quarta-feira, 13 de novembro de 2013

Marco Civil da Internet e Neutralidade da Rede

Olá Pessoal.

Em época de atenção constante ao Marco Civil da Internet, legislação que discorre sobre direitos e deveres dos usuários e empresas no ambiente digital da Internet, achei por bem que seria importante deixar minha contribuição sobre o assunto para os leitores do blog. 

As discussões sobre o Marco Civil da Internet ganharam notoriedade recentemente no cenário nacional em virtude do escândalo das espionagens praticadas pela NSA, a agência norte-americana de segurança. Por conta disso, o governo brasileiro, mais uma das vítimas dessas investigações, passou a dar mais atenção a esse tema que, na realidade, já vem sendo discutido desde 2009. 


O Marco Civil da Internet é um projeto de lei que estabelece direitos e deveres para o uso da rede Internet no Brasil. Boa parte dos princípios propostos no Marco Civil da Internet teve sua essência originada da Resolução 003/2009 do CGI.br, o Comite Gestor da Internet no Brasil. Essa resolução, amplamente apoiada pela Internet Society (ISOC), entidade que sou membro, prega princípios importantes como a universalização indiscriminatória da Internet, a neutralidade da rede, a privacidade dos usuários, a inimputabilidade da rede, entre outros igualmente importantes. 

A Internet Society e o Marco Civil da Intenet têm por objetivo central defender os interesses dos usuários da Internet porque somos do entendimento de que a Internet é um direito fundamental dos homens, visão compartilhada em declaração da ONU em maio de 2011. Em síntese, o Marco Civil defende a universalização indiscriminatória da Internet e aquilo que chamamos de neutralidade da rede, uma proteção da Internet aos interesses comerciais das grandes operadoras de telecomunicações.  Outro ponto importante é a garantia de que a governança da Internet no Brasil seja multilateral com participação de todos os setores da sociedade, o que já acontece hoje no Brasil através do CGI.br. 

O grande problema desse embate é que as operadoras têm interesse comercial em manipular o conteúdo da Internet para criar pacotes de serviços diferenciados e isso é entregar ao usuário uma experiência diferente do que é realmente a Internet! Isso é dar às teles (operadoras de telecom) o direito de filtrar conteúdo, como acontece nas TVs. O maior potencial da Internet é que ela não possui uma "grade de programação" e qualquer um pode produzir conteúdo, de forma que quem determina seu sucesso ou fracasso são os próprios usuários, ou seja, estamos falando de um ambiente absolutamente democrático.

Outro impacto negativo da não neutralidade é que as teles teriam o direito, por exemplo, de dar tratamento inferior ao tráfego de aplicações de videoconferência (ex.: Skype) para tornar o serviço ruim e forçar o uso dos seus serviços pagos! Seria algo como inserir técnicas de QoS (qualidade de serviço) no CONTEÚDO da Internet para atender os interesses de quem paga mais. Enfim, são vários os impactos negativos caso a rede deixe de ser neutra...

A neutralidade da rede é muito destacada porque defende o tratamento igualitário (indiscriminado) de todo o tráfego da Internet por parte das operadoras de Internet fixa e móvel. Esse princípio, se regulamentado, impedirá que essas empresas vendam pacotes limitados onde o acesso à Internet existe apenas para determinados conteúdos, como algumas redes sociais! Ter acesso apenas a uma rede social ou algum conteúdo específico não é a Internet, trata-se de um modelo de negócios muito parecido com o que temos hoje nas TVs por assinatura... Não é isso que queremos para a Internet, queremos a manutenção da nossa liberdade de expressão e de todo o potencial inovador da Internet!

Por fim, aproveito para compartilhar com vocês o vídeo abaixo que explica a neutralidade da rede com uma abordagem diferente e bem interessante, deixando claro o motivo das grandes operadoras de telecomunicações serem contrárias à neutralidade.


Com os acontecimentos recentes de espionagem no Brasil o assunto ficou "quente" e aumentou o "jogo de interesses" nesse projeto, sendo que recentemente alguns grandes radiodifusores se uniram às grandes operadoras de telecomunicações para fazer pressão no sentido de alterar sua redação original. O projeto já deveria ter sido aprovado nessa semana, mas foi postergado para aprovação na próxima semana. É importante que estejamos atentos para que sua redação original não seja alterada a ponto de que seus princípios fundamentais sejam comprometidos até que tenhamos sua aprovação!!! Enquanto usuários da Internet, temos todos que fazer a nossa parte e por isso precisamos defender a bandeira favorável à aprovação da redação original do Marco Civil da Internet!

Abraço.

Samuel.

sábado, 26 de outubro de 2013

Extensões de Privacidade do IPv6 no Linux

Olá Pessoal.

No artigo anterior, intitulado "Endereço IPv6 e Função EUI-64 no Microsoft Windows", foi explicado ao leitor como habilitar a função EUI-64 no Windows para que o sufixo dos endereços IPv6 seja gerado a partir do endereço MAC das interfaces de rede. Essa configuração é necessária porque o comportamento padrão dos sistemas operacionais da Microsoft® consiste em gerar aleatoriamente os sufixos dos endereços IPv6, prática documentada na RFC 4941.

A Microsoft® optou por adotar essa prática das "extensões de privacidade" porque entende que utilizar o endereço MAC das interfaces de rede no próprio endereço IPv6 é um risco de segurança que atinge à privacidade dos usuários, uma vez que fica mais fácil rastrear a máquina do usuário independente da rede em que ele esteja conectado.

Enquanto que sistemas Microsoft utilizam as "extensões de privacidade" por padrão, as diversas distribuições do sistema operacional Linux utilizam por padrão a função de expansão EUI-64 para gerar o sufixo dos endereços IPv6 a partir do endereço MAC das interfaces de rede, conforme pode ser observado na figura abaixo em relação ao endereço de link-local (fe80) da interface wlan0.


Da mesma forma que no artigo anterior o leitor aprendeu a configurar o Windows para mudar seu comportamento padrão, esse artigo mostra como configurar o Linux para mudar seu comportamento padrão, ou seja, habilitar as "extensões de privacidade" para que os sufixos dos endereços IPv6 sejam gerados aleatoriamente. Para fazê-lo no Linux (em distribuições baseadas no Debian) é necessário ter privilégio de root e digitar as seguintes linhas de comando:

echo "2" > /proc/sys/net/ipv6/conf/all/use_tempaddr
/etc/init.d/networking restart

O resultado dessa configuração pode ser observado na figura abaixo que traz a saída do comando ifconfig na interface eth0. Reparem que com essas configurações, a partir do prefixo da rede (2001:db8:cafe::/64), o Linux autoconfigura dois endereços IPv6 com sufixos diferentes, sendo um originalmente gerado através da função EUI-64 (vermelho) e outro temporário gerado aleatoriamente (amarelo). Dessa forma os endereços com sufixo aleatório/temporário serão preferíveis aos endereços com sufixo EUI-64.


Essa configuração pode ser desfeita a qualquer momento alterando o valor do arquivo "use_tempaddr". Os possíveis valores do arquivo de configuração "use_tempaddr" localizado em "/proc/sys/net/ipv6/conf/all" são:

  • <= 0 : Desativa a Privacidade (Padrão)
  • == 1 : Ativa a Privacidade c/ Preferência por EUI-64
  • >= 2 : Ativa a Privacidade c/ Preferência por Sufixos Aleatórios/Temporários

Façam seus testes...

Abraço.

Samuel.

domingo, 20 de outubro de 2013

Endereço IPv6 e Função EUI-64 no Microsoft Windows

Olá Pessoal.

Em outro artigo que escrevi, intitulado "Autoconfiguração de Endereços IPv6 (SLAAC)", expliquei ao leitor como funciona o processo de autoconfiguração de endereços no IPv6. De maneira bem resumida, apenas para relembrar, os roteadores são responsáveis por fazer o anúncio do(s) prefixo(s) através de mensagens ICMPv6 Tipo 134 (RA), enquanto que o sufixo identificador do host é automaticamente gerado a partir do endereço MAC da interface de rede.

Depois de aprendido o prefixo da rede, fica faltando apenas determinar o sufixo que será utilizado nos últimos 64 bits do Host-ID (sufixo de host). O sufixo de host é automaticamente gerado a partir do endereço físico (MAC) da interface de rede. O detalhe é que o MAC tem apenas 48 bis, por isso é aplicada uma função de expansão denominada IEEE EUI-64 (Extended Unique Identifier) no endereço físico que preenche os demais 16 bits através de um algoritmo padronizado, processo que pode ser relembrado na figura abaixo.


Esse é o comportamento padrão da maioria dos sistemas operacionais que seguem a RFC 2373, como acontece no Linux e no MacOS. No entanto, o Microsoft® Windows não utiliza a função de expansão EUI-64 para gerar o Host-ID a partir do MAC das interfaces. A Microsoft® optou por gerá-los aleatoriamente porque entende que é um risco de segurança incorporar os endereços físicos das interfaces de rede no próprio IPv6, o que é uma prática de privacidade proposta na RFC 4941 intitulada "Privacy Extensions for SLAAC in IPv6". Para exemplificar esse processo "padrão", a figura abaixo traz uma exibição das configurações de rede no Windows.


Reparem na imagem anterior que o endereço MAC da interface de rede é 00-22-5F-D1-BA-BD e o sufixo utilizado no endereço IPv6 é a5c9:9415:9239:e855 (anexado ao prefixo link-local fe80), ou seja, não existe nenhuma relação entre o sufixo gerado aleatoriamente e o endereço físico da interface de rede. Cabe destacar que o %X utilizado ao final dos endereços IPv6 no Windows é apenas um índice numérico utilizado para referenciar cada uma das interfaces instaladas no sistema e, portanto, não faz parte do endereço v6.

Apesar de gerar o sufixo aleatoriamente ser o comportamento padrão do Microsoft® Windows, isso pode trazer mais problemas de gestão do que benefícios. Esse processo pode tornar mais difícil o processo de monitoramento das máquinas e também requer sucessivas atualizações de DNS a cada vez que o endereço IPv6 do host é alterado em cada boot. O administrador pode optar por utilizar o método EUI-64 para gerar o sufixo de host em todas as interfaces do sistema, desativando as extensões de privacidade. Para fazê-lo, é necessário entrar no prompt de comandos com elevação de administrador e entrar com os seguintes comandos:.

netsh interface ipv6 set privacy state=disabled store=active
netsh interface ipv6 set privacy state=disabled store=persistent
netsh interface ipv6 set global randomizeidentifiers=disabled store=active
netsh interface ipv6 set global randomizeidentifiers=disabled store=persistent

Depois de feito isso, basta exibir novamente as configurações de rede no Windows para observar que a função EUI-64 já está em operação, conforme saída da figura abaixo. Caso o leitor queira reativar as extensões de privacidade e, portanto, desativar o EUI-64, basta repetir esse procedimento substituindo o parâmetro state=disabled por state=enabled


Reparem na figura acima que agora o sufixo utilizado no endereço IPv6 é 0222:5fff:fed1:babd (anexado ao prefixo fe80), ou seja, ele foi gerado a partir do MAC 00-22-5F-D1-BA-BD. Para que esse processo fique ainda mais claro, vamos aplicar a função EUI-64 passo-a-passo:

Os 48 bits do MAC são separados em dois blocos de 24 bits, ou seja, <00225F> e <D1BABD>. Feito isso, são inseridos os algarismos hexadecimais FFFE entre eles, ficando 00225FFFFED1BABD. Por fim, o sétimo bit tem seu valor invertido, o que faz com que o segundo algarismo 0 seja transformado em 2. Dessa forma chega-se ao resultado 02225FFFFED1BABD. O resultado é o sufixo 0222:5fff:fed1:babd utilizado no endereço IPv6. Façam seus testes...

Abraço.

Samuel.

terça-feira, 15 de outubro de 2013

Aniversário de 1 Ano do Blog LabCisco

Olá Pessoal.

Parabéns para nós, nesta data querida, muitas felicidades, muitos anos de vida...
(Eu aposto que você cantou esse trecho!) ;-)

Há exatamente 1 ano atrás o Blog LabCisco, muito discretamente, passou a compor a Internet com o propósito inicial de compilar os arquivos digitais dos laboratórios do livro "Laboratórios de Tecnologias Cisco em Infraestrutura de Redes", lançado em 2012 pela Editora Novatec. 

Ao perceber o potencial de disseminação da informação e as possibilidades de interação com os leitores, passei a utilizar esse espaço também para escrever e publicar novos artigos técnicos que pudessem servir como material de apoio para meus alunos de graduação e pós-graduação. O resultado dessa ação ultrapassou as expectativas porque o blog rapidamente "caiu na graça" de toda a comunidade técnica interessada em redes/telecom.




É verdade que o blog começou bem discreto com sua proposta inicial restrita aos leitores do livro de laboratórios, mas em pouco tempo o conteúdo aqui publicado acabou alcançando muita gente e nesse pequeno espaço de tempo (apenas 1 ano) tenho alguns números bem interessantes para compartilhar com vocês leitores, que permitem acompanhar o crescimento do blog:

  • Em 2013 o Blog LabCisco foi referendado pelo IPv6 Forum internacionalmente;
  • Em 2013 o Blog LabCisco foi referendado pela Cisco do Brasil e Cisco NetAcad;
  • Escrevi aproximadamente 100 artigos que foram publicados por aqui;
  • Desse total de artigos, 36 foram práticos em formato de laboratório;
  • Escrita de um livro compilando laboratórios baseados em tecnologias Cisco;
  • Escrita de um livro sobre IPv6 que é oficial em países de língua portuguesa;
  • Recebemos mais de 108.000 visitas de todo o mundo;
  • Temos 185 membros cadastrados na comunidade local do blog;
  • Temos 1184 CURTIR na fanpage do Facebook, onde são feitos sorteios;
  • Foram disponibilizados vídeos de palestras e programas de TV;
  • Foi produzido 1 curso online totalmente baseado no livro de laboratórios;
  • Foi gravado 1 webinar de 2 dias sobre IPv6 em parceria com a Cisco (NetAcad).

Considerando que a temática do blog é uma área específica da computação ("redes/telecom") e que no escopo dessa área do saber o foco principal do blog são tecnologias Cisco, ou seja, temos um público-alvo bastante específico, acho que posso considerar esses números satisfatórios para o primeiro ano. Caros leitores, esses números refletem o NOSSO sucesso!

No entanto ainda estamos trabalhando na construção da nossa comunidade técnica e cada um de vocês que acompanha o blog é importante não apenas como leitor, mas também como elemento disseminador desse espaço. Acredito que vocês devem imaginar o trabalho necessário para manter esse espaço operacional e atualizado... Continuem compartilhando com seus amigos e colegas da área todo o conteúdo aqui produzido, falem com eles sobre o blog e vamos continuar crescendo!!! 

Em pleno dia do professor aproveito a oportunidade da data para resgistrar meus sinceros cumprimentos aos colegas professores que acompanham o blog e utilizam os materiais aqui disponibilizados em suas aulas.

Um grande abraço para todos vocês leitores (e amigos)!

Samuel.

domingo, 6 de outubro de 2013

Gravação do Webinar IPv6 da Cisco NetAcad

Olá Pessoal.

Mais uma vez vocês pediram e foram atendidos. Os parceiros da Cisco (NetAcad) permitiram que as gravações dos dois dias de apresentações do webinar sobre IPv6 para instrutores fossem publicamente disponibilizadas para os leitores do meu blog. Outra boa notícia é que, provavelmente em novembro, haverá mais 2 sessões (partes 3 e 4) com mais tópicos sobre IPv6 que passam a ser cobrados no novo exame 200-120 do CCNA R&S. Acompanhem o blog e aguardem por novidades... 


Abaixo vocês encontram os links com os respectivos tópicos abordados e suas gravações:


A abertura do evento foi realizada pelo Flávio Provedel e Rodrigo Floriano, ambos da Cisco (NetAcad). Os tópicos "Introdução", "Notação do Endereço", "OSPFv3" e "ACL" foram apresentados por mim. Os tópicos "Estrutura do Endereço", "Cálculo de Sub-Rede" e "Roteamento Estático" foram apresentados pelo Gerson Castro. O tópico "Descoberta de Vizinhança" foi apresentado pelo Edson Soares. Infelizmente a qualidade do áudio da "Introdução" não ficou boa...

Bons Estudos!

Samuel.

segunda-feira, 30 de setembro de 2013

Cisco Networking Academy Promove Webinar Sobre IPv6

Olá Pessoal.

Nos dias 01/out (terça-feira) e 03/out (quinta-feira), das 11h às 15h, o Programa Cisco Networking Academy estará promovendo dois webinars sobre IPv6 exclusivos para seus instrutores no Brasil e demais países de língua portuguesa. O objetivo do webinar é fornecer aos instrutores ferramentas necessárias para sua atualização nos conteúdos do curso CCNA R&S com base no novo currículo 5.0, já que a maior cobrança pelo tópico IPv6 passa a ser uma mudança bastante significativa. 

Eu e outros dois colegas instrutores fomos escalados para conduzir as apresentações, sendo que todos os slides que serão utilizados no evento foram baseados no conteúdo do meu livro recém-lançado intitulado "IPv6 - O Novo Protocolo da Internet", afinal a obra possui a chancela "IPv6 Forum Officially Certified Guide" em países de língua portuguesa.


Todos os instrutores do Programa Cisco Networking Academy são estimulados a participar dos webinars. As apresentações serão distribuídas entre os dois dias da seguinte maneira:

|******
| Dia 1 - 01/10/2013 (terça-feira)
|
| Part 1: Flávio Provedel e Rodrigo Floriano (Cisco NetAcad)
| Opening Address
| CCNA R&S Pedagogy Changes (20min)
| CCNA R&S Update (20min)
| Break (10min)
|
| Part 2: Samuel Henrique Bucke Brito
| Introducing Basic IPv6 (30min)
| Understanding IPv6 - Addressing & Subnetting (20min)
| Break (10min)
|
| Part 3: Gerson Castro
| Understanding IPv6 - Addressing & Subnetting (50min)
| Break (10min)
|
| Part 4: Samuel Henrique Bucke Brito
| Understanding IPv6 - Addressing & Subnetting (50min)
|******

|******
| Dia 2 - 03/10/2013 (quinta-feira)
|
| Part 5: 
| Packet Tracer 6.0.1 (30min), Rodrigo Floriano
| IPv6 Headers (15min), Edson Soares Ferreira
| Break (10min)
|
| Part 6: Edson Soares Ferreira
| Understanding IPv6 - Neighbor Discovery (45min)
| Break (10min)
|
| Part 7: Gerson Castro
| Understanding IPv6 - Routing (45min)
| Break (10min)
|
| Part 8: Samuel Henrique Bucke Brito
| Implementing Single Area OSPFv3 (20min)
| Configuring IPv6 ACL (30min)
|******

Os links para registro nas sessões que serão transmitidas online via WebEx são:

Sessão do Dia 1:

Sessão do Dia 2:

Abraço.

Samuel.