Pesquisar neste blog

segunda-feira, 9 de dezembro de 2013

Como usar ramais SIP em um servidor asterisk por NAT


asteriskQuando queremos proteger um servidor asterisk por trás de um firewall é necessário (pelo menos em IPv4) o uso de NAT para conseguirmos acesso ao mesmo. Vou tentar explicar de uma maneira simples os procedimentos necessários para a configuração.

1 - Subindo os módulos necessários (como root):
1# modprobe iptable_nat
2# modprobe ip_nat_sip
3# modprobe ip_conntrack_sip
Se você quiser pode acrescentar no seu script de firewall ou então:
1# echo "iptable_nat" >> /etc/modules
2# echo "ip_nat_sip" >> /etc/modules
3# echo "ip_conntrack_sip" >> /etc/modules
2 - Configurando o firewall:
Estamos partindo do suposto que você deve ser um admin precupado com a segurança e utiliza a política padrão da Chain FORWARD como DROP
Sendo assim temos:
Porta 2727: MGCP
Porta 4569: IAX2
Porta 5036: IAX1
Portas 5004 a 5082: SIP
Portas 10000 a 20000: RTP (aqui está o segredo para quem tentou fazer nat. A ramal registrou, faz a ligação mas quando atende, fica mudo. Quem ler sobre este protocolo entenderá o porquê)
Vamos ao que interessa então, acrescente ao seu script de firewall o seguinte (na variável que aponta para o servidor asterisk, substitua o valor para o IP correto pra você):
01# Habilitando forward
02echo 1 > /proc/sys/net/ipv4/ip_forward
03PORTAS_ASTERISK="2727,4569,5036"
04SERVIDOR_ASTERISK="192.168.0.50"
05# Forwarding de portas (entrada e saída)
06iptables -A FORWARD -p udp -m multiport --sport $PORTAS_ASTERISK -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
07iptables -A FORWARD -p udp -m multiport --dport $PORTAS_ASTERISK -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
08iptables -A FORWARD -p udp --sport 5004:5082 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
09iptables -A FORWARD -p udp --dport 5004:5082 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
10iptables -A FORWARD -p udp --sport 10000:20000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
11iptables -A FORWARD -p udp --sport 10000:20000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
12# Encaminhamento de portas para o servidor asterisk
13iptables -t nat -A POSTROUTING -p udp --dport 5004:5082 -d $SERVIDOR_ASTERISK -j MASQUERADE
14iptables -t nat -A PREROUTING -p udp -i $WAN --dport 5004:5082 -j DNAT --to $SERVIDOR_ASTERISK
15iptables -t nat -A POSTROUTING -p udp --dport 10000:20000 -d $SERVIDOR_ASTERISK -j MASQUERADE
16iptables -t nat -A PREROUTING -p udp -i $WAN --dport 10000:20000 -j DNAT --to $SERVIDOR_ASTERISK
17iptables -t nat -A POSTROUTING -p udp --dport 5036 -d $SERVIDOR_ASTERISK -j MASQUERADE
18iptables -t nat -A PREROUTING -p udp -i $WAN --dport 5036 -j DNAT --to $SERVIDOR_ASTERISK
19iptables -t nat -A POSTROUTING -p udp --dport 2727 -d $SERVIDOR_ASTERISK -j MASQUERADE
20iptables -t nat -A PREROUTING -p udp -i $WAN --dport 2727 -j DNAT --to $SERVIDOR_ASTERISK
21iptables -t nat -A POSTROUTING -p udp --dport 4569 -d $SERVIDOR_ASTERISK -j MASQUERADE
22iptables -t nat -A PREROUTING -p udp -i $WAN --dport 4569 -j DNAT --to $SERVIDOR_ASTERISK
3 - Preparando o servidor asterisk para suporte a NAT.
edite o arquivo sip.conf no seu servidor:
1# nano -w /etc/asterisk/sip.conf
No final do arquivo, acresente o seguinte:
nat=yes
externip=seu ip público
localnet=sua rede local/máscara de sub-rede
bindport=5060
save e feche o arquivo. Agora reinicie o serviço
1# /etc/init.d/asterisk restart
Pronto! o ambiente está preparado para receber os ramais SIP via NAT. Dúvidas, críticas construtivas e sugestões sempre são bem-vindas. Espero ter ajudado.


Fonte: Softwarelivre-ac.org

Nenhum comentário: