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.

OSPF sobre Frame Relay (ERRATA)

Esse post ficou longo porque estamos falando de duas das mais importantes tecnologias de redes existentes. Como trato aqui da relação entre ambas,tive que apresentar conceitos que são inerentes a cada uma para que possamos compreender a relação entre elas. Considero um bom material de estudo.



Frame-relay e OSPF são duas tecnologias fantásticas. Frame Relay como tecnologia Wan e OSPF como protocolo de roteamento.
  Confesso que já perdi horas tentando montar LABs com OSPF sobre Frame Relay sem sucesso porque desconhecia os princícpios dessas duas tecnologias. Entretando, conhecendo esses conceitos, é bastante fácil fazê-las interoperar.
Quais seriam esses conceitos? Bem, Frame Relay é uma tecnologia NBMA. O que isso significa isso ? Non Broadcast Multi Access.
    Existem várias tecnologias de redes que são Multi Access, entre elas, podemos citar, por exemplo ,redes Ethernet,porém, Ethernet é BMA, ou seja, Broadcast Multi Access. No caso de Frame Relay, broadcast não são transmitidos, o que cria um problema para protocolos que dependem do broadcast para funcionar, como é o caso de OSPF, que a rigor, não depende de broadcast mas sim, de Multicast, porém, ambos, possuem a mesma natureza .
   Em redes Multi Acesso, OSPF se organiza de forma que haverá um router chamado Designated Router(Roteador Designado)  e um backup desse, chamado, Backup Designated Router(Roteador Designado de Backup).  O porque disso á bastante fácil de entender. OSPF precisa formar adjacencias com roteadores vizinhos e faz isso usando um protocolo chamado Hello. Esse protocolo faz com que, uma vez ativado o processo OSPF em um router, a interface que fará parte da rede OSPF, transmitirá pacotes chamados Hello de 10 em 10 segundos(Isso mesmo, protocolo Hello e pacotes Hello) para redes Multi Acesso. Para outros tipos de redes esse tempo varia.
   Com esses pacotes, objetiva-se criar adjacencias. Pois bem, temos que fazer a seguinte equação para sabermos quantas adjacências serão formadas: A=n(n-1)/2 , onde A=Adjacências, n = Numero de routers que formarão adjacências.
  Então, se tivermos 3 routers,teremos  3(3-1)/2 = 3 , mas se tivermos 6 routers, 6(6-1)/2 =15. Ou seja, nosso número de routers duplicou e o números de adjacencias triplicou.
Como cada router formará adjacencias com  todos os outros routers, ficaria algo impossível de gerenciar, alem de consumir muita banda  com troca de informações secundárias.
 Os Designated Router vieram para resolver esse problema. Dessa forma, os routers fazem adjacências apenas com o DR e BDR, enviando Hello para o endereço 224.0.0.6, o DR por sua vez, envia pacotes para o endereço multicast 224.0.0.5 que, em uma rede OSPF significa All-routers.
  Bem, uma vez conhecendo esses conceitos básicos sobre ambas as tecnologias, vamos a parte prática:


Muitos LABs mostrados na Net, são feitos com nuven Frame Relay, presente no Packet Tracer, porém, vou usar uma configuração com Router chamada Back-to-Back . Existem, porém algumas nuâncias que mostrarei no decorrer das configurações:

Configurando Router 1:

Router#
Router#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#interface fastethernet 0/0
Router(config-if)#ip add 192.168.1.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#



Configurando Router 0:


Router#
Router#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#interface fastethernet 0/0
Router(config-if)#ip add 192.168.2.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#



Configurado nossa interface Ethernet.
Vamos agora para a interface que realmente nos interessa que é a interface serial.
Teremos conceitos realmente importantes aqui, conceitos que fazem a  diferença na hora de compreender uma arquitetura de rede Frame-Relay.

 Como já foi dito acima,o  normal de um LAB Frame-Relay com Packet Tracer é usar a nuvem Frame-Relay, isso aproxima mais o LAB da realidade ,porém, o uso de roteadores como estou fazendo, nos ajuda a entender melhor os conceitos por trás dessa tecnologia, uma vez que , a nuvem Frame-Relay facilita muito o trabalho.
  Outra opção, serial usar o comando "frame relay switch" no router, porém, esse comando não existe no nosso simulador.

  Vamos subir as interfaces seriais :

Configurando Router 1:

Router>
Router>en
Router#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#interface serial 2/0
Router(config-if)#no shutdown
Router(config-if)#encapsulation frame-relay
Router(config-if)#


Configurando Router 0 (DCE):

Router>
Router>en
Router#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#interface serial 2/0
Router(config-if)#clock rate 4000000
Router(config-if)#encapsulation frame-relay
Router(config-if)#


Interfaces configuradas, vamos ver se alinharam:

Router 0:
Router#
Router#show interface serial 2/0
Serial2/0 is up, line protocol is down (disabled)

Router 1:
Router#
Router#show interface serial 2/0
Serial2/0 is up, line protocol is down (disabled)







Como podemos ver, não houve alinhamento no link . Vamos entender o que ocorreu.
Quando não usamos Nuvem Frame-Relay ou um router com  o comando "frame relay switch", LMI (Local Managment Interface), não se aplica. LMI é responsável por gerenciar a troca de sinalização entre um dispositivo DCE e um Switch Frame-Relay. Existem três tipos diferentes de LMI a saber : Cisco, ANSI e Q933A.
  Como não usaremos LMI, vamos desabilitar em ambos os routers com o comando "no keepalive":

Configurando Router 0 (DCE):

Router#
Router#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#interface serial 2/0
Router(config-if)#no keepalive


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

 Configurando Router 1:


Router>
Router>en
Router#
Router#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#interface serial 2/0
Router(config-if)#no keepalive

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


Verificando novamente:

Router 0:
outer#show interfaces serial 2/0
Serial2/0 is up, line protocol is up (connected)

Router 1:
Router#show interface serial 2/0
Serial2/0 is up, line protocol is up (connected)


Temos o link alinhado.

Camada 1 e 2 ok, vamos para camada 3 e configurar endereços IPs em ambas as interfaces seriais.

Router 0:

Router>en
Router#
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#interface serial 2/0
Router(config-if)#
Router(config-if)#ip address 10.1.1.2 255.255.255.252
 


*** Muito importante

O mapeamento camada 2 - camada 3, precisa que o endereço de camada 2,DLCI, seja o mesmo para as duas pontas.

Router(config-if)#frame-relay map ip 10.1.1.1 16

Router 1:

Router>
Router>en
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#interface serial 2/0
Router(config-if)#ip address 10.1.1.1 255.255.255.0
Router(config-if)#frame-relay map ip 10.1.1.2 16


Ok. Vamos definir então nosso protocolo de roteamento OSPF

Router 0:

Router(config)#
Router(config)#router ospf 1
Router(config-router)#network 10.1.1.0 0.0.0.3 area 0
Router(config-router)#net 192.168.1.0 0.0.0.255 area 0
Router(config-router)#net 192.168.2.0 0.0.0.255 area 0
 

***Muito importante , é preciso configurar o comando  ip ospf network point-to-point a nível de interface serial para que funcione.

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

Router 1:

Router(config)#
Router(config)#router ospf 2
Router(config-router)#network 10.1.1.0 0.0.0.3 area 0
Router(config-router)#net 192.168.1.0 0.0.0.255 area 0
Router(config-router)#net 192.168.2.0 0.0.0.255 area 0
Router(config-if)# ip ospd  network  pont-to-point


Informações importantes:
Podemos ver que o processo OSPF pode ser qualquer valor entre 1 a 65535. Entretando, devemos configurar a rede e a mascara coringa, além da área de forma cuidadosa. Quando se tem apenas uma área,como nosso LAB, a área zero deve ser definida. Área zero é a área de backbone e todas as demais áreas passam por ela.

Configurado o protocolo vamos verificar se houve convergencia:

Router 0:


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

Router Link States (Area 0)

Link ID ADV Router Age Seq# Checksum Link count
192.168.2.1 192.168.2.1 329 0x80000001 0x00a88a 1


Router#show ip ospf neighbor



Router#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 192.168.2.1
Number of areas in this router is 1. 1 normal 0 stub 0 nssa
Maximum path: 4
Routing for Networks:
10.1.1.0 0.0.0.3 area 0
Routing Information Sources:
Gateway Distance Last Update
192.168.2.1 110 00:05:43
Distance: (default is 110)

Router#


Vamos analisar com cuidado nossa saida.

Router#show ip ospf neighbor
Não houve informação de vizinhos

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

Router Link States (Area 0)

Link ID ADV Router Age Seq# Checksum Link count
192.168.2.1 192.168.2.1 329 0x80000001 0x00a88a 1

Apenas o próprio router. Perceba que o ID do router foi escolhido o maior IP da interface física Fastethernet. Ele nos mostra o processo em que o OSPF está rodando , no caso 1, a area é zero.


Router#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 192.168.2.1
Number of areas in this router is 1. 1 normal 0 stub 0 nssa
Maximum path: 4
Routing for Networks:
10.1.1.0 0.0.0.3 area 0
Routing Information Sources:
Gateway Distance Last Update
192.168.2.1 110 00:05:43
Distance: (default is 110)


Informações de ID, Area,Redes, entretando sempre mostrando o próprio router, ou seja, não houve convergencia da rede.

Por último:

Router#show ip ospf interface serial 2/0

Serial2/0 is up, line protocol is up
Internet address is 10.1.1.2/30, Area 0
Process ID 1, Router ID 192.168.2.1, Network Type MULTI-POINT, Cost: 64
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 192.168.2.1, Interface address 10.1.1.2

No backup designated router on this network
Timer intervals configured, Hello 30, Dead 120, Wait 120, Retransmit 5
Hello due in 00:00:12
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)



Aqui novamente temos informações importantíssimas.
Percebam que apesar de estarmos usando um link serial, OSPF está enxergando nossa rede como MULTI-POINT e está elegendo um router DR, no caso, ele próprio.
Ora, como já sabemos, em rede MULTI-POINT, OSPF irá enviar pacotes Hello em multicast para o ip 224.0.0.5, na tentativa de formar adjacências. Entretando, estamos em um ambiente Frame-Relay e não haverá transmissão de MULTICAST.

Como poderemos resolver isso ?

Uma das formas de resolver isso seria descendo a camada dois novamente e alterando as características do Frame-Relay , como segue:

Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#int se 2/0
Router(config-if)#no frame-relay map ip 10.1.1.1
Router(config-if)#frame-relay map ip 10.1.1.1 16 ?
broadcast Broadcasts should be forwarded to this address
cisco Use CISCO Encapsulation
ietf Use RFC1490/RFC2427 Encapsulation

Router(config-if)#frame-relay map ip 10.1.1.1 16 broadcast
Router(config-if)#

Como podemos ver em destaque, acrescentamos ao mapeamento Frame-Relay a palavra broadcast. alterando uma importante característica dessa rede.

Faremos o mesmo no outro router e ver se funciona:

Router#
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#interface serial 2/0
Router(config-if)#no frame-relay map ip 10.1.1.2
Router(config-if)#frame-relay map ip 10.1.1.2 16 broadcast
Router(config-if)#

Bem, ao menos agora, podemos ter broadcast, vamos ver como reage o OSPF:
Vamos primeiro ativar um debug sobre um dos routers e ver que informações ele nos traz:


Router#debut ip ospd adj
Router#debut ip ospd events

02:08:18: OSPF: Rcv hello from 192.168.1.1 area 0 from Serial2/0 10.1.1.1

02:08:18: OSPF: Mismatched hello parameters from 10.1.1.1

02:08:18: OSPF: Dead R 40 C 40 Hello R 10 C 10 Mask R 255.255.255.0 C 255.255.255.252

02:08:28: OSPF: Rcv hello from 192.168.1.1 area 0 from Serial2/0 10.1.1.1

02:08:28: OSPF: Mismatched hello parameters from 10.1.1.1

02:08:28: OSPF: Dead R 40 C 40 Hello R 10 C 10 Mask R 255.255.255.0 C 255.255.255.252


Podemos ver aqui que, independente de qualquer dificuldade de tecnologias, temos um problema básico de endereçamento.

Mismatched hello parameters from 10.1.1.1

Devemos analisar o que configuramos errado:

Router#show ip interface serial 2/0
Serial2/0 is up, line protocol is up (connected)
Internet address is 10.1.1.1/24
Broadcast address is 255.255.255.255
Address determined by setup command
MTU is 1500 ....

Vejam só o erro que cometi, configurei a interface serial com /24, quando deveria ser /30.
vamos corrigir e ver o que ocorre:

Router#
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#interface serial 2/0
Router(config-if)#
Router(config-if)#ip address 10.1.1.1 255.255.255.252
Router(config-if)#


02:42:10: OSPF: Interface Serial2/0 going Up
Router(config-if)#
02:42:11: OSPF: Rcv hello from 192.168.2.1 area 0 from Serial2/0 10.1.1.2

02:42:11: OSPF: 2 Way Communication to 192.168.2.1 on Serial2/0, state 2WAY

02:42:11: OSPF: Send DBD to 192.168.2.1 on Serial2/0 seq 0x1360 opt 0x00 flag 0x7 len 32

02:42:11: OSPF: End of hello processing

02:42:11: OSPF: Neighbor change Event on interface Serial2/0

02:42:11: OSPF: Rcv DBD from 192.168.2.1 on Serial2/0 seq 0x5c41 opt 0x00 flag 0x7 len 32 mtu 1500 state EXSTART

02:42:11: OSPF: NBR Negotiation Done. We are the SLAVE

02:42:11: OSPF: Send DBD to 192.168.2.1 on Serial2/0 seq 0x5c41 opt 0x00 flag 0x2 len 72

02:42:11: OSPF: Rcv DBD from 192.168.2.1 on Serial2/0 seq 0x5c42 opt 0x00 flag 0x3 len 72 mtu 1500 state EXCHANGE

02:42:11: OSPF: Send DBD to 192.168.2.1 on Serial2/0 seq 0x5c42 opt 0x00 flag 0x0 len 32

02:42:11: OSPF: Rcv DBD from 192.168.2.1 on Serial2/0 seq 0x5c43 opt 0x00 flag 0x1 len 32 mtu 1500 state EXCHANGE

02:42:11: OSPF: Send DBD to 192.168.2.1 on Serial2/0 seq 0x5c43 opt 0x00 flag 0x0 len 32

02:42:11: Exchange Done with 192.168.2.1 on Serial2/0

02:42:11: Synchronized with with 192.168.2.1 on Serial2/0, state FULL

02:42:11: %OSPF-5-ADJCHG: Process 2, Nbr 192.168.2.1 on Serial2/0 from LOADING to FULL, Loading Done

02:42:11: OSPF: Build router LSA for area 0, router ID 192.168.1.1, seq 0x8000000a

02:42:11: OSPF: Build router LSA for area 0, router ID 192.168.1.1, seq 0x8000000b

02:42:11: OSPF: Send DBD to 192.168.2.1 on Serial2/0 seq 0x5c43 opt 0x00 flag 0x0 len 32



Isso é muito bacana!!

Vejam só o que ocorreu.
Uma vez que configuramos Frame-Relay com suporte ao broadcast, o OSPF deveria subir,entretanto, olhando o debug, vimos que cometi um erro na configuração da camada 3, erro esse anunciado pelo protocolo OSPF.
Assim que corrigimos o erro, todo o processo foi disparado, culminando com a Convergência da nossa rede.

Essa seria uma das formas de interoperar com esses protocolos,porém, existem outras .Em virtude do tamanho do post, vou deixar para uma outra oportunidade.

Friday, July 15, 2011

Hylafax e iaxmodem

Esse post eu havia escrito para um outro blog que eu tinha mas, como não vou dar continuidade nesse outro blog,resolvi colocá-lo aqui.Será o primeiro post relacionado a Asterisk.
Vou falar dessa incrível aplicação chamada Hylafax, que em conjunto com iaxmodem possibilitam ao Asterisk enviar e receber fax sem precisar de um aparelho de fax.

A distribuição usada por min é Debian Lenny 2.6.26-2-686. Sendo assim, para conseguir esses dois programas, podemos fazer da seguinte forma:

apt-get install iaxmodem

apt-get install hylafax-server hylafax-client

Uma vez obtido os pacotes vamos fazer as configurações.

Como a configuração do Hylafax precisa que um modem esteja configurado e quem fará a emulação do nosso modem é o iaxmodem, então vamos configurar primeiro o iaxmodem.

Para isso, vamos em /etc/iaxmodem. Dentro desse diretorio vamos criar um arquivo que chamaremos de ttyIAX0, esse nome pode ser diferente.

Dentro do arquivo vamos acrescentar essas linhas

device /dev/ttyIAX0

owner uucp:uucp

mode 660

port 4570

refresh 50

server 127.0.0.1

peername iaxmodem01

secret password

codec alaw


Feito isso, vamos configurar o iax.conf e inserimos essas configurações:

[general]

disallow=all

allow=ulaw

allow=alaw

[iaxmodem01](Definido em /etc/iaxmodem/ttyIAX01)

type=friend

secret=password (Definido em /etc/iaxmodem/ttyIAX01)

port=4570

host=dynamic

context=fax-out

disallow=all

allow=alaw

qualify=yes

Bem, podemos entrar na CLI do asterisk, efetuar um iax2 reload e depois um iax2 show peers, se voce ver essas informações, tudo bem até aqui:

Name/Username Host Mask Port Status

iaxmodem01 127.0.0.1 (D) 255.255.255.255 4570 OK (3 ms)

1 iax2 peers [1 online, 0 offline, 0 unmonitored]


Da parte do iaxmodem é isso. Agora vamos a segunda etapa que é o Hylafax.

Nossa primeira configuração será em /var/spool/hylafax/etc. Ai dentro tem um script chamado faxsetup. Ao executá-lo, direto, ou seja, basta digitar faxsetup e dar enter, irá aparecer uma série de perguntas. Basicamente, é só ir confirmando, algumas informações podem ser alteradas como : código do pais, longa distância, internacional, numero de fax,etc. Mas se for dando enter até o final também irá funcionar.

Ao final, ele fará um teste com o modem iaxmodem, se o teste der OK. ótimo, já temos um fax funcionando no Asterisk.

Probing for best speed to talk to modem: 38400 OK.

Basta criar dois clientes sip em sip.conf e em extensions.conf colocar um desses clientes como ramal de fax:

;4805

exten => 4805,1,Answer

exten => 4805,n,Dial(IAX2/iaxmodem01)

exten => 4805,n,Wait(2)

exten => 4805,n,HangUp


Do outro cliente sip se você chamar 4805, ouvirá o tom característico de fax. Pronto, é só passar fax.

No próximo post, vamos ver como instalar o AvantFax, essa aplicação vai nos possibilitar a enviar e receber fax pela interface Web.

Até o próximo!

Monday, July 11, 2011

Inter-vlan Routing

Como meu primeiro post técnico , vou falar de um assunto cobrado no CCNA e facilmente encontrado em ambientes de redes, eu tive essa oportunidade.
   Vou falar de Inter-vlan Routing.

O cenário que vou apresentar, possui dois desafios:
1-interligar duas vlans com switch L3 Cisco 3560
2-Possibilitar DHCP sobre esse roteamento.

Abaixo segue o Layout da rede que montei no Packet Tracer:
Nesse Cenário, podemos ver um Switch cisco 3560 interligando dois Switches 2950, esses últimos são os modelos cobrados no Exame CCNA.
  Geralmente a interligação entre Vlans aparece em arquiteturas com roteador, conhecido como "router on a stick", mas aqui resolvi explorar a funcionalidade de L3 do Switch.
  Pois bem,vamos configurar:

Switch0:
Estamos usando a Interface Gigabit 1/1 para comunicação com o Switch L3 e a Interface 0/1 para conectar o PC.

Primeiro vamos criar uma VLAN:

Switch>
Switch>en
Switch#config t
Enter configuration commands, one per line.  End with CNTL/Z.Switch(config)#
Switch(config)#vlan 10
Switch(config-vlan)#name ADM



Agora associaremos a essa VLAN a Interface 0/1:


Switch#
Switch#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#
Switch(config)#interface fastEthernet 0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 10


Agora vamos configurar um Trunk entre os Switche0 e o Switch L3

Switch#
Switch#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#Switch(config)#interface Giga 1/1
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk allowed vlan all


Ok.. Configurmos o Switch 0
Agora vamos pro Switch 1

Switch>en
Switch#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#vlan 20
Switch(config-vlan)#name ALMOX


Associaremos a essa VLAN 20 a Interface 0/1.

Switch#
Switch#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#int fastEthernet 0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 20


Agora vamos configurar um Trunk entre os Switche1 e o Switch L3

Switch#
Switch#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#interface Giga 1/0

Switch(config-if)#switchport mode trunk
Switch(config-if)#switchporttrunk allowed vlan all

Está configurado os dois Switches L2.

Vamos para o próximo passo do Exercício que é configurar o Switch L3:

Switch>
Switch>en
Switch#config t
Enter configuration commands, one per line.  End with CNTL/Z.

Switch(config)#ip routing

Aqui já temos um comando importantíssimo, pois, ele ativa o roteamento no Switch L3.

Em seguida, vamos configurar duas VLANs para representarem as VLAN criadas nos Switches L2.

Switch(config)#
Switch(config)#vlan 10
Switch(config-vlan)#name ADM

Switch(config)#
Switch(config)#vlan 20
Switch(config-vlan)#name ALMOX

Configuramos Trunks:

Switch(config)#
Switch(config)#interface Giga 0/1
 Switch(config-if)#switchport  trunk encapsulation dot1q
Switch(config-if)#switchport trunk allowed vlan all


O encapsulamento Dot1q é o protocolo responsável por possibilitar a comunicação de trunk entre os Switches ou Router e Switches. A cisco inicialmente realizava essa interligação com um protocolo proprietário chamado ISL, que está sendo substituído pelo padrão Dot1q.

 Repetimos o passo para a outra Interface:

Switch(config)#
Switch(config)#interface Giga 0/2
 Switch(config-if)#switchport  trunk encapsulation dot1q

Switch(config-if)#switchport trunk allowed vlan all



Vamos atribuir IP a essas duas VLANs porque elas serão os gateways de nossas duas redes.

Switch(config)#
Switch(config)#interface vlan 10
Switch(config-if)#ip address 192.168.10.1 255.255.255.0

Switch(config)#
Switch(config)#interface vlan 20
Switch(config-if)#ip address 192.168.20.1 255.255.255.0

Pronto, configurado.

Verificando se criou as rotas:

Switch#
Switch#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.10.0/24 is directly connected, Vlan10
C    192.168.20.0/24 is directly connected, Vlan20
Switch#

Perfeito, podemos pingar  os dois PCs.

Bem, para tornar nosso exercício mais interessante, vamos considerar que na VLAN 20 temos um servidor DHCP, que deve fornecer IP tanto para o segmento onde ele se encontra quanto para o segmento onde se encontra o PC, na VLAN 10.

 Acima temos um print da configuração do servidor DHCP, para quem ainda não tem muita intimidade com o Packet Tracer. Percebam que o Pool criado aqui, atende a VLAN 10, ou seja, irá fornecer endereçamento de 192.168.10.50 até 192.168.10.254 com Gateway 192.168.10.1, que é exatamente nosso gateway na VLAN 10.
 Para atender a VLAN 20, basta criar um outro Pool com os devidos endereços.

Aqui deparamos com um grande problema. Sem entrar muito no mérito de como funciona o DHCP, é preciso saber que ele usa broadcast nas requisições DHCPDISCOVERY que é enviada por um host na busca de um servidor DHCP, entretando, como estamos falando de roteamento, temos um problema. Roteadores,nesse caso Switch L3, não roteia broadcast por default, daí  o porque de um roteador quebrar domínios de broadcast.
Humm...como podemos então ter serviço de DHCP em redes que estão sendo filtradas por um "router".

Eis que temos o comando  ip helper-address. Vamos ver como ele pode ajudar-nos:

Switch>en
Switch#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#
Switch(config)#interface vlan 10
Switch(config-if)#
Switch(config-if)#ip helper-address ?
  A.B.C.D  IP destination address
Switch(config-if)#ip helper-address 192.168.20.2


Na VLAN onde estará conectado o PC que vai fazer a solicitação de DHCP, configuramos o comando "ip helper-address", que pede como parâmetro o IP do nosso servidor DHCP.

Pronto, problema resolvido. Vejamos :

Ai está, nosso PC configurado em DHCP , com a faixa de IP que configuramos no servidor DHCP e o Gateway desse segmento de rede.

 Então é isso ai. Exercício bem interessante, abordando assuntos que podem cair no CCNA e com certesa no dia-a-dia de um Analista.

Sunday, July 10, 2011

Primeiro Post

 Mais um blog vai para a WEB. Com que finalidade ? Bem, acho que os motivos  sempre são variados, no meu caso o interesse é divulgar conhecimento e poder aprender com outras pessoas. Reservo me no direito de escrever sobre qualquer tipo de tecnologia apesar de  meu interesse maior estar em Linux, Asterisk, Cisco Systems.
 Atualmente estou estudando para o CCNA de forma que postagens relacionadas a esse assunto serão constantes.
  Outro assunto que será motivo de grande número de postagens será Asterisk. Esta tecnologia me conquistou ha algum tempo atrás e admito que sou um grande admirador. Trabalho com plataformas proprietárias como Philips, Ericsson, Digitro,Leucontron  desde 2001 e diante desse mundo tão fechado dos fabricantes de PABX, Asterisk é algo notável.

   Compartilhar conhecimento é algo que sempre fiz no meu dia-a-dia, de forma que, quero que esse espaço seja uma oportunidade para trocar experiências com o maior número de pessoas possiveis e nada melhor que um Blog  para possibilitar isso.


  Flavio Miranda