Quando 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):
Se você quiser pode acrescentar no seu script de firewall ou então:
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ê):
02 | echo 1 > /proc/sys/net/ipv4/ip_forward |
03 | PORTAS_ASTERISK= "2727,4569,5036" |
04 | SERVIDOR_ASTERISK= "192.168.0.50" |
06 | iptables -A FORWARD -p udp -m multiport --sport $PORTAS_ASTERISK -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT |
07 | iptables -A FORWARD -p udp -m multiport --dport $PORTAS_ASTERISK -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT |
08 | iptables -A FORWARD -p udp --sport 5004:5082 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT |
09 | iptables -A FORWARD -p udp --dport 5004:5082 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT |
10 | iptables -A FORWARD -p udp --sport 10000:20000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT |
11 | iptables -A FORWARD -p udp --sport 10000:20000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT |
13 | iptables -t nat -A POSTROUTING -p udp --dport 5004:5082 -d $SERVIDOR_ASTERISK -j MASQUERADE |
14 | iptables -t nat -A PREROUTING -p udp -i $WAN --dport 5004:5082 -j DNAT --to $SERVIDOR_ASTERISK |
15 | iptables -t nat -A POSTROUTING -p udp --dport 10000:20000 -d $SERVIDOR_ASTERISK -j MASQUERADE |
16 | iptables -t nat -A PREROUTING -p udp -i $WAN --dport 10000:20000 -j DNAT --to $SERVIDOR_ASTERISK |
17 | iptables -t nat -A POSTROUTING -p udp --dport 5036 -d $SERVIDOR_ASTERISK -j MASQUERADE |
18 | iptables -t nat -A PREROUTING -p udp -i $WAN --dport 5036 -j DNAT --to $SERVIDOR_ASTERISK |
19 | iptables -t nat -A POSTROUTING -p udp --dport 2727 -d $SERVIDOR_ASTERISK -j MASQUERADE |
20 | iptables -t nat -A PREROUTING -p udp -i $WAN --dport 2727 -j DNAT --to $SERVIDOR_ASTERISK |
21 | iptables -t nat -A POSTROUTING -p udp --dport 4569 -d $SERVIDOR_ASTERISK -j MASQUERADE |
22 | iptables -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:
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
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:
Postar um comentário