1. Skip to Menu
  2. Skip to Content
  3. Skip to Footer>

Interesante

  • Cómo configurar un servidor NFS

    Configurar un servidor NFS.

    Introducción.

    NFS, acrónimo de Network File System, es un popular protocolo utilizado para compartir volúmenes entre máquinas dentro de una red de manera transparente, más comúnmente utilizado entre sistemas basados sobre UNIX®. Es útil y fácil de utilizar, sin embargo no en vano es apodado cariñosamente como "No File Security". NFS no utiliza un sistema de contraseñas como el que tiene SAMBA, solo una lista de control de acceso determinada por direcciones IP o nombres. Es por esto que es importante que el administrador de la red local o usuario entienda que un servidor NFS puede ser un verdadero e inmenso agujero de seguridad si este no es configurado apropiadamente e implementado detrás de un contrafuegos o firewall.

    Personalmente, solo recomiendo utilizar NFS dentro de una red local detrás de un contrafuegos o firewall que permita el accesos solo a las máquinas que integren la red local, nunca para compartir sistemas de archivos a través de Internet. Al no contar con un sistema de autenticación por contraseñas, es un servicio susceptible del ataque de algún cracker. SAMBA es un mucho mejor y más seguro protocolo para compartir sistemas de archivos.

    Procedimientos.

    Teniendo en cuenta los aspectos de seguridad mencionados, es importante que siga los procedimientos descritos a continuación al pie de la letra, y que posteriormente se comprometa también consultar a detalle la documentación incluida en el paquete nfs-utils, ya que este le proporcionará información adicional y completa sobre aspectos avanzados de configuración y utilización.

    Configurando el servidor NFS.

    Se requiere tener instalados nfs-utils y portmap. Preguntaremos al sistema si estos están instalados con la siguiente línea de comando:

    rpm -q nfs-utils portmap

    Lo cual debe de regresar algo como lo siguiente:

    nfs-utils-0.3.1-13.7.2.1
    portmap-4.0-38

    En caso de que falte alguno de estos paquetes, inserte el CD de instalación en la unidad correspondiente, abra una terminal o consola y ejecute lo siguiente:

    mount /mnt/cdrom/
    rpm -Uvh /mnt/cdrom/RedHat/RPMS/paquete_faltante

    Cabe mencionar que lo mejor será siempre utilizar la versiones de nfs-utils y portmap más actuales. Salvo por RedHat® Linux 7.1 o LinuxPPP 7.x, el resto de las versiones anteriores de RedHat® y LinuxPPP® incluyen paquetes de nfs-utils y portmap con serios agujeros de seguridad. Visite el servidor ftp de la distribución utilizada y descargue los paquetes actualizados, que seguramente incluirán los parches de seguridad necesarios:

                        

                           

    Configurando la seguridad.

    Lo siguiente será configurar un nivel de seguridad para portmap. Esto se consigue editando los ficheros /etc/hosts.allow y /etc/hosts.deny. Debemos especificar que direcciones IP o rango de direcciones IP pueden acceder a los servicios de portmap y quienes no pueden hacerlo. Podemos entonces determinar en /etc/hosts.allow como rango de direcciones IP permitidas los siguiente:

    portmap:192.168.1.0/255.255.255.0

    Esto corresponde a la dirección IP de la red completa y la máscara de la sub-red. Adicionalmente podemos especificar direcciones IP individuales sin necesidad de establecer una máscara. Esto es de utilidad cuando se desea compartir volúmenes con otras máquinas en otras redes a través de Internet. Ejemplo:

    portmap:192.168.1.0/255.255.255.0
    portmap:192.168.20.25
    portmap:192.168.30.2
    portmap:216.200.152.96
    portmap:148.240.28.171

    Una vez determinado que direcciones IP pueden acceder a portmap, solo resta determinar quienes no pueden hacerlo. Evidentemente nos referimos al resto del mundo, y esto se hace agregando la siguiente línea:

    portmap:ALL

    Es importante destacar que la línea anterior es INDISPENSABLE y NECESARIA si quiere tener un nivel de seguridad decente. De manera predeterminada las versiones más recientes de nfs-utils no permitirán iniciar el servicio si esta línea no se encuentra presente en /etc/hosts.deny.

    Una vez configurado portmap, debe reiniciarse el servicio de portmap:

    /sbin/service portmap restart

    Si tiene un DNS, de de alta las direcciones IP asociadas a un nombre o bien edite /etc/hosts y agregue las direcciones IP asociadas con un nombre. Esto nos servirá como listas de control de accesos. Ejemplo del fichero /etc/hosts:

    127.0.0.1 localhost.localdomain localhost
    192.168.1.254 servidor.mi-red-local.org servidor
    192.168.1.2 algun_nombre.mi-red-local.org algun_nombre
    192.168.1.3 otro_nombre.mi-red-local.org otro_nombre
    192.168.1.4 otro_nombre_mas.mi-red-local.org otro_nombre_mas
    192.168.1.5 como_se_llame.mi-red-local.org como_se_llame
    192.168.1.6 como_sea.mi-red-local.org como_sea
    192.168.1.7 lo_que_sea.mi-red-local.org lo_que_sea

    Compartir un volumen NFS.

    Procederemos a determinar que directorio se va a compartir. Puede crear también uno nuevo:

    mkdir -p /var/nfs/publico

    Una vez hecho esto, necesitaremos establecer que directorios en el sistema serán compartidos con el resto de las máquinas de la red, o bien a que máquinas, de acuerdo al DNS o /etc/hosts se permitirá el accesos. Esto deberemos agregarlos en /etc/exports determinado con que máquinas y en que modo lo haremos. Se puede especificar una dirección IP o bien nombre de alguna máquina, o bien un patrón común con comodín para definir que máquinas pueden acceder. De tal modo podemos utilizar el siguiente ejemplo (la separación de espacios se hace con un tabulador):

    /var/nfs/publico *.mi-red-local.org(ro,sync)

    En el ejemplo anterior se esta definiendo que se compartirá /var/nfs/publico/ a todas las máquinas cuyo nombre, de acuerdo al DNS o /etc/hosts, tiene como patrón común mi-red-local.org, en modo de lectura escritura. Se utilizó un asterisco (*) como comodín, seguido de un punto y el nombre del dominio. Esto permitirá que como_se_llame.mi-red-local.org, como_sea.mi-red-local.org, lo_que_sea.mi-red-local.org, etc., podrán acceder al volumen /var/nfs/publico/ en modo solo lectura. Si queremos que el accesos a este directorio sea en modo de lectura y escritura, cambiamos (ro) por (rw):

    /var/nfs/publico *.mi-red-local.org(rw,sync)

    Ya que se definieron los volúmenes a compartir, solo resta iniciar o reiniciar el servicio nfs. Utilice cualquiera de las dos líneas dependiendo el caso:

    /sbin/service nfs start
    /sbin/service nfs restart

    A fin de asegurarnos de que el servicio de nfs esté habilitado la siguiente vez que se encienda el equipo, debemos ejecutar lo siguiente:

    /sbin/chkconfig --level 345 nfs on

    El comando anterior hace que se habilite nfs en los niveles de corrida 3, 4 y 5.

    Como medida de seguridad adicional, si tiene un contrafuegos o firewall implementado, cierre, para todo aquello que no sea parte de su red local, los puertos tcp y udp 2049, ya que estos son utilizados por NFS para escuchar peticiones.

    Configurando las máquinas clientes.

    Para probar la configuración, es necesario que las máquinas clientes se encuentren definidas en el DNS o en el fichero /etc/hosts del servidor. Si no hay un DNS configurado en la red, deberán definirse los nombres y direcciones IP correspondientes en el fichero /etc/hosts de todas las máquinas que integran la red local.

    Como root, en el equipo cliente, ejecute el siguiente comando para consultar los volúmenes exportados (-e) a través de NFS por un servidor en particular:

    showmount -e 192.168.1.254

    Lo anterior mostrará una lista con los nombres y rutas exactas a utilizar. Ejemplo:

    Export list for 192.168.1.254:
    /var/nfs/publico 192.168.1.0/24

    A continuación creamos, como root, desde cualquier otra máquina de la red local un punto de montaje:

    mkdir /mnt/servidornfs

    Y para proceder a montar el volumen remoto, utilizaremos la siguiente línea de comando :

    mount servidor.mi-red-local.org:/var/nfs/publico /mnt/servidornfs

    Si por alguna razón en el DNS de la red local, o el fichero /etc/hosts de la máquina cliente, decidió no asociar el nombre de la máquina que fingirá como servidor NFS a su correspondiente dirección IP, puede especificar ésta en lugar del nombre. Ejemplo:

    mount -t nfs 192.168.1.254:/var/nfs/publico /mnt/servidornfs

    Podremos acceder entonces a dicho volumen remoto con solo cambiar al directorio local definido como punto de montaje, del mismo modo que se haría con un disquete o una unidad de CDROM:

    cd /mnt/servidornfs

    Si queremos poder montar este volumen NFS con una simple línea de comando o bien haciendo doble clique en un icono sobre el escritorio, será necesario agregar la correspondiente línea en /etc/fstab. Ejemplo:

    servidor.mi-red-local.org:/var/nfs/publico /mnt/servidornfs nfs user,exec,dev,nosuid,rw,noauto 0 0

    La línea anterior especifica que el directorio /var/nfs/publico/ de la máquina servidor.mi-red-local.org será montado en en directorio local /mnt/servidor/nfs, permitiéndole a los usuarios el poder montarlo, en modo de lectura y escritura y que este volumen no será montado durante el arranque del sistema. Esto último es de importancia, siendo que si el servidor no está encendido al momento de arrancar la máquina cliente, este se colgará durante algunos minutos.

    Una vez agregada la línea en /etc/fstab de la máquina cliente, si utiliza GNOME Midnight Commander, el administrador de archivos de GNOME-1.1 y 1.2, solo restará iniciar una sesión gráfica, hacer clique derecho sobre el escritorio y seleccionar Actualizar dispositivos o Rescan devices. Esto colocará un icono adicional sobre el escritorio que deberá ser tratado del mismo modo que se haría con un disquete o unidad de CDROM.

    Icono para volumen NFS

    Si utiliza GNOME-1.4 o superior, éste incorpora Nautilus como administrador de archivos, mismo que auto-detecta cualquier cambio en /etc/fstab. Solo debe hacerse clique derecho sobre el escritorio y debe seleccionarse el disco que se desee montar.

    Accesos a discos en Nautilus

    Instalación de GNU/Linux a través de un servidor NFS.

    Este es quizás el uso más común para un volumen NFS. Permite compartir un volumen que contenga una copia del CD de instalación de alguna distribución y realizar inclusive instalaciones simultáneas en varios equipos. Tiene como ventaja el que la instalación puede resultar más rápida que si se hiciese con un CDROM, siendo que la tasa de trasferencia de archivos será determinada por el ancho de banda de la red local, y nos permitirá instalar GNU/Linux en máquinas que no tengas unidad de CDROM.

    Una vez creado y configurado un volumen a compartir copiaremos todo el contenido del CD de instalación en éste:

    cp -r /mnt/cdrom/* /var/nfs/publico/

    En el directorio images del CD encontraremos varias imágenes para crear disquetes de arranque. Utilizaremos bootnet.img para crear el número de disquetes necesarios para cada máquina en la que realizaremos una instalación, y que nos permitirán acceder a la red. Inserte un disquete y ejecute lo siguiente:

    cd /var/nfs/publico/images/
    dd if=bootnet.img of=/dev/fd0 bs=1440k

    Añada en /etc/hosts, o bien de de alta en el DNS, las direcciones IP, que serán utilizadas por las nuevas máquinas, asociadas a un nombre con el dominio que específico como regla de control de acceso en /etc/exports -es decir *.mi-red-local.org-. Para /etc/hosts, puede quedar algo así:

    127.0.0.1 localhost.localdomain localhost
    192.168.1.254 servidor.mi-red-local.org servidor
    192.168.1.2 algun_nombre.mi-red-local.org algun_nombre
    192.168.1.3 otro_nombre.mi-red-local.org otro_nombre
    192.168.1.4 otro_nombre_mas.mi-red-local.org otro_nombre_mas
    192.168.1.5 como_se_llame.mi-red-local.org como_se_llame
    192.168.1.6 como_sea.mi-red-local.org como_sea
    192.168.1.7 lo_que_sea.mi-red-local.org lo_que_sea
    192.168.1.8 nueva_maquina.mi-red-local.org nueva_maquina
    192.168.1.9 otra_nueva_maquina.mi-red-local.org otra_nueva_maquina

    Utilice estos disquetes para arrancar en los equipos, ingrese una dirección IP y demás parámetros para esta máquina y cuando se le pregunte ingrese la dirección IP del servidor NFS y el directorio en éste donde se encuentra la copia del CD de instalación. El resto continuará como cualquier otra instalación.

    Autor: Joel Barrios Dueñas
    Correo electrónico: joelbarrios arroba linuxparatodos punto net
    Sitio de Red: http://www.linuxparatodos.net/

    Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

    (c) 1999-2005 Linux Para Todos. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales. c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

    Technorati Tags:
    >>

  • Cómo instalar Linux

    Introducción

    Uno de los puntos más importantes para instalar Linux es tener listo nuestro disco duro. Parece un tanto raro el comentario pero ciertamente es donde más de un usuario se pierde, especialmente cuando tienen que particionar y cosas así, por lo que lo explicaremos brevemente.

    Dado que actualmente la mayoría de las PC llegan con Windows preinstalado (¿dije la mayoría?, más bien todas), los usuarios no se preocupan por mucho más que sólo prenderla y cuando llega el caso, reinstalar con un CD, pero cuando tiene que hacer que el disco duro contenga otro sistema operativo (incluso otra versión de Windows), necesitar partir (particionar) el disco duro. Y aquí empezamos con los problemas.

    Aquellos afortunados que tengan la posibilidad de adquirir otro disco duro para instalar Linux, pues adelante y se ahorrarán todo lo relativo a particionamiento de este tutorial, pero en caso contrario, pues continuamos.

    Un disco duro se divide, físicamente, en cilindros y cada uno de estos se divide en sectores, regularmente de 512 bytes y es en este espacio donde la información es grabada. En el momento que indicamos que un disco se divida en varias unidades, realizamos el proceso llamado particionamiento, en el que se le asigna un espacio especifico a cada partición.

    Verifiquemos nuestro hardware

    Un elemento que regularmente los usuarios novatos pasan por alto es el relativo a verificar la compatibilidad/estado de su hardware, lo que puede traer como consecuencia que el sistema no quede bien instalado, sea inestable o de plano nos mande por un tubo el instalador, por lo que debemos verificar los siguientes puntos:

    • Revisar que nuestro hardware esté soportado por la distribución que vamos a utilizar.
    • Revisar que funcionen correctamente las tarjetas (red, sonido, módem).
    • Revisar que el disco duro no tenga sectores dañados (debe ejecutarse el scandisk).
    • Si se manifiestan problemas con Windows (lo que no es raro), como que se congele la máquina o no termine de encender, recomendamos enviarla antes a un servicio técnico para que se le revise la tarjeta madre o el estado del RAM.

    Las revisiones de compatibilidad de hardware las pueden buscar en:

                          

                       
                         
                                                                                                             
    Para otras distribuciones deberán revisar la página Web del proveedor.

    En los casos de hardware desconocido o no compatible (caso clásico son los winmodem y softmodem) o que tengamos dañada alguna tarjeta, lo más recomendable es adquirir uno nuevo. Para el caso concreto de los módem, casi cualquiera externo por hardware funciona.

    Para los que no sepan el porque, Linux no soporta ciertos dispositivos y tarjetas debido a que los controladores los hacen los mismos miembros de la comunidad GNU/Linux y esto es posible sólo cuando el fabricante libera las especificaciones de sus componentes, por eso siempre hay un un cierto período entre que un nuevo dispositivo es lanzado y que lo soporte este SO; caso contrario con Windows/Macintosh, ya que los fabricantes mismos son quienes desarrollan y prueban los controladores. El caso de los módem por software (winmodem/softmodem) es especial, ya que diversas funciones que debería manejar el hardware se le relega a que las maneje Windows directamente, lo que es una ventaja para los fabricantes al ser muy baratos de producir, peor que imposibilita su uso fuera del SO de las ventanas.

    Una revisión previa es importante, ya que es frecuente que un usuario incauto simplemente no pueda configurar su módem, tarjeta de red o de sonido y le eche la culpa al sistema operativo, o peor aún cuando un hardware dañado truene la instalación, lo que los lleva a decir "Linux no sirve". El caso es sencillo, son los componentes, no el software. Si aparentemente todo está bien, pues continuamos.

    Antes que nada, respaldamos

    A menos a que seamos masoquistas, hayamos enloquecido o nos caiga mal el propietario de la información, es kamikaze (viento divino o irse de cabeza al barranco, como lo quieran traducir) no respaldar la información del disco duro; por lo que pueden utilizar un quemador de CD's, una unidad de Zip o Jaz o una unidad de red, también pueden utilizar alguna herramienta para generar una imagen de su disco, como:

                                  
                              

                            

    ¿Para que particionamos?

    Los motivos para particionar son varios e incluso es aconsejable aún cuando no se vaya a instalar otro sistema operativo, porque:

    • Especifica partes donde se guarda la información y donde se guardan los programas, de manera que si se corrompe una unidad, no se pierde todo. Útil también con muchos virus que atacan la unidad C de una PC.
    • Mejora el desempeño del disco duro, al tener que leer sectores más pequeños de disco duro y no toda la unidad.
    • Limita el tamaño al que pueden crecer los directorios de diversos usuarios (en ambientes de redes), para evitar que saturen el disco duro y el sistema operativo ya no pueda operar.

    ¿Con que particionamos?

    Desde DOS podemos utilizar una muy confiable pero limitada herramienta llamada >fdisk, la cual puede eliminar y crear nuevas particiones, sin embargo el contenido del disco duro se pierde y no hay manera de recuperarlo. Para activarlo simplemente es necesario, desde el prompt de DOS, teclear fdisk, eliminar todas las particiones existentes y luego crear las nuevas, después de salir de fdisk debemos dar formato las unidades ya que se pierde absolutamente todo. Nota: esta herramienta no puede funcionar desde Windows, es necesario iniciar una sesión de DOS para ello.

    Para particionar mediante fdisk pueden apoyarse en el conocido manual disponible en el sitio del proyecto Linuxdoc: http://www.linuxdoc.org/HOWTO/mini/Partition/partition-5.html.

    Se pueden recuperar particiones creadas con fdisk, pero será mejor ser cuidadoso y leer antes el siguiente manual para soporte: http://www.linuxdoc.org/HOWTO/mini/Partition/recovering.html.

    Otras opciones para crear particiones son:

                

    ¿Cómo divido mi disco duro?

    El tamaño de las particiones dependen del tamaño del disco es lógico que mientras más grande es éste, más espacio puedes dejar a Windows por un lado y Linux por el otro, pero...

    Cuidado. Un aspecto muy importante es el hecho que muchos BIOS, incluyendo los de algunas computadoras nuevas (contra lo que dicen los fabricantes), no pueden iniciar un sistema operativo que se encuentre después del cilindro 1024 (aproximadamente 7,168 MB), por lo que al determinar el tamaño debemos cuidar donde colocaremos la partición de Linux.

    En principio, a cada sistema operativo hay que dejarle el espacio suficiente para que trabajo, lo cual es variable, por ejemplo, Windows 95 ó 98 pueden funcionar dentro de particiones de 3 GB, con espacio para nuestras aplicaciones y archivos, pero Windows 2000 necesita de al menos 8 GB para trabajar bien como estación de trabajo (como servidor es mucho más); Red Hat necesita al menos de 600 MB para una instalación mínima, pero yo en lo personal dejo entre 2 y 3 GB sólo para el sistema operativo, aparte va el espacio para usuarios, archivos de bitácora y demás; es cosa de como se acomoden y lo que vayan a cargar para determinar cuanto espacio necesitan.

    Otro comentario es que, regularmente, Windows debe ir en la primera partición y que este sistema operativo es el "propietario" del Master Boot Record (MBR), que se ubica en el sector 0 del disco y que tiene la información para el arranque de (los) SO(s).

    Hace mucho tiempo cuando se utilizaba Lilo como arrancador para GNU/Linux, existía la limitación de tener que instalar éste y la partición que contuviese a /boot antes del cilindro 1024 del disco duro. Siendo que actualmente casi todas las distribuciones de GNU/Linux utilizan Grub, esta limitación ya no la hay.

    Pueden obtener más información en:

                              

    ¿Cómo identifico la unidad donde voy a instalar Linux?

    Cuando vemos un disco duro o unidades dentro de Windows, se nos presentan como letras del abecedario (C, D, E, etc.) pero dentro de Linux, es bastante diferente, ya que su estructura semeja un árbol donde cada partición y dispositivo de lectura/escritura se representa como un directorio, los nombres de las unidades de disco duro son:

    • hda: disco duro principal
    • hdb: disco duro secundario
    • hda1: primera partición del disco duro principal.
    • hdb2: segunda partición del disco secundario

                 
                                
                      
                            

    Ahora, para ejemplificar todo este proceso, supongamos que tienen un disco duro de 20 GB y generan dos particiones, uno de 5 GB para Windows y el resto para Linux, entonces es hda1 (Windows) y hda2 (Linux), siendo en este último donde crearíamos las particiones del sistema.

    ¿Qué particiones necesito para Linux?

    NOTA: Estas particiones se crean al momento de instalar, no de dividir el disco duro para varios sistemas operativos, pero es importante que las conozcan de antemano.

    En principio sólo se pueden montar tres y es suficiente para que funcione:

    /boot
    Es la partición donde se leen los parámetros para iniciar el sistema.
    Requiere al menos 75 MB en Red Hat Enterprise Linux 3.0 y White Box Enterprise Linux 3.0. Asignar más espacio puede considerarse desperdicio.
    / o raíz
    Es donde se instalarán los componentes del sistema operativo.
    Requiere de 350 a 512 MB.
    swap
    Espacio físico para la memoria virtual del sistema.
    Debe asignarse el doble del tamaño del RAM físico.
    Esta será siempre la última partición del disco duro.
    No se asigna punto de montaje.

    Otras particiones son:

    /usr
    Se trata del segundo directorio en cuanto a jerarquía en el sistema. Contiene la mayoría de los binarios (ejecutables), bibliotecas compartidas, manuales, datos de aplicaciones e imágenes que utiliza el sistema, cabeceras de desarrollo, el árbol del kernel y documentación.
    Requiere al menos 1.5 GB en instalaciones básicas. Debe considerarse el software a utilizar a futuro. Para uso general, se recomiendan no menos de 5 GB y, de ser posible, considere un tamaño óptimo de hasta 8 GB en instalaciones promedio.
    /tmp
    En éste se almacenan todos los ficheros temporales que generan los distintos programas.
    Requiere al menos 350 MB y puede asignarse hasta 2 GB o más dependiendo de la carga de trabajo y tipo de aplicaciones. Si por ejemplo el sistema cuenta con un grabador de DVD, será necesario asignar a /tmp el espacio suficiente para almacenar una imagen de disco DVD, es decir, al menos 4.2 GB.
    /var
    Corresponde a la partición de datos de servicios.
    Requiere al menos 512 MB en estaciones de trabajo sin servicios. En servidores regularmente se le asigna al menos la mitad del disco duro.
    /home
    Corresponde a la partición de datos de usuarios. Es donde se colocan los directorios para cada usuario con los perfiles de cada cuenta.
    En estaciones de trabajo se asigna al menos la mitad del disco duro a esta partición.

    Por costumbre (y experiencia) recomiendo crear particiones independientes para /boot, / (raíz), /home, /var y swap. También es aconsejable una para /usr y /tmp.


    Por Hugo Madrid Luna
    crowley arroba mexicoextremo.com.mx
    http://www.mexicoextremo.com.mx

  • Cómo configurar SENDMAIL SENDMAIL

    Sendmail, servidor SMTP muy extendido, con muchos años de andadura (y muchos bugs) Todos los ficheros de configuracion de sendmail se encuentran en el directorio
    /etc o /etc/mail, o en ambos dos.
    El fichero principal es sendmail.cf. Es probablemente el fichero de configuracion mas complejo y dificil
    de manejar de unix.
  • iptables y NAT para vagos
    Un muy buen artículo de Ricardo Galli Granada, publicado hace algún tiempo en www.bulma.net, que recupero aquí porque pienso que a más de uno le dará una idea de como proteger su red de forma rápida, sencilla y muy segura, además de hacer nat y masquerading.

  • Cómo utilizar los sockets en Linux
    En este artículo explicaré el funcionamiento básico de los sockets en Linux y veremos dos ejemplos prácticos de su uso. No me meteré en temas de eficiencia o temas demasiado técnicos en la explicación del protocolo IP y de TCP ni UDP. El usuario debe tener unos conocimientos básicos en la programación en Linux así como de redes.

    Para poder probar estos ejemplos necesitas un sistema Linux o Unix. Un compilador de C, yo los he probado tanto con cc como con gcc.

  • Cómo configurar Squid Cómo configurar Squid: Parámetros básicos para servidor Proxy.

    Introducción.

    Squid es el software para servidor Proxy más popular y extendido entre los sistemas operativos basados sobre UNIX®. Es muy confiable, robusto y versátil. Al ser software libre, además de estar disponible el código fuente, está libre del pago de costosas licencias por uso o con restricción a un uso con determinado número de usuarios.

26
Ago

Cómo montar una red wireless con Linux

Escrito por J. Llorente

PDFImprimir E-mail

Redes Wireless con Linux

Las redes Wireless 802.11b, de 11 Mbps están convirtiéndose en una opción muy válida y popular en los últimos meses. Además que los precios han bajado notablemente, dan una enorme comodidad si tenemos varios ordenadores en casa y el soporte que hay en Linux es muy potente y variado.

En éste artículo explico las diferentes opciones y como instalarlo y configurarlo en Linux. Aunque sin duda la estrella es, al menos para mí, como montar un access point wireless en Linux con una tarjeta PCMCIA normal y corriente, y barata (en página 4).

 

Derechos de copia: este artículo puede copiarse en cualquier sitio web o publicación relacionada con Linux y/o software libre o redes wireless, sólo hay que citar al autor (yo, Ricardo Galli :-), BULMA y el URL de este articulo: http://bulmalug.net/body.phtml?nIdNoticia=1309. Tenéis también disponible una version HTML "limpia".


Introducción

Como veremos en este artículo, con Linux se pueden hacer muchas virguerías que son imposibles en sistemas operativos propietarios, como por ejemplo construir un Access Point basado en Linux a partir de una tarjeta Conceptronic (Chipset PRISM2) bastante barata y que no está, en principio, preparada para hacer de Master (o access point) de una red.

Las forma de trabajo de las tarjetas wireless tienen básicamente tres formas: ad-hoc y managed y master.

  • Ad-hoc: estas redes se construyen normalmente con ordenadores con las tarjetas "normales" y se configuran de modo que todos los ordenadores de la red trabajan "par a par", todos reciben los paquetes de todos y envían sus propios paquetes a todos los ordenadores de la red. Para esto no se necesita nada especial, sólo definir una red con un nombre (ESSID), preferiblemente encriptar a 128 bits (con WEP) y no tener demasiados ordenadores en la misma red.

  • Managed: en este caso exite un servidor independiente, Access Point (o Base Station en terminología comercial de Apple) al cual se conectan todos los ordenadores. El access point entonces envía las tramas 802.11 a los destinatarios finales. Normalmente los access points soportan roaming, es decir los clientes pueden estar en movimiento a ir cambiando de punto de acceso de acuerdo a la potencia de la señal. La diferencia fundamental entre una tarjeta que soporte ser access point (o modo master) es que hay que hacer bridging de paquetes IP y además manipulan los bits de 802.11 a bajo nivel, normalmente en la propia tarjeta. También los access points suelen ofrecer servicios de enrutado IP, servidor DHCP y bridging sobre una Ethernet. Cuando un ordenador o tarjeta está conectado a la red a través de un punto de acceso se dice que está en modo managed.

  • Master: es el modo en que trabaja el access point descrito en el punto anterior. Como veremos al final, es posible también fabricar un access point con Linux.

Módulos del kernel

La mayoría de las tarjetas que se venden actualmente son del tipo Orinoco (Lucent), Symbol HR y Prism 2. Todas ellas están soportadas por el driver orinoco_cs incluido en el kernel 2.4.x, pero sólo para trabajar en modo managed o ad-hoc, no soportan el modo master.

Además tienen un pequeño problema, los drivers no están del todo actualizados con la última versión y cuando la tarjeta comparte interrupciones con otros dispositivos genera un montón de líneas de logs por "eventos vacíos". Este problema ya está solucionado en las últimas versiones que se pueden bajar de http://ozlabs.org/people/dgibson/dldwd/ y compilarlos. Es bastante sencillo y el README lo explica claramente.

Pero como veremos más adelante, existen otras opciones, los nuevos linux-wlan-ng o el fantástico driver para Prism2 (i.e. los usados por Conceptronic) que nos permitirán hacer que nuestro Linux se convierta en un access point de muy bajo coste si tenemos una tarjeta Prism2 de Intersil.

Configuración de la tarjetas: iwconfig

Una vez cargados los módulos del kernel que sean necesarios, la configuración de las tarjetas se hace de forma similar a las ethernet con el comando ifconfig pero esta vez ayudado con un nuevo comando, el iwconfig, que permite cambiar los parámetros específicos de las redes inalámbricas. Por ejemplo:

  • Identificador de red (essid)
  • Frecuencia o canal (freq/channel)
  • Modo (mode: master|managed|ad-hoc)
  • Velocidad (rate)
  • Clave de encriptación (key/enc)
  • Potencia de transmisión (txpower)
  • etc.

En pocas palabras, con iwconfig configuramos los parámetros especiales de wireless y con el ifconfig configuramos los parámetros normales de la red IP.

NOTA sobre encriptación

Si especificamos una clave (key) en el iwconfig, las transmisiones estarán encriptadas con el protocolo WEP. En Linux has dos formas de especificarlas:

  1. Con passphrase: iwconfig interface key "s:mi_clave". La clave debe ser de 5 caracteres para encriptación de 40 bits y de 13 para 128 bits (en realidad de clave de 104 bits).
  2. Con clave en hexadecimal: iwcondif interface "mi_clave_en_hexa". En este caso se introduce la clave directamente con 5 o 13 caracteres especificados en hexadecimal.

Para mayor seguridad se recomienda que los caracteres que forman la clave sean aleatorios.

Usuarios de Mac OS X

Para introducir la clave en el gestor del Airport del Mac OS X, hay que hacerlo con los caracteres en hexadecimal poniendo un $ al principio.

 

Configuración de un cliente Linux (Managed o infraestructure)

Vayamos primero a lo más simple: ya tienes un access point y quieres hacer funcionar tu tarjeta PCMCIA en tu Linux, en este caso se llama modo "infraestructura".

Quizás hayas comprado la tarjeta con un adaptador PCI, en ambos casos tienes que habilitar el soporte Cardbus en el kernel. Para ello tienes que ir a "General Setup:PCMCIA CardBus Support" y seleccionar "Cardbus Support".

Ahora tienes que seleccionar los drivers orinoco_cs, para ello vas a "Networking Device Support:Wireless LAN (non-hamradio)" y seleccionar las opciones y subopciones del "Hermes Chipset 802.11 support (Orinoco/Prism/Symbol)".



AbiWord Image kernel-orinoco.png



Ahora deberías compilar el kernel y asegurarte que tienes instalado los paquetes para soporte PCMCIA, deberías tener un directorio /etc/pcmcia/ con varios ficheros alli dentro. Si tienes eso y el kernel compilado e instalado, sólo hace falta configurar la red. Yo trabajo normalmente en Debian, pero también explicaré las diferencias en la configuración para RedHat.

Debian (PCMCIA)

La configuración de la red en Debian puede hacerse dirctamente en los ficheros .opts de /etc/pcmcia.

Primero hay que hacer que reconozca automáticamente la tarjeta Conceptronic, para ello hay que editar el fichero /etc/pcmcia/config.opts y agregar lo siguiente para que reconozca la tarjeta y cargue el módulo orinoco:

card "Conceptronic Wireless"







version "802.11", "11Mbps Wireless LAN Card"







bind "orinoco_cs"

Ahora hay que editar el fichero /etc/pcmcia/wireless.opts y poner las siguientes líneas:

*,*,*,*)







INFO="Nombre..."







ESSID="Nombre_de_red"







MODE="Managed"







RATE="auto"







# La clave se pone si es encriptada







KEY="s:mi_clave"







;;

Ahora en el /etc/pcmcia/networks.opts hay que poner los datos de la red IP:

case "$ADDRESS" in







*,*,*,*)







INFO="Nombre...."







# Transceiver selection, for some cards -- see 'man ifport'







IF_PORT=""







# Use BOOTP (via /sbin/bootpc, or /sbin/pump)? [y/n]







BOOTP="n"







# Use DHCP (via /sbin/dhcpcd, /sbin/dhclient, or /sbin/pump)? [y/n]







# Solo si tenemos DHCP







DHCP="y"







...







# Host's IP address, netmask, network address, broadcast address







# Solo si no tenemos DHCP







#IPADDR="192.168.0.130"







#NETMASK="255.255.255.128"







#NETWORK="192.168.0.128"







#BROADCAST="192.168.0.255"







# Gateway address for static routing







#GATEWAY="192.168.0.1"







# Things to add to /etc/resolv.conf for this interface







...

Debian (PCI y Airport)

En caso que la tarjeta no sea una PCMCIA, es decir tengamos un Apple con tarjeta Airport o una con adaptador PCI, la configuración en Debian se hace directamente en el /etc/network/interfaces. Por ejemplo:

auto eth1







# ejemplo con dhcp







iface eth1 inet dhcp







#address 192.168.0.140







#netmask 255.255.255.0







#network 192.168.0.0







#gateway 192.168.0.1







wireless_essid Nombre_de_red







wireless_mode Managed







wireless_key s:mi_clave







wireless_rate auto







wireless_nick sofi



Red Hat

Red Hat usa una filosofía diferente (al menos en la versión 7.2), en vez de configurar la red dentro de los ficheros en /etc/pcmcia, lo hace en los mismos ficheros donde se configuran las interfaces de red, en /etc/syconfig/network-scripts/ifcfg-ethX. Por lo tanto los parámetros de red hay que configurarlos en dichos ficheros, por ejemplo:

DEVICE=eth1







MODE=managed







ESSID="Nombre_de_red"







RATE=auto







TXPOWER=auto







KEY="s:mi_clave" # Solo si va encriptado







BOOTPROTO=static







IPADDR=192.168.0.3







BROADCAST=192.168.0.255







NETMASK=255.255.255.0







NETWORK=192.168.0.0







ONBOOT=yes
 

Configuración de Redes ad-hoc

La configuración de un red ad-hoc permite montar una red entre pocos ordenadores sin necesidad de contar con un access point. El modo de funcionamiento es peer-to-peer, todos los ordenadores reciben los paquetes enviados por algunos de ellos. Por eso una red de tipo ad-hoc funciona bien cuando hay pocos ordenadores.

La única diferencia en cuanto a configuración es que hay que poner modo ad-hoc en vez de managed. Por ejemplo:

iface eth1 inet dhcp







#address 192.168.0.140







#netmask 255.255.255.0







#network 192.168.0.0







#gateway 192.168.0.1







wireless_essid Nombre_de_red







wireless_mode ad-hoc







wireless_key s:mi_clave







wireless_rate auto







wireless_nick sofi

Conectividad entre la wireless y la ethernet

¿Quieres que haya interconectividad entre los ordenadores con wireless y los conectados a la ethernet? Ah!!!!! Ésta es una de las importantes tareas realizadas por los access-points.

Si piensas hacer algo de lo que se explica a continuación, es necesario conocer los fundamentos de funcionamiento de redes IP y Ethernet (para eso están los cursos de redes en la Universidad, FP o academias de informática :-). Si no tienes idea no intentes entender lo que viene a continuación, llama a un amigo que sí sepa de redes y/o ponte a estudiar de cursos o tutoriales disponibles en Internet.

En caso que montes una red ad-hoc, necesitas que uno de los ordenadores con una interfaz inalámbrica y otra Ethernet se encargue de ese trabajo de enrutado. Por suerte, el protocolo IP está basado totalmente en software y el Linux es capaz de hacer dichas tareas de enrutado IP. En este caso te recomiendo que aprendas enrutamiento IP y configures dos redes IP distintas, una será la ethernet y la otra la wireless. Uno de los Linux deberá hacer el enrutado IP.

Pero además hay otras opciones que trabajan a niveles más bajos y que permiten tener una sola red IP a partir de dos redes físicas distintas

  • Proxy arp: Para que dos ordenadores en una LAN Ethernet con TCP/IP puedan comunicarse necesitan conocer la dirección MAC (ethernet) del otro ordenador. De estar tarea se encarga el protocolo ARP, que mediante paquetes broadcast averiguan y crean un tabla que relaciona direcciones IP con direcciones MAC (probar el comando arp -a ). El Linux soporta proxy arp por defecto, sólo hay que configurarlo mediante las variables disponibles en /proc.

  • Bridging: El bridging es una opción más avanzada que el proxy arp, y se necesita opciones especiales del kernel además del paquete bridge-utils. Si deseas esta opción, mira como se configura el bridge en la sección que viene a continuación (Configuración de Linux como un Access Point).

 

Configuración de Linux como un Access Point

NOTA: Montar un access point, con todos sus requerimientos, no es algo trivial (para los Windozeros: no penséis que en Windows sería más fácil, ahora mismo es imposible hacer en Windows lo que explico aquí, no os queda más opción que comprar un Access Point), sino que hay que saber de redes y configurar y compilar el kernel como así también sentirse cómodos usando las utilidades y configurando PCMCIA. Si no es así, quizás no entiendas lo que se explica a continuación, es mejor que empiezes con algo más sencillo, como lo explicado en los pasos anteriores, o que te ayude "en vivo" algún amigo que ya lo haya hecho.

Mi filosofía es que cuando no se conoce algo y hay que aprender, hay que hacerlo paso a paso, desde lo más fácil a lo más complejo. Aunque en mis primeras pruebas con wireless en Linux pasaron por todas las etapas explicadas anteriormente, mi objetivo desde el principio era poder tener un access point corriendo en Linux.

Debo decir que he tenido mucha suerte, ya que las tarjetas que compé, la Conceptronic PCI C11iDT:

AbiWord Image c11idt.png

y la Conceptronic PCMCIA Airbridge 11CC:

AbiWord Image conn11c.png



ambas (como creo que todas las Conceptronic, por cierto, el web que tienen es realmente lamentable para el tipo de empresa que son), usan el chipset Prism2.5 de Intersil. Digo que he tenido mucha suerte porque he encontrado que un grupo de pirados liderados por Jouni Malinen están desarrollando un excelente módulo de Linux para las Prism2 (Host AP) que permite trabajar en modo Master, aunque el fabricante diga que no se puede :-).

[gallir@ponti gallir]$ /sbin/iwconfig wlan0







wlan0 IEEE 802.11-DS ESSID:"Antoli" Nickname:"ponti"







Mode:Master Frequency:2.422GHz Access Point: 00:50:C2:01:96:14







Bit Rate:2Mb/s Tx-Power=20 dBm Sensitivity=1/3







Retry min limit:8 RTS thr:off Fragment thr:off







Power Management:off







Link Quality:0 Signal level:0 Noise level:0







Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0







Tx excessive retries:3167 Invalid misc:2038 Missed beacon:0







Así que al final he logrado lo que quería, la tarjeta PCI que había instalado en mi Linux de mesa funcionó en modo Master y pude interconectar ordenadores con Linux en PC e iBook, Mac OS X y del innombrable, con encriptación WEP de 128 bits.

Como la tarjeta PCI es sólo una PCMCIA con un adaptador, la saqué del adaptador y terminé instalándola en un portátil muy antiguo (P133, 32 MB RAM) para que me hiciese de servidor de acceso para toda la red de casa, con bridging, servidor DHCP y control de direcciones MAC:

[gallir@ponti gallir]$ ps ax







PID TTY STAT TIME COMMAND







1 ? S 0:03 init [3]







2 ? SW 0:00 [keventd]







3 ? SW 0:00 [kapmd]







4 ? RWN 0:00 [ksoftirqd_CPU0]







5 ? SW 0:06 [kswapd]







6 ? SW 0:00 [bdflush]







7 ? SW 0:00 [kupdated]







8 ? SW 0:01 [kjournald]







228 ? S 0:02 /sbin/cardmgr







694 ? S 0:05 syslogd -m 0







699 ? S 0:03 klogd -2







831 ? S 0:00 /usr/sbin/apmd -p 10 -w 5 -W -P...







851 ? SL 0:00 ntpd -U ntp







933 ? S 0:33 /usr/sbin/sshd







984 ? S 0:00 gpm -t ps/2 -m /dev/mouse







1002 ? S 0:00 crond







1038 ? S 0:00 /usr/sbin/atd







1045 tty1 S 0:00 login -- root







1046 tty2 S 0:00 login -- root







1047 tty3 S 0:00 /sbin/mingetty tty3







5636 ? S 0:04 /usr/sbin/dhcpd







5835 tty1 S 0:00 -bash







6734 tty2 S 0:00 -bash







7691 ? S 0:03 /usr/sbin/sshd







7692 pts/0 S 0:00 -bash







7905 pts/0 R 0:00 ps ax







[gallir@ponti gallir]$ /sbin/lsmod







Module Size Used by







hostap_cs 82496 1







3c574_cs 8400 1







ds 6384 2 [hostap_cs 3c574_cs]







yenta_socket 8368 2







pcmcia_core 38016 0 [hostap_cs 3c574_cs ds yenta_socket]

AbiWord Image base-linux.png



También he probado el mismo portátil con la otras tarjetas Conceptronic que compré (la PCMCIA de la segunda foto) y funciona perfectamente, aunque su alcance es levemente inferior debido a la antena pequeña incluida, pero aún así la redfunciona a 11 mbps en todo el piso a pesar de que el portátil está en una mala ubicación.

Instalación del módulo Host AP

En la página web del Host AP y en el README del software (un tgz) está bien explicado como instalar el módulo hostap en sus distintas variantes, especialmente PCMCIA y PCI. Básicamente hace falta los fuentes del kernel que se está usando (se pone el path en el Makefile), luego sólo hay que compilarlo y hacer un make install para que instale los módulos en el directorio correspondiente (/lib/modules/2.4.18/pcmcia/ en mi caso) y el fichero de configuración de la PCMCIA (hostap_cs.conf) en el directorio /etc/pcmcia .

Una vez instalado, si usamos la opción PCMCIA (seguramente sí, aunque tengamos el adaptador PCI) debemos indicar a los módulos del PCMCIA que cuando detecte esa tarjeta cargue el módulo hostap_cs.

Para ello editamos el fichero /etc/pcmcia/config.opts y ponemos la siguientes líneas:

card "Conceptronic Wireless"







version "802.11", "11Mbps Wireless LAN Card"







bind "hostap_cs"



AbiWord Image image_1.png

wavemon sobre un Linux en el Apple iBook con Airport conectado el Access Point



AbiWord Image image_2.png

Este es el Windows de mi hija, en su habitación, también con una tarjeta Conceptronic conectado a la red wireless a traves del Linux AP



Con eso ya tenemos casi todo lo referente a drivers, ahora hay que configurar la red.

Bridging

Como comenté anteriormene, no basta con poner la tarjeta en modo Master para tener un access point, sino que hay además interconectar la red Ethernet y la inalámbrica. Yo opté por hacer bridging entre ambas redes, así trato toda la red de mi casa como si fuese una sola, sin preocuparme en dar direcciones IP de distintas redes si estoy conectado por Ethernet o Wireless.

Para hacer bridging en Linux hay que habilitar dicha opción en el kernel:



AbiWord Image bridging.png



Luego hay que instalar el paquete bridge-utils que está disponible en Debian (en Red Hat hay que buscarlo en rpmfind.net, cuando yo lo hice sólo estaba disponible en la versión RawHide pero me funcionó perfectamente sobre una RedHat 7.2).

El programa principal de dicho paquete, brctl, permite crear y configurar interfaces virtuales que incluyen las interfaces sobre las que se aplicará el bridging.

AbiWord Image brctl.png



En la imágen de arriba se puede observar primero la configuración del bridge definido (br0), que incluye a las interfaces eth0 y wlan0 (en el módulo hostap las interfaces wireless se denominan wlanX). Veréis que he deshabilitado el spanning tree protocol ya que en mi red estoy seguro que no hay bucles (es muy simple), pero si tú no lo estás, déjalo habilitado.

A continuación se puede observar (con el argumento showmacs) los ordenadores conectados a cada red, la 1 es la ethernet y la 2 es la wlan0. Las marcadas como local son las interfaces del servidor, las demás son las remotas.

ATENCIÓN: las interfaces que forman parte de un bridge no deben tener ninguna dirección asignada, en los ficheros de configuración de la tarjeta hay que ponerle una IP 0.0.0.0 en vez de una IP real, ya que deben trabajar en modo promiscuo.

Definición del br0 en Debian

En Debian es muy fácil configurarlo, ya que el /etc/network/interfaces es muy flexible y potente, en mi caso sólo tuve que poner

auto br0







iface br0 inet static







address 192.168.0.10







netmask 255.255.255.0







network 192.168.0.0







gateway 192.168.0.1







bridge_ports eth0 wlan0







bridge_stp off







bridge_maxwait 5

Os recomiendo leer además lo de RedHat para entender mejor el procedimiento completo.

Definición del br0 en Red Hat

En Red Hat es un poco más complicado por dos razones, no hay un ficheros interfaces como en Debian y además las tarjetas de red PCMCIA se configuran siempre desde el /etc/sysconfig/network-scripts/ifcfg-xxx. Pero yo le hice un truco bastante sucio, tengo un ifcfg-eth0, ifcfg-wlan0 y ifcfg-zbr0 (el z lo pongo para que se llame después de llamar a los de las interfaces). El contenido de cada fichero es:



/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0







IPADDR=0.0.0.0







BOOTPROTO=static







ONBOOT=yes



/etc/sysconfig/network-scripts/ifcfg-wlan0

DEVICE=wlan0







MODE=Master







ESSID=Antoli







RATE=auto







TXPOWER=auto







KEY="s:mi_clave"







BOOTPROTO=static







ONBOOT=yes







/usr/bin/prism2_param wlan0 host_decrypt 1



NOTA: Con la ejecución de "/usr/bin/prism2_param wlan0 host_decrypt 1" estoy obligando a hacer el desencriptado WEP de las tramas en el propio driver, por software, en vez de hacerlo en la tarjeta. La conveniencia o no de usarlo depende de la tarjeta que uséis y la versión del driver. O sea, probadlo, quizás vuestra tarjeta no funcione con encriptación de 128/104 bits sin esa opción. El comando prism2_param es un script incluido en el paquete hostap y sirve para simplificar las llamadas al iwpriv para cambiar parámetros de la tarjeta.



/etc/sysconfig/network-scripts/ifcfg-zbr0

/usr/sbin/brctl delif br0 eth0







/usr/sbin/brctl delif br0 wlan0







/usr/sbin/brctl delbr br0







/usr/sbin/brctl addbr br0







/usr/sbin/brctl addif br0 eth0







/usr/sbin/brctl addif br0 wlan0







/usr/sbin/brctl stp br0 off







DEVICE=br0







BOOTPROTO=static







BROADCAST=192.168.0.255







IPADDR=192.168.0.3







NETMASK=255.255.255.0







NETWORK=192.168.0.0







ONBOOT=yes







Creo que os comenté al menos lo más importante, si me he dejado algo en el tintero, disculpas, son muchas cosas en un sólo artículo... pero quería que tengáis al menos una guía para demostrar la potencia de Linux en el área de wireless.







Ricardo Galli

Technorati Tags:
>>

Agregue su comentario

Tu Nombre:
Asunto:
Comentario:

Últimos contenidos

Facebook conecta

Total visitas

3741996
38.107.179.233
UNITED STATES
US

Quien está en linea

Tenemos 33 invitados conectado(s)

Conectan

Locations of visitors to this page

Nos visitan desde

Últimos comentarios