sexta-feira, 12 de dezembro de 2008

Listando portas abertas...

Cheguei hoje no serviço e um dos servidores asterisk da minha bancada não registrava os clientes sip, depois de uma manhã de "ratiação", um amigo me deu a dica de comparar as portas abertas em um servidor funcionando com o bugado. E para fazer isso?

netstat -a -n -p

-a => mostra tb conexões estabelecidas, não só as que estão sendo escutadas (all)
-n => mostra o ip e não espera a resolução dos nomes (numeric)
-p => mostra o processo que usa a determinada porta (process)

*também existe a possibilidade de usar --tcp ou --udp

No meu caso usei um |grep asterisk para facilitar, olha só:

root@charqueadas:/var/log/asterisk# netstat -a -n -p |grep asterisk
tcp 0 0 0.0.0.0:2000 0.0.0.0:* OUÇA 6064/asterisk
tcp 0 0 0.0.0.0:1720 0.0.0.0:* OUÇA 6064/asterisk
tcp 0 0 127.0.0.1:47422 127.0.0.1:3306 ESTABELECIDA 6064/asterisk
udp 0 0 0.0.0.0:2727 0.0.0.0:* 6064/asterisk
udp 0 0 0.0.0.0:4520 0.0.0.0:* 6064/asterisk
udp 0 0 200.19.244.99:5060 0.0.0.0:* 6064/asterisk
udp 0 0 200.19.244.99:4569 0.0.0.0:* 6064/asterisk
unix 2 [ ACC ] STREAM OUVINDO 16102 6064/asterisk /var/run/asterisk.ctl
root@charqueadas:/var/log/asterisk#

Agora estou postando depois de resolvido, então a porta 5060, a que uso para o protocolo SIP, não estava aberta, dae fui para os logs e vi que o asterisk realmente estava encontrando problemas com ela.

root@charqueadas:/var/log/asterisk# grep 5060 /var/log/asterisk/*
/var/log/asterisk/messages:[Dec 11 18:10:26] WARNING[5602] chan_sip.c: Failed to bind to 200.19.244.99:5060: Cannot assign requested address
/var/log/asterisk/messages:[Dec 12 08:28:22] WARNING[5493] chan_sip.c: Failed to bind to 200.19.244.99:5060: Cannot assign requested address
/var/log/asterisk/messages:[Dec 12 08:55:18] WARNING[5458] chan_sip.c: Failed to bind to 200.19.244.99:5060: Cannot assign requested address
root@charqueadas:/var/log/asterisk#

Concluímos que o asterisk está tentando escutar a porta antes da placa de rede ganhar o ip do dhcp, dae passei a utilizar curinga (0.0.0.0) no sip.conf e no iax.conf

Té a próxima

2 comentários:

  1. Podes usar o netstat -vantup

    É bem mais completo.

    abraço,

    ResponderExcluir
  2. Lembrei que há uma maneira alternativa (e que eu não recomendo) de fazer aquela mensagem sumir e o Asterisk funcionar:

    # echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind

    Ou fazendo o ajuste correspondente no sysctl.conf:

    # echo 'net.ipv4.ip_nonlocal_bind=1' >> /etc/sysctl.conf

    Isso aí fará o Linux aceitar as chamadas de "bind()" para endereços de rede que ainda não foram atribuídos ao sistema...

    ResponderExcluir