FAQ sobre Linux para principiantes - es.comp.os.linux: Internet / Redes / Modems

Next Previous Contents

## 8. Internet / Redes / Modems

## 8.1 ¿Qué es un modem? ¿Y un puerto serie?

¿Por qué los modems están normalmente asociados a puertos serie? Lo impone el hecho que cuando uno usa un modem, la línea telefónica a la que está conectado sólo tiene un cable por el que enviar la información. Para transmitir simultáneamente los 8 bits de los que consta un byte, que es la unidad de información usual en los ordenadores, harían falta 8 cables (8 líneas telefonicas). Una solución alternativa es enviar los 8 bits sucesivamente uno detrás del otro a intervalos de tiempo regulares. Precisamente esto es lo que hace un puerto serie.

El corazón del puerto serie es un chip del ordenador llamado UART (Receptor-Transmisor Asíncrono Universal) el cual se encarga de todo el trabajo, tanto para recibir datos como para enviarlos. Así, la potencia de dicha UART y lo bien configurada que esté influirán en la calidad de la comunicación.

El flujo de bits generado por la UART/puerto serie no puede introducirse directamente en la línea telefónica al no estar preparada para ello. La solución es utilizar un aparato intermedio que tome los bits que llegan del puerto serie y emita un tono u otro por la línea telefónica según le llegue un bit 0 o un 1. Esto es lo que se conoce como "modular una señal". Al otro lado del hilo telefónico otro aparato similar interpretaría estos tonos y generaría unos o ceros en función del tono recibido. Éste sería el paso opuesto, "demodular la señal". Como normalmente se deseará enviar y recibir, el aparato intermedio deberá realizar ambas funciones: MOdular y DEModular (MO-DEM). Así funcionaban los modems antiguos. Los modernos se basan en los mismos principios aunque son infinitamente más versátiles y potentes.

Los modems modernos realizan la modulación y demodulación utilizando chips especiales llamados DSP (Procesadores Digitales de Señales en castellano). Son como microprocesadores, pero muy rápidos y optimizados para tratamiento de señales. Los modems modernos también incorporan sistemas de compresión de datos que aceleran las transferencias, sistemas de corrección de errores, cambios automáticos de velocidad de transferencia si la calidad de la señal mejora o empeora, etc...

Existen dos clases de modems: Los internos y los externos. Los externos van conectados a un puerto serie del ordenador por lo que simplemente se limitan a las funciones descritas de modulación-demodulación, compresión, correción, etc. Los modems internos "de verdad", al no ir conectados a un puerto serie incorporan una UART como las de dichos puertos serie, de forma que a ojos del ordenador se trata de un puerto serie más.

## 8.2 Entonces, ¿Qué es un winmodem, modem HSP o modem software ? ¿Funcionan los winmodem en Linux ? ¿Y los modems PCI?

Son modems internos "capados". Los fabricantes les quitan chips para que sean más baratos. Por ejemplo, algunos no tienen UART, a otros les quitan los protocolos de compresión, etc. Para que tengan las mismas funciones que los modems "de verdad", las funciones correspondientes a los chips retirados las tienen que realizar drivers del sistema operativo, o sea el microprocesador del ordenador.

Los fabricantes de los distintos modems sólo ofrecen drivers para Windows y no dan especificaciones de como se programan, y así desarrollar versiones para Linux. Por tanto estos modems no funcionan en Linux.

Sobre los modems PCI, no tengo noticias de que ninguno sea un modem "de verdad". Es probable que en el futuro aparezcan pues el hecho de ser PCI no es ningún impedimento para ello.

## 8.3 ¿Cómo se configura el puerto serie ?

La primera pregunta sería: ¿ Debo configurar mis puertos serie ?

En general, sólo deberás configurar los puertos serie en estos casos:

- Tu modem es interno y Plug'n'Play. Deberás configurar el modem y al menos el puerto serie que incorpora.
- Tienes más de dos puertos serie, contando además con los que incorporan los modems internos (si tienes alguno). Por lo general deberás configurar todos los puertos a partir del COM3 incluido.
- Un tercer caso, más raro, que consistiría en tener un modem interno en COM1 o COM2 y que no usara los recursos estandar (puerto 3f8 e interrupcion 4 para COM1, y puerto 2f8 e interrupción 3 para COM2). Los recursos utilizados por el modem pueden consultarse en el Panel de Control de Windows 95 (Sistema -> Administrador de dispositivos -> Puertos COM y LPT -> el puerto que sea -> Recursos). Entonces deberás configurar el puerto del modem.

Si no cumples ninguna de estas condiciones, puedes ignorar el resto de la sección.

Un puerto serie (más exactamente, la UART del puerto serie) usa un rango de direcciones de entrada-salida y una solicitud de interrupción para comunicarse con el sistema operativo. Para el correcto funcionamiento del ordenador y del sistema operativo, ningún otro dispositivo del ordenador puede usar alguno de esos valores. Nuestro objetivo será conseguir esto, y en segundo lugar, hacer que el sistema operativo atienda a ese rango de entrada-salida y esa interrupción para comunicarse con el modem.

Tradicionalmente la elección del rango de entrada-salida y la interrupción se realizaba a través de una serie de microinterruptores manuales situados en el modem. Conocida la posición de estos interruptores, se configuraba el sistema operativo para que usara esos valores. Hoy en día casi la totalidad de los modems internos son Plug'n'Play, lo cual significa que el sistema operativo puede, por software, decirle a la tarjeta qué valores debe usar.

Configuración de modems Plug'n'Play en Linux

Si tienes un modem Plug'n'Play, lo primero que habrá que hacer es decirle que rango de entrada-salida y que interrupción debe usar. Lo más cómodo en este caso es usar los mismos valores que Windows 95. Para ello arranca Windows 95, y haz Inicio->Configuración->Panel de control. Una vez en el Panel de control, elige el icono 'Sistema' y dentro de él, el 'Administrador de dispositivos'. Dentro del apartado 'Puertos COM y LPT' elige el correspondiente al puerto COM donde tienes el modem. Busca en 'Recursos' el rango de entrada-salida y la interrupción que use y apúntalos.

Con esos valores en la mano, puedes configurar tu modem Plug'n'Play en Linux. Eso se hace con el programa 'isapnp'. Entra en Linux y busca si tienes un archivo llamado `/etc/isapnp.conf`. Si no lo tienes haz lo siguiente:

      pnpdump > /etc/isapnp.conf

Esto generará el esqueleto de un archivo de configuración para 'isapnp'. Este programa generará un listado con todas las posibles posibilidades de configuración que permiten tus dispositivos Plug'n'Play, pero todas deshabilitadas con un '#' al principio de cada línea. Los dispositivos aparecen por secciones por lo que es fácil encontrar los correspondientes a tu modem.

Así tu misión se reducirá a encontrar en la sección correspondiente a tu modem del archivo `/etc/isapnp.conf`, dos líneas así:

      # (IO 0 (BASE 0x0NNN))
      # (INT 0 (IRQ MM (MODE +E)))

donde NNN sea el rango de entrada-salida que use el modem en Windows y MM la interrupción. Las líneas no tienen por qué ser consecutivas ni ir en ningún orden especial. Cuando las encuentres, quítales el '#' inicial. Luego, al final de la sección del modem encontrarás una línea parecida a esta:

      # (ACT Y)

De la misma forma, le quitas el '#' inicial. Ya está. Listo para enviar dichos valores al modem. Esto lo hace la orden `isapnp /etc/isapnp.conf` y deberá aparecer en los scripts de arranque de Linux para enviar los valores cada vez que enciendas el ordenador. Las distribuciones más recientes (Red-Hat 5.0 y posteriores, Debian 2.0 y posteriores) ya incluyen dicha invocación por lo que no necesitarás tocar los scripts de arranque. En caso de tener una distribución antigua, será necesario añadir dicha orden. Un buen sitio para incluirla sería el script `rc.local`, que suele estar situado en uno de los subdirectorios de `/etc`.

De todas formas será necesario ejecutar `isapnp /etc/isapnp.conf` si queremos activar los cambios en este momento y nos queremos ahorrar el rearrancar la máquina.

Ahora hay que decirle al sistema operativo que debe usar esos valores para comunicarse con el modem. En el caso de los modems Plug'n'Play lo que viene a continuación es imprescindible.

Configuración de los puertos serie a ojos del sistema operativo

Lo primero que hay que saber es que Linux no llama a los puertos serie de la misma forma que el DOS o Windows. Así existe la siguiente correspondencia:

      DOS-Windows                     Linux
      -----------                   ----------
         COM1                       /dev/ttyS0
         COM2                       /dev/ttyS1
         COM3                       /dev/ttyS2
         COM4                       /dev/ttyS3

Ojo a las mayúsculas y las minúsculas del nombre de Linux. Son importantes.

Para leer la configuración y configurar los puertos serie se usa la orden 'setserial'. Para leer la configuración, hay que ejecutar `setserial` con el puerto serie que deseamos ver como único parámetro.

Por ejemplo:

      setserial /dev/ttyS1

nos muestra la configuración de COM2 y se obtendrá algo como esto:

      /dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ 3

o sea, el puerto serie (`/dev/ttyS1`), el tipo de chip UART que lleva (16550A), el puerto base de entrada-salida (2f8) y la solicitud de interrupción (3). Nótese que estos son los valores que el sistema operativo CREE que debe utilizar para comunicarse con el modem/puerto serie. Es posible que ahora no coincidan con los reales, incluso que ni siquiera detecte la UART, lo cual no es raro en caso de modems Plug'n'Play.

Si no coinciden, asignaremos los valores adecuados. Por fortuna, por lo general no será necesario indicar la dirección base de entrada-salida. Salvo casos muy, muy excepcionales COM1 usa la dirección base 3f8, COM2 la 2f8, COM3 la 3e8 y COM4 la 2e8, y eso setserial lo sabe. Así, al indicar el puerto serie, setserial implícitamente sabe cual es la dirección base. En cambio, en caso de tener un puerto COM5 o superior sí será necesario indicar la dirección base.

Así para COM1-COM4 sólo indicaremos la interrupción. Por ejemplo, supongamos que tenemos un modem en COM3 que usa la interrupcion 5. La orden a introducir sería.

      setserial /dev/ttyS2 irq 5 autoconfig

Y si quisiéramos indicar también la dirección base de entrada-salida (por tener el modem en COM5, por ejemplo) se haría así.

      setserial /dev/ttyS4 port 0x2e8 irq 10 autoconfig

lo cual hace que el sistema operativo use un rango de direcciones desde la 2e8, y la interrupción 10. Nótese que el '0x' antes de la dirección base es importante.

Por último sólo queda ver que los cambios han surtido efecto. Para ello bastará usar de nuevo setserial de la primera forma que se indicó.

Por desgracia esta configuración durará hasta que apaguemos el ordenador. Por tanto será necesario incluir la línea o líneas de configuración `setserial /dev/ttyS2 irq 5...` en uno de los scripts de arranque de Linux para que los puertos se configuren cada vez que se inicie el sistema operativo. Un buen candidato es `rc.local`, que estará en uno de los subdirectorios de `/etc`. En caso de ser necesario incluir en `rc.local` tanto el `isapnp /etc/isapnp.conf` para configurar un modem Plug'n'Play, y el `setserial...` de los puertos serie, deberá colocarse el `isapnp...` en primer lugar.

También habrá que usar `setserial` de la misma forma si el ordenador tuviera más de dos puertos serie, (contando los que traen los modems internos en caso de disponer de alguno). El motivo es que por alguna extraña razón de diseño del PC, COM1 y COM3 por defecto comparten la misma interrupción, y a pesar de que esa configuración no es deseable, Linux por defecto busca COM3 en la misma interrupción que COM1, por lo que habría que cambiar la de COM3. Lo mismo ocurre con COM2 y COM4 por lo que habría que cambiar COM4. Si no se hiciera esto, podrían ocurrir cosas muy raras, como ratones y modems que dejan de funcionar, modems que funcionan "a pedales" (cuando se mueve el ratón), etc...

## 8.4 ¿ Cómo compruebo que todo está bien configurado ?

Una vez activados los cambios con el comando isapnp para los modems Plug'n'Play y el/los comando(s) setserial necesarios para configurar el/los puerto(s) serie, o se ha reiniciado el ordenador con los scripts de arranque modificados para que ejecuten dichas órdenes (es más seguro hacer lo primero), se puede probar si todo va bien. La forma más sencilla es usar un programa de comunicaciones y enviarle comandos al modem para ver si responde.

Así un programa adecuado sería `minicom` que es un terminal de comunicaciones tipo Telix. No es complicado de configurar. Pulsando `Ctrl+a` y luego z sale un menú. Una de las opciones 'cOnfigure minicom' dará paso a otro menú donde la opción "Serial port setup" nos permitirá elegir el puerto serie, la velocidad con la que nos comunicaremos con él (no la velocidad del modem) y otras opciones más. Lo normal es usar 115200 o 57600 para la velocidad, 8N1, "Hardware Flow Control: Yes" y "Software Flow control: No". Una vez configurado y sin ningún menú sobre la pantalla escribes 'AT' (Las dos en mayúsculas o las dos en minúsculas) y pulsas ENTER. Si el modem responde al instante 'OK' o con un número cero, indicaría que el modem funciona y que responde bien. Para completar la faena puedes probar a conectarte a una BBS o a tu nodo de infovia plus (los nodos de infovia plus permiten una conexión tipo terminal, aunque no sé que se puede hacer con ella) y así probar que todo va bien.

Si el modem tarda en responder al 'AT', o no responde, algo ha fallado en la configuración del modem o del puerto serie y habría que revisar lo hecho.

Un comentario sobre el 'AT'. Cuando se escriben estas dos letras pueden ocurrir varias cosas.

- Que salga el AT mientras lo escribes (lo normal).
- Que no te salga el AT, pero al pulsar `ENTER` el modem responda con OK. Para solucionar esto deberías activar el eco local del terminal con `Ctrl+a e` o escribir a ciegas "ATE1" y pulsar `ENTER`.
- Que te salga AATT y todo lo que pongas por duplicado. No es problema porque el modem sólo recibirá 'AT'. Para quitar esto, desactiva el eco local del terminal con `Ctrl+a e` o escribe "ATE0" aunque te salga duplicado. Cuando pulses ENTER tras el ATE0 ya funcionará bien.

## 8.5 ¿Cómo conecto a internet con pppd ?

¿Que es pppd? Se trata de la primera posibilidad de conexión a internet que ofrece Linux. Es una conexión a internet que gasta pocos recursos y con posibilidad de hacerla desde la consola, sin necesidad de entrar en modo gráfico. Cualquiera que aspire a obtener al máximo rendimiento de la conexión a internet, por ejemplo automatizando la conexión, automatizando la recogida de correo, noticias, ftp, etc... casi seguro no tendrá más remedio que pasar por aquí.

Como inconvenientes, tiene unos cuantos. El más destacable es la falta total y absoluta de interactividad o de información en pantalla de cómo va la conexión, siendo necesario el uso de otros comandos (como `ifconfig`) o la observación de archivos históricos (`/var/log/messages`) para averiguar si la conexión se ha realizado con éxito o ha habido algún error.

La configuración de pppd se basa en la creación de una serie de archivos.

`/etc/ppp/options` : Configuración de la conexión y del puerto serie
`/etc/ppp/marcado` : Configuración del modem y marcado del número de teléfono
`/etc/ppp/pap-secrets` : Claves de acceso para identificación con PAP
`/etc/ppp/chap-secrets` : Claves de acceso para identificación con CHAP
`/etc/resolv.conf` : Servidores de nombres (DNS)

Así un posible `/etc/ppp/options` sería así:

      -----------------------------------------------------------------
      connect "/usr/sbin/chat -v -f /etc/ppp/marcado"
      name mi_login@mi_proveedor
      defaultroute
      noipdefault
      modem
      crstcts
      asyncmap a0000
      mru 576
      /dev/ttySx
      115200
      --------------------------------------------------------------------

Comentarios:

- En mi_login@mi_proveedor irá el login y el proveedor (el proveedor sin dominio, por ejemplo: fulanito@arrakis)
- Donde pone `/dev/ttySx`, la 'x' indica el puerto serie: `/dev/ttyS0 = COM1, /dev/ttyS1 = COM2`, etc...
- La velocidad 115200 NO es la velocidad del modem, es la velocidad entre el modem y el puerto serie, que no tiene por qué coincidir con la velocidad en el lado de la línea telefónica. La velocidad del modem (33600, 28800...) NO hay que ponerla en ningun sitio. Algunos modems no soportan esa velocidad entre el modem y el puerto serie y habrá que probar con 57600 o incluso con 38400. Si se tiene una UART 16450 o 8250, utilizar 38400 (usar `setserial /dev/ttySx` para conocer la UART del modem o del puerto serie, donde 'x' indica el puerto serie de la misma forma que antes). Nótese que el valor óptimo es 115200 y conforme menor sea dicho valor, menos rendimiento le sacaremos al modem.

`/etc/ppp/marcado`:

      --------------------------------------------------------------
      ABORT "BUSY"
      ABORT "NO CARRIER"
      ABORT "NO DIALTONE"
      ABORT "ERROR"
      ""
      "AT& F" TIMEOUT 5 OK
      "ATDTnumero_de_telefono" TIMEOUT 100 CONNECT
      ---------------------------------------------------------------

Comentarios:

- Los ABORT iniciales sirven para que, si el modem encuentra una situación anómala (no hay tono de llamada, comunicando...) y responde alguno de esos mensajes (BUSY, NO CARRIER...), el pppd pare y no pierda tiempo hasta fallar el TIMEOUT 100 que sería el que acabase la conexión. El problema es que no todos los modems responden de la misma forma (por ejemplo, el mío responde "NO DIAL TONE" en vez de "NO DIALTONE") y la correspondencia debe ser exacta. Por tanto, para una configuración correcta, será necesario consultar en el manual del modem cómo son estos mensajes.
- El "AT& F" es la cadena de inicialización del modem. La que se indica es de las más estandar. No obstante, en algunos modems puede ser mejor "ATZ" o variantes de "AT& F" (como "AT& F1", "AT& F2"...). Como referencia, se debe usar aquella que configure el modem para usar control de flujo hardware (RTS/CTS). En caso de no acertar en la configuración del modem, es posible que se produzcan algunos efectos indeseables (el modem no cuelga al cortar la comunicación, conexión lenta...). Una posibilidad es "fusilar" la que use windows. Se puede ver dentro del directorio de windows un archivo llamado modemlog.txt o modemdet.txt.
- El numero_de_telefono es precisamente eso. El número de telefono del nodo de Infovia Plus, el de Iddeo, etc...

`/etc/ppp/pap-secrets` y `/etc/ppp/chap-secrets`

Existen dos formas posibles de identificación cuando nos conectamos a un proveedor: PAP y CHAP. PAP es la más sencilla y es la que usaba por ejemplo Infovia. CHAP es muy usada en Infovia Plus.

El formato de ambos archivos es el mismo:

      ------------------------------------------------------------------------
      mi_login@mi_proveedor *       password
      ------------------------------------------------------------------------

Comentarios:

- mi_login@mi_proveedor debe ser exactamente lo mismo que se puso como parámetro de la opción 'name' en `/etc/ppp/options`.
- Los campos Van separador por TABULADORES no por espacios.
- Si se dispone de más cuentas en otros proveedores, se pueden añadir nuevas líneas con el mismo formato.

¿Cual uso, pap-secrets o chap-secrets? Si sabes que tu proveedor usa PAP, grábalo como `pap-secrets`. Si usa CHAP, grábalo como `chap-secrets`. Si no sabes cual usa, puedes hacer prueba-y-error o crearte los dos, o crearte uno sólo y hacer un enlace simbólico de uno al otro. Por ejemplo, si has creado chap-secrets, para hacer un enlace desde pap-secrets se haría:

      cd /etc/ppp
      ln -s chap-secrets pap-secrets

Esto en teoría haría que pppd y tu proveedor se pusieran de acuerdo para elegir PAP o CHAP según prefieran.

`/etc/resolv.conf` :

Aquí irían las direcciones de los DNS primario y secundario. El formato es muy sencillo:

      -------------------------------------------------------
      nameserver DNS_primario
      nameserver DNS_secundario
      -------------------------------------------------------

Por ejemplo, `nameserver 195.5.65.2`

Comentarios:

- En lugar de DNS_primario y DNS_secundario, se pondrán las direcciones numéricas de los DNS primario y secundario respectivamente. Los DNS primarios y secundarios deberás preguntarlos a tu proveedor y deberán dártelos, pues no son secretos.
- Si no tuvieras DNS_secundario, puedes ahorrarte la segunda línea.

Una vez creados los scripts, la conexión se efectuaría al escribir `pppd` o `/usr/sbin/pppd`.

Para comprobar si la conexión tiene éxito, se puede usar el comando `/sbin/ifconfig` y ver si al cabo de un minuto o dos aparece un bloque nuevo `ppp0`.

Otra forma es consultando periódicamente el fichero `/var/log/messages` hasta ver si aparece algo como esto:

      Local  IP address xxx.xxx.xxx.xxx
      Remote IP address yyy.yyy.yyy.yyy

Lo cual indicaría una conexión con éxito. Una forma de hacer esto sería con la orden `tail -f /var/log/messages` y pulsar `Ctrl+C` cuando veamos que la conexión ha funcionado o fallado.

La desconexión se realizaría introduciendo la orden `killall pppd`.

En caso de necesitar ayuda, remitir la duda a es.comp.os.linux.misc o es.comp.os.linux.redes mandando copia de los scripts (ocultando los passwords, claro) y lo que haya salido en `/var/log/messages` durante la conexión fallida.

NOTA IMPORTANTE: Los ficheros arriba descritos han de crearse desde cero con un editor de Linux. Crearlos con un editor de DOS o de Windows, o con operaciones de cortar-y-pegar en Windows añade un caracter no visible al final de cada línea que Linux confundiría con un caracter normal, inutilizando los scripts.

## 8.6 ¿Cómo conecto a internet con KDE-kppp?

Después de haber utilizado diversos sistemas para conectar con Internet a través de InfovíaPlus mediante módem y haber constatado en el grupo de noticias es.comp.os.linux la gran cantidad de veces que se pregunta acerca de cómo conectarse mediante kppp, hemos pensado que este breve resumen sobre como establecer la conexión usando el kppp podría ser interesante para algunos que se inician en linux y disfrutan del entorno grafico KDE. Las notas que escribo a continuación se refieren a la versión KDE 1.0 (las diferencias con respecto al KDE 1.1 son mínimas)y por lo tanto voy a partir de la base de que el usuario de linux ha instalado ya el KDE y le funciona sin problemas de ningún tipo.

Guía paso a paso de conexión a internet a través de InfovíaPlus con kppp.

Antes de comenzar

El módem debe estar correctamente instalado y su funcionamiento verificado (usando por ejemplo el programa minicom). El dispositivo asociado al módem dependerá del puerto serie al que está conectado. Si está conectado al "COM2" (en jerga DOS) el dispositivo será `/dev/ttyS1`, y podemos hacer un enlace simbólico a `/dev/modem`:

      ln -s /dev/ttyS1 /dev/modem

Además debemos saber su velocidad máxima. Si el módem es de más de 28,8Kbps podemos tomar 115200.

Otros datos fundamentales son los que tienen que ver con nuestro proveedor de internet:

- "Domain name" (Nombre de dominio del servidor de acceso) seguido por un punto y la extensión del país: por ejemplo proveedor.es (se trata de un nombre inventado para ilustrar el procedimiento)
- "DNS IP" (Dirección IP del servidor de nombres de dominio: en nuestro caso será (inventado también) 194.150.24.25
- Login: compuesto por nuestro indicador de usuario (p.ej. user) y "Domain name" sin extensión separados por arroba: user@proveedor
- Número de teléfono que corresponda según nuestro nodo de conexión. Cuando existía Infovía este número era el 055, pero con InfovíaPlus, dependiendo del lugar hay un teléfono de acceso, por ejemplo (para Sevilla) 954547000

Comenzamos

Invoquemos kppp mediante acción sobre el correspondiente icono del menú del KDE o escribiendo en un terminal

      [user@localhost]# kppp

Para que programa funcione para un usuario normal el propietario y el grupo deben ser root y el ejecutable debe tener el bit SETUID activado, para poder abrir el dispositivo del módem. Si no es así se pone uno superusuario

      [user@localhost]# su root

      (... da la password... y entonces hacemos)

      [user@localhost]# chown root.root kppp
      [user@localhost]# chmod +s kppp
      [user@localhost]# exit

      (...para volver a usuario normal...)

Si todo ha ido bien aparecerá la ventana del kppp y con el ratón accionaremos la tecla

      setup

Entonces se abrirá la ventana kppp configuration con varias pestañas indicando secciones: Accounts; Device; Modem; PPP y About. Comenzaremos por la primera sección

- Seccion ACCOUNTS

  Accionamos la tecla new y aparece una nueva ventana llamada new account con otra serie de subsecciones: desde Dial hasta Accounting.

  Subseccion DIAL

  Esta sección contiene el Dial Setup que debemos rellenar:
  Connection name: Ponemos el nombre que queramos dar a la conexión; por ejemplo INFOPLUS
  Phone number: 954547000
  Authentication: La autenticación puede realizarse de cuatro modos; script-based, PAP, terminal-based o CHAT; debemos elegir la opción PAP
  Store password: Si no quieres tener que teclear la password cada vez que te conectes deja activada esta opción Execute program upon connect: Debe tener su casillero vacío. No escribas nada.
  Execute program upon disconnect: Debe tener su casillero vacío. No escribas nada.
  Edit pppd arguments: Una vez activada la opción los argumentos se introducen escribiéndolos en el casillero "arguments" y pulsando la tecla "add". Deben estar los siguientes:

        detach
        defaultroute
        asyncmap a0000
        noipdefault
        ipcp-accept-local
        ipcp-accept-remote

  cuando hayamos terminado, pulsamos "close" y pasamos a las subsecciones siguientes

  NOTA: Estos argumentos los tenía así establecidos para cuando conectaba con Infovía. Al pasar a InfovíaPlus, alguno puede quedar superfluo, pero ¡funciona!, así que no quité ninguno.

  Subseccion IP

  Contiene el IP setup. La única opción que debe estar activada es Dynamic IP address

  Subseccion DNS

  Aquí tenemos el menú del DNS Server:
  Domain name: proveedor.es
  DNS IP address: La(s) introducimos en este casillero: 194.150.24.25 y pulsando la tecla "add" la(s) pasamos al DNS address list. Al menos debe haber una.
  Disable existing DNS servers during connection: Esta opción debe estar activada

  Subseccion GATEWAY

  Contiene el Gateway setup las opciones que deben activarse son:
  Default Gateway
  Assign the default route to this gateway

  Subseccion LOGIN SCRIPT

  ¡Principiantes Ni tocarlo! El edit script deberá estar vacío, con el primer casillero de opciones presentando la opción "EXPECT".

  Subseccion ACCOUNTING

  La opción Enable accounting debe estar activada. Selecciona entonces con la opción "Selected" : Spain y dentro de ella, Telefónica Local y deja la opción "Volume accounting: No accounting" desactivada.

  Entonces, una vez que hemos rellenado todas las subsecciones de la sección ACCOUNTS, accionamos el botón OK de la ventana "new account" y volvemos a la de kppp configuration. Hay que rellenar el resto de las secciones.

- Seccion DEVICE

  Aquí está el menú Serial device:
  Modem device: pon el dispositivo correspondiente, p.ej. /dev/ttyS1 (para modem en puerto serie com2)
  Flow control: CRTSCTS (hardware flow control)
  Line termination: La que corresponda. Generalmente es CR/LF
  Connection speed: La que corresponda, p.ej. 115200
  Modem lock file: /var/lock/LCK..modem

  Este fichero debe estar por defecto. No lo cambies si no sabes lo que haces, pues algunos programas como mgetty dependen de la existencia de tal fichero y kppp no funcionará.

- Seccion MODEM

  Busy wait: 0 seconds
  Modem Asserts CD line: opción desactivada
  Modem commands: Deja los valores por defecto y no cambies nada
  Query modem: Pulsando este botón kppp insta al módem a que se identifique. Sirve para probar el módem.
  Terminal: También sirve para comprobar si el módem negocia bien el protocolo de conexión. De todos modos no te detengas en esto si no sabes lo que haces y sigue adelante.

- Seccion PPP

  Presenta el ppp setup:

  pppd timeout: 60 seconds
  Dock into the panel on connect: opción desactivada
  Automatic redial on disconnect: opción generalmente desactivada
  Show clock on caption: opción activada
  Disconnect on X-server shutdown: opción activada
  Quit on disconnect: opción desactivada
  Minimize window on connect: opción activada

La sección ABOUT evidentemente es para mirar solamente. Por último accionamos el botón OK de la ventana kppp configuration. Con ello volvemos a la inicial de kppp. Activamos "Show log window". En el casillero "Connect to" deberá aparecer el nombre de nuestra conexión (en el ejemplo INFOPLUS). El login ID será en nuestro ejemplo user@proveedor. Escribimos la password en su casillero: ****** y por último pulsamos "connect"

Si todo va bien, aparecerán dos ventanas: una con el marco superior indicando "Connecting to: INFOPLUS" que mostrará Dialing 954547000 y otra mayor, a la derecha de la primera indicando en su marco superior "Login Script Debug Window" y presentando una serie de acciones:

      ATZ
      OK
      ATD954547000

      (Mientras está "Expecting Connect")

cuando se ha establecido la conexión, aparece en esa misma pantalla

      CONNECT 115200

e indicará en su marco inferior "running pppd" mientras la otra ventana indica "Logging on the network". Cuando la ventana mayor presente en su marco inferior "Done"; la otra más pequeña, que en su marco superior exhibirá el nombre de la conexión (INFOPLUS), se minimizará y ya estamos conectados.

Si restauramos la ventana de conexión INFOPLUS en un momento dado nos mostrará la siguiente información:

      Connected at 115200
      Time connected ....
      Session bill...PTAS
      Total bill ....PTAS

y dos teclas "Details" (para ver los detalles de la conexión con nuestro proveedor) y "Disconnect" evidentemente para desconectarnos. Si la pulsamos, aparecerá de nuevo la ventana kppp y entonces, para salir, presionaremos la tecla "quit".

Preguntas habituales

- kppp muestra "pppd has died unexpectly" o "data timeout has expired" (pppd ha muerto inesperadamente o ha pasado el tiempo de espera)

  Estos mensajes pueden aparecer alguna que otra vez, aisladamente. Si siempre se producen, entonces hay un problema. Hemos de comprobar que:

  - pppd es realmente un binario y no un script
  - pppd tiene el bit setuid activado
  - el fichero `/etc/pppd/options` existe pero está VACÍO
  - que no has usado la opción "lock" como argumento del pppd en la configuración del kppp
  - no uses el enlace simbólico `/dev/modem`; en su lugar usa el dispositivo real que corresponda, p.ej., `/dev/ttyS1`
  - asegúrate que tienes los permisos necesarios

  en caso de seguir igual, invoca:

        [user@localhost]# tail /var/log/messages

  para considerar las causas de posibles fallos. Es muy conveniente leer el dossier sobre kppp que aparece pulsando la tecla help de la ventana de kppp.

- kppp indica "sorry, can't open the modem" (perdón, no puedo abrir el modem)

  Esto significa que kppp no tiene permisos para abrir el dispositivo modem o que se ha seleccionado un dispositivo incorrecto en el cuadro del modem. Comprueba que el dispositivo sea correcto y luego dale el bit setuid a kppp.

- kppp muestra "I can't create a modem lock file" (no puedo crear el fichero de cerradura)

  O bien le das a kppp el bit setuid o das acceso al fichero /var/lock a los usuarios normales

- kppp sólo espera (Expecting OK)

  - ¿Has jugado con la configuración de CR/LF?
  - El modem quizá necesita más tiempo para inicializarse. Ve al cuadro "Modem commands" y aumenta el "Init Delay Time".

- La conexión funciona, pero no se pueden arrancar aplicaciones

  Puede ser que esté activada la opción "Auto configure hostname" y el servidor X tiene problemas para conectar con tu nuevo servidor. Si no hay más remedio que usar dicha opción, tendrás que proporcionar los permisos adecuados tecleando xhost + antes de realizar la conexión. Pero ¡MUCHO CUIDADO! porque cualquier otra persona tendrá acceso a tu servidor de X.

- kppp funciona, pero Netscape indica que "There is not a DNS entry for this server" (El servidor no tiene una entrada DNS)

  Intenta hacer un ping al número IP de otro servidor. Si funciona entonces hay que comprobar si le diste al kppp al menos una dirección DNS o si en el fichero `/etc/host.conf` hay una línea indicando algo parecido a `order hosts, bind`. (Debe haberla para que se consulte al servidor de nombres cuando se busca una dirección)

## 8.7 Mi modem cuelga durante la negociación inicial.

La negociación se puede distinguir por ser la fase en la que suenan los modems. Si cuelga bruscamente puede ser debido a un TIMEOUT demasiado corto en el script de marcado. Se puede subir a TIMEOUT 100 o a TIMEOUT 150. En caso de seguir colgando, se puede intentar añadir `S7=100` o `S7=150` entre el `AT` y el `DTnumero_de_telefono` en el script de marcado.

## 8.8 Mi modem suena muy fuerte ¿Cómo le bajo el volumen?

Depende de lo que quieras. Si simplemente quieres bajar el volumen del modem, basta añadir L1 o L0 a la cadena de inicializacion del modem. Un posible sitio para colocarlo seria entre el "AT" y el `DTnumero_de_telefono` en el script de marcado.

Si lo que quieres es que no suene para nada (por ejemplo, si quieres automatizar la conexión para que se realice de madrugada) deberás añadir M0 a la cadena de inicialización del modem. Puedes colocarla en el mismo sitio que se indicó para L1 o L0.

## 8.9 Conecto a internet, pero no logro ir a ningún sitio.

Lo primero que hay que tener en cuenta es que no hay conexión hasta que no aparece por `/var/log/messages` lo de `Local IP Address xxx.xxx.xxx.xxx` y `Remote IP Address yyy.yyy.yyy.yyy` (o el bloque `ppp0` al escribir `ifconfig`. Esto viene al caso de que a veces la autentificación inicial falla, por ejemplo porque haya caído el proveedor o esté saturado. En esos casos Infovia Plus no corta la conexión y puede parecer que el modem está conectado a internet cuando en realidad ni siquiera ha llegado a contactar con el proveedor. En ese caso habría que revisar las claves de acceso que se hubiesen introducido en `pap-secrets` o `chap-secrets` o intentarlo más tarde.

En caso de aparecer `Local IP Address...` y `Remote IP Address...` en `/var/log/messages`, pero no conseguir conectar a ningún sitio habría que revisar en primer lugar `/etc/resolv.conf` y ver si las direcciones allí introducidas son correctas. Una forma de averiguar si es culpa de los DNS es probar a conectar usando una dirección numérica. Por ejemplo se puede probar con la dirección 130.206.1.2 que corresponde a www.rediris.es . Si conecta, es un problema en `/etc/resolv.conf` (o del DNS de tu proveedor).

Si se descarta el DNS, comprueba que tienes la opción defaultroute en `/etc/ppp/options`. En caso afirmativo, comprueba `/var/log/messages` y mira si aparece algún mensaje tipo `ppp not replacing existing default route to ...`. Este último caso es típico si se tiene alguna tarjeta de red y has definido alguna dirección de gateway. Lo normal es eliminar dicho gateway. Averigua como introduciste el gateway y elimínalo. Una forma de eliminarlo sería por ejemplo con linuxconf, que viene con Red-Hat.

## 8.10 ¿Qué significa eso de "Unsupported protocol 0x31"?

Es un mensaje que aparece en `/var/log/messages` típico de Infovia Plus y debido a un protocolo de red llamado IPX. No debe suponer ningún problema para la conexión, pero si resultara molesto se podría añadir la opción noipx a `/etc/ppp/options`.

## 8.11 Mi modem no cuelga ¿Qué hago?

Asegúrate de que tienes (si usas pppd) la opcion modem en `/etc/ppp/options`.

En caso de que la tuvieras, comprueba que has puesto una cadena de inicialización al modem en el script de marcado (por ejemplo at& f, atz...).

En caso de que así siguiese sin colgar, tendrás que echar mano del manual del modem y buscar el comando "que haga que el modem cuelgue (o se resetee) cuando cambie la línea DTR". Normalmente es & Dx donde 'x' es un numero (que es lo que deberás buscar en el manual del modem, si prefieres prueba-y-error 'x' normalmente estará entre 0 y 4). Luego deberás editar el script de marcado del modem y colocar dicho "& Dx" entre el "AT" y el "DTnumero_de_telefono". Al usar el caracter '&', no olvides poner todo el conjunto (desde el AT hasta el final del número de teléfono) entre comillas dobles (p.e.: "AT& D3DT055").

## 8.12 Internet me va mucho mas lento con Linux que con Windows.

Esto puede deberse a muchas causas:

Deberás verificar la configuración del modem y del puerto serie. Sigue la descripción que se da en la sección correspondiente de la FAQ.

Comprueba que la velocidad que has puesto en `/etc/ppp/options` NO es la velocidad del modem (nada de 28800, 33600 o lo que sea, no es eso lo que debes poner ahí). Pon 115200 o 57600, preferiblemente la primera. Si tienes una UART 16450 u 8250 pon 38400 y asegúrate de NO poner el flag 'spd_hi' o 'spd_vhi' con setserial (si has seguido las instrucciones de la FAQ desde el principio no hace falta que compruebes esto). El tipo de UART que tienes lo podrás ver haciendo `setserial /dev/ttySx` donde 'x' es 0 para COM1, 1 para COM2, etc...

Si sigue lento o conectando mal, asegúrate de poner una cadena de inicialización al modem ("at& f", "atz") y que la opción crtscts aparece en `/etc/ppp/options`. En caso de continuar los problemas deberás echar mano del manual del modem y buscar las opciones que "activen el control de flujo RTS/CTS". Suelen ser de la familia de las que empiezan por '&'. En algunos modems es una sola orden (por ejemplo "& K3") y en otros hay que activar el RTS y el CTS separadamente. Colocar el o los comandos entre el "AT" y el "DTnumero_de_telefono". Si usas el caracter '&', asegúrate de poner todo el conjunto (desde el AT hasta el final del número de teléfono) entre comillas dobles (p.e. "AT& K3DT055").

## 8.13 Tengo más de un proveedor de internet ¿Qué hago para poder elegir por cual me conecto?

Una posible forma sería eliminar de `/etc/ppp/options` la opción name mi_login@mi_proveedor. De esta forma, si hemos puesto en `pap-secrets` o `chap-secrets`, el login y el password de todos nuestros proveedores, bastaría con escribir `pppd name login@proveedor` para elegir a cual nos queremos conectar.

Esto funciona si todos los proveedores comparten el mismo número de teléfono (por ejemplo, si todos están en infovía plus). En caso de tener diferentes números de teléfono, habría que eliminar en `connect "/usr/sbin/chat -v -f /etc/ppp/marcado"` de `/etc/ppp/options`, crearse un fichero de marcado particular para cada proveedor y crearse un fichero para cada proveedor en `/etc/ppp` con las dos opciones personalizadas que le correspondan. O sea:

      /etc/ppp/nombre_del_proveedor:

      ------------------------------------------------------------
      connect "/usr/sbin/chat -v -f /etc/ppp/marcado_proveedor"
      name login@proveedor
      ------------------------------------------------------------

Y ejecutar pppd así:

      /usr/sbin/pppd file /etc/ppp/nombre_del_proveedor

Las DNS de todos los proveedores se podrían poner en `/etc/resolv.conf`, añadiendo nuevas líneas "nameserver xxx.xxx.xxx.xxx". Es conveniente ordenar los nameservers poniendo primero todos los DNS primarios de todos los proveedores y después los DNS secundarios. También conviene poner en primer lugar los correspondientes a los proveedores más usados.

## 8.14 Solo puedo usar internet como root. ¿Qué hago para poder hacerlo como usuario?

Hay dos formas de hacerlo. La forma "buena", sería usando el programa `sudo` el cual permite ejecutar como usuario algunos programas que sólo podrían funcionar como root. Esto supondría que cada vez que uno quisiera conectarse a internet debería introducir un password, lo cual es útil en caso de que otros tuvieran acceso a nuestro ordenador. Para lo configuración de sudo consultar `man sudo`.

La forma "mala", y digo mala porque es más insegura en caso de que otros tengan acceso a nuestra máquina, consistiría en poner pppd "suid root" lo cual posibilita que un usuario normal tuviera acceso al programa de una forma similar que root.

Para esto último, habría que empezar por localizar `pppd`. Suele estar en el directorio `/usr/sbin`. Luego haría falta echar un vistazo para ver que permisos tiene. Esto se hace con la orden `ls -l pppd` y debe arrojar algo parecido a esto.

      -rws--x--x   1 root   ppp     70336   May 18  1996 pppd

Lo que se persigue es que la tercera letra sea una 's', como en el ejemplo. Si el programa no está "suid root", la tercera letra será una 'x'. Entonces en este caso habría que hacer `chmod 4711 pppd` para conseguirlo.

Los scripts de `/etc/ppp` necesitarían tambien acceso libre para los usuarios así que habría que hacer `chmod 755 /etc/ppp` y `chmod a+r /etc/ppp/*`. El efecto secundario que esto tiene es que cualquier usuario del sistema puede leer las claves de acceso a nuestro proveedor de internet. Existe la posibilidad de limitar la conexión a internet (y a los scripts de conexión y claves de acceso), leer la seccion ¿Cómo se cambian los permisos de ficheros y directorios?

NOTA: Aún así, es posible que no seamos capaces de conectar con internet como usuario normal. Una posible causa de fallo sería intentar conectar a internet escribiendo `pppd` en vez de `/usr/sbin/pppd`. Para root funciona la primera, pero para el resto de usuarios no. El motivo es que el PATH (el conjunto de directorios en los que Linux busca un ejecutable) es diferente para root que para los usuarios normales. Los usuarios normales no tienen `/usr/sbin` dentro del PATH así que deberán hacer `/usr/sbin/pppd` para conectarse a internet o hacer un enlace simbólico a `/usr/sbin/pppd` desde otro directorio que sí esté en el PATH de usuario (como por ejemplo `/usr/bin`), o hacernos un script (pequeño programa) que se limite a ejecutar `/usr/sbin/pppd`. Para el enlace simbólico bastaría hacer: `ln -s /usr/sbin/pppd /usr/bin/pppd`

Next Previous Contents