Instalar una LAN bajo LINUX


En el siguiente tutorial voy a explicar sencillamente como crear una red con las computadoras que tenemos a mano utilizando Linux. Como siempre aclaro que esto funciono con mis máquinas y para mas información recomiendo enfáticamente que lean ethernet-howto, Redes en Linux Como, y para más información el Libro de admistración de Redes en Linux que es parte del proyecto LPD. Todos estos how-to están seguro en el disco de la distribución que vos tengas o si no en http://www.linux.org.ar/ dado que es mirror del Proyecto LuCas. 

Paso por paso, primero vamos a hablar un poco sobre las redes, después vamos ver como detectar nuestra placa ethernet y como configurarla bajo linux. Luego vamos a ver como configurar la red, es decir como conectarnos a otra computadora de la red y como compartir los archivos y la impresora. Y por último vamos a hablar un poco sobre la seguridad de nuestra red. (nota: no sabia si hacer este tutorial con enlaces internos o no, me decidí por hacerlo todo en un mismo lugar para que sea mas fácil guardarlo e imprimirlo, si creen que debería hacer lo contrario por favor avisen) Lo voy a tratar de ir actualizando periódicamente. 

Hablemos de Redes
Una red nos permite comunicarnos con otras máquinas, para esto cada máquina en la red debe poder ser identificada. Para esto toda máquina de un red basada en el protocolo TCP/IP tiene asignado un número de IP, número que tiene 4 cifras divididas por puntos, ejemplo 192.168.46.245, (por ejemplo cuando nos conectamos a INTERNET nuestro servidor nos asigna un número), pero si vamos a realizar una red interna no podemos, o mejor dicho, no nos conviene poner cualquier número, con este fin existen números reservados para redes locales los cuales van desde 192.0.0.0 a 223.255.255.255, por convención en una red local se usa los números 192.168.X.Y , donde X e Y son un número que va desde 0 hasta 255 (un número entero no signado de 8 bits de longitud fija, para quienes conocen de programación). La máscara de red es igual para todas las computadoras de nuestra red y por ejemplo lo mas común es usar 255.255.255.0. Bueno creo que con esto es suficiente para empezar, si quieren saber mas lean los how-to que les mencioné antes. 

Detectando y configurando la placa de Ethernet
Las placas que yo utilizo son PCI y la marca es Encore ENL832-TX que usa un chip Realtek 8139 y la Encore ENL835-TB que usa el chip Realtek 8029. Cuando instalé la primera lo hice en el momento en que instalaba a Linux (cabe decir que estaba instalando Red Hat 6.0, aunque también instale Mandrake 6.0 y fue igual). 
En el momento de instalación habrás visto que te pregunta si quieres configurar una red local o algo así, en ese momento puede ser que el sistema detecte por si solo a la placa de red. Si es así, le va asignar un módulo que será seguramente el ne2k-pci o el ne2000 y me parece que hay uno específico para Realtek 8139.Una vez hecho esto va a pedir que le asignemos un número de IP, ponemos el número que tengamos que poner (ver mas arriba), luego ponemos el nombre de nuestra máquina (host) y el nombre de nuestra red. Hecho esto podemos pasar a Chequeando la red.
En la otra computadora se dió otra situación: ya tenía instalado el sistema operativo (Madrake 6.0) y tenía que instalar la placa de red, acá instale la Realtek 8029 y tuve algunos problemas: no podía hacer que Linux detecte la placa de red. El problema radicaba en que mi motherboard le había asignado un IRQ que no permitía la detección de la placa por linux, mas que esto era que estaba en conflicto con el bus PCI. Como lo resolví: En mi motherboard (SOYO 6BA+3) tengo la posibilidad de decirle que le asigne a tal ranura PCI un cierto IRQ, el IRQ que le asigne es el 10. Elegí este no por capricho, sino por que es el IRQ que por omisión tienen las placas de red y la que Linux espera que tenga, o sea que de esta manera ese IRQ solo lo usa la placa de red y linux la detecta. Si tu motherboard no tiene esta opción seguramente podes setear la placa desde DOS con alguna herramienta que trae la placa.
Una vez hecho esto hay que asignarle un módulo esto se puede hacer de dos formas:

  1. Usando el Panel de control
  2. Escribiendo a mano los archivos de configuración

Voy a explicar detalladamente la segunda dado que funciona para todas las distribuciones. Además la primera es bastante intuitiva.

La primera rápidamente es así:
Abrimos el panel de control y vamos a Kernel Configuration, ahi tecleamos en add (agregar un módulo) agregamos un modulo tipo eth0 y elegimos después el ne2000 o mejor el ne2k-pci., terminamos reiniciando los módulos. 

En la segunda forma vamos a /etc/conf.modules lo abrimos con nuestro editor de texto favorito y agregamos la siguiente línea:

alias eth0 ne2k-pci

Esto hace que modprobe cargue el módulo de nuestra placa de red, es bueno fijarse que el módulo este en nuestro sistema para esto fíjense en lib/modules/distribucion/net. Si esta, se supone que va andar todo bien. No se preocupen que va a estar, pero es bueno conocer ese directorio por si encuentran un módulo que funcione mejor con su placa. Luego escriban esto en una consola para activar el módulo:
modprobe No se preocupen que luego siempre que enciendan la máquina la activación de los módulos es automática.
Bueno hecho esto vamos agregar una IP, un nombre y un dominio a nuestra red si todavía no lo hicimos.
Como siempre podemos hacerlo de dos formas usando una aplicación de configuración como LinuxConf o hacerlo escribiendo en los archivos pertinentes, si saben usar alguna aplicación háganlo que es mas rápido, sino hagan lo siguiente:
Para ponerle nombre y dominio a nuestra máquina abrimos /etc/HOSTNAME y escribimos el nombre y dominio que queramos, en nuestro ejemplo usaremos:
maquina1.mi.red.

Dos aclaraciones: se supone que el archivo estaba vacío y segundo maquina1 es el nombre y mi.red es el dominio.
Ahora vamos asignarle un número de IP a nuestra máquina, para esto hacemos lo siguiente:

Abrimos /etc/hosts y agregamos:

192.168.5.1 maquina1.mi.red maquina1

De vuelta dos aclaraciones: el archivo no esta vacío contiene la siguiente línea:
127.0.0.1 localhost localhost.localdomain esto viene por omisión y es para tener una red interna, ya le encontrarán su uso.

La otra cosa es que es importante que haya espacio entre el IP el Nombre.dominio y Nombre, por otro lado es acá es donde deben poner los nombres e IP's de las máquinas de nuestra red. 

Bueno se supone que todo lo anterior dicho lo hacemos en otra máquina entonces así tenemos como mínimo dos máquinas, evidentemente los nombres e IP's tienen que ser diferentes y recomiendo que el dominio sea el mismo. 

Chequeando la red
Primero vamos a chequear la configuración de la placa. Para esto tecleamos:

ifconfig

lo que generara la siguiente respuesta:

eth0    Link encap:Ethernet HWaddr 00:E0:7D:81:0C:A3
        inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
        UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:100
        Interrupt:10 Base address:0xe400

lo      Link encap:Local Loopback
        inet addr:127.0.0.1 Mask:255.0.0.0
        UP LOOPBACK RUNNING MTU:3924 Metric:1
        RX packets:48 errors:0 dropped:0 overruns:0 frame:0
        TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:0


Si esto aparece es que la placa esta bien. Otra cosa que vamos a hacer es hacer un ping: para esto hacemos: 

ping maquina1

Esperamos unos 5 renglones y apretamos ctrl-c Lo que dará como resultado:

PING maquina1.mi.red (192.168.0.1): 56 data bytes
64 bytes from 192.168.0.1: icmp_seq=0 ttl=255 time=0.1 ms
64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=0.1 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=255 time=0.1 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=255 time=0.1 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=255 time=0.1 ms

--- maquina1.red.casa ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.1/0.1/0.1 ms


Esto indica que esta todo bien, ahora vamos a pasar a conectar las dos o mas máquinas entre sí.

Conectando las máquinas entre sí
Bueno si tenemos mas de 2 máquinas lo hacemos a través de un HUB, para esto conectamos los extremos de nuestros cable de red ( con extremos RJ45 , también llamado big jack en otra palabras ficha de teléfono grande) uno a la placa de red y el otro extremo al HUB, y así con cada computadora, prendemos el HUB y listo,
Si solo tenemos dos máquinas podemos hacer lo anterior o conectarlas directamente usando un cable de red cruzado ( ahora explico como es) y así nos ahorramos el HUB (en Argentina 50$ aproximados, según calidad).
Para hacer los cables cruzados hay que hacer lo siguiente:

Un cable de red convencional tiene la siguiente configuración:
pin1-----------------------------pin1 output Data +
pin2-----------------------------pin2 output Data -
pin3-----------------------------pin3 input Data +
pin4-----------------------------pin4 Uso telefónico
pin5-----------------------------pin5 Uso telefónico
pin6-----------------------------pin6 intput Data -
pin7-----------------------------pin7 Uso telefónico
pin8-----------------------------pin8 Uso telefónico

Donde pin es cada conductor del cable conectado al RJ45
Mientras que un cable cruzado ( también llamado null) es así:

pin1-----------------------------pin3
pin2-----------------------------pin6
pin3-----------------------------pin1
pin4-----------------------------pin4
pin5-----------------------------pin5
pin6-----------------------------pin2
pin7-----------------------------pin7
pin8-----------------------------pin8

De esta forma los conductores quedan cruzados y las salidas de datos de un
extremo corresponden con las entradas de datos del otro extremo.

Bueno ya conectadas las máquinas solo nos queda ver si se conectan entre ellas
para esto hacemos un ping pero con el nombre de la otra maquina, lo cortamos
haciendo ctrl-c.

Si el resultado es parecido a nuestro anterior ping, pónganse contentos acaban de poner en red sus máquinas.

Si por el contrario los paquetes se perdieron puede haber pasado muchas cosas pero hay dos que suelen suceder:

  1. Se olvido de poner o los puso mal a la IP y el nombre de la otra máquina en su /etc/hosts , verifique que esto este bien.
  2. Lo otro que puede pasar es que se olvido de prender el HUB (si esta usando uno) o los cables están rotos, si esta usando un cable null quizás lo hizo mal, de todas formas verifique todo lo que pueda.

Configurando la red y algunas cosillas mas
Cosas que se pueden hacer con la red:
Usar la otra máquina como si estuvieran en ella para esto en un terminal de la maquina1 escribimos:

telnet maquina2

En un instante nos estaremos conectando con el mensaje de bienvenida de la otra máquina, nos logueamos y estamos adentro (no pueden loguearse como root vean Hablemos de seguridad).

Otra cosa que se puede hacer es compartir los directorios y/o las impresoras, para esto como siempre hay dos maneras usando alguna herramienta de configuración, estilo linuxconf o hacerlo a mano.

Para hacerlo con linuxconf, lo que hacemos es primero vamos a panel de control y de ahí a servicios activos y activamos el servicio NFS si es que no esta activo (por lo general esta activo). Con esto una vez que se reinicien los servicios el NFS estará activo. Una vez hecho esto vamos a configuración de la red, de ahí a servicios como servidor y de ahí a exportar sistema de archivos, clickeamos en agregar y agregamos el directorio que queremos compartir y también ponemos con quien queremos compartirlo (por ejemplo en nuestra maquina1 , ponemos maquina2 y en la maquina2 ponemos maquina1), Después ponemos las opciones que queramos.
Para hacer esto a mano, primero tenemos que indicarle a /etc/rc.d/rc3d este el archivo de inicialización de linux (si es que se inician en runlevel 3 , sino reemplazan el 3 por su runlevel (4 o 5) que corra el /init.d/nfs, esto lo hacemos creando un enlace simbólico entre S60nfs y /init.d/nfs. Entonces, para hacer lo antes mencionado nos situamos en el directorio /etc/rc.d/rc3d y escribimos lo siguiente:
ln -s S63nfs ../init.d/nfs
Con esto una vez que se reinicien los servicios el NFS estará activo. Luego tenemos que exportar los directorios que queramos compartir con otra máquina. Para esto abrimos el archivo /etc/exports con un editor de texto y agregamos lo siguiente (si queremos, por ejemplo, compartir el directorio /tmp de la maquina1 pondremos en la maquina1):

/tmp maquina2(rw,no_root_squash)

Con esto ya quedara listo, ahora lo que nos falta es poder acceder a estos desde la otra máquina, para hacer esto podemos hacerlo desde el Linuxconf haciendo acceder a sistema de archivos-volumen NFS, aquí clickeamos agregar ponemos el nombre del servidor del volumen ( el nombre de la otra máquina) , el volumen en nuestro caso era /tmp y el punto de montaje en nuestra máquina, por ejemplo /mnt/maquinaX, una vez hecho esto ponemos aceptar y nos dirá que el punto de montaje no existe y si queremos crearlo, le decimos que si y listo.

Para hacerlo manualmente vamos a /etc/fstab y lo abrimos con un editor de texto y agregamos la siguiente línea (suponiendo que queramos acceder al /tmp de la maquina1, supongo que estas en otra maquina, por ejemplo maquina2)
maquina1:/tmp /mnt/maquinaX nfs user,exec,dev,suid,rw,noauto 1 1
Una vez hecho esto creamos el directorio /maquinax dentro de /mnt y listo.

Para poder acceder lo montas como mas te guste (con Disk Managent o haciendo en una terminal: mount -t nfs -o ro maquina1:/tmp).

Una recomendación el montaje del directorio NFS no lo pongan como auto únicamente que la otra máquina siempre este prendida antes que la que la va a montar

Y otra cosa que se me ocurre para que hagan es usar el VNC, un programa fabuloso que les permite tener su otra computadora en una ventana de su modo X. 

Bueno con esto podemos empezar a trabajar en red .Para terminar voy a hablar un poquito sobre la seguridad en una red (no esperen mucho) 

Sobre seguridad
Cuando te conectas a otra máquina a través de una red, lo haces a través de un servicio que ofrece la otra máquina, por ejemplo NFS , telnet, ftp, etc. Por lo tanto salta a la vista que si nosotros no queremos que por ejemplo otra máquina se comunique con nosotros con por ejemplo telnet, deberíamos cerrar esa posibilidad. Los servicios que nuestra máquina brinda se encuentran en /etc/services, lo que debemos hacer es agregarle un # al servicio que queramos deshabilitar. Uno debería deshabilitar todos aquellos servicios que no necesitemos. Recomiendo que vean que servicios tienen abiertos usando un escaneador de puertos (port scanner) , por ejemplo el nmap