Prática 1 Instalando o proxy SIP Kamailio, configurando os usuários e interligando proxies. Objetivo: Criar um ambiente VoIP básico utilizando o proxy SIP Kamailio que terá suas informações de usuário armazenados num banco de dados MySQL. Etapas: Instalar o Kamailio; Instalar o banco de dados MySQL; Criar a estruturação do banco de dados; Criar usuários no banco de dados; Configurar o Kamailio para chamadas internas; Testar o ambiente VoIP interno, configurando os clientes VoIP locais e realizando chamadas entre eles; Configurar o Kamailio para chamadas externas; Testar o ambiente VoIP externo, configurando os clientes VoIP locais e externos, realizando chamadas entre eles. 1
Toda vez que uma linha terminar com um caractere de contra barra (\), a linha logo abaixo dela será sua continuação. Geralmente, linhas que começam com o caractere tralha (#) são comentários e não precisam ser executados ou inseridos nos arquivos de configuração. Porém, no caso do arquivo kamailio.cfg, algumas linhas que começam com tal caractere são necessárias. A turma será divida em duplas. Cada dupla deverá configurar seu proxy SIP com os dados contidos na tabela da última página deste documento. Toda configuração específica de uma dupla contida num comando ou num arquivo de configuração será representada pelo nome da variável de configuração entre os sinais < e >. Por exemplo, quando a expressão <IP_ADDRESS> deve ser substituída pelo IP da máquina onde o proxy está sendo instalado. 1) Instale o servidor MySQL. Quando o instalador pedir uma senha, use voip (sem as aspas). apt-get install mysql-server 2) Instale o proxy SIP Kamailio. # Configure o repositório oficial do Kamailio no Ubuntu wget http://deb.kamailio.org/kamailiodebkey.gpg apt-key add kamailiodebkey.gpg # Modifique a configuração dos repositórios de pacotes # disponíveis no arquivo /etc/apt/source.list echo "deb http://deb.kamailio.org/kamailio31 lucid main" >> \ /etc/apt/sources.list # Atualize os repositórios apt-get update # Instale o Kamailio apt-get -y install kamailio kamailio-mysql-modules \ kamailio-nth kamailio-utils-modules rtpproxy 3) Edite o arquivo /etc/kamailio/kamctlrc para que seja possível a criação do banco de dados. Segue abaixo um exemplo funcional deste arquivo. # The Kamailio configuration file for the control tools. # # Here you can set variables used in the kamctl and kamdbctlsetup # scripts. Per default all variables here are commented out, the # control tools will use their internal default values. ## your SIP domain SIP_DOMAIN=<IP_ADDRESS> ## chrooted directory # $CHROOT_DIR="/path/to/chrooted/directory" 2
## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, or DBTEXT, ## by default none is loaded DBENGINE=MYSQL ## database host DBHOST=localhost ## database name (for ORACLE this is TNS name) DBNAME=kamailio ## database read/write user DBRWUSER=kamailio ## password for database read/write user DBRWPW="<PASSWORD>" ## database super user (for ORACLE this is 'scheme-creator' user) DBROOTUSER="root" ## control engine: FIFO or UNIXSOCK ## - default FIFO CTLENGINE="FIFO" ## path to FIFO file OSER_FIFO="FIFO" ## verbose - debug purposes - default '0' VERBOSE=1 4) Crie a base de dados Kamailio no banco de dados. kamdbctl create 5) Crie os usuários do Kamailio na base de dados. kamctl add user1 voip kamctl add user2 voip kamctl alias_db add <ALIAS1>@<IP_ADDRESS> user1@<ip_address> kamctl alias_db add <ALIAS2>@<IP_ADDRESS> user2@<ip_address> 6) Configure o Kamailio através do arquivo /etc/kamailio/kamailio.cfg. Atenção para as linhas que começam com tralha (#). 6.1) Insira as seguintes definições após a linha 90. #!define WITH_MYSQL #!define WITH_ALIASDB #!define WITH_AUTH #!define WITH_USRLOCDB #!define WITH_NAT #!define WITH_IPAUTH 3
6.2) Edite a linha 94, que define a variável DBURL. #!define DBURL "mysql://kamailio:voip@localhost/kamailio" 7) Configure o RTPProxy através do arquivo /etc/default/rtpproxy. Segue abaixo um exemplo do arquivo. # Defaults for rtpproxy # The control socket. #CONTROL_SOCK="unix:/var/run/rtpproxy/rtpproxy.sock" # To listen on an UDP socket, uncomment this line: CONTROL_SOCK=udp:localhost:7722 # Additional options that are passed to the daemon. EXTRA_OPTS=" -l <IP_ADDRESS> " 8) Reinicie o RTPProxy /etc/init.d/rtpproxy restart 9) Edite a linha da variável RUN_KAMAILIO no arquivo /etc/default/kamailio. RUN_KAMAILIO=yes 10) Reinicie o Kamailio /etc/init.d/kamailio restart 11) Verifique se os serviços estão em execução ps aux grep mysql ps aux grep rtpproxy ps aux grep kamailio 12) Configure os usuários SIP no X-Lite (http://www.counterpath.com), um soft phone para ambiente Windows e Linux; 12.1) Inicie o software X-LITE a partir do ícone localizado no desktop. 4
12.2) Clique na opção Menu e selecione a opção SIP Account Settings para configurar os parâmetros relativos ao servidor SIP. Clique no botão Add para definir o servidor proxy default conforme a tabela fornecida. 12.3) O registro no servidor será indicado pela apresentação da mensagem Ready Your username is: XXX na tela principal do software. 13) Com o ambiente local operacional, vamos integrar os ambientes. Eleja um grupo próximo ao seu para que possa realizar testes de chamadas entre os grupos. 13.1) Para cada grupo eleito, edite o arquivo /etc/kamailio/kamailio.cfg adicionando o seguinte trecho na primeira linha da rota LOCATION. if ($ru=~"^<prefixo_grupo_x>[0-9]{4}$") { $du = sip:<ip_grupo_x> ; 5
} return; 13.2) Adicione os endereços IP dos equipamentos confiáveis. mysql -u root -h localhost -p kamailio INSERT into address (ip_addr, mask, port) VALUES \ ( <IP_GRUPO_X>, 32, 5060); 13.3) Reinicie o Kamailio /etc/init.d/kamailio restart 13.4) Teste o ambiente realizando chamadas entre os grupos. Para que este teste funcione, cada grupo já deverá ter adicionado o outro grupo. 6
Configurações dos Grupos Grupo Display name Usuário Senha Alias Grupo 1 Grupo1_1 user1 voip 10100001 Grupo1_2 user2 voip 10100002 Grupo 2 Grupo2_1 user1 voip 10200001 Grupo2_2 user2 voip 10200002 Grupo 3 Grupo3_1 user1 voip 10300001 Grupo3_2 user2 voip 10300002 Grupo 4 Grupo4_1 user1 voip 10400001 Grupo4_2 user2 voip 10400002 Grupo 5 Grupo5_1 user1 voip 10500001 Grupo5_2 user2 voip 10500002 Grupo 6 Grupo6_1 user1 voip 10600001 Grupo6_2 user2 voip 10600002 Grupo 7 Grupo7_1 user1 voip 10700001 Grupo7_2 user2 voip 10700002 7