]>

# Manual del Kppp

Bernd Johannes
Wuebben
Jaime
Robles
Traducción al castellano

    ea4abw@amsat.org

11 septiembre 1998
Versión 1.4.8 (Versión traducida 0.3.1, 22 Feb 1999)

Este manual describe la versión 1.4.8 de Kppp. Por favor haz cualquier comentario al autor.

KDE
Spanish
kppp
ppp
protocolo
punto-a-punto

## Introducción

### Acerca de Kppp

`¡POR FAVOR NO OLVIDES LEER EL FAQ ("Preguntas Habituales") GRACIAS!`

Kppp es un marcador telefónico y un interfaz para el pppd. Te permite hacer scripts y configurar la red de forma interactiva. Automatizará la llamada a tu ISP (proveedor de Internet) a la vez que te deja monitorizar todo el proceso. Una vez conectado Kppp te dará un gran número de estadísticas y guardará el tiempo que empleas en la conexión. El terminal y el generador de scripts que tiene incluido te permitirá configurar tu conexión con facilidad. Ya no necesitarás más un programa terminal adicional como el seyon o el minicom para probar y configurar tus conexiones. Kppp calcula el gasto telefónico lo que te permitirá seguir fácilmente lo que llevas gastado en la conexión.

Esperamos que disfrutes este marcador.

### Autores

kppp es un derivado de ezppp 0.6 de Jay Painter. De todas formas, casi todo en kppp fue reescrito por lo que ezppp y kppp no tienen mucho en común.

Los autores principales son:

- `Bernd Johannes Wuebben` wuebben@kde.org

- `Mario Weilguni` mweilguni@sime.com

- `Harri Porten` porten@kde.org

Muchas gracias a las personas siguientes que han contribuido a programar kppp

- Jesus Fuentes Saaverdra por implementar varias opciopnes y trabajo variado.

- Markus Wuebben por el cuadro de diálogo de ATI.

- Peter Silva por sus menús emergentes y otras contribuciones.

- Martin A. Brown Por revisar algunos textos en inglés del programa.

### Licencia y garantía

Kppp es publicada bajo los términos de la GNU-General Public License (GPL). No hay ninguna garantía de que este programa funcione o cualquier otra cosa.

## Instalación

`¡POR FAVOR NO OLVIDES LEER EL FAQ ("Preguntas Habituales") GRACIAS!`

### Cómo conseguir el Kppp

Kppp es una aplicación del proyecto KDE http://www.kde.org. Kppp se puede encontrar en ftp://ftp.kde.org/pub/kde/, el servidor principal de ftp del proyecto KDE.

### Necesidades

Para compilar con éxito el Kppp necesitas las últimas versiones de `libkdecore` y `libkdeui`. Todas las librerías necesarias así como Kppp pueden ser encontradas en ftp://ftp.kde.org/pub/kde/.

### Compilación e instalación.

`¡POR FAVOR NO OLVIDES LEER EL FAQ ("Preguntas Habituales") GRACIAS!`

No he podido probar Kppp en nada más que Linux, pero deberías ser capaz de hacer trabajar a pppd en un conjunto de plataformas entre las que se incluyen pero no se limita a SVR4, Solaris 2, Linux, FreeBSD, NetBSD, SunOS 4, AIX 4, OSF/1 en tanto en cuanto tengas el pppd instalado en esos sistemas.

Si quieres compilar el Kppp en una plataforma distinta de Linux, por favor revisa concienzudamente las primeras líneas de pppstats.cpp y asegúrate de que los "defines" y los "includes" estan O.K. Como casi siempre, la mayoría deberían estar bien. Por favor informame si es necesario hacer algún cambio.

Para compilar e instalar el Kppp en tu sistema, teclea lo siguiente en el directorio de la distribución de Kppp:

    % ./configure
    % make
    % make install

Esto instalará Kppp con el bit de activado.

Asegúrate de que el fichero de opciones del pppd que suele estar en `/etc/ppp/` existe, pero de que esta vacío. Pppd necesita que exista, pero debe de estar vacío, de otra forma el pppd no tomará las opciones de Kppp.

Otra vez: Si tienes problemas, por favor, avísame.

### Preparando Tu Sistema Linux para una conexión PPP

`¡POR FAVOR NO OLVIDES LEER EL FAQ ("Preguntas Habituales") GRACIAS!`

Para hacer funcionar el Kppp/pppd tu núcleo (kernel) debe de tener compilado el soporte para ppp. Si este no es tu caso, consigue la última versión pppd de cualquier sitio habitual de Linux y recompila tu núcleo con el soporte para ppp habilitado. No te asustes aunque esto suene más difícil de lo que de verdad es. No te olvides de instalar luego el pppd. Si no estás seguro de si tu kernel tiene la opción para ppp, introduce `dmesg` en la línea de comandos y mira si sale algo parecido a esto:

    PPP: version 2.3.0 (demand dialling)
    TCP compression code copyright 1989 Regents of the University of California
    PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
    PPP line discipline registered

Hubo cambios en el kernel de PPP desde la versión 1.2.x a 2.0.x que forzaron la programación de un nuevo demonio pppd. En la mayoría de las distribuciones se puede encontrar en `/usr/sbin`. Para versiones del kernel 1.2.x la versión correcta del demonio pppd es la 2.1; para versiones del kernel 2.0.x, la versión correcta es 2.2 o superior. Si no sabes que versión de demonio pppd tiene tu sistema, puedes teclear:

    % pppd --version

Ninguno de los demonios pppd tiene en el momento la opción --version, pero poniendo la opción causará un error de opción incorrecta en el demonio pppd que te sacará por pantalla la lista de opciones, que incluye la versión del demonio pppd.

### Más sobre ppp/pppd

El siguiente sitio puede ser de interés para más información a cerca del protocolo ppp y pppd http://www.thoughtport.com:8080/PPP/index.html

## Configurando Kppp

`¡POR FAVOR NO OLVIDES LEER EL FAQ ("Preguntas Habituales") GRACIAS!`

Para configurar Kppp, arranca Kppp y pulsa sobre el botón `Setup` en la ventana principal de Kppp. Se abrirá un nuevo cuadro de diálogo.

### Conexiones

Este cuadro de diálogo mostrará las nuevas cuentas que has creado. Deberás crear por lo menmos una cuenta. El ''Botón de Reset'' pondrá a cero el gasto acumulado por la cuenta seleccionada. Típicamente querrás pulsar este botón una vez al mes tras haber visto los gastos de teléfono.

### Dispositivo

Dispositivo del Modem

  Selecciona el dispositivo apropiado para tu sistema.

Control de Flujo

  Selecciona el control por Hardware (CRTSCTS), por Software (XON/XOFF) y sin control de flujo. La opción recomendada es poner el control de flujo por hardware.

Terminación de Linea

  Te permite elegir la secuencia correcta de ''Enter'' para tu modem. La mayoría de los modems usarán ''CR/LF''. Como siempre, algunos modems necesitan una configuración diferente. Si tienes algún problema durante la ejecución del script: Juega con este parámetro.

Velocidad de Conexión

  Te permite elegir de la lista de velocidades de conexión soportadas por tu puerto de serie.

Fichero de bloqueo del modem

  Teclea el camino hasta el fichero cerradura para el modem que quieras. Típicamente esta en /var/lock/LCK.modem y no debes cambiarlo a ningún otro a no ser que sepas lo que estás haciendo. Programas como mgetty dependen de la existencia de esos ficheros cerradura y Kppp no trabajará con mgetty si el fichero cerradura no esta configurado correctamente. Si dejas este cuadro vacío, Kppp no tratará de crear un fichero cerradura. Asegúrate de que no usas la opción "lock" en pppd si has puesto un fichero cerradura y quieres que Kppp bloquee el modem, porque la opción "lock" de pppd inducirá a pppd a tratar de bloquear el dispositivo del modem. Como Kppp ya habra bloqueado el dispositivo, pppd fallará y Kppp mostrará "pppd murió de forma inesperada". Asegúrate de que tienes permiso para escribir en el directorio del fichero cerradura o Kppp mostrará el mensaje de error "No puedo crear el fichero cerradura".

Tiempo de espera de Modem acabado

  (Timeout del Modem) Esto es el tiempo que Kppp espera a la respuesta "CONNECT" de tu modem después de llamar a otro modem (normalmente la llamada a tu ISP) Te recomiendo que pongas alrededor de 30 segundos.

### Modem

Cadenas del Modem

  Te abrirá un cuadro de diálogo que necesitarás para terminar con los comandos apropiados para tu modem. Si tienes un modem compatible con Hayes lo más seguro es que no necesites cambiar ninguno de los comandos por defecto. Te recomiendo que de todas formas te leas lo que hay en el Apéndice de esta documentación acerca de los comandos Hayes. La información suministrada ahí puede servir también de ayuda en el caso de que tengas problemas para configurar una conexión estable con los modems de tu ISP.

  Las dos configuraciones "Retraso pre-comienzo" y "Retraso post-finalización" pueden ser de especial interés si notas que tu modem se bloquea. Eso hará a Kppp parar un poco antes y después de mandar la cadena de inicialización. El "Retraso pre-comienzo" irá compañado del envio de CR a no ser que se le de el intervalo de espera de 0.

Consultar el Modem

  Pulsando sobre el botón Interrogar al Modem harás que el Kppp le pida al modem que se indentifique. Si tiene éxito la respuesta del modem será mostrada en un cuadro de diálogo. Esto puede o no probarse para ver la información de la que depende tu modem.

Terminal

  Pulsando el botón de the `Terminal` aparecerá un "mini-terminal". Puedes usar el mini-terminal para probar tu modem y experimentar con el protocolo de negociación para iniciar una conexión ppp con tu proveedor. No necesitarás más un programa terminal como el minicom o el seyon.

### PPP

Tiempo de espera de pppd

  Kppp esperará este tiempo después de ejecutar el script y arrancar el pppd para establecer un enlace ppp con el pppd antes de dejarlo y matar el pppd.

Rellamada automática si se pierde

  Seleccionando esto Kppp tratará de reconectar en caso de que sin darte cuenta te desconectes cuando estas conectado.

Mostrar el reloj en la barra de Título

  Esto hará que Kppp muestre el tiempo que esras conectado en la ventana mientras estás conectado.

Desconectar al apagar Servidor X

  Comprobando esta opción hará que el Kppp corte el enlace ppp desconectando el modem en orden cuando el servidor de X se acabe. Esto es útil si tu sueles olvidarte de quitar el Kppp cuando sales de las X o simplemente no quieres preocuparte de tener que desconectar. Si no quieres que el Kppp cuelque el modem cuando salgas del servidor de X deberás dejar sin marcar este cuadro. Ten cuidado de todas formas si tienes la cuenta puesta y no quieres que el Kppp cuelgue a la salida del servidor de X, tendra una entrada sin terminar en el registro de cuentas cuando salgas del servidor de X y el Kppp termine.

Minimizar la ventana al Conectar

  La ventana del Kppp se minimizará después de que la conexión haya quedado establecida. El tiempo transcurrido durante le conexión sera mostrado en la barra de tareas.

Fijar en el Panel al conectar

  Si eliges esta opción, Kppp se fijará en el panel donde estará representado por un icono animado pequeño. Usa el botón derecho del ratón encima de este icono para restaurar la ventana del Kppp. El botón derecho abrirá un menú que te ofrecerá restaurar la ventana del Kppp, mostrar las estadísticas de transferencia o cerrar la conexión. Esta opción deshabilita Minimizar la ventana al conectar.

## Configurando una conexión

### Marcado

Nombre de la conexión

  Deberás darle a la conexión un nombre.

Número de Teléfono

  Especifica el número a llamar. Puedes usar un carácter como "-" para hacer el número más intelegible. Si concatenas series de números (separados por un punto) Kppp probará esos números en un orden cíclico cuando reciba una señal de "comunicando". Ejemplo: "1111111:2222222:3333333"

Autentificación

  Elige el método apropiado de autentificación que Kppp deberá usar para entrar en el servidor. Comprueba que tu proveedor ofrezca soporte PAP o CHAP si quieres usar un método de entrada basado en scripts de terminal.

Almacenar contraseña

  Revisa esta opción si quieres que Kppp recierde tu contraseña para la próxima conexión.

Ejecutar programa al establecer la conexión

  Kppp tratará de ejecutar el comando especificado aqui una vez que el enlace ppp se haya establecido.

Ejecutar al finalizar la conexión

  análogo al elemento anterior.

Editar opciones del pppd

  Esto te traerá los argumentos del pppd. Puedes usar este cuadro para añadir cualquier opción que quieras que el Kppp utilice en el pppd. Mira en la página del manual del pppd para tener una lista de las opciones disponibles. A menos que sepas exactamente que estás haciendo deberías contenerte de manosear las opciones del pppd.

### Dirección IP

Dirección IP Dinámica

  Comprueba esto si tu ISP (Proveedor de Internet) asígna direcciones IP dinámicas. Que tu dirección IP cambia cada vez que estableces una conexión.

Dirección IP asígnada por el Usuario

  Comprueba esto si tu ISP te ha dado una dirección IP estática. En este caso tendrás que rellenar el cuadro con la dirección y cualquier Máscara de Subred si es aplicable. Pregunta a tu ISP si no estás seguro.

Auto-configurar el nombre de HOST desde esta Dirección IP

  Selecciona esta opción si quieres que el Kppp fije el nombre de máquina y el dominio de tu máquina tras una conexión. Esto se puede hacer preguntando al Servidor de Nombres definido por la IP asígnada al enlace ppp Esta opción es útil para esas máquinas terminales que quieren usar protocolos como talk que requieren de un nombre de por el que tu máquina sea conocida en Internet. Esto predomina sobre la Opción de Nombre de Dominio en la sección Servidor de Nombres. Los valores predeterminados de la máquina se restauran después de cerrar el enlace ppp. Ten cuidado al elegir esta opción: Puede ser útil para ti, pero puede causar también muchos efectos secundarios no deseados. Simplemente juega con él ...

### DNS

Servidor de Nombres

  Expecifica el Nombre de Dominio para tu máquina. Tal y como una dirección DNS es restaurada a la original en `/etc/resolv.conf` cuando se cierra la conexión.

  Si dejas esto en blanco no se harán cambios en el nombre de dominio especificado en el `/etc/resolv.conf`.

Servidores de Nombres

  Añade los Servidores de Nombres asígnados por tu ISP. Debes especificar al menos un Servidor de Nombres para que tu SO sea capaz de resolver direcciones "humanas" a IP numéricas como ftp.kde.org. La dirección del servidor DNS suministrada debe de estar en forma numérica ej.: 128.231.231.233. La dirección se añadirá a `/etc/resolv.conf`.

Dehabilitar Servidores de Nombres existentes durante la Conexión

  Selecciona esta opción si quieres que el Kppp deshabilite las entradas ya existentes en el `/etc/resolv.conf` durante la conexión.

### Gateway/pasarela

Gateway por defecto

  Revisa esto si quieres que el pppd use el Gateway por defecto para tu máquina.

Gateway asígnada por el Usuario

  Comprueba esto si quieres especificar la Gateway a usar.

### Script de Conexión

Editar Script

  Usa este cuadro para construir un script de llamada a tu ISP. Usa el mini-terminal y la información suministrada por tu ISP para entender que secuencia de acciones se tiene que ejecutar.

  - Expect: Kppp esperará recibir la siguiente cadena.

  - Send: Kppp envía la cadena especificada.

  - Scan: Kppp buscará en la cadena entrante la buscada y guardará cualquier caracter después de la cadena hasta el comienzo de una nueva linea en el buffer interno. Los espacios en blanco se quitarán.

  - Save: guarda permanentemente las cadenas encontradas en el registro especificado. Así, la el único registro válido es 'password'.

  - Pause: pausa de un determinado número de segundos.

  - Hangup: Kppp enviará el comando de colgar al modem.

  - Answer: Kppp hará entrar al modem en el modo de respuesta.

  - Timeout: cambia el "timeout" por defecto por el número de segundos especificado dinámicamente durante la ejecución del script. Puedes cambiar el timeout varias veces durante la conexión si es necesario.

  - Prompt: Pide al usuario del Kppp que introduzca una cadena, se da una cadena como pista. El usuario verá lo que se teclea. Si la cadena incluye la marca &num;&num;, la marca será reemplazada por el contenido actual del buffer interno.

  - PWPrompt: Pide al usuario del Kppp que introduzca una cadena, se da una como pista. Se verá un asterisco por cada carácter tecleado.

  - ID: Si el campo ID en el menú principal del Kppp se rellena envia ese ID. Si el campo ID no esta relleno pedirá al usuario que teclee un ID, dando uno como pista. El usuario vera lo que se teclea. En un segundo pase, como en bucle, en la segunda iteración, se mostrará una pregunta, dando la cadena especificada como pista.

  - Password: Si el campo de contraseña en el menú principal del Kppp no está vacía enviará esta contraseña. Si el campo está vacío, pedirá al usuario del Kppp que introduzca una contraseña, se da una como pista. Se verá un asterisco por cada carácter pulsado y se pedirá la contraseña dos veces. En un segundo pase, como en bucle, en la segunda iteración, se mostrará una pregunta, dando la cadena especificada como pista.

  - LoopStart: Kppp esperará a que se reciba la cadena especificada. Guardará la cadena para ser usada por "LoopEnd".

  - LoopEnd: Kppp esperará recibir la cadena especificada para salir del bucle. Si la cadena dada por el correspondiente LoopStart es recibida primero, desencadenará un salto a la línea siguiente a LoopStart, habilitando la repetición de los cuadros del estilo de Nombre de usuario / contraseña.

#### Scripts de ejemplo

Aquí hay un script simple que podría usar para conectar con mi ISP:

    Expect      ID:                        # espera por el ID:
    Send        myid                       # tienes que sustituir myid por tu ID
    Expect      word:                      # espera a 'password'
    Send        4u3fjkl                    # envía mi contraseña '4u3fjkl'
    Expect      granted                    # Mi ISP envía 'Permission granted' cuando la conexión tiene éxito.
    Send        ppp                        # Esto comienza la conexión por mi en
    				       # el lado del ISP

Aqui el script de la misma conexión con petición de ID y contraseña: Este script pedirá el ID y la contraseña cada vez, no importa que esté escrito en los campos ID y contraseña del menú principal del Kppp. Este script también muestra la estructura de LoopStart/LoopEnd. Si algo va mal durante la conexión. por ejemplo que me equivoque al introducir la contraseña, mi ISP imprimirá un mensaje de error y recomenzará el bucle /id/contraseña mostrando la cadena "ID:" otra vez. Si la cadena "ID" es recibida antes de la palabra de LoopEnd, Kppp recomenzará el script después de la palabra de LoopStart.

    Prompt      Enter ID:                  # me pide mi ID y lo envía.
    Expect      word:                      # espera 'password'
    PWPrompt    Enter Password:            # Me pide mi contraseña y la envía.
    LoopEnd     granted                    # Mi ISP envía 'Permission granted'
    				       # si la conexión tiene éxito.
    Send        ppp                        # Empieza la conexión ppp por mi.

Aquí el script que actualmente uso para conectar con mi ISP: Este script pedirá el ID y la contraseña solo si no has rellenado los campos respectivos en el menú principal de Kppp

    LoopStart   ID:                        # espera ID:
    ID          Enter ID:                  # Me pide el ID y lo envía.
    Expect      word:                      # espera 'password'
    Password    Enter Password             # Me pide la contraseña y la envía.
    LoopEnd     granted                    # Mi ISP envía 'Permission granted'
    				       # si la conexión tiene éxito.
    Send        ppp                        # Empieza la conexión ppp por mi.
                                           # en el ISP.

El log siguiente muestra el procedimiento de entrada a un ISP ficticio que proporciona una contraseña nueva para cada conexión. La nueva contraseña ha de ser verificada y guardada para la próxima sesión.

    University of Lummerland

    Login:mylogin
    Password:
    La contraseña para tu próxima conexión es YLeLfkZb
    Por favor guardela y tecleela para su verificación.
    Verificación:YLeLfkZb

    1 = telnet
    2 = SLIP
    3 = PPP

    Tu elección:

Kppp puede ser usado para ese tipo de tareas (eliminando el riesgo)

    Expect      Login:                     # espera la petición de login
    ID                                     # envía ID
    Expect      Password:                  # espera la petición de contraseña
    Password                               # envía contraseña
    Scan        is:                        # espera '... next session is:' y
                                           # recoge la clave siguiente
    Save        password                   # guarda la contraseña para la próxima.
    login
    Expect      Verification:              # espera 'Verification:'
    Password                               # envía nueva clave
    Expect      choice:                    # espera la petición para elegir

                                           # entre diferentes opciones (telnet,
    SLI
    Send        3                          # elige 3, Ej. PPP

### Coste

Configuración Coste

  Usa el botón "Activar Seguimiento de Costes" para habilitar/deshabilitar el cálculo del gasto telefónico. Selecciona una regla apropiada para tu región. Si ni puedes encontrar una regla para tu región tendrás que escribir una siguiendo la el`"TEMPLATE"` suministrado en `&dollar;&lcub;KDEDIR&rcub;/share/doc/HTML/en/kppp/`. No tengas miedo porque es realmente sencillo. No olvides enviarme la nueva regla que crees. La sintaxis de las nuevas reglas puede comprobarse con el comando -r en la line de comandos de opciones del Kppp y debe de ser instalada en `&dollar;(KDEDIR)/share/apps/kppp/Rules` o en `&dollar;&lcub;HOME&rcub;/.kde/share/apps/kppp/Rules` antes de que puedas selecionarla en este cuadro.

### Cálculo de volumen

#### ¿Qué es Cálculo de volumen?

Significa, básicamente, el contar el número de bytes transmitidos de o a internet. Kppp puede contar los bytes llegados, enviados o ambos. Depende de ti lo que quieras (o debas) usar.

#### ¿Por qué debo usar el cálculo de volumen?

Porque los Proveedores de Internet (ISP) empiezan a cobrar a sus clientes dependiendo del número de bytes transmitidos. O muy a menudo esos ISP te dan un límite arbitrario de transferencia, y te cargan por cada megabyte por encima de ese límite. Kppp te muestra tu volumen actual y te puede ayudar a mantener tus facturas al mínimo. Por supuesto, si no tienes límites de volumen y eres curioso.... también puedes usarlo.

#### ¿Qué tipo de cálculo de volumen debo seleccionar?

Eso depende de tu proveedor. Muchos de ellos solo cuentan cuantos megabytes te llegan de internet e ignoran los que envias. En ese caso deberías seleccionar "Bytes in". Si tienes que pagar por ambos, debes seleccionar "Bytes in and out". "Bytes out" no se usa mucho, y solo esta aqui por completar.

#### Inconvenientes

Desafortunadamente hay un inconveniente en el cálculo de volumen. Kppp contará sólo el número de bytes sin tener en cuenta su origen. Muchos proveedores fijan el límite solo para acceso a internet, no para su propia red. Así que si navegas un poco por la web y usas un "cache-proxy", el proxi estará dentro de la red de tu proveedor y tu proveedor no te cobrará por los bytes transferidos desde este cache-proxi. Aun así, Kppp no sabrá que esos paquetes IP vienen desde el proxi y los contará. Por lo que si usas proxi, o tu proveedor utiliza un servidor de news (como nntpcached), el volumen contabilizado por Kppp será más alto

- -h te describirá las opciones en la línea de comandos.

- -c tratará de conectar con la conexión dad sin entrar en el cuadro principal del Kppp. Esta opción puede ser interesante para el impaciente.

- -r tratará de comprobar la sintaxis del fichero de normas especificado. Puede ser útil cuando escribas un nuevo fichero de normas

### Uso Normal

Por escribir... (Asegúrate de rellenar toda la información necesaria en los cuadros del Kppp y de crear una conexión antes de tratar de usar el Kppp)

## Trucos y pistas para el modem

Esta sección te introducirá al (no tanto) arcano arte de la configuración de modems. Estos comandos son todos comandos AT del estandar Hayes, pero no todos los modems son iguales.

### Sesiones de Modem

Una sesión de modem te permitirá interactuar con el modem directamente. Escribiendo comandos el modem te responderá. Para conseguir una sesión de modem, cuando la conexión no este activa ve al cuadro Configuración/Modem/Terminal. Esto abrirá una ventana donde podrás configurar de forma interactiva tu modem. Prueba a teclear ATZ que reinicia tu modem) Deberías conseguir una respuesta como OK usa Archivo/Cerrar para terminar con la sesión.

### Perfiles del Modem

Una razón por la que puedes querer enviar los comandos directamente es porque tienes una serie de configuraciones que quieres guardar y esto no puedes expecificarlo en cada conexión. Una buena forma de hacer esto es a traves de los perfiles del modem. Los modem pueden tener varios perfiles numerados 0,1,... AT&V puede usarse para verlos todos. El perfil por defecto es habitualmente el 0 (esto puede cambiarse a con AT&Y.) El perfil que en cada momento se usa es el perfil "activo".

Cuando cambias una configuración. el perfil activo se modifica. El comando ATZ cargará el perfil por defecto, borrando cualquier cambio que hayas hecho. Para salvar los cambios, carga el perfil que quieres cambiar con ATZ n (donde n es el número de perfil). Haz los cambios que quieras y sálvalos con AT&Wn. Para que el Kppp use el perfil que tú quieras cambia la cadena de inicialización (Configuración/Modem/Cadenas del Modem) Por ejemplo ATZ1 hará que el Kppp resetee el modem y use el perfil &num;1

Si quieres resetear el modem y volver al punto de comienzo, usa AT&F&W para fijar el perfil por defecto que trajo de fábrica y guarda esa configuración como perfil por defecto.

Ejemplo de cambios en el perfil en la siguiente sección.

### Haciendo que el modem cuelgue

A veces puedes encontrarte con el el Kppp tiene dificultades en hacer que el modem cuelgue. Esto suele ser resultado de un error entre la configuración del Kppp y el modem. Un modem estandar usa dos métodos a decidir para colgar. Comando y DTR. El método de comando implica el enviar una secuencia de escape al modem que pone el modem en modo de comandos, entonces se teclea el comando de colgar (ATH).

Fuera de Kppp, cuando configuras el paquete pppd de forma manual, es a menudo de ayuda el usar el método de comandos, de tal forma que uno puede salir de una sesión de terminal y entonces comenzar un pppd sin haber colgado el modem. En la mayoría de las situaciones el método DTR se prefiere porque es más simple.

#### Método DTR (AT&Dn)

El método DTR hará que el modem cuelgue cuando el Kppp termine de usar el modem. Su tu tienes una sesión de modem, y pides el estado a través deAT&V, y las configuraciones que se muestran para el perfil activo sone &D0, entonces la posibilidad de colga por el método DTR esta deshabilitada. Para habilitar el método DTR usa Configuración/Modem/Terminal para llegar a una sesión de modem. Entonces:

    ATZ		# pasa al perfil por defecto.
    AT&D2		# habilita el método DTR.
    AT&W		# Guarda como perfil por defecto.

##### ¿Cómo funciona el método DTR?

Cada vez que la línea "Terminal de Datos Listo" en una línea serie entre el ordenador y el modem se pone alta, el modem cuelga. Cuando Kppp abre el puerto de serie, la línea DTR se lleva a un nivel bajo, en un modem externo puedes ver la luz del DTR (o TR) que se enciende cuando esto ocurre. Cuando la luz TR se apaga (porque el Kppp ha cerrado el puerto serie, o algo peor!) el modem cuelga.

#### Método de comando

La otra forma de hacer que el modem cuelgue cuando esta conectado (usado cuando AT&Dn donde n no es 2) es hacer que el modem acepte comandos cuando una sesión se esta llevando a cabo. Para que se cuelgue correctamente, entra en usa sesión de modem y configura el tiempo de guarda en u nintervalo pequeño así:

    ATZ
    ATS12=5
    AT&W

Entonces usa Configuración/Modem/Cadenas del Modem/Tiempo entre cadenas para ajustar el registro (S12) al valor para ajustar (5) El modem debería colgar adecuadamente.

##### ¿Cómo funciona el Método de comandos?

Cuando el modem local está conectado a un modem remoto, está en estado "conectado", donde transmite todos los carácteres que le llegan del modem remoto sin interpretación. Para hacer que el modem acepte carácteres como comandos por si mismo, debemos pasar el modem a modo de comandos. El código de escape hace esto.

El código de escape esta definido por ser tres intervalos de tiempo cuya longitud es definida por S12 (en medios segundos)

- Tranquilo (debe de ser más de S12/50 segundos)

- Carácter de escape (definido por el registro S2, por defecto es "+") repetido tres veces (con menos de S12/50 segundos entre cada uno)

- Tranquilo (debe de durar más de S12/50 segundos)

Una vez que el modem está en modo de comandos, puedes enviarle comandos. Para colgar, envía ATH. Los códigos de escape y la cadena para colgar usada por Kppp se muestran en Configuración/Modem/Cadenas del Modem. Esas deberían funcionar con tu modem.

### Hacer la llamada por tonos más rápida

Si puedes usar la llamada por tonos, la cantidad de tiempo que necesitas para llamar se puede cambiar usando el registro S11. Él da la duración (en centésimas de segundo) del tono a enviar cuando llamas. El valor por defecto es de 95 (casí un segundo). Lo rápido que puedas marcar depende del equipo de conmutación de la compañía telefónica que mantiene tu línea. La duración mínima es de 50, casí dos veces más rápido y esa velocidad a veces funciona.

    ATZ		# resetear al perfil por defecto
    ATS11=50	# acelera lo más posible el marcado, usando un número más alto si no funciona
    AT&W		# Guardar el perfil por defecto.

## PAP y CHAP

Kppp empezó con la versión 0.9.1 a dar soporte a la autentificación de forma PAP que era la mayormente usada. La sección "PAP y CHAP con Kppp" te describirá como hacer funcionar el PAP y el CHAP con Kppp en general, mientras que la sección "PAP con Kppp" te describirá en detalle como aprovecharse del soporte interno para la mayoría de las versiones encontradas de PAP que es ampliamente usado por los Proveedores de Internet comerciales (ISP).

### PAP con Kppp

Hay dos formas diferentes de usar PAP:

#### Autentificación en el lado del cliente.

Esta variante es usada por muchos ISPs comerciales. Básicamente significa que tú (o tu ordenador) deberás identificarte tu mismo al servidor PPP del ISP. El servidor PPP no debe idenntificarse a tu ordenador, pero típicamente no es necesario porque tú sabes a que máquina estas conectado (porque la conexión la hiciste tú mismo). Así que no hay más problemas de seguridad. Kppp soporta esta variante directamente. Mira más abajo para ver las instrucciones para ello.

Si tu proveedor solo te da un nombre de usuario y una contraseña y te dice que uses autentificación PAP, deberás usar esta variante.

#### Autentificación en los dos sentidos

Lo mismo que arriba, pero tuordenador requerirá al servidor PPP del ISP que se identifique. Para establecer una conexión, deberás elegir el método de autentificacion "basado en script, no PAP, y deberás editar manualmente el `/etc/ppp/pap-secrets` porque Kppp no proporciona soporte para esta variante -- es fácil establecer una conexión usando esta variante de PAP con Kppp. Los detalles se desscriben en la sección previa 'Usando PAP y CHAP con Kppp'.

#### Preparando Kppp para PAP

1. Asegúrate de que los ficheros `/etc/ppp/options` (y `/.ppprc` si tienes ese fichero no contienen uno de estos argumentos:

   - +pap

   - -pap

   - papcrypt

   - +chap

   - +ua

   - remotename

   Es difícil que uno de estos argumentos estén ya allí, pero solo por estar seguros.

2. Arranca Kppp

3. Pulsa en Configuración

4. Elige la conexión que quieras usar con PAP y pulsa en Editar

5. Click on the Dial tab.

6. Seleciona PAP en el cuadro Autentificación

7. Si no quieres volver a teclear la clave cada cez que llames, seleccionaAlmacenar contraseña. Esto hará que se guarde la contraseña. Asegúrate de que nadie a demas de ti accede a tu conexión, si no esa persona tendrá acceso a tu contraseña.

8. Eso es. Cierra los cuadros, teclea el nombre de usuario y contraseña que tu ISP te proporcionó y llama.

### PAP y CHAP con Kppp

Lo siguiente esta basado en un email de Keith Brown y explica como hacer que Kppp funcione con una conexión PAP o CHAP genérica. Si tu ISP te acaba de dar tu identificador y tu contraseña para una conexión PAP puedes saltarte esta sección y leer la siguiente sección titulada "PAP con Kppp".

PAP parece ser mucho más complicado a primera vista de lo que de verdad es. El servidor (la máquina a la que te estás conectando) básicamente le dice al cliente (tu máquina) que se identifique usando PAP. El cliente (pppd) busca en el fichero específico una ebtrada que contenga el nombre del servidor y el nombre del cliente para esta conexión y entonces envía la contraseña que ahí encuentra. ¡Eso es lo que ocurre! Ahora aquí está cómo ocurre. Estoy asumiendo una versión 2.2.0 del pppd y una configuración estándar en /etc/ppp.

Con propósitos de ilustrar, asumiremos que tengo una cuenta en Internet en "glob.net", con el nombre de usuario "booger" y la contraseña "foobar". Primero necesitaré añadir todo esto al archivo `/etc/ppp/pap-secrets` . El formato de entrada para nuestros propósitos es:

    NOMBRE_DE_USUARIO  NOMBRE_DE_SERVIDOR   CONTRASEñA

Así que añadiré la línea:

    booger  glob  foobar

al fichero y lo guardaré. Fíjate: Puedo usar cualquier nombre para el servidor, así como use el mismo nombre para los comandos del ppp, así lo veremos más corto. Lo he acortado a "glob". Este nombre solo se usa para encontrar la contraseña correcta.

Ahora necesito configurar mi conexión en el Kppp. Lo básico es lo mismo que en cualquier otra conexión, y no entraré aquí en detalles, excepto decir que posiblemente quieras asegurarte de que el fichero `/etc/ppp/options,` esté vacío, y posiblemente no querrás ningún script de conexión tampoco. Ahora en el cuadro de configuración, al final, está el boton de argumentos para el pppd. Esto te abre un menú similar al usado en la edición del script de conexión. Aquí meteremos los valores que enviaremos al pppd como parámetros de la línea de comandos, en el caso de argumentos de valores múltiples, necesitaremos introducir cada valor en una entrada separada de la lista, en orden correcto.

Podemos poner cualquier otro argumento que queramos primero. Normalmente querremos introducir los valores por defecto del Kppp '-detach' and 'defaultroute'. Ahora necesitamos añadir los argumentos para manejar la autentificación PAP. En este ejemplo voy a añadir "user" "booger", "remotename", "glob" en ese orden. El argumento user le dice al pppp el nombre de usuario a buscar en pap-secrets, y lo envía al servidor. El remotename es solo usado por el pppd para encontrar la entrada en el fichero pap-secrets, y no es enviado al servidor, así, una vez más, puede ser cualquier cosa que quiera con tal de que sea consistente con la entrada en el fichero pap-secrets.

Esto es todo lo que hay. Ahora deberías ser capaz de configurar tu propia conexión al servidor con autentificación PAP. CHAP no debería ser muy diferente. Busca en la Guía de Administrador de Redes de LiNUX el formato del fichero chap-secrets y los argumentos usados. El resto debería ser fácil.

## Preguntas y Respuestas Habituales

### Pregutas Habituales

#### No puedo hacer funcionar el Kppp. Kppp me dice: "pppd has died or that a timeout has expired" (pppd ha muerto o el tiempo de espera ha pasado)

¿Leíste el este manual con cuidado? Aquí hay una vez más el peligro habitual.

- Asegúrate de que pppd es el binario de ppppd, no un script

- Asegúrate de que pppd tiene activado el setuid root. Debes fijar este modo como root así: chmod u+s pppd.

- Asegúrate de que tu fichero /etc/ppp/options existe, pero está vacío!

- Asegúrate de que NO has usado la opción "lock" como un argumento para el pppd (Kppp se encarga de bloquear el dispositivo)

- Usar el enlace simbólico `/dev/modem` puede causar algunos conflictos. Elimina esta fuente de problemas usando el dispositivo real. ej. `/dev/cuaX` o `/dev/ttySX`. NOTA: COM1 igual ttyS0, COM2 es ttyS1 y así.

- Asegúrate de que tienes los permisos necesarios. En caso de problemas podrías ejecutar el programa como root primero y después, cuando todo funcione o.k dale permisos menos restrictivos si no puedes permitirte el ejecutar el Kppp con setuid root. El modo adecuado de proceder puede ser crear un grupo "modem"

- Puedes estar lanzando el pppd demasiado pronto, por ejemplo antes de que el servidor remoto haya negociado una conexión PPP. SI estas usando un script para conectar debes usar el terminal incluido para verificar tu proceso de conexión. Algunos proveedores te requerirán que envíes un simple "Send" o "Send ppp" para lanzar PPP. Algunos usuarios han avisado de que han tenido que añadir "Pause 1" o "Pause 2" a sus scripts para resolver problemas de tiempo.

Si nada ayuda, puedes conseguir alguna información para depurar de los registros de tu sistema tecleando:

    # tail /var/log/messages

#### Kppp me dice ``Sorry, can't open the modem''.(Perdón, no puedo abrir el modem)

Esto significa que Kppp no tiene permisos para abrir el dispositivo del modem o que has seleccionado un dispositivo no valido en el cuadro de Modem. Primero asegúrate de que has seleccionado el dispositivo correcto. Una vez que te has asegurado de que has seleccionado el dispositivo correcto debes de darle los permisos necesarios para poder acceder al modem y ser capaz de modificar el fichero /etc/resolv.conf en el caso de que quieras que Kppp configure el DNS correctamente por ti. Si puedes permitirte el ejecutar Kppp con setuid root podrás resolver todos los problemas de acceso, si no, tendras que hallar cuales son los permisos necesarios para tus propósitos. Para darle a Kppp permisos del setuid root haz lo siguiente:

    % su root
    % chown root:root &dollar;(KDEDIR)/bin/kppp
    % chmod +s &dollar;(KDEDIR)/bin/kppp
    % exit

#### Kppp me dice "I can't create a modem lock file" (que no puede crear el fichero cerradura).

En la mayoría de los casos significa que has instalado pppd sin el bit de SETUID, la persona que esta ejecutando Kppp no tiene permisos para acceder al directorio de ficheros cerradura que por defecto es /var/lock. Para este ejemplo, en el caso de sistemas RedHat. Busca en el cuadro de Modem la localización exacta que has elegido. La solución es sencilla -- o ejecutas Kppp con SETUID si puedes permitírtelo, o das acceso al fichero /var/lock a los usuarios normales.

#### ¿Por qué Kppp está instalado con el bit SETUID?

No es necesario que el bit de SETUID esté activado, si conoces un poco de administración de sistemas Unix. Simplemente crea un grupo "modem", incluye a todos los usuarios que quieres que tengan acceso al modem y dale permisos al dispositivo de lectura/escritura al grupo. Lo mismo si quieres que funcione la configuración de DNS con Kppp, debes de darle permisos de lectura/escritura al fichero /etc/resolv.conf mediante el grupo. Lo mismo ocurre con los ficheros `/etc/ppp/pap-secrets` y `/etc/ppp/chap-secrets` si quieres usar el soporte PAP o CHAP, respectivamente.

Por favor, no me critiques por instalar Kppp con el bit de setuid habilitado, simplemente no puedo con todo el correo que me llega de los usuarios desesperados que tienen problemas para hacer funcionar el Kppp porque no entendían lo suficiente de Unix y permisos de dispositivos.

El equipo Kppp ha hecho mucho trabajo últimamente para hacer al Kppp seguro en el tema del setuid. Pero depende de ti el que decidas instalarlo y como instalarlo.

#### Kppp simplemente se sienta y espera: Expecting OK

- ¿Has jugado con la configuración de CR/LF?

- Tu modem puede necesitar algún tiempo para responder a su inicialización. Abre el cuadro "Comandos del Modem" en el apartado "Modem" y ajusta los retardos de "Pre-Inicio" y "Post-Inicio". Mira si funciona cuando los incrementas drásticamente para hacer el ajuste fino más tarde.

#### La conexión va bien, pero no puedo arrancar ninguna aplicación.

Probablemente has activado la opción y el servidor de X tiene problemas para conectar con tu nuevo servidor. Si de verdad necesitas esta opción (hay posibilidades de que no lo necesites) dependes de ti mismo para configurar los permisos adecuados. Tecleando xhost + antes de comenzar la conexión, hará el trabajo pero ten cuidado de que cualquier riesgo en seguridad que implique porque cualquier otra persona tendrá acceso a tu servidor de X.

#### kppp muestra una conexión segura, pero Netscape simplemente dice "El servidor no tiene una entrada DNS"

Prueba a hacer un ping a otro servidor, pero a su número IP, ej. `ping`. Si eso funciona debes

- Comprobar si le diste a Kppp al menos una dirección DNS.

- Comprobar el contenido de `/etc/host.conf`. Debe de haber una linea diciendo algo similar a `order hosts, bind`. El `bind` Sugiere a la libreria del "resolver" el incluir una consulta al servidor de nombres cuando busca una dirección.

#### ¿Cómo puedo hacer que Kppp envíe \n o \r?

Simplemente envía una cadena vacía como en el siguiente script:

    Send                                   # envía una cadena vacía
    Expect      ID:
    Send        itsme
    Expect      word:
    Send        forgot
    Expect      granted
    Send        ppp

#### Kppp se queja: "Can't create lock file" (no puedo crear el fichero cerradura)

Esto significa que no tienes permisos para crear el fichero cerradura. Si por ejemplo has especificado '/var/lock/LCK..modem" en la configuración del modem, deberás tener permisos de escritura para escribir en /var/lock Este por supuesto no es el problema si le has dado permisos de setuid a Kppp. Por favor lee la sección de Ficheros cerradura.

#### ¡Mi modem hace mucho ruido cuando marca!

Pulsa en "Configuración", "Modem". Puedes controlar el volumen del modem aqui en tres pasos: apagado, medio y alto. Para la mayoria de los modems "medio" y "alto" son el mismo volumen. Si eso no funciona asegúrate de que tienes los valores de configuración correctos para tu modem en "Configuración"/"Modem"/"Comandos del Modem"!

#### ¡Apagué el volumen del modem "off" y verifiqué los comandos del modem, pero sigo oyendo ese ruido cuando marca!

La cadena de inicialización del volumen puede perderse si tu modem no puede recibir los comandos desde Kppp a mucha velocidad. Incrementa el valor de "Retraso Post-Inicialización" en "Configuración"/"Modem"/"Comandos del Modem"!

#### Kppp habla de una velocidad de modem anormal 115200, 57600 o similar

Muchos modems solo avisan de la velocidad de la linea de serie, no de la velocidad sobre la linea telefónica por defecto. Debes configurar esos modems para que avisen de la verdadera velocidad sobre la linea (añade al modem o teclea la cadena). Para muchos modems eso se hace con el comando "ATW2". Si quieres añadirlo a la cadena de marcado (típicamente "ATD"), la nueva cadena sería "ATW2D".

#### Kppp dice "Velocidad desconocida"

Los nuevos modems a menudo tienen mensajes de conexión muy complejos como "CONNECT LAP.M/V42.bis/115000:RX/31200:TX", y Kppp no puedeentender el mensaje de forma adecuada. Enciende "Mostrar registro" y verás la velocidad de conexión. Actualmente estoy trabajando en una solución para ello, el programa es ahora mucho mejor, pero aun no es perfecto.

#### Baja velocidad de conexión

Si no estás satisfecho con la velocidad del modem, asegúrate de que tienes la velocidad de conexión ("Configuración" / "Dispositivo" / "Velocidad") puesta con 57600 o mayor. Asegúrate de que tus puertos de serie soportan velocidades mas altas. Muchos sistemas basados en i486 no hacen el trabajo de forma adecuada cuando fijas la velocidad a 115200. Si tienes una UART 8250 no funcionara. Si tienes una 16550 o 16550A debería funcionar sin fallar.

#### Mi linea de telefono necesita marcar con pulsos en vez de con tonos (o vice-versa)

Debes modificar tu cadena del modem. Casi todos los modems soportan los comandos AT:

- ATDT - selecciona marcar con tonos

- ATDP - selecciona marcar con pulsos

#### Kppp hace cosas realmente extrañas (lo que sea)

¿Lo compilaste tú el programa o las librerías con gcc-2.8? Esta versión de gcc tiene algo estropeado y no ejecutará como se espera.

#### ¿Cómo puedo escribir un fichero de reglas para el coste telefónico?

Unicamente sigue los ficheros de plantilla (TEMPLATE) que se proporcionan con Kppp. Puedes encontrar una copia en `&dollar;(KDEDIR)/doc/HTML/kppp`. Usa el comando -r en la línea de comandos para comprobar la sintaxis de tu fichero de normas propuesto.

#### He escrito un fichero de reglas de coste telefónico para mi región. ¿Dónde puedo enviarlo para que otros puedan usarlo?

Me encantaría recibir cualquier fichero de reglas que sea escrito. Los añadiré a mi Kppp web page. Antes de enviarme un nuevo fichero de reglas asegúrate de que no está ya disponible en la página web de Kppp. Después enviame el fichero de reglas por email a:mi.

#### ¿Puede mi fichero de reglas de costes co tener unidades fraccionales de tiempo, ej. "(0.17, 45.5)"?

Si es posible. Pero no deberás usar unidades de tiempo unusualmente pequeñas (por debajo de la decena de segundo), porque eso implica una mayor carga de CPU (aunque dudo que lo notes con una CPU moderna :-)

#### Mi país tiene otras vacaciones además de Semana Santa.

En ese caso nenesitarás escribir un nuevo código que te permita el cálculo de esas vacaciones. Por favor échale un vistazo al ruleset.cpp y emula el ejemplo "easter". Luego, envíame los parches a mi.

## Apéndice

### Los comandos Hayes del Modem

Los comandos Hayes deben de estar a mano si necesitas poner a punto tu modem

### Ficheros relacionados con Kppp

Por defecto Kppp hace uso de los siguientes ficheros y directorios. La localización de algunos puede variar a la hora de compilar.

    &dollar;{KDEDIR}/bin/kppp
    &dollar;{KDEDIR}/share/doc/HTML/.../kppp/*
    &dollar;{KDEDIR}/share/apps/kppp
    &dollar;{KDEDIR}/share/apps/kppp/Rules/*/*.rst
    &dollar;{KDEDIR}/share/apps/kppp/pics/*
    &dollar;{HOMEDIR}/.kde/share/apps/kppp
    &dollar;{HOMEDIR}/.kde/share/apps/kppp/kppp.pid
    &dollar;{HOMEDIR}/.kde/share/apps/kppp/Log/*
    &dollar;{HOMEDIR}/.kde/share/config/kppprc

### Reportando problemas con Kppp

Antes de avisar de un problema o un error potencial (bug) a encargado de Kppp, por favor asegúrate de que te has leído la secciónPreguntas Habituales detenidamente.

Si de todas formas tienes problemas, necesitarás incluir la siguiente información en tu reporte:

- Versión del Kppp que estas usando.kppp -v te mostrará el número de versión.

- Versión del pppd que usas /usr/sbin/pppd -h te mostrará el número.

- Qué sistema operativo y versión estás usando. uname -a te dará esta información en la mayoría de los sistemas UNIX.

- Si Kppp te dice "pppd died unexpectly", añade la opción debug a los opciones del pppd. Llama otra vez para reproducir el error.

  Ahora el fichero `/var/log/messages` (este depende de tu sistema y de la configuración, pero un sistema LiNUX típico lo tendrá) mostrará mucha información de depurado al final. No nos envíes todo el fichero. Habitualmente tiene varios miles de líneas y no tenemos tiempo para procesar todo ese fichero. En vez de eso, envianos solo las últimas líneas que contengan pppd. Asegúrate de que el fichero no contiene información comprometida como contraseñas o nombres de usuario. Reemplaza esa información por algo como "minombre" y "micontraseña"

## Licencia

### La Licencia Pública General GNU

`Nota del Traductor:`Por cuestiones de interpretación he decidido no traducir el texto de la licencia GNU-GPL.

                        GNU GENERAL PUBLIC LICENSE
                           Version 2, June 1991

     Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                              675 Mass Ave, Cambridge, MA 02139, USA
     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.

                                Preamble

      The licenses for most software are designed to take away your
    freedom to share and change it.  By contrast, the GNU General Public
    License is intended to guarantee your freedom to share and change free
    software--to make sure the software is free for all its users.  This
    General Public License applies to most of the Free Software
    Foundation's software and to any other program whose authors commit to
    using it.  (Some other Free Software Foundation software is covered by
    the GNU Library General Public License instead.)  You can apply it to
    your programs, too.

      When we speak of free software, we are referring to freedom, not
    price.  Our General Public Licenses are designed to make sure that you
    have the freedom to distribute copies of free software (and charge for
    this service if you wish), that you receive source code or can get it
    if you want it, that you can change the software or use pieces of it
    in new free programs; and that you know you can do these things.

      To protect your rights, we need to make restrictions that forbid
    anyone to deny you these rights or to ask you to surrender the rights.
    These restrictions translate to certain responsibilities for you if you
    distribute copies of the software, or if you modify it.

      For example, if you distribute copies of such a program, whether
    free or for a fee, you must give the recipients all the rights that
    you have.  You must make sure that they, too, receive or can get the
    source code.  And you must show them these terms so they know their
    rights.

      We protect your rights with two steps: (1) copyright the software, and
    (2) offer you this license which gives you legal permission to copy,
    distribute and/or modify the software.

      Also, for each author's protection and ours, we want to make certain
    that everyone understands that there is no warranty for this free
    software.  If the software is modified by someone else and passed on, we
    want its recipients to know that what they have is not the original, so
    that any problems introduced by others will not reflect on the original
    authors' reputations.

      Finally, any free program is threatened constantly by software
    patents.  We wish to avoid the danger that redistributors of a free
    program will individually obtain patent licenses, in effect making the
    program proprietary.  To prevent this, we have made it clear that any
    patent must be licensed for everyone's free use or not licensed at all.

      The precise terms and conditions for copying, distribution and
    modification follow.

                        GNU GENERAL PUBLIC LICENSE
       TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

      0. This License applies to any program or other work which contains
    a notice placed by the copyright holder saying it may be distributed
    under the terms of this General Public License.  The "Program", below,
    refers to any such program or work, and a "work based on the Program"
    means either the Program or any derivative work under copyright law:
    that is to say, a work containing the Program or a portion of it,
    either verbatim or with modifications and/or translated into another
    language.  (Hereinafter, translation is included without limitation in
    the term "modification".)  Each licensee is addressed as "you".

    Activities other than copying, distribution and modification are not
    covered by this License; they are outside its scope.  The act of
    running the Program is not restricted, and the output from the Program
    is covered only if its contents constitute a work based on the
    Program (independent of having been made by running the Program).
    Whether that is true depends on what the Program does.

      1. You may copy and distribute verbatim copies of the Program's
    source code as you receive it, in any medium, provided that you
    conspicuously and appropriately publish on each copy an appropriate
    copyright notice and disclaimer of warranty; keep intact all the
    notices that refer to this License and to the absence of any warranty;
    and give any other recipients of the Program a copy of this License
    along with the Program.

    You may charge a fee for the physical act of transferring a copy, and
    you may at your option offer warranty protection in exchange for a fee.

      2. You may modify your copy or copies of the Program or any portion
    of it, thus forming a work based on the Program, and copy and
    distribute such modifications or work under the terms of Section 1
    above, provided that you also meet all of these conditions:

        a) You must cause the modified files to carry prominent notices
        stating that you changed the files and the date of any change.

        b) You must cause any work that you distribute or publish, that in
        whole or in part contains or is derived from the Program or any
        part thereof, to be licensed as a whole at no charge to all third
        parties under the terms of this License.

        c) If the modified program normally reads commands interactively
        when run, you must cause it, when started running for such
        interactive use in the most ordinary way, to print or display an
        announcement including an appropriate copyright notice and a
        notice that there is no warranty (or else, saying that you provide
        a warranty) and that users may redistribute the program under
        these conditions, and telling the user how to view a copy of this
        License.  (Exception: if the Program itself is interactive but
        does not normally print such an announcement, your work based on
        the Program is not required to print an announcement.)

    These requirements apply to the modified work as a whole.  If
    identifiable sections of that work are not derived from the Program,
    and can be reasonably considered independent and separate works in
    themselves, then this License, and its terms, do not apply to those
    sections when you distribute them as separate works.  But when you
    distribute the same sections as part of a whole which is a work based
    on the Program, the distribution of the whole must be on the terms of
    this License, whose permissions for other licensees extend to the
    entire whole, and thus to each and every part regardless of who wrote it.

    Thus, it is not the intent of this section to claim rights or contest
    your rights to work written entirely by you; rather, the intent is to
    exercise the right to control the distribution of derivative or
    collective works based on the Program.

    In addition, mere aggregation of another work not based on the Program
    with the Program (or with a work based on the Program) on a volume of
    a storage or distribution medium does not bring the other work under
    the scope of this License.

      3. You may copy and distribute the Program (or a work based on it,
    under Section 2) in object code or executable form under the terms of
    Sections 1 and 2 above provided that you also do one of the following:

        a) Accompany it with the complete corresponding machine-readable
        source code, which must be distributed under the terms of Sections
        1 and 2 above on a medium customarily used for software interchange; or,

        b) Accompany it with a written offer, valid for at least three
        years, to give any third party, for a charge no more than your
        cost of physically performing source distribution, a complete
        machine-readable copy of the corresponding source code, to be
        distributed under the terms of Sections 1 and 2 above on a medium
        customarily used for software interchange; or,

        c) Accompany it with the information you received as to the offer
        to distribute corresponding source code.  (This alternative is
        allowed only for noncommercial distribution and only if you
        received the program in object code or executable form with such
        an offer, in accord with Subsection b above.)

    The source code for a work means the preferred form of the work for
    making modifications to it.  For an executable work, complete source
    code means all the source code for all modules it contains, plus any
    associated interface definition files, plus the scripts used to
    control compilation and installation of the executable.  However, as a
    special exception, the source code distributed need not include
    anything that is normally distributed (in either source or binary
    form) with the major components (compiler, kernel, and so on) of the
    operating system on which the executable runs, unless that component
    itself accompanies the executable.

    If distribution of executable or object code is made by offering
    access to copy from a designated place, then offering equivalent
    access to copy the source code from the same place counts as
    distribution of the source code, even though third parties are not
    compelled to copy the source along with the object code.

      4. You may not copy, modify, sublicense, or distribute the Program
    except as expressly provided under this License.  Any attempt
    otherwise to copy, modify, sublicense or distribute the Program is
    void, and will automatically terminate your rights under this License.
    However, parties who have received copies, or rights, from you under
    this License will not have their licenses terminated so long as such
    parties remain in full compliance.

      5. You are not required to accept this License, since you have not
    signed it.  However, nothing else grants you permission to modify or
    distribute the Program or its derivative works.  These actions are
    prohibited by law if you do not accept this License.  Therefore, by
    modifying or distributing the Program (or any work based on the
    Program), you indicate your acceptance of this License to do so, and
    all its terms and conditions for copying, distributing or modifying
    the Program or works based on it.

      6. Each time you redistribute the Program (or any work based on the
    Program), the recipient automatically receives a license from the
    original licensor to copy, distribute or modify the Program subject to
    these terms and conditions.  You may not impose any further
    restrictions on the recipients' exercise of the rights granted herein.
    You are not responsible for enforcing compliance by third parties to
    this License.

      7. If, as a consequence of a court judgment or allegation of patent
    infringement or for any other reason (not limited to patent issues),
    conditions are imposed on you (whether by court order, agreement or
    otherwise) that contradict the conditions of this License, they do not
    excuse you from the conditions of this License.  If you cannot
    distribute so as to satisfy simultaneously your obligations under this
    License and any other pertinent obligations, then as a consequence you
    may not distribute the Program at all.  For example, if a patent
    license would not permit royalty-free redistribution of the Program by
    all those who receive copies directly or indirectly through you, then
    the only way you could satisfy both it and this License would be to
    refrain entirely from distribution of the Program.

    If any portion of this section is held invalid or unenforceable under
    any particular circumstance, the balance of the section is intended to
    apply and the section as a whole is intended to apply in other
    circumstances.

    It is not the purpose of this section to induce you to infringe any
    patents or other property right claims or to contest validity of any
    such claims; this section has the sole purpose of protecting the
    integrity of the free software distribution system, which is
    implemented by public license practices.  Many people have made
    generous contributions to the wide range of software distributed
    through that system in reliance on consistent application of that
    system; it is up to the author/donor to decide if he or she is willing
    to distribute software through any other system and a licensee cannot
    impose that choice.

    This section is intended to make thoroughly clear what is believed to
    be a consequence of the rest of this License.

      8. If the distribution and/or use of the Program is restricted in
    certain countries either by patents or by copyrighted interfaces, the
    original copyright holder who places the Program under this License
    may add an explicit geographical distribution limitation excluding
    those countries, so that distribution is permitted only in or among
    countries not thus excluded.  In such case, this License incorporates
    the limitation as if written in the body of this License.

      9. The Free Software Foundation may publish revised and/or new versions
    of the General Public License from time to time.  Such new versions will
    be similar in spirit to the present version, but may differ in detail to
    address new problems or concerns.

    Each version is given a distinguishing version number.  If the Program
    specifies a version number of this License which applies to it and "any
    later version", you have the option of following the terms and conditions
    either of that version or of any later version published by the Free
    Software Foundation.  If the Program does not specify a version number of
    this License, you may choose any version ever published by the Free Software
    Foundation.

      10. If you wish to incorporate parts of the Program into other free
    programs whose distribution conditions are different, write to the author
    to ask for permission.  For software which is copyrighted by the Free
    Software Foundation, write to the Free Software Foundation; we sometimes
    make exceptions for this.  Our decision will be guided by the two goals
    of preserving the free status of all derivatives of our free software and
    of promoting the sharing and reuse of software generally.

                                NO WARRANTY

      11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
    FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
    OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
    PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
    OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
    TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
    PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
    REPAIR OR CORRECTION.

      12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
    WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
    REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
    INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
    OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
    TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
    YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
    PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
    POSSIBILITY OF SUCH DAMAGES.

                         END OF TERMS AND CONDITIONS

### Sobre la traducción.

Esta traducción se distribuye bajo los términos de la Licencia Pública General - GPL - GNU.

Jaime Robles - `ea4abw@amsat.org`