CONEXIÓN Y CONFIGURACIÓN DE INTERNET DESDE LINUX

Artículo 9: Ip-Masquerade (I)
CONFIGURACION DE UNA RED ETHERNET

Autor: (c) Santiago Romero
Revista: NetOnline (Prensa Técnica) nº 20, Abril-1999


Como veremos en nuestro próximo número, mediante la IP-Masquerade podremos tener acceso a Internet en una red de ordenadores mediante un sólo modem, aunque para ello necesitaremos primero configurar la red, tema de la presente entrega.


Linux es un Sistema Operativo de redes, y como tal para disfrutar totalmente de él (y aprender mucho con su uso) es necesario disponer de una red donde comprobar sus características multiusuario y de red. Este no es el objetivo de nuestro curso (orientado a Internet y a Linux), pero para utilizar la técnica de IP Masquerade (que veremos en la próximo capítulo) es necesario configurar una sencilla red de dos o más ordenadores, y esto es lo que ha propiciado el sencillo tutorial de redes de hoy, que mostrará un ejemplo práctico de configuración de una red con 2 ordenadores, un Linux y un Windows 9x (desde el cual podremos acceder al primero gracias a las capacidades servidoras de Linux).

Servicios de red


CONFIGURACION DE LA RED

En nuestro ejemplo tendremos 2 ordenadores conectados por 2 tarjetas ne2000 compatibles y PCI. Los parámetros generales de la red serán los siguientes:

Dirección de la red: 192.168.5.0
Máscara de subred: 255.255.255.0
Dirección de broadcast de la red: 192.168.5.255

Máquina 1:
  Dirección IP elegida: 192.168.5.1
  Nombre: Linux.es,
  S.O: Linux.
Máquina 2:
  Dirección IP elegida: 192.168.5.2
  nombre: Windows.es
  S.O: Windows 9x


CONFIGURACION DEL SERVIDOR LINUX

Lo primero que haremos será pinchar la tarjeta de red en ambos ordenadores y recompilar el kernel de Linux para dar soporte a las mismas, ya sea como módulos o integradas en el mismo kernel. Sobre tarjetas de red existen muchos modelos, pero sin duda las que más popularidad tienen son las compatibles Ne2000, tanto por su bajo precio (aprox. 1.500 pts) como por sus prestaciones medias/altas (10Mbps). Por otra parte, el modelo PCI es más recomendable que el ISA por la velocidad de este slot y la sencillez de la configuración, como veremos a continuación. Si la tarjeta es PnP es aconsejable deshabilitar dicha opción vía jumpers, pues Windows puede modificar su IRQ o puerto en cualquier momento, cosa no recomendable tras configurarla en Linux. Al colocar la tarjeta en modo no Plug&Play es posible especificar sus parámetros (IRQ/puerto) mediante los jumpers que incorpora, y evitar que la configuración la haga automáticamente el sistema PnP, que podría estropear configuraciones previas en Linux. Si se decide utilizar la tarjeta con la configuración PnP habrá que hacer uso de la utilidad isapnp para la configuración de la misma durante el arranque. Una vez pinchadas las tarjetas de red habremos de recompilar el kernel de la forma habitual, de forma que éste las reconozca y use correctamente. Además de las opciones habituales que tengamos habilitidas, y del driver de la tarjeta de red, deberemos habilitar las opciones de Networking, servicios TCP/IP, como puede verse en la figura 2.

Opciones de red

Si disponemos de una tarjeta PCI es recomendable incluirla en el kernel dentro del mismo (Y), ya que en el arranque se autodetectará y autoconfigurará (en el caso de las compatibles ne2000 con el driver de linux ne2kpci), apareciendo una línea como la que sigue:


ne2k-pci.c:v0.99L 2/7/98 D. Becker/P. Gortmaker
ne2k-pci.c: PCI NE2000 clone 'RealTek RTL-8029' at I/O 0x6100, IRQ 11.

Si es ISA la mejor opción es instalarla como módulo, y especificar en el fichero de configuración de módulos (/etc/conf.modules) la configuración de la tarjeta, en una línea similar a la siguiente (para distribuciones Redhat):


alias eth0 ne
options ne io=0x6100 irq=11

En Debian puede utilizarse sencillamente la utilidad modconf. Tras esto (tanto en RH como en Debian) es posible insertar el módulo de la tarjeta mediante el comando modprobe ne. Por supuesto, esto no es necesario en el caso de haber incluido la tarjeta dentro del kernel durante la compilación, y no como módulo.


ESPECIFICACION DE LA DIRECCION IP

Nuestro siguiente paso es asignar a la tarjeta de red la dirección IP correcta. En el caso del servidor Linux esta IP era 192.168.5.1, dirección que habrá que ligar al interface de red eth0. Para distribuciones RedHat esto se hace editando (por ejemplo con el editor joe) el fichero /etc/sysconfig/network-scripts/ifcfg-eth0 y modificando los diferentes parámetros que contiene para especificar los de nuestra red:

DEVICE="eth0"
IPADDR="192.168.5.1"
NETMASK="255.255.255.0"
NETWORK="192.168.5.0"
BROADCAST=192.168.5.255
ONBOOT="yes"
BOOTPROTO="none"
USERCTL=no
IPXNETNUM_802_2=""
IPXPRIMARY_802_2="no"
(+ otros parámetros para IPX no necesarios).
 
Para forzar la lectura de este fichero y por tanto la lectura de los nuevos parámetros para el interface eth0 ejecutamos una de las 2 órdenes siguientes (según donde esté el script ifup):


./ifup eth0
ifup eth0

La primera de las órdenes se debe ejecutar si el script ifup está en el directorio actual, mientras que la segunda es para el caso en que éste esté en otro path. En el caso de Debian el script implicado es /etc/init.d/network (que habrá que ejecutar con la orden /etc/init.d/network tras modificarlo):


#!/bin/sh
ifconfig lo 127.0.0.1
route add -net 127.0.0.0
IPADDR=192.168.5.1
NETMASK=255.255.255.0
NETWORK=192.168.5.0
BROADCAST=192.168.5.255
GATEWAY=
ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
route add -net ${NETWORK}
["${GATEWAY}"] && route add default gw ${GATEWAY} metric 1

Debemos comprobar que la dirección IP se ha ligado correctamente al interface eth0, para lo que utilizaremos el comando ifconfig y la tabla proporcionada por route:


[root] [~]$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:80:AD:30:06:0F  
          inet addr:192.168.5.1  Bcast:192.168.5.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:61 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 
          Interrupt:11 Base address:0x6100 
(más otros parámetros del interface lo)   

[root] [~]$ route
Kernel IP routing table
Destination     Gateway  Genmask         Flags Metric Ref    Use Iface
192.168.5.0     *        255.255.255.0   U     0      0        1 eth0
127.0.0.0       *        255.0.0.0       U     0      0        1 lo

El siguiente paso es comprobar si la tarjeta de red se ha instalado y configurado correctamente, realizando un ping a la dirección IP asociada a eth0, y esperando que ésta nos lo responda correctamente:


[sromero] [~]$ ping 192.168.5.1
PING 192.168.5.1 (192.168.5.1): 56 data bytes
64 bytes from 192.168.5.1: icmp_seq=0 ttl=64 time=0.2 ms
64 bytes from 192.168.5.1: icmp_seq=1 ttl=64 time=0.2 ms
64 bytes from 192.168.5.1: icmp_seq=2 ttl=64 time=0.2 ms
(Ctrl+C)
--- 192.168.5.1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.2 ms


CONFIGURACION DEL HOSTNAME

Para hacer accesibles las máquinas por su nombre (no sólo por su dirección IP), es necesario modificar algunos ficheros de configuración de Linux, entre ellos el fichero /etc/hosts, una base de datos de direcciones IP y nombres asociados, que además permite incluir alias o nombres cortos para las máquinas. Un ejemplo de /etc/hosts para nuestros propósitos (incluyendo ya la dirección IP de la otra máquina) sería el siguiente:

# Ejemplo de /etc/hosts (líneas # son comentarios)
# Las separaciones entre cadenas son tabuladores.
# Direccion IP  Alias          Nombre y dominio

127.0.0.1       localhost     localhost.localdomain
192.168.5.1     Linux         Linux.es
192.168.5.2     Windows       Windows.es

Para distribuciones RedHat deberemos modificar además el fichero /etc/sysconfig/network con parámetros como los que siguen (de acuerdo a nuestra red):

NETWORKING=yes
FORWARD_IPV4=no
HOSTNAME="Linux.es"
DOMAINNAME=es
GATEWAY=
GATEWAYDEV=
NISDOMAIN=""

En el caso de Debian el fichero a modificar es /etc/hostname, y el comando a ejecutar es "hostname --file /etc/hostname", o "hostname <nombre_de_maquina>".

De nuevo volviendo a ambas distribuciones, el fichero /etc/host.conf debe contener las siguientes líneas para configuración del servidor DNS (el encargado de transformar nombres en las direcciones IP correctas):

order hosts, bind
multi on

Esto hará que ante una dirección IP Linux vaya al fichero /etc/hosts y compruebe si allí El fichero /etc/resolv.conf debe configurarse como se especificó en el nº 1 de nuestra serie de Internet en Linux, mediante el dominio y las DNS de nuestro proveedor de Internet habitual, o con el dominio de nuestra red en caso de no disponer de ISP:

search arrakis.es
nameserver 195.5.64.2
nameserver 195.5.64.6

Tras estas modificaciones (y tras un recomendable reseteo a menos que se restablezcan todos los servicios y nombres desde la línea de comandos, algo perfectamente posible en Linux) ya es posible ejecutar cualquiera de los siguientes 3 comandos con el mismo resultado (de modo que es recomendable testear si el servidor de nombres está funcionando correctamente):


ping Linux
ping Linux.es
ping 192.168.5.1
Si también hemos configurado el cliente Windows también deberíamos poder pingear hacia su IP o hostname. Por otra parte, si en lugar de (o además de) un cliente Windows quisiéramos configurar otro cliente Linux, la configuración se realizaría con los mismo parámetros que la máquina servidora Linux.


CONFIGURACION DEL CLIENTE WINDOWS

La configuración del cliente Windows suele ser la más problemática de ambas: si éste no detecta su tarjeta de red (aunque sea Plug&Play es muy habitual) y no se dispone de los discos de drivers del fabricante tendrá que sacar la tarjeta de red de su slot, arrancar, apagar, y volver a conectar la tarjeta (para que Windows detecte el cambio e instale el nuevo hardware). Tras esto deberemos comprobar que la dirección del puerto E/S y la IRQ asignadas con Linux coinciden con las de la tarjeta (que se suelen cambiar mediante una utilidad incluida en los diskettes de drivers de la misma). Para esto miramos en el Panel de control, Red, Propiedades, y examinamos los valores asignados, cambiándolos si no son correctos.

Tras esto debemos asignar a este nodo de la red la dirección IP que decidimos en un principio: la 192.168.5.2; esto se realiza desde el Panel de control, Red, Propiedades TCP/IP (de la tarjeta de red, no las genéricas, como puede apreciarse en la figura número 3),

Conf. del cliente win

Especificamos los siguientes datos:


Dirección IP -> Especificar dirección IP -> 192.168.5.2
Máscara de subred -> 255.255.255.0
Identificación -> Nombre del PC -> WINDOWS
Grupo de trabajo -> GRUPO
Descripción del PC -> Es indiferente.

Después debemos crear la base de datos de nombres y direcciones IP, situada en el fichero c:\windows\hosts, donde el formato es IP+Nombre+Apodo, y los espacios entre campos son tabuladores:

127.0.0.1    localhost
192.168.5.1  Linux.es     Linux
192.168.5.2  Windows.es   Windows

Si posteriormente pensamos instalar Samba (un servicio de Linux para compartir impresoras y archivos con clientes Linux o Windows), podemos compartir cualquiera de estas dos cosas en Configuración, Compartir impresoras y archivos, y utilizando el botón derecho del ratón sobre las carpetas, para que aparezca una nueva opción llamada Compartir. En principio si no vamos a utilizar Samba esto no es necesario.

Como suele ser habitual, después de los cambios habrá que reiniciar el equipo para que estos tengan efecto, tras lo cual deberemos comprobar si la tarjeta de red está funcionando haciendo ping a la dirección de red o al equipo Linux.


PROBANDO LA RED

La mejor manera de probar la red es, desde cualquiera de los clientes, hacer un ping, telnet o ftp al servidor Linux. En el caso de que éste tenga los puertos correspondientes abiertos (configurable en el fichero /etc/inetd.conf), podremos entrar en el servidor Linux si disponemos de cuenta en él, e incluso desde el telnet de Windows podremos trabajar con Linux o con X Window (utilizando un cliente de X Window como Mi/X o VNC). No olvide que lo contrario (hacer un telnet de un equipo Linux a un Windows) no es posible porque Windows 95 no tiene capacidades de servidor.

También será posible instalar diferentes servicios en la máquina servidora Linux, como por ejemplo Apache (servidor http free). Si el daemon está corriendo (es decir, durante el arranque aparece un mensaje de starting httpd...), tecleando en cualquier navegador de las máquinas clientes la dirección http://linux.es/ nos estaría apareciendo en dicho navegador el fichero /home/httpd/index.html. Es decir, la jerarquía de ficheros y directorios que aparece en /home/httpd será la que aparecerá en http://linux.es/. Esto nos permite la creación de Webs o incluso un rápido sistema de testeo de CGIs y Webs sin tener que subirlas a Internet (ideal para los desarrolladores de Webs). Si no tenemos activado el servidor de http basta con instalar Apache (el .rpm y .deb instala automáticamente el servicio) o ejecutar el comando "/etc/rc.d/init.rd/httpd start". También puede montarse en Linux un ftp anónimo o un servidor de Irc (como se comentó en un anterior capítulo del curso) o incluso un servidor de MUD (rol). Las posibilidades son infinitas con Linux... Un ejemplo de acceso desde el cliente Windows al servidor Linux puede observarse en la figura 6, donde se ha realizado un telnet y ftp a la máquina Linux.


EN LA PROXIMA ENTREGA

El mes que viene utilizaremos la configuración de red explicada hoy para configurar IP Masquerade y disponer de acceso a Internet en los múltiples ordenadores de una red con una sóla conexión (como suele suceder en las Universidades, salas de Internet, etc.). Hasta entonces, con la red configurada, nuestro Linux dará mucho de sí al lector para aprender sobre redes de comunicaciones y sobre este maravilloso S.O.


Santiago Romero
Volver a la tabla de contenidos.