Wednesday, August 31, 2011

OSPF sobre Frame-Relay Parte 2


Vamos ver uma outra forma de integrar OSPF com Frame-Relay, porém , dessa vez, usaremos a nuvem Frame-Relay presente no Packet Tracer.
  como já discutimos no post anterior, OSPF usa multicast por defaul para montar sua topologia livre de loops, anviando informações para o IP 224.0.0.5, enquanto Frame-Relay é uma tecnologia NBMA, Non-Broadcast Multi-Acccess. Como o multicast é um tipo de Broadcast, temos a situação problema que iremos estudar.

Abaixo segue nossa rede :





  Nessa nossa topologia, temos o router MG conectado ao router ES através da nuvem Frame-Relay.
Vamos ver nossas configurações, a partir do router MG:


Iniciaremos com Boas práticas, configurando segurança em nosso router:

Router>
Router>enable
Router#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#hostname MG
MG(config)#line vty 0 4
MG(config-line)#password cisco

MG(config-line)#login
MG(config-line)#line con 0
MG(config-line)#password cisco
MG(config-line)#login


Em seguida, vamos configurar nossa interface serial:

MG(config-line)#exit
MG(config)#interface serial 2/0
MG(config-if)#ip address 1.1.1.1 255.255.255.0
MG(config-if)#encapsulation frame-relay 

MG(config-if)#frame-relay interface-dlci 16
MG(config-if)#frame-relay map ip 1.1.1.2 16 broadcast
MG(config-if)#no shutdown

%LINK-5-CHANGED: Interface Serial2/0, changed state to up

MG(config-if)#
%LINEPROTO-5-UPDOWN: Line protocol on Interface Serial2/0, changed state to up


Vamos salvar sempre nossas configurações:

MG#
%SYS-5-CONFIG_I: Configured from console by console

MG#copy run start


Já vamos configurar o processo OSPF:

MG#config t
Enter configuration commands, one per line.  End with CNTL/Z.
MG(config)#
MG(config)#router ospf 1
MG(config-router)#net
MG(config-router)#network 1.1.1.0 0.0.0.255 area 0
MG(config-router)#


Iremos agora para o router ES:

Faremos da mesma forma,segurança e em seguida interface e OSPF:

Router>en
Router#
Router#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#hostname ES
ES(config)#line vty 0 4
ES(config-line)#password cisco
ES(config-line)#login
ES(config-line)#line con 0
ES(config-line)#password cisco


ES(config-line)#login
ES(config-line)#exit
ES(config)#
ES(config)#interface serial 2/0
ES(config-if)#ip add 1.1.1.2 255.255.255.0
ES(config-if)#encapsulation frame-relay
ES(config-if)#frame-relay interface-dlci 19
MG(config-if)#frame-relay map ip 1.1.1.2 16 broadcast
ES(config-if)#



%LINK-5-CHANGED: Interface Serial2/0, changed state to up

ES(config-if)#
%LINEPROTO-5-UPDOWN: Line protocol on Interface Serial2/0, changed state to up


Já podemos então pingar nosso outro router, vamos ver?

ES#ping 1.1.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 47/59/62 ms

Perfeito!

Agora em router MG:

MG#
MG#ping 1.1.1.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 62/62/63 ms


Ótimo também...

Se temos ping, podemos ver então como está nosso OSPF.


MG#sh  ip ospf neighbor

Nenhum Vizinho!



MG#show ip ospf database
            OSPF Router with ID (1.1.1.1) (Process ID 1)

                Router Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum Link count
1.1.1.1         1.1.1.1         68          0x80000001 0x00d267 1


Apenas ele mesmo.


MG#show ip protocols

Routing Protocol is "ospf 1"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Router ID 1.1.1.1
  Number of areas in this router is 1. 1 normal 0 stub 0 nssa
  Maximum path: 4
  Routing for Networks:
    1.1.1.0 0.0.0.255 area 0
  Routing Information Sources:
    Gateway         Distance      Last Update
  Distance: (default is 110)

Apenas ele mesmo.

Ou seja, não  precisamos nem olhar no router ES para saber que não temos convergência OSPF.

Vamos ver um outro comando:

MG#show ip ospf interface serial 2/0
Serial2/0 is up, line protocol is up
  Internet address is 1.1.1.1/24, Area 0
  Process ID 1, Router ID 1.1.1.1, Network Type MULTI-POINT, Cost: 781
  Transmit Delay is 1 sec, State WAITING, Priority 1
  No designated router on this network
  No backup designated router on this network
  Timer intervals configured, Hello 30, Dead 120, Wait 120, Retransmit 5
    Hello due in 00:00:00
  Index 1/1, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 1, maximum is 1
  Last flood scan time is 0 msec, maximum is 0 msec
  Neighbor Count is 0, Adjacent neighbor count is 0
  Suppress hello for 0 neighbor(s)
MG#


Na linha em destaque, temos uma informação importante. O OSPF está enxergando a rede como Multi-point, ou seja, ele irá tentar formar as adjacências enviando os pacotes Hello.

Dessa forma, podemos alterar a maneira como ele enxerga a rede, uma vez que nós sabemos que em nossa topologia, não haverá necessidade de eleição de DR e BDR.

Para fazer isso, entramos com o seguinte comando:

MG(config-if)#ip ospf network point-to-point

  Em ambos os routers:

ES(config-if)#ip ospf network point-to-point




Resultado:

MG:

MG(config-if)#
00:31:11: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.2 on Serial2/0 from LOADING to FULL, Loading Done


 ES:


ES(config-if)#
00:25:32: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Serial2/0 from LOADING to FULL, Loading Done

Agora assim temos a rede convergida, podemos repetir os comando em MG:

MG#sh ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
1.1.1.2           0   FULL/  -        00:00:31    1.1.1.2         Serial2/0

MG#show ip ospf database
            OSPF Router with ID (1.1.1.1) (Process ID 1)

                Router Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum Link count
1.1.1.1         1.1.1.1         333         0x80000004 0x007f90 2
1.1.1.2         1.1.1.2         333         0x80000004 0x00739a 2


MG#sh ip protocols

Routing Protocol is "ospf 1"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Router ID 1.1.1.1
  Number of areas in this router is 1. 1 normal 0 stub 0 nssa
  Maximum path: 4
  Routing for Networks:
    1.1.1.0 0.0.0.255 area 0
  Routing Information Sources:
    Gateway         Distance      Last Update
    1.1.1.2              110      00:05:55
  Distance: (default is 110)
Mais uma situação em que é possível ter essas duas tecnologias interoperando sem problemas desde que se conheça suas nuâncias.

 












Thursday, August 25, 2011

NAT-Continuação

Bom, retomando o estudo, vou voltar a falar de NAT. Esse assunto é muito importante seja para o dia-a-dia, seja para o exame. Porém, o enfoque que vou dar hoje envolve as terminologias apresentadas pela Cisco System.
No primeiro post, apresentamos NAT e mostramos uma das formar de implementar, sendo a mais comun que é Overload. Porém, procurando testes pela Internet , fica claro que NAT é cobrado além da implementação prática, algumas teorias relacionadas a NAT são constantemente cobradas e podem confundir.
Abaixo, teremos uma figura muito representatica do que representa NAT em um ambiente de rede:

Essa figura, retirada do site da Cisco, mostra os termos relacionado a NAT e esses termos são constatemente cobrados em exames. Vamos a cada um deles:
  •  Inside Local
  • Outside Local
  • Inside Global
  • Outside Global
  Inside Local é qualquer IP da rede local. Quando um pacote vai ser enviado para fora da rede, ele será sempre o Source IP do pacote. Vale lembrar que até mesmo o IP da interface LAN do Default Gateway também faz parte dessa classificação.
  Muito embora o desenho nos faz parecer que o IP da LAN do Default Gateway é o Outside Local, isso é incorreto.
 
  Outside Local.

A melhor definição para esse termo é: Outside Local é o IP da Internet da forma que ele é visto pelo host local, ou seja, do ponto de vista do host que está atrás do NAT. Quando qualquer host da rede local for se comunicar com o mundo externo, ele não estará preocupado com NAT. Ele montará o pacote usando seu IP como Source IP e o IP do host na Internet, seja um Server HTTP ou um Server SMTP, não importa, ele usará esse IP como o Destination IP do pacote e enviará para o Default Gateway. Muitas questões exploram essa situação porque ela é fonte de confusão. O endereço IP de Destino, será constante em uma comunicação através da Internet e mesmo o IP de Origem também será constante, caso não haja NAT. Veremos a frente que o NAT irá alterar o Campo Source Address do pacote. Porém, o IP de Destino, permonecerá sempre o mesmo. O que sempre mudará a cada Nó da rede é o MAC address do frame, a cada segmento de rede atravessado, o frame terá um Source MAC e um Destination MAC diferente.
   Pois bem, então do ponto de vista do host na rede local, Um IP na Internet será chamado de Outside Local.

Inside Global

O Default Gateway recebeu um pacote, vindo da sua interface LAN. Ele abrirá o pacote para ver qual o IP de destino afim de encaminhá-lo. Em um ambiante com NAT, o Default Gateway irá montar um outro pacote em que o Source IP não será mais o IP da rede local, mas seu IP da interface WAN. A esse IP, chamamos de Inside Global.
  Uma boa definição para Inside Global é que ele é o Inside Local do ponto de vista de qualquer host espelhado pela Internet. Ou seja, a comunicação foi iniciada por um host na rede local e será retornada para ele, apesar de que seu IP não saiu para a Internet,porém, a comunicação ainda é entre ele e algum host na Internet.
   Uma tabela será montada relacionando o IP Inside Global mais a porta TCP ou UDP com o IP Inside Local e a porta TCP ou UDP, de forma que, quando o pacote retornar ao Gateway vindo da Internet, ela saberá de qual host na sua rede interna pertence aquele pacote.
  Ou seja, a rigor, NAT é exatamente a técnica aplicada por um Sistema Operacional, seja ele Windows, Linux ou um Cisco IOS, de trocar o Source IP do pacote no limite da rede, pelo IP da sua Interface WAN, que está de 'cara' para a Internet e será visível pelo host destino, contrário do host que se encontra em sua interface LAN.
   Dessa forma, é possível mascarar completamente IPs não-válidos, presentes em uma rede local, da Internet. Apenas o IP da interface WAN do Default Gateway fica visível e será para ele que será encaminhado todos os pacotes vindos da Internet.

Outside Global



   Esse termo é o mais simples, uma vez que é o IP de qualquer host na Internet, ou seja, é com quem o Inside Local está se comunicando.

Ter essas terminologias bem claras em mente, pode tornar muito simples questões como a que vou mostrar abaixo:
Essa é um exemplo de questão em que, conhecendo bem as terminologias, fica fácil.

NAT possibilita ainda falar muito mais, porém, vou fechar esse post e numa outra oportunidade podemos aprofundar um pouco mais.









Thursday, August 11, 2011

Hiphone


Essa é pra descontrair em meio ao estress dos estudos!!!
  

    Com vontade de mexer em um celular touchscreen e sem grana pra comprar um iphone ou outro bodoso da vida, comprei um Hiphone...na verdade ganhei de presente.
Cara, como diria o outro : 'mardito chineses'.

Uma vez em posse do brinquedo, comecei a fuçar, nele e na Net...existem vários blogs que são praticamente especializados nesses aparelhos genéricos, mas não resisto e vou por um passo-a-passo de algo que eu fiz.
Assim que comecei a 'fuçar' Até achei engraçadinho o barulhinho que faz quando você presciona um ícone na tela, mas com o tempo começa a ficar chato. Se estiver próximo a outras pessoas então, nem da, parece que você quer que outros vejam seu Hiphone.
  Iniciei uma verdadeira caçada para ver onde eu poderia desabilitar aquilo. Por incrível que pareça, não há muito o que fazer a nível de aparelho. Ai encontrei na Net como fazer.
   Existe um programinha chamado China Phone MTK, isso mesmo. Vou deixar esses arquivos disponíveis,porém, meu HD virutal está uma porcaria, mas se jogar no google vai que vai.
 Baixe e instale o tal China Phone MTK.
 Feito isso, instale o drive para comunicação serial com o nosso Hiphone,vou disponibilizar também,mas mesmo esquema.
  Quando o driver está instalado e você espeta o aparelho no PC, é só selecionar PortaCOM no aparelho. Se olhar em Portas no 'gerenciador de dispositivo' do PC, vai ter aparecido lá uma porta a mais, no meu caso foi a porta COM3.
    Configure a porta para trabalhar a 19200.


Abre nosso China Phone MTK :

 
    Nessa imagem já foi feito a conexão, porém, não tem segredo nenhum, se a porta está em 19200, basca mandar conectar no canto superior direito e pronto.
   Depois de conectado, basta ir clicando em ler e o software irá trazendo os dados que estão no aparelho.Para fazer a alteração no caso específico do son dos ícones, basta zerar os valores em "Modo normal" na primeira linha "Música" em 0(zero) e 1 (um) passe para zero.
  Feita a alteração, basta clicar em 'escrever' e pronto, já está salvo no aparelho.

 Essas mudanças podem envolver riscos, se for fazer, saiba dos riscos e tome cuidado, leia o máximo que puder de opiniões e tutoriais. Não vá aparecer nos blogs da vida dizendo "por favor, me ajudem, fui alterar uma configuração do meu aparelho e ele não liga mais...socorro!! "

 Eu vi vários desses!!!

 Mas é muito legal, eu estou atrás de um softphne java pra instalar nele e colocar um ramal do Asterisk. Instalei o Skype mas como o Asterisk não terá mais suporte ao Skype, vou deixá-lo apenas como Skype mesmo e ver se acho um softphne, achando eu posto aqui...





 


Wednesday, August 3, 2011

NAT-Network Address Translation

 Hoje vamos falar de mais um assunto muito importante e de enorme aplicação. Para quem está se preparando para o exame, como eu, ou mesmo no seu dia-a-dia, caso você tenha um ambiente como o nosso diagrama. Essa arquitetura é bem fácil de ser encontrada em escritórios, filiais,etc. É uma Rede Stub, ou seja, possui apenas uma saida e depende da configuração de NAT para que seus IPs internos possam conseguir navegar na Internet usando o IP do provedor. Essa é uma das funções do NAT, talvez a mais comun, e essa implantação, chamada Overload é a mais usada.
  A nível de conceito, existe basicamente 4 tipos de NAT:
  • Estático-Static
  • Dinâmico-Dynamic
  • Overload com um IP válido
  • Overload com um range de IPs válidos.
Em nosso LAB, vamos usar Overload,porém em uma combinação dos dois tipos de Overload, ou seja, poderiamos configurar como sendo um IP válido apenas, mas vamos configurar para um range de IPs.

Figura 1
Vamos iniciar configurando nosso router, que se chamará Branch. Ele fará DHCP também, isso é comun em uma rede dessa natureza,onde muita vezes não vale apena ter um firewall ou um servidor DHCP.
Router>
Router>en
Router#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#hostname Branch


Damos um nome ao Router

Branch(config)#
Branch(config)#interface fa 0/0
Branch(config-if)#ip add 192.168.0.1 255.255.255.0
Branch(config-if)#no sh


%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up


Branch(config-if)#ip nat inside
Branch(config-if)#


Subimos a interface LAN já com IP e preparada para o NAT.

Vamos subir um servidor DHCP:

Branch(config)#ip dhcp po
Branch(config)#ip dhcp pool ?
  WORD  Pool name
Branch(config)#ip dhcp pool dhcp-branch
Branch(dhcp-config)#
Branch(dhcp-config)#network 192.168.0.0 255.255.255.0
Branch(dhcp-config)#default-router 192.168.0.1
Branch(dhcp-config)#dns-server 200.220.138.113
Branch(dhcp-config)#




Aqui está, já temos DHCP na rede LAN na faixa de 192.168.0.1 até 192.168.0.254. Também estabelecemos que 192.168.0.1 será nosso Gateway e que o servidor de DNS, forncecido pelo ISP, será o 200.220.138.113

Vamos configurar em seguida o NAT.


Branch#
Branch#
Branch#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Branch(config)#
Branch(config)#
Branch(config)#
Branch(config)#access-list 1 permit 192.168.0.0 0.0.0.255
Branch(config)#ip nat pool pool-branch 200.221.2.45 200.221.2.45 net
Branch(config)#ip nat pool pool-branch 200.221.2.45 200.221.2.45 netmask 255.255.255.252
Branch(config)#ip nat inside source list 1 po
Branch(config)#ip nat inside source list 1 pool pool-branch over
Branch(config)#ip nat inside source list 1 pool pool-branch overload
Branch(config)#




A primeira coisa foi configurar uma ACL simples, como falei quando mostrei como configurar ACL. Depois , definimos um pool de endereços IPs válidos que será usado para navegarmos. Aqui, como tínhamos apenas um IP válido fornecido pelo nosso ISP, colocamos ele como IP inicial e IP final. Caso nosso ISP nos fornecesse mais de um IP, um range, poderiamos por o primeiro e o últimos IP.
Outra forma de configurar com apenas um IP seria assim:

Branch(config)#ip nat inside source list 1 interface serial 0/0 overload

Dessa forma, estaríamos consederando apenas um IP de fato para sair.
Pois bem, nossa redezinha já está quase pronta. vamos ver se navegamos?


Figura 2

Recebemos um erro do web site.
  Como Administrador de redes, é fundamental que você saiba encontrar erros. Errar é humano, mas é preciso ter domínio sobre os equipamentos, é preciso saber falar com eles, isso é ser um Administrador de redes.

Vamos entrar em  nosso router e ver o que ele nos diz :


Branch#debug ip nat
IP NAT debugging is on

Branch#debug ip icmp
ICMP packet debugging is on
Branch#
ICMP: dst (200.220.138.113)  host unreachable sent to 192.168.0.5

ICMP: dst (200.220.138.113)  host unreachable sent to 192.168.0.5

ICMP: dst (200.220.138.113)  host unreachable sent to 192.168.0.5

ICMP: dst (200.220.138.113)  host unreachable sent to 192.168.0.5

ICMP: dst (200.220.138.113)  host unreachable sent to 192.168.0.5



Ativamos debug de NAT e de ICMP. Não houve uso de NAT e o ICMP, Internet Control Message Protocol , nos diz que o IP 200.220.138.113 está inalcançável.


 Claro que está. Nos não tínhamos criado nenhuma saída para o Router.

Vamos fazer então:

Branch(config)#
Branch(config)#ip route 0.0.0.0 0.0.0.0 serial 0/0


 Configuramos uma rota default para a serial 0/0. Isso é mais que suciente e é muito eficaz no nosso caso.


Vamos direto ao router ver o que ele nos diz , agora que ele sabe o que fazer com os pacotes:


Branch(config)#
NAT: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [79]

NAT*: s=200.220.138.113, d=200.221.2.45->192.168.0.5 [13]

NAT*: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [80]

NAT*: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [81]

NAT*: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [82]

NAT*: s=200.220.138.113, d=200.221.2.45->192.168.0.5 [14]

NAT*: s=200.220.138.113, d=200.221.2.45->192.168.0.5 [15]

NAT*: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [83]

NAT*: s=200.220.138.113, d=200.221.2.45->192.168.0.5 [16]

NAT*: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [84]



Pronto!!!!

 Aí está, nosso NAT trabalhando. Nem é preciso mostrar o navegar para saber que a página WEB foi aberta pelo usuário.


NAT: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [79]

NAT*: s=200.220.138.113, d=200.221.2.45->192.168.0.5 [13]



Vejam que interessante. A ída do pacote, saindo do PC 192.168.0.5, passando pela nossa interface serial , chegando ao Web Server e depois retornando para o nosso PC.

Monday, August 1, 2011

ACL-Access Control List

Access-lists ou, Listas de Acesso, é um dos tópicos mais importantes que eu exponho aqui e vou dizer o porque. Se seu contato com routers cisco acontece no limite entre sua rede local e a rede de seu provedor, então, assuntos como protocolos de roteamentos, protocolos WAN, podem não ser tão relevantes mas, tenha certesa, Access List é.
   Intrincicamente, ACLs estão relacionadas ao fator de segurança da rede,mas de um modo mais generalizado, ACL é uma forma de modelagem de tráfego que cruza uma interface. Se você for configurar NAT (Network Addess Translation) em um router, você vai precisar de ACL, se você for configurar controle de banda em um router, você irá precisar de ACL e assim por diante.
  A configuração de ACL pode ser relativamente simples se você dominar alguns conceitos e meu papel aqui será tentar explicar e apresentar esses conceitos. Ao final, mostrarei um LAB que fiz em Packet Tracer para tornar as coisas mais palpáveis.
   Existem basicamente dois tipos de ACLs: Standard (Padrão), Extended(Estendida)  sendo que ambas podem ser  Named (Nomeadas).  Verifcando cada tipo nos faz pensar que uma foi evolução da outra.
  ACLs standard são mais simples de implementar,porém, possuem algumas limitações, como por exemplo, bloqueiam apenas baseado no  endereço IP de origem e devem ser colocadas o mais perto do destino do tráfego possível por uma razão simples, elas não olham o IP de destino do pacote, apenas o IP de origem, como já foi dito. Isso ficará mais claro a medida que avançarmos, por hora, apenas guardem essas informações.
   ACLs Extended já são mais elaboradas, ou seja, ao invés de apenas analizarem tráfego até a camada 3, conseguem subir a camada 4 e analizar portas TCP e UDP. Isso lhes conferem uma flexibilidade bem maior. Elas devem ser colocadas o mais próximo possível da origem do tráfego e isso gera economia de banda na rede, uma vez que o pacote não precisa atravessar um segmento de rede, ou atravessar um roteador.
  Ambas as listas Standard e Extended podem ser Named. Na verdade, toda ACL recebe um número ao ser criada e podem conter um parâmetro chamodo Remark que lhe possibilita acrescentar uma descrição do que aquela ACL faz no tráfego, isso sem dúvidas ajuda na organização e troubleshooting da rede,porém, nada se compara as ACLs Named.
  ACLs Nameds possibilita você criar uma ACL do tipo "BLOQUEIA_TRAFEGO_HTTP" ou "PERMITE_TRAFEGO_FTP". Na hora de fazer alterações ou manutenção ficará muito fácil saber o que cada uma representa. Outro grande benefício propiciado pelas ACLs Named é o fato de você poder deletar  linhas na ACL sem precisar refazê-la inteira. Quando você cria uma ACL padrão ou estendida e descobre depois que precisa editá-la, você terá que salvá-la em um editor de texto, editá-la e depois colá-la novamente na runnning-config  do router,ao passo que ACL Named não precisa.
  ACLs Standard podem ser numeradas de 1 a 99 e de 1300 a 1999, enquando que as ACLs Extended recebem a numeração de 100 a 199 e de 2000  a 2699.

Vamos aprofundar um pouco mais nas ACLs Standard e depois faremos o mesmo com as ACLs Extended.
Como já foi dito, ACLs Standard ou Padrão,bloqueiam o tráfego baseado no IP de Origem do pacote não se importando com o IP de destino ou portas TCP e UDP.

Fig 1
  Considerando nosso pacote IP, ele irá olhar o campo 'Endereçamento do Remetente'.
Pois bem, uma vez definido isso, vamos ver a estrutura básica de uma ACL:

 Router(config)# access-list  [Número da ACL {1-99 ou 1300 a 1999}]  [permit | deny | Remark]  [IP de Origem ] [Máscara curinga] [Log]

 Conhecer essa sequência e os parâmetros é fundamental!

1-Router(config)# - ACLs são confiuradas no modo global do roteador

2-Router(config)# access-list  - O comando para estartar uma ACL é access-list

3-Router(config)# access-list  [Número da ACL {1-99 ou 1300 a 1999}] - ACLs Padrão podem ter essa numeração

4-Router(config)# access-list  [Número da ACL {1-99 ou 1300 a 1999}]  [permit | deny | Remark]
Logo após o numero de identificação, virá o que se prentende fazer com ela: permitir, negar. Remak é um artifícil útil para identificar o que a ACL faz, ou seja, mesmo que você decida por Permit ou Deny, você pode acrescentar uma linha Remark para documentar o objetivo da ACL.

5-Router(config)# access-list  [Número da ACL {1-99 ou 1300 a 1999}]  [permit | deny | Remark]  [IP de Origem ]- IP de origem é o IP ao qual se quer permitir ou negar a passagem de pacote. As opções aqui podem ser o IP de um host apenas, uma faixa de hosts ou toda uma rede.

6- Router(config)# access-list  [Número da ACL {1-99 ou 1300 a 1999}]  [permit | deny | Remark]  [IP de Origem ] [Máscara curinga] - A máscara curinga é o artifício que permite controlar uma faixa de IP ou uma rede, podendo usar até para um host apenas,porém, nesse caso, é mais correto usar a palavra host ,como se segue:

Exemplo:

Router(config)# access-list  1  permit  host 192.168.0.1

Essa ACL permite pacotes vindos de 192.168.0.1
Usando o recurso de Máscara Curinga, poderia fazer dessa forma:

Router(config)# access-list  1  permit   192.168.0.1  0.0.0.0.

Como pode ser observado, sai a palavra host e entra Máscara Curinga 0.0.0.0. O zero significa que todos os octetos do endereço IP devem coincidir.

A liberação por faixa de IP seria da seguinte forma:


Router(config)# access-list  1  permit   192.168.0.1  0.0.0.255

 Ou seja, 255 nesse caso,ou ALL-ONES (11111111) em um octeto da Mascara Curinga, significa que não interessa qual número. Ou seja, qualquer valor apos 192.168.0 será permitido ou negado.

Você pode ainda refinar mais sua regra, usando o recurso de blocos da Mascara Curinga. Esse recurso diz que uma Máscara Curinga pode bloquear por blocos de IP que vão de : 1,2,4,8,16,32,64,128,etc. Ou seja, em potência de 2.
   Conclui-se dessa forma, que não é possível bloquear ,por exemplo, 5 hosts apenas. Você pode bloquear 4 hosts ou 8 hosts. Vamos ver como se bloqueia 4 hosts:


Router(config)# access-list  1 denyt  host 192.168.0.1  0.0.0.3

Porque três ?

A regra diz que usa-se o valor do bloco menos 1. Dessa forma, o bloco de 8 ficaria 7 e assim por diante.


 Por último, vamos ver o recurso de LOG


Router(config)# access-list  [Número da ACL {1-99 ou 1300 a 1999}]  [permit | deny | Remark]  [IP de Origem ] [Máscara curinga] [Log]
O recurso de Log ao final da ACL facilita no troubleshooting da rede. Cada vez que um pacote é bloqueado,casa seja uma ACL de bloqueio, ou permitido, caso seja uma ACL para permitir, um LOG será criado. Entretanto, em redes grandes , não é um recurso prático.


Posicionamento da ACL na rede



Fig 2
 Muito bem, falamos de bloquear IPs de origem, falamos em posicionar ACLs perto do destino, mas isso gera uma certa confusão,pelo menos eu tive uma certa dificuldade no início dos meus estudos.
  Para facilitar o entendimento, eu sigo um conselho de Geremy Ciora, ele diz em seus ótimos videos de treinamento : "..be the router", ou seja, seja o roteado. Quer dizer, quando você tiver que aplicar uma ACL em um router, se ponha no lugar do router, imagina que seus braços,e talvez pernas, dependendo de quantas interfaces estamos falando, seja as interfaces. Ou seja, tráfego Inbound, tráfego Outbound, detino, origem, podem ser mais fáceis de serem  compreendidos.
    Quando se diz perto do destino, o destino é você, é seu router, quando se diz origem, origem é o router que lhe enviará o pacote. A idéia do controle de tráfego, colocando-se no lugar do equipamento, é controlar o tráfego que vem de algum lugar em sua direção. Firewalls, por exemplo, inclusive, para quem já conhece IPTABLES pode perceber que existem uma semelhança grande entre suas regras e ACLs, firewalls são configurados para bloquear o tráfego que vem de fora, e não para o tráfego gerado em sua LAN. Não que não seja possível, mas á mais racional  é que se queira bloquear o tráfego que vem em direção a você.
  Olhando dessa forma, a ORIGEM aqui é um router remoto e o DESTINO  seria seu roteador, ou voce, seguindo nossa analogia.
   No caso da Figura 2, podemos ver no diagrama o administrador está em R1, ele quer bloquear o tráfego vindo de R3. Se a idéia é por a ACL o mais próximo possível do destino e o destino é R1, então a ACL foi instalada na serial de R1. Essa ACL , sendo padrão, irá ser do tipo:

Router(config)# access-list 1 deny 192.168.10.0  0.0.0.255 
Router (config)# access-list permit  any

Isso bloqueará toda a rede 192.168.10.X, não importando qual seja seu final,ou seja, se o IP da rede for 192.168.10 será bloqueado. E aqui fica claro do porque uma ACL Padrão não pode ser colocada próximo à Origem do tráfedo. Se você configurar essa ACL na Origem, ou seja, em R3, simplesmente você mata o roteador, ou pelo menos, a interface Fa 0/1 do mesmo.
  A segunda linha :

Router (config)# access-list permit  any


É nova para nós, mas é fácil de compreender, ela está dizendo para permitir todo o restante do tráfego. Isso é necessário devido a uma particularidade que ainda não mencionamos. "Toda ACL possui uma regra no final da mesma que bloqueia todo o tráfego". Ou seja, é implícito, não precisa ser configurada. Imagina que quando você configurou uma ACL, haverá uma linha do tipo no final:

Router(config)# access-list [Número da ACL]  deny any.

Ou seja, caso o pacote chegue a interface do router, seja submetido a todas as regras da ACL presente, e não coincida com nenhuma delas, ele cairá nessa última regra e será descartado ou permitido. O que implica em dizer que, se você configurar sua ACL com deny, você, obrigatoriamente, terá que por uma instrução permit no final, ou todo o tráfego será bloqueado.

 Outra regra importante:
"As regras da ACL são lidas pelo router de cima para baixo, ou seja, se o pacote coincidir com a primeira regra, ele será roteado e não será olhado as demais regras"

 
   Espero que tenha ficado bem claro esses conceitos porque eles são muito importantes para se compreender as ACLs como um todo.
  Vamos aprender como apliar a ACL na interface do roteador e iniciarmos com ACLs Extended.

Para aplicarmos essa ACL, devemos proceder assim:

Router(config)# interface serial 0/0/1
Router(config-if)# ip access-group 1 in

 Pronto, já temos uma ACL funcionando na interface serial 0/0/1 no sentido entrada.


Extended ACLs



Praticamente os mesmo conceitos relacionados as ACLs Standard se aplicam as ACLs Extended, porem , veremos que essa última possui uma capadidade maior de filtragem.
  ACLs Extended   possuem a seguinte sintax:

Router(config)# access-list [Numero da ACL { 100 a 1999 ou de 2000 a 2699}] [permit | deny | Remark] [Protocol {TCP,UDP,ICMP,etc}] [IP de origem ] [Mascara Curinga do IP de origem ] [IP de Destino ] [Madcara curinga do IP de Destino ]

Como podemos ver, agora temos mais opções. Temos o campo protocolo e o campo IP de Destino. O campo protoloco pode ser a porta TCP ou UDP ou pode ser o nome do protocolo como, por exemplo, www,icmp,et,) ou pode ser usar a palavra chave IP que corresponde a todos os protocolos, por razões óbvias, tendo em vista que o IP 'carrega' todos os demais.
  Vamos ver um exmplo para facilitar:

Router(config)# access-list 101 permit tcp any host 192.168.0.1 eq www.
 Router(config)# access-list 101 permit ip any any

Nesse exemplo, estamos permitindo o trafégo de qualquer Origem, any, para o Destino 192.168.0.1 na porta www ou 80.
 Novamente aqui estamos considerando a regra do 'deny any ' no final da ACL, que aqui inclusive seria 'deny any any' , já que em ACL Extended deve ser definido origem e o destino do tráfego.
Sem a linha permit ip any any, apenas o trafégo www iria passar pelo router, bloqueando todo o resto do tráfego.

Essa regra mostra a flexibilidade das ACLs Extended.

O processo de aplicar as ACL Extended é o mesmo nas Standard:
Router(config)# interface Serial 0/0/1
Router(config-if)# ip access-group 101 out

No caso em questão, aplicamos no sentido de saída do tráfego.

 Um aplicação muito útil para ACLs,podendo ser Standard ou Extended, apesar de que se vê mais com Standard, seria para permitir acesso Telnet em um router por apenas um IP ou rede específicos.

Router(config)# access-list 10 permit  host 192.168.0.1
Router(config)#access-list 10 deny any
Router(config)#line vty 0 4
Router(config-line)#password cisco
Router(config-line)# login
Router(config-line)# access-class 10 in

Pronto. Com essa configuração, apenas o host 192.168.0.1 terá acesso pelas linhas vty,ou seja, Telnet do
 router.

 Vamos apresentar um LAB com algumas situações sobre ACLs:



Figura 3
 Meu ojetivo nessa rede é bloquear o acesso ao  Servidor HTTP( 192.168.0.2  )da minha rede para o PC2 (172.16.0.3)e deixar o PC1(172.16.0.2) acessando.

  Vamos usar ACL Extended. Baseado no que vimos vamos colocá-la o mais próximo da Origem do tráfego possível. No nosso caso será a interface Fa 0/0 do Router Branch.
  Agindo dessa forma, evitamos que as tentativas de acesso ao servidor HTTP atravesse toda a rede para acabar sendo bloqueado em HQ.
  Vamos lá:

branch(config)#access-list 100 deny tcp host 172.16.0.3 host 192.168.0.2 eq www

branch(config)#access-list 100 permit ip any any




branch(config)#int fa 0/0
branch(config-if)#ip access-g
branch(config-if)#ip access-group 100 in
branch(config-if)#exit


Testando:

Em PC2:

Figura 4










 



 E aqui nosso PC 1:

Figura 5























Thursday, July 28, 2011

Spanning Tree Protocol

   Spanning Tree, chamaremos apenas de STP, é um protocolo que roda em todos os switches por default, ou seja, está presente em praticamente todas as redes de computadores. Entretando, não é difícil achar pessoas que trabalham com redes e que não conhecem esse protocolo. Isso se dá porque esse protocolo faz seu trabalho de forma transparente e só há  realmente necessidade de conhecê-lo mais a fundo quando estamos lidando com ambientes mais complexos.
  Quando uma rede precisa de redundância entre switches,chamados ambientes de alta disponibilidade,cria-se ambientes em que, a não existência desse protocolo, faria com que a rede parasse em muito pouco tempo.
  Switches são equipamentos que, como dito em post anterior, realiza comutação em camada dois. A função do switch na rede é aprender endereços MAC olhando os endereços MAC de origem e com essas informações, montar a tabela MAC. Um switch cisco pode ter até 132 MACs address atrelado a uma única porta.


  Montada a tabela MAC, toda vez que o switch recebe um quadro em uma porta, ele verifica o MAC address de  destino e consulta sua tabela MAC para saber para qual porta esse quadro deverá ser encaminhado. Atentem para o fato de que o switch verifica o MAC de origem para montar a tabela MAC e depois verifica o MAC de destino para comutar o quadro na porta correta. Isso se chama comutação e é a principal função do switch. É muito comun ver questões de exames sobre esse assunto  por gerar uma certa confusão.
  Porém, se ao consultar a sua Tabela MAC, o endereço de destino não estiver presente, o switch não terá outra alternativa a não ser inundar a rede com broadcast em todas as suas portas, exceto a porta de onde o quadro foi originado. Até ai tudo bem, porém, se esse switch estiver conectado a outros switches de forma a existir um loop entre eles e, considerando que quadros ethernet não possui TTL como pacotes IPs, ou seja, eles circularão enquanto houver caminho e enquanto o switch estiver funcionando, vai acontecer o que chamamos de tempestade de broadcast e a rede irá parar rapidamente.

  Na animação abaixo, poderemos ver de forma clara vários conceitos discutidos nesse post como redundância e a ocorrência da tempestade de broadcast e sua inevitável consequência, crash total da rede.
 Se você não entende o audio, preste atenção apenas na animação, ela falará por si só.



  Muito bem, considerando que nossa topologia possui redundância de caminhos entre os switches, e considerando que nossos switches estão rodando o STP, ao ligarmos os switches eles executarão o STA,Spanning tree Algothm. Esse algoritmo se certificará de que ao final do processo de convergência, você terá uma rede sem loop. Considere que esse processo é automático e dinâmico, ou seja, você não precisará fazer nada para que ele aconteça e não precisará fazer nenhuma monitoração apos seu término.

   Para melhor compreendermos o protocolo, vamos dar uma olhada mais detalhada na unidade de informação básica,chamada BPDU,Bridge Protocol Data Unit. Esse quadro de 64 bytes carrega as informações necessárias para o perfeito funcionamento do protocolo.


Vamos detalhar os campos do quadro:

Prioridade da Bridge:
Esse campo possui um valor padão que é 32768 (IEEE),porém, pode assumir qualquer valor entre 1 a 65536. Se você setar manualmente o valor em um switch para 1, ele se tornará o switch raiz,considerando que você altere apenas de um switch.

ID do sistema:

Essa informação foi acrescentada a BPDU. No projeto original do STP, não havia VLANs em switches, dessa forma, apenas uma instancia do STP era executada. Após o desenvolvimento das VLANs como forma de segmentação de domínios de broadcast, cada VLAN deve executar uma instancia diferente do protocolo STP e o campo ID do sistema, carrega a informação do ID da VLAN ao qual está relacionado.
  Quando o valor de prioridade é usado, ele altera o valor de prioridade da bridge,aquele cujo padrão é 32768, para valores múltiplos de 4096. Se você tentar alterar o valor de prioridade de um switch de sua rede, eu fiz esse teste uma vez , e colocar um valor que não seja múltiplo de 4096, ele irá recusar o valor e ainda vai lhe alertar sobre essa regra.
  A Cisco possui o PVST, Per VLAN Spanning tree, que poderemos ver em outra oportunidade.

MAC address:
   Nosso último campo é o MAC address. Caso o switch possua o mesmo valor de prioridade e, acredite, ele terá, afinal todos saem de fábrica com o valor 32768, o que acaba definindo qual switch será o root da rede é o endereço MAC address. O menor MAC address se tornará o switch root ou raiz.

  Abaixo, capturei três quadros com o tcpdump:

tcpdump: listening on eth2, link-type EN10MB (Ethernet), capture size 96 bytes
000000 a4:ba:db:28:8c:e3 (oui Unknown) > 01:80:c2:00:00:00 (oui Unknown), 802.3, length 60: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.a6:ba:db:28:8c:e3.8000, length 43
message-age 0.00s, max-age 8.00s, hello-time 2.00s, forwarding-delay 5.00s
root-id 8000.a6:ba:db:28:8c:e3, root-pathcost 0
0x0000: 4242 0300 0000 0000 8000 a6ba db28 8ce3 BB...........(..
0x0010: 0000 0000 8000 a6ba db28 8ce3 8000 0000 .........(......
0x0020: 0800 0200 0500 0000 0000 0000 0000 ..............
2. 000156 a4:ba:db:28:8c:e3 (oui Unknown) > 01:80:c2:00:00:00 (oui Unknown), 802.3, length 60: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.a6:ba:db:28:8c:e3.8000, length 43
message-age 0.00s, max-age 8.00s, hello-time 2.00s, forwarding-delay 5.00s
root-id 8000.a6:ba:db:28:8c:e3, root-pathcost 0
0x0000: 4242 0300 0000 0000 8000 a6ba db28 8ce3 BB...........(..
0x0010: 0000 0000 8000 a6ba db28 8ce3 8000 0000 .........(......
0x0020: 0800 0200 0500 0000 0000 0000 0000 ..............
2. 000154 a4:ba:db:28:8c:e3 (oui Unknown) > 01:80:c2:00:00:00 (oui Unknown), 802.3, length 60: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.a6:ba:db:28:8c:e3.8000, length 43
message-age 0.00s, max-age 8.00s, hello-time 2.00s, forwarding-delay 5.00s
root-id 8000.a6:ba:db:28:8c:e3, root-pathcost 0
0x0000: 4242 0300 0000 0000 8000 a6ba db28 8ce3 BB...........(..
0x0010: 0000 0000 8000 a6ba db28 8ce3 8000 0000 .........(......
0x0020: 0800 0200 0500 0000 0000 0000 0000 ..............



  Nesses pacotes, ou quadros  capturados, temos várias informações que, quanto maior seu conhecimento em redes e, principalmente, de STP, mais relevantes serão. Por hora, vamos considerar as seguites:

1-root-id 8000.a6:ba:db:28:8c:e3
2-STP 802.1d
3-max-age 8.00s
4-hello-time 2.00s
5-forwarding-delay 5.00s


1- Root-id. É a identificação da Root bridge
2- 802.1d e a designação IEEE para o STP
3- Tempo máximo em que uma porta do switch salva as informação do BPDU de configuração. Pode ser de 6 a 20 em switches Cisco, no nosso caso temos o valor 8s.
4- Esse tempo é relacionado com o intervalo em  que são enviadas as BPDUs, ou seja, a cada 2 segundos(pode ser de 1 a 10 em switches Cisco) BPDUs são enviadas às portas que participam do domínio de broadcast afim de manter a consistência da rede.
5- É o tempo gasto para a rede convergir, esse tempo varia de 4 a 30 segundos por estados, como será visto a frente. O valor de 5 segundos aqui, pode indicar a ocorrência de Rapid Spanning tree, uma variante do STP que veremos em outra ocasião.
 OBS: O quadros acimas não são de um switch Cisco.

  Até aqui, já sabemos que o switch com o BID mais baixo se tornará o root ou raiz de nosso domínio de broadcast. Porém, o processo de convergência desse protocolo não para por aqui. Ele ainda mapeará todos os links da rede afim de identificar aqueles que forem redundantes e realizará bloqueios em pelo menos uma porta.
  Vamos ver como isso é feito.

  O STP usa a seguinte nomenclatura para as portas: Designadas, Portas raiz e Não designadas.
Portas Designadas são as portas pertencentes ao próprio switch raiz e ao final da convergência da rede, todas estarão no estado Forwarding ou de encaminhamento.
Portas raizes são as portas prensentes nos switches não-raiz e que possuem o menor custo para o switch raiz. Isso costuma deixar um pouco confuso de forma que uma imagem pode ajudar:


Nessa figura podemos ver muito bem definido o switch raiz (S1), os switches não-raiz (S2 e S3), as portas designadas (Fa0/1 e Fa0/2 do S3) ,as porta raizes (Fa 0/1 S2 e Fa 0/1 de S3) e as port não-designada (Fa 0/2 de S3), que foi, inclusive, bloqueada pelo protocolo.
Vamos entender como se chegou a essa configuração.
Bem, cada conexão de um swtich com outro é identificado como link e recebe um valor:

-10 Mbps valor=100
-100 Mbps valor=19
-1000 Mbps valor = 4
-10000 Mbps valor=2
cada valor desse será chamado de Cost ou custo. O custo mais comun será o 19.
Para eleger uma porta raiz em um switch não raiz, o STP levará em consideração o menor custo ao switch raiz. Caso os custos sejam os mesmo, isso será muito comun, a porta com menor valor será a porta raiz.
Caso a porta Fa 0/1 e Fa 0/2 de um switch esteja conectadas ao switch raiz com o mesmo custo, a porta Fa 0/2 será bloqueada e a porta Fa 0/1 será eleita a porta Raiz para esse switch.

  Portas bloqueadas pelo STP continuam recebendo BPDUs, essa seria a grande difereça entre o bloqueio feito pelo protocolo e um commando shutdown dado pelo admin. Caso aja alguma mudança na topologia, a porta antes bloqueadas pode passar para o estado de encaminhamento assim que o STA recomputar a topologia da rede.
Existem 4 estados para as portas durante esse processo de convergencia:

Blocking,Listening,Learning e Forwarding
Bloqueado, Ouvindo, Aprendendo e encaminhando.
Existe ainda um estado Disable (Desabilitado) que a porta pode assumir,porém, mediante o comando shutdown e não através do protocolo.
  Quando um switch é ligado, todas as suas portas estão no estado Blocking. Detalhe, assim que o switch é ligado, ele envia BPDUs dizendo "Eu sou o root da rede". Ele vai enviar essas BPDUs até que algum outro switch com o BID mais baixo envie uma BPDUs para ele, nesse caso, ele altera a mensagem para "Switch tal é o root da rede".
  Após o estado de Blocking, o estado da porta muda para Listening, a porta irá escutar o tráfego mas não encaminha informação de usuário. Em seguida ela mudará seu estado para Learning, nesse estágio ela comecará a aprender endereços MACs e montar sua tablema MAC mas ainda não transmite dados de usuário. Quando ela atingir o estado de Forwarding a porta estará pronta para receber e enviar dados de usuários. Isso custa ao switch, e a rede, nada menos que 32 segundos.
  Dessa forma, já podemos concluir que, contrário do que dissemos, o STP não é tão transparente assim. Considerando que BPDUs é trafégo secundário e que consome largura de banda, e que a cada vez que o protocol precisa recalcular a convergencia da rede ele leva 32 segundos, em um ambiente com muitos switch, podemos ter problemas de performance com esse protocolo.
  Diante desse situação, foram feito melhoramentos como o RPST, PVST,etc.
Em uma próxima oportunidade poderemos dedicar um post a essas variações.

Sunday, July 24, 2011

IPV6 LAB

  Um dos assuntos mais interessantes no momento sobre redes na minha opnião é IPv6. Acho que um profissional da área de TI que ainda não conhece esse novo protocolo está desatualizado.Vou falar um pouco do protocolo IPv6 e no final apresentar um LAB bastante simples de configuração desse protocolo entre dois router, formando uma rede bastante simples. Bem, acho que para qualquer pessoa da área de TI, não é novidade que os endereços IPv4 estão na fase final de esgotamento e que não resta mais outra alternativa senão iniciar com IPv6. Apesar das empresas não estarem se preocupando com essa migração, os provedores de internet mundo a fora estão numa corrida desesperada para suportar essa nova tecnologia.

  Apenas para nos situarmos no tempo, vou falar um pouco sobre o IPv4.
O IPv4 foi desenvolvido por volta de 1980, ou seja,apesar do assunto do momento em redes ser a adoção no protocolo IPv6, é preciso reconhecer que o protocolo IPv4 foi extremamente bem sucedido.
IPv4 usa um esquema de endereçamento de 32 bits, hierarquizados inicialmente em quatro class rotuladas como classes A,B,C e D. Com o esgotamento dos endereços IPv4, vários artifícios foram surgindo na tentativa de evitar um crash na rede mundial de computadores devido a falta de endereços. Dentre as mais conhecidas estão : VLSM, que quebra o paradigma de divisão por classes A,B,C e D. Agora o fator mandatório para a identificação de endereços seria a mascara de subrede. Também podemos citar CIDR, NAT, DHCP, como alternativas que extenderam a existencia desse protocolo por longos 30 anos.
  O protocolo IPv6 começou a ser desenvolvido por volta de 2001 e tinha a proposta de resolver as limitações impostas pelo seu antecessor IPv4 não só no que se refere a quantidade de endereços mas em vários outros fatores de grande importancia.
   O IPv6 apresenta endereçamento de 128 bits o que possibilita uma quantia absurda de endereços. Possibilita,aproximadamente, 665.570.793.348.866.943.898.599 endereços por metro quadrado da superfície do planeta Terra!

 O Cabeçalho:

 Mas suas vantagens não estão apenas na quantidade de endereços. IPv6 está totalmente em sitonia com as novas exigências das redes atuais e dentre elas vamos citar:

-Endereçamento IP aprimorado
-Acessibilidade e flexibilidade globais
-Agregação
-Multihoming
-Configuração automática
-Plug-and-play
-Fim-a-fim sem NAT
-Renumeração

  Mobilidade e segurança:
-IP móvel compatível com a RFC
-IPsec obrigatório (ou nativo) para IPv6

  Cabeçalho simples:
-Eficiência de roteamento
-Escalabilidade de desempenho e taxa de encaminhamento
-Nenhum broadcast
-Nenhuma soma de verificação
-Cabeçalhos de extensão
-Rótulos de fluxo


  Vamos analizar inicialmente as mudanças que houveram nos cabeçalhos para podemos compreender as alterações ocorridas:


De acordo com a figura, os campos amarelo foram mantidos no IPv6, são eles:
-Campo Versão
-Campo Endereço de origem
-Campo Endereço de destino

Os campos em cinza presentes no cabeçalho IPv4 foram eliminados

Os campos em azul claro tiveram nomes e posições alterados.

  Foi acrescentado um campo novo no IPv6 chamado Rótulo de fluxo.

  O protocolo IPv6 irá possibilitar um melhor aproveitamento da rede. Não irá existir mais fragmentação nos roteadores. IPv6 possui um recurso chamado de PathMTU em que pacotes são enviados afim de estabelecer a menor MTU (Maximun Transmission Unit ou Unidade Máxima de transmissão). Parece estranho mas é isso mesmo, a menor Unidade Máxima de Transmissão possível para a rede em questão.        Desse forma, os hosts que estão trocando informações ficam responsáveis pela fragmentação e não mais os roteadores ao longo da rede. Isso representa um ganho de tempo e performance dos routers.
Outra novidade são os cabeçalhos de extensão. Esses cabeçalhos ficam localizados entre o cabeçalho base e o cabeçalho da camada de transporte e dará suporte à opções adicionais.

Endereçamento:

Talvez o que confere a maior complexidade a esse novo protocolo seja seu sistema de endereçamento, cujo formato veremos abaixo.

Formato:
- x:x:x:x:x:x:x:x, onde x é um campo hexadecimal de 16 bits.
Considera-se que o tópico mais provável de aparecer no exame CCNA seja a respeito do formato do endereço IPv6. Desta forma, vamos dar bastante atenção aos conceitos que o cercam.
Algumas notações importantes desse novo protocolo são a possibilidade de suprimir zeros a esquerda e de resumir sequência de zeros por "::" , porém apenas uma vez no mesmo endereço, como segue:

Exemplo:

- 2031:0000:130F:0000:0000:09C0:876A:130B

Possíveis notações:

2031:0:130f::9c0:876a:130b (Suprimindo zeros à esquerda e representando sequências de zeros contíguas por "::").

O endereço abaixo está incorreto:

2031::130f::9c0:876a:130b

  Não se pode suprimir zeros com :: duas vezes em um mesmo endereço, como foi dito acima.




Nessa figura podemos ver como está hierarquizado o novo protocolo.

Endereços Unicast Globais

Esses endereços seriam equivalentes aos "IPs Válidos" do IPv4. Tem o formato (2000::/3) e são distribuídos pela IANA aos cinco resgistros atuais (ARIN, RIPE NCC, APNIC, LACNIC e AfriNIC). No caso do Brasil, estamos sob o registro LACNIC.

  Endereços reservados

1/256 dos endereços IPv6 ficarão reservados.

  Endereços privados

São iguais aos IPs referentes a RFC 1918 no IPv4. Começam com "FE" e então de "C" até "F" para o terceiro dígito hexadecimal.

  Endereço de loopback

 Também com a mesma função no IPv4 onde é usado 127.0.0.1, agora será usado no formato ::1.

 Endereço não especificado

  O IPv6 trás de volta um conceito que existia nas redes IPX onde era possível um hosts obter um endereço IP sem que haja um serviço de DHCP presente. O pacote gerado terá como IP de origem o endereço 0:0:0:0:0:0:0:0 ou :: apenas.

O endereço IPv6 terá uma porção de host e essa deverá ter no mínimo 64 bits, isso seria equivalente ao MAC address de 48 bits mais um campo de 16 bits do tipo FFFE. Em situações em que o host obterá seu endereço sem a ajuda de serviço DHCP, o MAC address do host será usado para diferenciá-lo dos demais.

O IPv6 tambem poderá ser atribuído por DHCP chamodo DHCPv6.


  Estratégias de transição do IPv6

Não haverá um dia "D" para que ocorra uma grande "virada" na rede mundial de computadores afim de migrar de um protocolo para outro. A mudança já está em marcha faz algum tempo. Para que isso seja possível, é preciso que os dois protocolos interoperem por algum tempo.
Existem algumas formas de se conseguir isso,são elas:

-Pilha dupla
-Túnel manual
-Túnel 6to4
-Túnel ISATAP
-Túnel Teredo

  Não vou entrar em detalhes em cada um deles mas recomento a todos que o façam. A idéia desse post é chamar a atenção para essa mudança importante que nós profissionais de TI estamos vivenciando e devemos estar a par dela. Recomendo a todos que acessem o site : http://curso.ipv6.br/ e façam o curso online. O material é muito didático e bem facil de entender.

Abaixo vou apresentar um LAB no Packet Tracer bastante simples. Vale lembrar que os LABs estão disponíveis para download na parte de baixo do blog.

Router A:


Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#interface serial 0/2/0
Router(config-if)#no sh
Router(config-if)#clock rate 4000000
Router(config-if)#ipv6 address 2001:A10:1:10::1/64
Router(config-if)#end
Router#





Router B:

Router>
Router>en
Router#configure t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#interface serial 0/2/0
Router(config-if)#no sh
Router(config-if)#ipv6 address 2001:A10:1:10::2/64
Router(config-if)#end
Router#

Router#
Router#ping ipv6 2001:a10:1:10::1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:a10:1:10::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 31/34/47 ms


É isso ai, bem simples. Estou preparando outros materiais sobre IPv6 com LABs mais interessantes.

Thursday, July 21, 2011

Conhecendo um switch Cisco 2950

  Vamos aprender mais sobre um Switch, em especial o 2950 da Cisco, modelo cobrado no CCNA.
Switches são por default equipamentos de camada 2 que comutam tráfego baseado no endereço de hardware (MAC address).
Vamos começar conhecendo-os fisicamente.

Nessa imagem podemos ver que um Switch Cisco possui vários LEDs,porém, apenas um botão. O botão de MODE é como uma tecla Shift que tem como função mostrar diferentes informações através dos LEDs do Switch de forma sequencial, ou seja, a cada vez que o botão MODE é pressionado uma informação diferente será apresentada.
Para compreender essas informações fornecidas, temos que conhecer as funções de cada LED.
O primeiro deles é o SYS. Esse LED na cor verde indica que o Switch está operacional e na cor âmbar denuncia algum problema .
O outro LED imediatamente ao lado de SYS é o RPS (Redundant Power Supply), ou seja, fonte de alimentação redundante. Caso exista uma segunda fonte de alimentação esse LED estará ativo.
Abaixo temos 4 LEDs: STAT,UTIL,DUPLX e PEED.
STAT: Status das portas
Pode apresentar três status distintos. Verde indica que há um dispositivo conectado a porta, verde piscando indica que está havendo tráfego sobre a porta e âmbar indica que houve algum problema na comunicação. Pode ser uma placa de rede defeituosa, cabo ou conectores defeituosos ou um problema no próprio Switch.

UTIL: Largura de banda em uso.

O switch pode indicar através desse LED como está sua utilização. Todas as portas 10/100 indica até 25%, até a primeira porta Giga indica entre 25% a 49% e todas as portas acima de 50%.


DUPLX: Apresenta informação sobre como as portas trocam informações: Full-Duplex ou Half-Duplex. No caso do LED estiver verde significa que a porta opera em Full-Duplex, modo mais comun nos dias atuais. Caso o LED esteja apagado, indica que a porta está operando em Half-Duplex. Lembrando que Full-Duplex significa troca de informações nos dois sentidos ao mesmo tempo. O padrão FastEthernet utiliza dois pares de fios par traçado, sendo que dois fios são RX+ e RX- e dois fios são TX+ e TX- enquanto que Half-Duplex a informação e enviada em um sentido por vez, padão usado nas redes Ethernet.

SPEED: Banda por porta.

Portas apagada estão operando a 10 Mbps, portas em verde estão a 100 Mbps e portas em verde piscando estão a 1000 Mpbs.

Se uma imagem vale mais que mil palavras, um vídeo então fica melhor ainda.


  Os Switches apresentam portas FastEthernet, para conexão de cabos de redes e portas especiais de alta velocidade onde podem serem espetados cabos ou fibra óptica diretamente. Alguns modelos da linha 2900 são:
-2950G-12 (12 portas FastEthernet e dois Slots GBIC (Giga Bit Interface Converter)
Slots GBIC podem vir sem nada conectado, possibilitando a adção dos módulos posteriormente. São úteis para uplinks.

-2950G-24 (24 portas mais dois slots GBIC)
-2950G-48 (48 portas mas dois slots GBIC)
-2950G-48DC(Semelhante ao anterior porém com uma caracteríscita importante para redes com voip, a alimentação presentes nas portas podem serem usadas por aparelhos telefonicos IPs)
Existem ainda outros modelos da serie.

  O Switch apresenta, assim como routers, uma porta console que pode ser acessada através de um cabo rollover na configuração :
-9600 bps
-8 Data Bits
-Parity None
-Stop Bits 1
-Flow control None

  Realizada essas configurações em um programa emulador de terminal tal como o Hyperterminal do Windows, é possível acessar as configurações do Switch. O Switch roda o IOS muito semelhando aos routers e após ser configurado via console com um endereço IP e um gateway,pode ser acessado via rede.

Vamos fazer algumas configurações básicas em nosso Switch:

Vamos configurar uma senha:


Switch>
Switch#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#enable secret cisco
Switch(config)#exit
Switch#


Vamos dar um nome a ele:

Switch#
Switch#config t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#
Switch(config)#hostname 2950
2950(config)#



Configurar senhas para acesso via console e via Rede:

Switch(config)#line console 0
Switch(config-line)#password cisco
Switch(config-line)#login
Switch(config-line)#exit

Switch(config)#line vty 0 15
Switch(config-line)#password cisco
Switch(config-line)#login
Switch(config-line)#exit

Diferente dos routers que possuem 5 linhas VTY, Switch possuem 16.

Configurar um endereço IP para acesso pela rede via Telnet.

2950#
2950#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
2950(config)#interface vlan 1
2950(config-if)#ip add 192.168.1.1 255.255.255.0
2950(config-if)#ip default-gateway 192.168.1.254
2950(config)#

Vamos verificar nossas configurações feitas:

2950#sh run
Building configuration...

Current configuration : 1169 bytes
!
version 12.1
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname 2950


O nome que configuramos
!
enable secret 5 $1$mERr$hx5rVt7rPNoS4wqbXKX7m0

Nossa senha, ou seja, tudo isso significa 'cisco'

!


!
!
interface FastEthernet0/1
!
interface FastEthernet0/2
!
interface FastEthernet0/3
!
interface FastEthernet0/4
!
interface FastEthernet0/5
!
interface FastEthernet0/6
!
interface FastEthernet0/7
!
interface FastEthernet0/8
!
interface FastEthernet0/9
!
interface FastEthernet0/10
!
interface FastEthernet0/11
!
interface FastEthernet0/12
!
interface FastEthernet0/13
!
interface FastEthernet0/14
!
interface FastEthernet0/15
!
interface FastEthernet0/16
!
interface FastEthernet0/17
!
interface FastEthernet0/18
!
interface FastEthernet0/19
!
interface FastEthernet0/20
!
interface FastEthernet0/21
!
interface FastEthernet0/22
!
interface FastEthernet0/23
!
interface FastEthernet0/24
!
interface GigabitEthernet1/1
!
interface GigabitEthernet1/2
!
Switch de 24 portas FastEthernet e duas portas Giga


interface Vlan1
ip address 192.168.1.1 255.255.255.0
shutdown

O IP do Switch. Podemos ver que o IP de gerenciamento do Swtich é na verdade o IP da VLAN 1, VLAN de gerencia.

!
ip default-gateway 192.168.1.254
!
!
line con 0
password cisco
login
Senha para acesso via console


!
line vty 0 4
password cisco
login
line vty 5 15
password cisco
login

Senha para acesso via Telnet

!
!
end

Apresentamos o básico de um switch. Numa outra oportunidade vamos aprofundar nas configurações.

URA no Asterisk

Nos últimos anos fiz algumas implantações de URA em PABX proprietários e elas são sempre baseadas em hardware, as vezes internos outras externos mas, sempre sobre um hardware.
Uma das limitações dessas URAs era trabalhar com sub-menus, coisa que Asterisk faz ridiculamente facil. Vamos ao cógico:

[URA]


exten => s,1,Answer
exten => s,2,NoOp(Ligação entrou na URA)

Ligação chegou na URA e foi atendida.

exten => s,3,Background(arquivo de son 1,m)

A função background irá executar o arquivo de son. Esse arquivo pode ser gravado usando o proprio Asterisk com um context simples de gravação. Ou pode ser gravado por uma empresa do ramo com toda qualidade que elas oferecem.

exten => s,4,WaitExten(6)
Faz com que o Asterisk aguade um tempo de 6 segundos.

exten => 1,1,NoOp(Usuario digitou 1)
exten => 1,2,Background(arquivo de son 2,m)

Aqui temos um exemplo de sub-menu. Ou seja, digitando 1, o usuário será enviado para um segundo audio.
Exemplo: Disque 1 para administração.
Dentro de administração: disque 1 para financeito 2 RH , etc


exten => 2,1,NoOp(Usuario digitou 2)
exten => 2,2,Set(CHANNEL(language)=pt_BR)
exten => 2,3,Queue(queue,Tt)


Se discar 2 a URA enviará para uma fila, essa fila deve ser definida em queue.conf obviamente.




exten => t,1,NoOp
exten => t,2,Dial(SIP/ramal,60,Tt)
exten => t,3,Hangup


Essas últimas linhas são úteis porque, caso a pessoa não disque nada ou disque alguma coisa inexistente, o ramal t irá fazer o tratamento dessa chamada.

E assim concluímos a configuração da URA. Basta acrescentá-la ao extensions.conf em um context qualquer e pronto.

Tuesday, July 19, 2011

Ligação por senha no Asterisk

Umas das solicitações que já recebi de clientes era poder controlar a saida pela rota com as operadoras através de senhas, sendo definido duas senhas para cada usuário: profissional e pessoal.
Existem várias formas de se fazer isso, formas mais e menos elaboradas. Eu vou mostrar aqui uma forma bastante simples usando AstDB.
Esse tipo de funcionalidade dá apenas uma idéia do poder que Asterisk possui com seu extensions.conf. Basicamente, toda a configuração para que funcione essa funcionalidade é feita nesse arquivo.
Para quem já trabalhou com PABX proprietário, especificamente, Leucotron, essa funcionalidade é equivalente ao Sentinela, com a diferença de não custar uma pequena fortuna, como aliais e quase tudo relacionado a PABX proprietário:

Vamos ao que interessa:

Em nosso extensions.conf, vamos definir um context para que o usuário possa definir uma senha, sem precisar da intervenção do Administrador.

Ficaria assim nosso context, cada linha segue de uma explicação. A exigencia seria que o usuário discasse uma senha seguido de seu ramal :

[senha]

exten => _*55XXXXXXXX,1,NoCDR()
Para nao gerar bilhetes

exten => _*55XXXXXXXX,2,Set(senha=${DB(pass/${EXTEN:3:4})});
Associa o valor 'senha' a familia pass e chave 'ramal'

exten => _*55XXXXXXXX,3,GoToIf($["${senha}" = ""]?5:4)
Verifica se o valor da'senha' nao seja vazio,caso esteja, aplica hangup

exten => _*55XXXXXXXX,4,Hangup
Hangup


exten => _*55XXXXXXXX,5,Set(DB(pass/${EXTEN:3:4})=${EXTEN:7:11})
Associa à 'senha' o valor discado em XXXX,entre o 4ª e 7ª digitos, eliminando o codigo *55 e associa os ultimos 4 digitos ao valor ramal

exten => _*55XXXXXXXX,6,Wait(2)
Aguarda 2 segundos

exten => _*55XXXXXXXX,7,Playback(beep) ;##
Toca um bip

exten => _*55XXXXXXXX,8,Playback(beep)
Toca um bip

exten =&g t; _*55XXXXXXXX,9,Playback(beep)
Toca um bip


exten => _*55XXXXXXXX,10,Hangup
;## Hangup


OK. Com isso já podemos cadastrar as senhas que ficarão armazenadas no AstDB.

Vamos agora definir um context para usar a senha nas discagem de números externos:

O nome do context é irrelevante,pode ser o que você quiser.

exten => _*56XXXX,1,Noop

;não faz nada

exten => _*56XXXX,2,Set(CHANNEL(language)=pt_BR)
Seta o Channel com pt_BR

exten => _*56XXXX,3,Set(var=${DB(pass/${EXTEN:3})})
Associa o valor discado a uma variável que estou chamando de var.

É preciso entender a dinâmica do AstDB para poder compreender mais facilmente o que ocorre nessas linhas. AstDB trabalha com a estrutura (family/key)=value
Em nosso caso, var está sendo associado a estrutura (family/key), ou seja, ele vai representar nossa senha.


exten => _*56XXXX,4,Set(cadp=${DB_EXISTS(cadepwd/${EXTEN:3})})
; Aqui usamos um recurso do AstDB em que um valor é testado para verificar sua existencia, caso a senha digitada corresponda a um valor previamente guardado no AstDB, iremos para o próximo passo.

exten => _*56XXXX,5,GoToIf($["${cadp}" = "1"]?6:7)

DB_EXISTS retorna 1 se verdadeiro e 0 se falso. Ou seja, se verdadeiro, se a senha corresponde a um valor previamente armazenado, iremos para a prioridade 6, se não, iremos para prioridade 7.


exten => _*56XXXX,6,DISA(no-password,Tarifador)

Na prioridade 6 temos a função DISA, que aqui não fará nada a mais que disponibilizar tom de discagem para aqueles cuja a senha foi aceita.

exten => _*56XXXX,7,Playback(no-rights)
Caso a senha discada não tenha sido aceita e o usuário foi enviado a prioridade 7, ele ouvirá a mensagem "Voce não tem privilegio para acesso a rota sainte".

exten => _*56XXXX,8,Hangup


É isso ai, implementação muito simples, alguns dizem até que AstDB é gambiarra, mas funciona e para quem ainda não está habituado com MySQL, é uma boa opção.