
Siga todas as orientações da aula anterior para a instalação.
Link para download: https://www.virtualbox.org/wiki/Downloads
Realize o download conforme orientação do vídeo no link: http://ftp.uem.br/linux/CentOS/6.10/isos/x86_64/CentOS-6.10-x86_64-minimal.iso
Nessa aula vamos aprender a instalação do centOS e particionamento ideal dos HDs.
Para HD's de 20Gb :
/boot = 500mb Primario
/var = 4000mb 20%
/ = 3000mb 15% primario
/opt = 1000mb 5%
swap = 6144 Primario
/dados = restante
Nessa aula aprenderemos como validar se a interface de rede subiu devidamente e seu IP
Link para download do Putty https://www.putty.org/
Olá pessoal,
Nessa aula aprenderemos a definir um IP fixo na placa de rede e analisarmos informações importantes em nossa rede.
Parâmetros da placa de rede:
IPADDR=
PREFIX=
GATEWAY=
Link acessado: http://www.subnet-calculator.com/
Nessa aula aprenderemos a modificar algumas configurações que aumentam nossa segurança ao realizar um acesso SSH.
Você pode testar para ver se o SELinux está habilitado com o seguinte comando:
selinuxenabled && echo enabled || echo disabled
Desabilitar o SELinux temporariamente:
echo 0 > /selinux/enforce
Desligar completamente o SELinux
Para desativar completamente o SELinux abra o arquivo /etc/selinux/config e modifique para:
SELINUX=disabled
Agora você deve reiniciar o seu servidor.
############################################################################
Segue script utilizado
#!/bin/bash
echo "Limpando Regras"
iptables -F
echo "Aplicando Policy Default"
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
echo "Liberando Loopback"
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
echo "Liberando IP SIP"
iptables -A INPUT -p udp --dport 5060 -j ACCEPT
echo "Liberando RTP"
iptables -A INPUT -p udp --dport 10000:20000 -j ACCEPT
echo "Liberando WEB"
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
echo "Liberando SSH"
iptables -A INPUT -p tcp --dport 1050 -j ACCEPT
echo "Liberando Ping"
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
echo "Liberando Input para conexoes estabelecidas/relacionadas"
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
############################################################################
Complementando
Para listar as regras de iptables, dê o comando iptables -L
Dentro do arquivo iremos trabalhar com modos e seus comandos, que serão abordados a seguir.
Irei abordar cada destes comandos:
Modo texto - comandos de inserção;
Modo comando - comandos de localização, movimentação, alteração e para salvar e sair do texto.
MODO TEXTO - COMANDOS DE INSERÇÃO
Comando de inserção de texto:
i - insere texto antes da posição atual do cursor;
a - insere o texto depois da posição atual do cursor;
r - Substitui o texto na posição atual de onde se encontra o cursor;
A - insere o texto no final da linha onde se encontra o cursor
o - Adiciona uma linha abaixo da linha onde se encontra o cursor;
O - Adiciona uma linha acima da linha onde se encontra o cursor;
ESC muda para o modo de visualização.
MODO COMANDO - COMANDOS DE LOCALIZAÇÃO, MOVIMENTAÇÃO, ALTERAÇÃO E PARA SALVAR E SAIR DO TEXTO
Comandos para localização de texto:
/palavra - Busca pela palavra ou caractere em todo o texto;
?palavra - Move o cursor para a ocorrência anterior da palavra;
n- Repete o último comando / ou ?;
N - Repete o último comando / ou ?, na direção reversa;
Ctrl+g - Mostra o nome do arquivo, o número da linha atual e o total de linhas.
Comandos para a movimentação pelo texto:
Ctrl+f - Move o cursor para a próxima tela;
Ctrl+b - Move o cursor para a tela anterior;
H - Move o cursor para a primeira linha da tela;
M - Move o cursor para o meio da tela;
L - Move o cursor para a última linha da tela;
h - Move o cursor um caractere à esquerda;
j - Move o cursor para a próxima linha;
k - Move o cursor para linha anterior;
l - Move o cursor um caractere à direita;
w - Move o cursor para o início da próxima palavra;
W - Move o cursor para o início da próxima palavra, separadas por espaço;
b - Move o cursor para o início da palavra anterior;
B - Move o cursor para o início da palavra anterior separadas por espaço;
0(zero) - Move o cursor para o início da linha atual;
^ - Move o cursor para o primeiro caractere não branco da linha atual;
$ - Move o cursor para o final da linha atual;
nG - Move o cursor para a linha n;
:n - Move o cursor para a linha n;
gg - Move o cursor para a primeira linha do arquivo;
G - Move o cursor para a última linha do arquivo.
Comandos para alteração do texto:
x - Deleta o caractere que está sob o cursor;
dw - Deleta a palavra, da posição atual do cursor até o final;
dd - Deleta a linha atual, e copia o conteúdo para área de transferência;
D - Deleta a linha a partir da posição atual do cursor até o final;
:A,Bd - Deleta da linha A até a linha B, copia para área de transferência;
rx - Substitui o caractere sob o cursor pelo especificado em x;
u - Desfaz a última modificação;
U - Desfaz todas as modificações feitas na linha atual;
J - Une a linha corrente a próxima;
yy - ECopia 1 linha para a área de transferência;
yNy - Copia N linhas para a área de transferência;
p - Cola o conteúdo da área de transferência;
Np - Cola N vezes o conteúdo da área de transferência;
cc - Apaga o conteúdo da linha, e copia para área de transferência;
cNc - Apaga o conteúdo de N linhas, e copia para área de transferência (a partir da linha atual);
:%s/string1/string2/g - Substitui "string1" por "string2";
ndd - Deleta o conteúdo de n linhas a partir da linha atual;
nD - Deleta a linha a partir da posição atual do cursor até o fim de n linhas.
Comandos para salvar e sair:
:wq, ZZ ou :x - Salvam o arquivo e saem do editor;
:w nome_do_arquivo - Salva o arquivo corrente com o nome especificado;
:w! nome_do_arquivo - O mesmo que :w, mas forçando sobrescrita;
:q - Sai do editor;
:q! - Sai do editor sem salvar as alterações realizadas.
Abrir novo arquivo
:sp [nome do arquivo] - abre um novo arquivo e divide sua tela horizontalmente para mostrar mais de um buffer
:vsp [nome do arquivo] - abre um novo arquivo e divide sua tela verticalmente para mostrar mais de um buffer
Ctrl + W para navegar entre as telas
No arquivo disponível para download vai encontrar um material INCRÍVEL com os 500 comandos mais úteis do Linux, leiam o livro, será seu novo PDF de cabeceira rs.
Ao final realize o teste para avaliarmos o conhecimento absorvido.
-v exibe as linhas que não possui match
-w Seleciona as linhas que contém match exato (palavra toda)
-B Inclui o numero de linhas de match acima
-A Inclui o numero de linhas de match abaixo
-C Inclui o numero de linhas de match abaixo e acima
-c Contar o numero de match
-r recursivo
-n exibe o numero das linhas
-i ignora se as letras estão maiúsculas ou minúsculas
-m NUM Para de contar ao obter o NUM (numero) de matchs esperado
| wc-l -conta numero de saídas exatas para a expressão
| awk '{print $2}' exibe o segundo retorno do comando
> cria/sobrescreve a saída em um arquivo
>> incrementa a saída em um arquivo
Operadores lógicos
| operador lógico
"*" desconsidera o inicio ou fim da expressão
Primeiro, você vai querer ter certeza de que o sistema operacional do servidor está atualizado.
yum update -y
Desabilite o SELinux alterando "enforcing" para "disabled" em /etc/selinux/config. Use um editor de texto ou copie e cole este comando.
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
Depois de atualizar e desativar o SELinux, você precisará reiniciar.
reboot
Em seguida, você vai querer resolver dependências básicas.
yum -y install htop gcc-c++ make gnutls-devel kernel-devel libxml2-devel ncurses-devel subversion doxygen texinfo curl-devel net-snmp-devel neon-devel uuid-devel libuuid-devel sqlite-devel sqlite git speex-devel gsm-devel unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel java php php-cli php-gd php-mysql php-mbstring php-pgsql php-xml php-pdo httpd telnet tcpdump nmap ffmpeg sox screen dialog wget openssl-devel ncurses-devel newt-devel libxml2-devel kernel-devel gcc gcc-c++ sqlite-devel libuuid-devel kernel-devel-$(uname -r)
Altere o diretório /usr/src/ para armazenar seu código fonte.
cd /usr/src/
Baixe os arquivos fonte
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-13.15.0.tar.gz; wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.6.0.tar.gz; wget http://downloads.Asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz ; wget http://www.digip.org/jansson/releases/jansson-2.5.tar.gz
Extrair os arquivos.
tar zxvf dahdi*
tar zxvf libpri*
tar zxvf asterisk*
tar -zxf jansson*
Para o próximo conjunto de comandos é importante seguir a ordem adequada: Jansson primeiro, DAHDI depois, depois libpri, depois Asterisk.
Instale.
cd jansson*
./configure --prefix=/usr/ && make clean && make && make install && ldconfig
cd /usr/src/dahdi*
make && make install && make config
Instale libpri.
cd /usr/src/libpri*
make && make install
Mude para o diretório Asterisco.
cd /usr/src/asterisk*
./configure --libdir=/usr/lib64 && make menuselect && make && make install
Quando o comando menuselect for executado, selecione suas opções e escolha "Salvar e Sair" e a instalação continuará.
O
pcional: Se você se deparar com erros, você vai querer limpar o diretório de instalação antes de recompilar.
make clean && make distclean
Depois de ter uma instalação sem erros, copie os arquivos de amostra do subdiretório de configs em /etc/asterisk.
make samples
Em seguida, adicione o script inicial do Asterisco ao diretório /etc/init.d/
make config
ldconfig
Reinicie o Asterisk
/etc/init.d/asterisk restart
Conecte-se a CLI Asterisk para testar
rasterisk
Segue abaixo configurações utilizadas:
Dentro de sip.conf #include sip_ramais_custom.conf
No arquivo criado:
[1010]
callerid="Ramal teste 1010"
secret=1010@meuramal@123
context=from-geral
language=pt_BR
type=friend
nat=force_rport,comedia
host=dynamic
port=5060
qualify=yes
dtmfmode=rfc2833
canreinvite=no
callgroup=1
pickupgroup=1
call-limit=1
disallow=all
allow=alaw
allow=ulaw
deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.0.0
[1020]
callerid="Ramal teste 1020"
secret=1020@meuramal@123
context=from-geral
language=pt_BR
type=friend
nat=force_rport,comedia
host=dynamic
port=5060
qualify=yes
dtmfmode=rfc2833
canreinvite=no
callgroup=1
pickupgroup=1
call-limit=1
disallow=all
allow=alaw
allow=ulaw
deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.0.0
Link do softphone: https://www.microsip.org/downloads
Arquivos modificados
extensions.conf
#include extensions_contexto.conf
#include extensions_rota.conf
extensions_contexto.conf
[from-geral]
include => out-ramais
extensions_rota.conf
[out-ramais]
;X numerais 0 a 9
;Z numerais de 1 a 9
;s string
;[4-6] ou [456] intervalos
;[13] numeros específicos
exten => _10[12]0,1,NoOp(Chamada para Ramal: ${EXTEN});
same => n,MSet(DIALOPTIONS=Ttr,DIALTIME=45)
same => n,Dial(SIP/${EXTEN},${DIALTIME},${DIALOPTIONS});
same => n,Hangup();
Nessa aula vamos aprender a analisar os log´s entre ligações
;;Comandos utilizados
yum install espeak -y
espeak -v brazil -s 140 "O numero que você ligou está temporariamente indisponível" -w indisponivel.wav
espeak -v brazil -s 140 "O numero que você ligou não pode atender no momento" -w nao_atende.wav
sox indisponivel.wav -t raw -r 8000 -s -c 1 indisponivel.sln
sox nao_atende.wav -t raw -r 8000 -s -c 1 nao_atende.sln
cd /var/lib/asterisk/sounds/
mkdir custom
mv indisponivel.sln nao_atende.sln /var/lib/asterisk/sounds/custom/
;;Novo dialplan em /etc/asterisk/extensions_rota.conf
exten => _10[12]0,1,NoOp(Chamada do ramal com nome ${CALLERID(name)} e numero ${CALLERID(num)} para Ramal: ${EXTEN});
same => n,MSet(DIALOPTIONS=Ttr,DIALTIME=5)
same => n,Dial(SIP/${EXTEN},${DIALTIME},${DIALOPTIONS});
same => n,NoOp(Status da chamada ${DIALSTATUS} e causa do desligamento ${HANGUPCAUSE})
same => n,ExecIf($["${DIALSTATUS}"="NOANSWER"]?Playback(/var/lib/asterisk/sounds/custom/nao_atende))
same => n,ExecIf($["${DIALSTATUS}"="CHANUNAVAIL"]?Playback(/var/lib/asterisk/sounds/custom/indisponivel))
same => n,NoOp(teste transbordo)
same => n,Dial(SIP/1035,${DIALTIME},${DIALOPTIONS});
same => n,Hangup();
Nessa aula aprenderemos a criar uma URA com 2 opções
Venho compartilhar com vocês meu conhecimento em redes, linux e asterisk buscando agregar conhecimento e formar melhores profissionais no mercado de trabalho.
Ao concluir o curso você terá um PBX básico em asterisk com os conceitos e introdução para desenvolver e avançar em seu desenvolvimento, podendo utilizar ferramentas mais avançadas e montar sua própria central com chamadas de voz, vídeo, salas de conferências filas, etc.