====== Asterisk com Telefone IP da Cisco 7961 ======
===== Topologia =====
Para este post iremos montar a seguinte topologia para exemplificar o ambiente e aprendermos como utilizar um telefone IP da Cisco com asterisk
{{ :infra-estrutura:voip:redevoip.jpeg?direct&400 |}}
Para este ambiente temos os seguintes recursos e serviços:
* 192.168.10.186
* Servidor Asterisk
* Servidor TFTP
* 192.168.10.1
* Servidor DHCP com opção 66 para fornecer o endereço TFTP
===== Funcionamento do telefone IP da Cisco =====
Não vou entrar em detalhes do funcionamento do telefone IP da Cisco apenas o básico e resumidamente. Se precisar de mais informações procure no site da Cisco ou me mande um e-mail que tenho muita documentação.
Resumindo o telefone IP da Cisco vem para buscar a configuração em um servidor TFTP, caso ainda não possua o firmware e possível também atualizar o firmware na inicialização. O telefone IP da Cisco trabalha com dois protocolos VOIP:
* SCCP ou Skinny - Protocolo proprietário da Cisco adquirido quando comprou Selsius Corporation em 1998
* SIP - Protocolo Livre para implementações de soluções VOIP.
O telefone IP da Cisco trabalha com os dois protocolos, utilizaremos por questões de melhor compatibilidade a versão do firmware que conversa SIP. Assim teremos o Asterisk conversando SIP diretamente. O modelo do telefone que possuo para nosso teste e o 7961, depois de muita luta encontrei o firmware o qual contem os seguintes arquivos:
* apps41.1-1-3-31.sbn
* cvm41sip.8-0-3-33.sbn
* cnu41.3-1-3-31.sbn
* dsp41.1-1-3-31.sbn
* jar41sip.8-0-3-33.sbn
* SIP41.8-0-4SR3AS.loads
* term41.default.loads
* term61.default.loads
O telefone IP ja precisa estar carregado com o firmware SIP, caso contrário precisamos atualiza-ló. Para isso teu ambiente deve estar operacional. Quando digo ambiente se trata do servidor DHCP, TFTP, etc. Precisa estar funcionando e com todos os arquivos do firmware no TFTP para o telefone ligar e buscar os arquivos do firmware e aplicar em si :).
Uma coisa e importa o reset do telefone no meu caso para resetar o telefone IP e necessário os seguintes passos: Mantenha pressionado o botão "#" ate que os botões de linha comecem a piscar, ai solte o botão "#" e digite a sequência “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “*”, “0”, “#”, depois o telefone irá procurar o TFTP e os arquivos necessários e ira se atualizar com o firmware definido. Se tiver dúvida tem o seguinte link que ensina o procedimento mas e bem simples, mas **LEMBRANDO** o procedimento para funcionar seu servidor TFTP e DHCP devem estar configurados e funcionando :). Abaixo segue o link
[[https://www.3cx.com/sip-phones/factory-reset-cisco-7900-series/]]
===== Configuração do DHCP =====
Vamos a configuração do DHCP, o telefone IP precisa receber um endereço do servidor TFTP que ele precisa buscar firmware no caso de atualização ou arquivos xml's no caso de configurações. Para a configuração do dhcp segue abaixo um exemplo bem simples.
# configuração para a opção 66 e 150 que informa o endereço TFTP
option voip code 66=ip-address;
option voip-tftp-server code 150=ip-address;
# este servidor dhcp e o autorizado no segmento de rede
authoritative;
# configuração do escopo DHCP
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.160 192.168.10.200;
option domain-name-servers 192.168.10.1, 8.8.8.8;
option domain-name "capsula.corp";
option routers 192.168.10.1;
option broadcast-address 192.168.10.255;
default-lease-time 600;
max-lease-time 7200;
option voip-tftp-server 192.168.10.186;
option voip 192.168.10.186;
}
Você deve ter notado que as opções do DHCP para o servidor TFTP podem ser duas: 150 e 66. Quais as diferenças entre elas? Resumindo a opção 150 é proprietária da Cisco e a opção 66 e um padrão IEEE. Telefones IP da Cisco podem ser configurados manualmente ou via DHCP, além deste requisito os telefones precisam de acesso a um servidor TFTP que contém a configuração em format .cnf.xml, o qual configura o telefone para contactar o PABX IP para se registrar como um ramal.
A opção DHCP 150 é proprietário da Cisco.
A opção 66 é um padrão aberto. A RFC 2132 define a opção DHCP 66.
Diferenças entre a opção 150 e 66:
Opção DHCP 150 suporta uma lista de servidores TFTP.
Opção DHCP 66 somente suporta o endereço IP ou o hostname de um único servidor TFTP.
===== Configuração do TFTP =====
Para a configuração do TFTP e bem simples e necessário somente instala-lo e colocar os arquivos de configuração e firmware na raiz do TFTP.
# apt install tftpd-hpa
O diretório raiz do mesmo fica em **"/var/lib/tftpboot/"**.
Caso precise debugar os arquivos que são acessados no tftp edite o arquivo **"/etc/default/tftpd-hpa"** e procure a seguinte linha.
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
e adicione no final da linha que esta marcada a opção ** --verbose**, ficando da seguinte forma:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure --verbose"
===== Configuração asterisk Ramais =====
Agora vem a parte foda da configuração: criar o arquivo .cnf.xml que o telefone IP busca para se auto configurar. Vamos la para cria-lo precisamos do MAC do telefone IP. No meu caso o endereço IP do meu telefone é 192.168.10.178 vamos pegar o MAC via comando arp, ou no próprio aparelho. Vamos pegar via comando arp.
root@halljordan:/etc/asterisk# arp -an
? (192.168.10.181) at 38:3f:10:04:b8:a8 [ether] on enp0s11
? (192.168.10.1) at 00:1a:3f:79:f2:37 [ether] on enp0s11
? (192.168.10.178) at 00:21:d8:bb:45:42 [ether] on enp0s11
? (192.168.10.70) at 20:47:47:fc:f5:ea [ether] on enp0s11
root@halljordan:/etc/asterisk#
O endereço MAC do telefone IP é **00:21:d8:bb:45:42**. O formato do arquivo de configuração segue o formato
SEPXXXXXXXXXXXX.cnf.xml
A string de 12 caracter "X" vamos preencher com o MAC do telefone IP ficando da seguinte forma **0021D8BB4542**. Com isso o arquivo final ficando com o seguinte formato de nome.
SEP0021D8BB4542.cnf.xml
Tudo certo definimos o nome do arquivo agora vem a parte do conteúdo, vou colocar o meu arquivo e marcar as opções que deve alterar para teu ambiente.
SIP
cisco
cisco
D-M-YA
South America Standard/Daylight Time
2000
5060
5061
192.168.10.186
true
true
x--serviceuri-cfwdall
x-cisco-serviceuri-pickup
x-cisco-serviceuri-opickup
x-cisco-serviceuri-gpickup
x-cisco-serviceuri-meetme
x-cisco-serviceuri-abbrdial
false
2
true
true
2
2
0
true
6
10
180
3600
5
120
120
5
500
4000
70
false
None
1
false
true
false
false
101
3
avt
false
false
3
1109
1
false
10
false
16384
32766
9
1109
192.168.10.186
5060
1109
1109
2
3
1109
password
false
1
700
4
5
1109
true
false
false
true
5060
184
0
dialplan.xml
password
true
2
SIP41.8-0-4SR3AS
false
false
0
1
0
0
0
0
1
1,2,3,4,5,6,7
00:00
00:00
00:00
1
1
1143565489-a3cbf294-7526-4c29-8791-c4fce4ce4c37
New_Zealand
New_Zealand
5.0(2)
1
http://www/ipphone/authenticate.php
http://www/ipphone/directory.xml
http://www/ipphone/GetTelecasterHelpText.jsp
proxy:3128
http://www/ipphone/services.xml
96
0
96
2
0
3804
false
Se esqueci algum item me perdoem, mas com isso já deve funcionar, uma atenção especial a tag **SIP41.8-0-4SR3AS** ela diz qual o firmware que devo aplicar veja a saida de uma listagem no servidor TFTP.
root@halljordan:/var/lib/tftpboot# ls -l
total 5972
-rw-r--r-- 1 root root 5788 Sep 29 18:06 SEP0021D8BB4542.cnf.xml
-rw-r--r-- 1 root root 644 Sep 28 21:51 SIP41.8-0-4SR3AS.loads
-rw-r--r-- 1 root root 2548198 Sep 28 21:51 apps41.1-1-3-31.sbn
-rw-r--r-- 1 root root 417824 Sep 28 21:51 cnu41.3-1-3-31.sbn
-rw-r--r-- 1 root root 2423295 Sep 28 21:51 cvm41sip.8-0-3-33.sbn
-rw-r--r-- 1 root root 92 Sep 29 18:05 dialplan.xml
-rw-r--r-- 1 root root 484353 Sep 28 21:51 dsp41.1-1-3-31.sbn
-rw-r--r-- 1 root root 200805 Sep 28 21:51 jar41sip.8-0-3-33.sbn
-rw-r--r-- 1 root root 641 Sep 28 21:51 term41.default.loads
-rw-r--r-- 1 root root 641 Sep 28 21:51 term61.default.loads
root@halljordan:/var/lib/tftpboot#
Vejam que a tag repete o nome do arquivo tirando a extensão .loads, isso é regra se mudar o firmware tem que alterar o xml de configuração. Outro detalhe que tive problema e com a discagem. O telefone IP se registrava mas o primeiro número que teclava ele ja dava o dial, para isso você precisa de um timeout entre os digitos e quem define isso e o arquivo de **dialplan.xml**. Segue o mesmo abaixo. Não esqueçam senão a primeira tecla que apertar o telefone IP irá executar o dial. Deixei o timeout entre digitos de 5 segundos.
===== Teste de funcionamento. =====
Para o teste vou postar apenas um vídeo. :)
{{ :infra-estrutura:voip:voip.mp4 |}}