====== 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.