He montado un sistema asterisk 1.4.6 con una tarjeta RDSI Billion, una
cuenta SIP con voipStunt y un par de teléfonos SIP para empezar a
trastear.
Todo me funciona bien cuando funciona Internet, pero si provoco la
caida del ADSL (saco el cable del router), como en la cuenta SIP de
voipStunt tengo en el users.conf la linea "host = sip.voipStunt.com"
comienza a hacer consultas al DNS que no puede resolver porque no hay
conexión con Internet y no se puede hacer ni recibir ningún tipo de
llamada ni siquiera entre extensiones ni por la RDSI ni nada.
El mensaje que sale es "chan_sip.c:7317 transmit_register : Probably a
DNS error for registration ........"
La cuestión es que tengo puesto en sip.conf srvlookup=no pero no me
soluciona nada, en cambio si en la definición de la cuenta SIP cambio
el host=sip.voipstunt.com por su dirección IP correspondiente todo
funciona bien aunque se caiga el ADSL, pero claro hay proveedores que
pueden cambiar su IP con asiduidad por lo que no es un método
práctico.
Gracias por vuestra ayuda.
JC
YUM
yum -y install bind bind-libs caching-nameserver bind-chroot
despues:
chkconfig named on
service named start
despues en el archivo /etc/resolv.conf:
search localdomain
nameserver 127.0.0.1
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx
donde las xxx, son las DNS de los ISP
Esto te sirve mientras no busques resolver alguna dirección nueva, te
resuleve las que tiene en cache
Bueno saludos y espero que te solucione el problema.
Cristian Luna
Analista de Sistemas
He realizado pruebas en lugar de con bind que me parece excesivo para
un dns-cache sólo, con dnsmasq (uso Debian) y la verdad es que aunque
mejora no lo soluciona totalmente.
El caso es que cuando se cae la conexión con Internet y Asterisk
necesita hacer un re-registro SIP, se hace una petición al DNS y éste
(dnsmasq en mi caso) le devuelve lo que tiene en caché durante un
tiempo muy corto, pero luego hace forwards a los siguientes DNS que
tiene en resolv.conf y es ahí cuando se corta todo. Estoy investigando
dnsmasq a ver si hay modo de forzar la respuesta de cache cuando no se
pueda hacer forward a los DNS externos, ya comentaré.
Lo que no entiendo muy bien es por qué Asterisk maneja este tema así,
cuando lo lógico sería que si no puede hacer una consulta a DNSs para
habilitar un canal SIP, debería deshabilitar ese canal y listo y no
bloquear todos los peers incluidas extensiones.
¿No es ésto un bug?
Si alguien con más experiencia que yo, quiere aportar algo lo
agradecería.
JC
Es un bug del asterisk. Cuando no tiene acceso a un DNS todo el SIP se
queda flipado y no responde, no sé si con IAX ocurre lo mismo...
Yo no lo habría explicado mejor, se queda "flipao" XDDD
Ahora en serio, a ver si lo resuelven. En su día investigué el bug y me
pareció que simplemente explicaban la causa y delegaban (echaban la culpa) a
Linux y su resolución de nombres bloqueante o noséqué.
--
Iñaki Baz Castillo
i...@in.ilimit.es
On 12 jul, 22:47, "Elio Rojano" <hel...@gmail.com> wrote:
> ¿¿¿Resolución de nombres bloqueantes????
> No querrás decir que se superaba el límite de ficheros abiertos que trae de
> serie Linux al intentar hacer conexiones al exterior??? :)
Desgraciadamente, el libresolv estándar de linux (y de muchos otros
sistemas unix) es bloqueante (síncrono) lo que quiere decir que cuando
un proceso intenta hacer una resolución de nombres (vía
gethostbyname() por ejemplo) el proceso se queda bloqueado hasta que
reciba una respuesta del libresolv. Así que efectivamente, asterisk
puede bloquearse mientras intenta hacer una resolución de nombres.
> ¿A alguno se le ha ocurrido instalar Asterisk en una red sin conexión a
> internet? Pues funciona. :)
Funciona siempre que:
- Uses direcciones ip en lugar de hostnames
- Dispones de un dns interno que te resuelve tus propios hostnames
- Los hostnames están en el /etc/hosts
Saludos
JesusR.
http://www.jerocu.net
Pues ... (sigue más abajo)
> El día 12/07/07, JesusR <jer...@gmail.com> escribió:
> > Hola,
> >
> > On 12 jul, 22:47, "Elio Rojano" <hel...@gmail.com> wrote:
> > > ¿¿¿Resolución de nombres bloqueantes????
> > > No querrás decir que se superaba el límite de ficheros abiertos que
> > > trae
> >
> > de
> >
> > > serie Linux al intentar hacer conexiones al exterior??? :)
> >
> > Desgraciadamente, el libresolv estándar de linux (y de muchos otros
> > sistemas unix) es bloqueante (síncrono) lo que quiere decir que cuando
> > un proceso intenta hacer una resolución de nombres (vía
> > gethostbyname() por ejemplo) el proceso se queda bloqueado hasta que
> > reciba una respuesta del libresolv. Así que efectivamente, asterisk
> > puede bloquearse mientras intenta hacer una resolución de nombres.
Para eso está libadns que la usan muchos programas que tienen ese "problema",
reconozcamolo, Asterisk tiene mucho "marketing bonito" delante, pero las
tripas dan ASCO, cantidad de partes del código parecen escritas por un alumno
de primero de carrera.
Yo participo también en el proyecto Callweaver y utilizo Asterisk, pero lo
primero es lo primero, reconocer las "chapuzillas" ;-)
De todas formas la resolución de nombres puede desactivarse en Asterisk,
porque a no ser que vayas a usar ENUM, para poco más te hace falta la
resolución de nombres.
> > > ¿A alguno se le ha ocurrido instalar Asterisk en una red sin conexión a
> > > internet? Pues funciona. :)
> >
> > Funciona siempre que:
> >
> > - Uses direcciones ip en lugar de hostnames
> > - Dispones de un dns interno que te resuelve tus propios hostnames
> > - Los hostnames están en el /etc/hosts
A ver ... nadie va a usar hostnames en vez de IP's sin tener un servidor DNS o
el archivo hosts correctamente configurado, quien lo haga es un suicida.
Los terminales se registran por IP, no por DNS y usar como "host=" algo que no
se a "dynamic" me parece una tontería, que no tiene sentido más allá de un
burdo intento de limitar a un usuario a que se conecte desde una IP concreta,
porque llegados al caso, si usar un "host=nombreequipo" en vez
de "host=dynamic" y nombreequipo cambia de ip de forma dinámica ... ¿no sería
lo mismo que haber puesto "dynamic"?
Muchas veces los problemas en las instalaciones viene derivados de un "exceso
de celo" por parte del administrador, que no suele estar de más, pero que
otras veces no hace más que generar problemas.
--
Saludos.
Raúl Alexis Betancor Santana
Dimensión Virtual S.L.
> > > > ¿¿¿Resolución de nombres bloqueantes????
> > > > No querrás decir que se superaba el límite de ficheros abiertos que
> > > > trae
>
> > > de
>
> > > > serie Linux al intentar hacer conexiones al exterior??? :)
>
> > > Desgraciadamente, el libresolv estándar de linux (y de muchos otros
> > > sistemas unix) es bloqueante (síncrono) lo que quiere decir que cuando
> > > un proceso intenta hacer una resolución de nombres (vía
> > > gethostbyname() por ejemplo) el proceso se queda bloqueado hasta que
> > > reciba una respuesta del libresolv. Así que efectivamente, asterisk
> > > puede bloquearse mientras intenta hacer una resolución de nombres.
>
> Para eso está libadns que la usan muchos programas que tienen ese "problema",
> reconozcamolo, Asterisk tiene mucho "marketing bonito" delante, pero las
> tripas dan ASCO, cantidad de partes del código parecen escritas por un alumno
> de primero de carrera.
Sí, está libadns y otras pero la realidad es que asterisk usa
libresolv y los threads se bloquean mientras resuelven :)
Respecto al código, basta ver el chan_sip.c :-/
> De todas formas la resolución de nombres puede desactivarse en Asterisk,
> porque a no ser que vayas a usar ENUM, para poco más te hace falta la
> resolución de nombres.
Mmmmm... puedes usar resolución de nombres para más cosas... registros
SRV por ejemplo. Bien usados son muy útiles.
> > > > ¿A alguno se le ha ocurrido instalar Asterisk en una red sin conexión a
> > > > internet? Pues funciona. :)
>
> > > Funciona siempre que:
>
> > > - Uses direcciones ip en lugar de hostnames
> > > - Dispones de un dns interno que te resuelve tus propios hostnames
> > > - Los hostnames están en el /etc/hosts
>
> A ver ... nadie va a usar hostnames en vez de IP's sin tener un servidor DNS o
> el archivo hosts correctamente configurado, quien lo haga es un suicida.
Este mundo está lleno de suicidas digitales :)
Saludos
JesusR.
http://www.jerocu.net
--
Angel Roma
..."Email redactado con Thunderbird Portable v2 - En"
.$$$$$$$$$$$$$$$=..
.$7$7.. .7$$7:.
.$$:. ,$7.7
.$7. 7$$$$ .$$77
..$$. $$$$$ .$$$7
..7$ .?. $$$$$ .?. 7$$$.
$.$. .$$$7. $$$$7 .7$$$. .$$$.
.777. .$$$$$$77$$$77$$$$$7. $$$,
$$$~ .7$$$$$$$$$$$$$7. .$$$.
.$$7 .7$$$$$$$7: ?$$$.
$$$ ?7$$$$$$$$$$I .$$$7
$$$ .7$$$$$$$$$$$$$$$$ :$$$.
$$$ $$$$$$7$$$$$$$$$$$$ .$$$.
$$$ $$$ 7$$$7 .$$$ .$$$.
$$$$ $$$$7 .$$$.
7$$$7 7$$$$ 7$$$
$$$$$ $$$
$$$$7. $$ (TM)
$$$$$$$. .7$$$$$$ $$
$$$$$$$$$$$$7$$$$$$$$$.$$$$$$
$$$$$$$$$$$$$$$$.
En jerga barriobajera viene a decir algo así como "atontao". :)