Howto

Router Linux o cómo crear un router con este sistema operativo



José Martínez es asesor de Tecnología de la Información del Centro de Profesores y Recursos de Zamora.

1.- Introducción:

La necesidad de crear un router bajo linux surgió como consecuencia de conectar un aula de informática a internet de forma segura y fácil de mantener.

En un primer momento utilizamos un proxy bajo winbugs, pero ocurría que no era nada fácil de gestionar y aunque muy parametrizable fue tremendamente difícil hacer que funcionasen bien los distintos programas de conexión a internet: http, correo, news, ... ; con el agravante de que los profesores que realizaban los cursos tenían que configurar de forma diferente el soft de comunicaciones. Todo esto hacía que el profesorado asistente a las actividades tuviese posteriormente dudas a la hora de configurar el soft en el equipo de su centro o en su ordenador personal. Al final un "barullo" tremendo que había que intentar paliar de algún modo.

    LLevo instalando linux desde el año 94 ? y digo instalando linux porque todo lo que conseguía era hacerlo funcionar. Configurar las X era toda una odisea, pero al final aquella primera versión de Slackware funcionó. Evidentemente, por aquel entonces no tenía ni idea de las enormes posibiliades que este Sistema Operativo tenía.

    En honor a la verdad la primera vez que ví linux fue en un cdrom de una revista en el que se mencionaba algo así como: "linux S.O. 80 Mb" y fue José Luis Gil, por entonces estudiante de telecomunicaciones quien me ayudó a instalarlo en mi equipo desde el principio. Han pasado casi cinco años y por la partición linuxera de mi equipo han pasado múltiples versiones de linux: Slackware (la primera), Debian, Open Linux, Suse y RedHat.

    RedHat ha sido la versión que más me ha hecho reflexionar y aprender de este sistema a causa de su sencilla instalación y configuración, y cómo no Eurielec (basada en RedHat). Ha pasado mucho tiempo en "ciclos informáticos" desde entonces y hoy intento aprovechar al máximo las particularidades de este S.O. que las tiene y muchas sobre el conocido entorno de ventanas, pero este último no es motivo de este artículo.

    Para resumir todo lo que a continuación expongo comentaré que en mi trabajo todo el mundo utiliza winbugs en mayor o menor grado, me incluyo porque las actividades que realizamos en el Centro de Profesores y Recursos de Zamora se realizan bajo el entorno winbugs, pero aún así me cuestioné montar un equipo con Linux que permitiese:

a) Montar una intranet.
b) Enrutar un aula de informática hacia internet.
c) Crear un servidor proxy.
d) Servir páginas web locales.
e) Servir programas.
f) Servir ficheros.
g) Gestionar el correo interno y externo.
h) Compartir impresoras.
i) Ejecutar aplicaciones de forma remota.
j) No utilizar copias ilegales de soft.
k) Investigar.

    Investigar ha sido el motor de todo este trabajo, ya que ha permitido que la falta de horas de sueño se haya visto compensada por el funcionamiento estable de una parte importante de los objetivos señalados anteriormente.

    A partir de aquí os voy a comentar qué es lo que he hecho, cómo lo he hecho y como lo aprovechamos.

    Huelga decir que lo que a continuación se expone le ha funcionado al autor del artículo y no tiene porqué funcionarle necesariamente a los demás, puede contener errores que me gustaría fuesen comentados a fin de mejorar el funcionamiento del conjunto.

    2.- Equipo utilizado para la instalación de linux:

    CPU 80486 DX 33 Mhz.
    16 Mb de Ram.
    Vga Cirrus Logic Vesa Local Bus.
    HD 200 Mb.
    Cdrom 4x.
    Tarjeta de red Longsine BNC.
    Conectado a un HUB de 16 bocas RJ-45 y un adaptador BNC.
    Teclado y ratón.
    Modem UsRobotics flash 56k.

    3.- Punto de partida:

    Partimos de una red local en estrella con 14 puestos enlazada por el Hub a una red anterior de tipo BNC con 11 equipos.
En los equipos en estrella corre win98, en los demás win95, excepto en uno que tiene la biblioteca y corre DOS+win311

    Nuestro equipo con linux es el único que está conetado a la red telefónica.

    4.- Configuración:

    Los equipos winbugs los configuramos desde inicio - configuración - panel de control -red

    Todos los equipos están configurados bajo TCP/IP con direcciones IP falsas del rango 192.168.100.X

    La configuración de la puerta de enlace (gateway) apunta a linux 192.168.100.200 (puse esta ip en linux por probar si bien la que se adjudica para los router suele ser la que acaba en 254).

    En la configuración DNS incluimos las proporcionadas por nuestro proveedor de internet (ISP); además de esto pusimos nombre a cada equipo (ord1, ord2, ... ) y dominio (aula.cpr.za).

5.- Configuración del router linux:

    Partiendo de que linux ha detectado una tarjeta de red en nuestro equipo durante la instalación y de que hemos configurado el protocolo TCP/IP de la misma (tema que no trataremos aquí) si tecleamos "ifconfig" debería de aparecer una lista semejante a la siguiente:

[jmartine@texas /]$ ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:200 errors:0 dropped:0 overruns:0 frame:0
          TX packets:200 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0

eth0      Link encap:Ethernet  HWaddr 00:A0:0C:11:9F:1C
          inet addr:192.168.100.200  Bcast:192.168.100.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:99 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0
          Interrupt:5 Base address:0x300
 

    Nos importa que la tarjeta de red "eth0" esté correctamente configurada, ello incluye una dirección de red TCP/IP "falsa", que le permita identificarse ante la red en la que se encuentre inmersa.

    La configuración de la tarjeta de red la podremos hacer desde consola con el comando netconf o desde Xwindow con el comando netcfg.

    a) Enrutando un aula de informática hacia internet:

El problema de no tener más que una conexión a internet por módem y línea analógica se solucionó mediante la instalación de una RDSI, pero el hecho de que sólo un equipo de la red tuviese acceso a internet seguía siendo un gran problema y una enorme carencia. No resulta pedagógico, ni adecuado, realizar un curso de iniciación a internet de 20 horas a través de una proyección mediante una pantalla de cristal líquido de emulación de color. Es necesario mantener la atención de los profesores que realizan la actividad y eso mediante una proyección resulta difícil.

    El siguiente paso consistió en la búsqueda de un proxy para winbugs que permitiese paliar el problema. La opción más recomendable fue wingate, un soft que se me antojó divino, en la medida que daba una respuesta adecuada a mis necesidades de acceso a la web. Pero aparecen los problemas: 1º el soft no es barato, 2º la configuración de las aplicaciones como el correo, las news, ..., es diferente a la que hacemos habitualmente en nuestros equipos. Esto da lugar a cierta confusión, dado que los compañer*s que realizan estos cursos no tienen ninguna formación en este sentido y al realizar cambios de configuración sobre sus cuentas supone una difícil aceptación. A causa de este motivo me decidí a buscar una forma más sencilla de iniciar al profesorado en los entresijos de internet.

    Seguí buscando y comprobé que la solución pasaba por adquirir un router, pero las economías no están para mucho ... y lo del router pasó a mejor vida apenas ser pensado.

    Al final, después de muchos devaneos con wingate, llegó Victoriano Giralt (SisOp de la Universidad de Málaga) y en un cuarto de hora me abrió las puertas para la construcción de un router bajo Linux. Así de sencillo, fue una receta que funcionó a la primera; gracias Vic.

    Vamos allá con la receta:

    * Arrancamos las X como root.
    * En un terminal arrancamos la configuración de la red con netcfg, o desde el "Panel de control" elegimos el icono de redes.
    * De los cuatro botones disponibles el primero que aparece activado es names. En este lugar estableceremos el nobre de nuestro equipo hostname (aconsejable en minúsculas por aquello de no equivocarnos).
ej: texas.cpr.es
A continuación establecemos el dominio:
ej: . (un punto, creo que con esto se establece en el /etc/resolv.conf el comando search .   siendo este punto nuestro propio equipo.
Posteriormente en nameservers colocamos las ip de los ordenadores que harán la gestión de las dns.
En mi caso he colocado la primera la del propio equipo, siendo las dos siguientes las proporcionadas por mi proveedor de internet.

    * El botón siguiente es hosts, aquí nos aparecerá al menos una ip un name y un nickname que se corresponde con 127.0.0.1 localhost localhost.localdomain
A partir de aquí podemos agregar todos los hosts (equipos) que nos apetezca. Esto resulta útil para localizar rápidamente aquellos ordenadores o servidores que más nos interesen; pudiendo contener ordenadores de la intranet y de internet. Viene a ser algo así como una mini DNS.

    * Accedemos a Interfaces donde por defecto encontraremos lo y eth0, dispositivos que estarán activos en nuestra máquira: lopback y nuestra tarjeta de red. Editando eth0 podemos modificar su configuración ;-)
    * Vamos a añadir un nuevo interface que nos posibilitará establecer la conexión a internet. Pulsamos e add se abrirá una ventana en la que seleccionaremos Interface Type elegimos ppp y pulsamos ok nos aparece una nueva ventana denominada create ppp interface donde hemos de colocar el número de teléfono para acceder a internet, activamos la casilla use pap authentication y ponemos nuestro nombre de usuario y nuestra contraseña. A continuación aceptamos y en la nueva ventana se nos pregunta si deseamos guardar la configuración. Respondiendo afirmativamente habremos creado un nuevo interface que aparecerá en la lista con el nombre ppp0.

    Para activar el ppp0 bastará con pulsar sobre él y sobre el botón activate con lo que comenzará la marcación del módem y nos conectaremos a internet (pero aún no hemos llegado a este punto, antes hemos de continuar con nuestra configuración).

    Siguiendo en la pantalla de configuración pulsaremos sobre el botón routing, esta pantalla ha de estar vacía, sólo hemos de marcar la casilla network packet forwarding (IPv4). Hecho esto salvamos la configuración pulsando en save y salimos de la pantalla de configuración pulsando en quit.

    Al activar el reenvio de paquetes necesitamos proteger nuestra red con un cortafuegos. A la sazón cargué el paquete ipfwadm (incluido en todas las distribuciones de RedHat) y sólo nos resta configurarlo. Para ello hemos de editar tres ficheros: /etc/hosts.allow - /etc/hosts.deny - /etc/rc.d/rc.local

En hosts.allow incluimos al final la siguiente línea:
ALL: 192.168.100.   # ip de nuestra red

En hosts.deny incluimos al final esta línea:
ALL: ALL

En rc.local, al final incluimos las siguientes líneas:
# Anadido para cortafuegos
ipfwadm -F -p deny
ipfwadm -F -a m -S 192.168.100.0/24 -D 0.0.0.0/0

    Nuestro sistema está casi preparado, sólo hemos de reiniciar el demonio de red yendo al directorio /etc/rc.d/init.d y tecleando dentro de él ./network stop (intro) y a continuación network start. Con ello obtendremos una pantalla semejante a ésta:

[root@texas /]# cd /etc/rc.d/init.d/
[root@texas init.d]# ./network stop
Disabling IPv4 packet forwarding.
[root@texas init.d]# ./network start
Enabling IPv4 packet forwarding.
[root@texas init.d]#

Podéis reiniciar el equipo por si fuese necesario relanzar algún servicio (tengo dudas sobre si esto es necesario *** se admiten sugerencias ***). Personalmente una de las virtudes que más aprecio en linux es su capacidad de maniobra sin necesidad de rearrancar "veinte veces" antes de instalar algún programa.
 

    * Ahora es el momento de lanzar el interfaz ppp0 que hemos creado y conectarnos a internet. Podemos hacerlo desde la propia pantalla de configuración como apuntábamos anteriormente o hacerlo desde la línea de comandos (dentro o fuera de las X), según mi experiencia resulta recomendable hacerlo desde fuera de las X, ya que si mal no recuerdo si lo hacemos desde las X y salimos de ellas la conexión se cortaba. En cambio haciéndolo desde fuera de las X podíamos entrar y salir en ellas sin que la conexión finalizase (sigo con dudas en este punto ¿¿¿sugerencias???).

    * Para lanzar el interfaz basta teclear desde cualquier directorio:
ifup ppp0 con esto comenzará el proceso de marcado y conexión. Para seguir de cerca los pasos de conexión podemos teclear:
tail -f /var/log/messages. Esto además de hacernos un seguimiento de la conexión viendo sus procesos, nos permite obtener de forma inicial la dirección ip dinámica que se nos asigna.

    * Una vez conectados a internet bastará probar la conexión desde otro equipo y comprobar que felizmente sale a internet a través de nuestro nuevo y flamante router linux.

    * Si además le añadimos un soft proxy como squid entonces mejoramos el rendimiento en un porcentaje muy alto, pero esto será motivo de otra reflexión.
________________________

    Si has llegado hasta aquí, me gustaría recibir aportaciones o críticas constructivas sobre este artículo.