Tuesday, January 17, 2012

Wake-UP-On-LAN

Hoje lembrei de algo que fiz a bastante tempo e que é interessante do ponto de vista técnico e útil também. WoL ou Wake Up On LAN. Me recordo que quando li sobre esse assunto e iniciei um estudo sobre isso, não acreditava realmente que isso fosse possível. A primeira vez que eu realizei com sucesso, fiquei extasiado com o ocorrido.
 Wol é na verdade a capacidade que um PC possui de ser ligado através de um pacote especial enviado para a placa de rede. Como se sabe, quando desligamos o PC, a placa de rede ou NIC continua ligada devido a conexão com o Switch ou Hub. Mesmo estando desligado o PC é possível observar que o LED da placa de rede continua acesa, caso a placa possua LED, uma vez que nem todas tem.
  Mais ou menos 4 anos atrás eu li algo sobre isso e fiquei maravilhado. A princípio considerei que fosse uma daquelas coisas que apenas Hackers conseguem fazer, que mesmo tendo tutoriais na Internet a gente nunca consegue fazer funcionar.
  Foi quando iniciei meus testes. Primeiro é preciso verificar na BIOS se essa opção não está desativada. Geralmente não está. Também é preciso ativar essa opção na placa de rede, como abaixo:


 


Esse é apenas um exemplo de como pode ser apresentado. Essa interface de rede é do meu Modem 3G e não possibilita essa configuração,mas em uma placa de Rede normal é possível marcar a opção "Allow the Device to wake the Computer".

 Com isso, a placa de rede ao receber o "Magic Packet", é capaz de ligar o computador.
Pare que isso funcione é preciso ter um software, facilmente encontrado na Internet, que envia o pacote. Também faz-se necessário conhecer o MAC address da placa de rede e no caso do computador estar em outra rede ou atrás de Firewall, a porta 7 ou 9 deve estar aberta e direcionada para o PC em questão.
   O fato é que funciona e pode ser muito útil. Em um outro trabalho, eu tinha máquinas que ficavam dentro do ambiente do cliente, sob minha responsabilidade. Muitas vezes essas máquinas desligavam devido a queda de energia e eu não queria ir até o cliente apenas para ligar o servidor, ou pedir para o cliente ter esse trabalho. Dessa forma, muitas vezes eu me valia dessa técnica para ligar o Server novamente.

A primeira vez foi no meu próprio computador. Deixei tudo preparado, desliguei-o e fui para o trabalho, como minha Internet possuía IP válido funcionou direitinho. Fiquei em êxtase quando vi que o PC estava ligado!
   Existe uma opção ainda mais prática  em que é possível habilitar na BIOS o Wake up automático. Assim, quando faltar energia e o PC desligar, ele ligará sozinho assim que a energia se restabelecer. Para os caso de queda de energia isso é bem prático. Mas o WoL supera por ser algo que você controla.

É isso aí. Uma curiosidade que as vezes acaba passando despercebido até pelos Micreiros.


















Saturday, January 14, 2012

Interligar 2000 IPS com Asterisk



De volta aos Posts técnicos, vou escrever hoje sobre um assunto  com o qual já passei dias(noites) tentando fazer funcionar, e fiz. Hoje vou dar o caminho das pedras a quem vier a ter a mesma necessidade.
 O PABX 2000  IPS (Internet Protocol Server) é um dos melhores PABX com o qual já trabalhei. Ele existe no mercado sob duas marcas, Philips e NEC. Fabricado pela NEC , é comercializado pela Philips,porém, com o mesmo Hardware e software.
 Algum tempo atrás eu tive a necessidade de interligar um 2000ips com um servidor Asterisk através de entroncamento SIP. Não foi uma tarefa fácil devido ao fato de que, na época ,eu conhecia  pouco das duas plataformas, mas consegui graças a um fator muito importante, seguindo na contra-mão dos fabricantes de PABX, a NEC possui uma grande quantidade de materiais publicados na internet sobre seus equipamentos, isso facilita muito as coisas. Asterisk, nem precisa dizer, tendo em vista que é produzido pela comunidade Linux.
 Bem, vamos iniciar pela parte mais dificil que é o 2000 ips.

Hardware Necessários:

Para o tipo de interligação que mostraremos aqui, é indispensável que o 2000ips possua a placa
PN-8IPTA,  que possibilita 8 troncos  SIP. O máximo de troncos  por sistema são 64 troncos.

Não vou entrar em detalhes sobre a instalação física porque isso tornaria o post muito extenso.
E vou partir do principio que já se tenha conhecimento do Matworks( software de configuração 2000ips).

Para a configuração da placa vamos começar com o seguinte comando:

CM050>08>46


Sense weel é uma “chavinha” presente na parte da frente da placa, esse PABX tem uma forma interessante de enxergar certas placas. O Sense weel é que diz a CPU, em qual posição ela está.
No nosso caso, a posição escolhida foi 08.

-46 é o códico para protocolo SIP.


CM058>08>0099

Esse comando 058 atribui uma localização logico/fisico  associando o sense weell 08  ao Site 00 e  99 Pim.

Muitos comando aqui não precisam serem compreendidos profundamente, basta que sejam executados e pronto.


CM0607 >0>08

Assign SIP Channel Number (0) to the AP sense wheel (08).
 
Aqui ele faz a associação do sense weel 08 com um Channel SIP 0.
Pode parecer comandos inúteis mais não são, no caso desse comando por exemplo, é muito importante caso você tenha em seu 2000 IPS mais de uma placa. Voce terá que repetir esse comando e incrementar o numero após o comando indo a um máximo de 7, ou seja, 8 placas.

CM0701> 0800~0807>D100~D107

Aqui   vai aparecer o termo trunk(tronco). Nesse caso, estamos associando time slot de 00 a 07 aos troncos 100 a 107.

CM0A00>00>080
Associação do sense weel 08 a LAN 00.


CM0A01>00>192168100100

Aqui configuramos IP a nossa LAN 00.

CM0A02>00>255255255000
 Mascara

CM0A03>00>192168100155
Gateway

CM14>03127>D254

Aqui o sistema usa um conceito de control Trunk, cujo range vai de 000 a 255. Porém, 255 não deve ser usado.

CM3000>100~107>20

O comando 3000 associa os troncos criados acima com a rota 20. Aqui as coisas começam a ficar interessantes e mais fáceis de compreender.

CM3500>20>00

Dizemos que a rota 20 será entroncamento SIP.

CM3504>20>2
CM3509>20>03
CM3520>20>00
M3590>20>0                 
Não vou explicar os comandos acima, eles são relacionados a sinalizações e facilidades de rota. O objetivo do Post é uma interligação simples das duas plataformas, algo gratificante de se alcançar, a quem interessar posteriormente em aprofundar nas configurações, existem bons materiais na Internet.

CM3591>20>0
Esse comando já merece comentário, porque ele associa o Channel que criamos acima com nossa rota 20. Compreender essas associações é fundamental principalmente em troubleshooting.

CM3035>100~107>001~008
Esse comando designa um CIC ao tronco.
Circuit Identification Code(CIC)
Como visto acima, é uma identificação ao tronco.

CMA700>0>254
Aqui é feita outra associação. O SIP Channel 0 com nosso Trunk Control.




CMA770>0>00
Associal o Channel a LAN
CMBA30>00>192168100200

Aqui apontamos para o SIP server, no caso do Asterisk.

CMBA31>00>05060
Porta SIP
Essas configurações acima são suficientes para preparar o 2000ips  para trabalhar com SIP e fazer a conexão com o Asterisk. Vamos criar em seguida um plano de discagem simples para rotearmos as ligações saintes para a rota SIP.
Para isso, vamos definir um plano de numeração da seguinte  forma. Vamos considerar que a Operadora está nos fornecendo o Range de 3000 até 3999. Dessa forma, ramais até 3499 estarão no 2000ips  e os demais 3500 em diante, serão configurados no Asterisk. Em minha implantação, os ramais no Asterisk, conseguiam receber ligações DDR normalmente, com as ligações sendo roteadas por dentro do 2000IPS e sendo entregues aos ramais do Asterisk.

 Uma breve descrição sobre LCR

Não é meu intuito aprofundar no conceito de LCR aqui,pois, esse assunto é muito complexo e precisaria de vários Posts, mas é preciso  dar uma breve descrição para que os comandos não sejam simplesmente jogados no MOC. Havendo necessidade de troubleshooting ou mudanças, esse entendimento básico é muito útil.
Leat Cost Routing
A tradução seria Rota de menor custo e o conceito é enviar as ligações para o destino da forma mais barata possível.
Numa configuração padrão, o comando 200 é usado para criar o Código de acesso a rota, da seguinte forma:
CM 200>0>A126
Dessa forma, dizemos que ao discar zero o PABX deverá deletar o zero e enviar os dígitos discados para o Grupo LCR A126.
Existem 4 Grupos desses e nós usaremos o grupo 3(A129)
A característica desse grupo é que, diferentemente  dos demais, ele não deleta o primeiro dígito discado, enviando todos os dígitos discados para o Grupo A129.
Nossa configuração ficará dessa forma:
CM 200>35>A129
CM 8AA000>3>4007
CM 8A4007>35>20
Dessa  forma, ao discarmos 3501,primeiro ramal do nosso range Asterisk, o PABX enviará todos os dígitos discados para  a rota 20, rota do nosso entroncamento SIP.
Dessa forma, criamos uma forma simples de discarmos sobre nossa rota SIP. Também podemos fazer isso criando um código de acesso diferente daquele usado para discarmos pela operadora e apontarmos para a rota SIP.
 Suponhamos que discando zero você disca pela operadora, poderíamos colocar o 9 como acesso a rota SIP. Eu particularmente não gosto dessa implementação mas ela é muito usada nas empresas.
Dessa forma considero pronto a parte que compete ao 2000ips. Como disse acima, existem vários bons tutoriais na Internet falando de LCR e rotas nesse PABX. O entendimento desses conceitos possibilitará realizar configurações mais complexas e possivelmente mais úteis.

Asterisk.

A melhor parte. Bem, no Asterisk as coisas são infinitamente mais fáceis e incrivelmente simples.Com um sip.conf e um extensions.conf bem simples é possível enviar e receber ligações para o 2000ips.
Vou colocar um exemplo de cada:

Sip.conf
[general]

context=default

bindport=5060                   ; UDP Port to bind to (SIP standard port for unencrypted UDP
                                ; and TCP sessions is 5060)
                                ; bindport is the local UDP port that Asterisk will listen on
bindaddr=0.0.0.0                ; IP address to bind UDP listen socket to (0.0.0.0 binds to all)


[3501]
context=2000IPS
dtmfmode=RFC2833
host=dynamic
nat=no
qualify=yes
secret=strong_password_please
type=friend
disallow=all
allow=ulaw
allow=alaw
allow=gsm
register = Ramal_IPS@IP_2000IPS_HERE/Ramal_IPS

###############################################


Agora nosso extensions.conf
[general]
Include => 2000IPS
exten => _3XXX,1,NoOp(${CALLERID(all)})
exten => _3XXX,n,Dial(SIP/${EXTEN},,Tt)
exten => _3XXX,n,VoiceMail(${EXTEN},u)
exten => _3XXX,n,Hangup
 ; Disca sobre a Rota SIP                              
exten => _X.,1,Dial(SIP/${EXTEN}@IP_DO_2000IPS_HERE,90,Tt)
         ################FIM################
É isso aí. Temos aqui a idéia geral. Vale lembrar que muitas vezes procuramos por publicações que se enquadrem exatamente em nosso cenário, principalmente quando existe a cobrança pelo resultado. É preciso compreender para adaptar.
 As idéias gerais dispostas aqui são passíveis de serem implementadas,porém, a leitura e aprofundamento dos conceitos usados irá permitir ao interessado adaptar ás suas necessidades.