A lo largo de los diferentes capítulos de este curso se tratará de enseñar a configurar y mantener los programas que dan acceso a los diferentes servicios del mundo Internet bajo Linux, comentando el proceso de configuración de una manera sencilla que permita a cualquier usuario (con conocimientos mínimos de GNU/Linux) configurarse la conexión a Internet por Infovia, el correo electrónico y el acceso a páginas Web, el IRC, etc., todo esto desde un sistema operativo tan potente y estable como es Linux.
En Linux, en el directorio /dev pueden encontrarse todos los devices (dispositivos) conectados a nuestro PC, entre ellos los diferentes puertos COM, bajo los nombres /dev/ttyS0 a /dev/ttyS3 (COM1 a COM4), que son los ficheros especiales mediante los cuales se accede a dichos puertos. También se suele disponer de /dev/modem, que no es más que un enlace al puerto COM de nuestro modem, para trabajar con el modem de una manera más genérica. Si no disponemos del mismo, éste debe ser creado como un enlace al puerto (usando ln) en el que esté situado nuestro modem (/dev/ttySx, siendo x un número del 0 al 3 según las equivalencias de la tabla 1):
Gandalf:/# ln -s /dev/ttySx /dev/modem TABLA 1: Device Equiv. MSDOS Puerto IRQ -------------------------------------------------- /dev/ttyS0 COM1 0x3f8 4 /dev/ttyS1 COM2 0x2f8 3 /dev/ttyS2 COM3 0x3e8 4 /dev/ttyS3 COM4 0x2e8 3Una vez realizado esto debemos tratar de obtener la máxima velocidad de comunicación con nuestro modem, con lo que editaremos el fichero /etc/rc.d/rc.local (o en /etc/rc.serial, /sbin/init.d/serial o /etc/rc.d/rc.local según distribuciones) e incluiremos la línea:
/bin/setserial /dev/modem spd_vhiNormalmente el modem suele estar configurado de esta manera desde la instalación de Linux, pero nunca está de más cerciorarse de esto. La misma operación puede hacerse manualmente en la línea de comandos (cada vez que se quiera activar el flag spd_vhi) ejecutando la orden:
Gandalf:/# setserial /dev/modem spd_vhiA continuación testeamos el puerto serie mediante setserial:
Gandalf:/# setserial /dev/modem -a ttyS3, Line 1, UART: 16550A, Port: 0x02e8, IRQ: 3 Baud_base: 115200, close_delay: 50, divisor: 0 closing_wait: 3000, closing_wait2: infinite Flags: spd_vhi skip_testPara comprobar si nuestro modem funciona correctamente puede utilizarse el programa minicom (para conectarse a una BBSs, por ej.), que una vez configurado nos permitirá realizar llamadas en modo terminal mediante comandos AT (o mediante el menu que incluye) y testear el funcionamiento del modem. Una vez comprobado el correcto funcionamiento puede procederse a la configuración de pppd, el daemon que gestiona las conexiones PPP.
El trabajo de configuración en sí mismo es bastante sencillo y consistirá simplemente en crear varios ficheros de configuración para el programa pppd, que es quien realiza la conexión tomando los datos necesarios para realizar la misma desde los ficheros de configuración que le indiquemos. Todo el proceso de configuración debe hacerse como root, así como la conexión (en principio y hasta que se comente el uso de sudo o de UserGroups que permitan realizar estas conexiones a los usuarios no super-user).
Muchos Linux ya vienen compilados con soporte para realizar conexiones ppp (suele estar incluido por defecto) y con el paquete pppd (que carga el módulo ppp automáticamente ante cada llamada). Para saber si tenemos instalado dicho paquete, y su versión, ejecutamos:
Gandalf:/# rpm -q ppp ppp-2.2.0f-6Para realizar una conexión bastaría con ejecutar el programa pppd con los parámetros adecuados:
Gandalf:/ # pppd /dev/modem 115200 passive modem [etc.]En la práctica la gran cantidad de opciones que se utilizan para realizar la conexión hace que resulte más cómodo incluirlas en ficheros de opciones, llamando a pppd mediante uno de estos ficheros:
Gandalf:/ # pppd -file fichero_de_opcionesEste fichero de opciones no es más que un fichero de texto con los parámetros que deseamos pasarle a pppd (de igual manera que si lo hiciésemos desde la línea de comandos), normalmente situado en el directorio /etc/ppp. Si ejecutamos pppd sin ningún otro parámetro (sin el parámetro file) el programa buscará las opciones en el fichero /etc/ppp/options (ideal si sólo disponemos de un proveedor), aunque se puede incluir las opciones de cada proveedor que tengamos en un fichero diferente, cosa que nos permitiría posteriormente conectar mediante uno u otro cambiando la llamada al daemon pppd:
Gandalf:/ # pppd -file /etc/ppp/proveedor_arrakisA continuación puede observarse un ejemplo de fichero de parámetros para pppd, donde cada opción está separada por un avance de línea (aunque podría usarse el carácter espacio) y donde cualquier línea precedida por el caracter '#' es un comentario. Este fichero ha de crearse con cualquier editor de textos, como por ej. el editor JOE mediante la orden joe /etc/ppp/options-arrakis:
# # Ejemplo de fichero de conexión /etc/ppp/options-arrakis # connect "/usr/sbin/chat -v -f /etc/ppp/chat-infovia" ipcp-accept-remote :192.168.13.200 crtscts modem passive name sromero@arrakis noipdefault debug defaultroute asyncmap a0000 /dev/modem 115200Algunas cosas a hacer notar sobre esta configuración son:
1.- Las opciones ipcp-accept-remote y :192.168.13.200 aseguran que se
realizará la conexión informando al pppd que si infovia no le facilita la
dirección IP de nuestro proveedor, debe aceptar la dirección fictica que le
estamos indicando, consiguiendo que se realice la conexión (solución de muchos
fallos de conexión).
2.- La opción crtscts activa el control por hardware del flujo de datos
(usando RTS/CTS) del puerto serie.
3.- La opción passive le indica que si no se recibe respuesta al iniciar
una conexisperar pasivamente a recibir datos válidos.
4.- Mediante modem le indicamos a pppd que debe usar la línea telefónica.
5.- El valor 115.200 es la velocidad de nuestro puerto (no del modem) en
bps. Respecto a la velocidad real de conexión, Linux la negocia
automáticamente tratando de obtener la máxima posible.
6.- El parámetro name pecifica la cuenta de nuestro usuario
para la autentificación de la identidad. No especifica el nombre de nuestra
dirección email, sino la cuenta con la que realizamos la conexión (el mismo
que por ejemplo se coloca en el asistente de conexiones de Windows). El
password se introduce en un fichero aparte (autentificación PAP), como veremos
a continuación.
TIMEOUT 5 "" ATZ OK ATDT055 ABORT "NO CARRIER" ABORT BUSY ABORT "NO DIALTONE" ABORT WAITING TIMEOUT 70 CONNECT ""El significado de este fichero viene a ser que, por ejemplo, en el caso de recibir un BUSY (línea telefónica comunicando) por parte del modem, se debe abortar (ABORT) la conexión, definiendo de esta manera la respuesta ante una línea comunicando. Mediante chat controlamos la acción a ejecutar por pppd a distintos posibles estados del modem, como BUSY, NO CARRIER, y CONNECT (para más información, man chat). A este fichero hay que darle permisos de ejecución, de manera que (siempre como root) ejecutamos la orden:
Gandalf:/ # chmod 770 /etc/ppp/chat-infovia
# # fichero de configuración /etc/resolv.conf # Incluir dominio y DNS primaria (y secundaria si la hay). # domain arrakis.es nameserver 195.5.64.2 nameserver 195.5.64.6Tras el parámetro domain se especifica el dominio de nuestro ISP, y tras nameserver se escriben las DNS del mismo, proporcionadas por el proveedor (muchos proveedores tienen una DNS primaria y otra secundaria, y en Linux pueden incluirse tantos nameserver como DNSs tenga nuestro ISP). Si no sabemos la DNS de nuestro ISP, puede mirarse en la conexión que tengamos bajo Windows, entrando en el icono de conexión mediante el botón derecho del ratón y examinando la Configuración de TCP/IP, o llamar a nuestro proveedor para que nos informe de la misma.
"cuenta1"TABULADOR*TABULADOR"password1" "cuenta2"TABULADOR*TABULADOR"password2" (etc.)A título de ejemplo, mi fichero pap-secrets (recordad la separación por medio de tabuladores y no de espacios simples):
# Secrets for authentication using PAP # client server secret "sromero@arrakis" * "mi_password"Con esta modificación ya tenemos configurada totalmente la conexión a Internet.
1.- Entramos como root en la primera consola virtual y ejecutamos:
Gandalf:/ # tail -f /var/log/messagesMediante este comando obtendremos en pantalla los datos que vayan siendo añadidos por el propio sistema a /var/log/messages, el fichero de mensajes del sistema, con lo que podremos ver las salidas generadas por pppd y por tanto verificar todos los parámetros de la conexión. Esto sólo es necesario realizarlo la primera vez que tratemos de realizar la conexión para ver posibles errores. Tail puede cerrarse con en cualquier momento pulsando CTRL+C.
2.- Entramos a la 2a consola virtual con ALT+F2 y entramos como root. En esta consola ejecutamos pppd para comenzar el marcado:
Gandalf:/ # pppd file /etc/ppp/mi_proveedor3.- Pasamos de nuevo a la primera consola virtual (ALT+F1) y observamos los mensajes obtenidos desde pppd para cada una de las partes de la conexión (marcado, conexión, autentificación, negociación de velocidades y direcciones IP, etc.). Tras esto, y si no obtenemos ningun mensaje de modem hangup (el modem ha colgado), observaremos en pantalla 2 direcciones IP (local y remota), y habremos efectuado la conexión. Si la conexión ha sido fallida debemos intentarlo un par de veces más pues es probable que haya fallado la autentificación, que no haya respondido el servidor, o incluso que tengamos un fallo en nuestros scripts de conexión, que deberemos corregir (aparte de los habituales fallos de conexión de Infovía a determinadas horas). Por otra parte si disponemos de un modem PlugNPlay y este no ha sido detectado por Linux habremos de configurarlo manualmente, como se verá en la próxima entrega.
En el cuadro 2 puede observarse la salida típica de una conexión pppd realizada con éxito.
CUADRO 2: Salida del comando tail -f /var/log/messages: Gandalf pppd[151]: pppd 2.2.0 started by root, uid 0 Gandalf chat[154]: send (ATZ^M) Gandalf chat[154]: expect (OK) Gandalf chat[154]: ATZ^M^M Gandalf chat[154]: OK -- got it Gandalf chat[154]: send (ATDT055^M) Gandalf chat[154]: abort on (NO CARRIER) Gandalf chat[154]: [más cadenas de abort on] Gandalf chat[154]: expect (CONNECT) Gandalf chat[154]: ATDT055^M^M Gandalf chat[154]: CONNECT -- got it Gandalf chat[154]: send (^M) Gandalf pppd[151]: Serial connection established. Gandalf pppd[151]: Using interface ppp0 Gandalf pppd[151]: Connect: ppp0 <--> /dev/modem Gandalf pppd[161]: [cadenas de validación e IPCP] Gandalf pppd[161]: local IP address 195.5.78.119 Gandalf pppd[161]: remote IP address 192.168.13.2004.- En este momento ya podemos pasar a cualquier consola virtual y entrar como un usuario cualquiera con el fin de utilizar cualquier programa de navegación, IRC, email o de cualquier servicio de Internet, como Netscape, Arena, lectores de correo o news, ftp, o telnet.
Gandalf pppd[161]: Hangup. Gandalf pppd[161]: Connection terminated. Gandalf pppd[161]: Exit.Aparte de estos métodos de desconexión, en algunas distribuciones se incluye el script ppp-off.
Santiago Romero