# El manual de &lisa;

## Introducción

&lisa; intenta proporcionar una especie de «entorno de red», pero recayendo sólo en la pila TCP/IP, SMB o similares no son necesarios.

Es completamente independiente de &kde;/&Qt;.

La lista de máquinas activas es proporcionada por el puerto TCP 7741.

&lisa; soporta dos maneras de encontrar máquinas:

1. Usted debe proporcionar a &lisa; un rango de direcciones IP,entonces &lisa; mandará peticiones de eco ICMP a todas las direcciones IP proporcionadas, y esperará las respuestas.

2. Puede decirle a &lisa; que ejecute `nmblookup` `"*`. La herramienta de línea de órdenes `nmblookup` debe venir instalada con el paquete Samba. `nmblookup` `"*"` envía una emisión a las redes adjuntas, y todas las máquinas ejecutando servicios SMB responderán esta emisión.

## Cómo funciona

En el archivo de configuración debe proveer un rango de direcciones IP, las cuales &lisa; debe comprobar para ver si se están ejecutando.

En el caso más simple esto puede ser su dirección de red/máscara de subred, entonces &lisa; comprobará cada posible máquina de su red para ver si está ejecutándose.

Las máquinas son comprobadas usando peticiones de eco ICMP. Para ser capaz de enviar y recibir peticiones y respuestas de eco ICMP, el programa necesita abrir lo que se llama un «raw socket». Por lo tanto necesita privilegios de `root`. Este socket es abierto justo después del inicio del programa, después de abrir satisfactoriamente el socket, los privilegios de root son descartados inmediatamente (ver `main.cpp` y `strictmain.cpp`).

Si configura &lisa; de manera que también use `nmblookup`, hará `popen("nmblookup \"*\"")` y procesará los resultados.

Puesto que las peticiones ICMP y las emisiones pueden causar algún trafico de red si hay más de un servidor ejecutándose en una red, los servidores cooperan con los otros. Antes de empezar a hacer ping (o `nmblookup`), envían una emisión al puerto 7741.

Si alguien contesta a la emisión, recuperarán la lista completa de máquinas ejecutándose a través del puerto TCP 7741 de esta máquina y no empezará a hacer ping (o `nmblookup`).

Si nadie responde, el anfitrión que envió la emisión empezará a hacer ping a las máquinas (o `nmblookup`) y entonces abrirá un socket que escucha para las emisiones mencionadas. Si el anfitrión recibió una respuesta a su emisión, no tendrá el socket para escuchar las emisiones abierto. Así normalmente justo uno de los servidores tendrá abierto este socket y solo éste hará actualmente ping (o `nmblookup`) a las máquinas.

En otras palabras, los servidores son perezosos, trabajan de la forma«sólo haré algo si nadie más puede hacerlo por mi».

Hay otra funcionalidad que reduce la carga de la red.

Digamos que usted configuró &lisa; para actualizar cada 10 minutos. Ahora no accede a su servidor muy frecuentemente. Si nadie accede al servidor en el último periodo de actualización, el servidor actualizará (tanto él mismo como desde el que actualmente hace el trabajo) y entonces doblará su periodo de actualización, &ie; la siguiente actualización ocurrirá después de 20 minutos.

Esto sucede 4 veces, así que si nadie accede al servidor con periodo de actualización de 10 minutos por un largo periodo, su intervalo de actualización se incrementará hasta 160 minutos, casi tres horas. Si entonces alguien accede a los datos del servidor, recibirá una lista antigua (hasta 160 minutos antigua). Accediendo al servidor reiniciará su intervalo de actualización a su valor inicial, &ie; 10 minutos e inmediatamente empezará actualizando si la última actualización es más de estos 10 minutos pasados. Esto significa que si recibe una lista muy vieja, puede probar de nuevo unos segundos después y debe debe obtener una versión actual.

Esto tendrá rápido efecto sobre los servidores, los cuales no harán ping (o nmblookup) a sí mismos, desde que sólo un usuario les acceda, y tendrá menos efecto sobre el servidor que hace ping (o `nmblookup`), ya que este servidor es accedido desde todos los otros servidores en la red.

De esta manera es posible que muchas máquinas en una red ejecuten este servidor, pero la carga de la red se mantiene baja. Para el usuario no es necesario saber si hay un servidor (&ie; un servidor de nombres o de archivos o lo que sea) en la red el cual también ejecute &lisa;. Él puede ejecutar &lisa; localmente y &lisa; detectará si hay uno, transparentemente para el usuario.

El primer cliente para &lisa; es un ioslave para &kde; 2, así el usuario puede introducir `lan://localhost/` o `lan:/`, los cuales ambos contactarán con &lisa; en su propio sistema.

Si hay una máquina que se ejecute todo el tiempo y el usuario sabe que esta máquina ejecuta &lisa;, puede usar su cliente &lisa; directamente con este servidor (sería con el mencionado ioslave `lan://el_nombre_del_servidor/`).

Si no quiere que su &lisa; tome parte en la emisión, pero siempre haga ping, haga que use otro puerto con la opción de línea de órdenes `--port` o `-p`. ¡Esto no está recomendado!

Si envía `SIGHUP` a &lisa;, releerá su archivo de configuración. Si envía `SIGUSR1` a &lisa;, imprimirá información de estado a la salida estándar.

Los datos proporcionados a través del socket tienen un formato simple: `<dirección ip decimal ordenado por por byte de red><un espacio 0x20><nombre completo de la máquina><una terminación '\0'><nueva línea '\n'<` y la última línea`0 succeeded<'\n'>`

Por ejemplo,

    17302538 alguna_máquina.loquesea.es
    18285834 linux.loquesea.es
    17827082 nameserver.loquesea.es
    0 succeeded

Esto debe hacerlo fácilmente analizable.

Si hay normas de seguridad muy estrictas en su red, algunas personas pueden considerar el hacer ping un ataque potencial. Si tiene problemas con esto, pruebe la versión restringida, &reslisa;.

## &reslisa;

Si usted tiene unas reglas de seguridad muy estrictas en su red o no quiere abrir otro puerto o cualquier cosa, puede usar &reslisa;.

Con &reslisa; usted puede hacer ping a redes enteras y rangos de direcciones, usted puede dar a &reslisa; actualmente hasta 64 máquinas por sus nombres en su archivo de configuración. Estas máquinas recibirán pings. Todavía puede hacer uso de `nmblookup`.

&reslisa; sólo proveerá la información a través de un socket de dominio Unix, &ie; no sobre la red. El nombre del socket es`/tmp/resLisa-SuNombredeEntrada` así &reslisa; puede ser ejecutado por más usuarios a salvo en una máquina.

Puesto que no debe producir ningún riesgo de seguridad de ningún tipo, es seguro instalar &reslisa; con setuid `root`. Los privilegios de `root` serán desechados justo después del inicio (ver `strictmain.cpp`), son sólo necesarios para crear un raw socket para enviar las peticiones de eco ICMP.

Además no enviará o recibirá emisiones. El primer cliente para éste es también un ioslave para &kde; 2 (`rlan:/` en &konqueror; por ejemplo.)

## El Archivo de Configuración.

Ahora un ejemplo de configuración:

    PingAddresses = 192.168.100.0/255.255.255.0;192.168.100.10-192.168.199.19;192.168.200.1;192-192.168-168.100-199.0-9;
    PingNames = bb_mail;
    AllowedAddresses = 192.168.0.0/255.255.0.0
    BroadcastNetwork = 192.168.100.0/255.255.255.0
    SearchUsingNmblookup = 1                #probar también nmblookup
    FirstWait = 30                          #30 centenares de segundos
    SecondWait = -1                         #sólo un intento
    #SecondWait = 60                         #intentarlo dos veces y la segunda vez esperar 0.6 segundos
    UpdatePeriod = 300                      #actualizar después de 300 segs
    DeliverUnnamedHosts = 0                 #no publicar máquinas sin nombre
    MaxPingsAtOnce = 256                    #enviar hasta 256 peticiones de eco ICMP al mismo tiempo

### `PingAddresses`

Esta es probablemente la entrada más importante.

Aquí dice a qué direcciones se hará ping. Puede especificar múltiples rangos, son divididos por puntos y coma.

Hay cuatro formas posibles de definir direcciones:

dirección de red/máscara de red

- 192.168.100.0/255.255.255.0, &ie; una dirección IP y la máscara de red asignada.

  Esto no tiene que ser dirección de red y la máscara de subred de su máquina. Por ejemplo si usted tiene 10.0.0.0/255.0.0.0 como su propia dirección, usted puede especificar 10.1.2.0/255.255.255.0 si está solo interesado en estas direcciones. La combinación dirección IP-máscara de red debe ser separada por una barra «/»y la dirección no tiene porqué ser una dirección de red real, puede ser también la dirección de una máquina en la red deseada, &ie; 10.12.34.67/255.0.0.0 es lo mismo que 10.0.0.0/255.0.0.0 .

un rango de direcciones IP

- Por ejemplo: 192.168.100.10-192.168.199.19

  Una dirección-IP donde empezar a hacer ping y una dirección-IP donde acabar de hacer ping.

  Ambas direcciones deben estar divididas por un «-».

  En este ejemplo esto producirá 199-100+1=100, 100*256=25.600, 25.600+(19-10+1)=25.590 direcciones.

Una dirección IP, representada por rangos de cada uno de los cuatro números decimales

- Una dirección IP puede estar representada por sus cuatro números decimales, y puede especificar rangos para cada uno de estos cuatro números: 192-192.169-171.100-199.0-9

  En este ejemplo, a todas las direcciones IP con 192 como primer número, segundo número de 168 a 168, tercer número de 100 hasta 199 y último número de 0 hasta 9 se les hará ping. Esto dará 1*1*100*10=1.000 direcciones.

  Esto probablemente sólo es útil en casos raros. Aquí debe proporcionar rangos para cada cuatro números, siempre divididos por «-».

Direcciones IP únicas o nombres de máquinas

- La dirección IP o nombre de máquina de cualquier máquina en la que esté particularmente interesado.

Es también válido dejar esta entrada vacía.

### `PingNames`

Aquí puede adicionalmente especificar máquinas a las que hacer ping usando sus nombres. Los nombres tienen que ser separados por puntos y coma.

Es también válido dejar esta entrada vacía.

### `AllowedAddresses`

Esto es también muy importante. &lisa; sólo hará ping a direcciones, aceptará clientes y responderá a emisiones de direcciones, las cuales estén cubiertas por las direcciones dadas en esta línea. Puede añadir hasta 32 direcciones de red/máscaras de red o direcciones simples. Sepárelas por ; y ¡no ponga espacios en blanco entre direcciones!

Por ejemplo, 192.168.0.0/255.255.0.0;192.169.0.0

Una red completa y una dirección sencilla son válidas. Siempre haga esto tan estricto sea posible, habitualmente su dirección de red/máscara de subred es una buena opción.

### `BroadcastNetwork`

Esta entrada contiene exactamente una dirección de red/máscara de subred. Peticiones de broadcast le serán enviadas a esta red. Normalmente esto será su propia dirección de red/máscara de subred, por ejemplo: 192.168.0.0/255.255.0.0

### `SearchUsingNmblookup`

Aquí puede dar `0` o `1`. `1` significa que &lisa; ejecutará`nmblookup` `"*"` y analizará la salida de esta orden. Esto produce menos tráfico de red que el hacer ping, pero sólo obtendrá máquinas las cuales tengan un servicio SMB ejecutándose (máquinas &Windows; o máquinas ejecutando samba).

Si activa esta opción y también da direcciones IP al ping, entonces `nmblookup` será ejecutado primero y se empezará a hacer ping. Entonces sólo se hará ping a direcciones, las cuales no hayan sido reveladas por `nmblookup`. Esto debería rebajar la carga de la red ligeramente.

### `FirstWait`

Si &lisa; hace ping, &ie; si envía peticiones de eco ICMP, enviará un grupo de peticiones al mismo tiempo, y entonces esperará para los centenares de segundos que especifique aquí. Habitualmente, valores de 5 a 50 deberían ser buenos, el máximo es 99 (da 0.99 segundos, bastante tiempo). Intente hacer este valor tan pequeño como sea posible mientras todavía esté encontrando todas las máquinas activas.

### `SecondWait`

Después de que &lisa; haya enviado las peticiones de eco la primera vez, puede ser posible que algunas máquinas no sean encontradas. Para mejorar los resultados, &lisa; puede hacer ping una segunda vez. Esta vez hará ping sólo a máquinas de las cuales no recibió respuestas. Si obtiene buenos resultados haciendo ping sólo una vez, puede deshabilitar la segunda vez estableciendo SegundaEspera a `-1`.

De otra manera sería buena idea hacer este valor un poco mayor que el valor de `FirstWait`, puesto que las máquinas que no fueron encontradas en el primer intento, son probablemente más lentas o están más alejadas, así que tomará algunos milisegundos más para responder. Habitualmente valores de 5 a 50 suelen ser buenos o -1 para deshabilitar la segunda exploración. El máximo es 99 (da 0.99 segundos, un periodo bastante grande).

### `UpdatePeriod`

Este es el intervalo después del cual &lisa; actualizará. Después de este tiempo &lisa; hará ping de nuevo o `nmblookup` o tomará la lista de máquinas del servidor &lisa; el cual haga pings actualmente.

Los valores válidos están entre 30 segundos y 1800 segundos (media hora). Si tiene una red grande, no haga el intervalo muy pequeño (para mantener bajo la carga de la red). Valores de 300 a 900 segundos (5 a 15 minutos) son una buena idea.

Tenga en mente que el periodo de actualización se dobla si nadie accede al servidor, hasta 4 veces, así que el intervalo llegará a ser 16 veces el valor dado aquí, y será restablecido al valor dado si alguien accede al servidor.

### `DeliverUnnamedHosts`

Si es recibida una respuesta a una petición de eco de una dirección IP, donde &lisa; no pudiera determinar un nombre, será sólo entregada sobre el puerto si establece esto a 1.

No estoy seguro si esto es una funcionalidad útil, pero quizás hay algunos dispositivos de infraestructura en su red sin nombres asignados, así que no necesitan ser publicados. Establezca esto a 0 si quiere mantenerlos secretos ;-) Si no está seguro, diga 0.

### MaxPingsAtOnce

Cuando envía los ping (peticiones de eco), &lisa; envía un grupo de estos al mismo tiempo y entonces espera las respuestas. De manera predeterminada se envían 256 pings a la vez, normalmente no necesitará cambiar este valor. Si lo hace mucho mayor, la memoria temporal interna que recibe las respuestas se hará muy pequeña, si lo hace demasiado pequeño, la actualización se hará más lenta.

### Tres archivos de ejemplo más

#### FIXME

Usted es un miembro de una pequeña red con máscara de red de 24 bits, &ie; hasta 256 máquinas.

    PingAddresses = 192.168.100.0/255.255.255.0
    AllowedAddresses = 192.168.100.0/255.255.255.0
    BroadcastNetwork = 192.168.100.0/255.255.255.0
    SearchUsingNmblookup = 0                         #no use nmblookup
    FirstWait = 20                                   #20 centenares de segundos
    SecondWait = 30                                  #30 centenares de segundos en los segundos intentos
    UpdatePeriod = 300                               #actualizar cada 300 segs
    DeliverUnnamedHosts = 0                          #no publicar máquinas sin nombre

#### Archivo de configuración para máquinas ejecutando SMB sólo.

Sólo está interesado en máquinas ejecutando servicios SMB y no tiene routers en su red:

    AllowedAddresses = 192.168.100.0/255.255.255.0
    BroadcastNetwork = 192.168.100.0/255.255.255.0
    SearchUsingNmblookup = 1                #usar nmblookup
    UpdatePeriod = 300                      #actualizar después de 300 segs
    DeliverUnnamedHosts = 0                 #no publicar máquinas sin nombre

#### Archivo de configuración usando tanto `nmblookup` como pings.

La misma red, pero aquí tanto nmblookup como ping son usados.

    PingAddresses = 192.168.100.0/255.255.255.0
    PingNames = bb_mail
    AllowedAddresses = 192.168.0.0/255.255.0.0
    BroadcastNetwork = 192.168.100.0/255.255.255.0
    SearchUsingNmblookup = 1                #usar también nmblookup
    FirstWait = 30                          #30 centenares de segundos
    SecondWait = -1                         #sólo un intento
    #SecondWait = 60                         #intentarlo dos veces, y en el segundo intentoesperar 0.6 segundos
    UpdatePeriod = 300                      #actualizar después de 300 segs
    DeliverUnnamedHosts = 0                 #no publicar máquinas con nombre
    MaxPingsAtOnce = 256                    #enviar hasta 256 peticiones de eco ICMP a la vez

#### Archivo de configuración para &reslisa;

Y ahora un archivo de configuración para &reslisa;, PingAddresses no es usado por &reslisa;, ni tampoco BroadcastNetwork.

    PingNames = bb_mail;una_máquina;otra_máquina
    AllowedAddresses = 192.168.0.0/255.255.0.0
    SearchUsingNmblookup = 1                # usar nmblookup
    FirstWait = 30                          #30 centenares de segundos
    SecondWait = -1                         #un sólo intento
    #SecondWait = 60                         #intentarlo dos veces, y el segundo intentoesperar 0.6 segundos
    UpdatePeriod = 300                      #actualizar después de 300 segs
    DeliverUnnamedHosts = 1                 #también publicar máquinas sin nombre
    MaxPingsAtOnce = 256                    #enviar hasta 256 peticiones de eco ICMP a la vez

## Opciones de la línea de órdenes y otros usos

Las siguientes opciones de la línea de órdenes son usadas:

`-v`, `--versión`

- Imprime una breve información de versión

`-h`, `--help`

- Da una vista general de las opciones de línea de órdenes

`-u`, `--unix`

- Busca primero en `$`HOME`/.lisarc`, entonces en `/etc/lisarc`. Este es el comportamiento por defecto.

`-k`, `--kde1`

- Busca primero en`$`HOME`/.trinity/share/config/lisarc`, entonces en `$`TDEDIR`/share/config/lisarc`.

`-K`, `--kde2`

- Busca el archivo `lisarc` en cada carpeta devuelta por ejecutar``tde-config` `--path` `config``

`-c`, `--config=``ARCHIVO`

- Lee `ARCHIVO` y no otro archivo de configuración.

`-p`, `--port` `NUMPUERTO`

- Inicia el servidor en este número de puerto. Si usa esto, &lisa; no será capaz de cooperar con otros &lisa;s en la red. Esta opción no está disponible para &reslisa;

Si envía la señal Hangup a &lisa; o &reslisa;, éste leerá su archivo de configuración (``killall` `-HUP lisa``).

Si envía la señal User1 a &lisa; o &reslisa;, éste imprimirá información de estado en la salida estándar (``killall` `-USR1 lisa``). No verá nada si la consola desde la cual &lisa;/&reslisa; fue iniciado ha terminado.

## Créditos y licencias

Derechos de autor de &lisa; y &reslisa;. 2000, 2001. Alexander Neundorf.

Alejandro Exojosuy@badopi.org

Páselo bien, Alexander Neundorf neundorf@kde.org

&underFDL; &underGPL;

## Instalación

&lisa; y &reslisa; necesitan una libstdc++ (usa sólo la clase de cadenas de ella), no necesita ni &Qt; ni &kde;.

&install.compile.documentation;

### Otros requerimientos

Ambos, &reslisa; y &lisa; abren lo que se llama un «raw socket» para enviar y recibir peticiones de eco ICMP (pings). Para hacer esto, necesitan privilegios de `root`.

&lisa; ofrece un servicio en el puerto TCP 7741, y debe ser instalado por el usuario `root` e iniciado cuando el sistema arranca. Depende enormemente de su &OS; como conseguir esto.

&reslisa; pretende ser iniciado por un usuario, no ofrece nada a la red. Necesita ser instalado setuid `root`.

Si usa el ioslave `rlan` para &kde; 2, &reslisa; puede ser arrancado automáticamente.

&lisa; lee el archivo `lisarc`, &reslisa; lee el archivo `reslisarc`. Si quiere ser capaz de configurar ambos desde &kcontrol;, debe iniciarlos usando la opción de línea de órdenes`-K`.

Para más información sobre donde buscan archivos de configuración, lea el capítulo en command-line-options.