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:

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.

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: /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:

/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: ¿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:

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:

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

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

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