Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
Febrero 11, 2012, 03:45:28

Ingresar con nombre de usuario, contraseña y duración de la sesión
Buscar:     Búsqueda Avanzada
Bienvenidos al foro de systemadmin.es!

Registrate al feed para recibir la actividad del foro:
http://foro.systemadmin.es/.xml/?type=rss
424 Mensajes en 119 Temas por 296 Usuarios
Último usuario: KVDay
* Inicio Ayuda Buscar Ingresar Registrarse
+  foro.systemadmin.es
|-+  Linux
| |-+  Aplicaciones
| | |-+  Forzar la escritura del dhcpd.leases
« anterior próximo »
Páginas: [1] Imprimir
Autor Tema: Forzar la escritura del dhcpd.leases  (Leído 3074 veces)
galco
Newbie
*

Karma: +0/-0
Desconectado Desconectado

Mensajes: 4


Ver Perfil
« : Diciembre 12, 2009, 09:39:18 »

Hola,
tengo un portal cautivo que mira el fichero dhcpd.leases antes de ofrecer la pantalla de login para asegurarse que los clientes conectados al SSID realmente han recibido una IP de nuestro dhcp y no es un cliente con una IP estática haciendo trampas. En caso de ser un cliente con una IP estática, en el fichero dhcpd.leases no existe la concesión de la IP y por lo tanto al cliente no se le ofrece la pantalla de login con lo cual no puede navegar fuera de la LAN.

Mi problema es que a veces aún cuando ya he recibido correctamente la IP de mi dhcp3, cuando pido la página de login se ejecuta el código que comprueba que la IP del cliente se encuentra en el dhcpd.leases y por el motivo que sea no me encuentra la IP en el fichero y no me deja loggear.

Cómo estoy conectado en el SSID que toca y la IP me la ha dado el servidor dhcp de turno, creo que el problema es que no se ha escrito en el fichero dhcpd.leases la concesión de la IP, y por lo tanto debe de estar en alguna caché.

Cómo lo hago para asegurarme que cuando el servidor dhcp dé una IP, automáticamente lo escriba en el dhcpd.leases sin pasar por caché? He visto que hay el comando sync pero creo que no lo puedo aplicar a un proceso específico, no? O hay alguna otra solución.

Gracias!
En línea
e-Minguez
Newbie
*

Karma: +0/-0
Desconectado Desconectado

Mensajes: 25


*nix rules


Ver Perfil WWW
« Respuesta #1 : Diciembre 13, 2009, 12:30:16 »

A las bravas, reiniciando el dhcp, casi seguro que lo guarda...
En línea
galco
Newbie
*

Karma: +0/-0
Desconectado Desconectado

Mensajes: 4


Ver Perfil
« Respuesta #2 : Diciembre 13, 2009, 02:00:55 »

Gracias e-Minguez! Pero no me sirve. Cuándo quieres que reinicie el servidor cada vez que asigna un IP el dhcp!? Creo que la solución no va por ahí... Pero gracias por la sugerencia ;-)
En línea
jordi
Administrator
Full Member
*****

Karma: +0/-0
Desconectado Desconectado

Mensajes: 132



Ver Perfil WWW
« Respuesta #3 : Diciembre 13, 2009, 10:17:09 »

Has comprobado que es tema del dhcpd? Quizá es el postal cautivo que no relee el fichero y no el dhcp que no lo escribe.

Ahora no tengo acceso pero mañana haré alguna prueba
En línea
jordi
Administrator
Full Member
*****

Karma: +0/-0
Desconectado Desconectado

Mensajes: 132



Ver Perfil WWW
« Respuesta #4 : Diciembre 14, 2009, 10:12:43 »

Me parece algo del portal cautivo, usas alguno opensource o es algo custom?

(Debo decir que el dhcp yo lo tengo en un OpenBSD, pero debería ser lo mismo)
En línea
galco
Newbie
*

Karma: +0/-0
Desconectado Desconectado

Mensajes: 4


Ver Perfil
« Respuesta #5 : Diciembre 15, 2009, 02:55:50 »

Buenas Jordi,

gracias por tu interés. La solución que estoy utilizando es tino, http://www.cc.puv.fi/~teu/tino/
No estoy seguro 100% seguro que sea problema del dhcpd pero es lo que me parece ya que yo entiendo que una vez tienes una IP i el portal cautivo te devuelve la página de login, ésta es la misma sólo que si estás en el dhcpd.leases va por una rama del if y si no estás en el dhcpd.leases va por la otra...
En línea
jordi
Administrator
Full Member
*****

Karma: +0/-0
Desconectado Desconectado

Mensajes: 132



Ver Perfil WWW
« Respuesta #6 : Diciembre 16, 2009, 12:04:27 »

Al ver esto:

* * * * * www-data /usr/local/tino/tino check

Sin instalarlo, por lo que no estoy seguro que sea lo que me imagino, yo de ti probaría lo siguiente:

En una shell como www-data ejecuta esto:

while true; do /usr/local/tino/tino check; sleep 1; done

Prueba a ver y mira que no salga algún error por algún tema de permisos.

saludos,
« Última modificación: Diciembre 16, 2009, 01:25:58 por jordi » En línea
galco
Newbie
*

Karma: +0/-0
Desconectado Desconectado

Mensajes: 4


Ver Perfil
« Respuesta #7 : Diciembre 18, 2009, 12:19:04 »

Hola,

el problema que tengo no es permanente, sólo me pasa de vez en cuando y ahora mismo no soy capaz de reproducirlo. Aún así, lo que me comentas no lo veo... Lo he hecho y no me sale nada. El check éste, es para dar de baja a los usuarios que tino ya ha dado de alta previamente y evita que puedan navegar de lo contrario no  hace nada. Y aunque se ejecute cada minuto no me importa. Cuando un usuario se da de alta lo da de alta immediatamente y no importa la frecuencia del cron.

El problema creo que está al principio del tino.cgi

Código:
my %leases = tino::active_leases();

my $mac = $leases{ $ENV{'REMOTE_ADDR'} };

if ( $ENV{'REMOTE_ADDR'} eq '127.0.0.1' ) {
        $mac = '00:00:00:00:00:00';
}

unless ($mac) {
        html_start("No active dhcp lease");
        print table( Tr( td("És possible que la IP que tinguis te l'hagis assignat tu mateix estàticament") ) );
        html_end();
        exit 0;
}
En línea
jordi
Administrator
Full Member
*****

Karma: +0/-0
Desconectado Desconectado

Mensajes: 132



Ver Perfil WWW
« Respuesta #8 : Diciembre 19, 2009, 06:51:28 »

Ok, pensaba que el check ese se encargaría de leer las macs del leases.

Se tendría que ver que hace el "tino::active_leases()", pero podría ser perfectamente un tema de concurrencia. Si te vuelve a pasar prueba añadiendo al inicio del tino (antes del active_leases) un pequeño sleep (para que de tiempo a escribir el fichero).

saludos!
En línea
Páginas: [1] Imprimir 
« anterior próximo »
Ir a:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC