Aula Macedonia


Curso de Introducción y Uso del Linux


Artículo realizado por
Pedro A. Carrasco.





Capítulo 4.
Conexión a Internet.

4.1 Introducción.

Una vez que ya sabemos configurar el núcleo y el entorno X-Window, estamos en disposición de ver la verdadera potencia de Linux para conectarnos a Internet. Linux en sus inicios al igual que UNIX se hizo para orientarse a redes, por ello dentro del núcleo se incluyen los protocolos de conexión más comunes, y algunos no tanto. Al usar y configurar Linux ya tratamos con diferentes usuarios, tipos de accesos, programas cliente-servidor como el entorno X y el gestor de ventanas, y un largo etc, lo que nos será muy util para comprender el funcionamiento de las distintas redes.

En este capítulo veremos como conectarnos a Internet con Linux, para ello vermos primero qué necesitamos en el núcleo y la configuración del protocolo ppp que es el que utilizaremos en Internet. Tras ver que todo lo tenemos en orden veremos como configurar el pppd para la conexión, así como el kppp si utilizamos el kde. Al final se incluyen notas de seguridad para la conexión a Internet.

4.2 ¿Qué necesitamos?.

En principio necesitamos tener un proveedor de Internet, y el protocolo ppp soportado en el núcleo, ya sea como módulo o internamente, para ello, cuando configuramos el núcleo debimos especificar en la sección Network device support el protocolo ppp, bien como módulo con la tecla M o directamente con la tecla X. Para saber si lo tenemos activado podemos ejecutar como root:

 localhost # modprobe ppp

Si no da ningún error es que tenemos el ppp como módulo, si lo tenemos directamente veremos en el arranque las líneas de ppp, si no lo pudimos ver al iniciar el ordenador lo podemos saber con:

 localhost # cat /var/log/dmesg | grep ppp

Si no sale nada es que no tenemos compilado ppp en el núcleo.

Si no tenemos ppp tendremos que compilar el núcleo con soporte para ppp como se ha dicho anteriormente.

Una vez tenemos el soporte ppp en el núcleo o como módulo, necesitamos tener instalado el pppd y chat para poder conectarnos a Internet, el primero es el encargado de registrar la línea de conexión y el segundo el que manda las cadenas de marcado y autorización al modem. Para saber si los tenemos podemos hacer:

 localhost # type pppd

 y

 localhost # type chat

Si ambos están el el PATH saldrá su localización, si no saldrá not found lo que quiere decir que no lo ha encontrado, no que no esté. Para asegurarnos podemos mirar en /usr/sbin que es donde suelen estar, o si estamos seguros de que están pero no sabemos donde podemos hacer:

 localhost # find / -name pppd -print

 y

 localhost # find / -name chat -print

Esto nos dará la localización de ambos programas si existiesen. Si no estuviesen tendremos que instalar lo paquetes correspondientes, ppp y chat.

Si cumplimos todos los requisitos anteriores podemos pasar a la configuración de ambos programas para conectarnos.

4.3 Configuración de pppd y chat para la conexión.

Una vez que tenemos pppd y chat instalados así como el soporte ppp en el núcleo, pasamos a configurar el pppd para que llame a chat e inicie la conexión. Existen muchas formas para conectarnos a Internet, utilizando distintos ficheros de configuración, llamando desde scripts a pppd, pero todas se resumen en pasarle una serie de parámetros a pppd y a chat, estos parámetros son:

Opciones de pppd.

El demonio de la línea ppp, el programa pppd, es el encargado de establecer la línea de conexión y registrala en el sistema para usarla en el acceso a Internet, las opciones que utilizaremos serán:

defaultroute:

Añade la ruta por defecto a las tablas de enrutamiento del sistema, usando el proveedor como puerta de enlace.


noipdefault:

Utiliza la dirección IP que nos da el proveedor. Se utiliza en conexiones con IP variable, que es la mayoría de los casos, si tienes una IP fija tendrás que especificarla poniendola en el archivo de opciones.


ipcp-accept-local:

Hace que pppd utilice la dirección IP que nos dé el proveedor, aunque hallamos puesto una nosotros.


ipcp-accept-remote:

Utiliza la dirección remota del proveedor, aunque hallamos especificado nosotros otra.


lock:

Crea un fichero de bloqueo que asegura a pppd de ser el único en utilizar el modem durante la conexión.


modem:

Usa la líneas de control del modem, esta opción es la que toma pppd por defecto.


crtscts:

Usa el control de flujo por hardware del puerto serie.


/dev/modem:

Usa el dispositivo al que apunta modem, que normalmente es /dev/ttyS1 o /dev/cua1 para COM2, el uso de ttyS? o cua? está ampliamente discutido, en resumen ttyS? permite compartir el puerto por varios procesos, y cua? sólo permite acceso exclusivo al puerto serie, al tener la opción lock el acceso exclusivo está garantizado, por esto personalmente uso ttyS1. Por supuesto el número puede ser 0 para COM1, 1 para COM2 etc.


mtu 1500:

Pone la Unidad Máxima de Transferencia a 1500bytes. Esto implica que pppd pida que el codigo de red del kernel no mande paquetes de más de 1500bytes, a no ser que el proveedor tenga una unidad de transferencia menor.


115200:

Velocidad de transferencia entre el ordenador y el modem, 115200 es para modems de 33200 baudios, para menos se pueden utilizar velocidades de 57600, 38400, 19200, 9600 y 2400. Para modems más rápidos (56K) se pueden probar velocidades de 230400 y 460800, siempre que el puerto serie las soporte.


connect programa:

Utiliza el ejecutable o shell script programa para activar la línea serie, normalmente es un script que llama a chat.


+pap:

Hace por defecto que el método de autorización sea PAP, en caso de ser CHAP habría que sustituirlo por +chap.


user nombre:

Utiliza la clave del usuario nombre para autentificarse al proveedor, contando que usamos PAP como método de autentificación, que es el que utiliza Infovía de momento. La clave de los distintos usuarios se encontrará en el fichero /etc/ppp/pap-secrets que se describirá más adelante.


Por supuesto existen más opciones, el lector interesado puede leer el documento pppd-HOWTO o la página del manual de pppd.

Opciones de chat.

Chat es como su nombre indica un programa de conversación con el modem. En este programa, la secuencia puede ser variable pero en general es:

Con las instrucciones anteriores, la secuencia para que la entienda chat sería: ATZ OK ATDP055 CONNECT "" Donde:

Esta cadena puede variar, podemos poner más comandos de inicialización del modem, condiciones de finalización de la conexión etc. Remito al lector a la página del manual de chat para más información.

4.4 Ficheros de conexión.

Ya hemos visto las opciones más comunes de los programas que utilizaremos para realizar la conexión, ahora veamos como poner dichas opciones en ficheros para automatizar el proceso:

Fichero de opciones de pppd.

Este fichero será el que lea pppd cuando se ejecute para inciar la conexión a Internet, tomando las opciones que hemos visto anteriormente quedaría:

 #Opciones de pppd
 connect (script de chat)
 /dev/modem 
 115200
 modem
 crtscts
 mtu 1500
 defaultroute
 noipdefault
 ipcp-accept-local
 ipcp-accept-remote
 lock
 user (nombre de usuario)

El orden no es importante, el dispositivo /dev/modem como he dicho antes se hace como enlace a /dev/ttyS? donde ? es el número de puerto serie (0 para el 1 y así sucesivamente), el modo de hacer el enlace es:

 localhost # ln -s /dev/ttyS? /dev/modem

Fichero de chat.

En la sección anterior veíamos que para conectar el pppd llamaba a un script o ejecutable mediante la directiva connect fichero, el fichero de chat es el siguiente:

 #!/bin/bash
 /usr/sbin/chat "" ATZ OK ATDT055 CONNECT ""

Como vemos inicializa el modem con ATZ y espera OK, marca 055 por pulsos (cambiar P por T para tonos) y espera CONNECT, las dobles comillas hacen que espere nada, en algunas versiones de chat las dobles comillas se cambian por la comilla simple. Este fichero debe tener permisos de ejecución (chmod 755 fichero).

Fichero de claves.

El fichero de claves en este caso es /etc/ppp/pap.secrets, ya que utilizamos el método de autentificación PAP, en caso de usar CHAP el fichero sería /etc/ppp/chap.secrets. Este fichero recoge un usuario por línea con el siguiente formato de cada línea:

                 Usuario   |    Servidor  |       Clave

Donde Usuario es el nombre de usuario que nos ha asignado el proveedor, Servidor es el nombre de nuestro proveedor (normalmente el dominio) y Clave es la clave que nos ha asignado nuestro proveedor. Podemos tener tantas líneas como queramos, por ejemplo si tenemos más de una conexión a Internet, en el campo Servidor podemos poner un asterísco * si sólo tenemos una línea para ese usuario, que es lo normal. Un ejemplo sería:

 # Secrets for authentication using PAP

 # client       server  secret                  IP addresses

 pacp@jet       *       clave1

 pacp@jet       ppp0    clave2

Como vemos hay dos líneas, una para cualquier servidor con nombre de usuario pacp@jet y otro para el servidor ppp0 con el usuario pacp@jet. El fichero tiene que tener permisos de lectura y escritura sólo para el usuario root, para ello:

 localhost # chmod 600 pap-secrets

Fichero resolv.conf.

Este fichero se encuentra en el directorio /etc y es donde ponemos nuestro servidor de nombres (DNS). El formato es el siguiente:

 search jet.es
 nameserver 194.179.100.6
 nameserver 194.179.100.16   

En la primera línea ponemos el nombre de dominio de nuestro servidor y en las otras las direcciones IP de los servidores de nombres que utilicemos.

Otros ficheros importantes.

A continuación se detallan dos ficheros más que también son importantes. Estos son ip-up e ip-down. Ambos se encuentran en /etc/ppp/. Estos ficheros deben tener permisos de ejecución (755) y se ejecutan cuando se establece y cuando se cierra la conexión respectivamente. En ellos podemos poner distintas cosas como la ejecución de sendmail para que mande los mensajes que halla en la cola, etc. Hay que tener en cuenta que se ejecutan con el ID como root, por lo tanto no hay que hacer nada que afecte a la seguridad del sistema.

Ejecución de pppd.

Cuando ya tenemos todos los ficheros de configuración creados, sólo nos queda ejecutar pppd y ver qué nos hace. Para ejecutar pppd tenemos que entrar en el sistema como usuario root, ya que de otra forma no tendremos permisos para hacerlo, y ejecutarlo directamente de la forma:

 localhost # pppd

Si queremos ver la salida de pppd deberemos mirar en los archivos de logs del sistema el fichero de mensajes de la siguiente forma:

 localhost # tail -f /var/log/messages

La salida de tail nos irá informando de lo que hace pppd y podremos abortarla con CTRL-C en el momento en que establezca la conexión.

Si no queremos tener que estar entrando en el sistema como root cada vez que queramos iniciar la conexión, podemos hacer el siguiente script:

 #!/bin/bash
 su -c "pppd;modprobe bsd_comp;tail -v /var/log/messages"

Y cuando tengamos establecida la conexión salir de tail con CTRL-C. Poniendonos manos a la obra con nuestra conexión, ya sea navegando, mandando correo etc. La parte de modprobe bsd_comp intentará probar el módulo bsd_comp que no se inserta automáticamente, si lo hemos compilado ganaremos algo de velocidad el nuestra conexión.

4.5 Configuración de kppp.

kppp es el programa que viene con la distribución de kde para realizar la conexión a Internet mediante modem, las ventajas de la utilización de kppp es que cualquier usuario, no sólo root, pueden configurarlo y utilizarlo, aunque esto puede traer problemas de seguridad, sobre todo en entornos donde existe un ordenador que se conecta a Internet y da servicio a una red local. Si tenemos un sólo ordenador con el que nos conectamos a Internet, como suele ser el caso de la mayoría, el uso de kppp es más sencillo y cómodo, aunque eso sí, se ejecuta bajo el entorno X-Window. Tambien tiene la posibilidad de llevar un control del gasto que llevamos en Internet, así como la posibilidad de ejecutar un programa o script al iniciar la conexión o al terminarla. La configuración que aquí se explica es para el caso de Infovía, para otros casos en los cuales las conexiones no vayan a través de Telefónica pueden variar algunas cosas.

Preliminares.

Antes de empezar a configurar el programa tenemos que asegurarnos que los ficheros /etc/ppp/options y el fichero .pppdrc si existe están vacíos, si no lo están tendremos que crearlos vacíos, para ello, como root podemos hacer lo siguiente:

 localhost /etc/ppp/ # mv options options.old
 localhost /etc/ppp/ # touch options

 Si existiese el fichero .pppdrc lo renombraremos:

 localhost ~ # mv .pppdrc .pppdrc.old

Con esto ya habremos creado vacío el fichero options de pppd. Normalmente el programa kppp se crea con usuario y grupo root y el bit de Setuid activado (lo que hace que cuando se ejecute, aunque lo ejecutes como un usuario normal tome la identidad de root), para comprobarlo vamos al directorio donde se encuentre kppp (type kppp) y comprobamos:

 localhost /opt/kde/bin # ls -l kppp

 -rwsr-xr-x 1 root root   262148 kppp

Como vemos tiene el bit setuid activado (rws), en caso de no ser así haremos (como root):

 localhost /opt/kde/bin # chmod +s kppp

Una vez tenemos esto hecho, podemos empezar con la configuración de kppp.

Configurando kppp.

Ejecutamos kppp y pulsamos el botón de Configuración, en la ventana de configuración elegimos Nueva para crear una nueva conexión, tendremos que configurar los siguientes parámetros en las distintas pestañas:

Una vez terminado pulsamos OK y pasamos a configurar el Dispositivo Serie, en esta pestaña elegiremos el puerto al que se encuentre conectado nuestro modem, el control de flujo CRTSCTS, la terminación de línea con CR y la velocidad de conexión de 115200 si nuestro modem es de 33600 baudios, lo demás lo dejamos como está.

En la pestaña Modem elegimos el tiempo que debe esperar si encuentra la línea ocupada. Tras esto pulsamos Consultar el Modem para ver las cadenas del modem, si este no cumpliese con el estándar Hayes, en cuyo caso habria que cambiar alguna cadena en el botón Cadenas del Modem. La opción de El modem sostiene la línea de CD la dejamos desactivada. El botón Terminal es una pequeña terminal que puede ser útil para probar cadenas del Modem.

En Opciones varias le decimos la localización del ejecutable pppd, el tiempo que debe esperar entre marcados fallidos (timeout), el visor de logs. Las demás opciones las configuramos a nuestro gusto.

Tras darle a OK nos aparecerá la ventana del kppp, en Usuario ponemos el nombre de usuario que nos ha asignado nuestro proveedor de Internet y en contraseña nuestra contraseña, tras esto podemos probar a conectar. Al pulsar Conectar podemos ver lo que está pasando pulsando en el botón Log/Histórico.

Notas.

La configuración que he explicado se basa en mi propia experiencia y en la lectura de distintos documentos, por experiencia propia he experimentado "muertes" del pppd por problemas con los permisos, si es tu caso revisa los permisos con los que pongo al principio de esta sección. La configuración que aquí se explica es de la versión 1.1.1 del kppp con la configuración del idioma español.

4.6 Utilidades de Internet.

En esta sección veremos algunas de las utilidades más comunes y algo de su configuración. Por motivos de tamaño no se explicarán con todo detalle, lo que queda fuera de este artículo, para más detalles se puede leer la documentación de cada aplicación.

Correo electrónico.

Para empezar necesitaremos correo electrónico, ¿cómo no?, el envío del mismo se puede realizar mediante clientes como el Netscape o mediante el famoso sendmail incluido en todas las distribuciones. En Netscape es tan fácil de configurar como poner los datos que nos habrá dado nuestro proveedor de Internet. En cambio el sendmail puede llegar a resultar complicado, sobre todo para usuarios inexpertos, pero con el paquete m4 que tambien viene con todas las distribuciones y el paquete sendmail-config, la configuración resultará también bastante sencilla. Una vez que tenemos estos paquetes instalados podemos comenzar con la configuración, para ello, tenemos que entrar al sistema como root y en el directorio /usr/lib/sendmail.cf/cf tendremos que crear un fichero que podemos llamar miconf.mc, en él incluiremos lo siguiente:

 include(`../m4/cf.m4')

 VERSIONID(`linux for smtp-only setup')dnl

 OSTYPE(debian)dnl

 FEATURE(nouucp)dnl

 FEATURE(always_add_domain)dnl

 FEATURE(nodns)

 define('confCON_EXPENSIVE', 'True')

 define(SMTP_MAILER_FLAGS, e)

 define(`SMART_HOST', smtp:servidor de correo)

 MAILER(local)dnl

 MAILER(smtp)dnl

Como podemos ver el OSTYPE es debian, que es el sistema que yo utilizo, pero puede ponerse linux. El anterior fichero lo he sacado de un documento de Juan Ignacio Llona, lo he probado y funciona, además de ser de los más sencillos que he visto, hay varias opciones más, para saber más se puede mirar la página del manual de sendmail y varios documentos existentes, como el Sendmail+UUCP en los mini-HOWTOS.

Si ya tenemos bien configurado el envío de correo electrónico, nos queda configurar la recogida del mismo, para tal fin recomiendo utilizar fetchmail y procmail como filtro de correo. Empezaremos por fechmail, este programa viene con todas las distribuciones actuales de Linux y es muy sencillo de configurar y muy util para nuestro fin. Para configurarlo símplemente crearemos un fichero en nuestro directorio como usuario normal (no necesariamente tiene que ser root), el fichero lo llamaremos .fetchmailrc y lo podemos editar del siguiente modo:

 localhost $ joe ~/.fetchmailrc

Con esto editamos el fichero de configuración, el fichero contendrá las siguientes líneas:

 defaults                

         fetchall

         flush

 poll <dominio del servidor>

 proto pop3

 user <usuario de correo>

 pass <tu clave>

Las tres primeras líneas son las opciones por defecto, tras esto viene poll donde decimos el nombre de dominio de nuestro servidor de correo, normalmente lo que viene tras @ (pecapon@postal.uv.es seria postal.uv.es). En proto especificamos el protocolo, aunque fetchmail es capaz de reconocerlo y en user y pass decimos nuestro nombre de usuario (que suele ser lo que viene antes de @, en mi caso pecapon) y en pass la clave que nos asigna el proveedor. Una vez escrito esto en .fetchmailrc tenemos que grabar (Ctrl-KX en joe) y asignarle permisos sólo de lectura para usuario (chmod 600  /.fetchmail). Para probarlo ejecutaremos:

 localhost $ fetchmail -v
Con esto veremos lo que hace fetchmail y nos bajará los mensajes.

Pero un problema con el que nos solemos encontrar es con el filtrado de los mensajes, para este fin recomiendo la utilización de procmail que es un potente filtro de correo, para ello nos crearemos el fichero .forward con el siguiente contenido:

 "|IFS=' ' && p=/usr/bin/procmail && test -f $p && exec $p -Yf- || 

 exit 75 #tu login"
Todo debe ir en una línea, una vez hecho esto nos creamos el fichero .procmailrc, el formato del fichero es el siguiente:


 MAILDIR=$HOME/Mail

 DEFAULT=$MAILDIR/Inbox

 VERBOSE=yes

 LOGFILE=$HOME/log/procmail.log


 :0:

 * ^To: *linux-emp

 Linux-Emp


 :0:

 * ^To: *insflug

 Insflug


 :0:

 * ^Subject: *LE

 Linux-Emp


 :0:

 * ^X-Mailing-List: macedonia@makelist.com

 Macedonia

Como podemos ver al principio contiene el nombre de unas variables, estas son:

MAILDIR:

Indica el directorio donde se guardarán los contenedores de correo, en mi caso Mail, que es el que lee mi lector de correo.


DEFAULT:

Indica el contenedor de correo por defecto.


VERBOSE:

Diagnosticos extendidos, procmail generará más mensajes en caso de error.


LOGFILE:

Fichero donde se guardarán los mensages que genere procmail.

Tras esto vienen los filtros de correo, procmail analiza el mensaje en busca de los que le ponemos en los filtros por ejemplo, el filtro:

:0:

* ^To: *linux-emp Linux-emp

Hace que todos los mensajes que en el destinatario (campo To del mensaje) tengan linux-emp sean enviados a la carpeta Linux-emp en el directorio definido en MAILDIR. El :0 es el incio del filtro y tras el cero se pueden poner opciones, los : indican que bloqueará la carpeta para que otros procesos no escriban en ella mientras lo hace procmail. Para más información recomiendo leer la documentación traducida por el grupo LuCAS y el artículo Gestión de correo con Procmail de Carlos García incluido en el número tres de Linux Actual.

Ahora ya tenemos configurado el correo electrónico. Ya podemos mandar y recibir mensajes, nos queda pués navegar.

Navegando por la red.

Para navegar podemos utilizar el conocido Netscape Navigator o Mozilla, y si queremos hacerlo en tipo texto podemos utilizar el lynx (man lynx para más información). La configuración de estos programas lo dejo como ejercicio para el lector ya que es extremadamente intuitiva en el caso de Netscape y Mozilla, en el caso de lynx la configuración se hace como en prácticamente todas las aplicaciones de Linux, con el editor y el fichero de texto.

Para los que tengan espacio en disco duro y memoria (unos 16Mb y en disco unos 60Mb libres) recomiendo el uso de wwwoffle este programa actua como proxy, es sencillo de configurar y permite leer páginas cuando no estamos conectados, ya que mantiene una caché de disco, las que no se encuentren en la caché las bajará cuando tengamos conexión a Internet.

Seguridad.

Un pequeño apunte referente a seguridad, en el directorio /etc encontramos el fichero inetd.conf, este fichero contiene la configuración de los servicios de red que tenemos, editandolo como root podemos ver que están los estándar como ftp, telnet, login, exec etc., dependiendo del uso del ordenador (si es servidor de red, etc.) deberemos comentarlos con # o dejar que se ejecuten, podemos saber más de este fichero con man inetd.conf.

4.7 Conclusión.

Tras este largo artículo se quedan varias cosas en el tintero, como son las news y el irc, para las primeras existen lectores tipo texto como slrn y gráficos como krn de kde y el incluido en Netscape Comunicator, para irc existe el ircII, el bitchx en modo texto y otros en modo gráfico como el kirc de kde. En cuanto al tema de la seguridad, es importante estar al día sobre todo si el ordenador es un servidor de una Intranet, un Cortafuegos, etc. Para ello podemos leer varios documentos, pero el más amplio es la Guía de Administración de Redes en Linux que podemos encontrar traducido en LuCAS. En el próximo artículo trataremos el uso de Linux para aplicaciones como procesamiento de texto, imágenes etc, con las aplicaciones existentes, tras el cuál se iniciará una serie de artículos dedicados a la programación en Linux, desde el shell-script hasta perl.




AULA MACEDONIA
a
MACEDONIA Magazine